成绩: __________
课程设计(数据结构)
院、系________计算机与软件学院______专业______软件工程______
姓 名______________学号_________
指导教师____________________________
二零一一 年 十二 月 二十五 日
目 录
- 1 -1 绪论
- 1 -1.1课题的提出及研究意义
- 1 -1.2本文的研究工作及主要结果
- 2 -2活期存储账目管理系统问题分析
- 2 -2.1系统开发技术
- 2 -2.1.1 C++语言简介
- 2 -2.1.2活期存储账目管理系统介绍
- 3 -2.1.3 系统分析
- 3 -3 系统设计
- 3 -3.1 系统模块设计
- 3 -3.1.1概要设计
- 3 -3.1.2详细设计及解释
- 8 -3.2测试分析
- 8 -3.2.1测试数据
- 9 -3.2.2 测试结果
- 12 -4 结束语
- 12 -参考文献
活期储蓄帐目管理
南京信息工程大学计算机与软件系,南京 210044
摘要:随着计算机的普及,现代人越来越多的想到用计算机来代替人做的事情。银行作为一个金融机构,在现代人们的生活中扮演着极其重要的角色。为生活节奏飞快的现代人提供快速、便捷、高效的理财服务。伴随着电脑的发展,各大银行的储蓄管理系统也随之出现在这个舞台上。本次研发的目的就是设计并实现一个活期储蓄账目管理系统的基本业务。
本次介绍了活期储蓄账目管理系统,并深入分析活期储蓄账目管理系统的设计和各功能模块的实现。系统主要分为五大块:储户开户、储户销户、储户登录、储户账号存款、取款,能够实现对储户自然信息进行管理,对当天交易进行统计,以及查询指定用户的交易信息。
关键字:哈希表、管理、数据结构、算法
1 绪论
1.1课题的提出及研究意义
随着科技的提高和社会的日益发展,21世纪已经进入到了信息、网络的高科技时代,互联网逐渐普及,社会现代化的脚步不断加快,人们的生活也随之向着多元化的方面发展。现今社会,资金流动频繁。不单是企业、厂商,个人也不例外。银行作为一个金融机构,在现代人们的生活中扮演着极其重要的角色。为生活节奏飞快的现代人提供快速、便捷、高效的理财服务。伴随着电脑的发展,各大银行的储蓄管理系统也随之出现在这个舞台上。
本次研究开发的目的是设计并实现活期账目管理系统的基本业务。能够实现对储户的自然信息进行管理,对储户账户信息进行管理,对当天交易进行统计,以及查询指定用户交易信息。详细内容包括:用户开户、销户;用户存入以及支出;统计当日开户销户数量及交易金额;并通过输入指定用户编号查询该用户交易信息。软件采用可视化界面,操作简单方便。
1.2本文的研究工作及主要结果
本系统的开发采用了面向对象的方法,将系统划分模块时,尽量做到提高模块的独立性,给模块功能的增加与修改带来了方便,从而使得整个软件的可扩展性大大增强。整个软件在编写过程中,采取了
化的代码
写形式以及清晰的程序注释,使得代码的理解更加容易。
2活期存储账目管理系统问题分析
2.1系统开发技术
2.1.1 C++语言简介
C++这个词在中国大陆的程序员圈子里通常被读作“c加加”,而西方的程序员通常读作“C plus plus”,CPP。它是一种使用非常广泛的计算机编程语言。C++是一种静态数据类型检查的、支持多重编程范式的通用程序设计语言。它支持过程化程序设计、数据抽象、面向对象程序设计、制作图标等泛型程序设计等多种程序设计风格。
C++支持C语言的几乎全部功能,主要是C89的部分,在语法上与C语言仅有几微妙的差别。
C++语言原本不具备面向对象的设计功能,然而随着面向对象编程的概念的提出以及如Java等语言的发展成熟,C++语言也开发出了支持面向对象功能的版本。
C++的强大(但容易失控)
功能使他能在编译期间完成许多工作,从而大大提高工作效率。
C++在一定程度上可以和C语言很好的结合,甚至目前大多数C语言程序是在C++的集成开发环境中完成的。C++相对众多的面向对象的语言,具有相当高的性能。
C++引入了面向对象的概念,使得开发人机交互类型的应用程序更为简单、快捷。很多优秀的程序框架包括MFC、QT就是使用的C++。
2.1.2活期存储账目管理系统介绍
首先解释一下活期储蓄的定义,活期储蓄之无需任何事先通知,存款户即可随时存取和转让的一种银行存款,其形式有支票存款账户,保存支票,本票,旅行支票和信用证等。活期存款占一国货币供应的最大部分,也是商业银行的重要资金来源。鉴于活期存款不仅有货币支付手段和流通手段的职能,同时还具有较强的派生能力,因此,商业银行在任何时候都必须把活期存款作为经营重点。但由于该类型存款存取频繁,手续复杂,所费成本高,因此西方国家商业银行一般不支付利息,有时甚至还要收费。
活期储蓄管理系统是由银行人员来操作的,用户通过该系统可以进行存款、取款、销户等业务。该系统在金融业给人民带来了很大的方便,系统开发成功后,一旦应用于银行领域,会给管理员与用户带来很大的方便,其主要功能具体如下:
1、 可以代替营业员进行许多繁杂的手动操作
2、 给用户带来了很大的方便
3、 可以节省许多人力资源
4、 可以提高人们的工作效率
活期储蓄账目管理系统主要是由于在活期储蓄处理中,储户开户、销户、存入、支出活动频繁,为实现储户的各种操作而设计的, 本课程设计的主要功能包括实现储户开户、销户、存入、支出等活动,未来能比较迅速的找到账户,实现这样几个功能,就要通过链表来存储,其结构则按C语言的相关知识定义结构体,其中储户开户、销户就是实现链表的插入与删除,而存入与支出等活动则是实现链表中节点的查找,然后进行更改。
2.1.3 系统分析
设计并实现活期账目管理系统的基本业务。能够实现对储户的自然信息进行管理,对储户账户信息进行管理,对当天交易进行统计,以及查询指定用户交易信息。详细内容包括:用户开户、销户;用户存入以及支出;统计当日开户销户数量及交易金额;并通过输入指定用户编号查询该用户交易信息。软件采用可视化界面,操作简单方便。
3 系统设计
3.1 系统模块设计
3.1.1概要设计
1、 显示储户明细status Show2(LinkList L)
2、 初始化链表1status Initlist1(Sqlist &s)
3、 初始化链表2status Initlist2(Sqlist &s,int i)
4、 开户status ListInsert1()
5、 记录存取status ListInsert2(ElemType *L,Note e)
6、 显示储户基本信息status Show1(ElemType *e)
7、 查找status Find(Sqlist &L)
8、 存款status In(Sqlist &L)
9、 取款status Out(Sqlist &L)
10、销户status ListDelete(Sqlist &L,int i)
3.1.2详细设计及解释
1)定义操作类模板
typedef int status;
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
typedef struct{
int id;
int flag;
int amount;
char date[30];
}Note;
typedef struct LNode{
Note data;
struct LNode *next;
}LNode, *LinkList;
typedef struct{
int id;
char name[10];
int amount;
LinkList p;
}ElemType;
typedef struct{
ElemType *elem;
int length;
int listsize;
}Sqlist;
2)定义基本操作
1、账户开户
status ListInsert1()//开户
{
ElemType L;
Note N;
time_t t;
t=time(NULL);
if((fp=fopen("data","ab+"))==NULL)
{
printf("Can't open file!\n");
exit(0);
}
printf("请输入储户编号:");
scanf("%d",&L.id);
printf("请输入储户名 :");
scanf("%s",L.name);
printf("请输入存储金额(元):");
scanf("%d",&L.amount);
L.p=NULL;
fwrite(&L,sizeof(ElemType),1,fp);
fclose(fp);
if((fp=fopen(L.name,"ab+"))==NULL)
{
printf("Can't open file!\n");
exit(0);
}
N.id=L.id;
N.flag=1;
N.amount=L.amount;
strcpy(N.date,ctime(&t));
fwrite(&N,sizeof(Note),1,fp);
fclose(fp);
printf("==开户成功==\n\n");
return ok;
}
2、显示账户明细
status Show2(LinkList L)//显示账户明细
{
LinkList p;
p=L->next;
printf("==存取明细==\n");
while(p->next)
{
printf("储户编号:%d\n",p->data.id);
if(p->data.flag==1)
printf("存取标记:存款\n");
else printf("存取标记:取款\n");
printf("存取额度:%d\n",p->data.amount);
printf("存取日期:%s\n",p->data.date);
p=p->next;
}
return(ok);
}
3、 取款
status Out(Sqlist &L)//取款
{
int i,a;
ElemType *p1;
Note e;
time_t t;
t=time(NULL);
if((i=Find(L))==-1) return(error);
p1=&L.elem[i];
printf("请输入取出金额(元):");
scanf("%d",&a);
while(L.elem[i].amount
id;
e.flag=0;
e.amount=a;
strcpy(e.date,ctime(&t));
ListInsert2(p1,e);
if((fp=fopen("data","rb+"))==NULL)
{
printf("Can't open file!\n");
exit(0);
}
fseek(fp,i*sizeof(ElemType),0);
fwrite(&L.elem[i],sizeof(ElemType),1,fp);
fclose(fp);
printf("==取款成功==!\n");
Show1(p1);
return(ok);
}
4、销户
status ListDelete(Sqlist &L,int i)//销户
{
ElemType *p,*q;
int a;
printf("你确定要销掉该储户吗(1.是/0.否)? 请选择:");
scanf("%d",&a);
if(a!=1) return(error);
p=&(L.elem[i]);
q=L.elem+L.length;
for(++p; pid;
e.flag=1;
e.amount=a;
strcpy(e.date,ctime(&t));
ListInsert2(p1,e);//
if((fp=fopen("data","rb+"))==NULL)
{
printf("Can't open file!\n");
exit(0);
}
fseek(fp,i*sizeof(ElemType),0);
fwrite(p1,sizeof(ElemType),1,fp);
fclose(fp);
printf("==存款成功!==\n");
Show1(p1);
return(ok);
}
6、查找
status Find(Sqlist &L)//查找
{
int i,n;
ElemType *p;
printf("请输入储户编号:");
scanf("%d",&n);
for(i=0;iid);
printf("储户名 :%s\n",p->name);
printf("存储金额:%d元\n",p->amount);
return(i);
}
i=-1;
printf("==无该储户!==\n");
return(i);
}
7、储户基本信息
status Show1(ElemType *e)//输出储户基本信息
{
printf("储户编号:%d\n",e->id);
printf("储户名 :%s\n",e->name);
printf("存储金额:%d元\n",e->amount);
return(ok);
}
8、记录存记录
status ListInsert2(ElemType *L,Note e)//记录存记录
{
if((fp=fopen(L->name,"ab+"))==NULL)
{
printf("Can't open file!\n");
exit(0);
}
fwrite(&e,sizeof(Note),1,fp);
fclose(fp);
return(ok);
}
3.2测试分析
3.2.1测试数据
1、用户开户
输入:
储蓄编号:123
储蓄名:dan
存入金额:500
2、查询储蓄信息
输入:
储户编号:123
3、存款
输入:
账号编码:123
存入金额:100
4、取款
输入:
储户编号:123
取出金额:300
5、销户
输入:
储户编号:123
3.2.2 测试结果
1、 进入演示程序后的界面,如图:
2、 选择2,进行开户,按提示依次操作,完成后返回主菜单可再次进行选择:
3、 选择1,查询账户信息,显示账户信息,然后可选择相关操作:
4、 选择4,存款
5、 选择5,取款
6、 选择3,销户
4 结束语
本题为本次数据结构课程设计的一个题目,算是比较简单的了,开始自己读题时,思路不是很清晰,经老师把每个题目提示了一下后,豁然开朗,想这个程序就是要应用刚开学时学的单链表结构,每个储户一个节点,一个节点内包含一个储户的各类信息,如:姓名,账号,金额等,而对于开户和销户的操作就是对单链表节点的插入和删除操作,存款和取款就是对每个储户结点内的金额进行加减操作。在对银行管理系统的结构大概有个轮廓后便开始编写代码,在代码运行过程中,并不是一帆风顺的,这也是平常练得不够吧,经过几轮的修改,终于做得差不多了,基本达到了老师的要求,但是还是有很多不足。通过这次对银行管理系统的编写与调试,巩固了单链表的知识,锻炼了实际操作能力,在以后的学习中将不断学习新的知识,学习中巩固,在学习中完善。
参考文献
1、 严蔚敏、吴伟民 《数据结构(C语言版)》 清华大学出版社
2、 王育坚 《Visual C++ 面向对象程序设计》清华大学出版社
3、 陈维兴、林小茶 《C++高级程序设计教程》清华大学出版社
PAGE
V
- 1 -
_1163328903.unknown