C++课程设计报告(含源码)模拟ATM机
- 格式:doc
- 大小:285.00 KB
- 文档页数:34
c 模拟取款机课程设计一、课程目标知识目标:1. 学生能够理解ATM机的基本工作原理和功能操作流程;2. 学生能够掌握运用编程语言进行ATM机模拟程序的设计;3. 学生能够运用基本的数学运算实现账户余额的查询、取款和存款功能。
技能目标:1. 学生能够运用所学知识,独立设计并编写一个简单的ATM取款机模拟程序;2. 学生能够通过编程解决实际问题,提高逻辑思维和问题解决能力;3. 学生能够通过团队协作,共同完成项目任务,提高沟通与协作能力。
情感态度价值观目标:1. 学生能够认识到编程在生活中的实际应用,增强学习信息技术的兴趣;2. 学生能够在项目实践中体会团队合作的重要性,培养合作精神;3. 学生能够通过解决实际问题,认识到学习知识可以改善生活,提高社会责任感。
分析课程性质、学生特点和教学要求,本课程旨在帮助学生在掌握ATM机基本知识的基础上,运用编程技能实现模拟程序的设计,培养学生解决实际问题的能力。
课程目标具体、可衡量,以便学生和教师能够清晰地了解课程的预期成果,为后续的教学设计和评估提供依据。
二、教学内容1. 理论知识:- 了解ATM机的基本功能及其工作原理;- 学习编程语言的基本语法和结构;- 掌握条件语句、循环语句和函数的定义与使用。
2. 实践操作:- 设计并编写ATM机模拟程序;- 实现账户余额查询、取款、存款和退出功能;- 学习调试程序,解决编程过程中遇到的问题。
3. 教学大纲:- 第一周:ATM机基本功能介绍,学习编程语言基础;- 第二周:编写ATM机模拟程序,实现查询余额和取款功能;- 第三周:实现存款和退出功能,学习调试程序;- 第四周:项目展示与评价,总结反馈。
4. 教材章节:- 《信息技术》第三章:程序设计基础;- 《信息技术》第四章:算法与程序设计。
教学内容根据课程目标进行选择和组织,保证科学性和系统性。
教学大纲明确了教学内容的安排和进度,确保学生在学习过程中逐步掌握所需知识,为实践操作打下坚实基础。
C语言程序设计课程设计(论文)题目:自动取款机院(系):专业班级:学号:学生姓名:指导教师:教师职称:起止时间:课程设计(报告)任务及评语院(系):软件学院教研室:软件教研窒学号学生姓名专业班级程序设计(报告)题目自动取款机程序程序设计(报告)任务程序设计的任务与要求:(1)掌握C语言编程的基础知识。
(2)较熟练地编写C语言应用程序。
(3)了解C语言的常用标准函数、编程技巧、异常处理。
(5)联系已学过的内容,巩固所学的理论,增强独立工作能力。
(6)通过设计主要使学生有一个独立编写程序的过程,对理论学习及动手能力都有一个很大的提高。
(7)通过本次设计,进一步培养学生热爱专业的思想,同时对本专业综合素质的提高起一个积极的推动作用。
课程设计过程中,要严格遵守实践环节的时间安排,听从指导教师的指导。
正确地完成上述内容,记录实习日记,规范完整地撰写出课程设计报告。
指导教师评语及成绩成绩:指导教师签字:2011 年 12 月 22 日目录第1章课程设计的目的与要求 (1)1.1 课程设计目的 (1)1.2 课程设计的实验环境 (1)1.3 课程设计的预备知识 (1)1.4 课程设计要求 (1)第2章课程设计内容 (2)2.1程序功能介绍 (2)2.2程序整体设计说明 (2)2.2.1设计思路 (3)2.2.2数据结构设计及用法说明 (3)2.2.3程序结构(流程图) (4)2.2.4各模块的功能及程序说明 (6)2.2.5程序结果 (7)2.3程序源代码及注释 (10)参考资料 (16)第1章课程设计的目的与要求1.1 课程设计目的本课程设计是计算机科学与技术专业重要的实践性环节之一,是在学生学习完《程序设计语言(C)》课程后进行的一次全面的综合练习。
本课程设计的目的和任务:1. 巩固和加深学生对C语言课程的基本知识的理解和掌握2. 掌握C语言编程和程序调试的基本技能3. 利用C语言进行基本的软件设计4. 掌握书写程序设计说明文档的能力5. 提高运用C语言解决实际问题的能力1.2 课程设计的实验环境硬件要求能运行Windows 2000/XP操作系统的微机系统。
一、实验目的通过设计一个ATM机模拟操作的程序,全面运用课程的主要知识点,巩固对模块化程序设计、文件操作的理解,提高软件编程能力。
二、实验要求要求每人独立完成设计,编写一个ATM机模拟操作程序。
提交实验报告、源程序、程序运行截图。
1.程序具有以下功能:1)登录系统:输入卡号(16位)、密码(6位),只有卡号、密码同时正确(帐户信息存放在文件中)才能进入系统;2)操作功能:●查询:查询帐户的存款余额。
按任意键返回主菜单;●修改密码:连续输入两次新密码(两次输入结果完全相同)后,新密码取代旧密码,并存放到帐户信息文件中。
之后可返回主菜单;●取款:输入50或100的倍数模拟为取款金额,请注意:取款金额不得超过帐户余额,操作后帐户余额应相应减少。
之后可返回主菜单;●存款:输入50或100的倍数模拟为存款金额,现假设存款金额不得超过20000元,操作后帐户余额应相应增加。
之后可返回主菜单;●转帐:先输入一个帐户号(已保存在帐户信息文件中),然后显示一部分用户名(如:张*山),储户确认无误后,再输入50或100的倍数模拟为转帐金额,请注意:转帐金额不得超过帐户余额,操作后帐户余额应相应减少。
之后可返回主菜单;●退出:退出系统。
2.定义如下结构体类型:●“日期”结构体Date:成员有:year(年)、month(月)、day(日);●“帐户”结构体Account:成员有:no(帐户号)、name(姓名)、balance(余额)●“存取款记录”结构体Record,:成员有:no(帐户号)、date(日期)、number(数量,可正可负,正表示存款,负表示取款)3.帐户信息存放在accounts.txt文件,储户存取款记录保存在records.txt中;4.采用模块化程序设计方法来实现,即main()显示主菜单、调用相关函数实现相应功能,起主控作用。
5.附加功能:●储户一天内输错密码的次数不能超过3次,否则无法进入系统;●应避免输入存款金额、取款金额为负数等异常情况的出现。
c atm机课程设计一、课程目标知识目标:1. 让学生理解ATM机的基本概念、功能和工作原理;2. 掌握ATM机操作流程,包括开户、查询、取款、存款、转账等基本操作;3. 了解ATM机在现实生活中的应用及其对银行业务的影响。
技能目标:1. 培养学生运用ATM机进行自主银行业务处理的能力;2. 提高学生分析、解决问题的能力,学会在ATM机操作过程中遇到问题的应对方法;3. 培养学生的团队协作能力,学会在小组讨论中分享观点、互相学习。
情感态度价值观目标:1. 培养学生对金融知识的兴趣,激发学习积极性;2. 培养学生遵守金融法律法规,树立正确的消费观念;3. 增强学生的网络安全意识,提高防范金融诈骗的能力。
课程性质:本课程属于实践性较强的学科,以理论知识为基础,结合实际操作,培养学生的实际应用能力。
学生特点:考虑到学生年级特点,课程设计应注重趣味性、实用性和操作性,以激发学生的学习兴趣。
教学要求:教师应注重理论与实践相结合,关注学生的学习过程,确保学生能够掌握ATM机的相关知识,并能够运用到实际操作中。
同时,注重培养学生的团队协作能力和情感态度价值观。
通过本课程的学习,使学生能够更好地理解和运用ATM机,为今后的生活带来便利。
二、教学内容1. 引入ATM机基本概念,介绍其发展历程和功能特点;2. 讲解ATM机的工作原理,包括硬件和软件两部分;3. 详细介绍ATM机的操作流程,包括开户、查询、取款、存款、转账等;4. 分析ATM机在使用过程中可能遇到的问题及解决方法;5. 探讨ATM机在现实生活中的应用及其对银行业务的影响;6. 结合实际案例,讲解网络安全知识和防范金融诈骗的方法;7. 进行ATM机操作模拟实践,培养学生的实际操作能力;8. 组织小组讨论,让学生分享学习心得,互相学习。
教学内容安排和进度:第一课时:引入ATM机基本概念,讲解其发展历程和功能特点;第二课时:介绍ATM机的工作原理;第三课时:详细讲解ATM机的操作流程;第四课时:分析ATM机在使用过程中可能遇到的问题及解决方法;第五课时:探讨ATM机在现实生活中的应用及其对银行业务的影响;第六课时:讲解网络安全知识和防范金融诈骗的方法;第七课时:进行ATM机操作模拟实践;第八课时:小组讨论,分享学习心得。
沈阳航空航天大学课程设计任务书学院:自动化学院专业:测控技术与仪器班级:04070101 学号:2010040701021 题目:自动存取款机模拟一、课程设计时间2011~12第1学期第4周,共计1周,20学时。
二、课程设计内容请你模仿自动存取款机系统,用C语言编写软件完成以下任务:1.登陆功能:某个用户输入账户名和密码,可以登陆ATM。
注意:应有多个用户,并把信息保存在文件中。
2.查询功能:登陆后,可以查询存款余额。
3.存款功能:登陆后,可以向账户中存款。
4.取款功能:登陆后,可以取款。
注意:取款金额不能超过存款金额。
提示:用户(账号、密码、存款余额、利率、开户银行)三、课程设计要求1.程序质量:✧贯彻结构化的程序设计思想。
✧用户界面友好,功能明确,操作方便。
✧用户界面中的菜单至少应包括、“数据输入”、“数据保存”、“信息查询”、“数据修改”、“退出”5项。
✧代码应适当缩进,并给出必要的注释,以增强程序的可读性。
2.课程设计说明书:课程结束后,上交课程设计说明书和源程序。
课程设计说明书的内容参见提供的模板。
四、指导教师和学生签字指导教师:学生签名:五、成绩六、教师评语目录一、需求分析 (1)二、设计分析 (2)三、主要界面截图 (4)四、技术要点 (5)五、个人总结 (8)六、参考文献 (8)七、源程序 (8)一、需求分析根据任务书给定的“课程设计内容”和“课程设计要求”作如下的需求分析。
该系统是一个较典型的银行存取款模拟系统,其使用者被假定为银行信用卡用户,系统应该具有安全、稳定、功能齐全的特点。
1. 安全性分析银行存取款机的数据涉及到取款机内储存的所有用户,数据量较大且对保密性的需求很高,所以要通过设置密码等手段确保数据不能被随意的删减和修改。
2. 稳定性分析指系统比较健壮,只要是用户的合理操作,系统都应给出合理正确的回应,而不是出现令用户感到意外的系统错误或系统崩溃。
3. 主要功能分析(1)账号及密码输入:允许用户输入账号、密码,对用户由于疏忽录入的非法数据,能够及时提示并更正。
《C#课程设计》结业报告学号:专业:姓名:任课教师:日期:2013年12月28日目录摘要 (3)1 系统分析 (3)1.1背景分析 (3)1.2系统功能 (4)1.3主要问题 (4)1.4开发工具与环境 (4)1.4.1开发工具 (5)1.4.2开发环境 (5)2 系统整体设计 (5)2.1设计思想 (5)2.1.1功能模块划分 (5)2.2数据库设计 (6)3 系统详细设计 (7)3.1系统总设计 (7)3.2 登陆界面设计 (8)3.3查询界面设计 (12)3.4存、取款界面设计 (14)3.5转账界面设计 (16)3.6修改密码界面设计 (17)心得体会 (19)模拟ATM取款机系统摘要本ATM系统的目的就是建立一个客户平台,用户使用此平台进行查询余额、存款、取款、转账、修改密码等业务办理。
相对于柜员操作一样的,不过ATM 系统有的功能有权限设置,一些功能只有银行柜员才能进行的业务办理。
ATM取款系统的针对的用户群是使用此软件系统的用户,用户做为系统的服务群体,可以使用数据库已有的账号与密码,登陆ATM系统。
当用户成功登陆后就可以根据用户的需求进行各项业务的办理,办理完所有的手续后,用户的输入的新资料以及办理的业务处理后的信息都会反馈到数据库并且都会存入到数据库中。
这样用户就完成了办理业务。
1 系统分析1.1背景分析随着信息时代科技的飞速发展,使用ATM取款机、计算机等技术的发展,不仅提高了工作效率,而且大大的提高了其安全性。
对于一些复杂的信息,就能够充分的发挥它们的优越性。
ATM柜员机就是技术发展的产物,相对的一台ATM柜员机与ATM系统是密不可分的。
本系统就是为了更方便人们的生活而设计的。
ATM系统作为一款数据传输的技术,用户信息和资金信息的繁杂,包含很多的数据的管理,以前的都是由一些柜员进行操作,而且手续很多。
对于ATM取款系统数据的统计和核实等都是采用卡号进行核对的,对于用户的信息资料、以及等用人工办理。
C语言程序设计报告(模拟ATM 取款机)仲恺农业工程学院工程实训报告ATM取款机课程名称C语言程序设计工程实训姓名林少烈院(系)计算机科学与工程学院专业班级计算机113班学号201110214317指导教师王成仲恺农业工程学院教务处制目录1 需求分析 (1)2 系统总框图和功能模块说明 (1)2.1 系统总框图 (1)2.2 功能模块说明 (1)3 系统设计 (2)3.1 主要结构体 (2)3.2主要功能函数 (3)3.3 关键函数的流程图 (3)4 系统调试 (11)5 总结 (21)6 源程序清单 (23)6.1头文件 (23)6.2主程序 (23)6.3 解除被冻结用户 (40)6.4 用户注册 (41)1 需求分析所设计的ATM取款机应具备以下功能:●插入银行卡(用账号输入的方式代替);●密码的输入;●用户信息查询;●用户余额查询;●取款;●转账;●修改密码;●退卡。
2 系统总框图和功能模块说明2.1 系统总框图图1 系统总框图2.2 功能模块说明输入用户账号模块:在运行时,完成用户账号的输入(代替插卡);输入账号密码模块:①在输入账号之后,完成用户密码的输入;②在修改密码的过程中,完成用户输入旧密码的功能;信息读取功能模块:完成用户信息的读取;冻结账号功能模块:当输入密码3次错误时,冻结用户账号:查询用户信息模块:完成用户的信息查询(不包括余额查询);查询余额功能模块:完成用户余额的查询;取款功能模块:完成取款功能模块:转账功能模块:完成转职功能;修改密码功能模块:完成用户修改密码功能;退卡功能模块:完成退卡功能(即:退出程序功能)。
3 系统设计3.1 主要结构体用户账号、姓名、密码、余额struct User //用户数据{char num[20]; //用户账号char name[10]; //姓名char password[7]; //密码float balance; //余额};3.2主要功能函数void read_info(); //用户信息读取void input_num(char * num); //输入账号void now_exist(char * num); //判断是否被冻结或不存在void existed(char * num);void input_password(char * p_word,char * W); //输入密码void face(); //界面显示void balance_refer(); //余额查询void choose(int c); //菜单选择void draw_money(); //取款void set_password(); //修改密码void input_new_password(char * old_password); //设置新密码void tran_account(); //转账void stamp(); //打印单条void info_refer(); //信息查询void out(); //退出程序void lock(); //冻结账号void save_info(); //存储信息3.3 关键函数的流程图Nnow_exitedinput_password 流choose 函数流程图draw_money 函数input_new_passwo 读取文件数lock 函数流程图save_info 函数流程图4 系统调试首先运行程序,系统提示输入账号。
附:课程设计报告格式《C++面向对象程序设计》课程设计报告题目:银行ATM自动取款机系统专业:软件工程班级: 1001学号: **********姓名:***指导教师:完成日期:2012 年 6月12日《C++面向对象程序设计》课程设计一、课程设计的目的1、培养学生面向对象编程的思想;2、使学生熟悉C++语言的使用;3、培养学生C++编程的思想和方法;4、使学生掌握C++编程调试的基本技能;5、培养学生分析、解决问题的能力。
二、课程设计内容与要求1、内容一:模拟实现银行ATM自动取款机系统。
系统至少包括以下几方面的功能:(1)修改密码功能;(2)余额查询功能;(3)取款功能;(4)转账功能。
三、系统中所使用的数据对象及说明1、用户类Consumer类属性属性名称类型描述Accnumber long 用户账号conname string 用户名字Balance double 余额password long 密码方法方法名称功能login() 登入系统Query() 查询用户信息transfer() 转账withdraw() 取款update() 修改密码2、取款机类ATM 属性属性名称类型描述无无无方法方法名称功能menu() 菜单:显示ATM的功能4、各个类之间的关系在ATM类中声明Consumer类的对象c,ATM类中再通过c调用Consumer类中的成员函数。
四、系统功能结构及相关算法描述1、系统功能结构2、相关算法流程图(1)登入系统流程(2)、转账流程图:(3)、更改密码流程图:(4)、取款流程图:三、程序源码#include<iostream>#include<string>using namespace std;class Consumer //定义用户Consumer类{private:long Accnumber;string conname;double Balance;long password;public:Consumer();//声明无参构造函数void login();//声明登入函数int Query();//声明查询函数int transfer();//声明转账函数int withdraw();//声明取款函数int update();//声明修改密码函数};Consumer::Consumer()//定义无参构造函数{Accnumber=1030070128;conname="林杰东";Balance=10000;password=123456;}void Consumer::login()//定义登入函数{long password0;int i=0;cout<<"**********欢迎登入林杰东银行**********"<<endl;cout<<endl;cout<<endl;cout<<endl;cout<<"请输入您的6位密码(错误输入不得超过3次):";cout<<endl;cout<<endl;cout<<endl;cout<<endl;cout<<"**********欢迎登入林杰东银行**********"<<endl;while(i<3){cout<<"密码:";cin>>password0;i++;if(password0!=password){cout<<"对不起,您的输入有误,请重新输入"<<endl;if(i==3){cout<<"您的错误输入已满3次,请取出您的银行卡,以免被锁住"<<endl;login();break;}}else{cout<<"登入成功"<<endl;break;}}}int Consumer::Query()//定义查询函数{cout<<"您的用户名:";cout<<conname<<endl;cout<<"您的账号:";cout<<Accnumber<<endl;cout<<"您的当前余额:";cout<<Balance<<endl;cout<<"密码:";cout<<password<<endl;return 1;}int Consumer::transfer()//定义转账函数{long Accnumber1,Accnumber2;double money;cout<<"请输入您要转入的账号:";cin>>Accnumber1;if(Accnumber1==Accnumber){cout<<"对不起,您要转入的账号是当前银行卡的账号,无法转账请重新输入其他账号"<<endl;return transfer();}else{cout<<"请重新输入您要转入的账号:";cin>>Accnumber2;if(Accnumber1==Accnumber2 ){cout<<"请输入您要转账的金额:";cin>>money;cout<<endl;if(Balance>=money){Balance=Balance-money;cout<<"转账成功"<<endl;cout<<"您的当前余额:";return Balance;}else{cout<<"对不起,您当前余额不足,请重新转账"<<endl;return transfer();}}else{cout<<"您两次输入的账号有误,请重新输入"<<endl;return transfer();}}}int Consumer::update()//定义更改密码函数{long password1;long password2;long password3;cout<<"请输入您的6位原密码:";cin>>password1;if(password1!=password){cout<<"对不起,您的输入有误,请重新输入"<<endl;return update();}else{cout<<"请输入您的6位新密码:";cin>>password2;cout<<"请重新输入您的6位新密码:";cin>>password3;if(password2==password3){password=password3;cout<<"恭喜您,您的密码修改成功"<<endl;cout<<"您的新密码:";return password;}else{cout<<"对不起,您的两次输入有误,请重新输入"<<endl;return update();}}}int Consumer::withdraw()//定义取款函数{double number;cout<<"输入要取的钱数:";cin>>number;if(Balance<number){cout<<"你的账号余额不足"<<number<<"."<<endl;cout<<"取款失败!"<<endl;return withdraw();}else{cout<<"取款成功"<<endl;Balance=Balance-number;cout<<"您的当前账号余额为:";return Balance;}}class ATM //定义取款机A TM类{public:Consumer c ;//声明用户Consumer类的对象cint menu();//声明菜单函数};int A TM::menu()//定义菜单函数{c.login();int choice=0;while(choice!=5){cout<<"**********欢迎登入林杰东银行**********"<<endl;cout<<"1.查询"<<endl;cout<<"2.转账"<<endl;cout<<"3.修改密码"<<endl;cout<<"4.取款"<<endl;cout<<"0.退出系统"<<endl;cout<<"**********欢迎登入林杰东银行**********"<<endl;cout<<"请输入您的选择:";cin>>choice;switch(choice){case 1:cout<<c.Query()<<endl;break;case 2:cout<<c.transfer()<<endl;break;case 3:cout<<c.update()<<endl;break;case 4:cout<<c.withdraw()<<endl;break;case 0:cout<<"请取出您的银行卡,欢迎下次再使用"<<endl;return 0;break;default:cout <<"输入错误!请重新输入!\n\n";break;}}return 1;}int main(){ATM atm;atm.menu();return 0;}四、系统运行结果(截图)1、登入ATM银行系统2、主菜单3、查询4、转账5、修改密码6、取款7、退出系统五、课程设计总结通过本次实验我了解了面向对象编程的思想;熟悉C++语言的使用;掌握了C++编程的思想和方法;掌握C++编程调试的基本技能;学会了分析、解决问题的能力。
C++课程设计******************************* 课题:简单银行系统模拟ATM系别:计科系专业年级:XXXXXX学号:XXXXX姓名:XXXX一、设计任务分析根据课程设计要求及个人具体情况,分析如下:系统具有注册开户、用户登录、退出功能。
注册开户中有身份证号码、姓名、地址、电话号码、货币类型、预存金额。
用户登录中,用户登录成功后,才能享受取款、存款、修改密码等服务。
二、类(对象)设计据上得,设计类AccountItem和Accountbook。
其类图如下:三、流程图四、源代码#include <string>#include <iostream>#include <fstream>using namespace std;class AccountItem{private:string m_Anumber;string m_Password;string m_Name;double m_Balance;string m_Adress;string m_ID;string m_TEL;string m_Currency;public: AccountItem(AccountItem &a){m_Anumber=a.m_Anumber;m_Password=a.m_Password;m_Name=a.m_Name;m_Balance=a.m_Balance;m_Currency=a.m_Currency;m_TEL=a.m_TEL;m_ID=a.m_ID;m_Adress=a.m_Adress;}AccountItem&operator=(AccountItem &a){m_Anumber=a.m_Anumber;m_Password=a.m_Password;m_Name=a.m_Name;m_Balance=a.m_Balance;m_Currency=a.m_Currency;m_TEL=a.m_TEL;m_ID=a.m_ID;m_Adress=a.m_Adress;return *this;}void SetAccountItem(stringnumber,string password,stringname,double balance,string Currency,string TEL,string ID,stringAdress);AccountItem(); AccountItem(string number,stringpassword,string name,doublebalance,string Currency,stringTEL,string ID,string Adress);void Display();void write(ofstream &out);void read(ifstream& cin);int CheckNumber(string Anumber);string GetNumber();string GetPassword();void UpdatePassword(stringpassword);void DeductBalance(double pay); void StoreBalance(double money);double GetBalance();string GetName();int IsNull();};void AccountItem::SetAccountItem(string number,string password,stringname,double balance,string Currency,string TEL,string ID,stringAdress){m_Anumber=number;m_Password=password;m_Name=name;m_Balance=balance;m_Currency=Currency;m_TEL=TEL;m_ID=ID;m_Adress=Adress;}void AccountItem::UpdatePassword(stringpassword){m_Password=password;}void AccountItem::StoreBalance(doublemoney){m_Balance=m_Balance+money;}int AccountItem::CheckNumber(stringAnumber){if(m_Anumber==Anumber){return 1;}else{return 0;}}string AccountItem::GetNumber(){return m_Anumber;}string AccountItem::GetPassword(){return m_Password;}voidAccountItem::DeductBalance(doublepay){m_Balance=m_Balance-pay;}double AccountItem::GetBalance(){return m_Balance;}string AccountItem::GetName(){return m_Name;}int AccountItem::IsNull(){if(m_Anumber=="")return 1;return 0;}void AccountItem::read(ifstream& cin){cin>>m_ID;cin>>m_Name;cin>>m_Adress;cin>>m_TEL;cin>>m_Currency;cin>>m_Balance;cin>>m_Anumber;cin>>m_Password;}void AccountItem::write(ofstream&cout){cout<<m_ID<<endl;cout<<m_Name<<endl;cout<<m_Adress<<endl;cout<<m_TEL<<endl;cout<<m_Currency<<endl;cout<<m_Balance<<endl;cout<<m_Anumber<<endl;cout<<m_Password<<endl;}AccountItem::AccountItem(){m_Anumber="";m_Password="";m_Name="";m_Balance=0;m_Currency="";m_TEL="";m_ID="";m_Adress="";} AccountItem::AccountItem(stringnumber,string password,stringname,double balance,string Currency,string TEL,string ID,stringAdress){m_Anumber=number;m_Password=password;m_Name=name;m_Balance=balance;m_Currency=Currency;m_TEL=TEL;m_ID=ID;m_Adress=Adress;}void AccountItem::Display(){cout<<"账号:";cout<<m_Anumber<<endl;cout<<"密码:";cout<<m_Password<<endl;cout<<"姓名:";cout<<m_Name<<endl;cout<<"存款余额:"; cout<<m_Balance<<endl;}class Accountbook{private:AccountItem b[100];int m_AccountCount;public:void SetAccountbook();Accountbook();void LoadAccountbook();void StoreAccountbook();AccountItem FindItem(stringnumber);bool UpdateItem(AccountItemItem);};void Accountbook::SetAccountbook(){string AccountNo;string AccountPassword;string ItemName;double Balance;string Currency;string TEL;string ID;string Adress;string password1,password2; ofstream Output("accountbook.txt");cout<<"请输入帐号:";cin>>AccountNo;cout<<"请输入密码:";while(1){cin>>password1;cout<<"请输入确认密码:"<<endl;cin>>password2;if(password1==password2){ AccountPassword=password1;break;}else{cout<<"密码和确认密码不同!"<<"请重新输入:"<<endl;}}cout<<"请输入姓名:";cin>>ItemName;cout<<"请输入身份证号:";cin>>ID;cout<<"请输入家庭住址:";cin>>Adress;cout<<"请输入电话号码:";cin>>TEL;int i;while(1){cout<<"请选择货币种类:"<<endl;cout<<"1.人民币2.美元"<<endl;cin>>i;if(i==1){Currency="人民币";cout<<"请输入预存款:";cin>>Balance;break;}else if(i==2){Currency="美元";cout<<"请输入预存款:";cin>>Balance;Balance=Balance*8;break;}else {cout<<"选择类型错误!"<<endl;continue;}}b[m_AccountCount].SetAccountItem (AccountNo,AccountPassword,ItemNa me,Balance, Currency,TEL,ID,Adress);m_AccountCount++;for(intj=0;j<m_AccountCount;j++){b[j].write(Output);}}Accountbook::Accountbook(){m_AccountCount=0;}void Accountbook::LoadAccountbook( ){ifstream Input("accountbook.txt");int j=0;while(Input){b[j].read(Input);j++;}Input.close();m_AccountCount=j;return;}AccountItem Accountbook::FindItem(string number){int i;bool Found=false;for(i=0;i<m_AccountCount;i++){if(b[i].GetNumber()==number){Found=true;break;}}if(Found==true){return b[i];}else{return AccountItem();}}bool Accountbook::UpdateItem(AccountItem Item){string no=Item.GetNumber();int i;bool flag=false;for(i=0;i<m_AccountCount;i++){if(b[i].GetNumber()==no){flag=true;break;}}if(flag=true){b[i]=Item;}return flag;}void Accountbook::StoreAccountbook(){ofstream Output("accountbook.txt");int k;for(k=0;k<m_AccountCount;k++){b[k].write(Output);}Output.close();return;}class Massage{private: Accountbook MyAccountbook;AccountItem FindItem;public:Massage(){}void MakeMassage();};void Massage::MakeMassage(){ifstream Input("accountbook.txt");int n;string AccountNo;string AccountPassword;double AccountPay;string ItemName;double Balance;string TransactionCode;cout<<endl;do{cout<<" ※※※※※※※※※※※※※※※※※※※※※※※※※※※\n"<<" ※※\n"<<" ※欢迎使用银行管理系统模拟ATM机※\n"<<" ※※\n"<<" ※请用户在使用前选择开户:※\n"<<" ※1:注册开户※\n"<<" ※2:用户登录※\n"<<" ※0:退出※\n"<<" ※※\n"<<" ※※\n"<<" ※※※※※※※※※※※※※※※※※※※※※※※※※※※\n"<<endl;cout<<"请选择:"<<endl;cin>>n;switch(n){case 1: MyAccountbook.SetAccountbook();break;case 2: MyAccountbook.LoadAccountbook();cout<<"请输入帐号:";cin>>AccountNo; FindItem=MyAccountbook.FindItem(AccountNo);if(FindItem.IsNull()){cout<<"此用户不存在!"<<endl;return;}cout<<"请输入密码:";cin>>AccountPassword;if(FindItem.GetPassword()!=AccountPassword){cout<<"密码错误!"<<endl;return;}int m;do{cout<<"1:取款\n"<<"2:存款\n"<<"3:查询余额\n"<<"4:修改密码\n"<<"0:退出\n"<<endl;cin>>m;switch(m){case 2:cout<<"请输入存款金额(RMB):";cin>>AccountPay; FindItem.StoreBalance(AccountPay); MyAccountbook.UpdateItem(FindItem);MyAccountbook.StoreAccountbook();break;case 1:cout<<"请输入取款金额:";cin>>AccountPay; FindItem.DeductBalance(AccountPay); MyAccountbook.UpdateItem(FindItem);MyAccountbook.StoreAccountbook();cout<<"请取钱!"<<endl;break;case 4:cout<<"请输入原密码:"<<endl;cin>>AccountPassword; if(FindItem.GetPassword()==AccountPassword){cout<<"请输入新密码:"<<endl;cin>>AccountPassword; FindItem.UpdatePassword(AccountPassword);cout<<"请确认新密码:"<<endl;cin>>AccountPassword; if(FindItem.GetPassword()==AccountPassword){cout<<"修改成功!"<<endl;MyAccountbook.UpdateItem(FindItem); MyAccountbook.StoreAccountbook();}}break;case 3:cout<<"余额是:"<<FindItem.GetBalance()<<"人民币"<<endl;break;}}while(m!=0);case 0:break;}}while(n!=0);return;}int main(){Massage d;d.MakeMassage();return 0;}五、测试情况1.首页:2.注册用户:3.用户登录:4.取款:5.存款:6.查询余额:7.修改密码:8.退出:六、小结1.系统未能实现账户类型相关的系列操作、系统安全性较低,对此感到较为遗憾。