版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、滨江学院 面向对象程序设计课程设计题 目 模拟ATM机存取款管理系统院 系 计算机系 专 业 计算机科学与技术 学生姓名 学 号 指导教师 二一六 年 十二 月 二十日目 录1前言1.1选题目的及意义2系统分析2.1需求分析2.2功能要求2.3软硬件环境3系统概要设计 3.1系统总体架构设计4系统详细设计 4.1管理模块4.2类的定义5系统实现 5.1类的实现 5.2主要程序实现6系统测试7.收获及体会8.参考文献9.附录1前言1.1选题目的及意义 总结及运用一学期来所学的知识,训练我们灵活应用所学C+知识,应用到继承、抽象类、虚函数、虚基类、多态和文件的输入/输出。能够巩固、深化理论知识,提
2、高编程水平、分析问题、解决问题的能力。1.2研究内容 模拟银行的自动取款机使用过程中的界面和用户交互过程。实现查询银行卡余额、取款、修改密码、退出系统等功能2.系统分析2.1需求分析人们的金融意识、科技意识己经有了很大的提高,在紧张忙碌的生活中,己越来越来不习惯每月奔忙于各银行营业柜台之问去排队缴各种各样的费用了;同时,各种经营单位如电信、移动、供电、煤气、自来水、证券等等一是为了提高服务质量、方便客户,二是为了减轻自己日趋繁重的工作量,纷纷委托银行为其开展代收代付业务。银行每天要处理大量的存取款事件,做好存取款是银行工作重要的环节,然而要有效处理必须要有良好的程序和数据管理系统来建立一个良好
3、的软件系统来实现快速、有效、准确、安全的处理银行事物。2.2功能要求(1)卡号、密码输入最多三次,否则直接退出系统。(2)取款功能:取款金额受卡余额、机单笔最大取款金额及机当前剩余金额的限制。(3)查询功能:实现查询余额功能。(4)更改密码:实现密码更改功能,对于密码要有2次验证。(5)锁卡功能:实现卡被锁的功能。(6)退卡功能:实现退出系统功能。 2.3软硬件环境 环境:Visual c+ 6.0 硬件:lenovo idea-pad3系统概要设计3.1系统整体架构设计 系统总体框架银行管理系统存钱页面取款页面余额页面修改密码注销页面登录界面注册开户主界页面注销退出4系统
4、详细设计4.1管理模块 (1)登录页面输入卡号和密码,根据用户输入的卡号和密码,到后台文件查询,若正确则登录成功,并保存卡好信息已备后用。若卡号存在和密码不匹配或无该卡号已经注销,提示该卡号已存在或已注销,保持界面三次不变等待用户的重新输入。(2)主界面页面主要导航栏有:欢迎使用储蓄卡管理(存款、取款、修改密码、转账功能、注销退出) (3)储蓄卡开户页面提供开户界面,由用户输入新储蓄卡的所有信息,将该信息保存到文件中,并将开户金额作为该卡的第一次存款记录存人文件。(4)存钱页面从登录界面得到卡号,并提供数据输入界面,等待用户的输入存款金额。从后台数据库中找到该用户余额记录,修改余额,并将该存款
5、事件的相应信息写人数据库,同时将存钱的金额显示在页面上。(5)取款页面从登录界面得到卡号,并提供数据输入界面,等待用户输入取款金额,如果取款金额大于该用户卡上的余额则不能取款,或者将新的余额写人文件,并将本次取款事件写入文件同时将取钱的金额显示在页面上,。(6)注销页面从关闭文件,状态为注销,最后关闭整个系统。4.2类的定义 (1)comsumer 类class comsumer 主要制定用户的成员数据,并进行登录与保存功能:comsumer 类说明表名称属性说明ID数据成员用户账户数据name数据成员用户姓名money数据成员用户首次金额in数据成员用户身份证号address数据成员用户地址
6、number数据成员用户电话Passwd数据成员用户密码savemoney()成员方法存钱fetchmoney ()成员方法取钱change_passwd()成员方法修改密码get_money()成员方法卡卡转账(2)YH 类YH 类 主要实现用户的各种功能:YH 类说明表名称属性说明acnum数据成员账户数set_account ()成员方法开户功能del_account ()成员方法注销账户功能transfer ()成员方法转账功能functionshow()成员方法主界面显示功能addmoney()成员方法存钱功能exitYH()成员方法退出系统功能5.系统实现5.1类的实现(1)con
7、sumer类class consumer:public YH/用户类,继承银行类的属性public: friend class YH; consumer(int id,string Name,int Number,double IN,string Company,string Address,string PassWord,float m) ID=id;name=Name;number=Number;in=IN;company=Company;address=Address;money=m;passwd=PassWord; consumer()ID=0;name='0'numb
8、er=0;in=0;company='0'address='0'money=0;passwd='0' int get_id()return ID; void savemoney();/ 取钱 string get_passwd()return passwd;/ 取得密码 void display(); void fetchmoney(); /取钱 void change_passwd(); void add_money(float);/计算余额 void dec_money(float);/计算余额 float get_money();/卡卡转帐
9、private: int ID; /开户帐号 string passwd; / 用户密码 string name; / 用户姓名 float money; /开户金额int number;string company;string address;double in;(2)银行类:class YH /银行类public:void set_account();/银行开户功能void del_account(); /注销账户功能void transfer(int); /转账功能void enter_account(); /进入用户个人信息功能void addmoney(int,float);/存款
10、功能void exitYH();/ 退出系统void functionshow();void save();void load();/ 功能界面protected: consumer *account20; static int acnum;/账户数5.2主要程序实现(1)读入用户信息功能实现:void YH:load()ifstream infile("bankdat.dat",ios:in);/以输入方式打开文件if(!infile)cerr<<"读取错误,无资料中!"<<endl;return;int n=0;int id,
11、m;string nam,passw;int number;string company;string address;double in;infile>>acnum;for(n=0;n<acnum;n+)/全部读入infile>>id;/从磁盘文件bankdat.dat读入信息infile>>m;infile>>nam;infile>>passw;infile>>company;infile>>number;infile>>address;infile>>in;accountn-
12、>passwd;consumer * acc = new consumer(id,nam,number,in,company,address,passw,m); /每读入一个n开辟一段内存accountn = acc; /赋值首地址infile.close();cout<<"读取资料正常!"<<endl;(2)转账功能实现:void YH:transfer(int x)int id; cout<<"请输入帐号:" cin>>id; int flag = 1; int i = 0; while(i<
13、;acnum)&&(flag) /查找要转入的账号 if(id=accounti->get_id() flag = 0; else i+; if(flag) cout<<"帐号不存在!"<<endl<<endl; return ; float b; cout<<endl<<"请输入你要转帐的金额:" cin>>b; while(b<=0) cout<<"请输入正确的数字!"<<endl;cout<<&
14、quot;"cin>>b; if(accountx->get_money()<b) /调用友元类consumer的公有成员函数cout<<"对不起,金额不够!"<<endl; else accountx->dec_money(b);accounti->add_money(b);cout<<"转账成功!"<<endl;return;(3)账户金额计算实现:void consumer:add_money(float x)money=x+money;void cons
15、umer:dec_money(float x)money=money-x;void YH:addmoney(int x,float y)accountx->money=accountx->money-y;float consumer:get_money()return money;void main()YH yh;yh.functionshow();(4)主界面显示void YH:functionshow() int n;dosystem("cls"); load();cout<<endl<<"请输入相应的操作序号进行操作:&q
16、uot;<<endl;cout<<""<<endl;cout<<" "<<endl;cout<<" 1. 开户 "<<endl;cout<<" "<<endl;cout<<" 2.账户登录 "<<endl;cout<<" "<<endl;cout<<" 3.账户注销 "<<end
17、l;cout<<" "<<endl;cout<<" 4.退出系统 "<<endl;cout<<" "<<endl;cout<<""<<endl;cout<<""cin>>n; while(n<1|n>4) cout<<"操作错误,请输入正确的操作序号!"<<endl; cout<<"" ci
18、n>>n; switch(n) case 1: set_account();/开户 break; case 2:enter_account();/登录break; case 3: del_account();/注销 break; case 4: exitYH();/退出 break; cin.get();/输入流类istream的成员函数while(true);void YH:enter_account()int id; cout<<"请输入帐号:" cin>>id; int flag = 1; int i = 0; /_page_bre
19、ak_while(i<acnum)&&(flag) /循环查找 if(id=accounti->get_id() flag = 0; else i+; if(flag) cout<<"帐号不存在!"<<endl; return; cout<<"请输入密码:"string passw;cin>>passw;if(passw!=accounti->get_passwd() return;/返回到登录界面accounti->display();cin.get();cin.g
20、et();int n;dosystem("cls"); cout<<"请选择下列操作:"<<endl;cout<<""<<endl;cout<<" "<<endl;cout<<" 1.查看账户信息 "<<endl;cout<<" "<<endl;cout<<" 2.取款 "<<endl;cout<<&q
21、uot; "<<endl;cout<<" 3.存款 "<<endl;cout<<" "<<endl;cout<<" 4.修改密码 "<<endl;cout<<" "<<endl;cout<<" 5.转账 "<<endl;cout<<" "<<endl;cout<<" 6.返回上一菜单 &qu
22、ot;<<endl;cout<<" "<<endl;cout<<""<<endl;cout<<""cin>>n;(5)添加/删除账户功能实现:switch(n)case 1: accounti->display();break;case 2: accounti->fetchmoney();save();break;/从2-5功能,每执行一次调用一次save函数,重新写入数据case 3:accounti->savemoney();sa
23、ve();break;case 4:accounti->change_passwd();save();break;case 5:transfer(i);save();break;case 6:return;cin.get();cin.get();while(1);void YH:set_account() int id; string nam; string passw; float m;string company;string address;int number;double in; cout<<"请输入开户号:"<<endl; cin&
24、gt;>id; cout<<"请输入开户人姓名:"<<endl; cin>>nam; cout<<"请输入开户密码:"<<endl; cin>>passw; cout<<"请输入存入金额:"<<endl; cin>>m;cout<<"请输入开户人电话:"<<endl; cin>>number;cout<<"请输入开户人公司:"<&
25、lt;endl;cin>>company;cout<<"请输入开户人地址:"<<endl;cin>>address;cout<<"请输入开户人身份证号码:"<<endl;cin>>in; while(m<=0) cout<<"请输入正确的数字!"<<endl;cin>>m; consumer * acc = new consumer(id,nam,number,in,company,address,passw,
26、m); accountacnum = acc; cout<<"开户成功!"<<endl<<endl; acnum+;save();cin.get();return;void YH:del_account() int id; cout<<endl<<"请输入你要注销的帐户号:" cin>>id;int flag = 1; int i = 0; while(i<acnum)&&(flag) /循环查找 if(id = accounti->get_id() fl
27、ag = 0; else i+; if(flag) cout<<"该帐号不存在,请重新输入!"<<endl; return; /返回到登陆界面 for(int j=i;j<acnum;j+) /所有被删号后的数据重新存储 accountj = accountj+1; accountacnum-1=NULL; acnum-; /账号总数自减一次cout<<"你的账号已注销!"<<endl<<endl; save();cin.get();return; (6)修改密码实现:void consu
28、mer:change_passwd()string pwd,repwd;cout<<"请输入新密码:"cin>>pwd;cout<<"请再输入一次新密码:"cin>>repwd;if(pwd!=repwd)cout<<"你输入的两次密码不一样,按输入键返回上一层菜单!"<<endl;elsecout<<"密码修改成功,请牢记!"<<endl;cin.get(); (7)取/存款实现:void consumer:fetch
29、money()float m;char ch;docout<<endl<<"输入取款金额:"<<"¥>"<<endl ; cin>>m; while(m<=0) cout<<"请输入正确的数字!"<<endl;cout<<""cin>>m; if(money<m)cout<<"对不起,你的余额不足!"<<endl; else money=money
30、-m; cout<<endl<<"操作成功,请收好钱!"<<endl; cout<<"是否要继续该项操作:(Y/N) "<<endl;cout<<""cin>>ch;while(ch!='n'&&ch!='N'&&ch!='Y'&&ch!='y')/选择错误时判定cout<<""cin>>ch;wh
31、ile(ch='y'|ch='Y');void consumer:savemoney()/存钱函数功能实现 float c; char ch;docout<<endl<<"请输入要存入的金额:"<<"¥>"<<endl ; cin>>c; while(c<=0) cout<<"输入错误,请重新输入!"<<endl;cout<<""cin>>c; money=mone
32、y+c; cout<<"操作已成功!"<<endl;cout<<"是否要继续该项操作:(Y/N) "<<endl;cout<<""cin>>ch;while(ch!='n'&&ch!='N'&&ch!='Y'&&ch!='y')cout<<""cin>>ch;while(ch='y'|ch=
33、39;Y');int YH:acnum=0;(8)用户信息显示:void consumer:display()/用户信息界面system("cls"); cout<<"#"<<endl;cout<<"#"<<endl;cout<<"# 用户姓名:"<<name<<endl;cout<<"#"<<endl;cout<<"# 帐号:"<<ID
34、<<endl;cout<<"#"<<endl;cout<<"# 余额: "<<money<<endl;cout<<"#"<<endl;cout<<"# 按输入键回到上一菜单"<<endl;cout<<"#"<<endl;cout<<"#"<<endl;cout<<""6系统测试6
35、.1首页6.2开户页面6.3储蓄卡管理页面6.4存/取款页面6.5密码修改页面6.6转账页面6.7查询用户信息页面6.8销户页面7收获及体会这次课程设计收获了好多,通过这次课设,又进一步巩固了课本上的知识,更加熟练的使用到继承、抽象类、虚函数、虚基类、多态和文件的输入/输出这些功能,提高了自己编程水平、分析问题、解决问题的能力。8.参考文献1高俊文。c/c+程序设计 。北京:人民邮电出版社,2005 2谭浩强。C+程序设计。北京:清华大学出版社,2004 9.附录源程序:#include<iostream>#include <string>
36、#include<fstream>using namespace std;class consumer;class YH /银行类public:void set_account();/银行开户功能void del_account(); /注销账户功能void transfer(int); /转账功能void enter_account(); /进入用户个人信息功能void addmoney(int,float);/存款功能void exitYH();/ 退出系统void functionshow();void save();void load();/ 功能界面protected:
37、consumer *account20; static int acnum;/账户数;class consumer:public YH/用户类,继承银行类的属性public: friend class YH; consumer(int id,string Name,int Number,double IN,string Company,string Address,string PassWord,float m) ID=id;name=Name;number=Number;in=IN;company=Company;address=Address;money=m;passwd=PassWord
38、; consumer()ID=0;name='0'number=0;in=0;company='0'address='0'money=0;passwd='0' int get_id()return ID; void savemoney();/ 取钱 string get_passwd()return passwd;/ 取得密码 void display(); void fetchmoney(); /取钱 void change_passwd(); void add_money(float);/计算余额 void dec_money
39、(float);/计算余额 float get_money();/卡卡转帐private: int ID; /开户帐号 string passwd; / 用户密码 string name; / 用户姓名 float money; /开户金额int number;string company;string address;double in;void YH:save()ofstream ofile("bankdat.dat",ios:out);/以输出方式打开文件 ofstream outfile("bankdat.dat",ios:out);/以输出方式
40、打开文件 bankdat.dat接收从内存输出的数据int n=0;outfile<<acnum<<" "for(n=0;n<acnum;n+)outfile<<accountn->ID<<" "/把信息写入磁盘文件bankdat.datoutfile<<accountn->money<<" "outfile<<accountn->name<<" "outfile<<accountn-
41、>passwd<<" "outfile<<accountn->number<<" "outfile<<accountn->company<<" "outfile<<accountn->address<<" "outfile<<accountn->in<<" "outfile.close(); /*读入用户信息功能实现*/void YH:load()ifstre
42、am infile("bankdat.dat",ios:in);/以输入方式打开文件if(!infile)cerr<<"读取错误,无资料中!"<<endl;return;int n=0;int id,m;string nam,passw;int number;string company;string address;double in;infile>>acnum;for(n=0;n<acnum;n+)/全部读入infile>>id;/从磁盘文件bankdat.dat读入信息infile>>
43、;m;infile>>nam;infile>>passw;infile>>company;infile>>number;infile>>address;infile>>in;accountn->passwd;consumer * acc = new consumer(id,nam,number,in,company,address,passw,m); /每读入一个n开辟一段内存accountn = acc; /赋值首地址infile.close();cout<<"读取资料正常!"<
44、;<endl;/*转账功能实现*/void YH:transfer(int x)int id; cout<<"请输入帐号:" cin>>id; int flag = 1; int i = 0; while(i<acnum)&&(flag) /查找要转入的账号 if(id=accounti->get_id() flag = 0; else i+; if(flag) cout<<"帐号不存在!"<<endl<<endl; return ; float b; cout
45、<<endl<<"请输入你要转帐的金额:" cin>>b; while(b<=0) cout<<"请输入正确的数字!"<<endl;cout<<""cin>>b; if(accountx->get_money()<b) /调用友元类consumer的公有成员函数cout<<"对不起,金额不够!"<<endl; else accountx->dec_money(b);accounti-&
46、gt;add_money(b);cout<<"转账成功!"<<endl;return;/*账户金额计算*/void consumer:add_money(float x)money=x+money;void consumer:dec_money(float x)money=money-x;void YH:addmoney(int x,float y)accountx->money=accountx->money-y;float consumer:get_money()return money;void main()YH yh;yh.fun
47、ctionshow();/*主界面显示*/void YH:functionshow() int n;dosystem("cls"); load();cout<<endl<<"请输入相应的操作序号进行操作:"<<endl;cout<<""<<endl;cout<<" "<<endl;cout<<" 1. 开户 "<<endl;cout<<" "<<
48、endl;cout<<" 2.账户登录 "<<endl;cout<<" "<<endl;cout<<" 3.账户注销 "<<endl;cout<<" "<<endl;cout<<" 4.退出系统 "<<endl;cout<<" "<<endl;cout<<""<<endl;cout<&
49、lt;""cin>>n; while(n<1|n>4) cout<<"操作错误,请输入正确的操作序号!"<<endl; cout<<"" cin>>n; switch(n) case 1: set_account();/开户 break; case 2:enter_account();/登录break; case 3: del_account();/注销 break; case 4: exitYH();/退出 break; cin.get();/输入流类istre
50、am的成员函数while(true);void YH:enter_account()int id; cout<<"请输入帐号:" cin>>id; int flag = 1; int i = 0; /_page_break_while(i<acnum)&&(flag) /循环查找 if(id=accounti->get_id() flag = 0; else i+; if(flag) cout<<"帐号不存在!"<<endl; return; cout<<"
51、请输入密码:"string passw;cin>>passw;if(passw!=accounti->get_passwd() return;/返回到登录界面accounti->display();cin.get();cin.get();int n;dosystem("cls"); cout<<"请选择下列操作:"<<endl;cout<<""<<endl;cout<<" "<<endl;cout<<
52、;" 1.查看账户信息 "<<endl;cout<<" "<<endl;cout<<" 2.取款 "<<endl;cout<<" "<<endl;cout<<" 3.存款 "<<endl;cout<<" "<<endl;cout<<" 4.修改密码 "<<endl;cout<<"
53、"<<endl;cout<<" 5.转账 "<<endl;cout<<" "<<endl;cout<<" 6.返回上一菜单 "<<endl;cout<<" "<<endl;cout<<""<<endl;cout<<""cin>>n;switch(n)case 1: accounti->display();b
54、reak;case 2: accounti->fetchmoney();save();break;/从2-5功能,每执行一次调用一次save函数,重新写入数据case 3:accounti->savemoney();save();break;case 4:accounti->change_passwd();save();break;case 5:transfer(i);save();break;case 6:return;cin.get();cin.get();while(1);void YH:set_account() int id; string nam; string
55、passw; float m;string company;string address;int number;double in; cout<<"请输入开户号:"<<endl; cin>>id; cout<<"请输入开户人姓名:"<<endl; cin>>nam; cout<<"请输入开户密码:"<<endl; cin>>passw; cout<<"请输入存入金额:"<<endl;
56、cin>>m;cout<<"请输入开户人电话:"<<endl; cin>>number;cout<<"请输入开户人公司:"<<endl;cin>>company;cout<<"请输入开户人地址:"<<endl;cin>>address;cout<<"请输入开户人身份证号码:"<<endl;cin>>in; while(m<=0) cout<<&
57、quot;请输入正确的数字!"<<endl;cin>>m; consumer * acc = new consumer(id,nam,number,in,company,address,passw,m); accountacnum = acc; cout<<"开户成功!"<<endl<<endl; acnum+;save();cin.get();return;void YH:del_account() int id; cout<<endl<<"请输入你要注销的帐户号:" ci
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年托育机构负责人岗前培训考试试题(带答案)
- 2026年曲棍球攻防转换训练设计考核题库及答案
- 2026年交互设计师UI岗校园招聘笔试试题及完整答案
- 2026年国资国企管理人员综合能力测试题及答案
- 2026年电梯安全管理人员管理职责培训试卷及答案
- 《耳聋基因诊断》课件
- RCS-953A(M)型高压输电线路成套保护装置 技术说明书
- 2026年钢结构超声探伤资格考试试题(带答案)
- 2026年职称职级晋升干事题库(含答案)
- 粮库熏蒸作业人员防护装备检查落实方案
- 2026年重庆市高考物理试卷(含答案)
- 教科版五年级科学上册全册知识点
- 2026秋小学科学教科版三年级上册(新教材)教学计划附进度表
- 2026江苏南京市栖霞区人民政府迈皋桥街道办事处公开招聘编外聘用人员19人笔试题库及参考答案详解【典型题】
- 2026秋西师大版小学数学五年级上册教学计划
- 2026年宿管老师岗位职责试题及答案
- 2025年领导干部选拔面试真题及答案解析
- 江西财经大学2026年第一批劳务派遣岗位招聘【13人】笔试备考题库及答案详解
- 压疮伤口的感染控制
- 2026年贵州大数据产业集团有限公司第一次招聘155人考试试题及答案解析
- 手术室健康宣教指南
评论
0/150
提交评论