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

下载本文档

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

文档简介

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

2、实现对既定文件的读入,编码压缩后存入另一文件,调出编码后 的文件进行译码输出并存入新文件。计划与进 步的安排1. 搜集资料,理解原理,分析已有的编码1天2. 分模块分析,画出实验流程图1天3. 编写源代码2天4. 编译运行,对既定文件进行编码译码2天5. 实验总结1天摘要1题目分析目录错误!未定义书签错误!未定义书签2概要设计 23详细设计 24调试设计 55用户使用说明 66 测试结果 67 结论体会 8参考文献 89源程序9摘要随着计算机的普及,现代人越来越多的想到用计算机来代替许多人做的事 情。从而提高办事效率,使经济收入更加可观,从而就产生了计算机这门课程。 随着信息技术的飞速发展,大

3、量信息需要传输,传输信息就要先经过编码,然后 再译码,可见编码技术的提高对整个信息产业有着举足轻重的作用。而计算机主要是通过程序来实现各种事情的,再者程序也必须通过各种算法才能达到存储各 种数据,所以数据结构这门课程就应运而生。本课程设计主要是用数据结构编写 关于活期储蓄账目管理的算法,来达到活期储蓄账目管理的目的。关键词:编码 存储 活期储存账目管理错误!未定义书签数据结构课程设计1题目分析活期储蓄管理系统用户通过该系统可以进行存款、取款、销户等业务。该系 统在金融业给人民带来了很大的方便,系统开发成功后,一旦应用于银行领域, 会给管理员与用户带来很大的方便,其主要作用具体如下:1)、可以代

4、替营业员进行许多繁杂的手动操作。2)、给用户带来了很大的方便。3 )、可以节省许多人力资源。4 )、可以提高人们的工作效率。活期储蓄账目管理系统主要是由于在活期储蓄处理中,储户开户、销户、存入、支出活动频繁,为实现储户的各种操作而设计的, 本课程设计的主要功能包 括实现储户开户、销户、存入、支出等活动,为了能比较迅速找到账户,实现这 样的几个功能,就要通过链表来存储数据结构,其结构则按照C语言的相关知识 定义结构体,其中储户开户、销户就是实现链表的插入与删除,而存入、支出等 活动则是实现链表中结点的查找,然后进行更改。2概要设计1) 、数据结构:typedef struct message c

5、har n ame10; char sex3; int old; char no20; double base; double ir; int code; int year; int yday; message *n ext;message,*Message;2) 、各种函数说明:Message out()将txt文件中的信息读出 tm * date();调用系统时间void make();对文件中已有账户进行处理 void it(Message );将信息写入txt文件 void create()创建新账户void debit(Message);从账户中取款 void credit(Mess

6、age);向账户中存款 in t chaxu n();查询账户信息void rework(Message);修改账户密码 int ma in();主函数3详细设计1)、头文件headerfile.h中,声明结构体和函数:typedef struct message char n ame10; char sex3; int old;char no20; double base; double ir; int code; int year; int yday; message *n ext;message,*Message; Message out();tm * date(); void make

7、();void it(Message ); void create();void debit(Message); 图1程序结构图图1程序结构图void credit(Message); int chax un();void rework(Message);2)int main()/主函数int choice=0;while(1) cout«"请选择操作:1、创建账户2、查询账户0、退出n"cin> >choice;switch(choice)case 1:create();break;case 2:chax un() ;break;case 0:ret

8、ur n 0;default:cout<<"你敲错键了。n"break; tm * date()调用系统时间time_t rawtime;struct tm * timei nfo;time ( & rawtime );timei nfo = localtime ( & rawtime );return time info;void make()预处理账目Message p,q,head=out();p=head->n ext;while(p!=NULL)for(i nt i=1;i<二d->tm_yday-p->yday

9、+365*(d->tm_year-p->year);i+) 一 一 p->base=p->base+p->base*p->ir;p=p->n ext;q=head->n ext;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&q

