报告最终版.doc

上传人:文库蛋蛋多 文档编号:3242848 上传时间:2023-03-12 格式:DOC 页数:29 大小:820KB
返回 下载 相关 举报
报告最终版.doc_第1页
第1页 / 共29页
报告最终版.doc_第2页
第2页 / 共29页
报告最终版.doc_第3页
第3页 / 共29页
报告最终版.doc_第4页
第4页 / 共29页
报告最终版.doc_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《报告最终版.doc》由会员分享,可在线阅读,更多相关《报告最终版.doc(29页珍藏版)》请在三一办公上搜索。

1、北京理工大学珠海学院课程设计说明书20132014学年第2 学期题目: 模拟ATM柜员机程序 学 院: 计算机学院 专业班级: 计算机科学与技术3班 学 号: 130201031017 、130201031025学生姓名: 胡伟健、林达成 指导教师: 谭忠兵 成 绩: 时 间: 2014年6月18号 北京理工大学珠海学院课程设计任务书 2013 2014 学年第 2 学期学生姓名: 胡伟健、林达成 专业班级: 13计算机科学与技术3班 指导教师: 谭忠兵 工作部门: 计算机学院 一、课程设计题目: 模拟ATM柜员机程序二、课程设计内容(含技术指标)设计要点:使用文本命令行界面。当输入给定的卡号

2、和密码(初始卡号和密码为123456)时,系统能登录ATM柜员机系统,用户可以按照以下规则进行:l 查询余额:初始余额为10000元l ATM取款:每次取款金额为100的倍数,总额不超过5000元,支取金额不允许透支。l ATM存款:不能出现负存款。修改密码:新密码长度不小于6位,不允许出现6位完全相同的情况,只有旧密码正确,新密码符合要求,且两次输入相同的情况下才可以成功修改密码。关键技术分析:建立银行账户类、文件读写类、界面显示类等以及各相关接口类。三、进度安排1.老师讲解课程设计的目的要求,学生在了解要求后查阅相关资料,为后续的程序设计做准备。(2学时)2.根据要求,画出程序框图。(2学

3、时)3.编写程序,并进行各模块的调试。(6学时)4.撰写课程设计报告。(2学时)5.答辩(4学时)四、基本要求1程序的界面友好2. 有较强的健壮性3. 执行效率较高。 课程负责人签名: 年 月 日课程设计分工安排姓名课程设计负责工作备注胡伟健程序的功能实现主模块,撰写程序报告林达成负责界面的设计,以及对程序的调试与修改 课程设计成绩评定表姓 名成绩评定权重总分总成绩(五分制)平时成绩20报告成绩50答辩成绩30胡伟健林达成模拟ATM柜员机程序摘 要ATM机模拟系统是银行业务流程过程中十分重要且必备的环节之一,在银行业务流程当中起着承上启下的作用,其重要性不言而喻。但是,目前许多银行在具体的一些

4、业务流程处理过程中仍然使用手工操作的方式来实施,不仅费时、费力,效率低下,而且无法达到理想的效果。然而ATM自动取款功能不带为银行节省大量财力人力,还为广大城市用户带来便捷。为明确软件需求、组织设计模拟ATM柜员机程序,依据软件流程过程规范,按照所需实现的功能,概要设计,程序编码,编写了这个简单的模拟ATM柜员机系统。本程序使用纯C+编写,模拟了柜员机的一些基本功能,程序的界面也得到很好的优化,本系统默认用户为123456,默认密码为123456,用户初始金额为10000,用户每次存款取款的记录都会得以保存。当用户执行完了当前操作,系统会提示用户是否选择重新进行下一步操作,输入1会重新回到系统

5、界面,输入0时则会推出操作。关键字:模拟ATM柜员机 基本功能 界面20132014学年第2 学期- 2 -模拟ATM柜员机程序- 7 -1 设计内容- 9 -2详细设计与实现- 10 -2.1类的设计(功能的实现)- 10 -2.2.1 验证用户信息- 10 -2.2.2查询余额- 10 -2.2.3存款- 11 -2.2.4取款- 11 -2.2.5密码修改- 12 -2.2.6退出系统- 13 -3程序测试- 14 -3.1调试过程中的问题- 14 -3.2 程序运行结果- 14 -3.2.1欢迎界面- 14 -3.2.2验证用户信息- 15 -3.2.3查询余额的界面- 15 -3.2

