银行存取款管理
XX大学课程设计
银行存取款管理设计
单 位 分院(系)
专 业
学 号
学生姓名
指导教师
目录
第1章 选题的意义………………………………………………… 4
第2章 系统功能需求分析
2.1系统的基本要求 …………………………………………………5
2.2系统功能需求分析…………………………………………………5
第3章系统设计
3.1设计框架图…………………………………………………………6
3.2应用函数与变量说明………………………………………………7
第4章 系统实现
4.1程序代码……………………………………………………………9
4.2程序使用说明………………………………………………………24
第5章 总结 …………………………………………………………31
第1章 选题的意义
1.1通过课程设计是我发现在上课过程中所没有发现的漏洞,扩充自己的C语言只是,进行自我完善,对课本上的内容学以致用,加以理解与巩固。
1.2将课本上的知识应用到实际的编程中,提高自己的实践操作能力,掌握指针或数组、结构体、文件的操作方法。独立思考,学以致用,提升、提高对软件的编程能力,掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能。
1.3银行的账目往来更加频繁,这就要求查询管理系统能够更加方便简洁的进行操作,这对于繁重的信息查询工作是十分重要的。
第二章 系统功能需求分析
2.1系统的基本要求要求:
设计一个银行存取款管理系统,使之能提供以下功能:
1、应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观!
2、能够添加和修改以及删除客户文件。(在客户文件中,每个客户是一条记录,包括编号、客户姓名、支取密码、客户地址、客户电话、账户总金额)。
3、能够输入和查询客户存款取款记录。(在存取款文件中,每次存取款是一条记录,包括编号、日期、类别、存取数目、经办人。类别分为取款和存款两种)。
4、退出银行存取款管理系统。
2.2系统功能需求分析:
该系统能够满足对银行存取款管理的基本需求,可以查询、添加、修改银行存取款信息,便于信息的自动化管理。
第3章 系统设计
3.1 设计框架图
①
②
③
④
⑤
⑥
⑦
⑧
3.2函数与变量说明
(1)为存储客户信息,定义结构体为全局变量
extern struct kehu
{
char jin[20];
char jin2[20];
char t[20];
float j1;
float j2;
float j3;
float j4;
long int b;
char x[20];
long int m;
char a[50];
long int d;
float j;
};struct kehu w[200];
(2)自定义函数
void main(): 在里面写了“功能选择”的switch函数;
void kehu(); 客户资料添加与操作主菜单;
void kehu1(struct kehu p[],char *re,long *h); 查询客户资料函数;
void kehu2(struct kehu *p,char *re,long h); 添加客户资料函数;
void kehu3(struct kehu *p,char *re,long h); 修改客户资料函数;
void kehu4(struct kehu *p,char *re,long h); 客户资料删除函数;
void kehup(struct kehu *p,char *re,long *h); 客户资料显示函数;
void cunq1(); 存取款办理选择主菜单;
void cunq11(struct kehu *p,char *re,long h); 客户存款资料的键入;
void cunq12(struct kehu *p,char *re,long h); 客户取款资料的键入;
void cunq2(); 存取款选择查询主菜单;
void cunq211(struct kehu p[],char *re,long *h); 把顾客存款资料从文件读到缓冲区;
void cunq212(struct kehu *p,char *re,long *h); 显示存款资料;
void cunq221(struct kehu p[],char *re,long *h); 把客户取款资料从文件读到缓冲区;
void cunq222(struct kehu *p,char *re,long *h); 显示取款资料;
(3)局部变量int m;用来在主函数和其他函数中进行switch选择判断;
(4)全局变量long int t;用于记录客户编号号,而编号是在整个程序中都要用到的,因为是全局变量,所以一个客户的编号不能变更。
(5)char r[20],b[20],c[20]都为记录客户姓名的一维数组,分别用于生成客户文件以及存取款文件和读取客户文件以及存取款文件时使用。
第四章 系统实现
4.1程序代码
#include
#include
#include
extern struct kehu
{
long int b;
char x[20];
long int m;
char a[50];
long int d;
float j;
char jin[20];
char jin2[20];
char t[20];
float j1;
float j2;
float j3;
float j4;
};
struct kehu w[200];
void kehu();
void kehu1(struct kehu p[],char *re,long *h); /*把客户资料从文件读到缓冲区*/
void kehu2(struct kehu *p,char *re,long h); /*客户资料输入*/
void kehu3(struct kehu *p,char *re,long h); /*新客户资料输入*/
void kehu4(struct kehu *p,char *re,long h); /* 资料清除*/
void kehup(struct kehu *p,char *re,long *h); /*显示客户资料*/
void cunq1();
void cunq11(struct kehu *p,char *re,long h); /*客户存款资料的输入*/
void cunq12(struct kehu *p,char *re,long h); /*客户取款资料的输入*/
void cunq2();
void cunq211(struct kehu p[],char *re,long *h); /*把客户存款资料从文件读到缓冲区*/
void cunq212(struct kehu *p,char *re,long *h);
void cunq221(struct kehu p[],char *re,long *h); /*把客户取款资料从文件读到缓冲区*/
void cunq222(struct kehu *p,char *re,long *h);
long t;
void main()
{
int m;
while(1)
{
printf("\n.....................银行存取款管理系统.........................\n");
printf("\n \n");
printf(" 【功能选择】 \n");
printf(" \n");
printf("\n 1:客户添加与操作 ");
printf("\n ");
printf("\n 2:存取款办理 ");
printf("\n ");
printf("\n 3:存取款查询 ");
printf("\n ");
printf("\n 4: 退出 ");
printf("\n ");
printf("\n \n");
printf("-------------------请按相应的数字选择您的需要-------------------\n");
scanf("%d",&m);
switch(m)
{
case 1:kehu();break;
case 2:cunq1();break;
case 3:cunq2();break;
case 4:exit(0);
}
getchar();
printf("\n\n\n\n\n按回车键返回主界面...");
getchar();
}
}
void kehu()
{
int m;
char r[20],b[20],c[20];
long h,k;
printf("\n---------------------------------------------------------------\n");
printf("\n 客户文件:1:客户资料添加");
printf("\n ");
printf("\n 2:客户资料查询");
printf("\n ");
printf("\n 3:客户资料修改");
printf("\n ");
printf("\n 4:客户资料删除");
printf("\n ");
printf("\n 5:后退\n\n");
printf(" \n");
printf("----------------------按相应的数字以选择您的需要-----------------\n");
scanf("%d",&m);
switch(m)
{ case 1:
printf(" \n");
printf(" 1:客户资料添加 \n");
printf(" \n");
printf("--------请输入新客户的姓名和编号:\n");
printf("--------请输入姓名:\n");
scanf("%s",r);
printf("--------请输入编号:\n");
scanf("%ld",&h);
kehu2(w,r,h); /*把数据从缓冲区输入到文件*/
break;
case 2:
printf(" \n");
printf(" 2:客户资料查询 \n");
printf(" \n");
printf("----------请输入您要查询的客户的姓名:\n");
scanf("%s",b);
kehu1(w,b,&t); /*从文件读到缓冲区*/
kehup(w,b,&t); /*显示*/
break;
case 3:
printf(" \n");
printf(" 3:客户资料修改 \n");
printf(" \n");
printf("\n------请输入您要修改的客户的姓名和编号:\n");
printf("--------请输入姓名:\n");
scanf("%s",c);
printf("--------请输入编号:\n");
scanf("%ld",&k);
kehu3(w,c,k); /*把新数据从缓冲区输入到文件*/
break;
case 4:
printf(" \n");
printf(" 4:客户资料删除 \n");
printf(" \n");
printf("\n------请输入您要删除的客户姓名和编号:\n");
printf("--------请输入姓名:\n");
scanf("%s",c);
printf("--------请输入编号:\n");
scanf("%ld",&k);
kehu4(w,c,k); /*把 0 数据从缓冲区输入到文件*/
break;
case 5:break;
default:
printf("输入有误!");
}
}
void kehu1(struct kehu p[],char *re,long *h)
{
FILE *fp;
fp=fopen(re,"rb");
fread(h,4,1,fp);
fread(&p[*h],sizeof(struct kehu),1,fp);
fclose(fp);
}
void kehup(struct kehu *p,char *re,long *h)
{
printf(" 客户的详细资料\n");
printf("客户编号 ");
printf("------------------");
printf("%ld\n",*h);
printf("客户密码 ");
printf("------------------");
printf("%ld\n",p[*h].m);
printf("客户电话 ");
printf("------------------");
printf("%ld\n",p[*h].d);
printf("客户地址 ");
printf("------------------");
printf("%s\n",p[*h].a);
printf("账户当前金额 ");
printf("------------------");
printf("%.2f\n",p[*h].j);
}
void kehu2(struct kehu *p,char *re,long h)
{
FILE *fp;
fp=fopen(re,"wb");
fwrite(&h,4,1,fp);
printf("-------------请键入客户资料:\n");
p[h].b=h;
printf("\n--------客户密码:\n");
scanf("%ld",&p[h].m);
printf("\n--------客户地址:\n");
scanf("%s",p[h].a);
printf("\n--------客户电话:\n");
scanf("%ld",&p[h].d);
printf("\n--------客户当前金额:\n");
scanf("%f",&p[h].j);
fwrite(&p[h],sizeof(struct kehu),1,fp);
fclose(fp);
}
void kehu3(struct kehu *p,char *re,long h)
{
FILE *fp;
fp=fopen(re,"wb");
fwrite(&h,4,1,fp);
printf("\n--------请键入新的客户资料:\n",re,h);
p[h].b=h;
printf("\n---------修改后客户密码:\n");
scanf("%ld",&p[h].m);
printf("\n----------修改后客户地址:\n");
scanf("%s",p[h].a);
printf("\n----------修改后客户电话:\n");
scanf("%ld",&p[h].d);
fwrite(&p[h],sizeof(struct kehu),1,fp);
fclose(fp);
}
void kehu4(struct kehu *p,char *re,long h)
{
FILE *fp;
fp=fopen(re,"wb");
fwrite(&h,4,1,fp);
printf("\n\n\n\n-----------请输入0键以清除-----------:\n");
scanf("%s",p[h].a);
p[h].m=0;
p[h].d=0;
p[h].j=0;
fwrite(&p[h],sizeof(struct kehu),1,fp);
fclose(fp);
}
void cunq1()
{
int m;
char g[20];
long m1;
printf("---------------------------------------------------------------\n");
printf("\n 1.存款办理 \n");
printf("\n ");
printf("\n 2.取款办理 ");
printf("\n ");
printf("\n 3:后退 ");
printf("\n ");
printf("\n\n-------------------按相应的数字以选择您的需要-----------------\n");
scanf("%d",&m);
switch(m)
{
case 1:
printf(" \n");
printf(" 1.存款办理 \n");
printf(" \n");
printf("----------请输入办理存款业务的客户的姓名和编号---------\n\n");
printf("--------输入客户姓名:\n");
scanf("%s",g);
printf("--------输入客户编号:\n");
scanf("%ld",&m1);
cunq11(w,g,m1); /*存款数据输入*/
break;
case 2:
printf(" \n");
printf(" 2:取款办理 \n");
printf(" \n");
printf("---------请输入办理取款业务的客户的姓名和编号 \n\n");
printf("---------输入客户姓名:\n");
scanf("%s",g);
printf("---------输入客户编号:\n");
scanf("%ld",&m1);
cunq12(w,g,m1);
break;
case 3:break;
default:printf("输入有误!");
}
}
void cunq11(struct kehu *p,char *re,long h)
{
FILE *fp;
fp=fopen(re,"wb");
fwrite(&h,4,1,fp);
printf("\n\n");
printf(" 存款办理\n\n");
printf("\n");
printf("--------请键入客户存款明细:\n");
printf("---------请输入存款数目:\n");
scanf("%f",&p[h].j1);
p[h].j2=p[h].j+p[h].j1;
p[h].j=p[h].j2;
printf("---------经办人:\n");
scanf("%s",p[h].jin);
printf("---------办理时间(形如2012年09月10日):\n");
scanf("%s",p[h].t);
fwrite(&p[h],sizeof(struct kehu),1,fp);
fclose(fp);
}
void cunq12(struct kehu *p,char *re,long h)
{
FILE *fp;
fp=fopen(re,"wb");
fwrite(&h,4,1,fp);
printf("\n\n");
printf(" 取款办理\n\n");
printf("\n\n");
printf("---------请键入客户的取款明细:\n\n");
printf("---------请输入取款数目:\n");
scanf("%f",&p[h].j3);
p[h].j4=p[h].j-p[h].j3;
p[h].j=p[h].j4;
printf("---------经办人:\n");
scanf("%s",p[h].jin2);
printf("---------办理时间(形如2012年09月10日):\n");
scanf("%s",p[h].t);
fwrite(&p[h],sizeof(struct kehu),1,fp);
fclose(fp);
}
void cunq2()
{
int m;
char v[20];
printf("----------------------------------------------------------------\n\n");
printf(" 1.存款查询 \n\n");
printf(" \n");
printf(" 2.取款查询 \n");
printf(" \n");
printf(" 3.退出 \n");
printf(" \n");
printf(" \n");
printf("---------------------按相应的数字以选择您的需要-----------------\n");
scanf("%d",&m);
switch(m)
{
case 1:
printf(" \n");
printf(" 1:存款查询 \n");
printf(" \n");
printf("----------请输入您要查询的客户的姓名:\n");
scanf("%s",v);
cunq211(w,v,&t);
cunq212(w,v,&t);
break; /*注意*/
case 2:
printf(" \n");
printf(" 2:取款查询 \n");
printf(" \n");
printf("---------请输入您要查询的客户的姓名:\n");
scanf("%s",v);
cunq221(w,v,&t);
cunq222(w,v,&t);break;
case 3:break;
default:printf("输入有误!");
}
}
void cunq211(struct kehu p[],char *re,long *h)
{
FILE *fp;
fp=fopen(re,"rb");
fread(h,4,1,fp);
fread(&p[*h],sizeof(struct kehu),1,fp);
fclose(fp);
}
void cunq212(struct kehu *p,char *re,long *h)
{
printf(" 客户存款明细\n");
printf(" 客户编号 ");
printf("------------------");
printf("%ld\n",*h);
printf(" 类别 ");
printf("------------------");
printf("存款\n");
printf(" 存款数目 ");
printf("------------------");
printf("%.2f\n",p[*h].j1);
printf(" 账户当前总金额 ");
printf("------------------");
printf("%.2f\n",p[*h].j2);
printf(" 经办人 ");
printf("------------------");
printf("%s\n",p[*h].jin);
printf(" 客户地址 ");
printf("------------------");
printf("%s\n",p[*h].a);
printf(" 办理时间 ");
printf("------------------");
printf("%s\n",p[*h].t);
}
void cunq221(struct kehu p[],char *re,long *h)
{
FILE *fp;
system("cls");
fp=fopen(re,"rb");
fread(h,4,1,fp);
fread(&p[*h],sizeof(struct kehu),1,fp);
fclose(fp);
}
void cunq222(struct kehu *p,char *re,long *h)
{
printf(" 客户取款明细 \n");
printf("客户编号 ");
printf("------------------");
printf("%ld\n",*h);
printf("类别 ");
printf("------------------");
printf("取款\n");
printf("取款数目 ");
printf("------------------");
printf("%.2f\n",p[*h].j3);
printf("账户当前总金额 ");
printf("------------------");
printf("%.2f\n",p[*h].j4);
printf("经办人 ");
printf("------------------");
printf("%s\n",p[*h].jin2);
printf("客户地址 ");
printf("------------------");
printf("%s\n",p[*h].a);
printf("办理时间 ");
printf("------------------");
printf("%s\n",p[*h].t);
}
4.2程序使用说明
(1)主菜单界面
(2)客户添加修改界面
(3)存取款办理界面
(4)存取款查询界面
第5章 总结
取款办理
⑥
存款办理
⑤
存取款办理
客户资料添加与操作
功能选择
存取款查询
退出
查询
②
修改
③
删除
④
添加
①
取款查询
存款查询
⑦
返回
保存
保存
输入姓名、编号、密码、地址、电话、当前金额
添加客户
输入姓名编号和编号
查询客户
输入新密码、地址、电话
输入姓名、密码
修改客户信息
按0确认
输入客户姓名、编号、密码
修改客户信息
输入存款数目、经办人、办理时间
输入客户姓名、编号
存款办理
输入取款数目、经办人、办理时间
输入客户姓名、编号
取款办理
输入姓名
存款查询
输入姓名
取款查询
第 4 页 共 23 页