收藏 分销(赏)

c++银行账户管理课程设计.doc

上传人:丰**** 文档编号:9859934 上传时间:2025-04-11 格式:DOC 页数:29 大小:471.50KB 下载积分:10 金币
下载 相关 举报
c++银行账户管理课程设计.doc_第1页
第1页 / 共29页
c++银行账户管理课程设计.doc_第2页
第2页 / 共29页


点击查看更多>>
资源描述
c++银行账户管理课程设计 29 2020年4月19日 资料内容仅供参考,如有不当或者侵权,请联系本人改正或者删除。 JINGCHU UNIVERSITY OF TECHNOLOGY C++银行账户管理 课程设计报告 学 院:计算机工程学院 班 级:09级计算机科学与技术1班 学生姓名: 学 号: 设计地点( 单位) : A5-101 设 计 题 目: 银行账户管理程序 完成日期: 12月 25日 指导教师评语: ____________ __ ______________________________________________________________________________________________________________________________________________ 成绩(五级记分制):_____ _ __________ 教 师 签 名:__________ ________ 目 录 一、 设计思想……………………………………………………03 二、 模块设计与分析……………………………………………03 三、 程序设计介绍………………………………………………04 四、 框架结构图…………………………………………………04 五、 程序代码……………………………………………………05 六、 测试数据……………………………………………………14 七、 数据调试……………………………………………………14 八、 课程设计总结………………………………………………16 九、 课程设计教材及主要参考资料……………………………16 一、 设计思想 定义一个用户类customer和一个银行类YH, 程序运行时, 能够由用户选择进行开户、 登录、 取款、 存款、 修改密码、 转账、 销户操作, 用户销户后账号被回收, 而且该账号能够继续分配给其它账户, 不允许用户透支, 根据姓名或账号能够进行用户的信息查询, 所有的账户信息应存放到一个文件中, 能够随时的访问和更新。 二、 模块设计与分析 1. 登录页面: 输入帐号和密码, 根据用户输入的帐号和密码, 到后台文件查询, 若正确则登录成功, 并保存卡好信息已备后用。若帐号存在和密码不匹配或无该帐号已经注销, 提示该帐号已存在或已注销。 2. 主界面页面: 主要导航栏有存款、 取款、 账户信息、 注销、 注销、 返回上一步。 3. 开户页面: 提供开户界面, 由用户输入新账户的信息, 将该信息保存到文件中, 并将开户金额作为该卡的第一次存款记录存人文件。 4. 存钱页面: 从登录界面得到帐号, 并提供数据输入界面, 等待用户的输入存款金额, 同时将存钱的金额显示在页面上。 5. 取款页面: 从登录界面得到帐号, 并提供数据输入界面, 等待用户输入取款金额, 如果取款金额大于该用户卡上的余额则不能取款, 或者将新的余额写人文件, 并将本次取款事件写入文件同时将取钱的金额显示在页面上。 6. 账户信息页面: 从登录界面得到帐号, 把本人显示到界面中。 7. 转账页面: 从登录界面得到帐号, 输入要转入的帐号, 在输入金额, 显示在页面上, 如果金额超过余额将操作失败。 8. 注销页面: 从关闭文件, 状态为注销, 最后关闭整个系统。 三、 程序设计介绍 系统由2个类构成, YH( 银行类) 和Consumer( 客户类) , Consumer( 客户类) 是YH( 银行类) 的公有继承类。YH( 银行类) 中有实现登陆系统, 开户, 销户, 转账, 退出系统等功能函数, Consumer( 客户类) 中有实现存钱, 取钱, 修改个人账号密码, 显示个人账号信息等功能函数。因为Consumer( 客户类) 是YH( 银行类) 的公有继承类, 因此, 一个用户只需创立一个Consumer( 客户类) 对象, 当用户进行开户, 销户等操作时, 能够直接调用YH( 银行类) 的成员函数。 银行类中的函数: void set_account(); //银行开户功能 void del_account(); //注销账户功能 void transfer(int); //转账功能 void enter_account(); //进入用户个人信息功能 void addmoney(int,float);//存款功能 void exitYH();// 退出系统 银行管理系统 存钱页面 取款页面 转账页面页面 修改密码 查看信息 登录界面 注册开户 主界页面 注销退出 四、 框架结构图 五、 程序代码 #include<iostream> #include <string> #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: consumer *account[20]; static int acnum;//账户数 }; class consumer:public YH//用户类,继承银行类的属性 { public: friend class YH; consumer(int id,string Name,string PassWord,float m) { ID=id;name=Name;money=m;passwd=PassWord; } consumer(){ID=0;name='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();//卡卡转帐 private: int ID; //开户帐号 string passwd; // 用户密码 string name; // 用户姓名 float money; //开户金额 }; void YH::save() {ofstream ofile("bankdat.dat",ios::out); ofstream outfile("bankdat.dat",ios::out); int n=0; outfile<<acnum<<" "; for(n=0;n<acnum;n++) {outfile<<account[n]->ID<<" "; outfile<<account[n]->money<<" "; outfile<<account[n]->name<<" "; outfile<<account[n]->passwd<<" "; } outfile.close(); } /*读入用户信息功能实现*/ void YH::load() {ifstream infile("bankdat.dat",ios::in); if(!infile) {cerr<<"读取错误,无资料中!"<<endl; return; } int n=0; int id,m; string nam,passw; infile>>acnum; for(n=0;n<acnum;n++) {infile>>id; infile>>m; infile>>nam; infile>>passw;account[n]->passwd; consumer * acc = new consumer(id,nam,passw,m); account[n] = acc; } infile.close(); cout<<"读取资料正常!"<<endl; } /*转账功能实现*/ void YH::transfer(int x) {int id; cout<<"请输入帐号:"; cin>>id; int flag = 1; int i = 0; while((i<acnum)&&(flag)) { if(id==account[i]->get_id()) flag = 0; else i++; } if(flag) { cout<<"帐号不存在!"<<endl<<endl; return ; } float b; cout<<endl<<"请输入你要转帐的金额:"; cin>>b; while(b<=0) { cout<<"请输入正确的数字!"<<endl; cout<<"→"; cin>>b; } if(account[x]->get_money()<b) cout<<"对不起,金额不够!!"<<endl; else {account[x]->dec_money(b);account[i]->add_money(b);} 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) {account[x]->money=account[x]->money-y; } float consumer::get_money() {return money;} void main() {YH yh; yh.functionshow(); } /*主界面显示*/ void YH::functionshow() { int n; do {system("cls"); load(); cout<<endl<<"请输入相应的操作序号进行操作:"<<endl; cout<<"㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣"<<endl; cout<<"㊣ ㊣"<<endl; cout<<"㊣ 1. 开户 ㊣"<<endl; cout<<"㊣ ㊣"<<endl; cout<<"㊣ 2.账户登录 ㊣"<<endl; cout<<"㊣ ㊣"<<endl; cout<<"㊣ 3.账户注销 ㊣"<<endl; cout<<"㊣ ㊣"<<endl; cout<<"㊣ 4.退出系统 ㊣"<<endl; cout<<"㊣ ㊣"<<endl; cout<<"㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣"<<endl; cout<<"→"; 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(); } 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==account[i]->get_id()) flag = 0; else i++; } if(flag) { cout<<"帐号不存在!"<<endl<<endl; return; } cout<<"请输入密码:"; string passw; cin>>passw; if(passw!=account[i]->get_passwd()) return; account[i]->display();cin.get();cin.get(); int n; do{system("cls"); cout<<"请选择下列操作: "<<endl; cout<<"◎☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆◎"<<endl; cout<<"◎ ◎"<<endl; cout<<"◎ 1.查看账户信息 ◎"<<endl; cout<<"◎ ◎"<<endl; cout<<"◎ 2.取款 ◎"<<endl; cout<<"◎ ◎"<<endl; cout<<"◎ 3.存款 ◎"<<endl; cout<<"◎ ◎"<<endl; cout<<"◎ 4.修改密码 ◎"<<endl; cout<<"◎ ◎"<<endl; cout<<"◎ 5.转账 ◎"<<endl; cout<<"◎ ◎"<<endl; cout<<"◎ 6.返回上一菜单 ◎"<<endl; cout<<"◎ ◎"<<endl; cout<<"◎☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆◎"<<endl; cout<<"→"; cin>>n; switch(n) {case 1: account[i]->display();break; case 2: account[i]->fetchmoney();save();break; case 3:account[i]->savemoney();save();break; case 4:account[i]->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; cout<<endl<<"请输入开户号: "; cin>>id; cout<<endl<<"请输入开户人姓名: "; cin>>nam; cout<<endl<<"请输入开户密码: "; cin>>passw; cout<<endl<<"请输入存入金额:"; cin>>m; while(m<=0) { cout<<"请输入正确的数字!"<<endl; cin>>m; } consumer * acc = new consumer(id,nam,passw,m); account[acnum] = 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 == account[i]->get_id()) { flag = 0; } else { i++; } } if(flag) { cout<<"该帐号不存在, 请重新输入!"<<endl; return; } for(int j=i;j<acnum;j++) { account[j] = account[j+1]; } account[acnum-1]=NULL; acnum--; cout<<"你的账号已注销!!"<<endl<<endl; save(); cin.get(); return; } void consumer::change_passwd() { string pwd,repwd; cout<<"请输入新密码: "; cin>>pwd; cout<<"请再输入一次新密码: "; cin>>repwd; if(pwd!=repwd) cout<<"你输入的两次密码不一样,按输入键返回上一层菜单!"<<endl; else cout<<"密码修改成功, 请牢记!"<<endl;cin.get(); } void consumer::fetchmoney() { float m; char ch; do { cout<<endl<<"输入取款金额:"<<"¥>"<<endl ; cin>>m; while(m<=0) { cout<<"请输入正确的数字!"<<endl; cout<<"→"; cin>>m; } if(money<m) { cout<<"对不起, 你的余额不足!"<<endl; } else {money=money-m; cout<<endl<<"操作成功, 请收好钱!" <<endl; } cout<<"是否要继续该项操作: (Y/N) " <<endl; cout<<"→"; cin>>ch; while(ch!='n'&&ch!='N'&&ch!='Y'&&ch!='y')//选择错误时判定 { cout<<"→"; cin>>ch; } }while(ch=='y'||ch=='Y'); } void consumer::savemoney()//存钱函数功能实现 { float c; char ch; do { cout<<endl<<"请输入要存入的金额:"<<"¥>"<<endl ; cin>>c; while(c<=0) { cout<<"输入错误,请重新输入!"<<endl; cout<<"→"; cin>>c; } money=money+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=='Y'); } int YH::acnum=0; void consumer::display()//用户信息界面 {system("cls"); cout<<"#####################################"<<endl; cout<<"#"<<endl; cout<<"#   用户姓名: "<<name<<endl; cout<<"#"<<endl; cout<<"#   帐号:   "<<ID<<endl; cout<<"#"<<endl; cout<<"#   余额:   "<<money<<endl; cout<<"#"<<endl; cout<<"# 按输入键回到上一菜单"<<endl; cout<<"#"<<endl; cout<<"#####################################"<<endl; cout<<"→"; } void YH::exitYH()//退出系统 { cout<<endl<<"感谢您对本银行的支持,欢迎下次光临!"<<endl; exit(0); } 六、 测试数据: 帐号 户名 密码 开户金额 余额 阮伟 123 10000 10100 阮伟 123 100 0 七、 数据调试: 1.登陆界面 2.开户界面 3.账户操作 八 、 课程设计总结 经过这次C++课程设计, 使我学到面向对象的程序设计思想用到具体的工作和学习中, 加深对类与对象的理解, 是将计算机课程与实际问题相联接的关键步骤。经过课程设计, 能够提高自己的分析问题、 解决问题的能力, 从而运用所学知识解决实际问题的能力, 并培养基本的、 良好的程序设计技能。 这次的课程设计, 让我用了一个相对比较集中的时间去练习我的编程, 特别是自己的动手能力, 因为这次的课程设计覆盖面比较广泛。经过了这次的设计, 让我找到自己学习上的漏洞, 一些课程设计上的以前没有弄懂的知识, 都在这次的课程设计上有所提高。 九、 课程设计教材及主要参考资料 教学参考书 [1]李素若.《C++面向对象程序设计》.北京: 化学工业出版社, . 参考资料: [1]郑莉, 傅仕星编, 《C++面向对象程序设计》, 清华大学出版社, 9月出 [2]谭浩强编, 《C++面向对象程序设计》, 清华大学出版社, 7月出版 [3]李师贤等译, 《C++精髓》, 机械工业出版社, 8月出版 [4]Davis Chapman, 《学用Visual c++ 6.0》, 清华大学出版社, 7月出版 [5]郑莉, 傅仕星编, C++语言面向对象程序设计习题与实验指导, 清华大学出版社, 9月出版
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服