#c++ATM模拟自动取款机.docx
- 文档编号:26303366
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:20
- 大小:238.23KB
#c++ATM模拟自动取款机.docx
《#c++ATM模拟自动取款机.docx》由会员分享,可在线阅读,更多相关《#c++ATM模拟自动取款机.docx(20页珍藏版)》请在冰豆网上搜索。
#c++ATM模拟自动取款机
C++课程设计
2018年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 第四章流程图 主流程图: 登陆界面 退出功能 取款功能 查询功能 修改密码 锁卡功能 主界面 第五章功能调试 登陆界面: 登陆成功后的主功能界面: 取款: 查询余额: 更改密码: 锁卡功能: 退出功能: 第六章系统总结报告 系统的设定: 1,本系统设定好测试卡号,密码,余额。 2,取款时只能取100倍数的钱。 3,修改密码错误时系统自动报错。 4,卡号密码输入最多三次,如超过则系统直接锁卡并退出。 遇到问题: 1,开始时更改密码功能输入一次就报错,且没有返回主界面,经过一番修改后,终得成功。 2,系统使用do---while语句较多,使得程序的左括号及右括号出现错误,查资料及问过老师后才解决这个问题。 3,本系统经过查阅网上信息及教材书,终于设计出来了,可是自己在完全脱离这些信息及资料后,不能独立完成设计,发现自己动手能力交差,书上的知识不能及时运用,造成了此次的不能独立完成,反过来想想后,自己存在的问题实在是多,在今后的学习上我会不断加强自己的不足,做出一个自己满意的系统。 附录: 程序代码: #include #include #include classYongHu。 //定义全局类class classATM//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函数是复制两字符串的函数,头文件为 money=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<<"◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆"< cout<<"◆欢迎使用黔南师院计科班银行! ◆"< cout<<"◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆"< cout<<"测试卡号为: 123456"< cout<<"测试密码为: 123456"< cout<<"测试卡号余额为: 10000元"< cout<<"请输入您的卡号"< cout<<"卡号: "。 do { cin.get(ch>。 ID[i++]=ch。 } while(ch! ='\n'>。 ID[i-1]='\0'。 i=0。 cout< cout<<"密码: "。 do { cin.get(ch>。 mima[i++]=ch。 } while(ch! ='\n'>。 mima[i-1]='\0'。 if(! HDMM(ID,mima>> { cout<<"对不起,您的卡号或密码有误,请重新输入"< times++。 } else { GNJM(>。 } } while(times<3>。 LK(>。 } boolATM: : HDMM(charID[],charmima[]> { if(strcmp(ID,yh.get_ID(>>==0&&strcmp(mima,yh.get_mima(>>==0> returntrue。 else returnfalse。 } voidATM: : GNJM(> {intn。 cout< cout<<"★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆"< cout<<"★请输入你想操作的序号: ☆"< cout<<"☆1>取款★"< cout<<"★2>查询余额☆"< cout<<"☆3>更改密码★"< cout<<"★4>退出系统☆"< cout<<"★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆"< cin>>n。 if(n<0||n>4> {cout<<"您输入的序号不正确,请重新输入: "。 cin>>n。 } switch(n> { case1: QK(>。 break。 case2: CX(>。 break。 case3: GG(>。 break。 case4: TC(>。 break。 } while(true>。 } voidATM: : QK(> { floatm。 charch。 do { cout< "< cin>>m。 while(m<=0> { cout<<"请输入正确的取款数: "< cin>>m。 } if(yh.get_money(>-m<0> { cout<<"对不起,您的余额不足! "< } else { if((int>m%100! =0> { cout<<"对不起,您的取款金额必须为100的倍数! "< } else { if(m>2000> { cout<<"对不起,您每次只能取2000元! "< } else { cout<<"操作成功,请稍后"< yh.set_money(m>。 } } } cout<<"请输入(y/n>确认是否取钱! "< cin>>ch。 cout<<"您已取款成功! 请收好钱! "。 GNJM(>。 while(ch! ='Y'&&ch! ='y'&&ch! ='N'&&ch! ='n'> { cin>>ch。 } } while(ch=='y'||ch=='Y'>。 } voidATM: : CX(> { cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"< cout<<""< cout<<"卡号: "< cout<<"余额: "< cout<<""< cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"< GNJM(>。 } voidATM: : GG(> { charmima[10],Xmima[10]。 times=0。 do { cout< "。 cin>>mima。 if(! HDMM(yh.get_ID(>,mima>> times++。 else break。 } while(times<3>。 if(times==3> LK(>。 intt=1。 do { cout<<"请输入新密码并牢记好新密码! "< cin>>mima。 cout<<"请再次输入新密码并牢记好新密码! "< cin>>Xmima。 t=strcmp(mima,Xmima>。 //对新密码进行比较,如果相等,则返回0 if(t! =0> cout<<"您输入的密码不一致,请重新输入! "< } while(t! =0>。 yh.set_mima(mima>。 cout<<"密码修改成功,请您牢记! "< GNJM(>。 } voidATM: : LK(> { cout<<"对不起,你输入的密码错误已达三次,您的卡已被没收! "< exit(1>。 } voidATM: : TC(> { cout<<"请取走您的卡,感谢您的使用,欢迎您下次再来! "< exit(0>。 } voidmain(> { YongHuy1("123456",10000,"123456">。 //创建用户y1 ATMa(y1>。 a.DLJM(>。 a.GNJM(>。 }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ATM 模拟 自动 取款