大 连 科 技 学 院
面向对象程序设计(A)课程设计
题 目 ATM自动取款机程序设计
学生姓名 x'x'x 专业班级 软件工程12-1
指导教师 李孝贵 职 称 讲师
所在单位 信息科学系软件工程教研室
教学部主任 王立娟
完成日期 2014年7月6日
课程设计报告单
学号 Xxx 姓名 xxsx 专业班级 评分 软件工程12-1 备注 考 核 项 目 1 平时工作态度及遵守纪律情况 (10分) 掌握基本理论、关键知识、基本技能的程度和阅读参考资料的水平 (10分) 独立工作能力、综合运用所学知识分析和解决问题能力及实际工作能力提高的程度 (20分) 完成课程设计说明书及软件的情况与水平(小组分工情况、规范性、整洁清楚、叙述完整性、思路清晰程度、工作量及实际运行情况和创新性) (60分) 2 3 4 总评成绩
综 合 评 定:
(优、良、中、及格、不及格)
年 月 日
指导教师签字:
《面向对象程序设计(A)课程设计》任务书
一、课程设计任务及要求:
任务:针对小型信息管理系统或若干综合性设计题目,选择一种软件开发模型,完成从需求分析、系统设计、系统实现,软件测试的全过程。
要求:
(1) 根据软件系统开发的一般原则,完成相应系统的功能设计,完成主要功能模块的程序实现并进行测试训练,给出代码运行结果和相应的设计文档。可以分组进行,但所有学生必须经历整个系统的开发全过程,以便加深对系统开发全过程的认识。 (2)提交课程设计报告。
(3)指标: 要求完成课程设计报告3000字以上(约二十页);完成所设计的题目,设计题目的语句行数的和在200行语句以上。
二、工作量
2周(10个工作日)时间
三、计划安排
第1个工作日:查找相关资料、书籍,阅读示例文档,选择题目。 第2个工作日-第4个工作日:设计程序结构、模块图。
第5个工作日-第9个工作日:完成程序的编码,并且自己调试、测试。穿插进行课程设计报告的撰写。
第10个工作日:上交课程设计报告,由教师检查软件测试效果、检查课程设计报告,给出学生成绩。
指导教师签字:
年 月 日
目录
题目: ........................................................................................................................................ 1
1.需求分析 ......................................................................................................................... 1 2.概要设计 ......................................................................................................................... 1 3.详细设计 .......................................................................................... 错误!未定义书签。 4.编码 ................................................................................................................................. 4 5.调试分析 ......................................................................................................................... 5 6.测试结果及运行效果 ..................................................................................................... 5 7.系统开发所用到的技术 ................................................................................................. 8 参考文献 .................................................................................................................................... 9 附录 全部代码 ........................................................................................................................ 10
题目:
ATM自动取款机程序设计分析与设计
1. 需求分析
为了方面用户的及时取款,查询,及时修改密码的方便,本课题设计并模拟银行的自动取款机使用过程中的界面和用户交互过程。实现查询银行卡余额、取款、修改密码、退出系统等功能。 2. 概要设计
1登录功能。输入帐号和密码进行登录,如密码错误提示重新输入密码,如帐号错误提示无此帐户。
2查询功能。查询账户余额。 3取款功能。取款,更新余额。
4挂失功能。挂失后,该账户不能进行任何操作。 5修改密码。输入原密码和新设置密码。
6转账。输入转账的转出账户和转入账户以及转账金额,进行转账。
流程图
ATM自动取款系统 开户 存款 取款 查询余额 修改密码 转账 图 2—1 atm设计框图
1
3. 详细设计
输入卡号和密码 否 正确是 服务界面 查询 取款 挂失 修改密码 输入金额 挂式界面 输入旧密码 显示用户 信息和余 正确 输入新密码 额 否 正确 是 否 取款 挂失 修改密码 挂失 退出 是 操作成功 挂失成功 返回 退出 输入新密码 退卡 正确 否 是 修改成功 返回 退出 转账 是 输入转账卡号 否 超出余额 转账成功 输入转账金额 返回 退出
图 3—1 程序流程图
1登陆模块
主要完成功能为:当用户开始使用本系统,进入登陆模块。屏幕显示菜单提示,用户可根据需要选择相应功能。具体如下:开户 、存款 、取款 、查询余额 、修改密码 、转账
主要适用技术:登陆函数主要是使用了循环函数和do while函数,还有许多的成员函k.OpenAccount()、k.SaveMoney()、k.TakeMoney()、k.Inquiry()、k.Changepsw()、
2
k.Transfer();
关键代码如下: void main();主函数;
do{} while(1);//循环结构语句 switch(i);case 1: default: bank k;//默认构造函数 k.OpenAccount();break;//开户 k.SaveMoney();break;//存款 k.TakeMoney();break;//取款 k.Inquiry();break;//查询余额 k.Changepsw();break;//修改密码 k.Transfer();break;//转账 2开户模块
主要完成功能为:进入开户模块。屏幕显示菜单提示,可根据要求依次输入姓名、卡号、密码和预存款金额,完成以上操作之后,屏幕上显示恭喜您,开户成功。
主要适用技术:开户函数使用了基本函数; 主要代码如下:void OpenAccount()//开户函数 3存款模块
主要完成功能为:当开始使用本系统,进入存款模块。屏幕显示菜单提示,根据要求依次输卡号和密码,如果卡号和密码正确,然后输入存款金额,存款成功后显示卡上余额,(当密码不正确的时候,可以有三次机会输入自己的正确密码,如果三次都没有输入正确,卡将会被吃掉,以下同);
主要使用技术:存款函数使用了循环语句函数、判断函数和选择函数 主要代码如下:
void SaveMoney()//存款函数
for(int i=1;i<=N;i++) else //循环函数语句 exit(1);//结束函数 4取款模块
主要完成功能为:进入取款模块。屏幕显示菜单提示,根据要求依次输卡号和密码,如果卡号和密码正确,然后输入取款金额,如果全款金额小于或者等于卡上余额,则取款进行,否则重新输入取款金额。取款成功后显示卡上余额
主要适用技术:存款函数使用了循环语句函数、判断函数和选择函数 主要代码如下:
void TakeMoney()//取款函数
for(int i=1;i<=N;i++)else//循环函数语句
3
exit(1);//结束函数 5查询余额
主要完成功能为:进入查询余额模块。屏幕显示菜单提示,根据要求依次输卡号和密码,如果卡号和密码正确,屏幕上将显示你的余额,然后进入修改密码模块;
主要适用技术:存款函数使用了循环语句函数、判断函数和选择函数 主要代码如下:
voidInquiry()//查询余额函数
for(int i=1;i<=N;i++) else //循环结果语句 exit(1);//结束函数 6修改密码
主要完成功能为:进入修改密码模块。屏幕显示菜单提示,根据要求依次输卡号和密码,如果卡号和原始密码正确,则将进行修改密码的步骤,先输入原始密码,然后再输入新密码,之后确认新密码,确认正确之后,密码修改成功,接下来进入转账模块;
主要适用技术:存款函数使用了循环语句函数、判断函数和选择函数 主要代码如下:
void Changepsw()//修改密码函数
for(int i=1;i<=N;i++) else //循环结果语句 exit(1);//结束函数 7转账模块
主要完成功能为:进入转账模块。屏幕显示菜单提示,根据要求依次输卡号和密码,如果卡号和原始密码正确,输入所要转账的账号并输入转账金额,如果转账金额小于余额,转账成功输出卡上余额,
主要适用技术:存款函数使用了循环语句函数、判断函数和选择函数 主要代码如下:
voidTransfer()//转账函数
for(int i=1;i<=N;i++) else //循环结果语句 exit(1);//结束函数 4.编码
class ATM // ATM取款机 {
public: //公有类 ATM(consumer& cn):cnsm(cn){}
void welcome(); // 登陆界面 bool check_passwd(char n[],char pwd[]); // 核对密码 void change_passwd(); // 修改密码
4
void fetchmoney(); // 取款 void information(); // 查询信息 void functionshow(); // 功能界面 void guashi(); // 挂失 void zhuanzhang(); // 转账 void exitATM(); // 退出系统 void lock(); // 锁机 private: // 私有类
int times; // 记录密码输入次数 int money; consumer&cnsm; }; 5.调试分析
主要问题:错误较多,由于修改了好多次,程序中的血多代码都出现了不同程度上的错误,尤其是bank和bank[i]之间经常出现问题,我通过调试,发现了好多这样的问题,通过帮助和自己的经验,解决了这个问题;还有就是程序后面那个是否继续,例如:cout<<\"是否继续操作 1 是 2 否\"< 1登陆模块 图6-1登录模块 2开户模块 5 图6-2开户模块 3存款模块 图6-3存款模块 4取款模块 图6-4取款模块 5查询模块 6 图6-5查询模块 6修改密码 图6-6修改密码 7转账模块 图6-7转账模块 7 8退出登录 图6-8退出登录 7.系统开发所用到的技术 Visual C++ 6.0 应用语言C++ 注释:C++是在C语言引入了面向机制而形成的一种程序设计语言,程序结构灵活,代码简洁清晰,可移植性强,支持数据抽象,面向对象程序设计和泛型程序设计。所以它是一种应用广泛的系统语言。 8 参考文献 [1] 张红梅,于明,程序设计实验教程,中国铁道出版社,2004 [2] 徐武,周启涛,葛卉娟,Visual C++与Oracle数据库编程案例,电子工业出版社,2004 [3] 网冠科技,Visual C++ 6.0时尚编程百例,机械工业出版社,2003 [4] 求是科技,Visual C++ 6.0程序设计与开发技术大全,人民邮电出版社,2004 [5] 广正工作室 《C++ Builder实用教程》[M]. 机械工业出版社 1998年 [6] Matt Tells 1998年 《高级编程指南——C++ Builder》[M]. 9 中国水利水电出版社 附录 全部代码 #include Bank(){};//默认构造函数 void OpenAccount()//开户 { cout<<\"欢迎开户:\"< cout<<\"请输入您的卡号:\"< cout<<\"请输入您的密码:\"< cout<<\"请输入您的预存金额:\"< cout<<\"恭喜您,开户成功!\"< long ID; long psw1; int money1; cout<<\"欢迎使用取款业务:\\n\"; cout<<\"请输入您的卡号:\"< cout<<\"请输入您的密码:\"< if(ID==cardID &&psw1==psw) { cout<<\"请输入您的存款金额:\"< 10 money=money+money1; cout<<\"存款成功,卡上余额为:\"< cout<<\"请重新输入您的密码:\"< { cout<<\"请输入您的存款金额:\"< cout<<\"存款成功,卡上余额为:\"< cout<<\"温馨提示:密码错误,卡已被吃掉(打印出凭条,您的卡已经暂停一切业务):\"< void TakeMoney()//取款 { long ID; long psw1; int money1; cout<<\"欢迎您使用取款业务\\n\"; cout<<\"请输入您的卡号:\"< cout<<\"请输入您的密码:\"< if(ID==cardID && psw1==psw) } exit(1); } { 11 cout<<\"请输入您取款的金额:\"< cout<<\"温馨提示:您的卡号或密码错误,请重新输入!\"< money=money-money1; cout<<\"取款成功,您卡上余额为:\"< cout<<\"取款金额超出账户余额,请重新输入取款金额:\"; money=money-money1; cin>>money1; cout<<\"取款成功,您卡上余额为:\"< cout<<\"请重新输入您的密码:\"< { cout<<\"请输入您的取款金额:\"< if(money>=money1) { money=money-money1; cout<<\"取款成功,您卡上余额为:\"< cout<<\"取款金额超出账户余额,请重新输入取款金额:\"; money=money-money1; 12 cin>>money1; cout<<\"取款成功,您卡上余额为:\"< cout<<\"温馨提示:密码错误,卡已被吃掉(打印出凭条,您的卡已经暂停一切业务):\"< void Inquiry()//查询余额 { long ID; long psw1; cout<<\"欢迎进行查询余额业务\\n\"; cout<<\"请输入您的卡号:\"< cout<<\"请输入您的密码\"< if(ID==cardID && psw1==psw) { cout<<\"卡上余额为:\"< else cout<<\"请重新输入您的密码:\"< { } cout<<\"卡上余额为:\"< 13 } exit(1); void Changepsw()//修改密码 { long ID; long psw1; long psw2; cout<<\"欢迎使用修改密码业务\\n\"< cout<<\"请输入您的密码:\"< if(ID==cardID && psw1==psw) { cout<<\"请输入您的原始密码:\"< cout<<\"请输入您的新密码:\"< cout<<\"确认新密码:请重新输入新密码:\"< cout<<\"修改密码成功!\"< cout<<\"请输入您的新密码:\"< cout<<\"确认新密码:请输入新密码:\"< cout<<\"修改密码成功!\"< else { else { cout<<\"温馨提示:密码错误,卡已被吃掉(打印出凭条,您的卡已经暂停一切业务):\"< void Transfer()//转账 { long ID; long ID2; long psw1; int money1; cout<<\"欢迎使用转账业务\\n\"< cout<<\"请输入您的密码:\"< if(ID==cardID && psw1==psw) exit(1); } } { cout<<\"请输入您要转账的卡号:\"< cout<<\"请输入您要转账的金额:\"< if(money>=money1) { money=money-money1; cout<<\"转账成功,您卡上余额为:\"< cout<<\"金额超出账户余额,请重新输入取款金额:\"; 15 cin>>money1; } { money=money-money1; cout<<\"转账成功,您卡上余额为:\"< cout<<\"温馨提示:您的卡号或密码错误,请重新输入!\"< { cout<<\"请输入您的转账金额:\"< if(money>=money1) { money=money-money1; cout<<\"转账成功,您卡上余额为:\"< cout<<\"转账金额超出账户余额,请重新输入转账金额:\"; money=money-money1; cin>>money1; cout<<\"转账成功,您卡上余额为:\"< char name[20]; long cardID; 16 } exit(1); long psw; int money; }; void main() { int i; Bank k; do { cout<<\"欢迎进入中国工商银行\"< break; { switch(i) case 1: k.OpenAccount();break;//开户 case 2: k.SaveMoney();break;//存款 k.TakeMoney();break;//取款 k.Inquiry();break;//查询余额 17 case 3: case 4: case 5: k.Changepsw();break;//修改密码 case 6: k.Transfer();break;//转账 default:{cout<<\"你的输入有误,请输入1-7之间的整数!\\n\";} } while(1); } } 18 因篇幅问题不能全部显示,请点此查看更多更全内容