10、uot;);if(!fin) cout«"文件打开失败 n"return head;elsewhile(!fi n.eof()q=new message;fin>>q->n ame»q->sex>>q->old>> q->no>> q->base>>q->ir>>q->code>>q->yea r»q->yda;q-> next=NULL;p->n ext=q;p=p->n ext;fin

11、.close();retur n head;void it(Message q)/将信息写入txt文件ofstream fout("Message.txt",ios:app);if(!fout) cout«"文件打开失败 n" fout«e ndl<< q->n ame<<" "<<q->sex<<""<<q->old<<""<< q->no<<"

12、"vvq->base<v" "<<q->ir<<" "<vq->code<v" "<<d->tm_yearvv" "<<d->tm_yday; fout.close();void create。/创建账户Message q=new message; cout«"*请输入客户的信息*"<<endl; cout«"姓名:";cin»q

13、->name;coutvv"性另廿:"cin>> q->sex;cout«"年龄:"cin»q->old;coutvv"身份证号:"cin>>q->no;cout«"本金:"cin>> q->base;coutvv"禾 率:"cin>> q->ir;coutvv"密码:"cin>> q->code; q->year=d->tm_yea

14、r;q->yday=d->tm_yday; q->n ext=NULL;it(q);士void debit(Message p)/取款double mon ey,m;coutvv"请输入取款金额:"cin>>mon ey;m=p->base-m on ey;if(mv0.00)coutvv"余额不足!n"else coutvv"取款成功!n"vv"当前余额为:"vvm;p->base=m;coutvvendl; 丄void credit(Message p)/存款doubl

15、e mon ey,m;coutvv"请输入存款金额:"ci n>>mo ney;m=p->base+m on ey;coutvv"存款成功!n"vv"当前余额为:"vvm;p->base=m;coutvvendl;void rework(Message p)/修改密码int code1,code2;coutvv"请输入新密码:"cin> >code1;coutvv"请再次输入新密码:"c in >>code2; if(code1=code2)cou

16、tvv"修改密码成功! n"p->code=code1; else coutvv'两次输入的新密码不一致!修改密码失败!n"in t chaxu n()查询账户make();Message head=new message;head=out();Message p,q;p=head->n ext; char a20;i nt b,choice;coutvv"请输入要查询的账户的身份证号:"c in> >a;cout«"请输入密码:"c in> >b;while(p!=NU

17、LL)if(strcmp(a,p->n o)=0&&b=p->code)coutvv"*要查询的账户信息为*"<<endl;coutvv"姓名"vvsetw(6)<<"性别"<<setw(5)<<"年龄 "<<setw(15)vv"身份证号"<<setw(13)vv"余额"<<setw(10)vv"利率 n"coutvvp->n amevv

18、setw(5)vvp->sexvvsetw(5)vvp->old<vsetw(20)vvp->no <<set w(9)vvp->basev<setw(10)vvp->irvve ndl;break;else p=p->n ext;if(p=NULL)cout<<"账户或密码错误!n"return 0; while(1)coutvv"请选择操作:1、存款 2、取款 3、修改密码0、回主菜单n "c in> >choice;switch(choice)case 1:cred

19、it(p);break;case 2:debit(p);break;case 3:rework(p);break;case 0:retur n 0;default:coutvv"你敲错键了。n"break;q=head->n ext;ofstream fout("Message.txt");fout.close(); while(q!=NULL)it(q);q=q->n ext;4调试分析程序调试采用Dev C+实现,程序在调试过程中遇到了各种问题,首先在开 户程序是时我是主函调试错误,在原理上是可行,但调试时总得不到正确结果, 后来改为基本

20、类型整型后就很好的得到了满意结果,其它一些小错误在不断地调 试,不断地改善后,基本达到可满意的效果5数据结构课程设计5用户使用图3取款6数据结构课程设计图3取款#数据结构课程设计-T舌期储蓄帐目管理系统十1,2,按步骤开户完成一系列操作户 肖 Ail询询息杳査信 户名口户 莹账用 户照矍si習岀札7,8,图3取款#数据结构课程设计图2主界面6测试结果图3取款#数据结构课程设计图3取款#数据结构课程设计i Eildd.exeX"用户取款业务dx=1製号工办A入取图3取款#数据结构课程设计7数据结构课程设计N0.1NO. 2NO.3NO. 4NO.5NO. 612365478998745

21、6.00三浩1236547899874561&&Q&.0012365478998745610000.00辜浩1236547899874561&&Q&.001112365478998745610000.00李浩1236547899874561000B.00图4用户资料图5余额查询#数据结构课程设计8数据结构课程设计口 X务c子符数<20>=李浩份证号码:123654789987456:10000“添加用户云姓身聲 户户金成 用用户户 入入开用 iAto 请请输添#数据结构课程设计图6用户添加7结论体会第一次做课程设计,开始自己读题时,思

