活期储蓄账目管理_第1页
活期储蓄账目管理_第2页
活期储蓄账目管理_第3页
活期储蓄账目管理_第4页
活期储蓄账目管理_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数据结构课程设计 题 目: 活期储蓄账目管理 学 院: 班 级: 学生姓 名: 学生学 号: 指导教 师: 2013 年 11 月 27 日 课程设计任务书 姓名 班级 学号 设计题目 活期储蓄账目管理 理论要点 1. 活期储蓄处理中,储户开户、销户、存入、支出活动频繁,系 统设计要求: 2. 能比较迅速地找到储户的帐户,以实现存款、取款记账;并能 实现排序。 3. 能比较简单, 迅速地实现插入和删除, 以实现开户和销户的需 要。 设计目标 1. 代替营业员进行许多繁杂的手动操作。 2. 给用户带来了很大的方便。 3. 节省许多人力资源。 4. 提高人们的工作效率。 研究方法 步骤 1. 设计

2、程序流程图 2. 编写源程序 3. 编译运行,对指定文件进行编码译码 预期结果 实现对既定文件的读入, 编码压缩后存入另一文件, 调出编码后 的文件进行译码输出并存入新文件。 计划与进 步的安排 1. 搜集资料,理解原理,分析已有的编码 1 天 2. 分模块分析,画出实验流程图 1 天 3. 编写源代码 2 天 4. 编译运行,对既定文件进行编码译码 2 天 5. 实验总结 1 天 摘要 1 题目分析 目录 错误!未定义书签 错误!未定义书签 2 概要设计 2 3 详细设计 2 4 调试设计 5 5 用户使用说明 6 6 测试结果 6 7 结论体会 8 8 参考文献 8 9 源程序 摘要 随着

3、计算机的普及,现代人越来越多的想到用计算机来代替许多人做的事 情。从而提高办事效率,使经济收入更加可观,从而就产生了计算机这门课程。 随着信息技术的飞速发展, 大量信息需要传输, 传输信息就要先经过编码, 然后 再译码,可见编码技术的提高对整个信息产业有着举足轻重的作用。 而计算机主 要是通过程序来实现各种事情的, 再者程序也必须通过各种算法才能达到存储各 种数据,所以数据结构这门课程就应运而生。 本课程设计主要是用数据结构编写 关于活期储蓄账目管理的算法,来达到活期储蓄账目管理的目的。 关键词: 编码 存储 活期储存账目管理 错误!未定义书签 数据结构课程设计 1 题目分析 活期储蓄管理系统

4、用户通过该系统可以进行存款、取款、销户等业务。该系 统在金融业给人民带来了很大的方便,系统开发成功后,一旦应用于银行领域, 会给管理员与用户带来很大的方便,其主要作用具体如下: 1 )、可以代替营业员进行许多繁杂的手动操作。 2)、给用户带来了很大的方便。 3 )、可以节省许多人力资源。 4 )、可以提高人们的工作效率。 活期储蓄账目管理系统主要是由于在活期储蓄处理中, 储户开户、 销户、存 入、支出活动频繁, 为实现储户的各种操作而设计的, 本课程设计的主要功能包 括实现储户开户、销户、存入、支出等活动,为了能比较迅速找到账户,实现这 样的几个功能, 就要通过链表来存储数据结构, 其结构则按

5、照 C语言的相关知识 定义结构体,其中储户开户、销户就是实现链表的插入与删除,而存入、支出等 活动则是实现链表中结点的查找,然后进行更改。 2 概要设计 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();调用系统时间 v

6、oid make();对文件中已有账户进行处理 void it(Message ); 将信息写入 txt 文件 void create();创建新账户 数据结构课程设计 void debit(Message); 从账户中取款 void credit(Message); 向账户中存款 int chaxun();查询账户信息 void rework(Message); 修改账户密码 int main();主函数 3 详细设计 1)、头文件 headerfile.h 中,声明结构体和函数: typedef struct message char name10; char sex3; int old;

7、 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); 图1 程序结构图 图 1 程序结构图 void credit(Message); int chaxun(); void rework(Message); 2)、int main()/ 主函数 int choic

8、e=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

9、(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-yea rq-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)

10、; 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);

11、 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; coutco