6、.4存款界面- 16 -3.2.5取款界面- 17 -3.2.6修改密码界面- 17 -1 设计内容设计一个文本命令行界面的模拟ATM柜员机程序,输入给定的账号密码(初始卡号和密码为123456)登陆ATM柜员机系统,进行自助操作,具体如下:1.1功能(1)验证用户信息,只有当用户把用户名和密码都输入正确才进入用户操作界面。(2)用户界面功能:余额查询:显示用户当前账户的余额;(3) 用户界面功能:存款:按照用户要求,用户输入其想存入的钞票数量。(4)用户界面功能:取款:按照用户要求,输入其想取出的钞票1.2主流程图模拟ATM柜员机程序(主菜单) 取款 存款 查询余额 修改密码验证账号密码结束

7、图1-1 2详细设计与实现2.1类的设计(功能的实现) 设计了两个类:用户User类和界面类,User类完成实现用户的操作,包括存取款功能,查询余额功能,修改密码功能。界面类完成系统的界面,以及执行User类内的功能。2.2详细设计(功能的实现)2.2.1 验证用户信息将用户的初始账号定义为123456,密码为123456,当进入用户界面后,用户选择需要进入的功能,界面提示用户输入账号,密码,若用户账号密码输入错误,则提示密码输入错误,要求用户重新输入,当用户输入3次密码均错误,系统则自动跳出。若用户密码输入正确,则进入用户所选择的功能的界面。2.2.2查询余额进入程序欢迎界面后,用户正确地输

8、入账号密码后,用户输入1则进入查询余额功能,用户初始的余额为10000。具体实现如下:主菜单 操作号1程序调用checkbalance(),显示查询界面查询结束,返回主菜单 图2-12.2.3存款进入程序欢迎界面后,用户正确地输入账号密码后,用户输入2则进入存款功能,若用户输入的金额为负数,则提醒输入的金额错误,用户存入的钱应为10的倍数,当用户输入的金额不是10的倍数,则提示“输入金额有误,请重新输入”,继续进入输入存款金额界面,直到用户输入正确为止。流程图:主菜单 N输入成功输入操作号2进入存款界面输入金额 Y 是否为正数或者100的倍数输入当前密码交易成功输入1返回主菜单输入0退出柜员机

9、结束图2-22.2.4取款进入程序欢迎界面后,用户正确地输入账号密码后,用户输入3后进入提款功能,用户每次取款金额为100的倍数,总额不超过5000元,支取金额不允许透支。因此当用户输入的金额不是100的倍数,则提示输入的金额有误,输入的金额应为100的倍数;当用户输入的金额超过5000元时,系统也会提示输入的金额过大,输入的金额应该不超过5000元,系统自动跳转到提示用户重新输入金额。流程图:主菜单输入操作号2进入存款界面输入当前密码输入1返回主菜单输入0退出柜员机结束交易成功输入金额输入成功是否为正数或者100的倍数 N N Y图2-32.2.5密码修改进入程序欢迎界面后,用户正确地输入账

10、号密码后,用户输入4后进入密码修改功能,系统提示用户输入原密码(只有原密码输入正确),才进入填写新密码的功能。修改的新密码长度不小于6位,当用户输入的新密码出现6位完全相同的情况,则提示新密码不能为6位相同,提示用户重新输入新密码。 用户输入正确的账号密码后,或者实现其他功能退回主界面后都可以选择柜员机的修改密码功能,该功能首先定义了checkpwd函数,在运行过程中需要用户输入旧密码,用if语句判断用户输入的账号密码是否或默认用户密码一致,若相同则执行修改密码操作,当用户的账号密码连续三次输入,系统则会自动退出并吞卡。主菜单 输入当前密码输入成功输入操作号4进入修改密码界面 N输入新密码确认

