




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于面向对象思想的ATM系统设计与实现 课程名称: VC+面向对象思想程序设计 班级: 电子信息工程2班 指导教师: 刘帅 日期: 2016年10月小组编号: 电二一组 成员:) 摘要:在控制台编程中共设置了3个类,ATM 类和card类和bankcard类,设计的程序完美的实现了设计要求,具有登陆、查询、取款、转账、修改密码、回到登录系统、退出系统等功能。程序实现分为两个部分,其一是mfc部分,其二是控制台部分。在要求的基础之上,改程序还增添了部分新功能,并对原有功能做了许多个性化修改,例如在登陆界面输入错误三次就会冻结账号退出系统,在mfc对话框中加入图片更加仿真系统。在可视化控件编程中,
2、通过建立多个对话框,并实现信息交流,完整的实现了要求的内容。程序编辑较为复杂。前言:随着市场经济的繁荣发展,人们的物质生活得到极大的提高,手中的剩余资金也日益增多。受传统观念影响,绝大多数人喜欢把资金投进银行,而在需要使用现金的时候再到银行提取现金。这就导致银行业务的急剧增加。虽然银行网点越来越多,银行的工作效率也随着信息化有较明显的增长,但是依旧不能满足广大用户的需要。而一味的增加营业网点,从理论上虽然能稍微的缓解银行的压力,但是治标不治本,而且每增加一个网点,不仅要付出昂贵的资金成本,还需要长期投入人力资本,成本非常之昂贵。这时候就迫切的需要一种自动的,易于普及的,低成本的设备来解决这一问
3、题。于是ATM机系统应运而生了。银行提款机已经发展成各大银行金融服务战略中的重要一环,为广大用户提供了更加快捷和人性化的服务,银行提款机成为我们日常生活中不可缺少的一部分。该项目正是通过设计一个ATM模拟模拟程序来实现ATM机系统的基本功能,充分运用自己所学的c+知识进行设计编程。研究报告:一、项目需求:总体思路模拟自助取款机,通过两种编程实现 1、C+控制台编程实现ATM,至少实现提款机登陆、取款、修改密码、查询余额。2、MFC控件编程实现ATM,至少实现提款机登陆、查询余额、取款和退出系统功能。项目实际达成效果:1、实现提款机登陆、修改密码、查询信息、汇款转账、回到登陆界面、取款、退卡等功
4、能;2、提款机登陆自动验证密码,密码错误无法登陆;3、在登陆、修改密码等操作过程中,连续输入三次密码错误则无法完成相关操作,自动退出程序。4、在任何情况下输入错误的序号均有提示。特色:控制台程序部分:1、在基础要求的基础上在程序中添加了延迟函数Sleep,使整个界面更加仿真ATM机。2、加入清屏函数与暂停函数,等待用户进行响应后再进行下一个进程,更加人性化。3、在欢迎界面会输出用户的姓名,如“欢迎您,李四”。4、在原本单用户系统的基础上进行修改,使其增加了多个用户,多个用户之间可以通过汇款实现金额的增减。5、汇款的实现,即当用户选择汇款账号以后,被汇款的一方金钱真的会增加。6、程序本身并没有将
5、帐号和密码导入文件,实际上,我们组经过讨论后一致认为,这样做其实很有风险,如果有黑客修改了文件中的数据,那么系统将会无法正确读取数据,系统将会崩溃。为了弥补这一不足,我们将用户的数据直接写入程序,同时增加了回到登录界面的选项。MFC部分:1、MFC主界面中增加了图片,更加仿真银行ATM.2、修改了TAB键顺序,使用户可以不再用鼠标操作。二、项目实施由于代码太过冗长影响阅读,已将代码和mfc的展示调至本文结尾。通过程序要求,我们可以清楚的知道本次设计的ATM柜员模拟程序需要实现四大功能,即查询余额、取款、汇款、修改密码。除此之外,作为ATM系统,还需要最基本的两大功能,即登陆和退出(还应包括回到
6、登陆界面)。在程序的大体框架确定之后,我们需要了解各个模块所要实现和需要具有的功能。根据现有的银行ATM系统,我们可以很快就可以了解本次设计的ATM系统应该具有的操作。 控制台部分(1)登陆界面总共设定了三个用户,帐号密码分别为“001”“111111”“002”“222222”“003”“333333”,帐号密码均正确方可进入。(2)主界面主界面包括查询、取款、汇款、修改密码、回到登陆界面、退出的功能选项,输入正确序号可进行相关操作。(3)查询界面在主界面中按下查询按钮可以进行查询操作。通过查询功能我们可以查询账户的余额,在查询过程中我们可以选择取款的业务,除此之外,查询界面之中还有返回的操
7、作。返回的操作会使用户回到主界面。(4)取款界面 取款界面可以通过主界面进入。取款功能在控制台中输入你想要取出的金额。在控制台编程中,为了实现在不取钱的情况下返回主菜单,添加了一个设定,即输入取款0元即可返回主菜单。 (5)转账界面 转账界面需要通过主界面进入。可以根据提示输入汇款账号和汇款金额,汇款金额超出当前用户最高金额时会提示汇款失败。 (6)修改密码 选择修改密码按钮可以进行修改密码操作,但是要先输入就密码正确并且两次输入新密码一致才可以修改密码。修改完成后,会返回登陆界面重新登录,此时,若输入修改之前的密码,将会导致无法进入系统。 (7)回到登陆界面 回到可以再次输入帐号和密码的界面
8、。 (8)退出系统 直接退出系统,程序控制台关闭。 MFC部分(1)登陆界面单用户系统,账号为001,密码为123456。错误三次直接退出系统。(2)主界面主界面包括查询、取款、修改密码、退出的功能选项,可通过鼠标点击,也可通过TAB键控制(TAB键顺序已经被设定好了)进行相关操作。(3)查询界面在主界面中按下查询按钮可以进行查询操作。通过查询功能我们可以查询账户的余额,除此之外,查询界面之中还有返回的操作。返回的操作会使用户回到主界面。(4)取款界面 取款界面可以通过主界面进入。取款功能在控制台中输入你想要取出的金额。在控制台编程中,为了实现在不取钱的情况下返回主菜单,添加了一个按钮,点击即
9、可返回主菜单。 (5)修改密码 选择修改密码按钮可以进行修改密码操作,但是要先输入就密码正确并且两次输入新密码一致才可以修改密码。修改完成后,会返回登陆界面重新登录,此时,若输入修改之前的密码,将会导致无法进入系统。 ( (6)退出系统 弹出提示,确认是否要退出系统,点击取消返回主界面,点击确认退出系统。三、体会与参考文献在这次的项目中,我们主要运用了mfc与控制台编程方面的知识,加深了对 C+语言中各个基础知识点的了解和应用,将自己所学的知识运用到实际操作当中,而不再是纸上谈兵。通过这次设计,我们深刻感受到了面向对象语言中类库的强大功能,掌握了运用C+中的类实现某些基本功能,并学会了自己查询
10、使用类的方法,为以后的面向对象语言的自学奠定了基础。由于时间仓促,脑中有许多想法仍然没有实现,比如加入定时器,实现将账号与密码导入到文件并将文件隐藏,在MFC中实现语音提示等等,也还有一些不足,比如:在控制台程序中实现了将输入的密码输出为“*”,但还没有解决按退格键无法删除字符的问题;当在登陆界面校验账号与密码时,如果添加一条语句实现不存在账户的提醒,exe文件就会停止运行的问题等等,尽管我们的项目还有很多不足,它仍然帮助我们加深了对课堂上知识的理解。参考文献CSDN论坛,百度文库,豆丁网,C+面向对象程序设计教程第三版(陈维兴 林小茶编著)控制台代码展示:#include <iostr
11、eam>#include<string>#include<stdlib.h>#include<conio.h>#include<windows.h>using namespace std;class card /基类:卡类protected:string name;string account;string password;public:card(string n, string a, string p);void modifypsw(); /修改密码功能;class ATM;class bankcard :public card /共有
12、派生类:银行卡类int money; /比卡类多出了一个金钱属性friend ATM; /友元类ATM,使ATM类能够访问银行卡类的私有成员public:bankcard(string n="0", string a="0", string p="0", int m=0);class ATM /ATM类,模拟自助取款机主系统·public:void takemoney(bankcard &); /取款函数void modifypsw(bankcard &); /修改密码函数void restmoney(ban
13、kcard ); /查询余额函数void welcome(); /欢迎界面函数void bye(); /再见函数void test(bankcard*); /用来检验账号与密码是否匹配void printname(bankcard x)Sleep(1000);cout << "-" << endl;cout << " 欢迎您," << << endl;cout << "-" << endl;Sleep(500);void transport
14、(bankcard &, bankcard *);card:card(string n, string a, string p)name = n;account = a;password = p;void ATM:modifypsw(bankcard &x)/修改密码int a=0;string psw1,psw2,password;docout << "请输入原密码:" << endl;char ch;while (ch = _getch() != 13) password += ch; cout << "*&
15、quot; cout << endl;if (x.password = password)a = 1; else password ="" cout << "密码错误,请重新输入!" << password << endl; while (!a);cout << "请输入新密码:" << endl;char ch1;while (ch1 = _getch() != 13) psw1 += ch1; cout << "*" cout
16、<< endl;cout << "请再次输入新密码:" << endl;char ch2;while (ch2 = _getch() != 13) psw2 += ch2; cout << "*" cout << endl;if (psw1 = psw2)x.password = psw1;cout << "修改密码成功!请重新登录系统!n"Sleep(1000);system("pause");system("cls");
17、welcome();test(&x);elsecout << "密码修改失败,两次密码输入不一致!" << endl;Sleep(1000);bankcard:bankcard(string n, string a, string p, int m) :card(n, a, p)money = m;void ATM:takemoney(bankcard &x)/取款int m;cout << "请输入想要取款的金额:" << endl;cin >> m;if (x.money -
18、 m) < 0)Sleep(1000);cout << "余额不足,取款失败!" << endl; Sleep(1000);elseSleep(1000);x.money -= m; cout << "取款成功!" << endl; Sleep(1000);void ATM:restmoney(bankcard x)/查询余额Sleep(1000);cout << "余额为" << x.money << endl;Sleep(1000);void
19、 ATM:transport(bankcard &y,bankcard *x)int k;bankcard *t;string account1;int money1;cout << "请输入汇款账户号:" << endl;cin >> account1;for (k = 0; k < 10; k+)t = &xk;if (t->account = account1) break;/if (t->account = "0")cout << "查无此人,无法转账!&
20、quot; << endl;/elseSleep(1000);cout << "请输入汇款金额:" << endl;cin >> money1;if (xk.money - money1) < 0)Sleep(1000);cout << "余额不足,转账失败!" << endl; Sleep(1000);elsexk.money += money1;y.money -= money1;Sleep(1000);cout << "汇款中,请稍后。"
21、<< endl;Sleep(1000);cout << "汇款成功!" << endl;/static int i = 0;void ATM:test(bankcard *x)/检验账号与密码是否匹配bankcard *p;string account1, password1;static int a = 0;int t = 0;docout << "请输入账号:" << endl;cin >> account1;for (i = 0; i < 10; i+)p = &
22、xi;if (p->account = account1) break;cout << "请输入密码:" << endl;/cin >> password1;char ch;while (ch = _getch() != 13) password1 += ch; cout << "*" cout << endl;if ( (p->password = password1)t = 1;else if (a > 1) cout << "您的账号已被冻结!&qu
23、ot; << endl; exit(0); password1 = ""cout << "账号或密码错误,您还有" << 2 - a << "次机会重新输入!" << endl; a+; while (!t);void ATM:welcome()cout << "-" << endl; cout << "|欢迎使用中国银行自助取款系统!|" << endl;cout << &q
24、uot;-" << endl;Sleep(1000);void ATM:bye() Sleep(200);cout << "-" << endl;cout << "|感谢您的使用,再见!|" << endl;cout << "-" << endl;Sleep(500);int main()/主函数bankcard b3bankcard("张三", "001", "111111", 10000), bankcard("李四", "002", "222222", 20000),bankcard("王五","003","333333",30000);ATM a;int t = 1;a.welcome();a.test(b);doa.printname(bi);
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年美容师岗位职业技能资格知识考试题库与答案
- 2025春季学期国开河南电大本科补修课《财务管理#》一平台无纸化考试(作业练习+我要考试)试题及答案
- 地铁公司内部培训体系构建
- 职业健康检查培训
- 员工安全职责培训
- 幼儿教师职责培训
- 带教老师培训课件
- 转运老人协议书范本
- 运营服务类合同协议
- 迎合作协议书范本
- 扁桃体癌护理查房
- 医疗质量及医疗安全
- 烧伤治疗和护理
- 2024年广西职业院校技能大赛高职组《区块链技术应用》赛项样卷
- 医疗技术销售技巧
- 使用错误评估报告(可用性工程)模版
- 2024专利代理人考试真题及答案
- 2024年高考全国甲卷英语试卷(含答案)
- 2025年高考数学模拟卷(一)含答案及解析
- 高英-Mark-Twain-Mirror-of-America原文+翻译+修辞
- 政府购买运输服务协议
评论
0/150
提交评论