活期储蓄账目管理.docx
- 文档编号:5470800
- 上传时间:2022-12-16
- 格式:DOCX
- 页数:27
- 大小:172.19KB
活期储蓄账目管理.docx
《活期储蓄账目管理.docx》由会员分享,可在线阅读,更多相关《活期储蓄账目管理.docx(27页珍藏版)》请在冰豆网上搜索。
活期储蓄账目管理
数据结构课程设计
题目:
活期储蓄账目管理
学院:
班级:
学生姓名:
学生学号:
指导教师:
2013年11月27日
课程设计任务书
姓名
班级
学号
设计题目
活期储蓄账目管理
理论要点
1.活期储蓄处理中,储户开户、销户、存入、支出活动频繁,系统设计要求:
2.能比较迅速地找到储户的帐户,以实现存款、取款记账;并能实现排序。
3.能比较简单,迅速地实现插入和删除,以实现开户和销户的需要。
设计目标
1.代替营业员进行许多繁杂的手动操作。
2.给用户带来了很大的方便。
3.节省许多人力资源。
4.提高人们的工作效率。
研究方法步骤
1.设计程序流程图
2.编写源程序
3.编译运行,对指定文件进行编码译码
预期结果
实现对既定文件的读入,编码压缩后存入另一文件,调出编码后的文件进行译码输出并存入新文件。
计划与进步的安排
1.搜集资料,理解原理,分析已有的编码1天
2.分模块分析,画出实验流程图1天
3.编写源代码2天
4.编译运行,对既定文件进行编码译码2天
5.实验总结1天
目录
摘要I
1题目分析1
2概要设计2
3详细设计2
4调试设计5
5用户使用说明6
6测试结果6
7结论体会8
8参考文献8
9源程序9
摘要
随着计算机的普及,现代人越来越多的想到用计算机来代替许多人做的事情。
从而提高办事效率,使经济收入更加可观,从而就产生了计算机这门课程。
随着信息技术的飞速发展,大量信息需要传输,传输信息就要先经过编码,然后再译码,可见编码技术的提高对整个信息产业有着举足轻重的作用。
而计算机主要是通过程序来实现各种事情的,再者程序也必须通过各种算法才能达到存储各种数据,所以数据结构这门课程就应运而生。
本课程设计主要是用数据结构编写关于活期储蓄账目管理的算法,来达到活期储蓄账目管理的目的。
关键词:
编码存储活期储存账目管理
I
1题目分析
活期储蓄管理系统用户通过该系统可以进行存款、取款、销户等业务。
该系统在金融业给人民带来了很大的方便,系统开发成功后,一旦应用于银行领域,会给管理员与用户带来很大的方便,其主要作用具体如下:
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];
charsex[3];
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<
fout.close();
}
voidcreate()//创建账户
{
Messageq=newmessage;
cout<<"**请输入客户的信息**"< 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"<<"当前余额为: "< } voidcredit(Messagep)//存款 { doublemoney,m; cout<<"请输入存款金额: ";cin>>money; m=p->base+money; cout<<"存款成功! \n"<<"当前余额为: "< } 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<<"**要查询的账户信息为**"< cout<<"姓名"< cout< 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 #include #include #include #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(temp.name); 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(temp.name,name)==0) { printf("NO.%d%15s%15s%.2f\n",temp.id,temp.name,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.name,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.name,temp.p
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 活期 储蓄 账目 管理