《c++课程设计atm取款机.doc》由会员分享,可在线阅读,更多相关《c++课程设计atm取款机.doc(25页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、C+程序设计课程设计说明书题 目模拟ATM取款机的设计学 号姓 名 指导教师日 期目录第1章 需求分析3第2章 总体设计4第3章 类的设计53.1 ATM类的设计53.2 consumer类的设计6第4章 详细设计 74.1 工程视图74.2 类图视图74.3 函数的调用关系84.4 主程序流程图9第5章 测试10第6章 总结14参考文献15附录:程序代码16 第1章 需求的分析课程名称C+语言课程设计设计题目模拟ATM取款机的设计指导教师时间2011-2012春学期 第17、18周一、教学要求1. 巩固和加深学生对C+语言课程的基本知识的理解和掌握2. 掌握C+语言编程和程序调试的基本技能3
2、. 利用C+语言进行基本的软件设计4. 掌握书写程序设计说明文档的能力5. 提高运用C+语言解决实际问题的能力二、设计资料及参数用C+设计一个系统,能提供下列服务:模拟ATM取款机的操作,:(1) 首先录入账户信息。格式为:帐号姓名身份证密码余额6078李四450.8(2) 登录功能。输入帐号和密码进行登录,如密码错误提示重新输入密码,如帐号错误提示无此帐户。(3) 查询功能。查询账户余额。(4) 取款功能。取款,更新余额。(5) 挂失功能。挂失后,该账户不能进行任何操作。(6) 修改密码。输入原密码和新设置密码。(7) 转账。输入转账的转出账户和转入账户以及转账金额,进行转账。三、设计要求及
3、成果根据系统功能要求,可以将问题解决分为以下步骤:(1)分析系统中的各个实体之间的关系及其属性和行为;(2)根据问题描述,设计系统的类层次;(3)完成类层次中各个类的描述(包括属性和方法);(4)完成类中各个成员函数的定义;(5)完成系统的应用模块;(6)功能调试;(7)提交课程设计报告:完成系统总结报告以及系统使用说明书 第2章 总体设计2.1总体设计框图:ATM自动取款系统登陆功能查询功能取款功能挂失功能修改密码转账 图 21 atm设计框图2.2文字叙述:Atm自动取款系统,完成以下功能: 登录功能。输入帐号和密码进行登录,如密码错误无示重新输入密码,如帐号错误提示无此帐户。 查询功能。
4、查询账户余额。 取款功能。取款,更新余额。 挂失功能。挂失后,该账户不能进行任何操作。 修改密码。输入原密码和新设置密码。 转账。输入转账的转出账户和转入账户以及转账金额,进行转账。 第3章 类的设计3.1ATM类的设计 在atm类,有数据成员和成员函数,他们被访问的权限又分为三类,private私有类,protected保护类,public公有类。 class ATM / ATM取款机 public: /公有类 ATM(consumer& cn):cnsm(cn) void welcome(); / 登陆界面 bool check_passwd(char n,char pwd); / 核对密
5、码 void change_passwd(); / 修改密码 void fetchmoney(); / 取款 void information(); / 查询信息 void functionshow(); / 功能界面 void guashi(); / 挂失 void zhuanzhang(); / 转账 void exitATM(); / 退出系统 void lock(); / 锁机 private: / 私有类 int times; / 记录密码输入次数 int money;consumer&cnsm;3.2 consumer 类的设计class consumer/ 用户 public:
6、/公有类friend class ATM; consumer(char Name,char Num,char Nun,float Money,char Password); protected:char* get_name(); / 取得姓名 char* get_num(); / 取得卡号char* get_nun(); /身份证char* get_passwd(); / 取得密码 float get_money(); / 取得余额 void set_passwd(char pwd); / 设置密码 void set_money(float m); / 取钱 private: /私有类char
7、 passwd8; / 用户密码 char name20; / 用户姓名 char num20; /用户账号char nun20; /用户身份证 float money; /用户余额; 第4章 详细设计4.1工程视图 图 41 工程视图4.2类图视图 图 42 类图视图4.3函数的调用:main()主程序ATM atm(c1)()change_passwd(),getmoney(),fetchmoney(),information(),guashi(),zhuanzhang(),exitATM()welcome() 图 43 函数调用关系图 4.4主程序的流程图:输入卡号和密码正确 否是 服务
8、界面显示用户信息和余额 查询 取款 挂失 修改密码挂式界面输入金额输入旧密码 正确输入新密码 正确 否 是 否输入新密码操作成功取款 挂失 修改密码 挂失 退出 是挂失成功 正确 退卡 修改成功 返回 退出 否 是 返回 退出 转账 转账成功超出余额输入转账金额输入转账卡号 是 否 返回 退出 图 44 程序流程图 第 5章 测试 5.1登陆界面 图 51 登陆界面5.2修改密码 图 52 修改密码界面5.3取款 图 53 取款界面 5.4查询 图 54 查询界面5.5挂失 图 55 挂失界面5.6转账 图 56 转账界面5.7退出系统 图 51 退出系统界面 第6章 总结 自动取款机的虚拟系
9、统主要是模仿银行真的自动取款机的功能而设计的,其功能和真正的自动取款机是有很多的差别的,但对我们来说,此虚拟的自动取款机也是很大的激励,对大家的认识自动取款机也有一定的帮助 。虽然,在功能和界面上和其他的自动取款机系统和很大的差别,但是这个模拟的系统也是很真实。通过这次的模拟ATM取款系统的设计,让我更深了理解了C+程序,对在理论学习时很多不懂得东西,通过这次实践操作,有了新的认识,同时也学会了如何分析问题,将复杂问题的细化分类处理,如何寻找突破口解决难题培养了自己的逻辑思维能力,加深了对面向对象程序设计思想的认识,对类的继承,函数的重载以及多态的应用有了更深入得了解。同时也明白了养成良好的编
10、程习惯。学会了,在编写程序的同时做好文档的记录工作,为日后的调试,复检做准备。通过此次程序设计更明确了日后的目标。 参考文献1. 吴敏,杨国林.C+面向对象程序设计.呼和浩特:内蒙古大学出版社,20062. 谭永强.C+程序设计.北京:清华大学出版社,20043. 钱能.C+程序设计教程.北京:清华大学出版社,20014.谭永强,陈青华,朱红.C+程序设计实践指导.北京:清华大学出版社,2005 附录 程序代码 #include#include#includeclass consumer;class ATM / ATM取款机 public: ATM(consumer& cn):cnsm(cn)
11、 void welcome(); / 登陆界面 bool check_passwd(char n,char pwd); / 核对密码 void change_passwd(); / 修改密码 void fetchmoney(); / 取款 void information(); / 查询信息 void functionshow(); / 功能界面 void guashi(); / 挂失 void zhuanzhang(); / 转账 void exitATM(); / 退出系统 void lock(); / 锁机 private: int times; / 记录密码输入次数 long card
12、ID; long psw; int money; consumer&cnsm;class consumer/ 用户 public:friend class ATM; consumer(char Name,char Num,char Nun,float Money,char Password); protected:char* get_name(); / 取得姓名 char* get_num(); / 取得卡号char* get_nun(); /身份证char* get_passwd(); / 取得密码 float get_money(); / 取得余额 void set_passwd(char
13、 pwd); / 设置密码 void set_money(float m); / 取钱 private:char passwd8; / 用户密码 char name20; / 用户姓名 char num20;char nun20; float money;consumer:consumer(char Name,char Num,char Nun, float Money,char Password)strcpy(name,Name); strcpy(num,Num); strcpy(nun,Nun); money=Money; strcpy(passwd,Password); char* co
14、nsumer:get_name()return name; char* consumer:get_num()return num; char* consumer:get_nun()return nun; char* consumer:get_passwd()return passwd; float consumer:get_money()return money; void consumer:set_passwd(char pwd)strcpy(passwd,pwd); void consumer:set_money(float m)money-=m;void ATM:welcome()tim
15、es=0;coutendl;cout 欢迎使用DSJ银行ATM自动取款机 endl;coutendl; char pwd8,num20,ch; int i=0; do i=0;coutendl请输入卡号:; docin.get(ch);numi+=ch; while(ch!=n); numi-1=0;i=0;cout请输入密码:; do cin.get(ch); pwdi+=ch; while(ch!=n);pwdi-1=0; if(!check_passwd(num,pwd) cout你输入的卡号或密码有误,请重新输入endl;times+; elsefunctionshow(); whil
16、e(times=3); lock();bool ATM:check_passwd(char num,char pwd)if(strcmp(num,cnsm.get_num()=0&strcmp(pwd,cnsm.get_passwd()=0)return true;elsereturn false;void ATM:change_passwd()char pwd8,repwd8; times=0; do coutendlpwd; if(!check_passwd (cnsm.get_num(),pwd)times+;elsebreak; while(times=3); if(times=3)l
17、ock(); int t=0; do coutpwd;coutrepwd; if(t=strcmp(pwd, repwd)!=0)cout你输入的两次密码不一样,请重新输入!endl; while(t!=0); cnsm.set_passwd(pwd); cout密码修改成功,请牢记!endl; void ATM:fetchmoney() float m; char ch; docoutendl你要取多少钱:n$m; while(m=0)cout请输入正确的数字!endl;coutm; if(cnsm.get_money()-m0)cout对不起,你的余额不足!endl;elsecoutend
18、l操作成功,请收好钱!endl;cnsm.set_money(m); cout是否要继续该项操作:(Y/N) endl;coutch; while(ch!=n&ch!=N&ch!=Y&ch!=y)coutch; while(ch=y|ch=Y); void ATM:information()cout*endl;cout*endl;cout* 用户姓名:cnsm.get_name()endl;cout* 卡号: cnsm.get_num()endl;cout* 身份证: cnsm.get_nun()endl;cout* 余额: cnsm.get_money()endl;cout*endl;voi
19、d ATM:functionshow() int n; docoutendl请你输入相应的操作序号进行操作:endl;cout1) 修改密码 endl2) 取款 endl3) 查询余额 endl4) 挂失 endl5) 转账endl6) 退出系统endl; coutn; while(n7) cout请输入正确的操作序号!endl; coutn; switch(n) case 1:change_passwd();break; case 2:fetchmoney();break; case 3:information();break; case 4:guashi();break; case 5:z
20、huanzhang();break; case 6:exitATM();break; while(true); void ATM:guashi() char ch; cout您确定要挂失吗?(Y/N) endl; coutch;if(ch!=n&ch!=N)|(ch=Y&ch=y) cout挂失成功!请您尽快补办新卡!endl;coutendl感谢你对本银行的支持,欢迎下次光临!endl;cout请取卡endl;exit(0);return; else cout未挂失!endl; void ATM:zhuanzhang() long ID2; int money1; cout请输入您要转账的卡
21、号:ID2; cout请输入您要转账的金额:money1;if(money=money1) money=money-money1; cout转账成功,您卡上余额为:moneyendl; else coutmoney1; money=money-money1; cout转账成功,您卡上余额为:moneyendl; void ATM:lock()coutendl对不起,由于你的操作有误,你的卡已经被没收! endl;exit(1);void ATM:exitATM()coutendl感谢你对本银行的支持,欢迎下次光临!endl;cout请取卡endl;exit(0);void main()consumer c1(李四,6078,450.8f,);/ 先构造一个用户ATM atm(c1);atm.welcome();