银行业务管理系统.docx
《银行业务管理系统.docx》由会员分享,可在线阅读,更多相关《银行业务管理系统.docx(33页珍藏版)》请在冰豆网上搜索。
银行业务管理系统
银行业务管理系统
XXXX学院数学与运算机科学学院
《算法与数据结构课程设计》
综合设计报告
课程设计名称:
银行业务治理模拟
专业:
运算机科学与技术
班级:
0X计本(X)班
学号:
0X0X030XX
姓名:
高XX
指导教师:
肖XX
课程设计报告
设计项目编号
01
名称
银行业务治理模拟
实验课时
5
要紧仪器设备
PC机
附属设备
优盘
要紧使用软件
Win-TC
实验时刻
2009年3月-5月
1.问题的描述和分析
商业银行业务模拟是对商业银行柜面业务进行模拟实习课程。
随着金融业和信息技术的不断进展,银行的治理也差不多和运算机接轨,实现了信息的数字化治理,了解并把握商业银行柜台,周期业务的实际操作处理方法,了解现今商业银行综合业务系统的软件应用,着重于对学生实际操作能力的训练,使学生能初步具备工作岗位的适应各个业务的编程操作能力。
多了解各行业编程需求,减少学生踏上工作岗位的适应磨合时刻,提高就业竞争力,突出应用型人才的培养目标。
下面我将对现行银行业务治理进行小部分模拟设计。
◆写一个上述银行业务治理系统,能够实现一些常用功能,如:
制卡,发卡,存款,取款。
用于对用户信息进行治理,并能进行修改,查找,显示,求和等操作。
2.算法的设计
概要设计:
◆建立银行卡治理系统,该系统的要紧模块为:
(1)实现系统内制卡、发卡功能;
(2)实现系统内帐户和相关帐户治理;
(3)实现卡交易和合法性检查;
(4)实现卡金融交易积分功能;
(5)实现卡报表功能;
(6)数据以文件形式储备
在编辑过程中,需要使用串,查找等算法,同时需要对输入的信息进行储备。
在制卡发卡后,对用户的信息进行查找,并显示出来。
voidload(){
FILE*fp1;
if((fp1=fopen("c:
//user.txt","r"))==NULL)
{
printf("\nCannotopenthefile\n");
exit(0);
}
for(N=0;!
feof(fp1);N++)
{
fscanf(fp1,"%d%s%s%s%f%d%d",&u[N].cardNO,u[N].name,u[N].adnum,u[N].code,&u[N].left,&u[N].exp,&u[N].flag);
return(N);
}
fclose(fp1);
}
3.数据结构的设计
串是非数值处理中的要紧对象,我们一样用串来表示字符流。
而那个程序中要处理的确实是银行类的字符流,因此我们需要用到串来实现这一功能。
串的储备表示有三种形式,第一种是定长顺序储备结构。
第二种是块链式储备结构。
第三种是堆分配储备结构。
在那个地点,我们采纳串的第一种储备方式——定长顺序储备,而在程序编译时,要给出确定的空间大小,因此我们将串的空间大小设计为100个字符。
#defineMAXSIZE100
结构体定义如下:
structuseru[]/*信用卡结构体*/
{
intcardNO;/*卡数*/
charname[20];/*姓名*/
charadnum[22];/*信用卡号*/
charcode[8];/*密码*/
floatleft;/*余额/存款*/
intexp;/*消费*/
intflag;/*确定是新卡依旧旧卡*/
}u[M];
4.具体程序的实现
第一是系统内的制卡功能:
是否有19位N
Y
记录中卡号Y
是否差不多存在调函数
N
依照实际对密码等
赋初值
#include
#include
#include
#include
#defineM100/*定义的数组上限*/
intN;/*结构体数组下标量*/
intH;/*关心确定是否储存文件*/
structuseru[]/*信用卡结构体*/
{
intcardNO;/*卡数*/
charname[20];/*姓名*/
charadnum[22];/*信用卡号*/
charcode[8];/*密码*/
floatleft;/*余额/存款*/
intexp;/*消费*/
intflag;/*确定是新卡依旧旧卡*/
}u[M];
5.界面设计
本程序的主控菜单如下:
1.申请一个卡号
2.使用那个卡号
3.打印消费记录
4.存款功能
5.取款功能
6.消费功能
7.报表功能
8.查找消费记录
9.修改密码
intmenu(void)
{intx;
do
{
printf("\t\t<*******************menu************************>\n");
printf("\t\t||
(1)Applyforoneblankcard||\n");
printf("\t\t||
(2)Useoneblankcard||\n");
printf("\t\t||(3)Printtherecord||\n");
printf("\t\t||(4)Storethemoney||\n");
printf("\t\t||(5)Fetchthemoney||\n");
printf("\t\t||(6)Spendthemoney||\n");
printf("\t\t||(7)Savethefile||\n");
printf("\t\t||(8)Searchtherecord||\n");
printf("\t\t||(9)Changethepassward||\n");
printf("\t\t||(0)quitthesystem||\n");
printf("\t\t\tPleaseinputyourchoice(0-10):
()\b\b\b");
scanf("%d",&x);
if(x<0||x>10)
{
printf("\t\t\tError!
Inputagain.");
}
}while(x<0||x>10);
return(x);
}
(1).制卡
voidmake(structuseru[])
{
inti;
chara[22];
load();/*读取文件中的可用空卡条数*/
do
{
printf("\n\nEntertheADnumberofthecard:
\n");
scanf("%s",a);
if(strlen(a)!
=19)
{
printf("\n\n\n\t\t****MistakenID,pleaseenteragain*********\n\n");
continue;
}
for(i=0;iif(strcmp(u[i].adnum,a)==0)
{
printf("\n\n\t\t***TheADnumberexists,pleaseenteragain***\n\n");
break;
}
}
while(((strlen(a))!
=10)||strcmp(u[i].adnum,a)==0);
u[N].cardNO=N;
strcpy(u[N].name,"***");
strcpy(u[N].adnum,a);
strcpy(u[N].code,"000000");
u[N].flag=-1;
u[N].left=0.00;
u[N].exp=0;
N++;
H=1;
printf("\n\n\n\t\t*************Successfullyapplied!
*************\n\n");
printf("\n\n\tPressanykeytoreturn.....\n\n");
getchar();
}
其中
voidload(){
FILE*fp1;
if((fp1=fopen("c:
//user.txt","r"))==NULL)
{
printf("\nCannotopenthefile\n");
exit(0);
}
for(N=0;!
feof(fp1);N++)
{
fscanf(fp1,"%d%s%s%s%f%d%d",&u[N].cardNO,u[N].name,u[N].adnum,u[N].code,&u[N].left,&u[N].exp,&u[N].flag);
return(N);
}
fclose(fp1);
}
使用该程序,要现在c盘建立一个名为user.txt的文件。
(2)发卡:
voiddeliever(structuseru[]){
{
inti;
chara[20];
floatb;
charcode2[8];
for(i=0;i<=N;i++)
if(u[i].flag==-1)/*-1是新申请的卡特有的值*/{
printf("\n\n\t\t1.Pleaseenteryourname:
");
scanf("%s",a);
strcpy(u[i].name,a);
printf("\n\t\t2.Code:
");
scanf("%s",u[i].code);
printf("\n\t\t3.Codeagain:
");
scanf("%s",code2);
while(stricmp(u[i].code,code2)!
=0)/*输入的密码两次应该相同*/
{
printf("Yourtwocodesarenotidentical,pleaseinputthemagain!
");
printf("\n\t\t\tCode:
");
scanf("%ld",&u1.code);
printf("\n\t\t\tCodeagain:
");
scanf("%ld",&code2);
}
strcpy(u[i].code,a);
printf("\n\n\t\tThemoneyyouwanttostore:
");
scanf("%f",&b);
printf("\n\n");
u[i].left=b;
u[i].flag=1;/*1是使用的卡特有的值*/
H=1;
printf("\n\n\t\t*********Youcanusethecard!
Congratulations!
*********\n\n");
printf("\n\n\t\tPressanykeytoreturn.....\n\n");
getchar();
break;
}
if(i>N)
{
printf("\n\n\n\t\t**************Havenofreecard,pleasemakeone!
***************\n\n");
printf("\n\n\tPressanykeytoreturn.....\n\n");
getchar();
}
}
流程:
输入姓名两次密码确定值相同之后存入一定金额就能够使用信用卡了
(3).取款
voidfetch(structuseru[])
{
floatmoney;/*money要取的数目*/
inti,j=0;/*j记录同名的人数*/
intlogic=0,account=0;
/*logic记录是否在文件中找到使用者信息accout记录输入密码次数上限为3次*/
intnum[10];/*记录同名的人在文件中的位置即条数*/
chara[20],b[6];
printf("\n\n\t\tPleaseinputyourname:
");
scanf("%s",a);
for(i=0;i<=N;i++)
if(strcmp(u[i].name,a)==0)
{
num[j]=i;/*查找是第几条记录*/
j++;
}
if(j==0)
printf("\n\n\t\t*********Cannotfindtherecordoftheperson%s!
*********\n\n",a);
if(j>1)
{
printf("\n\nEntertheADnumberofthecard:
(\t\t)\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b");
scanf("%s",a);
for(i=0;iif(strcmp(u[num[i]].adnum,a)==0)
{
logic=1;
num[j-1]=num[i];
/*把数组中最后一个非零元素赋为正确的信息所在位置*/
break;
}
if(logic==0)
printf("\n\n\t\t***Therecorddoesnotexist.***\n\n\n");
}
if(j==1||logic==1)
do
{
printf("\n\nPleaseEnterthecode:
()\b\b\b\b\b\b\b");
scanf("%s",b);
if(strcmp(u[num[j-1]].code,b)==0)
{
printf("\n\n\tThemoneyleftis:
");
printf("%f\n\n",u[num[j-1]].left);
do
{
printf("\nHowmuchdoyouwanttofetch:
");
scanf("%f",&money);
if(money>u[num[j-1]].left)
printf("\n\n\tBalanceDifficiency!
");
}while(money>u[num[j-1]].left);
break;
}
else
{
printf("\n\n\t\t*************Mistakencode--Tryagain*************\n\n");
account++;
}
}while(account<3);
if(account<3)
{
u[num[j-1]].left-=money;
H=1;
printf("\n\n\t\t****FetchSuccessful****\n\n");
}
else
{
printf("\n\n\t\t****************Fetchfailue**********************\n\n\n");
printf("\n\n\tPassanykeytoreturn.....\n\n");
getchar();
}
}
(4).存款
voiddeposit(structuseru[])/*储备定义变量意义差不多与取款函数相同*/
{
floatmoney;
inti,j=0;
intlogic=0,account=0;
intnum[10];
chara[20],b[6];
printf("\n\nPleaseenteryourname:
");
scanf("%s",a);
for(i=0;i<=N;i++)
if(strcmp(u[i].name,a)==0)
{
num[j]=i;
j++;
}
if(j==0)
printf("\n\n\t\t***Cannotfindtherecordoftheperson%s!
***\n\n",a);
if(j>1)
{
printf("\n\nEntertheADnumberofthecard:
(\t\t)\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b");
scanf("%s",a);
for(i=0;iif(strcmp(u[num[i]].adnum,a)==0)
{
logic=1;
num[j-1]=num[i];
break;
}
if(logic==0)
printf("\n\n\t\t*************Therecorddoesnotexist.*************\n\n\n");
}
if(j==1||logic==1)
do
{
printf("\n\nEnterthecode:
()\b\b\b\b\b\b\b");
scanf("%s",b);
if(strcmp(u[num[j-1]].code,b)==0)
{
printf("\n\nHowmuchdoyouwanttodeposit:
");
scanf("%f",&money);
u[num[j-1]].left+=money;
H=1;
printf("\n\n\t\t**************Successfullydeposit!
**************\n\n");
break;
}
else
{
printf("\n\n\t\t*************Mistakencode--Tryagain*************\n\n");
account++;
}
}while(account<3);
if(account==3)
{
printf("\n\n\t\t******Depositfailue************\n\n\n");
printf("\n\n\tPassanykeytoreturn.....\n\n");
getchar();
}
}
(5).报表
voidforms(structuseru[])/*报表*/
{
inti,page;
do
{
printf("\n\tThereare%dpages!
!
",N/8+1);
printf("\n\n\tWhichpagedoyouwanttocheck?
:
()\b\b");
scanf("%d",&page);
if(page>N/8+1)
{
printf("\n\n\t\t***Errorpageyouenter--Tryagain***");
continue;
}
else
{
printf("\n\t\t\t\tPage(%d)\n",page);
printf("\n\n|----|--------------------|--------------------|----|----------|----------|");
printf("\n|NO.|name|AD|flag|left|exp|");
printf("\n|----|--------------------|--------------------|----|----------|----------|");
for(i=8*(page-1)+1;i<=8*(page-1)+9;i++)
{
printf("\n|%-4d|%-20s|%-20s|%-4d|%-10.2f|%-10d|",u[i-1].cardNO,u[i-1].name,u[i-1].adnum,
u[i-1].flag,u[i-1].left,u[i-1].exp);
printf("\n|----|--------------------|--------------------|----|----------|----------|");
if(i==N)
break;
}
}
}while(page>N/7+1);
printf("\n\n\tPassanykeytoreturn......\n");
getchar();
}
(6).消费
voidconsume(structuseru[])/*消费变量意义同取款函数*/
{
floatmoney;
inti,j=0;
intlogic=0,account=0;
intnum[10];
chara[20],b[6];
printf("\n\nPleaseenteryourname:
");
scanf("%s",a);
for(i=0;i<=N;i++)
if(strcmp(u[i].name,a)==0)
{
num[j]=i;
j++;
}
if(j==0)
printf("\n\n\t\t***************Cannotfindtherecordofthe%s!
*************\n\n",a);
if(j>1)
{
printf("\n\nPleaseentertheADnumberofthecard:
(\t\t)\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b");
scanf("%s",a);
for(i=0;iif(strcmp(u[num[i]].adnum,a)==0)
{
logic=1;
num[j-1]=num[i];
break;
}
if(logic==0)
printf("\n\n\t\t***Therecorddoesnotexist.***\n\n\n");
}
if(j==1||logic==1)
do{
printf("\n\nPleaseenterthecode:
()\b\b\b\b\b\b\b");
scanf("%s",b);
if(strcmp(u[num[j-1]].code,b)==0)
{
do
{
printf("\n\n\nHowmuchistheexpenditure?
:
");
scanf("%f",&money);
if(money>u[num[j-1]].left)
printf("\n\n\tB