课程设计 银行个人账户管理的实验报告Word文件下载.docx
《课程设计 银行个人账户管理的实验报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《课程设计 银行个人账户管理的实验报告Word文件下载.docx(64页珍藏版)》请在冰豆网上搜索。
![课程设计 银行个人账户管理的实验报告Word文件下载.docx](https://file1.bdocx.com/fileroot1/2023-1/26/5df07b59-38b5-4b99-871b-26d0a590d280/5df07b59-38b5-4b99-871b-26d0a590d2801.gif)
储户和管理员通过此登录系统进入各自的页面对信息进行操作。
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.功能函数的调用关系图
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("
at+"
if(fp==NULL)
插入失败!
插入成功!
6、信息修改
charnum[20];
intinf;
floatacc;
Node*p;
请输入您要修改的账户信息编号:
flushall();
num);
if(p==NULL)
信息为空,无法修改!
while(p!
if(strcmp(p->
num,num)==0)
printf("
****************************************************\n"
1修改月份\n"
2修改日期\n"
3修改进账数目\n"
4修改出账数目\n"
*****************************************************\n"
请按1-4选择\n"
scanf("
switch(x)
{
case1:
请输入新月份:
scanf("
inf);
p->
Date.mon=inf;
returnh;
break;
case2:
请输入新日期:
Date.day=inf;
case3:
请输入您修改后的进账数目:
acc);
inacc=acc;
case4:
请输入您修改后的出账数目:
outacc=acc;
}
p=p->
7、信息排序,在此仅拿按照月份排序举例。
Node*pri,*mid,*tai,*p;
p=head->
while(p!
=NULL)
mid=head->
if(head->
Date.mon>
next->
Date.mon)
next=mid->
mid->
next=head;
head=mid;
pri=head;
mid=head->
tai=mid->
while(mid->
next!
if(mid->
Date.mon>
tai->
pri->
next=mid->
next=tai->
tai->
next=mid;
pri=pri->
mid=pri->
p=p->
8、信息删除
Node*q,*r;
q=p->
r=p;
if(q==NULL)
return0;
请输入需要删除的账户编号:
while(q!
if(strcmp(q->
next=q->
free(q);
returnp;
r=q;
q=q->
returnp;
9.密码修改
charpkey[20];
charnkey[20];
charrnkey[20];
charname[20];
/key.txt"
请输入您的注册名:
name);
fprintf(fp,"
请输入原始密码:
pkey);
请输入修改后密码:
nkey);
文件打开失败,按任意键推出!
请再次输入修改后密码:
rnkey);
%s\n"
修改密码成功!
按任意键返回\n"
请选择1:
重新登录,0:
退出系统"
system("
cls"
if(x)
charn_name[10];
charn_key[20];
\n"
*******************************************************\n"
欢迎登录银行个人账户管理系统\n"
********************************************************\n"
请输入您的姓名:
n_name);
请输入您的密码:
n_key);
fscanf(fp,"
//从文件中读出,若和输入的相同则修改成功,若不相同,则修改失败!
if(strcmp(rnkey,n_key)==0&
&
strcmp(name,n_name)==0)
成功登录!
menu();
return1;
else
输入密码错误!
return0;
Return0;
五.测试数据及运行结果
一、用户登录数据演示
1.直接登录的情况下
注册的情况下
2.用户登录成功后可进入选择界面
3.数据录入
4.信息显示
5.信息查询,分按月份查询和按日期查询
查询月份,5月
按日期查询
6.修改密码
修改密码后重新登录
7.退出
二、管理员登录数据演示
进入管理员界面
1.显示用户的信息
2.对用户信息进行追加,也就是插入
3.对用户信息进行排序,按月份排序
按日期排序
按进账数目进行排序
按出账数目进行排序
4.信息删除
5.信息修改,分为修改月份
修改日期
修改进账数目
修改出账数目
错误数据演示:
1.用户名或密码错误时
2.查询输入错误数据时
3.所删除的信息不存在时
六、调试情况,设计技巧及体会
1.这个系统是第一次做,对于一些基本功能的需求都可以实现,这也加强了我对C语言这学期所学到的知识的理解和应用,果然要讲理论知识应用到实际中是一件很有挑战性的事。
对于这个系统我觉得做的特别粗糙,作为一个课件来演示的话还可以,但是真正应用到实际生活中缺陷很大,比如没有设置余额查询系统,这是这个系统最大的缺陷,由于我的有些知识还未掌握熟练,所以没有做这个系统,很是遗憾。
2.本次课设,我感受很多。
深刻地懂得了理论联系实际的重要性。
在课设过程中,我发现了自己有很多欠缺的地方,比如:
涉及的相关知识不全面,知识学得不够透彻,在课设时就会遇到重重困难,它启示着我在以后的学习中要精益求精,对有用的知识要做到深入研究。
在本次课程设计中,要感谢老师对我的指导,对于一些自己无法修正的错误通过老师的讲解让我对于C语言的理解更加透彻,也体会到细节决定成败,一个很小的错误可能导致整个程序无法运行。
同时要十分感谢两个同学,杨文鹏和冯鹏飞同学,对我的帮助特别大,尤其是杨文鹏同学教会我函数功能放到系统中如何实现的方法,给我打通了一条写C语言程序的思路,让我将学来的知识能够灵活运用,还有冯鹏飞同学为我耐心讲解链表的插入方法,以及帮我改正一些语法和逻辑上的错误,这些都是我通过这次课程设计而收获到的宝贵财富。
通过这次课程设计,我发现用一些字母下划线等组合起来的小小程序可以实现强大的功能是一件特别让人惊喜的事情,提升了我对C语言学习的兴趣,在以后的学习中,我相信自己会更加努力,彻底学好C语言这门课程。
七、参考文献
《C程序设计实例教程》金林樵主编机械工业出版社
《C程序设计(第三版)》谭浩强清华大学出版社
《C语言课程设计案例精编》郭翠英中国水利水电出版社
八、附录(源代码)
#include<
stdio.h>
string.h>
#include"
conio.h"
stdlib.h>
/*intload();
//登录系统
voidmenu();
//用户登录菜单
voidmenu_1();
//管理员登陆菜单
linklistcreat();
//链表创建
voidsave(linklisth);
//储户信息保存
Node*show();
//储户信息的读出
Node*print(linklisth);
//储户信息显示
Node*search();
//进行信息查询
//linklistinsert();
//插入系统
//voidInsert()//大插入,完成功能的实现
res();
//密码修改系统功能
linklistrecr();
//信息修改系统功能
voidRecr();
//信息修改系统功能实现过程
//linklistsort(linklisthead)//排序
//voidSort();
//大排序
Node*del(Node*p);
//信息删除系统功能
voidDel();
//信息删除系统功能实现过程*/
structdate
intmon;
intday;
};
typedefstructbasic_inf
structdateDate;
floatina