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

下载本文档

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

文档简介

数据结构课程设计题目:活期储蓄账目管理学院:班级:学生姓名:学生学号:指导教师:2013年11月27日课程设计任务书姓名班级学号设计题目活期储蓄账目管理理论要点1.活期储蓄处理中,储户开户、销户、存入、支出活动频繁,系统设计要求:

2.能比拟迅速地找到储户的帐户,以实现存款、取款记账;并能实现排序。

3.能比拟简单,迅速地实现插入和删除,以实现开户和销户的需要。设计目标1.代替营业员进行许多繁杂的手动操作。

2.给用户带来了很大的方便。3.节省许多人力资源。4.提高人们的工作效率。研究方法步骤1.设计程序流程图2.编写源程序3.编译运行,对指定文件进行编码译码预期结果实现对既定文件的读入,编码压缩后存入另一文件,调出编码后的文件进行译码输出并存入新文件。方案与进步的安排1.搜集资料,理解原理,分析已有的编码1天2.分模块分析,画出实验流程图1天3.编写源代码2天4.编译运行,对既定文件进行编码译码2天5.实验总结1天目录摘要I1题目分析12概要设计23详细设计24调试设计55用户使用说明66测试结果67结论体会88参考文献89源程序9摘要随着计算机的普及,现代人越来越多的想到用计算机来代替许多人做的事情。从而提高办事效率,使经济收入更加可观,从而就产生了计算机这门课程。随着信息技术的飞速开展,大量信息需要传输,传输信息就要先经过编码,然后再译码,可见编码技术的提高对整个信息产业有着举足轻重的作用。而计算机主要是通过程序来实现各种事情的,再者程序也必须通过各种算法才能到达存储各种数据,所以数据结构这门课程就应运而生。本课程设计主要是用数据结构编写关于活期储蓄账目管理的算法,来到达活期储蓄账目管理的目的。关键词:编码存储活期储存账目管理I1题目分析活期储蓄管理系统用户通过该系统可以进行存款、取款、销户等业务。该系统在金融业给人民带来了很大的方便,系统开发成功后,一旦应用于银行领域,会给管理员与用户带来很大的方便,其主要作用具体如下:1〕、可以代替营业员进行许多繁杂的手动操作。2〕、给用户带来了很大的方便。3〕、可以节省许多人力资源。4〕、可以提高人们的工作效率。活期储蓄账目管理系统主要是由于在活期储蓄处理中,储户开户、销户、存入、支出活动频繁,为实现储户的各种操作而设计的,本课程设计的主要功能包括实现储户开户、销户、存入、支出等活动,为了能比拟迅速找到账户,实现这样的几个功能,就要通过链表来存储数据结构,其结构那么按照C语言的相关知识定义结构体,其中储户开户、销户就是实现链表的插入与删除,而存入、支出等活动那么是实现链表中结点的查找,然后进行更改。2概要设计1〕、数据结构:typedefstructmessage{ charname[10]; charsex[3]; intold; charno[20]; doublebase; doubleir; intcode; intyear; intyday; message*next;}message,*Message;2〕、各种函数说明:Messageout();将txt文件中的信息读出tm*date();调用系统时间voidmake();对文件中已有账户进行处理voidit(Message);将信息写入txt文件voidcreate();创立新账户voiddebit(Message);从账户中取款voidcredit(Message);向账户中存款intchaxun();查询账户信息voidrework(Message);修改账户密码intmain();主函数3详细设计1〕、头文件headerfile.h中,声明结构体和函数:typedefstructmessage{ charname[10];主菜单创立账户主菜单创立账户存款查询账户修改密码回主菜单取款退出程序结构图 intold; charno[20]; doublebase; doubleir; intcode; intyear; intyday; message*next;}message,*Message;Messageout();tm*date();voidmake();voidit(Message);voidcreate();voiddebit(Message);图1程序结构图voidcredit(Message);图1程序结构图intchaxun();voidrework(Message);2〕、intmain()//主函数{ intchoice=0; while(1) { cout<<"请选择操作:1、创立账户2、查询账户0、退出\n"; cin>>choice; switch(choice) { case1:create();break; case2:chaxun();break; case0:return0; default:cout<<"你敲错键了。\n";break; } }}tm*date()//调用系统时间{ time_trawtime; structtm*timeinfo; time(&rawtime); timeinfo=localtime(&rawtime); returntimeinfo;}voidmake()//预处理账目{ Messagep,q,head=out(); p=head->next; while(p!=NULL) { for(inti=1;i<=d->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; ofstreamfout("Message.txt"); fout.close(); while(q!=NULL){it(q);q=q->next;}}Messageout()//将txt文件中的信息读出{ Messagep,q,head;head=newmessage;p=head; ifstreamfin("Message.txt"); if(!fin){cout<<"文件翻开失败\n";returnhead;} else while(!fin.eof()) { q=newmessage; 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->next; } fin.close(); returnhead;}voidit(Messageq)//将信息写入txt文件{ ofstreamfout("Message.txt",ios::app); if(!fout){cout<<"文件翻开失败\n";} fout<<endl<<q->name<<""<<q->sex<<""<<q->old<<""<<q->no<<""<<q->base<<""<<q->ir<<""<<q->code<<""<<d->tm_year<<""<<d->tm_yday; fout.close();}voidcreate()//创立账户{ Messageq=newmessage; cout<<"**请输入客户的信息**"<<endl; cout<<"姓名:";cin>>q->name; cout<<"性别:";cin>>q->sex; cout<<"年龄:";cin>>q->old; cout<<"身份证号:";cin>>q->no; cout<<"本金:";cin>>q->base; cout<<"利率:";cin>>q->ir; cout<<"密码:";cin>>q->code; q->year=d->tm_year;q->yday=d->tm_yday; q->next=NULL; it(q);}voiddebit(Messagep)//取款{ doublemoney,m; cout<<"请输入取款金额:";cin>>money; m=p->base-money; if(m<0.00){cout<<"余额缺乏!\n";} else{cout<<"取款成功!\n"<<"当前余额为:"<<m;p->base=m;cout<<endl;}}voidcredit(Messagep)//存款{ doublemoney,m; cout<<"请输入存款金额:";cin>>money; m=p->base+money; cout<<"存款成功!\n"<<"当前余额为:"<<m;p->base=m;cout<<endl;}voidrework(Messagep)//修改密码{ intcode1,code2; cout<<"请输入新密码:";cin>>code1; cout<<"请再次输入新密码:";cin>>code2; if(code1==code2){cout<<"修改密码成功!\n";p->code=code1;} elsecout<<"两次输入的新密码不一致!修改密码失败!\n";}intchaxun()//查询账户{ make(); Messagehead=newmessage;head=out(); Messagep,q;p=head->next; chara[20];intb,choice; cout<<"请输入要查询的账户的身份证号:";cin>>a; cout<<"请输入密码:";cin>>b; 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"; cout<<p->name<<setw(5)<<p->sex<<setw(5)<<p->old<<setw(20)<<p->no<<setw(9)<<p->base<<setw(10)<<p->ir<<endl; break; } elsep=p->next; } if(p==NULL){cout<<"账户或密码错误!\n";return0;} while(1) { cout<<"请选择操作:1、存款2、取款3、修改密码0、回主菜单\n";cin>>choice; switch(choice) { case1:credit(p);break; case2:debit(p);break; case3:rework(p);break; case0:return0; default:cout<<"你敲错键了。\n";break; } q=head->next; ofstreamfout("Message.txt"); fout.close(); while(q!=NULL) { it(q);q=q->next; } }}4调试分析程序调试采用DevC++实现,程序在调试过程中遇到了各种问题,首先在开户程序是时我是主函调试错误,,在原理上是可行,但调试时总得不到正确结果,后来改为根本类型整型后就很好的得到了满意结果,其它一些小错误在不断地调试,不断地改善后,根本到达可满意的效果5用户使用按步骤开户完成一系列操作图2主界面6测试结果图3取款图4用户资料图5余额查询图6用户添加7结论体会第一次做课程设计,开始自己读题时,思路不是很清晰,首先定义了一个结构体,包含了储户的各类信息,如姓名,账号,金额等等,并利用文件将用户信息加以存储。开户时将输入的信息写入文件,存款和取款时对用户的存款加以处理并更新到文件中。在分析好活期储蓄帐目管理的功能模块后,开始编写代码,通过这次对银行管理系统的编写与调试,稳固了有关结构体的知识及其操作,锻炼了实际应用能力。8参考文献[1]冯博琴.软件技术根底〔修改版〕.西安交通大学出版社,1997.[2]严蔚敏.数据结构.清华大学出版社,2003.[3]李芸芳.软件技术根底〔第二版〕.清华大学出版社,2000.[4]徐孝凯.数据结构〔C语言描述〕.清华大学出版社,2004.9源程序#include<stdio.h>#include<string.h>#include<conio.h>#include<stdlib.h>#definefile"temp.txt"//数据存储的文件名structuser//用户类型定义(账号,姓名,身份证号,余额){ intid; charname[20]; charperson_num[19]; doublemoney;};voidadd()//添加用户资料{ printf("%30s\n","***添加用户***"); printf("\n\n"); structusergetuser(); intcount();//函数目的:计算文件中的记录数目以生成自动账号 FILE*fp; intnumber; structusertemp; if((fp=fopen(file,"ab"))==NULL) { printf("cannotopenfile!\n"); exit(1); } temp=getuser();//读取用户名 number=count(); temp.id=number+1;//生成自动账号 fwrite(&temp,sizeof(structuser),1,fp); printf("添加用户成功!\n"); fclose(fp);}intcount() //函数目的:计算文件中的记录总数{ FILE*fp; intnum; structusertemp; num=0; if((fp=fopen(file,"rb"))==NULL) { printf("cannotopenfile!\n"); exit(1); } while(fread(&temp,sizeof(structuser),1,fp)) { num++; } fclose(fp); returnnum;}structusergetuser(){ voidgetname(char*name); voidgetperson_num(char*person_num); structusertemp; printf("请输入用户姓名(字符数<20):");//读取相关开户信息 getname(); printf("请输入用户身份证号码:"); getperson_num(temp.person_num); printf("输入开户金额:"); do{//判断开户金额(>=100) scanf("%lf",&temp.money); fflush(stdin); if((temp.money)<100.0) printf("开户金额不能小于100\n"); else break; printf("重新输入开户金额:"); }while(1); returntemp;}voidgetname(char*name)//函数功能:读取用户姓名(字符数<20){ 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);//循环以保证读入数据有效}voidgetperson_num(char*person_num)//函数功能:读取用户身份证号码(15位或者18位){ do{ inti,mark; charch; 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); //循环以保证读入数据有效}voidselect_name() //按照姓名查询账户余额{ voidgetname(char*name); printf("%30s\n","***按照姓名查询账户余额***"); printf("%8s%15s%15s%10s\n","账号","用户姓名","身份证号码","存款余额"); printf("\n\n"); FILE*fp; structusertemp; charname[20]; if((fp=fopen(file,"rb"))==NULL) { printf("cannotopenfile!\n"); exit(1); } printf("输入要查询的姓名:");//调用读取用户名函数 getname(name); while(fread(&temp,sizeof(structuser),1,fp))//循环读取每一条记录判断是否为要查看的记录 if(strcmp(,name)==0) { printf("NO.%d%15s%15s%.2f\n",temp.id,,temp.person_num,temp.money); } fclose(fp);}voidselect_id()//按照账号查询账户余额{ intcount(); printf("%30s\n","***按照编号查询账户余额***"); printf("%8s%15s%15s%10s\n","编号","用户姓名","身份证号码","存款余额"); printf("\n\n"); FILE*fp; structusertemp; inti,maxnum; if((fp=fopen(file,"rb"))==NULL) { printf("cannotopenfile!\n"); exit(1); } maxnum=count(); printf("输入要查询账号:");//判断账号是否在记录中 scanf("%d",&i); if(i<1||i>maxnum) { printf("你要查询的账号不存在!"); return; } while(fread(&temp,sizeof(structuser),1,fp))//循环读取每一条记录判断是否为要查看的记录 if(temp.id==i) { printf("NO.%d%15s%15s%.2f\n",temp.id,,temp.person_num,temp.money); } fclose(fp);}voiddisplay()//显示用户资料{ printf("%30s\n","***用户资料显示***"); printf("%8s%15s%15s%10s\n","账号","用户姓名","身份证号码","存款余额"); printf("\n\n"); FILE*fp; structusertemp; if((fp=fopen(file,"rb"))==NULL) { printf("cannotopenfile!\n"); exit(1); } while(fread(&temp,sizeof(structuser),1,fp)) { printf("NO.%d%15s%15s%.2f\n",temp.id,,temp.person_num,temp.money); } fclose(fp);}voidsave_money()//函数功能:按账号存款{ printf("%30s\n","***用户存款业务***"); printf("\n\n"); intcount(); FILE*fp; inti,num,mark; structuser*temp; num=count();//根据记录数申请空间 temp=(structuser*)malloc(num*sizeof(structuser)); if((fp=fopen(file,"rb"))==NULL) { printf("cannotopenfile!\n"); exit(1); } for(i=0;i<num;i++) //将文件内容存入数组 fread(&temp[i],sizeof(structuser),1,fp); fclose(fp); printf("输入要存款账号:");//读取存款账号 scanf("%d",&mark); if(mark<1||mark>num) { printf("你要存款账号不存在!"); return; } if((fp=fopen(file,"wb"))==NULL)//写方式翻开文件,覆盖原文件中的内容 { printf("cannotopenfile!\n"); exit(1); } for(i=0;i<num;i++) { if(temp[i].id==mark) { doublemoney=0; printf("输入要存入的金额:"); scanf("%lf",&money); if(money<=0) { printf("只能为正数!\n"); money=0; } temp[i].money+=money;//修改该用户的信息 } fwrite(&temp[i],sizeof(structuser),1,fp); } fclose(fp); free(temp); printf("你存款业务已办妥!\n");}voidget_money()//函数功能:用户取款{ printf("%30s\n","***用户取款业务***"); printf("\n\n"); intcount(); FILE*fp; inti,num,mark; structuser*temp; num=count(); //根据记录数申请空间 temp=(structuser*)malloc(num*sizeof(structuser)); if((fp=fopen(file,"rb"))==NULL) { printf("cannotopenfile!\n"); exit(1); } for(i=0;i<num;i++) //读取文件内容 fread(&temp[i],sizeof(structuser),1,fp); fclose(fp); printf("输入要取款账号:"); scanf("%d",&mark); if(mark<1||mark>num) { printf("你要取款账号不存在!"); return; } if((fp=fopen(file,"wb"))==NULL) { printf("cannotopenfile!\n"); exit(1); } for(i=0;i<num;i++) //写方式翻开文件,覆盖原文件中的内容 { if(temp[i].id==mark) { doublemoney=0; printf("输入要取出的金额:"); scanf("%lf",&money); if(money<=0) //判断用户余额是否足够 { printf("只能为正数!\n"); money=0; } else if(money>temp[i].money) { printf("你的余额缺乏!\n"); money=0; } temp[i].money-=money; } fwrite(&temp[i],sizeof(structuser),1,fp); } fclose(fp); free(temp); printf("你取款业务已办妥!\n");}voiddel()//销户{ intcount(); printf("%30s\n","***注销账户***"); printf("%8s%15s%15s%10s\n","账号","用户姓名","身份证号码","存款余额"); printf("\n\n"); FILE*fp; structusertemp; inti,maxnum; if((fp=fopen(file,"rb"))==NULL) { printf("cannotopenfile!\n"); exit(1); } maxnum=count(); printf("输入要销户账号:");//判断编号是否在记录中 scanf("%d",&i); if(i<1||i>maxnum) { printf("你要查询的账号不存在!"); return; } while(fread(&temp,sizeof(structuser),1,fp))//循环读取每一条记录判断是否为要查看的记录 if(temp.id==i&&temp.money==0.00)//余额为0 {temp.id=-1;//算无效帐户 printf("NO.%d%15s%15s%.2f\n",temp.id,,temp.person_num,temp.money); //pr

温馨提示

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

评论

0/150

提交评论