为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

银行活期储蓄帐目管理系统

2017-09-21 18页 doc 132KB 87阅读

用户头像

is_562397

暂无简介

举报
银行活期储蓄帐目管理系统银行活期储蓄帐目管理系统 一、需求分析: 设计一个银行活期储蓄帐目管理系统(每个记录有下列数据项:账户号码、用户名、身 份证号、地址等)。 (1) 能比较迅速地找到储户的帐户,以实现存款、取款记账。 (2) 能比较简单,迅速地实现插入和删除,以实现开户和销户的需要。 (3) 符合课题要求,实现相应功能; (4) 要求界面友好美观,操作方便易行; (5) 注意程序的实用性、安全性。 所使用的函数: 函数: 功能如下: void mainmenu(); 输出主菜单 void add(); 添加用户资料 void s...
银行活期储蓄帐目管理系统
银行活期储蓄帐目管理系统 一、需求分析: 设计一个银行活期储蓄帐目管理系统(每个有下列数据项:账户号码、用户名、身 份证号、地址等)。 (1) 能比较迅速地找到储户的帐户,以实现存款、取款记账。 (2) 能比较简单,迅速地实现插入和删除,以实现开户和销户的需要。 (3) 符合课题要求,实现相应功能; (4) 要求界面友好美观,操作方便易行; (5) 注意程序的实用性、安全性。 所使用的函数: 函数: 功能如下: void mainmenu(); 输出主菜单 void add(); 添加用户资料 void select_name(); 按姓名查询余额 void select_id(); 按账号查询余额 void display(); 显示用户资料 void save_money(); 用户存款 void get_money(); 用户取款 void delete(); 销户 二、概要设计: 1、所使用的存储结构是: struct user { int id; char name[20]; char person_num[19]; double money; } 2、其图如下: 开始 执行main()函数 ch=getchar() switch(ch) 选择操作编号 1 2 3 4 5 6 7 8 add(select_select_Dispsave_get_mdelete(exit( ) name() id() lay() moneyoney() ) 0) () 三、详细设计: 1. void add() //添加用户资料 { printf("%30s\n","***添加用户***"); printf("---------------------------------------------\n\n"); struct user getuser(); int count(); //函数目的:计算文件中的记录数目 以生成自动账号 FILE *fp; int number; struct user temp; if((fp=fopen(file,"ab"))==NULL) { printf("不能打开文件!\n"); exit(1); } temp=getuser(); //读取用户名 number=count(); temp.id=number+1; //生成自动账号 fwrite(&temp,sizeof(struct user),1,fp); printf("添加用户成功!\n"); fclose(fp); } 2. int count() //函数目的:计算文件中的记录总数 { FILE *fp; int num; struct user temp; num=0; if((fp=fopen(file,"rb"))==NULL) { printf("不能打开文件!\n"); exit(1); } while(fread(&temp,sizeof(struct user),1,fp)) { num++; } fclose(fp); return num; } 取用户姓名(字符数<20) 3. void getname(char *name) //读{ do{ scanf("%s",name); fflush(stdin); if(strlen(name)==0) printf("姓名不能为空!\n"); else if(strlen(name)>=20) printf("姓名不能超过20个字符!\n"); else break; printf("请重新输入姓名: "); }while(1); //循环以保证读入数据有效 } void getperson_num(char *person_num) //函数功能:读取用户身份证号码(15位 或 者 18位 ) { do{ int i,mark; char ch; for(i=0,mark=0;;i++) //输入有效性判断(只能是数字) if((ch=getchar())!='\n') { if(ch<='9'&&ch>='0') person_num[i]=ch; else { printf("身份证号码只能是数字!\n"); mark=1; break; } } else break; person_num[i]='\0'; if(mark==1) continue; if(strlen(person_num)!=15&&strlen(person_num)!=18) printf("身份证号码只能是15位,或者18位!\n"); else break; printf("重新输入身份证号码: "); }while(1); //循环以保证读入数据有效 } 4. void select_name() //按照姓名查询账户余额 { void getname(char *name); printf("%30s\n","***按照姓名查询账户余额***"); printf("%8s %15s %15s %10s\n","账号","用户姓名","身份证号码","存款余额"); printf("---------------------------------------------\n\n"); FILE * fp; struct user temp; char name[20]; if((fp=fopen(file,"rb"))==NULL) { printf("不能打开文件!\n"); exit(1); } printf("请输入要查询的姓名:"); //调用读取用户名函数 getname(name); while(fread(&temp,sizeof(struct user),1,fp)) //循环读取每一条记录 判断是否为要查看的记录 if(strcmp(temp.name,name)==0) { printf("NO.%d %15s %15s %.2f\n",temp.id,temp.name,temp.person_num,temp.mone y); } fclose(fp); } 5. void select_id() //按照账号查询账户余额 { int count(); printf("%30s\n","***按照编号查询账户余额***"); printf("%8s %15s %15s %10s\n","编号","用户姓名","身份证号码","存款余额"); printf("---------------------------------------------\n\n"); FILE * fp; struct user temp; int i,maxnum; if((fp=fopen(file,"rb"))==NULL) { printf("cannot open file!\n"); exit(1); } maxnum=count(); printf("输入要查询账号:"); //判断账号是否在记录中 scanf("%d",&i); if(i<1||i>maxnum) { printf("你要查询的账号不存在!"); return; } while(fread(&temp,sizeof(struct user),1,fp))//循环读取每一条记录 判断是否 为要查看的记录 if(temp.id==i) { printf("NO.%d %15s %15s %.2f\n",temp.id,temp.name,temp.person_num,temp.mone y); } fclose(fp); } 6. void display() //显示用户资料 { printf("%30s\n","***用户资料显示***"); printf("%8s %15s %15s %10s\n","账号","用户姓名","身份证号码","存款余额"); printf("---------------------------------------------\n\n"); FILE * fp; struct user temp; if((fp=fopen(file,"rb"))==NULL) { printf("cannot open file!\n"); exit(1); } while(fread(&temp,sizeof(struct user),1,fp)) { printf("NO.%d %15s %15s %.2f\n",temp.id,temp.name,temp.person_num,temp.mone y); } fclose(fp); } 7.void save_money() //函数功能:按账号存款 { printf("%30s\n","***用户存款业务***"); printf("---------------------------------------------\n\n"); int count(); FILE *fp; int i,num,mark; struct user *temp; num=count(); //根据记录数空间 temp=(struct user *)malloc(num*sizeof(struct user)); if((fp=fopen(file,"rb"))==NULL) { printf("cannot open file!\n"); exit(1); } for(i=0;inum) { printf("你要存款账号不存在!"); return; } if((fp=fopen(file,"wb"))==NULL) //写方式打开文件,覆盖件中的内容 { printf("cannot open file!\n"); exit(1); } for(i=0;inum) { printf("你要取款账号不存在!"); return; } if((fp=fopen(file,"wb"))==NULL) { printf("不能打开文件!\n"); exit(1); } for(i=0;itemp[i].money) { printf("你的余额不足!\n"); money=0; } temp[i].money -=money; } fwrite(&temp[i],sizeof(struct user),1,fp); } fclose(fp); free(temp); printf("你取款业务已办妥!\n"); } 9.void del() //销户 { int count(); printf("%30s\n","***注销账户***"); printf("%8s %15s %15s %10s\n","账号","用户姓名","身份证号码","存款余额"); printf("---------------------------------------------\n\n"); FILE * fp; struct user temp; int i,maxnum; if((fp=fopen(file,"rb"))==NULL) { printf("不能打开文件!\n"); exit(1); } maxnum=count(); printf("输入要销户账号:"); //判断编号是否在记录中 scanf("%d",&i); if(i<1||i>maxnum) { printf("你要查询的账号不存在!"); return; } while(fread(&temp,sizeof(struct user),1,fp))//循环读取每一条记录 判断是否为要 查看的记录 if(temp.id==i&&temp.money==0.00)//余额为0 {temp.id=-1;//算无效帐户 printf("NO.%d %15s %15s %.2f\n",temp.id,temp.name,temp.person_num,temp.mone y); //printf("%d\n",temp.id); fwrite(&temp,sizeof(struct user),1,fp);//保存修改 } fclose(fp); } 10void mainmenu() //函数功能:输出界面 { printf("%30s\n"," ***活期储蓄帐目管理系统***"); printf("---------------------------------------------------\n\n"); printf("%8s,%-20s\n","** 1","储户开户 **"); printf("%8s,%-20s\n","** 2","按照姓名查询 **"); printf("%8s,%-20s\n","** 3","按照账号查询 **"); printf("%8s,%-20s\n","** 4","显示用户信息 **"); printf("%8s,%-20s\n","** 5","储户存款 **"); printf("%8s,%-20s\n","** 6","储户取款 **"); printf("%8s,%-20s\n","** 7","储户销户 **"); printf("%8s,%-20s\n","** 8","退出 **"); printf("\n请选择功能(1~8):"); } 四、调试分析: 将软件进行初始化,即在VC++6.0中运行该程序,进入程序主菜单。 界面显示的是“主菜单”,主菜单有八个方面: 1、 添加用户资料 2、 按姓名查询帐户余额 3、 按账号查询账户余额 显示用户资料 4、 5、 储户存款 储户取款 6、 7、 销户 8、 退出 每个方面实现一个功能。定义一个包含有四个变量的结构体数组,并存入文件中。定义一个计数函数,贯穿整个程序。然后每个函数实现一个功能,共有七个功能。添加用户时会使用到录入姓名和录入身份证号码两个函数。按姓名和账号查询只需要比较字符串,然后输出即可实现。显示用户资料只需将结构体数组依次输出即可实现。储户的存款和取款按找账号依次从文件中查找到匹配的账号,然后加上或减去存取的金额即可实现。销户时将金额为零的账户账号标为-1即可。 主界面截图 添加用户资料 按姓名查询账户 按账号查询账户 显示用户资料 储户存款 储户取款 销户 五、课设: 1)程序的编写应是:三分编写,七分调试,调试程序是一件很考验耐心的事情。 2)程序编写之前需求分析然后想好整个程序的框架,这一点至关重要,将关系这整个 项目的成败. 3)做这个程序时,遇到了一些问题,销户时能显示出来销户,但是查询时候就会发现 实际上没有销户成功,这是一个待改善的地方。 4)做软件的最终目的是满足用户的需求,所以做软件时应一切应以用户为导向。 5)由于我们的知识浅薄,经验不足及阅历颇浅,因此,在该程序的设计方面还有很多的不足,会在以后的学习过程中,根据所学的知识不断的修改、完善,争取慢慢趋于完美。
/
本文档为【银行活期储蓄帐目管理系统】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索