22、路不是很清晰,首先定义了一个结 构体,包含了储户的各类信息,如姓名,账号,金额等等,并利用文件将用户信 息加以存储。开户时将输入的信息写入文件,存款和取款时对用户的存款加以处 理并更新到文件中。在分析好活期储蓄帐目管理的功能模块后,开始编写代码, 通过这次对银行管理系统的编写与调试, 巩固了有关结构体的知识及其操作,锻 炼了实际应用能力。8参考文献1 冯博琴.软件技术基础(修改版)西安交通大学出版社,1997.2 严蔚敏.数据结构.清华大学出版社,2003.3 李芸芳.软件技术基础(第二版).清华大学出版社,2000.4 徐孝凯.数据结构(C语言描述).清华大学出版社,2004.9源程序#i

23、nclude<stdio.h> #i nclude<stri ng.h>#in cludevc oni o.h>#i nclude<stdlib.h>#defi ne file "temp.txt"/数据存储的文件名姓名,身份证号,以生成自动账struct user用户类型定义(账号,余额)int id;char n ame20;char pers on_nu m19;double mon ey;void add()添加用户资料printf("%30sn","* 添加用户 *");printf

24、("nn");struct user getuser();int count();/函数目的:计算文件中的记录数目号FILE *fp;int nu mber;struct user temp;if(fp=fope n(file,"ab")=NULL)printf("cannot open file!n"); exit(1);temp=getuser();读取用户名nu mber=co un t();temp.id=nu mbe叶1;/生成自动账号fwrite(&temp,sizeof(struct user),1,fp);pr

25、intf("添加用户成功!n");fclose(fp);in t cou nt()函数目的:计算文件中的记录总数FILE *fp;int num;struct user temp;num=0;if(fp=fope n(file,"rb")=NULL)printf("cannot open file!n”); exit(1);while(fread(&temp,sizeof(struct user),1,fp)nu m+;fclose(fp);return num;struct user getuser()void get name(ch

26、ar *n ame);void getpers on_nu m(char *pers on_nu m);struct user temp;printf("请输入用户姓名(字符数<20):");读取相关开户信息get name(temp .n ame);printf("请输入用户身份证号码:");getpers on_nu m(temp.pers on_nu m);printf("输入开户金额:");do/判断开户金额(>=100)scan f("%lf", &temp.m on ey);fflu

27、sh(stdi n);if(temp.mo ney)<100.0)printf("开户金额不能小于100n");elsebreak;printf("重新输入开户金额:");while(1);return temp;void getname(char *name)/函数功能:读取用户姓名(字符数<20)do scan f("%s", name);fflush(stdi n);if(strle n(n ame)=0) printf("姓名不能为空!n");elseif(strle n(n ame)>=

28、20) printf("姓名不能超过20个字符!n"); else break;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<=9&&ch>='0')pers on_nu mi=c

29、h;elseprintf("身份证号码只能是数字!n");mark=1;break;elsebreak;pers on_nu mi='0'if(mark=1)con ti nue;if(strle n(pers on_nu m)!=15&&strle n(pers on_nu m)!=18) printf("身份证号码只能是15位,或者18位!n");elsebreak;printf("重新输入身份证号码:");while(1);循环以保证读入数据有效void select_name()/按照姓名查询账