12、de2; if(code1=code2)coutcode=code1; else coutnext; char a20;int b,choice; 数据结构课程设计 couta; coutb; while(p!=NULL) if(strcmp(a,p-no)=0 cout 姓 名 setw(6) 性 别 setw(5) 年 龄 setw(15)身份证号 setw(13)余额setw(10)利率n; coutnamesetw(5)sexsetw(5)oldsetw(20)noset w(9)basesetw(10)irnext; if(p=NULL)cout 账户或密码错误 !n;return

13、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; 4 调试分析 程序调试采用 Dev C+实现,程序在调试过程中遇到了各种问题,首先在开 户程序是时我是主函调试错误, ,在原理上是可行, 但调试时总得不到正确结果,

14、 后来改为基本类型整型后就很好的得到了满意结果, 其它一些小错误在不断地调 试,不断地改善后,基本达到可满意的效果 数据结构课程设计 5 用户使用 按步骤开户完成一系列操作 图 2 主界面 6 测试结果 图3 取款 6 数据结构课程设计 图 4 用户资料 图5 余额查询 数据结构课程设计 图6 用户添加 7 结论体会 第一次做课程设计, 开始自己读题时, 思路不是很清晰, 首先定义了一个结 构体,包含了储户的各类信息,如姓名,账号,金额等等,并利用文件将用户信 息加以存储。 开户时将输入的信息写入文件, 存款和取款时对用户的存款加以处 理并更新到文件中。在分析好活期储蓄帐目管理的功能模块后,开

15、始编写代码, 通过这次对银行管理系统的编写与调试, 巩固了有关结构体的知识及其操作, 锻 炼了实际应用能力。 8 参考文献 1 冯博琴. 软件技术基础(修改版) . 西安交通大学出版社, 1997. 2 严蔚敏. 数据结构 .清华大学出版社, 2003. 3 李芸芳. 软件技术基础(第二版) . 清华大学出版社, 2000. 4 徐孝凯.数据结构( C语言描述) .清华大学出版社, 2004. 9 源程序 #include #include 数据结构课程设计 #include #include 姓名,身份证号, 以生成自动账 #define file temp.txt/ 数据存储的文件名 st

16、ruct 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); te

17、mp=getuser();/ 读取用户名 number=count(); temp.id=number+1;/ 生成自动账号 fwrite( 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( fclose(fp); return num; struct user get

18、user() void getname(char *name); void getperson_num(char *person_num); struct user temp; printf(请输入用户姓名 (字符数 =100) scanf(%lf, fflush(stdin); if(temp.money)100.0) printf( 开户金额不能小于 100n); else break; printf( 重新输入开户金额: ); while(1); return temp; void getname(char *name) /函数功能:读取用户姓名 (字符数 =20) printf(姓名不

19、能超过 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=0) person_numi=ch; else printf( 身份证号码只能是数字 !n); mark=1; break; else break;

20、person_numi=0; if(mark=1) continue; if(strlen(person_num)!=15 else break; printf( 重新输入身份证号码 : ); while(1);/循环以保证读入数据有效 11 数据结构课程设计 void select_name()/按照姓名查询账户余额 void getname(char *name); printf(%30sn,* 按照姓名查询账户余额 *); printf(%8s %15s %15s %10sn,账号,用户姓名,身份证号码 ,存款余额 ); printf(nn); FILE * fp; struct use

21、r temp; char name20; if(fp=fopen(file,rb)=NULL) printf(cannot open file!n); exit(1); printf( 输入要查询的姓名 :);/调用读取用户名函数 getname(name); while(fread( fclose(fp); void select_id()/按照账号查询账户余额 int count(); printf(%30sn,* 按照编号查询账户余额 *); printf(%8s %15s %15s %10sn,编号,用户姓名,身份证号码 ,存款余额 ); printf(nn); FILE * fp;

22、struct user temp; int i,maxnum; 12 数据结构课程设计 if(fp=fopen(file,rb)=NULL) printf(cannot open file!n); exit(1); maxnum=count(); printf( 输入要查询账号 :);/判断账号是否在记录中 scanf(%d, if(imaxnum) printf( 你要查询的账号不存在 !); return; while(fread( fclose(fp); void display()/显示用户资料 printf(%30sn,* 用户资料显示 *); printf(%8s %15s %15

23、s %10sn,账号,用户姓名,身份证号码 ,存款余额 ); printf(nn); FILE * fp; struct user temp; if(fp=fopen(file,rb)=NULL) printf(cannot open file!n); exit(1); while(fread( 13 数据结构课程设计 fclose(fp); void save_money() /函数功能:按账号存款 printf(%30sn,* 用户存款业务 *); printf(nn); int count(); FILE *fp; int i,num,mark; struct user *temp; n

24、um=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( fclose(fp); printf( 输入要存款账号 :);/读取存款账号 scanf(%d, if(marknum) printf( 你要存款账号不存在 !); return; if(fp=fopen(file,wb)=NULL)/写方式打开文件,覆盖

25、原文件中的 内容 printf(cannot open file!n); exit(1); for(i=0;inum;i+) if(tempi.id=mark) double money=0; 14 数据结构课程设计 printf( 输入要存入的金额 :); scanf(%lf, if(money=0) printf( 只能为正数 !n); money=0; tempi.money +=money;/ 修改该用户的信息 fwrite( fclose(fp); free(temp); printf( 你存款业务已办妥 !n); void get_money() /函数功能:用户取款 printf

26、(%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( fclose(fp); printf( 输入要取款账号 :); scanf(%d

27、, if(marknum) printf( 你要取款账号不存在 !); return; 15 数据结构课程设计 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, if(moneytempi.money) printf(你的余额不足 !n); money=0; tempi.money -=money; fwrite( f

28、close(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; 16 数据结构课程设计 if(fp=fopen(file,rb)=NULL) printf(cannot open file!n); exit(1); maxnum=count(); printf( 输入要销户账号 :);/判断编号是否在记录中 scanf(%d, if(imaxnum) printf( 你要查询的账号不存在 !); return; while(fread(/ 算无效帐户 printf(NO.%d %15s %15s %.2fn,temp.id,,temp.person_num,temp. money);

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论