银行账户管理系统报告书.doc

上传人:文库蛋蛋多 文档编号:4189693 上传时间:2023-04-09 格式:DOC 页数:16 大小:49.50KB
返回 下载 相关 举报
银行账户管理系统报告书.doc_第1页
第1页 / 共16页
银行账户管理系统报告书.doc_第2页
第2页 / 共16页
银行账户管理系统报告书.doc_第3页
第3页 / 共16页
银行账户管理系统报告书.doc_第4页
第4页 / 共16页
银行账户管理系统报告书.doc_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《银行账户管理系统报告书.doc》由会员分享,可在线阅读,更多相关《银行账户管理系统报告书.doc(16页珍藏版)》请在三一办公上搜索。

1、合肥学院C语言课程设计报告 一、 需求分析课程设计名称:银行账户管理系统设计内容:设计一个银行账户管理系统,该系统要求对该系统进行管理和维护。该系统具有开户,查询账户余额,销户,存取款和修改密码等功能。注意对用户的密码进行加密。将客户信息如姓名,身份证号码,电话等信息作为一条记录添加入文件中保存,从实际出发,不要用虚拟的数据。该程序使用Microsoft Visual C+ 6.0编译。二、算法设计、开始Menu1:包括新用户注册和老用户登录功能。Menu2:包括取款、存款、查询余额、修改密码功能。各种数据均合要求若符合要求则开户or登录成功,否则重新输入数据,老用户登录按1可进入menu2。

2、否则重新输入数据。在menu2中按序号(15)选择需要使用的功能,如按1选择取款功能,按2选择存款功能等,执行完功能4后按1返回menu1.序号i是否在15之间退出系统结束yY1设计思想:本程序主要运用了数组和指针的知识,用主菜单引入各个子函数,并由子函数实现银行管理系统的初步功能。2设计表示:Menu1的功能是将用户引入新用户注册和老用户登录两个功能,并在此之后与menu2相衔接;menu2主要针对老用户登录之后的功能加强,有取款,存款,查询余额,修改密码等子功能,并可以通过输入功能钱的序号来引导客户使用各种子功能;子函数zhuce是新客户注册的运行函数,新用户可以运用此函数创建一个新的账号

3、并在此之后利用这个账号进行登录;子函数search是用来对比新注册的账号是否有重复的函数,如果重复则新账号创建失败,如果不重复则创建新账号成功,并可以在此后利用该账号进行各种子功能;子函数add是用来将新注册的账号添加至文件中的函数,添加到文件中才能保存该账号以进行老用户登录的功能;子函数denglu是老客户登陆的运行函数,登陆之后则可以通过对比输入的账号和文件中的账号是否有相同,如果有则可以进入menu2中通过选择序号进行各个子函数的运行;子函数gongneng是用来实现老客户登录后运行各种功能的函数,包括取款,存款,查询余额,在进行完每一个子函数后可以按任意键推出程序。3实现注释:#inc

4、lude #include #include char cfile = date.txt;/创建一个文件struct bankchar id10+1;char psw6+1;float money; /定义账号,密码,金额; menu1() printf(*欢迎使用虚拟银行服务!*n); printf(*n); printf( | 请输入序号 |n); printf( | 1.新用户开户。 |n); printf( | 2.老用户登陆。 |n); printf( | 3.退出系统。 |n); printf(*n); printf(请选择功能:n); /一级菜单,实现新用户注册和老用户menu2

