




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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天目录摘要I1 题目分析12 概要设计23 详细设计24 调试设计55 用户使用说明66 测试结果67 结论体会88 参考文献89 源程序9摘要 随着计算机的普及,现代人越来越多的想到用计算机来代替许多人做的事情。从而提高办事效率,使经济收入更加可观,从而就产生了计算机这门课程。
3、随着信息技术的飞速发展,大量信息需要传输,传输信息就要先经过编码,然后再译码,可见编码技术的提高对整个信息产业有着举足轻重的作用。而计算机主要是通过程序来实现各种事情的,再者程序也必须通过各种算法才能达到存储各种数据,所以数据结构这门课程就应运而生。本课程设计主要是用数据结构编写关于活期储蓄账目管理的算法,来达到活期储蓄账目管理的目的。关键词:编码 存储 活期储存账目管理I 数据结构课程设计1 题目分析 活期储蓄管理系统用户通过该系统可以进行存款、取款、销户等业务。该系统在金融业给人民带来了很大的方便,系统开发成功后,一旦应用于银行领域,会给管理员与用户带来很大的方便,其主要作用具体如下:
4、160; 1)、可以代替营业员进行许多繁杂的手动操作。 2)、给用户带来了很大的方便。 3)、可以节省许多人力资源。 4)、可以提高人们的工作效率。 活期储蓄账目管理系统主要是由于在活期储蓄处理中,储户开户、销户、存入、支出活动频繁,为实现储户的各种操作而设计的,本课程设计的主要功能包括实现储户开户、销户、存入、支出等活动,为了能比较迅速找到账户,实现这样的几个功能,就要通过链表来存储数据结构,其结构则按照C语言的相关知识定义结构体,其中储户开户、销户就是实现链表的插入与删除,而存入、支出等活动则是实现链表中结点的查找,然后进行更改。2 概要设计1)、数据结构: typedef s
5、truct 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();创建新账户1void debit(Message); 从账户中取款vo
6、id credit(Message); 向账户中存款int chaxun();查询账户信息void rework(Message); 修改账户密码int main();主函数3 详细设计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;Messag
7、e out();tm * date();void make();void it(Message );void create();void debit(Message); 图1 程序结构图void credit(Message); 图1程序结构图int chaxun();void rework(Message);2)、int main()/主函数int choice=0;while(1)cout<<"请选择操作:1、创建账户 2、查询账户 0、退出n"cin>>choice;switch(choice)case 1:create();break;cas
8、e 2:chaxun();break;case 0:return 0;default:cout<<"你敲错键了。n"break;tm * date()/调用系统时间time_t rawtime;struct tm * timeinfo;time ( &rawtime );timeinfo = localtime ( &rawtime );return timeinfo;void make()/预处理账目Message p,q,head=out();p=head->next;while(p!=NULL)for(int i=1;i<=d-
9、>tm_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("M
10、essage.txt");if(!fin) cout<<"文件打开失败n"return head;else while(!fin.eof()q=new message;fin>>q->name>>q->sex>>q->old>>q->no>>q->base>>q->ir>>q->code>>q->year>>q->yda;q->next=NULL;p->next=q;p=p->
11、;next;fin.close();return head;void it(Message q)/将信息写入txt文件ofstream fout("Message.txt",ios:app);if(!fout) cout<<"文件打开失败n" fout<<endl<<q->name<<" "<<q->sex<<" "<<q->old<<" "<<q->no<&
12、lt;" "<<q->base<<" "<<q->ir<<" "<<q->code<<" "<<d->tm_year<<" "<<d->tm_yday;fout.close(); void create()/创建账户Message q=new message;cout<<"*请输入客户的信息*"<<endl;cout
13、<<"姓名:" cin>>q->name;cout<<"性别:" cin>>q->sex;cout<<"年龄:" cin>>q->old;cout<<"身份证号:" cin>>q->no;cout<<"本金:" cin>>q->base;cout<<"利率:" cin>>q->ir;cout<
14、<"密码:" cin>>q->code;q->year=d->tm_year;q->yday=d->tm_yday;q->next=NULL;it(q);void debit(Message p)/取款double money,m;cout<<"请输入取款金额:"cin>>money;m=p->base-money;if(m<0.00)cout<<"余额不足!n"else cout<<"取款成功!n"&
15、lt;<"当前余额为:"<<m;p->base=m;cout<<endl;void credit(Message p)/存款double money,m;cout<<"请输入存款金额:"cin>>money;m=p->base+money;cout<<"存款成功!n"<<"当前余额为:"<<m;p->base=m;cout<<endl;void rework(Message p)/修改密码int
16、code1,code2;cout<<"请输入新密码:"cin>>code1;cout<<"请再次输入新密码:"cin>>code2;if(code1=code2)cout<<"修改密码成功!n"p->code=code1;else cout<<"两次输入的新密码不一致!修改密码失败!n"int chaxun()/查询账户make();Message head=new message;head=out();Message p,q;p=hea
17、d->next;char a20;int b,choice;cout<<"请输入要查询的账户的身份证号:"cin>>a;cout<<"请输入密码:"cin>>b;while(p!=NULL)if(strcmp(a,p->no)=0&&b=p->code) cout<<"*要查询的账户信息为*"<<endl;cout<<" 姓名"<<setw(6)<<"性别"
18、;<<setw(5)<<"年龄"<<setw(15)<<"身份证号"<<setw(13)<<"余额"<<setw(10)<<"利率n"cout<<p->name<<setw(5)<<p->sex<<setw(5)<<p->old<<setw(20)<<p->no<<setw(9)<<p-&g
19、t;base<<setw(10)<<p->ir<<endl;break;else p=p->next;if(p=NULL)cout<<"账户或密码错误!n"return 0;while(1)cout<<"请选择操作:1、存款 2、取款 3、修改密码 0、回主菜单 n"cin>>choice;switch(choice)case 1:credit(p);break;case 2:debit(p);break;case 3:rework(p);break;case 0:ret
20、urn 0;default:cout<<"你敲错键了。n"break;q=head->next;ofstream fout("Message.txt");fout.close();while(q!=NULL)it(q);q=q->next;4 调试分析 程序调试采用Dev C+实现,程序在调试过程中遇到了各种问题,首先在开户程序是时我是主函调试错误,在原理上是可行,但调试时总得不到正确结果,后来改为基本类型整型后就很好的得到了满意结果,其它一些小错误在不断地调试,不断地改善后,基本达到可满意的效果 5 用户使用 按步骤开户完成一系
21、列操作 图2 主界面 6 测试结果 图3 取款 图4 用户资料 图5 余额查询 图6 用户添加7 结论体会 第一次做课程设计,开始自己读题时,思路不是很清晰,首先定义了一个结构体,包含了储户的各类信息,如姓名,账号,金额等等,并利用文件将用户信息加以存储。开户时将输入的信息写入文件,存款和取款时对用户的存款加以处理并更新到文件中。在分析好活期储蓄帐目管理的功能模块后,开始编写代码,通过这次对银行管理系统的编写与调试,巩固了有关结构体的知识及其操作,锻炼了实际应用能力。 8 参考文献1 冯博琴.软件技术基础(修改版).西安交通大学出版社,1997. 2 严蔚敏.数据结构.清华
22、大学出版社,2003. 3 李芸芳.软件技术基础(第二版).清华大学出版社, 2000. 4 徐孝凯.数据结构(C语言描述).清华大学出版社, 2004.9 源程序#include<stdio.h>#include<string.h>#include<conio.h>#include<stdlib.h>#define file "temp.txt" /数据存储的文件名struct user /用户类型定义(账号,姓名,身份证号,余额)int id; char name20;char person_num19
23、;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(); /
24、读取用户名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(&
25、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("请输入用户姓名(字符数<20): "); /读取相关开户信息getname();printf("请输入用户身份证号码: ");getperson_num(temp.person_num);printf(&q
26、uot;输入开户金额:");do /判断开户金额(>=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)doscanf("%s",name);fflush(stdin)
27、;if(strlen(name)=0)printf("姓名不能为空!n");elseif(strlen(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=get
28、char()!='n')if(ch<='9'&&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;prin
29、tf("重新输入身份证号码: ");while(1);/循环以保证读入数据有效void select_name()/按照姓名查询账户余额void getname(char *name);printf("%30sn","*按照姓名查询账户余额*");printf("%8s %15s %15s %10sn","账号","用户姓名","身份证号码","存款余额");printf("-nn");FILE * fp;struc
30、t 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&quo
31、t;,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 u
32、ser 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)
33、/循环读取每一条记录 判断是否为要查看的记录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","账号","用户姓名","身份证号码","存款
34、余额");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
35、_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
36、(1);for(i=0;i<num;i+)/将文件内容存入数组fread(&tempi,sizeof(struct user),1,fp);fclose(fp);printf("输入要存款账号:"); /读取存款账号scanf("%d",&mark);if(mark<1|mark>num)printf("你要存款账号不存在!");return;if(fp=fopen(file,"wb")=NULL) /写方式打开文件,覆盖原文件中的内容printf("cannot ope
37、n file!n");exit(1);for(i=0;i<num;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("
38、你存款业务已办妥!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
39、 open file!n");exit(1);for(i=0;i<num;i+)/读取文件内容fread(&tempi,sizeof(struct user),1,fp);fclose(fp);printf("输入要取款账号:");scanf("%d",&mark);if(mark<1|mark>num)printf("你要取款账号不存在!");return;if(fp=fopen(file,"wb")=NULL)printf("cannot open file
40、!n");exit(1);for(i=0;i<num;i+) /写方式打开文件,覆盖原文件中的内容if(tempi.id=mark) double money=0;printf("输入要取出的金额:");scanf("%lf",&money);if(money<=0)/判断用户余额是否足够printf("只能为正数!n");money=0;elseif(money>tempi.money)printf("你的余额不足!n");money=0;tempi.money -=money
41、;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")
42、;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&&temp.money=0.00)/余额为0temp.id=-1;/算无效帐户printf("NO.%d %15s %15s %.2fn&qu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 餐厅立夏活动方案
- 美术获奖展示活动方案
- 端午公会活动方案
- 美容院面膜活动方案
- 社团项目活动方案
- 线上特色活动方案
- 研读活动策划方案
- 组织公司司庆活动方案
- 美术营销活动方案
- 福建公司中秋活动方案
- 中药材生产与加工专业教学标准(高等职业教育专科)2025修订
- 公司内部电子发票管理制度
- 2025至2030中国乳清粉行业发展分析及前景趋势与投资报告
- 乡村医生招聘面试题及答案详解
- 傅里叶级数习题课
- 医疗质量与医疗安全十八项核心制度
- DB31T 329.24-2019 重点单位重要部位安全技术防范系统要求 第24部分:高校
- 某某医疗机构纳入定点后使用医疗保障基金的预测性分析报告
- 《心理学(第4版)》课件全套 姚本先 第1-11章 绪论 -心理健康与教育
- 2025年大学生信息素养大赛培训考试题库500题(含答案)
- 核电班组考试试题及答案
评论
0/150
提交评论