




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
合肥学院C语言课程设计报告 一、 需求分析课程设计名称:银行账户管理系统设计内容:设计一个银行账户管理系统,该系统要求对该系统进行管理和维护。该系统具有开户,查询账户余额,销户,存取款和修改密码等功能。注意对用户的密码进行加密。将客户信息如姓名,身份证号码,电话等信息作为一条记录添加入文件中保存,从实际出发,不要用虚拟的数据。该程序使用Microsoft Visual C+ 6.0编译。二、算法设计、开始Menu1:包括新用户注册和老用户登录功能。Menu2:包括取款、存款、查询余额、修改密码功能。各种数据均合要求若符合要求则开户or登录成功,否则重新输入数据,老用户登录按1可进入menu2。否则重新输入数据。在menu2中按序号(15)选择需要使用的功能,如按1选择取款功能,按2选择存款功能等,执行完功能4后按1返回menu1.序号i是否在15之间退出系统结束yY1设计思想:本程序主要运用了数组和指针的知识,用主菜单引入各个子函数,并由子函数实现银行管理系统的初步功能。2设计表示:Menu1的功能是将用户引入新用户注册和老用户登录两个功能,并在此之后与menu2相衔接;menu2主要针对老用户登录之后的功能加强,有取款,存款,查询余额,修改密码等子功能,并可以通过输入功能钱的序号来引导客户使用各种子功能;子函数zhuce是新客户注册的运行函数,新用户可以运用此函数创建一个新的账号并在此之后利用这个账号进行登录;子函数search是用来对比新注册的账号是否有重复的函数,如果重复则新账号创建失败,如果不重复则创建新账号成功,并可以在此后利用该账号进行各种子功能;子函数add是用来将新注册的账号添加至文件中的函数,添加到文件中才能保存该账号以进行老用户登录的功能;子函数denglu是老客户登陆的运行函数,登陆之后则可以通过对比输入的账号和文件中的账号是否有相同,如果有则可以进入menu2中通过选择序号进行各个子函数的运行;子函数gongneng是用来实现老客户登录后运行各种功能的函数,包括取款,存款,查询余额,在进行完每一个子函数后可以按任意键推出程序。3实现注释:#include #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()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 (!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) 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创造动态存储空间 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); 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); return 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;menu2();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 (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); 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, xinj.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(ps, %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返回主页面. 按任意键退出:); 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(请输入您的帐号(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_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次,被强制退出(按任意键退出)!); fflush(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 (继续请按任意键,退出请按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中不能在使用一个子函数后再返回菜单调用另一个子函数,在menu2的三项功能取款、存款、查询余额中,无论输入什么数字都会显示-1720304.00,也就是不能正确显示,账户中的余额。三、 用户手册在进入程序后首先将会出现menu1的菜单,共有新用户注册和老用户登录两个功能,可按序号进行功能选择,此时序号数只能为12,否则将会直接跳出系统;新用户注册完之后可以进行老用户的账号登录,此时,对于输入进的老账户账号和密码将会与之前文件中所输入的所有新账户账号和密码做对比,若有相同的则老账号可以成功登录,否则将会输出“您所输入的账号/密码有误”;若账号成功登录将会将程序引入menu2,此时,使用者再次可以通过选择序号进行功能选择,序号只能为13,否则将会直接跳出系统;按1进入取款功能,输入要取的金额,打印出账户中剩下的金额;按2进入存款功能,输入要存的金额,打印出账户中剩下的金额;按3进入查询余额,程序直接打印出账户中的余额。四、 调试及测试一开始程序刚写完时有不少错误,在老师和同学的指导下一一把错误改正过来,最终程序才能够运行成功。通过此次C语言程序设计实
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年智能制造在电子制造业的生产优化
- 2025年智能锁的安全性能测试
- 2025年海洋能发电在海岛生态环境保护中的政策建议报告
- 2025年海洋能发电技术产业链协同创新模式研究报告
- 2025空军军医大学口腔医院社会招聘(119人)考前自测高频考点模拟试题及答案详解一套
- 2025年六安市人民医院公开招聘69人模拟试卷(含答案详解)
- 2025辽宁兴城市人民医院、中医医院招聘急需紧缺人才37人考前自测高频考点模拟试题及答案详解(全优)
- 2025广东汕尾市陆河县高校毕业生就业见习招募15人(第三批)模拟试卷及答案详解(必刷)
- 2025年阜阳界首市“政录企用”人才引进8人模拟试卷及参考答案详解1套
- 2025黑龙江齐齐哈尔市富裕县信访局招聘公益性岗位人员2人模拟试卷参考答案详解
- 生产主管转正工作总结
- 2025至2030中国高纯铝行业发展趋势与行业发展研究与产业战略规划分析评估报告
- 会务理论考试题及答案
- 2025年期货从业资格之《期货法律法规》真题附答案详解【巩固】
- 幼儿园各项安全管理制度汇编
- 2025年“安全生产年”工作总结(2篇)
- 锦囊工程(修订版)
- 锅炉空预器清洗方案
- SF∕T 0111-2021 法医临床检验规范
- 药敏试验结果的解读
- DB14∕T 1319-2021 公路工程标准工程量清单及计量规范
评论
0/150
提交评论