活期储蓄账目管理分解.docx

上传人:b****7 文档编号:16783806 上传时间:2023-07-17 格式:DOCX 页数:30 大小:171.55KB
下载 相关 举报
活期储蓄账目管理分解.docx_第1页
第1页 / 共30页
活期储蓄账目管理分解.docx_第2页
第2页 / 共30页
活期储蓄账目管理分解.docx_第3页
第3页 / 共30页
活期储蓄账目管理分解.docx_第4页
第4页 / 共30页
活期储蓄账目管理分解.docx_第5页
第5页 / 共30页
活期储蓄账目管理分解.docx_第6页
第6页 / 共30页
活期储蓄账目管理分解.docx_第7页
第7页 / 共30页
活期储蓄账目管理分解.docx_第8页
第8页 / 共30页
活期储蓄账目管理分解.docx_第9页
第9页 / 共30页
活期储蓄账目管理分解.docx_第10页
第10页 / 共30页
活期储蓄账目管理分解.docx_第11页
第11页 / 共30页
活期储蓄账目管理分解.docx_第12页
第12页 / 共30页
活期储蓄账目管理分解.docx_第13页
第13页 / 共30页
活期储蓄账目管理分解.docx_第14页
第14页 / 共30页
活期储蓄账目管理分解.docx_第15页
第15页 / 共30页
活期储蓄账目管理分解.docx_第16页
第16页 / 共30页
活期储蓄账目管理分解.docx_第17页
第17页 / 共30页
活期储蓄账目管理分解.docx_第18页
第18页 / 共30页
活期储蓄账目管理分解.docx_第19页
第19页 / 共30页
活期储蓄账目管理分解.docx_第20页
第20页 / 共30页
亲,该文档总共30页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

活期储蓄账目管理分解.docx

《活期储蓄账目管理分解.docx》由会员分享,可在线阅读,更多相关《活期储蓄账目管理分解.docx(30页珍藏版)》请在冰点文库上搜索。

活期储蓄账目管理分解.docx

活期储蓄账目管理分解

数据结构课程设计

题目:

活期储蓄账目管理

学院:

班级:

学生姓名:

学生学号:

指导教师:

 

2013年11月27日

课程设计任务书

姓名

班级

学号

设计题目

活期储蓄账目管理

理论要点

1.活期储蓄处理中,储户开户、销户、存入、支出活动频繁,系统设计要求:

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

3.能比较简单,迅速地实现插入和删除,以实现开户和销户的需要。

设计目标

1.代替营业员进行许多繁杂的手动操作。

 

2.给用户带来了很大的方便。

3.节省许多人力资源。

4.提高人们的工作效率。

研究方法步骤

1.设计程序流程图

2.编写源程序

3.编译运行,对指定文件进行编码译码

预期结果

实现对既定文件的读入,编码压缩后存入另一文件,调出编码后的文件进行译码输出并存入新文件。

计划与进步的安排

1.搜集资料,理解原理,分析已有的编码1天

2.分模块分析,画出实验流程图1天

3.编写源代码2天

4.编译运行,对既定文件进行编码译码2天

5.实验总结1天

 

2概要设计2

3详细设计2

4调试设计5

5用户使用说明6

6测试结果6

7结论体会8

8参考文献8

9源程序9

 

 

摘要

随着计算机的普及,现代人越来越多的想到用计算机来代替许多人做的事情。

从而提高办事效率,使经济收入更加可观,从而就产生了计算机这门课程。

随着信息技术的飞速发展,大量信息需要传输,传输信息就要先经过编码,然后再译码,可见编码技术的提高对整个信息产业有着举足轻重的作用。

而计算机主要是通过程序来实现各种事情的,再者程序也必须通过各种算法才能达到存储各种数据,所以数据结构这门课程就应运而生。

本课程设计主要是用数据结构编写关于活期储蓄账目管理的算法,来达到活期储蓄账目管理的目的。

关键词:

编码存储活期储存账目管理

 

 

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<name<<""<sex<<""<old<<""<no<<""<base<<""<ir<<""<code<<""<tm_year<<""<tm_yday;

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"<<"当前余额为:

"<base=m;cout<

}

voidcredit(Messagep)//存款

{

doublemoney,m;

cout<<"请输入存款金额:

";cin>>money;

m=p->base+money;

cout<<"存款成功!

\n"<<"当前余额为:

"<base=m;cout<

}

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<name<sex<old<no<base<ir<

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.person_num,temp.mon

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2