课程设计个人银行账户管理系统文档格式.docx
《课程设计个人银行账户管理系统文档格式.docx》由会员分享,可在线阅读,更多相关《课程设计个人银行账户管理系统文档格式.docx(62页珍藏版)》请在冰豆网上搜索。
经过对程序设计题目的分析可知,整个程序的设计实现大致分为九个模块,每一个模块对应一个或多个函数。
在这些函数当中,储户注册函数,登录函数,储户信息录入函数,储户信息显示函数,信息插入函数,信息修改函数,信息排序函数以及信息删除的实现严格按照题目的要求,而储户密码的修改属于附加功能。
读取文件函数和保存信息函数对其它函数的实现起辅助作用,主函数及菜单函数控制程序的整体运行。
内容如下:
1、用户登录系统(包括用户以及管理员的注册,登录界面,其中有注册函数和登录函数)。
2、系统以菜单的模式打开并工作(有储户界面和管理员界面)。
3、储户信息的录入(保存函数)。
4、储户信息的读出并显示出来(信息读出并打印函数)。
5、储户信息的查询系统,包括按月份查询和按日期查询(用过查询函数来实现)。
6、储户信息的修改系统,包括修改月份,修改日期,修改进账数目和出账数目(通过修改函数来实现)。
7、修改密码系统(修改密码函数实现储户对账户密码的修改)。
8、退出(退出到主界面和上一界面)。
每一个储户记录都包含账户编号,月份,日期,进账数目,出账数目。
在程序当中,将储户记录类型定义为结构体类型,添加以及追加的储户信息直接写入D盘的account.txt文件中,其它函数每次对储户记录的访问,其数据来源都是account.txt文件,这样做不但可以保证储户信息的一致性,而且可以对储户信息进行永久保存,保证每次运行程序都可以采用原来的数据。
三、概要设计
功能模块图
修改出账数目
main()主函数
先注册后登录
管理员登录
注册
成功
直接登录
用户登录
失败
信息显示
信息录入
信息查询
修改密码
退出
信息排序
信息添加
信息删除
信息修改
2.各个模块的详细功能
1.储户注册函数(voidregist())
主要实现程序最初储户注册自己的账户名和密码,只有注册了账户名和密码才可以进入账户管理系统并且操作自己的信息。
2.登录函数(intload())
储户和管理员通过此登录系统进入各自的页面对信息进行操作。
3.用户登陆界面(voidmenu())以及管理员登录界面(voidmenu_1())
通过界面来选择想要操作的内容。
4.储户信息录入函数,包括链表的建立和信息的保存(linklistcreat()、save(linklisth))
实现储户信息以链表的形式录入并保存到文件中,即我们所说的记账。
5.储户信息读出函(Node*show())
实现的功能是按照账号和密码对储户所存储的信息从所存文件中读出。
6.储户信息的查询函数,包括按月份查询和按日期查询。
(Node*search())
实现用户针对自己信息的查询,可以查询当月的账户信息,也可以查询当天的账户信息。
7.储户信息插入函数,包括两个函数,一个是单纯实现插入功能,另一个是在此系统中实现的插入功能。
(linklistinsert()、Insert(linklisth))
实现储户信息插到原信息并且显示出来的功能。
8.信息修改函数,包括两个函数,一个是单纯实现修改,另一个是在此系统中实现对信息的修改功能(linklistrecr(linklisth)、voidRecr())
通过该函数管理员可以对储户的数据信息进行修改。
9.信息排序函数,包括两个函数,一个是单纯实现排序,另一个是在此系统中实现对信息的排序。
(在此只举按月份查询的例子linklistsort_mon(linklisthead)、voidSort_M())
该函数实现的功能是对储户信息中各个项目按一定的顺序进行排序(默认为升序)。
10.信息删除函数,包括两个函数,一个是单纯实现修改功能,另一个是在此系统上实现对信息修改的功能。
(linklistrecr(linklisth)、voidRecr())
该函数可以对储户过期的信息进行删除操作。
11.储户密码修改函数(intres())
可以实现对储户的密码进行修改;
12.显示函数(Node*print(linklisth))
实现的是显示目前所有的有效储户记录信息。
除上面介绍的功能之外,程序还具有退出功能,可以在程序的一次运行当中循环执行所有的功能,并根据需要终止程序的执行。
四、详细设计
1.功能函数的调用关系图
menu_1()
regist()
main()
load()
menu()
linklistcreat()
voidsave(linklisth)
Node*show()
Node*print(linklisth)
Node*search()
linklistinsert()
linklistrecr()
linklistsort(linklisthead)
Node*del(Node)*p)
res()
exit()
2、功能函数流程
(1)信息录入函数
(2)、信息查询函数
(3)、信息修改函数
(4)信息删除函数
(5)信息插入函数
(6)信息排序函数
3、重点设计及其代码
1、链表的创建
linklistcreat()//链表创建
{
linklisthead;
Node*r,*p;
intx;
head=(linklist)malloc(sizeof(Node));
//尾插法
head->
next=NULL;
r=head;
do
{
p=(Node*)malloc(sizeof(Node));
printf("
请输入账户编号:
\n"
);
scanf("
%s"
p->
num);
请输入月份:
"
%d"
&
p->
Date.mon);
请输入日期:
Date.day);
请输入进账数目:
%f"
inacc);
请输入出账数目:
outacc);
r->
next=p;
r=p;
是否继续录入?
<
是:
1否:
0>
//利用x来判断是否再次录入
flushall();
x);
}while(x);
r->
returnhead;
}
2、信息保存于文件
voidsave(linklisth)//储户信息保存
FILE*fp;
Node*j;
if((fp=fopen("
D:
/account.txt"
"
wt"
))==NULL)
{
文件打开失败!
按任意键退出!
getch();
exit
(1);
}
for(j=h->
next;
j!
=NULL;
j=j->
next)
fprintf(fp,"
%s%d%d%f%f\n"
j->
num,j->
Date.mon,j->
Date.day,j->
inacc,j->
fclose(fp);
printf("
文件保存成功!
按任意键返回"
getch();
3、信息从文件中读出
linklisthead;
Node*r,*s;
intn;
rt"
读出文件出错!
exit
(1);
while(!
feof(fp))
s=(Node*)malloc(sizeof(Node));
fscanf(fp,"
s->
num,&
s->
Date.mon,&
Date.day,&
inacc,&
next=s;
r=s;
\n文件中信息已经正确读出!
4、信息显示
Node*print(linklisth)//储户信息显示
Node*q;
账户信息为:
账户编号月份日期进账出账\n"
for(q=h->
q!
q=q->
\t%s\t%d\t%d\t%f\t%f\n"
q->
num,q->
Date.mon,q->
Date.day,q->
inacc,q->
returnh;
5、信息查询
Node*h,*p;
intdate,x;
h=show();
p=h->
*********************************************\n"
1按月份查询\n"
2按日期查询\n"
请输入1or2\n"
scanf("
switch(x)
case1:
printf("
请输入您要查询的月份:
date);
while(p!
=NULL)
{
if(p->
Date.mon==date)
returnp;
else
p=p->
}
case2:
请输入您要查询的日期:
Date.day==date)
}
returnNULL;
5、信息插入
FILE*fp;
fp=fopen("
/account.t