C语言课程设计模拟银行存取款业务.docx
- 文档编号:15771595
- 上传时间:2023-07-07
- 格式:DOCX
- 页数:29
- 大小:250.12KB
C语言课程设计模拟银行存取款业务.docx
《C语言课程设计模拟银行存取款业务.docx》由会员分享,可在线阅读,更多相关《C语言课程设计模拟银行存取款业务.docx(29页珍藏版)》请在冰点文库上搜索。
C语言课程设计模拟银行存取款业务
《C语言程序设计》课程设计报告
题目:
模拟银行存取款业务
学生姓名
学号
时间
目 录
第1章绪论
1.1设计目的
1)银行存取款系统是针对银行账目的日常管理而设计。
银行账目管理系统不仅要求操作方便而且要求界面简洁,它还需要实现账目管理,用户查询功能。
2)并了解银行存取款业务的流程,使用C语言和数据程序知识模拟银行存取款系统。
1.2背景
说明:
a.待开发的软件系统的名称:
模拟银行存取款业务。
b.本项目的任务由安博思软的严武军老师提出,面向的用户是银行的管理员和普通用户。
c.面对日新月异的计算机的普及,利用计算机对储蓄的用户进行综合的管理。
1.3开发环境
Vi编辑器gcc编译器
1.4运行环境
RedHat
第2章系统总体设计
2.1系统设计的组成框图
2.2功能描述
系统实现的主要功能有:
1.管理员登陆
管理员可以实现对账户的管理:
注销用户,添加用户,查看用户,退出。
2.普通用户登陆
普通用户可以实现对自己的账户的管理:
取款,存款,查看余额,退出。
第3章系统详细设计
3.1程序设计流程图
3.2功能模块设计
3.2.1登陆界面
进入系统,显示欢迎界面,选择普通用户操作还是管理员用户操作。
3.2.2普通用户登陆
1.密码验证
作为普通用户登陆时,需要验证账号和密码是否匹配,匹配成功即可进行其他操作。
2.存款功能
登陆账号后,选择存款功能,并输入存款金额,写入文件,原有金额增加,可使用查询功能进行查询。
3.取款功能:
取款功能:
登陆账号后,选择取款功能,并输入取款金额,判断输入金额是否大于原有存款,若大于原有金额显示输入错误,余额不足,若输入金额小于原有金额则取出钞票,并写入文件,原有金额减小,可使用查询功能进行查询。
4.查询模块:
查询功能:
查询账户现有存款。
3.2.3管理员登陆
1.密码验证
管理员的权限很大,可以添加,注销,查看,用户信息,在此系统中,管理员的默认账号是555,密码是555。
2.注销用户
管理员登陆成功以后进行操作选择:
输入要注销用户的账号,若存在就删除,若不存在就返回操作选择界面。
3.添加用户
管理员登陆成功以后进行操作选择:
输入要添加用户的账号,密码,姓名,余额,若已存在此账号,则注册失败,返回操作选择界面。
4.查看用户
管理员登陆成功以后进行操作选择:
查看所有用户的信息。
3.3函数功能描述
menu1()//登陆的第一个界面
menu2()//超级管理员界面
menu3()//普通用户界面
is_mima()//验证管理员账号密码
pass(structperson*head,longnum,longpassword)//验证普通用户账号和密码
creat()//将银行卡信息.txt文本中的信息读取到链表中
get_money(structperson*head,longnum,intmoney)//用户取钱
save_money(structperson*head,longnum,intmoney)//用户存钱
insert(structperson*head,structperson*p)//添加用户
del(structperson*head,longnum)//注销用户
writeb(structperson*head)//将建立的链表存入银行卡信息.txt中
第4章系统使用说明
4.1管理员使用说明
1)输入账号555密码555,登陆界面。
若账号密码错误则重新输入。
2)登陆界面后,选择功能
3)选择a为注销用户,输入要注销的账号,若存在则注销,若不存在,则操作失败
4)选择b为添加用户,输入要添加的账号,密码,姓名,余额,若不存在此账号,则注册成功,否则失败。
5)选择c为查看用户信息,显示所有的用户信息。
6)选择d安全退出系统。
4.2普通用户使用说明
1)输入用户的账号和密码,登陆界面,若账号密码错误则重新输入。
2)登陆界面后,选择功能
3)选择a.为取款功能,输入取款金额,若取款机金额小于原有存款,则取款成功,取出钞票。
4)选择b.为存款功能,输入存款金额,存档,存款成功。
5)选择c.为查看余额,显示账户的余额。
6)选择d.退出系统。
附录
/*程序源代码*/
#include
#include
#include
structperson{
longnum;//账号
longpassword;//密码
charname[20];//姓名
longmoney;//余额
structperson*next;
};
structperson*head=NULL;
intn;//文件的个数
inta=-1;
longid;//超级管理员的id是555
longpassword;//超级管理员的密码是555
voidwriteb(structperson*head)//将建立的链表存入银行卡信息.txt中
{
FILE*pt;
structperson*p;
pt=fopen("银行卡信息.txt","w");
if(pt==NULL)
{
perror("银行卡信息.txt\n");
exit
(1);
}
p=head;
while(p)
{
fprintf(pt,"%d%d%s%d\n",p->num,p->password,p->name,p->money);
p=p->next;
}
fprintf(pt,"%d%d",a,a);
fclose(pt);
}
structperson*insert(structperson*head,structperson*p)//创建链表
{
structperson*p1;
p1=head;
while(p1->num!
=p->num&&p1->next!
=NULL)
{
p1=p1->next;
}
if(p1->num==p->num)
{
printf("已经存在此账号\n请重新选择:
\n");
returnhead;
}
p->next=head;
head=p;
printf("插入成功!
\n");
n++;
writeb(head);
returnhead;
}
structperson*del(structperson*head,longnum)
{
structperson*p,*p2;
if(head==NULL)
{
printf("没有信息\n");
exit
(1);
}
p=head;
while(p->num!
=num&&p->next!
=NULL)
{
p2=p;
p=p->next;
}
if(p->num==num)
{
if(p==head)
head=head->next;
else
p2->next=p->next;
printf("删除成功!
\n");
}
else
{
printf("没有此信息\n");
}
writeb(head);
/*pt=fopen("银行卡信息.txt","w");
if(pt==NULL)
{
perror("银行卡信息.txt\n");
exit
(1);
}
p=head;
while(p)
{
fprintf(pt,"%d%d%s%d\n",p->num,p->password,p->name,p->money);
p=p->next;
}
fprintf(pt,"%d%d",a,a);
fclose(pt);*/
returnhead;
}
structperson*creat()//将银行卡信息.txt文本中的信息读取到链表中
{
FILE*pt;
structperson*p,*p2;
p=(structperson*)malloc(sizeof(structperson));
p2=(structperson*)malloc(sizeof(structperson));
pt=fopen("银行卡信息.txt","r");
if(pt==NULL)
{
perror("银行卡信息.txt");
exit
(1);
}
fscanf(pt,"%d%d%s%d",&p->num,&p->password,&p->name,&p->money);
if(p->num==-1)
printf("数据库中没有信息");
while(p->num!
=-1)
{
n++;
if(n==1)
{
head=p;
}
else
p2->next=p;
p2=p;
p=(structperson*)malloc(sizeof(structperson));
fscanf(pt,"%d%d%s%d",&p->num,&p->password,&p->name,&p->money);
}
p2->next=NULL;
fclose(pt);
return(head);
}
structperson*save_money(structperson*head,longnum,intmoney)//用户存钱
{
structperson*p1,*p2;
if(head==NULL)
{
printf("卡中无记录\n");
return0;
}
p1=head;
while(p1->num!
=num&&p1->next!
=NULL)
{
p2=p1;
p1=p1->next;
}
if(p1->num==num)
{
p1->money=p1->money+money;
printf("已经存入%d\n",money);
printf("可用余额为%d\n",p1->money);
}
else
printf("不存在此卡号\n");
returnhead;
}
structperson*get_money(structperson*head,longnum,intmoney)//用户取钱
{
structperson*p1,*p2;
if(head==NULL)
{
printf("卡中无记录\n");
return0;
}
p1=head;
while(p1->num!
=num&&p1->next!
=NULL)
{
p2=p1;
p1=p1->next;
}
if(p1->num==num)
{
if(p1->money>money)
{
p1->money=p1->money-money;
printf("已经取出%d\n还剩余额%d\n",money,p1->money);
}
else
printf("余额不足,操作失败!
\n");
}
else
printf("不存在此卡号\n");
returnhead;
}
/*intknow_money(intnum)
{
intmoney=-1;
structperson*p1,*p2;
if(head==NULL)
{
printf("卡中无记录\n");
return0;
}
p1=head;
while(strcpy(p1->num,num)!
=0&&p1->next!
=NULL)
{
p2=p1;
p1=p1->next;
}
if(strcpy(p1->num,num)==0)
{
money=p1->money;
printf("余额为:
%d\n",money);
}
else
printf("不存在此卡号\n");
returnmoney;
}*/
structperson*pass(structperson*head,longnum,longpassword)//验证普通用户账号和密码
{
structperson*p;
/*if(head==NULL);
{
printf("没有信息\n");
exit
(1);
}*/
p=head;
while(p->num!
=num&&p->next!
=NULL)
{
p=p->next;
}
if(p->num==num&&p->password==password)
{
printf("登陆成功\n");
returnp;
}
else
{
printf("账号或密码错误\n");
returnNULL;
}
}
void_printf(structperson*head)
{
structperson*p;
p=head;
printf("账号姓名余额\n");
while(p)
{
//printf("%d%d%s%d\n",p->num,p->password,p->name,p->money);
printf("%3d%5s%6d\n",p->num,p->name,p->money);
p=p->next;
}
}
voidmenu1()//第一个界面
{
printf("*********************************************\n");
printf("欢迎进入此银行服务系统!
\n");
printf("*********************************************\n");
getchar();
}
voidmenu2()//超级管理员界面
{
printf("********************************************\n");
printf("a注销用户b添加用户c查看所有用户d退出\n");
printf("********************************************\n");
}
voidmenu3()//普通用户界面
{
printf("********************************************\n");
printf("a取款b存款c查看余额d退出\n");
printf("********************************************\n");
printf("请选择:
\n");
}
intis_mima()//验证管理员账号密码
{
printf("输入管理员账号\n");
scanf("%d",&id);
printf("输入管理员密码\n");
scanf("%d",&password);
if((id!
=555)||(password!
=555))
{
printf("密码或者账户错误\n");
return0;
}
else
return1;
}
intmain()
{
structperson*temp;
structperson*p3;
charch;
charnumber;
intb1;
//intb2;
intmoney;
temp=(structperson*)malloc(sizeof(structperson));
p3=(structperson*)malloc(sizeof(structperson));
head=creat();
system("colorf0");
menu1();
printf("*********************************************\n");
printf("1超级管理员登陆\n");
printf("2普通用户登陆\n");
printf("*********************************************\n");
scanf("%c",&number);
while
(1)
{
if(number=='1'||number=='2')
{
break;
}
printf("操作错误,请重新选择:
");
getchar();
scanf("%c",&number);
}
switch(number)
{
case'1':
{
while
(1)
{
b1=is_mima();
if(b1==1)
{
printf("管理员登陆成功!
\n");
break;
}
else
printf("重新输入\n");
}
menu2();
getchar();
scanf("%c",&ch);
while(ch=='a'||ch=='b'||ch=='c'||ch=='d')
{
switch(ch)
{
longb3;
case'a':
{
printf("输入要注销的账号:
");
scanf("%d",&b3);
head=del(head,b3);
getchar();
scanf("%c",&ch);
}
break;
case'b':
{
printf("添加的账号密码姓名余额\n");
scanf("%d%d%s%d",&p3->num,&p3->password,p3->name,&p3->money);
head=insert(head,p3);
getchar();
scanf("%c",&ch);
}
break;
case'c':
{
_printf(head);
getchar();
scanf("%c",&ch);
}
break;
default:
break;
}
if(ch=='d')
{
printf("安全退出!
\n");
break;
}
}
break;
}
case'2':
{
while
(1)
{
printf("输入用户账号:
");
scanf("%d",&id);
printf("输入用户密码");
scanf("%d",&password);
temp=pass(head,id,password);
if(temp!
=NULL)
{
break;
}
}
menu3();
getchar();
scanf("%c",&ch);
while(ch=='a'||ch=='b'||ch=='c')
{
switch(ch)
{
case'a':
{
printf("输入要取的金额\n");
scanf("%d",&money);
head=get_money(head,temp->num,money);
writeb(head);
getchar();
scanf("%c",&ch);
}
break;
case'b':
{
printf("输入要存的金额\n");
scanf("%d",&money);
head=save_money(head,temp->num,money);
writeb(head);
getchar();
scanf("%c",&ch);
}
break;
case'c':
{
printf("余额为;%d\n",temp->money);
getchar();
scanf("%c",&ch);
}
break;
case'd':
break;
default:
break;
}
if(ch=='d')
{
printf("已安全退出\n");
break;
}
}
}
break;
default:
{
printf("输入错误\n");
getchar();
scanf("%c",&number);
}
break;
}
return0;
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 模拟 银行 取款 业务
![提示](https://static.bingdoc.com/images/bang_tan.gif)