活期储蓄账目管理.docx

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

活期储蓄账目管理.docx

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

活期储蓄账目管理.docx

活期储蓄账目管理

数据结构课程设计

题目:

活期储蓄账目管理

学院:

班级:

学生姓名:

学生学号:

指导教师:

 

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<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.p

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

当前位置:首页 > IT计算机 > 电脑基础知识

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

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