C语言课程设计报告银行存取款管理设计.docx
- 文档编号:2364000
- 上传时间:2023-05-03
- 格式:DOCX
- 页数:36
- 大小:23KB
C语言课程设计报告银行存取款管理设计.docx
《C语言课程设计报告银行存取款管理设计.docx》由会员分享,可在线阅读,更多相关《C语言课程设计报告银行存取款管理设计.docx(36页珍藏版)》请在冰点文库上搜索。
C语言课程设计报告银行存取款管理设计
1
错误!
未找到目录项。
C程序课程设计报告
题目车票管理系统
院别数学与计算机学院班级
姓名学号
指导教师邓永江
二○一五年六月
2
预习报告
一:
设计题目
银行存取款管理设计
二:
功能要求
①能够添加和修改以及删除客户文件。
(在客户文件中,每个客户是一条记
录,包括编号、客户姓名、支取密码、客户地址、客户电话、账户总金额)。
②能够输入和查询客户存款取款记录。
(在存取款文件中,每次存取款是一条记录,包括编号、日期、类别、存取数目、经办人。
类别分为取款和存
款两种)。
③能够给程序提供运行提示。
三:
设计要求
①、用C语言实现系统;
②、函数功能要划分好(结构化程序设计);
③、界面友好(良好的人机交互),加必要的注释;
④、要提供程序测试方案,程序一定要经得起测试,宁可功能少一些,也要能
运行起来,不能运行的程序是没有价值的。
四:
设计目的
①、通过这次课程设计,使我们更加深入地理解和掌握C语言基本概念,切身体会用结构化程序设计的工程思想,感受C语言的魅力。
②、通过这次课程设计,培养我们独立思考、勇于探索、积极创新、严谨求实、有过必改的工作态度以及较熟的上级操作能力,同时加强我们团结友爱,协作
攻关的团队合作意识。
五:
设计框架图
功能选择
客户资
料添加
与操作
存取款
办理
3
存取款
查询
关于
查
添
修
删
存款
取款
询
加
改
除
查询
查询
六:
函数与变量说明
㈠自定义函数
voidmain():
在里面写了“功能选择”的SWITCH函数;
voidkehu();
客户资料添加与操作主菜单;
voidkehu1(structcoup[],char*re,long*h);
客户资料查询函数;
voidkehu2(structcou*p,char*re,longh);
客户资料添加函数;
voidkehu3(structcou*p,char*re,longh);
客户资料修改函数;
voidkehu4(structcou*p,char*re,longh);
客户资料清楚函数;
voidkehup(structcou*p,char*re,long*h);
客户资料打印函数;
voidcunq1();
存取款办理选择主菜单;
voidcunq11(structcou*p,char*re,longh);
客户存款资料的键入;
voidcunq12(structcou*p,char*re,longh);
客户取款资料的键入;
voidcunq2();
存取款选择查询主菜单;
voidcunq211(structcoup[],char*re,long*h);把顾客存款资料从文件读到缓冲
区;
voidcunq212(structcou*p,char*re,long*h);打印存款资料;
voidcunq221(structcoup[],char*re,long*h);把顾客取款资料从文件读到缓冲
区;
voidcunq222(structcou*p,char*re,long*h);打印取款资料;
voidhelp();
使用说明模块。
㈡变量
①全局的结构体型数组w(用来存放200多个结构体变量):
externstructcou
{
longb;
charx[20];
longm;
4
chara[50];
longd;
floatj;
longbc;
charjin[20];
charjin2[20];
chart[20];
floatj1;
floatj2;
floatj3;
floatj4;
}w[200];
②局部变量intm;用来在主和其他函数中进行SWITCH选择判断;
③全局变量longt;用于记录客户卡号,而卡号是在整个程序中都要用到的,因为是全局变量,所以一个客户的卡号不能变更。
④charr[20],b[20],c[20];都为记录客户姓名的一维数组,用在生成客户以及存取款文件和读取客户文件以及存取款文件;
七:
函数调用流程图(客户资料添加与查询部分)
voidmain()
while
(1)
scanf("%d",&m)
;
m=1?
其他函数
是
kehu();
scanf("%d",&m);
switch(m);
1m=?
2
scanf("%s",b);
kehu1(w,b,&t);
kehup(w,b,&t);
5
scanf("%s",r);
scanf("%ld",&h);
break;
kehu2(w,r,h);
break;
注:
上叙具体函数功能见六
(一)函数说明
八:
客户资料添加与查询部分的设计思想
①、由于是银行存取款管理设计,考虑到要有较周全的功能要求,所以在设计
之初就对最终成品的功能进行了较为详细的布局,最终确定了4个主功能(见源代码)。
②、采用了结构化程序设计思想,在主函数外定义了voidkehu();(客户文件操作)、voidcunq1();(存取款办理)、voidcunq2();(存取款查询)、voidhelp();(使用帮助)以及他们的嵌套函数,使产品功能更加健全。
③、对于如何使每次次级操作后能方便的返回主界面,我们在主函数里用到了
while
(1)这样函数,再在里面用到几个break;就实现了返回主界面的功能。
④、对于客户及存取款记录的保存我们在这里用到了用FILE类型定义文件指针,从而来以文件形式存放数据,而又用到fopen函数打开文件,用fclose关闭文件,释放文件缓冲区;又用到fwrite函数使数据写入到磁盘保存,用fread函数把数据拉到缓冲区。
⑤、对于如何使客户文件和客户存取款记录很灵活的结合到一起,我们在主函
数前面构造了一个具有多个成员的结构体,从客户文件记录的客户地址、客户电话、当前金额等到客户存取款记录的办理时间、办理人、存取金额等全部囊括在同一个名为cou结构体类型中。
⑥、程序在主函数之前定义了全局的结构体型数组w,为相关文件提供了较为灵
活的存取空间,而程序中在fwrite函数之前输入了客户姓名和卡号,这实际上
就创建了一个名为所输入客户姓名的文件,从而在资料读取时直接用姓名读取
非常方便。
。
实验总结报告
九:
测试方案
方案①、可以直接打开所给的名为“银行存取款及客户资料管理系统.exe”应用程序进行操作,而操作是纯键盘式的,建议先添加客户文件,或者先查看“关于”中的帮助。
方案②、如果是对源代码进行操作,可以双击名为“银行存取款及客户资料管
理系统.c”的.c文件,进入C++运行环境,按“重新组建”,然后点击运行按
6
钮“!
”,运行成功,便可进入主界面,相关操作见上。
而这同时C++又在后台生成了.exe文件,这就是我们所需要的应用程序。
十:
调试中问题及解决方案
调试过程并不是一帆风顺的,比如
①、如何对客户各种详细资料进行表示,之前我们并没有想到用结构体,然后
再写程序过程中遇到诸多困难,一段时间之后,组员进行仔细研究,并查阅相关书籍,最终确定了用结构体这样便捷的数据类型,而这一决定也为后续工作指明了方向;
②、对客户资料的打印,因为没有注意到要把文件资料从文件读取到缓冲区,
因而始终不能正确的打印出所要的数据,而最终在组员的一致努力下,察觉到问题,然后fread函数被用到,这问题迎刃而解;
③、在程序编写过程中,由于时间关系,难免还有些问题尚未解决,我们不怕暴露问题,我们只求进步。
比如说在写入客户卡号时,用到fwrite(&h,4,1,fp);
这样的函数语句,虽然h已经被我们定义为long型变量,然为什么上限为245至今尚未得到很好的解决。
但这并不影响我们程序的运行,只要稍微注意一下卡号,程序还是很理想的。
十一:
心得与体会
这次的C语言课程设计我们付出不少,一次一次的编写,一次次的修改,花了不少时间,甚至有时也用上了休息时间。
但我们的收获是那些付出比量不了的。
在一次次的调试与失败中,我们更加坚强,更加专注。
在团队合作过程中也发生过小小的矛盾,但这些终被我们克服,从而转化为难得的友谊,而又使我们对团队这个概念的认识又上升到一个新的高度。
其实一切的一切,都没有知识来的重要,在这次课程设计过程中我们查阅了大量的资料,而有些是书本上都较少提到的,而这些给我们的便是知识,无形的宝贵财富。
最后,老师提供给我们这次难得的课程实习机会,我们是受益匪浅的,当看到一个完整的应用程序出现在我们面前,作为一个初涉软件的学徒来说,又何尝不是感慨万千呢?
我们深怀感恩,一路前行,软件工程,我们来了!
十二:
附源程序清单
#include
#include
voidkehu();
voidkehu1(structcoup[],char*re,long*h);
/*
(把顾客资料)从文件读到缓
冲区*/
voidkehu2(structcou*p,char*re,longh);
/*
客户资料输入*/
voidkehu3(structcou*p,char*re,longh);
/*
新客户资料输入*/
voidkehu4(structcou*p,char*re,longh);
/*
资料清除*/
voidkehup(structcou*p,char*re,long*h);
/*
打印顾客资料*/
voidcunq1();
voidcunq11(structcou*p,char*re,longh);
/*客户存款资料的键入
*/
voidcunq12(structcou*p,char*re,longh);
/*客户取款资料的键入
*/
7
voidcunq2();
voidcunq211(structcoup[],char*re,long*h);
/*
(把顾客存款资料)从文件读
到缓冲区
*/
voidcunq212(structcou*p,char*re,long*h);
voidcunq221(structcoup[],char*re,long*h);
/*
(把顾客取款资料)从文件读
到缓冲区
*/
voidcunq222(structcou*p,char*re,long*h);
voidhelp();
longt;
externstructcou
{
longb;
charx[20];
longm;
chara[50];
longd;
floatj;
longbc;
charjin[20];
charjin2[20];
chart[20];
floatj1;
floatj2;
floatj3;
floatj4;
};
structcouw[200];
voidmain()
{
intm;
while
(1)
{
system("cls");
printf("\n▂▃▂▃▂▃▂▃▂▃▃银行存取款管理系统▂▃▂▃▃▂▃▂▃▂▃▂\n");
printf("⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯【功能选择】⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯\n");
printf("一:
客户添加与操作二:
存取款办理三:
存取款查询四:
关于\n");
printf("\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n");
printf("------------------------------------------------请按相应的数字选择您的需要------\n");
scanf("%d",&m);
switch(m)
{
case1:
kehu();break;
case2:
cunq1();break;
case3:
cunq2();break;
case4:
help();break;
}
getchar();
printf("\n\n\n\n\n┄┅┄┄┄┅┄┅按回车键返回主界面...");getchar();
}
8
}
voidkehu()
{
intm;
charr[20],b[20],c[20];
longh,k;
system("cls");
printf("\n
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
");
printf("\n
客户文件:
1
:
客户资料查询");
printf("\n
2
:
客户资料添加");
printf("\n
3
:
客户资料修改");
printf("\n
4
:
客户资料删除");
printf("\n
5
:
后退\n\n");
printf("▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
printf("-------------------------------------------------按相应的数字以选择您的需要
\n");
-----\n");
scanf("%d",&m);
switch(m)
{
case1:
printf("┏━━━━━━━━━━━┓\n");
printf("▍1:
客户资料查询▍\n");
printf("┗━━━━━━━━━━━┛\n");
printf("┭┮┯┬┭请输入您要查询的客户的姓名:
\n");
scanf("%s",b);
kehu1(w,b,&t);/*从文件读到缓冲区*/
kehup(w,b,&t);/*打印*/
break;
case2:
printf("┏━━━━━━━━━━━┓\n");
printf("▍2:
客户资料添加▍\n");
printf("┗━━━━━━━━━━━┛\n");
printf("▄▄▄▄▄请输入新客户的姓名和卡号(1-245):
▄▄▄▄▄
printf("┅┄┅┄请输入姓名:
\n");
\n");
scanf("%s",r);
printf("┅┄┅┄请输入卡号:
\n");
scanf("%ld",&h);
kehu2(w,r,h);
/*
把数据从缓冲区输入到文件
*/
break;
case3:
printf("
┏━━━━━━━━━━━┓
\n");
printf("
▍3:
客户资料修改
▍\n");
printf("
┗━━━━━━━━━━━┛
\n");
printf("\n▄▄▄▄▄请输入您要修改的客户的姓名和卡号▄▄▄▄▄:
\n");
9
printf("┅┄┅┄请输入姓名:
\n");
scanf("%s",c);
printf("┅┄┅┄请输入卡号:
\n");
scanf("%ld",&k);
kehu3(w,c,k);/*把新数据从缓冲区输入到文件*/
break;
case4:
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;
case5:
break;
default:
fprintf(stderr,"输入有误!
");
*/
}
}
voidkehu1(structcoup[],char*re,long*h)
{FILE*fp;system("cls");fp=fopen(re,"rb");fread(h,4,1,fp);
fread(&p[*h],sizeof(structcou),1,fp);
fclose(fp);
}
voidkehup(structcou*p,char*re,long*h)
{
printf("
客户【%s】详细资料\n",re);
printf("
┄┅┄┅┄┅┄┅┄┅┄┅┄┅┄┄┅┄┅┄┅┄┅┅┄┅┄┅┄┅
");
printf("
客户卡号
");
printf("%ld\n",*h);
printf("
┄┅┄┅┄┅┄┅┄┅┄┅┄┅┄┅┄┄┅┄┅┄┅┄┅┅┄┅┄┅
");
printf("
客户密码
");
printf("%ld\n",p[*h].m);
printf("
┄┅┄┅┄┅┄┅┄┅┄┅┄┅┄┅┄┄┅┄┅┄┅┄┅┅┄┅┄┅┅
");
printf("
客户电话
");
printf("%ld\n",p[*h].d);
printf("
┄┅┄┅┅┄┅┄┅┄┅┄┄┅┄┅┅┄┅┄┅┄┅┄┅┄┅┄┅┄┅
");
10
printf("
客户地址
");
printf("%s\n",p[*h].a);
printf("
┄┅┄┅┄┅┄┅┄┅┄┅┄┅┄┅┄┄┅┄┅┄┅┄┅┅┄┅┄┅
");
printf("
账户当前金额
");
printf("%.2f\n",p[*h].j);
printf("
┄┅┄┅┄┅┄┅┄┅┄┅┄┅┄┅┄┄┅┄┅┄┅┄┅┅┄┄┅┄┅
");
}
voidkehu2(structcou*p,char*re,longh)
{
FILE*fp;
system("cls");
fp=fopen(re,"wb");
fwrite(&h,4,1,fp);
printf("▄▄▄▄▄请键入顾客【%s】(卡号【%ld
】)的客户资料:
▄▄▄▄▄\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
┭┮┯┬┭
客户电话:
(只接受10
位以下的号码)\n");
scanf("%ld",&p[h].d);
printf("\n
┭┮┯┬┭
客户当前金额:
(建议不要使账户满
100万)\n");
scanf("%f",&p[h].j);
fwrite(&p[h],sizeof(structcou),1,fp);
fclose(fp);
}
voidkehu3(structcou*p,char*re,longh)
{
FILE*fp;
system("cls");
fp=fopen(re,"wb");
fwrite(&h,4,1,fp);
printf("\n▄▄▄请键入顾客【%s】(卡号【%ld】)的新的客户资料:
▄▄▄\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(structcou),1,fp);
11
fclose(fp);
}
voidkehu4(structcou*p,char*re,longh)
{
FILE*fp;
system("cls");
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;
p[h].bc=0;
fwrite(&p[h],sizeof(structcou),1,fp);
fclose(fp);
}
/*--------------------------------------------------------------------------------------------------------*/
voidcunq1()
{
intm;
charg[20];
longm1;
system("cls");
printf("
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
\n");
printf("\n1.存款办理2.取款办理3:
后退\n");
printf("\n▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 报告 银行 取款 管理 设计