1、银行业务管理系统算法与数据结构472020年5月29日文档仅供参考 - 第二学期XXXX学院数学与计算机科学学院综合设计报告课程设计名称: 银行业务管理模拟 专 业: 计算机科学与技术 班 级: 0X计本(X)班 学 号: 0X0X030XX 姓 名: 高XX 指 导 教 师: 肖XX 课程设计报告设计项目编号01名称银行业务管理模拟实验课时5主要仪器设备PC机附属设备优盘主要使用软件Win-TC实验时间 3月-5月1.问题的描述和分析商业银行业务模拟是对商业银行柜面业务进行模拟实习课程。随着金融业和信息技术的不断发展,银行的管理也已经和计算机接轨,实现了信息的数字化管理,了解并掌握商业银行柜
2、台,周期业务的实际操作处理方法,了解现今商业银行综合业务系统的软件应用,着重于对学生实际操作能力的训练,使学生能初步具备工作岗位的适应各个业务的编程操作能力。多了解各行业编程需求,减少学生踏上工作岗位的适应磨合时间,提高就业竞争力,突出应用型人才的培养目标。 下面我将对现行银行业务管理进行小部分模拟设计。 写一个上述银行业务管理系统,能够实现一些常见功能,如:制卡,发卡,存款,取款。用于对用户信息进行管理,并能进行修改,查找,显示,求和等操作。2.算法的设计概要设计:银 行 业 务 管 理 模 拟 统存款取款报表消费查找记录改密退出制卡发卡 建立银行卡管理系统,该系统的主要模块为: (1)实现
3、系统内制卡、发卡功能;(2)实现系统内帐户和相关帐户管理;(3)实现卡交易和合法性检查;(4)实现卡金融交易积分功能;(5)实现卡报表功能;(6)数据以文件形式存储在编辑过程中,需要使用串,查找等算法,同时需要对输入的信息进行存储。在制卡发卡后,对用户的信息进行查找,并显示出来。void load() FILE *fp1; if(fp1=fopen(c:/user.txt,r)=NULL) printf(nCan not open the filen); exit(0); for(N=0;!feof(fp1);N+) fscanf(fp1,%d%s%s%s%f%d%d,&uN.cardNO,u
4、N.name,uN.adnum,uN.code,&uN.left,&uN.exp,&uN.flag); return(N); fclose(fp1);3.数据结构的设计串是非数值处理中的主要对象,我们一般用串来表示字符流。而这个程序中要处理的就是银行类的字符流,因此我们需要用到串来实现这一功能。串的存储表示有三种形式,第一种是定长顺序存储结构。第二种是块链式存储结构。第三种是堆分配存储结构。在这里,我们采用串的第一种存储方式定长顺序存储,而在程序编译时,要给出确定的空间大小,因此我们将串的空间大小设计为100个字符。#define MAXSIZE 100结构体定义如下:struct user
5、u /*信用卡结构体*/ int cardNO; /*卡数*/ char name20; /*姓名*/ char adnum22; /*信用卡号*/ char code8; /*密码*/ float left; /*余额/存款*/ int exp; /*消费*/ int flag; /*确定是新卡还是旧卡*/uM;4.具体程序的实现首先是系统内的制卡功能: 用户输入一个申请的卡号错误 重新输入是否有19位NY卡号已经存在需要重新输入记录中卡号Y是否已经存在 调函数N根据实际对密码等回菜单赋初值#include#include #include#include #define M 100 /*定
6、义的数组上限*/int N; /*结构体数组下标量*/int H; /*帮助确定是否保存文件*/struct user u /*信用卡结构体*/ int cardNO; /*卡数*/ char name20; /*姓名*/ char adnum22; /*信用卡号*/ char code8; /*密码*/ float left; /*余额/存款*/ int exp; /*消费*/ int flag; /*确定是新卡还是旧卡*/uM;5.界面设计本程序的主控菜单如下:1.申请一个卡号2.使用这个卡号3.打印消费记录4.存款功能5.取款功能6.消费功能7.报表功能8.查找消费记录9.修改密码int
7、 menu(void) int x; do printf(ttn); printf(tt| (1)Apply for one blank card |n); printf(tt| (2)Use one blank card |n); printf(tt| (3)Print the record |n); printf(tt| (4)Store the money |n);printf(tt| (5)Fetch the money |n); printf(tt| (6)Spend the money |n); printf(tt| (7)Save the file |n); printf(tt|
8、 (8)Search the record |n); printf(tt| (9)Change the passward |n); printf(tt| (0)quit the system |n); printf(tttPlease input your choice (0-10):( )bbb); scanf(%d,&x); if(x10) printf(ttt Error! Input again.); while(x10); return (x);(1) .制卡void make(struct user u) int i; char a22; load(); /*读取文件中的可用空卡条
9、数*/ do printf(nnEnter the AD number of the card:n); scanf(%s,a); if(strlen(a)!=19) printf(nnntt* Mistaken ID,please enter again*nn); continue; for(i=0;iN;i+) if(strcmp(ui.adnum,a)=0) printf(nntt* The AD number exists,please enter again *nn); break; while(strlen(a)!=10)|strcmp(ui.adnum,a)=0); uN.card
10、NO=N; strcpy(uN.name,*); strcpy(uN.adnum,a); strcpy(uN.code,000000); uN.flag=-1; uN.left=0.00; uN.exp=0; N+; H=1; printf(nnntt* Successfully applied!*nn); printf(nntPress any key to return.nn); getchar();其中void load() FILE *fp1; if(fp1=fopen(c:/user.txt,r)=NULL) printf(nCan not open the filen); exit
11、(0); for(N=0;!feof(fp1);N+) fscanf(fp1,%d%s%s%s%f%d%d,&uN.cardNO,uN.name,uN.adnum,uN.code,&uN.left,&uN.exp,&uN.flag); return(N); fclose(fp1);使用该程序,要现在c盘建立一个名为user.txt的文件。(2) 发卡: void deliever(struct user u) int i; char a20; float b; char code28; for(i=0;iN) printf(nnntt*Have no free card,please make
12、 one!*nn); printf(nntPress any key to return.nn); getchar(); 流程:输入姓名 两次密码确定值相同之后 存入一定金额就能够使用信用卡了(3) .取款void fetch(struct user u) float money; /*money要取的数目*/ int i,j=0; /*j记录同名的人数 */ int logic=0,account=0; /*logic记录是否在文件中找到使用者信息 accout记录输入密码次数 上限为3次*/ int num10; /*记录同名的人在文件中的位置即条数 */ char a20,b6; pri
13、ntf(nnttPlease input your name:); scanf(%s,a); for(i=0;i1) printf(nnEnter the AD number of the card:(tt )bbbbbbbbbbbbbbbbbbbb); scanf(%s,a); for(i=0;iunumj-1.left) printf(nnt Balance Difficiency!); while(moneyunumj-1.left); break; else printf(nntt* Mistaken code-Try again*nn); account+; while(accoun
14、t3); if(account3) unumj-1.left-=money; H=1; printf(nntt* Fetch Successful* nn); else printf(nntt*Fetch failue *nnn); printf(nntPass any key to return.nn); getchar(); (4) .存款void deposit(struct user u) /*存储 定义变量意义基本与取款函数相同*/ float money; int i,j=0; int logic=0,account=0; int num10; char a20,b6; print
15、f(nnPlease enter your name:); scanf(%s,a); for(i=0;i1) printf(nnEnter the AD number of the card:(tt )bbbbbbbbbbbbbbbbbbbb); scanf(%s,a); for(i=0;ij;i+) if(strcmp(unumi.adnum,a)=0) logic=1; numj-1=numi; break; if(logic=0) printf(nntt* The record does not exist.*nnn); if(j=1|logic=1) do printf(nnEnter
16、 the code :( )bbbbbbb); scanf(%s,b); if(strcmp(unumj-1.code ,b)=0) printf(nnHow much do you want to deposit:); scanf(%f,&money); unumj-1.left+=money; H=1; printf(nntt* Successfully deposit !*nn); break; else printf(nntt* Mistaken code-Try again*nn); account+; while(accountN/8+1) printf(nntt* Error p
17、age you enter-Try again *); continue; else printf(nttttPage (%d )n,page); printf(nn|-|-|-|-|-|-|); printf(n|NO. | name | AD |flag| left | exp |); printf(n|-|-|-|-|-|-|); for(i=8*(page-1)+1;iN/7+1); printf(nntPass any key to return.n); getchar();(6) .消费 void consume(struct user u) /*消费 变量意义同取款函数*/ fl
18、oat money; int i,j=0; int logic=0,account=0; int num10; char a20,b6; printf(nnPlease enter your name:); scanf(%s,a); for(i=0;i1) printf(nnPlease enter the AD number of the card:(tt )bbbbbbbbbbbbbbbbbbbb); scanf(%s,a); for(i=0;iunumj-1.left) printf(nnt Balance Difficiency!); while(moneyunumj-1.left); unumj-1.left-=money; unumj-1.exp+=money; H=1; printf(nnntt* Pay for successful *nn); break; else printf(nntt* Mistaken code-Try again*nn); account+; while(account3); if(account=3) printf(nntt* Failue Consume *nnn); printf(nntPress any key to return.nn); getchar(); (7).改密码:void change(struct