1、银行账户管理系统设计说明书*实践教学* 兰州理工大学计算机与通信学院2011年秋季学期 面向对象 课程设计题 目: 银行账户管理系统 专业班级:计算机科学与技术四班姓 名: 卢文雅 学 号: 10240444 指导教师: 朱红蕾 成 绩: 目 录摘要 1 系统总体框架 2模块设计与分析 3类的设计与分析 4特色算法分析 5功能测试 7设计总结 11参考文献 12致 谢 13附 录 14摘要本文详细介绍了银行账户管理系统程序的设计与实现,该程序具有系统实现的主要有储蓄卡开户管理、存取款管理、用户查询历史数据显示、注销等功能。程序设计语言采用Visual C+,程序运行平台为Windows XP。
2、该银行帐目管理信息系统,优点是设计过程思路清晰、模块划分简洁,设计各阶段分工明确。经过实践证明,该划分是合理的,极大得提高了本系统的实现。关键词:银行账户管理系统 程序设计 C+.系统总体框架图1描述了银行管理系统的主要界面,登录界面,注册开户,主界页面,注销退出。 图1 模块设计与分析2.1 登录页面输入卡号和密码,根据用户输入的卡号和密码,到后台文件查询,若正确则登录成功,并保存卡好信息已备后用。若卡号存在和密码不匹配或无该卡号已经注销,提示该卡号已存在或已注销,保持界面三次不变等待用户的重新输入。2.2 主界面页面主要导航栏有:欢迎使用储蓄卡管理(存款、取款、查询余额、查询历史记录、注销
3、退出)2.3 储蓄卡开户页面提供开户界面,由用户输入新储蓄卡的所有信息,将该信息保存到文件中,并将开户金额作为该卡的第一次存款记录存人文件。2.4 存钱页面从登录界面得到卡号,并提供数据输入界面,等待用户的输入存款金额。从后台数据库中找到该用户余额记录,修改余额,并将该存款事件的相应信息写人数据库,同时将存钱的金额显示在页面上。2.5 取款页面从登录界面得到卡号,并提供数据输入界面,等待用户输入取款金额,如果取款金额大于该用户卡上的余额则不能取款,或者将新的余额写人文件,并将本次取款事件写入文件同时将取钱的金额显示在页面上,。2.6 查询余额页面从登录界面得到卡好,把该卡上的余额显示到界面中。
4、2.7 查询历史记录页面2.8 注销页面从关闭文件,状态为注销,最后关闭整个系统。面得到卡号,把该卡在取款页面中,输入取款金额并对取款金额与存款余额进行比较,如果三次都超过的话就输出:很抱歉,你重复输入错误多次,在退卡中,如果取款金额小于存款余额的话就执行,并保存记录。的所有存款取款查询出来,并显示在页面上。类的设计与分析1User 类class User 主要制定用户的成员数据,并进行登录与保存功能: 表1 User 类说明表名称属性说明Accout数据成员用户账户数据Name数据成员用户姓名Fmoney数据成员用户首次金额ID数据成员用户身份证号Address数据成员用户地址Telepho
5、ne数据成员用户电话Pword1数据成员用户密码Pword2数据成员用户再一次确认密码Get()构造函数默认构造函数Login()成员方法登录方法Password()成员方法密码验证SaveFile()成员方法保存数据2Function 类Function 类 主要实现用户的各种功能:图1特色算法分析1.User类中的PassWord方法 功能:输入密码并进行确认,如果密码确认三次失败,则退出系统。 代码:void User:PassWord() int num=0; while(num3) coutntt请输入位储蓄密码:; for(int i=0;i8;i+) Pword1i=getch(
6、);cout*; Pword18=0; coutendl; coutntt请再一次确认密码:; for(int i=0;i8;i+) Pword2i=getch();cout*; coutendl; Pword28=0; if(strcmp(Pword1,Pword2)=0) coutnntt密码确认成功,单击任何键进入主菜单; return ; else num+; coutntt你输入的密码错误,请重新输入!nendl; if(num=3) system(cls); cerrnnntt对不起,你三次输入不正确nendl tt感谢你的使用,再见! endl; exit(0); getch()
7、; . 功能测试 5.1 首页图25.2储蓄卡开户页面 图35.3 主界面页面主要导航栏有:欢迎使用储蓄卡管理(存款、取款、查询余额、查询历史记录、注销退出)图45.4 存钱页面 图55.5 取款页面从登录界面得到卡号,并提供数据输入界面,等待用户输入取款金额,如果取款金额大于该用户卡上的余额则不能取款,或者将新的余额写人文件,并将本次取款事件写入文件同时将取钱的金额显示在页面上。输入取款金额: 当取款金额大于现有金额: 图6当取款金额小于或等于现有金额: 图75.6查询余额页面图85.7查询历史记录页面图95.8用户信息 图105.9注销页面从保存数据并关闭文件,状态为注销,最后关闭整个系统
8、。图11设计总结通过此次课程设计,我发现程序存在的不足之处在于程序以文件方式储存,并且每个用户信息与用户的历史记录分别用一个文件来储存,如果这样的话一个用户就需要二个文件储存信息,那么一万个用户就需要用到二万个文件保存。这不但浪费内存而已在查找文件也会花费时间。重要的是,通过此次课程设计我深刻理解到编程员的心理。知道应如何在困难中一步一步发现问题并解决问题。知道了软件在程序设计中对界面和功能如何平衡。参考文献1陈维兴,林小茶.c+面向对象程序设计教程. 北京: 清华大学出1996.2004.2张国峰. C+程序设计实用教程. 北京: 清华大学出版社,1996. 3张松梅. C+语言教程. 电子
9、科技大学出版社,1993. 4阎龙. C程序员的C+指南. 北京航空航天大学出版社,1992.5王博. 面向对象的建模、设计技术与方法. 北京希望电脑公司,1990. 致 谢首先感谢我的指导老师朱红蕾,她在我的课设中提出了指导性的方案和框架,并指导我阅读相关资料和书籍,使我在不熟悉的领域中仍能迅速掌握新技术。 在这三周的面向对象课程设计中,对课本中所学的知识进一步理解和掌握,学会了如何把学到的知识用于解决实际问题,锻炼了自己动手的能力。在课程设计时遇到了很多的问题,在老师的帮助,和对各种资料的查阅中,将问题解决,培养了我自主动手,独立研究的能力,为今后在学习工作中能更好的发展打下了坚实的基础。
10、附录:程序源代码#include#include#include#include#include#include#includeusing namespace std;class Function;class Userpublic: void get(User& ); friend class Function; ostream &print(ostream &os); /friend ostream & operator(istream & i, User & u); void PassWord(); bool Login(User &); void SaveFile(User &); ve
11、ctor StrFunction; User() User(int A,string N,int F,string I,string Ad,int T):Accout(A),Name(N),Fmoney(F),ID(I),Address(Ad),Telephone(T)private: int Accout; string Name; int Fmoney; string ID; string Address; int Telephone; char Pword19; char Pword29;class Functionpublic: void Saving(User &); void Dr
12、awing(User &); void Balance(User &); void Record(Us private: int SaveAndDrawMoney;void Function:Saving(User &u) system(cls); coutnnntt*nendl; coutSaveAndDrawMoney; u.Fmoney+=SaveAndDrawMoney; strstream ss; string str2; ssstr2; string frist=Record+str2 +.txt; const char *RecordFile=frist.c_str(); ofs
13、tream outfile(RecordFile,ios:out|ios:app); outfilestr1SaveAndDrawMoneyendl; outfile.close(); outfile.clear(); coutnntt操作成功,单击任何键返回主菜单!; getch();void Function:Drawing(User &u) system(cls); coutnnntt*nendl; couttt请输入取款金额:; string str1(ntt现取RMB 钞- ); string str2; int k=0; while(kSaveAndDrawMoney; u.Fmo
14、ney -=SaveAndDrawMoney; if(u.Fmoney=0) system(cls); coutnnntt正在出炒,请稍等!endl; strstream ss; ssstr2; string frist=Record+str2 +.txt; const char *RecordFile=frist.c_str(); ofstream outfile(Reco outfilestr1SaveAndDraw Money=3) system(cls); cerrnnntt很抱歉,你重复输入错误多次endl ntt正在退卡中endl; exit(0); system(cls); u.
15、Fmoney +=SaveAndDrawMoney; cerrnnntt对不起,你输入的金额超出有效金额。endl ntt 请重新输入: ; coutnntt操作成功,单击任何键返回主菜单!; getch();void Function:Balance(User &u) system(cls); coutnnntt*nendl; couttt你当前的余额是:; coutttu.Fmoneyendl; coutntt*nendl; coutntt操作成功,单击任何键返回主菜单!; getch();void Function:Record(User &u) string str1,str2; sy
16、stem(cls); coutnnntt*nendl; couttt摘要币种钞汇存/取款金额endl; strstream ss; ssstr2; string frist=Record+str2 +.txt; const char *RecordFile=frist.c_str(); ifstream infile(RecordFile,ios:in); if(!infile) coutntt没有任何历史记录!endl; getch(); return ; while(!infile.eof() getline (infile,str1); coutnttstr1endl; coutntt*
17、nendl; coutntt操作成功,单击任何键返回主菜单!; getch();ostream &User:print(ostream &os) /mark system(cls); osnnntt*nendl; osntt用户卡号:Accoutendl; osntt姓名: Name endl; osntt账户金额:Fmoneyendl; osntt身份证号:IDendl; osntt地址: Address endl; osntt联系电话:Telephone endl; osntt密码: Pword1endl; osntt*nendl; coutntt操作成功,单击任何键返回主菜单!; get
18、ch(); return os;void User:SaveFile(User &u) int filename=u.Accout; string frist; string last(.txt); strstream ss; ssfrist; frist+=last; const char *UserID=frist.c_str();rdFile,ios:out|io ofstream outfile(UserID,ios:out |ios:trunc ); /outfile(*this); outfileAccout Name Fmoney ID Address Telephone Pwo
19、rd1endl; outfile.close();bool User:Login(User &u) int acc; string pwd; coutntt登陆用户:endl; coutacc; coutpwd; int filename=acc; string frist; string last(.txt); strstream ss; ssfrist; frist+=last; const char *UserID=frist.c_str(); ifstream infile(UserID,ios:in ); while (infile (*this) if (u.Accout = ac
20、c ) string str; str=Pword1; if(str= pwd) return true; return false;/*ostream & operator(ostream & o, const User & u) ou.Accout u.Name u.Fmoney u.ID u.Address u.Telephone u.Pword1 (istream & i, User & u) iu.Accout u.Name u.Fmoney u.ID u.Address u.Telephone u.Pword1 ; return i;void User:PassWord() int
21、 num=0; while(num3) coutntt请输入位储蓄密码:; for(int i=0;i8;i+) Pword1i=getch();cout*; Pword18=0; coutendl; coutntt请再一次确认密码:; for(int i=0;i8;i+) Pword2i=getch();cout*; coutendl; Pword28=0; if(strcmp(Pword1,Pword2)=0) coutnntt密码确认成功,单击任何键进入主菜单; getch(); return ; else num+; coutntt你输入的密码错误,请重新输入!nendl; if(nu
22、m=3) system(cls); cerrnnntt对不起,你三次输入不正确nendl tt感谢你的使用,再见! endl; exit(0); void User:get(User& u) system(cls); coutnnntt请输入用户信息:nendl; couttt*nendl; coutAccout; coutName; coutFmoney; coutID; coutAddress; coutTelephone; u.PassWord(); coutntt*nendl;void Sign() system(cls); coutnnnnnnttt谢谢您使用银行管理系统t nnendl; couttt*nendl; couttt 姓名: 谢道尔 nn tt 班级: 计算机班nn tt 学号: 200710214217nnendl; coutntt 已经成功退出endl ntt 欢迎你的光临! endl;char custom(User &u) char x; int k=0; system(cls);coutnnnttn tt n tt 欢迎使用储蓄管理系统 n tt n tt 请用户在使用前选择开户: n tt n tt 请选择: n tt 1:注册开户 n tt 2:用户登录
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1