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