模拟银行营业厅功能的程序.docx
《模拟银行营业厅功能的程序.docx》由会员分享,可在线阅读,更多相关《模拟银行营业厅功能的程序.docx(21页珍藏版)》请在冰豆网上搜索。
![模拟银行营业厅功能的程序.docx](https://file1.bdocx.com/fileroot1/2023-2/7/f0b87165-6ecf-45ff-a5ce-c8c7c1c046a8/f0b87165-6ecf-45ff-a5ce-c8c7c1c046a81.gif)
模拟银行营业厅功能的程序
1.引言
银行是经营货币的企业,它的存在方便了社会资金的筹措与融通,它是金融机构里面非常重要的一员。
我们可以看出银行的业务,一方面,它以吸收存款的方式,把社会上闲置的货币资金和小额货币节余集中起来,然后以贷款的形式借给需要补充货币的人去使用;在这里,银行充当贷款人和借款人的中介。
另一方面,银行为商品生产者和商人办理货币的收付、结算等业务,它又充当支付中介。
总之,银行起信用中介作用。
银行是通过存款、贷款、汇兑、储蓄等业务,承担信用中介的金融机构。
银行是金融机构之一,而且是最主要的金融机构。
银行营业厅是银行业与客户的最密切的交流的地点,银行业务基本上都是在银行营业厅完成的。
模拟银行营业厅功能的系统开发主要是基于计算机编程语言-C语言。
C语言是一种成功的系统描述语言,用C语言开发的UNIX操作系统就是一个成功的范例;同时C语言又是一种通用的程序设计语言,在国际上广泛流行。
世界上很多著名的计算公司都成功的开发了不同版本的C语言,很多优秀的应用程序也都使用C语言开发的,它是一种很有发展前途的高级程序设计语言。
2.银行营业厅功能的系统的设计思想
采用分而治之的方法,将一个复杂问题分解为相对简单的一些子问题,然后针对这些子问题进行求解。
如果某个子问题仍然是比较复杂的,再进一步分解为子-子问题,直到所有问题都能够求解。
求解问题的过程是分阶段进行的,每个阶段处理的问题都控制在容易理解和处理的范围内。
实验平台:
VC++6.0或者VisualStudio2005。
C语言是中级语言。
它把高级语言的基本结构和语句与低级语言的实用性结合起来。
C语言可以像汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元。
C是结构式语言。
结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。
这种结构化方式可使程序层次清晰,便于使用、维护以及调试。
C语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。
C语言功能齐全。
具有各种各样的数据类型,并引入了指针概念,可使程序效率更高。
而且计算功能、逻辑判断功能也比较强大,可以实现决策目的的游戏。
C语言适用范围大。
适合于多种操作系统,如Windows、DOS、UNIX等等;也适用于多种机型。
C语言对编写需要硬件进行操作的场合,明显优于其它解释型高级语言,有一些大型应用软件也是用C语言编写的。
C语言具有较好的可移植性,并具备很强的数据处理能力,因此适于编写系统软件,三维,二维图形和动画。
它是数值计算的高级语言。
C语言发展如此迅速,而且成为最受欢迎的语言之一,主要因为它具有强大的功能。
许多著名的系统软件,如PC-DOS,DBASEⅣ都是由C语言编写的。
用C语言加上一些汇编语言子程序,就更能显示C语言的优势了。
3.模拟系统的功能实现
3.1模拟系统的功能图
本系统的基本功能模块图如下:
(1)主函数main()利用switch()实现各函数的调用,系统根据输入的数字
来调用相应的函数。
(2)查询函数cx()
查询函数cx()主要是查询客户信息,这个功能的实现利用一个fp指向结构体类型的指针变量,指向一个可操作的文件,换句话说,一个文件有一个文件变量指针,今后对文件的访问,转化为针对文件变量指针的操作。
首先打开文件,如果文件没有内容,则输出还没有一个用户。
否则,输入账号,然后fread函数读出文件的内容,如果用互相匹配的字段并且没有到达文件末尾,则输出查询到的客户信息。
流程图如下:
(3)创建用户函数newkehu()
创建用户函数用来创建一个新的银行客户,文件指针fp,fp1。
首先输入想要建立的用户的姓名、帐号然后查询文件中有没有相同的字段,如果没有的话说明可以创建这个客户,输入客户密码,如果两次输入的密码不同则要返回重新申请账号。
如果查询文件有相同字段则说明帐号已经有人用了。
流程图如下:
(4)存款函数ck()
存款函数在处理了没有账号的情况,帐号不存在的情况,账号存在存款的情况。
定义了两个文件指针,利用了文件函数中fopen函数、feof函数、fread函数字符串的比较、拷贝的函数。
流程图如下:
(5)取款函数qk()
取款函数实现了帐号不存在、还没有一个用户、账户存在但是存款数额不够取款数额、账户存在密码正确存款数足够取款数四种情况。
定义了两个文件指针,利用了文件函数中fopen函数、feof函数、fread函数字符串的比较、拷贝的函数
流程图如下:
(6)注销函数dela()
注销函数实现了操作完成后数据的保存。
定义了两个文件指针,利用了文件函数中fopen函数、feof函数、fread函数字符串的比较、拷贝的函数
流程图如下:
3.2模拟系统的功能图示:
1、进入主界面
2、客户的查询
(1)第一次进入本系统,查询,没有结果
(2)建立第一个客户
3、查询帐号为11的客户
4、目前存款数为零,存款
5、存完款100元,现在取款,第一种情况:
钱不够取
第二种情况:
取款成功,取款50元
6、现在查询户头剩余的款数:
7、注销帐号,这样子这个账号会被保留
8、注销帐号成功
9、如果需要再去申请一个账号的话,原来账号会被自动删除,当你申请了一个新的账号之后,再去注销新的帐号,这样就会安全的保存新的账号,删除原来的账号。
3.3系统开发代码:
#include
#include
#include
structkehu
{charnum[20];
charname[20];
charpasswd[20];
intstatue;
intmoney;
}dat,temp;
voidcx()
{
FILE*fp;
charnum[20];
fp=fopen("fp.dat","rb");
if(fp==0){
printf("还没有一个人申请账号");
printf("输入任何键返回菜单\n");
}
else{
printf("请输入你的帐号:
");
scanf("%s",num);
while(feof(fp)==0)
{
fread(&dat,sizeof(dat),1,fp);
if(strcmp(dat.num,num)==0)
{printf("———————————————\n");
printf("——名字|帐号|存款(元)——\n");
printf("———————————————\n");
printf("|%9s|%19s%|%9d|\n",dat.name,dat.num,dat.money);
printf("———————————————\n");
printf("\n\n");
getchar();
break;
}
elseif(feof(fp)!
=0)
{
printf("帐号不存在!
\n");
printf("按任何键返回菜单\n");
getchar();
break;}}}
fclose(fp);}
voidnewkehu()
{FILE*fp,*fp1;
charpasswd[20];
fp=fopen("fp.dat","ab");
label1:
printf("请输入你的名字:
");
scanf("%s",dat.name);
fp1=fopen("fp.dat","rb");
printf("帐号:
");
scanf("%s",dat.num);
while(fread(&temp,sizeof(temp),1,fp1)==1)
{if(strcmp(dat.num,temp.num)==0)
{printf("此帐号已经有人用了,请重新输入.\n");
fclose(fp1);
printf("\n\n");
getchar();
break;}}
printf("输入密码:
");
scanf("%s",dat.passwd);
printf("确认密码:
");
scanf("%s",&passwd);
if(strcmp(dat.passwd,passwd)!
=0)
{
printf("密码不一样!
请重新申请帐号.\n");
gotolabel1;}
dat.money=0;fwrite(&dat,sizeof(dat),1,fp);
fclose(fp);
printf("申请成功.\n");
printf("\n\n");
}
voidck()
{
FILE*fp,*fp1;
charnum[20];
charpasswd[20];
intmoney;
inti=1;
fp=fopen("fp.dat","rb");
if(fp==NULL)
{
printf("还没有一个人申请帐号.\n");
printf("\n\n");
getchar();
gotolabel;}
printf("请输入你的帐号:
");
scanf("%s",num);
printf("密码:
");
scanf("%s",passwd);
while(!
feof(fp))
{
fread(&dat,sizeof(dat),1,fp);
if(strcmp(num,dat.num)==0)
{
printf("请输入你要存款的数额:
");
scanf("%d",&money);
strcpy(temp.name,dat.name);
strcpy(temp.num,num);
strcpy(temp.passwd,passwd);
temp.money=dat.money+money;
break;
}
i++;
if(feof(fp)!
=0)
{
printf("帐号不存在!
\n");
printf("按任何键返回菜单......\n");
getchar();
gotolabel;}
}
if(strcmp(num,temp.num)==0&&strcmp(passwd,temp.passwd)==0)
{fclose(fp);
fp1=fopen("fp.dat","wb+");
fseek(fp1,i*sizeof(temp),0);//文件的定位,将它指向要修改的结构
fwrite(&temp,sizeof(temp),1,fp1);//重新写入文件
rewind(fp1);//将文件的指针移到开头的位置
fclose(fp1);}
printf("存款成功!
\n");
printf("\n\n");
getchar();
label:
;}
voidqk()
{FILE*fp,*fp1;
charnum[20];
charpasswd[20];
intmoney;
inti=1;
fp=fopen("fp.dat","rb");
if(fp==NULL)
{
printf("还没有一个人申请帐号.\n");
printf("输入任何键返回菜单......\n");
getchar();
gotolabel;}
printf("请输入你的帐号:
");
scanf("%s",num);
printf("密码:
");
scanf("%s",passwd);
while(!
feof(fp))
{
fread(&dat,sizeof(dat),1,fp);
if(strcmp(num,dat.num)==0&&strcmp(passwd,dat.passwd)==0)
{
printf("请输入你要取款的数额:
");
scanf("%d",&money);if(money>dat.money)
{printf("对不起,您的余额不足!
\n");
printf("\n\n");
getchar();
gotolabel;}
strcpy(temp.name,dat.name);
strcpy(temp.num,num);
strcpy(temp.passwd,passwd);
temp.money=dat.money-money;
break;}
i++;
if(feof(fp)!
=0)
{
printf("帐号不存在!
\n");
printf("按任何键返回菜单......\n");
getchar();
gotolabel;}}
if(strcmp(num,temp.num)==0&&strcmp(passwd,temp.passwd)==0)
{
fclose(fp);
fp1=fopen("fp.dat","wb+");
fseek(fp1,i*sizeof(temp),0);
fwrite(&temp,sizeof(temp),1,fp1);
rewind(fp1);
fclose(fp1);}
printf("取款成功!
\n");
printf("\n\n");
getchar();
label:
;}
voiddela()
{//帐户号查找注销
FILE*fp,*fp1;
charnum[20];
charpasswd[20];
charstatue[5],statue1[]={"y"};
inti=1;
fp=fopen("fp.dat","rb");if(fp==NULL)
{
printf("还没有一个人申请帐号.\n");
printf("\n\n");
getchar();
gotolabel;}
printf("请输入你的帐号:
");
scanf("%s",num);
printf("密码:
");
scanf("%s",passwd);
while(!
feof(fp))
{
fread(&dat,sizeof(dat),1,fp);
if(strcmp(num,dat.num)==0&&strcmp(passwd,dat.passwd)==0)
{
printf("├───────是否注销此账户(y/n)-───────┤\n");
printf("请选择是否销户:
");
scanf("%s",statue);
if(strcmp(statue,statue1)==0)
{
strcpy(temp.name,dat.name);
strcpy(temp.num,num);
strcpy(temp.passwd,passwd);
temp.statue=0;
break;}
else{
printf("按任何键返回菜单......\n");
gotolabel;}}
i++;
if(feof(fp)!
=0)
{
printf("帐号不存在!
\n");
printf("\n\n");
getchar();
gotolabel;}}
if(strcmp(num,temp.num)==0&&strcmp(passwd,temp.passwd)==0)
{
fclose(fp);
fp1=fopen("fp.dat","wb+");
fseek(fp1,i*sizeof(temp),0);
fwrite(&temp,sizeof(temp),1,fp1);
rewind(fp1);
fclose(fp1);}
printf("操作成功!
\n");
printf("\n\n");
getchar();
label:
;}
voidmain()
{
inti;
label:
printf("—欢迎进入银行客户管理系统—\n");
printf("———————————————\n");
printf("—
(1)查询管理输入1再按Enter—\n");
printf("———————————————\n");
printf("—
(2)申请账号输入2再按Enter—\n");
printf("———————————————\n");
printf("—(3)存款管理输入3再按Enter—\n");
printf("———————————————\n");
printf("—(4)取款管理输入4再按Enter—\n");
printf("———————————————\n");
printf("—(5)账户号查找注销输入5再按Enter—\n");
printf("———————————————\n");
printf("请输入选择:
");
do{
scanf("%d",&i);
switch(i)
{
case1:
system("cls");cx();
gotolabel;break;
case2:
system("cls");newkehu();
gotolabel;break;
case3:
system("cls");ck();
gotolabel;break;
case4:
system("cls");qk();
gotolabel;break;
case5:
system("cls");dela();
gotolabel;break;
default:
printf("输入错误,请重新输入");
}
}
while(i!
=0);
}