11、新密码修改成功输入1返回主菜单输入0退出柜员机结束图2-42.2.6退出系统 当用户不想再使用柜员机时,输入指令则退出,系统提示“谢谢使用”。3程序测试3.1调试过程中的问题 由于本程序是分界面完成的,所以运行时又会继续返回主菜单,供用户继续选择并继续执行操作。由于本程序由两人分工合作完成的,所以在一开始调试时出现了一些小问题,比如a.用户输入密码三次错误,仍能执行相关操作b.用户在输入存款的金额后,查询余额竟然是负值;c.用户修改密码成功后发觉新密码竟然没有保存。以上出现的问题已经在我们的研究讨论并不断调试下得以解决。 3.2 程序运行结果3.2.1欢迎界面3.2.2验证用户信息3.2.3查

12、询余额的界面3.2.4存款界面3.2.5取款界面3.2.6修改密码界面参考文献1陈维兴 林小茶:C+面向对象程序设计教程M,清华大学出版社出版社(第三版),第330页。2张克军:程序设计基础M,科学出版社(2011年版),第292页。心得体会(胡伟健)经过这次的课程设计,我对C+面向对象的含义有了深刻的了解,更深入地认识到了面向对象程序设计的思想,懂得了对设计一个简单系统的构思,以及设计,程序测试,。在编写代码的过程中,也算比较顺利,就是在测试过程中遇到了一点小波折,我是和其他人一起完成的,在这过程中,我们分工合作,互相讨论,解决了一些功能如何实现的,以及一些小细节问题。我是负责功能的实现部分

13、的,不过在自己测试的情况下无误,但是将界面与这些合在一起后就出现的编译错误,经过我们的团队合作后,才成功通过了。在类文件读写这方面,一开始也有小问题,但经过我们的讨论后,终于得以解决。这次课程设计令我获益良多,对我以后做项目的时候打下了基础,在进行设计前,我们一起构思,分工明显,体现出了团队精神,这对以后我们一个团队做项目有很大的帮助。教师评语心得体会(林达成) 在这次面向对象方法课程设计中,我选择了ATM机的模拟系统编程。通过该编程,使我学会了很多。同时,这也是将我这一个学期学习C+的成果的一种检验。例如,如何创建一个类,然后再派生出各种类,如何调用各类的对象和成员函数。在本程序的学习中,该

14、课程设计的程序代码较长,大概有两百多行。其中觉得最废劲的是文件的读写了。因为没有接触过C+的文件类写法,于是就去查阅书籍以求解法。在经过一段时间的学习后,终于知道文件读写是怎么实现以及使用,从而顺利完成了文件的读写。还有的是在编写ATM机的各种功能过程中,还遇到了较多的困难。例如,在程序中需要用到几个类,一个是显示功能类和一个银行账户类。在这两个类之中,我要进行调用,然后问题就来了。因为没试过在两个独立的类之间进行调用,所以在这方面遇到了比较多的问题,但后来我都一一突破,找到出路。这次编程中,我负责的是美化程序,我觉得这是一个核心技术。因为要做到美化肯定到对代码进行很细致的分析,所以在各方面的

15、功能上,我要做到尽可能的完善代码,以免出现比较多的错误。这就是我在这次课程设计的体会。 教师评语 附件9: 计算机学院课程设计答辩记录表专业学院计算机学院专业计算机科学与技术姓名胡伟健学号130201031025课程设计题目模拟ATM柜员机程序答辩日期2014年6月28答辩时间答辩提问及其回答记录附件9: 计算机学院课程设计答辩记录表专业学院计算机学院专业计算机科学与技术姓名林达成学号130201031011课程设计题目模拟ATM柜员机程序答辩日期2014年6月28答辩时间答辩提问及其回答记录附录:#include#include#include#includeusing namespace

