课程设计银行储蓄管理系统.docx
- 文档编号:11698203
- 上传时间:2023-06-02
- 格式:DOCX
- 页数:21
- 大小:291.14KB
课程设计银行储蓄管理系统.docx
《课程设计银行储蓄管理系统.docx》由会员分享,可在线阅读,更多相关《课程设计银行储蓄管理系统.docx(21页珍藏版)》请在冰点文库上搜索。
课程设计银行储蓄管理系统
《数据结构》
课程设计报告
设计题目活期储蓄账目
学院名称信息工程学院
专业班级13计本1
姓名
学号000000000000
一、实验题目—活期储蓄账理-------------------------------
二、问题描述-----------------------------------------------
三、设计目标-----------------------------------------------
四、需求分析-----------------------------------------------
五、概要设计-----------------------------------------------
1---系统流程图--------------------------------------
2--各个模块功能的详细描-------------------------------
六、详细设计-----------------------------------------------
七、测试分析-----------------------------------------------
八、使用说明-----------------------------------------------
九、课程设计总结-------------------------------------------
一活期储蓄账目管理
二问题描述
活期储蓄处理中,储蓄开户、销户、存款、取款活动频繁,系统设计要求:
•能够比较迅速地找到储户的账户,以实现存款、取款记账;
•能比较简单,迅速地插入和删除,以实现开户和销户的需要。
三设计目标
编写一个程序,要求该程序可以实现储蓄开户,及储蓄销户。
同时,该程序具有在储蓄账户中实现存款、取款,查看该账户信息的功能。
四需求分析
本演示程序用c语言编写,完成银行管理系统的生成,储户开户、销户、存入、支出。
a输入的形式和输入值的范围:
开户时自定义输入账号、用户姓名、密码、及开户金额;用户登陆时输入正确的账号及密码,完成登陆后即可进行存款、取款及销户。
b输出的形式:
在所有三种操作中都显示操作是否正确以及相应操作后的内容。
其中输入错误回到主页面,可继续选择操作。
c程序所能达到的功能:
用户开户
账户登陆(存款、取款、查询余额、退出登录)
账户注销
d测试数据
五概要设计:
1、系统流程图
2、各个模块功能的详细描
本程序主要包括11个函数
voidchoice():
该函数可以实现选择功能
voidDeleteList(LINK*L):
该函数可以实现销户操作
voidDeposit(LINK*L,LINK*p):
该函数可以实现存款功能
voidInitList(LINK*L):
构造函数
voidInsertList(LINK*L)该函数可以实现开户操作
voidmain()定义主函数
voidmenu()该函数可以输出菜单页面的功能
voidPrinList(LINK*L)把存放在链表中的数据输出来
voidPrint(LINK*L)该函数可以将账户信息释放出来
voidsave(LINK*L)该函数可以将账户信息存储起来
voidSearch(LINK*L)该函数可以实现查询账户是否存在的功能
六详细设计(给出算法的伪码描述)
#include
#include
#include
inttotal=1;
typedefstructElemType
{
charname[8];
intaccount;
charpassword[6];
floatmoney;
}ElemType;
typedefstructInode
{
ElemTypedata;
structInode*next;
}LINK;
LINK*InitList(LINK*L)
{
L=(LINK*)malloc(sizeof(LINK));
L->next=NULL;
returnL;
}
voidInsertList(LINK*L)
{
LINK*s;
s=(LINK*)malloc(sizeof(LINK));
printf("请输入你要开户的姓名:
");
scanf("%s",s->data.name);
s->data.account=10001000+total++;
printf("\n你开户的账号为:
%d\n",s->data.account);
printf("\n请输入你账户的密码:
");
scanf("%s",s->data.password);
s->data.money=0.00;
s->next=NULL;
if(L->next==NULL)
L->next=s;
else
{
s->next=L->next;
L->next=s;
}
printf("开户成功。
\n");
}
voidDeleteList(LINK*L)
{
LINK*p=L,*q;
charpass[6];
ints;
printf("请输入你要销户的账号:
");
scanf("%d",&s);
printf("请输入该账号的密码:
");
scanf("%s",pass);
while(p->next!
=NULL)
{
if(p->next->data.account==s)
break;
p=p->next;
}
if(p->next!
=NULL)
{
while(strcmp((p->next->data.password),pass)!
=0)
{
printf("密码错误!
请重新输入:
");
scanf("%s",pass);
}
q=p->next;
p->next=q->next;
free(q);
printf("账户销户成功。
\n");
}
else
printf("你所要销户的账户不存在或者该账户已销户。
\n");
}
voidPrinList(LINK*L)
{
LINK*p=L->next;
while(p!
=NULL)
{
printf("%s\t",p->data.name);
printf("%d\t%s\t%2f\n",p->data.account,p->data.password,p->data.money);
p=p->next;
}
}
voidDeposit(LINK*L,LINK*p)
{
intcq;
floatmn;
while
(1)
if(p!
=NULL)
{
printf("请输入存款
(1)、取款
(2)、查询余额(3)、退出账号(4)。
\n(请输入括号内的数字,输入其他数字默认为取款):
");
scanf("%d",&cq);
if(cq==1)
{
printf("请输入你的存款金额:
");
scanf("%f",&mn);
p->data.money=p->data.money+mn;
printf("存款成功!
\n");
}
elseif(cq==3)
{
printf("你的账户余额为:
%.2f\n",p->data.money);
}
elseif(cq==4)
{
printf("账号退出成功。
\n");
return;
}
else
{
printf("请输入你的取款金额:
");
FH:
scanf("%f",&mn);
if((p->data.money-mn)>=0)
{
p->data.money=p->data.money-mn;
printf("取款成功!
\n");
}
else
{
printf("取款失败!
\n");
printf("你账户上的余额不足!
你的账户余额为:
%.2fRMP\n",p->data.money);
printf("请输入合适的取款金额:
");
gotoFH;
}
}
}
}
voidSearch(LINK*L)
{
LINK*p=L->next;
intacc;
charpass[6];
printf("请输入你要登录的账号:
");
scanf("%d",&acc);
printf("请输入你的密码:
");
scanf("%s",pass);
while(p!
=NULL)
{
if(p->data.account==acc)
break;
p=p->next;
}
if(p==NULL)
printf("不存在该账户\n");
else
{
if(strcmp((p->data.password),pass)==0)
printf("账户登录成功。
\n");
else
{
while(strcmp(p->data.password,pass)!
=0)
{
charpa;
printf("密码错误\n");
printf("是否重新输入(是,就输入任意键)、(否,从键盘输入Norn):
");
scanf("\n%c",&pa);
if(pa=='n'||pa=='N')
{system("cls");
return;}
printf("\n请重新输入你的密码:
");
scanf("%s",pass);
}
}
Deposit(L,p);
}
}
voidsave(LINK*L)
{
FILE*fp;
fp=fopen("Account.txt","w");
LINK*p;
p=(LINK*)malloc(sizeof(LINK));
p=L->next;
while(p!
=NULL)
{
if(fwrite(p,sizeof(structInode),1,fp)!
=1)
printf("filewriteerror\n");
p=p->next;
}
fclose(fp);
}
voidPrint(LINK*L)
{
FILE*fp;
LINK*p,*s;
if((fp=fopen("Account.txt","r"))==NULL)
{
printf("cannotopen.\n");
exit(0);
}
s=(LINK*)malloc(sizeof(LINK));
s->next=NULL;
for(;fread(s,sizeof(structInode),1,fp)!
=0;)
{
total++;
if(L->next==NULL)
{
L->next=s;
p=s;
p->next=s->next;
}
else
{
p->next=s;
p=s;
p->next=s->next;
}
s=(LINK*)malloc(sizeof(LINK));s->next=NULL;
}
fclose(fp);
}
voidmenu()
{
printf("********欢迎进入活期储蓄账目管理*******\n");
printf("1.储蓄开户。
\n");
printf("2.储蓄销户。
\n");
printf("3.储蓄的账户存款、取款。
\n");
printf("4.返回菜单。
\n");
printf("5.查看所有储蓄账户信息。
\n");
printf("6.退出账目管理。
\n");
printf("*****************\n");
}
voidchoice()
{
LINK*L=NULL;
charxunhan;
L=InitList(L);
Print(L);
while
(1)
{
menu();
printf("请选择你需要的功能:
");
scanf("%c",&xunhan);
if(xunhan=='6')
break;
system("cls");
switch(xunhan)
{
case'1':
InsertList(L);
//ch=getchar();
break;
case'2':
DeleteList(L);
//ch=getchar();
break;
case'3':
Search(L);
//ch=getchar();
break;
case'4':
menu();
//ch=getchar();
break;
case'5':
PrinList(L);
//ch=getchar();
break;
default:
printf("输入错误!
请重新选择功能。
\n");
break;
}
fflush(stdin);
}
save(L);
}
voidmain()
{
choice();
}
七、测试分析
白盒
黑盒
进入菜单界面
选择1,实现开户功能·
选择2,实现销户功能
选择3,账户登陆成功,选择1,实现存款功能
选择4,账户登陆成功,选择2,实现取款功能
账户登陆成功,选择2,当账户资金不足时
账户登陆成功,选择3,显示余额
账户登陆成功,选择4,退出账户
当已有账户登陆失败时,重新输入密码
当目前没有存在的登录账户时,回到菜单
选择5,查询所有储户信息
选择6实现退出账目管理功能
八使用说明
运行程序,首先出来的是登陆界面,登录进去就可以到菜单界面,根据菜单的提示选择您想要实现的功能:
1.储蓄开户根据提示输入账户名及密码
2.储蓄销户根据提示输入账号及密码
3.储蓄的账户存款、取款。
登陆好自己的账号,选择要实现功能,1存款,2取款,3显示余额。
若不能登陆成功,则根据提示建立一个账户。
4.返回菜单。
5.查看所有储蓄账户信息。
6.退出账目管理。
九课程设计总结
通过本次课程设计使我对编程有了新的认识,对自己所学的知识有了新的了解。
在做本次课成设计的过程中,我巩固了自己所学过的知识,并且能将这些知识运用到实际中。
当然,在这个过程中我也遇到很多困难,不会编写函数,不会调程序,不能理解程序中的内容,但经过俩周多的努力,我克服这些困难,圆满的完成了本次课程设计,使自己有了巨大的进步。
在下次课程设计中,我一定会发挥得更好,让自己再次提高。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 银行 储蓄 管理 系统