已阅读5页,还剩17页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据结构课程设计数据结构课程设计活期储蓄帐目管理班级学号学生姓名提交日期成 绩 :一、需求分析 活期储蓄管理系统用户通过该系统可以进行存款、取款、销户等业务。该系统在金融业给人民带来了很大的方便,系统开发成功后,一旦应用于银行领域,会给管理员与用户带来很大的方便,其主要作用具体如下: 1)、可以代替营业员进行许多繁杂的手动操作。 2)、给用户带来了很大的方便。 3)、可以节省许多人力资源。 4)、可以提高人们的工作效率。活期储蓄账目管理系统主要是由于在活期储蓄处理中,储户开户、销户、存入、支出活动频繁,为实现储户的各种操作而设计的,本课程设计的主要功能包括实现储户开户、销户、存入、支出等活动,为了能比较迅速找到账户,实现这样的几个功能,就要通过链表来存储数据结构,其结构则按照C语言的相关知识定义结构体,其中储户开户、销户就是实现链表的插入与删除,而存入、支出等活动则是实现链表中结点的查找,然后进行更改。二、详细设计 主菜单创建账户存款查询账户修改密码回主菜单取款退出程序结构图1)、数据结构: typedef struct message char name10; char sex3; int old; char no20; double base; double ir; int code; int year; int yday; message *next; message,*Message;2)、各种函数说明:Message out();将txt文件中的信息读出tm * date();调用系统时间void make();对文件中已有账户进行处理void it(Message ); 将信息写入txt文件void create();创建新账户void debit(Message); 从账户中取款void credit(Message); 向账户中存款int chaxun();查询账户信息void rework(Message); 修改账户密码int main();主函数1)、头文件headerfile.h中,声明结构体和函数:typedef struct messagechar name10;char sex3;int old;char no20;double base;double ir;int code;int year;int yday;message *next;message,*Message;Message out();tm * date();void make();void it(Message );void create();void debit(Message); void credit(Message); int chaxun();void rework(Message);2)、int main()/主函数int choice=0;while(1)coutchoice;switch(choice)case 1:create();break;case 2:chaxun();break;case 0:return 0;default:coutnext;while(p!=NULL)for(int i=1;itm_yday-p-yday+365*(d-tm_year-p-year);i+)p-base=p-base+p-base*p-ir;p=p-next;q=head-next;ofstream fout(Message.txt);fout.close();while(q!=NULL)it(q);q=q-next;Message out()/将txt文件中的信息读出Message p,q,head;head=new message;p=head;ifstream fin(Message.txt);if(!fin) coutq-nameq-sexq-oldq-noq-baseq-irq-codeq-yearq-yda;q-next=NULL;p-next=q;p=p-next;fin.close();return head;void it(Message q)/将信息写入txt文件ofstream fout(Message.txt,ios:app);if(!fout) cout文件打开失败n; foutendlname sex old no base ir code tm_year tm_yday;fout.close(); void create()/创建账户Message q=new message;cout*请输入客户的信息*endl;coutq-name;coutq-sex;coutq-old;coutq-no;coutq-base;coutq-ir;coutq-code;q-year=d-tm_year;q-yday=d-tm_yday;q-next=NULL;it(q);void debit(Message p)/取款double money,m;coutmoney;m=p-base-money;if(m0.00)cout余额不足!n;else cout取款成功!n当前余额为:base=m;coutendl;void credit(Message p)/存款double money,m;coutmoney;m=p-base+money;cout存款成功!n当前余额为:base=m;coutendl;void rework(Message p)/修改密码int code1,code2;coutcode1;coutcode2;if(code1=code2)coutcode=code1;else coutnext;char a20;int b,choice;couta;coutb;while(p!=NULL)if(strcmp(a,p-no)=0&b=p-code) cout*要查询的账户信息为*endl;cout 姓名setw(6)性别setw(5)年龄setw(15)身份证号setw(13)余额setw(10)利率n;coutnamesetw(5)sexsetw(5)oldsetw(20)nosetw(9)basesetw(10)irnext;if(p=NULL)cout账户或密码错误!n;return 0;while(1)coutchoice;switch(choice)case 1:credit(p);break;case 2:debit(p);break;case 3:rework(p);break;case 0:return 0;default:coutnext;ofstream fout(Message.txt);fout.close();while(q!=NULL)it(q);q=q-next;三、调试分析程序在调试过程中遇到了各种问题,首先在开户程序时是主函调试错误,在原理上是可行,但调试时总得不到正确结果,后来改为基本类型整型后就很好的得到了满意结果,其它一些小错误在不断地调试,不断地改善后,基本达到满意的效果。四、测试结果 五、心得体会 刚开始自己读题时,思路不是很清晰,首先定义了一个结构体,包含了储户的各类信息,如姓名,账号,金额等等,并利用文件将用户信息加以存储。开户时将输入的信息写入文件,存款和取款时对用户的存款加以处理并更新到文件中。在分析好活期储蓄帐目管理的功能模块后,开始编写代码,通过这次对银行管理系统的编写与调试,巩固了有关结构体的知识及其操作,锻炼了实际应用能力,对专业知识了解更多,学会如何把自己平时所学的东西应用到实际中。六、附录#include#include#include#include#define file temp.txt /数据存储的文件名struct user /用户类型定义(账号,姓名,身份证号,余额)int id; char name20;char person_num19;double money;void add() /添加用户资料 printf(%30sn,*添加用户*);printf(-nn);struct user getuser();int count(); /函数目的:计算文件中的记录数目 以生成自动账号FILE *fp;int number;struct user temp;if(fp=fopen(file,ab)=NULL)printf(cannot open file!n);exit(1);temp=getuser(); /读取用户名number=count(); temp.id=number+1; /生成自动账号 fwrite(&temp,sizeof(struct user),1,fp);printf(添加用户成功!n);fclose(fp);int count()/函数目的:计算文件中的记录总数 FILE *fp;int num;struct user temp;num=0;if(fp=fopen(file,rb)=NULL)printf(cannot open file!n);exit(1);while(fread(&temp,sizeof(struct user),1,fp)num+;fclose(fp);return num;struct user getuser()void getname(char *name);void getperson_num(char *person_num);struct user temp;printf(请输入用户姓名(字符数=100)scanf(%lf,&temp.money);fflush(stdin);if(temp.money)100.0)printf(开户金额不能小于100n);elsebreak;printf(重新输入开户金额:);while(1);return temp;void getname(char *name) /函数功能:读取用户姓名(字符数=20)printf(姓名不能超过20个字符!n);elsebreak;printf(重新输入姓名: );while(1); /循环以保证读入数据有效void getperson_num(char *person_num) /函数功能:读取用户身份证号码(15位 或者 18位 ) doint i,mark;char ch;for(i=0,mark=0;i+) /输入有效性判断(只能是数字)if(ch=getchar()!=n)if(ch=0)person_numi=ch;elseprintf(身份证号码只能是数字!n);mark=1;break;else break;person_numi=0;if(mark=1)continue;if(strlen(person_num)!=15&strlen(person_num)!=18)printf(身份证号码只能是15位,或者18位!n);elsebreak;printf(重新输入身份证号码: );while(1);/循环以保证读入数据有效void select_name()/按照姓名查询账户余额void getname(char *name);printf(%30sn,*按照姓名查询账户余额*);printf(%8s %15s %15s %10sn,账号,用户姓名,身份证号码,存款余额);printf(-nn);FILE * fp;struct user temp;char name20;if(fp=fopen(file,rb)=NULL)printf(cannot open file!n);exit(1);printf(输入要查询的姓名:); /调用读取用户名函数getname(name);while(fread(&temp,sizeof(struct user),1,fp) /循环读取每一条记录 判断是否为要查看的记录if(strcmp(,name)=0)printf(NO.%d %15s %15s %.2fn,temp.id,,temp.person_num,temp.money);fclose(fp);void select_id() /按照账号查询账户余额int count();printf(%30sn,*按照编号查询账户余额*);printf(%8s %15s %15s %10sn,编号,用户姓名,身份证号码,存款余额);printf(-nn);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(imaxnum)printf(你要查询的账号不存在!);return;while(fread(&temp,sizeof(struct user),1,fp)/循环读取每一条记录 判断是否为要查看的记录if(temp.id=i)printf(NO.%d %15s %15s %.2fn,temp.id,,temp.person_num,temp.money);fclose(fp);void display() /显示用户资料printf(%30sn,*用户资料显示*); printf(%8s %15s %15s %10sn,账号,用户姓名,身份证号码,存款余额);printf(-nn);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 %.2fn,temp.id,,temp.person_num,temp.money);fclose(fp);void save_money() /函数功能:按账号存款printf(%30sn,*用户存款业务*);printf(-nn);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;i+)/将文件内容存入数组fread(&tempi,sizeof(struct user),1,fp);fclose(fp);printf(输入要存款账号:); /读取存款账号scanf(%d,&mark);if(marknum)printf(你要存款账号不存在!);return;if(fp=fopen(file,wb)=NULL) /写方式打开文件,覆盖原文件中的内容printf(cannot open file!n);exit(1);for(i=0;inum;i+)if(tempi.id=mark)double money=0;printf(输入要存入的金额:);scanf(%lf,&money);if(money=0)printf(只能为正数!n);money=0;tempi.money +=money; /修改该用户的信息fwrite(&tempi,sizeof(struct user),1,fp);fclose(fp);free(temp);printf(你存款业务已办妥!n);void get_money() /函数功能:用户取款printf(%30sn,*用户取款业务*);printf(-nn);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;i+)/读取文件内容fread(&tempi,sizeof(struct user),1,fp);fclose(fp);printf(输入要取款账号:);scanf(%d,&mark);if(marknum)printf(你要取款账号不存在!);return;if(fp=fopen(file,wb)=NULL)printf(cannot open file!n);exit(1);for(i=0;inum;i+) /写方式打开文件,覆盖原文件中的内容if(tempi.id=mark) double money=0;printf(输入要取出的金额:);scanf(%lf,&money);if(moneytempi.money)printf(你的余额不足!n);money=0;tempi.money -=money;fwrite(&tempi,sizeof(struct user),1,fp);fclose(fp);free(temp);printf(你取款业务已办妥!n);void del() /销户 int count();printf(%30sn,*注销账户*);printf(%8s %15s %15s %10sn,账号,用户姓名,身份证号码,存款余额);printf(-nn);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(imaxnum)printf(你要查询的账号不存在!);return;while(fread(&temp,sizeof(struct user),1,fp)/循环读取每一条记录 判断是否为要查看的记录if(temp.id=i&temp.money=0.00)/余额为0temp.id=-1;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- (完整版)监控系统安装施工方案
- 初中语文期末冲刺复习试题集
- 小学三年级语文理解力提升练习
- 新教师入职培训方案及心理辅导策略
- 红山区过年活动方案
- 八年级语文文学常识复习资料
- 智慧城市地下设施信息管理系统方案
- 线上征文活动策划方案
- 纵享温情端午活动方案
- 2023年武汉中考语文试题详解
- 乘坐电梯的安全注意事项
- 装饰材料与施工工艺
- 单音词-复音词-同义词课件
- 起重机安全管理规定
- 沈飞人力资源管理流程
- 村卫生室健康教育知识讲座教学文稿
- 共青团团课主题班会课件PPT模板PPT
- 深水录井新技术应用及录井技术在油气勘探中遇到的挑战中海石油深圳
- 食品营养学(暨南大学)智慧树知到答案章节测试2023年
- 日常伤口处理
- 富宁县方鑫黄金矿业有限责任公司毛姐山金矿采矿权出让收益评估报告
评论
0/150
提交评论