16、std;class menuprivate:int i;public:int meun()couttt;for(i=0;i50;i+)cout*;coutendl;couttt* t欢迎使用ATM存取款一体机ttt *endl;couttt;for(i=0;i50;i+)cout*;coutendl;couttt*t1.查询余额tttt *endl;couttt*t2.存款ttttt *endl;couttt*t3.取款ttttt *endl;couttt*t4.修改密码tttt *endl;couttt*t请选择你所需要的服务(选择0为退出)t *endl;couttt;for(i=0;i5

17、0;i+)cout*;coutendl;return 0;class Userprivate:int name,n,k1;int pwd,p; int balance;public:User();string getname();string getpwd();int getbalance();void changepwd();void checkbalance();/查询余额void deposit();/存款void withdraw();/取款void printoutcome();/用于打印用户选择某项功能的结果User();User:User()name=123456;pwd=123

18、456;balance=10000; int i;ofstream out(f3.dat,ios:binary); if(!out)coutcannot open output file.n;abort();out.write(char*)&pwd,sizeof(pwd);out.close();for(i=0;i3;i+)cout请输入你的账号:n;cout请输入你的账号密码:p;ifstream in(f3.dat,ios:binary);if(!in)coutcannot open input file.n;abort();in.read(char*)&pwd,sizeof(pwd);i

19、f(i=2)exit(0);if(name!=n|pwd!=p)cout输入账号或密码错误,还有2-i次机会输入账号或密码:endl;in.close();elsebreak;void User:checkbalance()ofstream out(f4.dat,ios:binary); if(!out)coutcannot open output file.n;abort();out.write(char*)&balance,sizeof(balance);out.close();ifstream in(f4.dat,ios:binary);if(!in)coutcannot open in

20、put file.n;abort();in.read(char*)&balance,sizeof(balance);cout你现在的余额为:balanceendl;in.close();void User:withdraw()int money;while(1)cout请输入你要提取的金额money;if(moneybalance)cout不可透支endl;if(money5000)cout输入的金额不能为负且不能大于5000endl;break;if(money%100!=0)cout输入错误endl;break;else(money0&money=5000&money%100!=0);if

21、stream in(f4.dat,ios:binary);if(!in)coutcannot open input file.n;abort();in.read(char*)&balance,sizeof(balance);cout余额为:(balance-money)endl; in.close();break;void User:deposit()int money;while(1)cout请输入你要存的金额:money;if(money0)balance=balance+money; ofstream out(f4.dat,ios:binary); if(!out)coutcannot

22、open output file.n;abort();out.write(char*)&balance,sizeof(balance);out.close();ifstream in(f4.dat,ios:binary);if(!in)coutcannot open input file.n;abort();in.read(char*)&balance,sizeof(balance);cout你存入的金额为: moneyt你现在的余额为:balanceendl;break;in.close();else cout输入的金额不能为负值,请重新输入endl;void User:changepwd(

23、)int pwd0;int pwd2,pwd1;double j=0,p1=0; cout请输入你的旧密码pwd0; ofstream out(f3.dat,ios:binary); if(!out)coutcannot open output file.n;abort();out.write(char*)&pwd,sizeof(pwd);out.close();ifstream in(f3.dat,ios:binary);if(!in)coutcannot open input file.n;abort();in.read(char*)&pwd,sizeof(pwd);if(pwd0=pwd

24、)while(1)cout请输入新密码:(密码长度为6位)pwd1;cout请确认你的新密码: pwd2;if(pwd1=pwd2) if(pwd1%10=pwd1/10%10=pwd1/100%10=pwd1/100%10=pwd1/1000%10=pwd1/10000%10) cout密码的六位数完全相同,修改失败endl; else pwd=pwd1;ofstream out(f3.dat,ios:trunc); if(!out)coutcannot open output file.n;abort();out.write(char*)&pwd,sizeof(pwd);out.close(); cout修改成功:endl;break; elsecout两次密码输入不一致,修改失败k;if(k=0)return 0; User obm;if(k0)cout输入错误请重试endl;goto to;if(k=1)obm.checkbalance();if(k=2)obm.deposit();if(k=3)obm.withdraw();if(k=4)obm.changepwd(); cout是否需要其它服务:需要请按返回建1 不需要请按结束键0k;if(k=1)goto to;elsereturn 0; return 0;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教育教学 > 成人教育


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号