基于某面向对象思想地ATM系统设计与实现.docx
- 文档编号:28555805
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:18
- 大小:149.14KB
基于某面向对象思想地ATM系统设计与实现.docx
《基于某面向对象思想地ATM系统设计与实现.docx》由会员分享,可在线阅读,更多相关《基于某面向对象思想地ATM系统设计与实现.docx(18页珍藏版)》请在冰豆网上搜索。
基于某面向对象思想地ATM系统设计与实现
基于面向对象思想的ATM系统设计与实现
课程名称:
VC++面向对象思想程序设计
班级:
电子信息工程2班指导教师:
刘帅
日期:
2016年10月
小组编号:
电二一组
成员:
)
摘要:
在控制台编程中共设置了3个类,ATM类和card类和bankcard类,设计的程序完美的实现了设计要求,具有登陆、查询、取款、转账、修改密码、回到登录系统、退出系统等功能。
程序实现分为两个部分,其一是mfc部分,其二是控制台部分。
在要求的基础之上,改程序还增添了部分新功能,并对原有功能做了许多个性化修改,例如在登陆界面输入错误三次就会冻结账号退出系统,在mfc对话框中加入图片更加仿真系统。
在可视化控件编程中,通过建立多个对话框,并实现信息交流,完整的实现了要求的内容。
程序编辑较为复杂。
前言:
随着市场经济的繁荣发展,人们的物质生活得到极大的提高,手中的剩余资金也日益增多。
受传统观念影响,绝大多数人喜欢把资金投进银行,而在需要使用现金的时候再到银行提取现金。
这就导致银行业务的急剧增加。
虽然银行网点越来越多,银行的工作效率也随着信息化有较明显的增长,但是依旧不能满足广大用户的需要。
而一味的增加营业网点,从理论上虽然能稍微的缓解银行的压力,但是治标不治本,而且每增加一个网点,不仅要付出昂贵的资金成本,还需要长期投入人力资本,成本非常之昂贵。
这时候就迫切的需要一种自动的,易于普及的,低成本的设备来解决这一问题。
于是ATM机系统应运而生了。
银行提款机已经发展成各大银行金融服务战略中的重要一环,为广大用户提供了更加快捷和人性化的服务,银行提款机成为我们日常生活中不可缺少的一部分。
该项目正是通过设计一个ATM模拟模拟程序来实现ATM机系统的基本功能,充分运用自己所学的c++知识进行设计编程。
研究报告:
一、项目需求:
总体思路
模拟自助取款机,通过两种编程实现
1、C++控制台编程实现ATM,至少实现提款机登陆、取款、修改密码、查询余额。
2、MFC控件编程实现ATM,至少实现提款机登陆、查询余额、取款和退出系统功能。
项目实际达成效果:
1、实现提款机登陆、修改密码、查询信息、汇款转账、回到登陆界面、取款、退卡等功能;
2、提款机登陆自动验证密码,密码错误无法登陆;
3、在登陆、修改密码等操作过程中,连续输入三次密码错误则无法完成相关操作,自动退出程序。
4、在任何情况下输入错误的序号均有提示。
特色:
控制台程序部分:
1、在基础要求的基础上在程序中添加了延迟函数Sleep,使整个界面更加仿真ATM机。
2、加入清屏函数与暂停函数,等待用户进行响应后再进行下一个进程,更加人性化。
3、在欢迎界面会输出用户的姓名,如“欢迎您,李四”。
4、在原本单用户系统的基础上进行修改,使其增加了多个用户,多个用户之间可以通过汇款实现金额的增减。
5、汇款的实现,即当用户选择汇款账号以后,被汇款的一方金钱真的会增加。
6、程序本身并没有将帐号和密码导入文件,实际上,我们组经过讨论后一致认为,这样做其实很有风险,如果有黑客修改了文件中的数据,那么系统将会无法正确读取数据,系统将会崩溃。
为了弥补这一不足,我们将用户的数据直接写入程序,同时增加了回到登录界面的选项。
MFC部分:
1、MFC主界面中增加了图片,更加仿真银行ATM.
2、修改了TAB键顺序,使用户可以不再用鼠标操作。
二、项目实施
由于代码太过冗长影响阅读,已将代码和mfc的展示调至本文结尾。
通过程序要求,我们可以清楚的知道本次设计的ATM柜员模拟程序需要实现四大功能,即查询余额、取款、汇款、修改密码。
除此之外,作为ATM系统,还需要最基本的两大功能,即登陆和退出(还应包括回到登陆界面)。
在程序的大体框架确定之后,我们需要了解各个模块所要实现和需要具有的功能。
根据现有的银行ATM系统,我们可以很快就可以了解本次设计的ATM系统应该具有的操作。
Ⅰ控制台部分
(1)登陆界面
总共设定了三个用户,帐号密码分别为“001”“111111”“002”“222222”“003”“333333”,
帐号密码均正确方可进入。
(2)主界面
主界面包括查询、取款、汇款、修改密码、回到登陆界面、退出的功能选项,输入正确序号可进行相关操作。
(3)查询界面
在主界面中按下查询按钮可以进行查询操作。
通过查询功能我们可以查询账户的余额,在查询过程中我们可以选择取款的业务,除此之外,查询界面之中还有返回的操作。
返回的操作会使用户回到主界面。
(4)取款界面
取款界面可以通过主界面进入。
取款功能在控制台中输入你想要取出的金额。
在控制台编程中,为了实现在不取钱的情况下返回主菜单,添加了一个设定,即输入取款0元即可返回主菜单。
(5)转账界面
转账界面需要通过主界面进入。
可以根据提示输入汇款账号和汇款金额,汇款金额超出当前用户最高金额时会提示汇款失败。
(6)修改密码
选择修改密码按钮可以进行修改密码操作,但是要先输入就密码正确并且两次输入新密码一致才可以修改密码。
修改完成后,会返回登陆界面重新登录,此时,若输入修改之前的密码,将会导致无法进入系统。
(7)回到登陆界面
回到可以再次输入帐号和密码的界面。
(8)退出系统
直接退出系统,程序控制台关闭。
ⅡMFC部分
(1)登陆界面
单用户系统,账号为001,密码为123456。
错误三次直接退出系统。
(2)主界面
主界面包括查询、取款、修改密码、退出的功能选项,可通过鼠标点击,也可通过TAB键控制(TAB键顺序已经被设定好了)进行相关操作。
(3)查询界面
在主界面中按下查询按钮可以进行查询操作。
通过查询功能我们可以查询账户的余额,除此之外,查询界面之中还有返回的操作。
返回的操作会使用户回到主界面。
(4)取款界面
取款界面可以通过主界面进入。
取款功能在控制台中输入你想要取出的金额。
在控制台编程中,为了实现在不取钱的情况下返回主菜单,添加了一个按钮,点击即可返回主菜单。
(5)修改密码
选择修改密码按钮可以进行修改密码操作,但是要先输入就密码正确并且两次输入新密码一致才可以修改密码。
修改完成后,会返回登陆界面重新登录,此时,若输入修改之前的密码,将会导致无法进入系统。
(
(6)退出系统
弹出提示,确认是否要退出系统,点击取消返回主界面,点击确认退出系统。
三、体会与参考文献
在这次的项目中,我们主要运用了mfc与控制台编程方面的知识,加深了对C++语言中各个基础知识点的了解和应用,将自己所学的知识运用到实际操作当中,而不再是纸上谈兵。
通过这次设计,我们深刻感受到了面向对象语言中类库的强大功能,掌握了运用C++中的类实现某些基本功能,并学会了自己查询使用类的方法,为以后的面向对象语言的自学奠定了基础。
由于时间仓促,脑中有许多想法仍然没有实现,比如加入定时器,实现将账号与密码导入到文件并将文件隐藏,在MFC中实现语音提示等等,也还有一些不足,比如:
在控制台程序中实现了将输入的密码输出为“******”,但还没有解决按退格键无法删除字符的问题;当在登陆界面校验账号与密码时,如果添加一条语句实现不存在账户的提醒,exe文件就会停止运行的问题等等,尽管我们的项目还有很多不足,它仍然帮助我们加深了对课堂上知识的理解。
参考文献
CSDN论坛,XX文库,豆丁网,C++面向对象程序设计教程第三版(陈维兴林小茶编著)
控制台代码展示:
#include
#include
#include
#include
#include
usingnamespacestd;
classcard{//基类:
卡类
protected:
stringname;
stringaccount;
stringpassword;
public:
card(stringn,stringa,stringp);
voidmodifypsw();//修改密码功能
};
classATM;
classbankcard:
publiccard{//共有派生类:
银行卡类
intmoney;//比卡类多出了一个金钱属性
friendATM;//友元类ATM,使ATM类能够访问银行卡类的私有成员
public:
bankcard(stringn="0",stringa="0",stringp="0",intm=0);
};
classATM{//ATM类,模拟自助取款机主系统·
public:
voidtakemoney(bankcard&);//取款函数
voidmodifypsw(bankcard&);//修改密码函数
voidrestmoney(bankcard);//查询余额函数
voidwelcome();//欢迎界面函数
voidbye();//再见函数
voidtest(bankcard*);//用来检验账号与密码是否匹配
voidprintname(bankcardx)
{
Sleep(1000);
cout<<"--------------------------------"< cout<<"欢迎您,"< cout<<"--------------------------------"< Sleep(500); } voidtransport(bankcard&,bankcard*); }; card: : card(stringn,stringa,stringp) { name=n; account=a; password=p; } voidATM: : modifypsw(bankcard&x)//修改密码 { inta=0; stringpsw1,psw2,password; do{ cout<<"请输入原密码: "< charch; while((ch=_getch())! =13){password+=ch;cout<<"*";} cout< if((x.password==password))a=1; else{password="";cout<<"密码错误,请重新输入! "< }while(! a); cout<<"请输入新密码: "< charch1; while((ch1=_getch())! =13){psw1+=ch1;cout<<"*";} cout< cout<<"请再次输入新密码: "< charch2; while((ch2=_getch())! =13){psw2+=ch2;cout<<"*";} cout< if(psw1==psw2) { x.password=psw1; cout<<"修改密码成功! 请重新登录系统! \n"; Sleep(1000); system("pause"); system("cls"); welcome(); test(&x); } else{ cout<<"密码修改失败,两次密码输入不一致! "< Sleep(1000); } } bankcard: : bankcard(stringn,stringa,stringp,intm): card(n,a,p) { money=m; } voidATM: : takemoney(bankcard&x)//取款 { intm; cout<<"请输入想要取款的金额: "< cin>>m; if((x.money-m)<0){ Sleep(1000); cout<<"余额不足,取款失败! "< } else{ Sleep(1000); x.money-=m;cout<<"取款成功! "< } } voidATM: : restmoney(bankcardx)//查询余额 { Sleep(1000); cout<<"余额为"< Sleep(1000); } voidATM: : transport(bankcard&y,bankcard*x) { intk; bankcard*t; stringaccount1; intmoney1; cout<<"请输入汇款账户号: "< cin>>account1; for(k=0;k<10;k++) { t=&x[k]; if(t->account==account1)break; } //if(t->account=="0")cout<<"查无此人,无法转账! "< //else{ Sleep(1000); cout<<"请输入汇款金额: "< cin>>money1; if((x[k].money-money1)<0){ Sleep(1000); cout<<"余额不足,转账失败! "< } else{ x[k].money+=money1; y.money-=money1; Sleep(1000); cout<<"汇款中,请稍后。 。 。 "< Sleep(1000); cout<<"汇款成功! "< } //} } staticinti=0; voidATM: : test(bankcard*x)//检验账号与密码是否匹配 { bankcard*p; stringaccount1,password1; staticinta=0; intt=0; do{ { cout<<"请输入账号: "< cin>>account1; for(i=0;i<10;i++) { p=&x[i]; if(p->account==account1)break; } { cout<<"请输入密码: "< //cin>>password1; charch; while((ch=_getch())! =13){password1+=ch;cout<<"*";} cout< if((p->password==password1))t=1; else{ {if(a>1){cout<<"您的账号已被冻结! "< password1=""; cout<<"账号或密码错误,您还有"<<2-a<<"次机会重新输入! "< } } } }while(! t); } voidATM: : welcome(){ cout<<"--------------------------------"< cout<<"|欢迎使用中国银行自助取款系统! |"< cout<<"--------------------------------"< Sleep(1000); } voidATM: : bye(){ Sleep(200); cout<<"----------------------"< cout<<"|感谢您的使用,再见! |"< cout<<"----------------------"< Sleep(500); } intmain()//主函数 { bankcardb[3]{bankcard("张三","001","111111",10000),bankcard("李四","002","222222",20000),bankcard("王五","003","333333",30000)}; ATMa; intt=1; a.welcome(); a.test(b); do{ a.printname(b[i]); cout<<"--------------------------------"< cout<<"|请输入对应数字以选择服务项目|"< cout<<"|<1>取款|"< cout<<"|<2>查询余额|"< cout<<"|<3>转账|"< cout<<"|<4>修改密码|"< cout<<"|<5>回到登陆界面|"< cout<<"|<6>退出系统|"< cout<<"--------------------------------"< intc; cin>>c; switch(c) { case1: a.takemoney(b[i]);break; case2: a.restmoney(b[i]);break; case3: a.transport(b[i],b);break; case4: a.modifypsw(b[i]);break; case5: a.bye();a.test(b);break; case6: a.bye();t=0;break; default: cout<<"输入无效! "< } }while(t); return0; } MFC部分界面展示 1.登陆界面 2.主界面 3.取款界面 . 4.查询余额界面 5.修改密码界面
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 面向 对象 思想 ATM 系统 设计 实现