30、户余额void get name(char *n ame);printf("%30sn","*按照姓名查询账户余额*");printf("%8s %15s %15s %10sn","账号","用户姓名","身份证号码","存款余额 ");printf("nn");FILE * fp;struct user temp;char n ame20;if(fp=fope n(file,"rb")=NULL)printf(&q

31、uot;cannot open file!n");exit(1);printf("输入要查询的姓名:");/调用读取用户名函数get name( name);while(fread(&temp,sizeof(struct user),1,fp)/ 循环读取每一条记录判断是否为要查看的记录if(strcmp(temp .n ame ,n ame)=0)printf("NO.%d %15s %15s %.2fn",temp.id,,temp.person_num,temp. mon ey);fclose(fp);void

32、select_id()按照账号查询账户余额int coun t();printf("%30sn","*按照编号查询账户余额*");printf("%8s %15s %15s %10sn","编号","用户姓名","身份证号码","存款余额 ");printf("nn");FILE * fp; struct user temp; int i,max num;if(fp=fope n(file,"rb")=NULL)pr

33、intf("cannot open file!n”); exit(1);maxnum=co un t();printf("输入要查询账号:");判断账号是否在记录中sca nf("%d",&i);if(i<1|i>max num)printf("你要查询的账号不存在!");return;while(fread(&temp,sizeof(struct user),1,fp)循环读取每一条记录判断是否为要查看的记录if(temp.id=i)printf("NO.%d %15s %15s %.

34、2fn",temp.id,,temp.person_num,temp. mon ey);fclose(fp);void display()/显示用户资料printf("%30sn","* 用户资料显示 *");printf("%8s %15s %15s %10sn","账号","用户姓名","身份证号码","存款余额 ");printf("nn");FILE * fp;struct user temp;if(

35、fp=fope n(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. mon ey);fclose(fp);void save_mo ney() /函数功能:按账号存款printf("%30sn","* 用户存款业务

36、 *");printf("nn");int coun t();FILE *fp;int i,num ,mark;struct user *temp;num=cou nt();根据记录数申请空间temp=(struct user *)malloc(num*sizeof(struct user);if(fp=fope n(file,"rb")=NULL)printf("cannot open file!n");exit(1);for(i=0;i< num;i+)/将文件内容存入数组fread(&tempi,size

37、of(struct user),1,fp);fclose(fp);printf("输入要存款账号:");/读取存款账号sca nf("%d",&mark);if(mark<1|mark >num)printf("你要存款账号不存在!");return;if(fp=fope n(file,"wb")=NULL)/写方式打开文件,覆盖原文件中的内容printf("cannot open file!n");exit(1);for(i=0;i <nu m;i+)if(tempi

38、.id=mark)double mon ey=0;printf("输入要存入的金额:"); sea nf("%lf",&mon ey);if(mon ey<=0)printf("只能为正数!n");mon ey=0;tempi.m oney +=mon ey;/修改该用户的信息 fwrite(&tempi,sizeof(struct user),1,fp);fclose(fp);free(temp);printf("你存款业务已办妥!n");void get_mo ney()函数功能:用户取款

39、printf("%30sn","* 用户取款业务 *"); printf("nn");int coun t();FILE *fp;int i,num ,mark;struct user *temp;num=cou nt();/根据记录数申请空间temp=(struct user *)malloc(num*sizeof(struct user);if(fp=fope n(file,"rb")=NULL)printf("cannot open file!n"); exit(1);for(i=0;i&

40、lt; nu m;i+)读取文件内容fread(&tempi,sizeof(struct user),1,fp);fclose(fp);printf("输入要取款账号:"); sca nf("%d",&mark); if(mark<1|mark >num)printf("你要取款账号不存在门; return;if(fp=fope n(file,"wb")=NULL)printf("cannot open file!n”); exit(1);for(i=0;i< num;i+)/写方

41、式打开文件,覆盖原文件中的内容if(tempi.id=mark)double mon ey=0;printf("输入要取出的金额:");sea nf("%lf",&mon ey);if(mo ney<=0)判断用户余额是否足够printf("只能为正数!n");mon ey=0;elseif(mon ey>tempi.m on ey)printf("你的余额不足!n");mon ey=0;tempi.m oney -=mon ey;fwrite(&tempi,sizeof(struct

42、user),1,fp);fclose(fp);free(temp);printf("你取款业务已办妥!n");void del()销户int eoun t();printf("%30sn","* 注销账户 *");printf("%8s %15s %15s %10sn","账号","用户姓名","身份证号码","存款余额 ");printf("nn");FILE * fp; struct user temp; int

43、 i,max num;if(fp=fope n(file,"rb")=NULL) printf("cannot open file!n"); exit(1);maxnum=co un t();printf("输入要销户账号:");判断编号是否在记录中sca nf("%d",&i);if(i<1|i>max num)printf("你要查询的账号不存在!");return;while(fread(&temp,sizeof(struct user),1,fp)循环读取每一条记录判断是否为要查看的记录if(temp.id=i&&temp.money=0.00) 余额为 0 temp.id=-1

温馨提示

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

评论

0/150

提交评论