C++课程设计2013年12月20日课题:模拟ATM机存取款管理系统系别:计算机科学系专业:计算机科学与技术(网络应用)班级:B12计科班姓名:杨磊学号:1208075160指导教师:任廷艳老师目录第一章需求分析———1第二章功能要求———1第三章类的设计———3第四章主流程图———4第五章功能调试———5第六章总结报告———7附录程序代码———8第一章需求分析为了方面用户的及时取款,查询,及时修改密码的方便,本课题设计并模拟银行的自动取款机使用过程中的界面和用户交互过程。实现查询银行卡余额、取款、修改密码、退出系统等功能。第二章功能要求(1)卡号、密码输入最多三次,否则直接退出系统。(2)取款功能:取款金额受卡余额、机单笔最大取款金额及机当前剩余金额的限制。(3)查询功能:实现查询余额功能。(4)更改密码:实现密码更改功能,对于密码要有2次验证。(5)锁卡功能:实现卡被锁的功能。(6)退卡功能:实现退出系统功能。第三章类的设计ATM类:classATM//ATM类{private:inttimes;YongHu&yh;public:ATM(YongHu&y):yh(y){}voidDLJM();//登陆界面boolHDMM(charID[],charmima[]);//核对密码voidQK();//取款voidCX();//查询voidGG();//更改密码voidGNJM();//功能界面voidLK();//锁卡voidTC();//退出};类中包括:登陆界面,核对密码,取款,查询,更改密码,功能界面,锁卡,退出等函数。通过函数实现以上等功能。用户YongHu类:classYongHu//用户类{private:charID[20];//卡号charmima[10];//密码floatmoney;//卡上余额public:friendclassATM;YongHu(charid[],floatMoney,charMima[]);char*get_ID();//获取卡号char*get_mima();//获取密码floatget_money();//获取余额voidset_mima(charMima[]);//设置密码voidset_money(floatm);};用户类包括:获取卡号,密码,余额,设置密码等函数。为获取用户信息而做的功能,通过以上函数,经过主函数建立对象,传入实参后可获取对象(用户)信息。主函数:主函数通过建立对象a和用户y1,把y1的通过a(y1)传入构造函数,调用登陆界面,输入密码和卡号后进入主界面,这就是主函数所做的功能。第四章流程图主流程图:主界面取款功能查询功能登陆界面修改密码锁卡功能退出功能第五章功能调试登陆界面:登陆成功后的主功能界面:取款:查询余额:更改密码:锁卡功能:退出功能:第六章系统总结报告系统的设定:1,本系统设定好测试卡号,密码,余额。2,取款时只能取100倍数的钱。3,修改密码错误时系统自动报错。4,卡号密码输入最多三次,如超过则系统直接锁卡并退出。遇到问题:1,开始时更改密码功能输入一次就报错,且没有返回主界面,经过一番修改后,终得成功。2,系统使用do---while语句较多,使得程序的左括号及右括号出现错误,查资料及问过老师后才解决这个问题。3,本系统经过查阅网上信息及教材书,终于设计出来了,可是自己在完全脱离这些信息及资料后,不能独立完成设计,发现自己动手能力交差,书上的知识不能及时运用,造成了此次的不能独立完成,反过来想想后,自己存在的问题实在是多,在今后的学习上我会不断加强自己的不足,做出一个自己满意的系统。附录:程序代码:#includeiostream.h#includestring.h#includestdlib.hclassYongHu;//定义全局类classclassATM//ATM类{private:inttimes;YongHu&yh;public:ATM(YongHu&y):yh(y){}voidDLJM();//登陆界面boolHDMM(charID[],charmima[]);//核对密码voidQK();//取款voidCX();//查询voidGG();//更改密码voidGNJM();//功能界面voidLK();//锁卡voidTC();//退出};classYongHu//用户类{private:charID[20];//卡号charmima[10];//密码floatmoney;//卡上余额public:friendclassATM;YongHu(charid[],floatMoney,charMima[]);char*get_ID();//获取卡号char*get_mima();//获取密码floatget_money();//获取余额voidset_mima(charMima[]);//设置密码voidset_money(floatm);};YongHu::YongHu(charid[],floatMoney,charMima[])//用户的构造函数{strcpy(ID,id);//strcpy函数是复制两字符串的函数,头文件为string.hmoney=Money;strcpy(mima,Mima);}floatYongHu::get_money()//获取余额函数{returnmoney;}char*YongHu::get_ID()//获取卡号{returnID;}voidYongHu::set_money(floatm){money-=m;}char*YongHu::get_mima()//获取密码{returnmima;}voidYongHu::set_mima(charMima[])//设置密码{strcpy(mima,Mima);}voidATM::DLJM()//登陆界面{times=0;charID[20],mima[10],ch;inti=0;do{i=0;cout◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆endl;cout◆欢迎使用黔南师院计科班银行!◆endl;cout◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆endlendl;cout测试卡号为:123456endl;cout测试密码为:123456endl;cout测试卡号余额为:10000元endlendlendl;cout请输入您的卡号endl;cout卡号:;do{cin.get(ch);ID[i++]=ch;}while(ch!='\n');ID[i-1]='\0';i=0;coutendl请输入您的密码endl;cout密码:;do{cin.get(ch);mima[i++]=ch;}while(ch!='\n');mima[i-1]='\0';if(!HDMM(ID,mima)){cout对不起,您的卡号或密码有误,请重新输入endl;times++;}else{GNJM();}}while(times3);LK();}boolATM::HDMM(charID[],charmima[]){if(strcmp(ID,yh.get_ID())==0&&strcmp(mima,yh.get_mima())==0)returntrue;elsereturnfalse;}voidATM::GNJM(){intn;coutendlendlendl;cout★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆endl;cout★请输入你想操作的序号:☆endl;cout☆1)取款★endl;cout★2)查询余额☆endl;cout☆3)更改密码★endl;cout★4)退出系统☆endl;cout★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆endl;cinn;if(n0||n4){cout您输入的序号不正确,请重新输入:;cinn;}switch(n){case1:QK();break;case2:CX();break;case3:GG();break;case4:TC();break;}while(true);}voidATM::QK(){floatm;charch;do{coutendl输入您要取多少钱:endl;cinm;while(m=0){cout请输入正确的取款数:endl;cinm;}if(yh.get_money()-m0){cout对不起,您的余额不足!endl;}else{if((int)m%100!=0){cout对不起,您的取款金额必须为100的倍数!endl;}else{if(m2000){cout对不起,您每次只能取2000元!endl;}else{cout操作成功,请稍后!!!endl;yh.set_money(m);}}}cout请输入(y/n)确认是否取钱!endl;cinch;cout您已取款成功!请收好钱!;GNJM();while(ch!='Y'&&ch!='y'&&ch!='N'&&ch!='n'){cinch;}}while(ch=='y'||ch=='Y');}voidATM::CX(){cout~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~endl;coutendl;cout卡号:yh.get_ID()endl;cout余额:yh.get_money()元endl;coutendl;cout~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~endl;GNJM();}voidATM::GG(){charmima[10],Xmima[10];times=0;do{coutendl请输入旧密码:;cinmima;if(!HDMM(yh.get_ID(),mima))times++;elsebreak;}while(times3);if(times==3)LK();intt=1;do{cout请输入新密码并牢记好新密码!endl;cinmima;cout请再次输入新密码并牢记好新密码!endl;cinXmima;t=strcmp(mima,Xmima);//对新密码进行比较,如果相等,则返回0if(t!=0)cout您输入的密码不一致,请重新输入!endl;}while(t!=0);yh.set_mima(mima);cout密码修改成功,请您牢记!endl;GNJM();}voidATM::LK(){cout对不起,你输入的密码错误已达三次,您的卡已被没收!endl;exit(1);}voidATM::TC(){cout请取走您的卡,感谢您的使用,欢迎您下次再来!endl;exit(0);}voidmain(){YongHuy1(123456,10000,123456);//创建用户y1ATMa(y1);a.DLJM();a.GNJM();}