5、()printf(* 欢迎进入虚拟银行系统 *n);printf(*n);printf(*1.取款; *n);printf(*2.存款; *n);printf(*3.查询余额; *n);printf(*4.返回主页面; *n);printf(*任意键退出. *n);printf(*n);/二级菜单实现老用户登陆后的各种功能int search(char* user, char* pwd, char* real_pwd)/将注册的账号与已注册的账号对比是否重复 FILE* file; char user_no256, pwd_no256; file = fopen(cfile, r); if (

6、!file) return 0; while (!feof(file) if (fscanf(file, %s%sn, user_no, pwd_no) = EOF) return 0; if (!strcmp(user_no, user) if (real_pwd) strcpy(real_pwd, pwd_no); return 1; fclose(file); return 0;int add(char* user, char* pwd)/如果新注册的账号不重复,则将其添加至文件data.txt中 FILE* file; file = fopen(cfile, a); if (!file

7、) return 0; fprintf(file, %s %s n, user, pwd ); fclose(file); return 0;int wenjian(char* user, char* pwd ) if (search(user, pwd, NULL) return 0; else add(user, pwd ); return 1; zhuce()/新用户注册 struct bank *p; int i=0; char name30; float money; char sh18,n;p=(struct bank*)malloc(sizeof(struct bank);/p创

8、造动态存储空间 printf(请输入您的名字:);gets(name);fflush(stdin); printf(请输入您的身份证号码:);gets(sh);fflush(stdin); printf(请输入您的帐号10位:n); fflush(stdin); scanf(%s,p-id); fflush(stdin); printf(请输入您的密码(6位数字):n); fflush(stdin); scanf(%s,p-psw); fflush(stdin); printf(请输入您的存款:n); fflush(stdin); scanf(%f,&money); fflush(stdin)

9、; if (wenjian(p-id,p-psw) system(cls); printf(注册成功!); printf(您的注册信息如下:n); printf(名字:); puts(name); printf(身份证号码:); puts(sh); printf(帐号:); puts(p-id); printf(密码:); puts(p-psw); printf(存款); printf(%f,money); printf(按1返回主页面. 按任意键退出:); fflush(stdin); scanf(%c,&n); fflush(stdin); if(n=1) system(cls); ret

10、urn 0; else exit(0);/当输入1时返回上一级菜单,否则程序终止 else system(cls); printf(您输入的帐号已经存在注册失败!按1返回,按任意键退出n); scanf(%c,&n); if(n=1) system(cls); return 0; else exit(0); gongneng(char Account10,char Password6,float Money)/实现老用户登陆后的各种功能FILE *ps;struct bank xin100;int k=0,j=0,n;char Chiose;float inmoney,outmoney;men

11、u2();fflush(stdin);scanf(%c,&Chiose);fflush(stdin);ps=fopen(cfile,r);if (!ps) exit(0); if(Chiose=1) printf(输入您的取款金额:); fflush(stdin); scanf(%lf,&outmoney); fflush(stdin); while(!feof(ps) fscanf(ps, %s %s %lf,&xink.id,&xink.psw,&xink.money); k+; fclose(ps); ps=fopen(cfile,wb); if (!ps) exit(0); for (

12、j=0;j+) if (strcmp(Account, xinj.id)=0)&(strcmp(Password, xinj.psw)=0) xinj.money=xinj.money-outmoney; printf(%.2lfn,xinj.money); fprintf(ps, %s %s %.2lfn, xinj.id, xinj.psw, xinj.money); j+; break; /实现菜单2中的取款功能printf(按1返回主页面. 按任意键退出:); fflush(stdin); scanf(%c,&n); fflush(stdin); if(n=1) system(cls)

13、; return 0; else exit(0); if(Chiose=2) printf(输入您的存款款金额:); fflush(stdin); scanf(%lf,&inmoney); fflush(stdin); while(!feof(ps) fscanf(ps, %s %s %lf,&xink.id,&xink.psw,&xink.money); k+; fclose(ps); ps=fopen(cfile,wb); if (!ps) exit(0); for (j=0;j+) if (strcmp(Account, xinj.id)=0)&(strcmp(Password, xin

14、j.psw)=0) xinj.money=xinj.money+inmoney; printf(%.2lfn,xinj.money); fprintf(ps, %s %s %.2lfn, xinj.id, xinj.psw, xinj.money); j+; break; /实现菜单2中的存款功能printf(按1返回主页面. 按任意键退出:); fflush(stdin); scanf(%c,&n); fflush(stdin); if(n=1) system(cls); return 0; else exit(0); if(Chiose=3)while(!feof(ps) fscanf(p

15、s, %s %s %lf,&xink.id,&xink.psw,&xink.money); k+; fclose(ps);ps=fopen(cfile,r);if (!ps) exit(0); for(j=0;j+) if (strcmp(Account, xinj.id)=0)&(strcmp(Password, xinj.psw)=0) printf(%.2lfn,xinj.money); fprintf(ps, %s %s %.2lfn, xinj.id, xinj.psw, xinj.money); j+; break; /实现菜单2中的查询余额的功能printf(按1返回主页面. 按

16、任意键退出:); fflush(stdin); scanf(%c,&n); fflush(stdin); if(n=1) system(cls); return 0; else exit(0); if(Chiose=4) return 0; denglu()FILE *fp;char account10,password6,h;int m=0;char real_account10; char real_password6; float real_money=0.0; fp = fopen(cfile, r);if (!fp) exit(0); while (m=2) printf(请输入您的

17、帐号(10位):); gets(account); fflush(stdin); printf(请输入您的密码(6位):); gets(password); fflush(stdin); while(fscanf(fp, %s %s %lf, &real_account, &real_password,&real_money) != EOF) if (strcmp(real_account, account)=0)&(strcmp(real_password, password)=0) system(cls); printf(登陆成功!); gongneng(real_account,real

18、_password,real_money); fclose(fp); return 0; /输入曾经注册过的账号进行登陆,账号或密码输入错误则有三次重新输入的机会,否则退出程序 else rewind (fp); printf(您输入的帐号不不正确!请重新输入:n); m+; printf(请输入您的帐号(10位):); gets(account); fflush(stdin); printf(请输入您的密码(6位):); gets(password); fflush(stdin); fclose(fp);printf(您输入帐号密码不正确已经3次,被强制退出(按任意键退出)!); fflus

19、h(stdin);scanf(%c,&h);fflush(stdin);exit(0);int main() char chiose; char flag;while (flag!=N)menu1(); scanf(%c,&chiose); getchar(); if(chiose =4) while(chiose =4) printf(您的输入有误,请重新输入:); scanf(%c,&chiose); getchar(); /在一级菜单中所输入的账号必须在15之间,否则无法进行下一步操作 if(chiose=1) system(cls); zhuce(); printf (继续请按任意键,

20、退出请按N); scanf (%c,&flag); if(chiose=2) system(cls); denglu(); printf (继续请按任意键,退出请按N); scanf (%c,&flag); if(chiose=3) printf(谢谢您的使用!); exit(0); /一级菜单中按3直接退出程序4算法设计中一些新的想法:在本次程序的编写过程中,用了清除缓冲的新想法,即fflush(stdin),清除缓冲的不走可以代替回车和字符的功能;另外,我还对头文件“conio.h”的功能进行查询,发现其为屏幕操作系列函数的头文件。在程序的运行中也有几处不足,在menu2中不能在使用一个子

21、函数后再返回菜单调用另一个子函数,在menu2的三项功能取款、存款、查询余额中,无论输入什么数字都会显示-1720304.00,也就是不能正确显示,账户中的余额。三、 用户手册在进入程序后首先将会出现menu1的菜单,共有新用户注册和老用户登录两个功能,可按序号进行功能选择,此时序号数只能为12,否则将会直接跳出系统;新用户注册完之后可以进行老用户的账号登录,此时,对于输入进的老账户账号和密码将会与之前文件中所输入的所有新账户账号和密码做对比,若有相同的则老账号可以成功登录,否则将会输出“您所输入的账号/密码有误”;若账号成功登录将会将程序引入menu2,此时,使用者再次可以通过选择序号进行功

22、能选择,序号只能为13,否则将会直接跳出系统;按1进入取款功能,输入要取的金额,打印出账户中剩下的金额;按2进入存款功能,输入要存的金额,打印出账户中剩下的金额;按3进入查询余额,程序直接打印出账户中的余额。四、 调试及测试一开始程序刚写完时有不少错误,在老师和同学的指导下一一把错误改正过来,最终程序才能够运行成功。通过此次C语言程序设计实践,本人实在是获益不浅!C语言是上个学期开的课程,所以这个学期并没怎么看过,当要开始设计的时候,还真不知从哪下手!结果,第一次的上机,我只坐了一个下午,什么也没干!回去以后,我想,这样不行,这样下去还得了!我就重新学了一遍我们上个学期的教材,发觉自已有许多都

23、遗忘了!特别是有文件的操作,几乎是一遍空白!温习过后,开始做题!那个欢迎动画是在”C语言之家”找到的自已改了一下,但并没做多大的改动!之后做出来的第一个程序是”统计数”,因为上个月做过类似的!接着是”乘法逆”,这个我觉得比较简单!再接着是”OTP”加密!而那个银行管理系统是参考了上机手册后做出来的!最后,花了最多时间的是”异或加密与解密”和”移位解密”,几乎花了我百分之九十的时间,而且还是在一些在其他大学读计科专业的同学的帮助下和在上网查看了大量的资料之后才做出来!五、小结通过这次程序设计,我第一次尝试编写一个几百行的大程序,虽然过程非常艰辛,不过我还是觉得非常值得,当看到程序最后能运行时感到非常欣慰,虽然最后程序的功能还是有点不健全,但是我还是有信心有热情在今后的时间里努力巩固自己的C语言知识,争取能够再一次独立的编写出一个大程序。六、参考文献1 黄明等编著C语言课程设计北京:电子工业出版社2 郭翠英编著C语言课程设计案例精编北京:中国水利水电出版社3 宁正元数据结构(c语言) 南京:东南大学出版社。2000年6月第1版4 严蔚敏等 数据结构(c语言版) 北京:清华大学出版社,1997年4月第1版5 谭浩强编著C程序设计题解与上机指导(第3版) 北京:清华大学出版社6 谭浩强编著C程序设计(第3版) 北京:清华大学出版社

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号