C语言课设.docx
- 文档编号:7552462
- 上传时间:2023-01-24
- 格式:DOCX
- 页数:23
- 大小:338.75KB
C语言课设.docx
《C语言课设.docx》由会员分享,可在线阅读,更多相关《C语言课设.docx(23页珍藏版)》请在冰豆网上搜索。
C语言课设
沈阳航空航天大学
课程设计报告
课程设计名称:
C语言课程设计
课程设计题目:
银行存取款管理设计
院(系):
计算机学院
专业:
计算机科学与技术
班级:
学号:
姓名:
指导教师:
完成日期:
目录
第1章概要设计1
1.1题目的内容与要求1
1.2总体结构1
第2章详细设计2
2.1客户资料添加与操作模块2
2.2存取款办理模块3
2.3存取款查询模块3
2.4关于模块3
第3章调试分析4
第4章使用说明与执行结果5
参考文献7
附录(程序清单)8
第1章概要设计
1.1题目的内容与要求
课程设计的内容是设计一个简单的银行存取款管理系统。
要求:
(1)函数功能要划分好,使程序设计结构化。
(2)界面友好,实现良好的人机交互,加必要的注释。
(3)提供程序测试方案,程序要经得起测试。
(4)采用VC环境进行调试运行。
1.2总体结构
本程序主要分为四个模块(功能模块图见图1.1):
客户资料添加与操作模块,存取款办理模块,存取款查询模块,关于模块。
客户资料添加与查询模块①、确定4个主功能实现较周全的功能要求。
②、采用了结构化程序设计思想。
③、为更好的实现功能的选择使每次次级操作后能方便的返回主界面,在主函数里用到了while
(1)这样函数,再在里面用到几个break就实现了返回主界面的功能。
④、从客户文件记录的客户地址、客户电话、当前金额等到客户存取款记录的办理时间、办理人、存取金额等全部囊括在同一个名为cou结构体类型中。
存取款办理和查询模块:
很好的实现了客户选择功能。
图1.1功能模块图
第2章详细设计
2.1主模块
控制整个程序的运行,控制菜单操作,通过主函数模块分别调用各个模块,实现各项功能,流程如图2.1所示。
图2.1主模块流程图
注释:
1在主函数外定义了voidkehu();来执行客户文件操作;
2.局部变量intm;用来在主和其他函数中进行SWITCH选择判断。
3.全局的结构体型数组w,为相关文件提供了较灵活的存取空间。
2.2客户添加与操作
管理客户信息
图2.2客户添加与操作模块流程图
注释:
1.w为存储卡号的结构体数组;
2.在主函数外定义了voidkehu();来执行客户文件操作;
3.全局变量longt;用于记录客户卡号;
4.charr[20],b[20],c[20];都为记录客户姓名的一维数组,用在生成客户以及存取款文件和读取客户文件。
2.3存取款办理模块
图2.3存取款办理模块流程图
注释:
1.cunq1()函数用于操作客户存取款办理;
2.m进行功能选择。
2.4存取款查询
图2.4存取款查询模块流程图
第3章调试分析
问题1;如何对客户各种详细资料进行表示。
方案:
用结构体这样的数据类型。
问题2:
对客户资料打印时,不能正确的打印出所要的数据。
方案:
要把文件资料从文件读取到缓冲区,引用fread函数。
问题3:
在写入客户卡号时,但卡号上限为245却未得到很好的解决。
方案:
用fwrite(&h,4,1,fp);这样的语句,h已经被定义为long型变量,只要注意一下卡号并不影响程序的运行。
问题4:
在应用清空数据的清屏函数system(“cls”);时不能被识别。
方案:
定义清屏函数的头文件。
问题5:
定义客户资料voidkehu();时,忘加“;”。
方案:
加上“;”。
问题6:
结构体数组couw[200]中没有添加保留字符。
方案:
添加保留字符structcouw[200]。
第4章使用说明与执行结果
银行存取款管理系统功能选择:
在程序的开始录入客户信息,以当前金额输入为结束:
客户存款办理:
客户资料修改:
返回主界面或退出
参考文献
[1]张长海.C语言程设计[M].北京:
高等教育出版社,2006
[2]谭浩强.C语言设计教程.北京:
清华大学出版社,2008
[3]杨开城,张志坤.C语言程序设计教程.实验与练习.北京:
人民邮电出版社,2002
[4]苏小红等.C语言大学实用教程(第2版).北京电子工业出版社
[5]吴文虎.程序设计基础(第二版).北京:
清华大学出版社
[6](美)DeitelHM,DeitelPJ著.C程序设计教程.薛万鹏等译.北京:
机械工业出版社,200
附录(程序清单)
#include
#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);/*客户取款资料的键入*/
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;
structcou
{
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");
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();
}
}
voidkehu()
{
intm;
charr[20],b[20],c[20];
longh,k;
system("cls");
printf("\n");
printf("\n客户文件1客户资料查询");
printf("\n2客户资料添加");
printf("\n3客户资料修改");
printf("\n4客户资料删除");
printf("\n5后退\n\n");
printf("\n");
printf("按相应的数字以选择您的需要\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)\n");
printf("请输入姓名:
\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");
printf("请输入姓名:
\n");
scanf("%s",c);
printf("请输入卡号:
\n");
scanf("%ld",&k);
kehu3(w,c,k);/*把新数据从缓冲区输入到文件*/
break;
case4:
printf("\n");
printf("客户资料删除\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[200],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("%ld\n",*h);
printf("客户密码");
printf("%ld\n",p[*h].m);
printf("客户电话");
printf("%ld\n",p[*h].d);
printf("客户地址");
printf("%s\n",p[*h].a);
printf("账户当前金额");
printf("%.2f\n",p[*h].j);
}
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);
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");
printf("\n\n按相应的数字以选择您的需要\n");
scanf("%d",&m);
switch(m)
{
case1:
printf("\n");
printf("1.存款办理\n");
scanf("%ld",&m1);
printf("请输入办理存款业务的客户的姓名和卡号(1-245)\n\n");
printf("输入客户姓名:
\n");
scanf("%s",g);
printf("输入客户卡号:
\n");
break;
case2:
printf("\n");
printf("取款办理\n");
printf("\n");
printf("请输入办理取款业务的客户的姓名和卡号(1-245)\n\n");
printf("输入客户姓名:
\n");
scanf("%s",g);
printf("输入客户卡号:
\n");
cunq12(w,g,m1);
break;
case3:
break;
}
}
voidcunq11(structcou*p,char*re,longh)
{
FILE*fp;
system("cls");
fp=fopen(re,"wb");
fwrite(&h,4,1,fp);
printf("\n\n");
printf("存款办理\n\n");
printf("\n");
printf("请键入顾客【%s】(卡号%ld)的存款明细:
\n",re,h);
printf("请输入存款流水号:
\n");
scanf("%ld",&p[h].bc);
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年06月2日):
\n");
scanf("%s",p[h].t);
fwrite(&p[h],sizeof(structcou),1,fp);
fclose(fp);
}
voidcunq12(structcou*p,char*re,longh)
{
FILE*fp;
system("cls");
fp=fopen(re,"wb");
fwrite(&h,4,1,fp);
printf("\n\n");
printf("取款办理\n\n");
printf("\n\n");
printf("请键入顾客【%s】(卡号%ld)的取款明细:
\n\n",re,h);
printf("┄┅┄┅请输入取款流水号:
\n");
scanf("%ld",&p[h].bc);
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年06月2日):
\n");
scanf("%s",p[h].t);
fwrite(&p[h],sizeof(structcou),1,fp);
fclose(fp);
}
voidcunq2()
{
intm;
charv[20];
system("cls");
printf("\n\n");
printf("1.存款查询2.取款查询3后退\n\n");printf("\n");
printf("按相应的数字以选择您的需要---------\n");
scanf("%d",&m);
switch(m){
case1:
printf("\n");
printf("\n");
printf("请输入您要查询的客户的姓名:
\n");
scanf("%s",v);
cunq211(w,v,&t);
cunq212(w,v,&t);break;/*注意*/
case2:
printf("\n");
printf("取款查询\n");
printf("\n");
printf("请输入您要查询的客户的姓名:
\n");
scanf("%s",v);
cunq221(w,v,&t);
cunq222(w,v,&t);break;
case3:
break;
default:
fprintf(stderr,"输入有误!
");
}
}
voidcunq211(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);
}
voidcunq212(structcou*p,char*re,long*h)
{
printf("客户【%s】存款明细\n",re);
printf("客户卡号");
printf("%ld\n",*h);
printf("存款流水号");
printf("%ld\n",p[*h].bc);
printf("类别");
printf("存款\n");
printf("存款数目");
printf("%.2f\n",p[*h].j1);
printf("账户当前总金额");
printf("%.2f\n",p[*h].j2);
printf("经办人");
printf("%s\n",p[*h].jin);
printf("客户地址");
printf("%s\n",p[*h].a);
printf("办理时间");
printf("%s\n",p[*h].t);
}
voidcunq221(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);
}
voidcunq222(structcou*p,char*re,long*h)
{
printf("客户[%s]取款明细\n",re);
printf("客户卡号");
printf("%ld\n");
printf("取款流水号");
printf("%ld\n",p[*h].bc);
printf("类别");
printf("取款\n");
printf("取款数目");
printf("%.2f\n",p[*h].j3);
printf("账户当前总金额");
printf("%.2f\n",p[*h].j4);
printf("经办人");
printf("%s\n",p[*h].jin2);
printf("客户地址");
printf("%s\n",p[*h].a);
printf("办理时间");
printf("%s\n",p[*h].t);
}
voidhelp()
{
system("cls");
printf("\n");
printf("┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n");
printf("┃┃\n");
printf("┃产品介绍与说明┃\n");
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言