银行业务管理系统算法与数据结构.docx
- 文档编号:10415160
- 上传时间:2023-02-11
- 格式:DOCX
- 页数:33
- 大小:171.82KB
银行业务管理系统算法与数据结构.docx
《银行业务管理系统算法与数据结构.docx》由会员分享,可在线阅读,更多相关《银行业务管理系统算法与数据结构.docx(33页珍藏版)》请在冰豆网上搜索。
银行业务管理系统算法与数据结构
2008-2009学年度第二学期
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;i if(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;i if(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;i if(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;i if(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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 银行业务 管理 系统 算法 数据结构