C语言课设Word文档格式.docx
《C语言课设Word文档格式.docx》由会员分享,可在线阅读,更多相关《C语言课设Word文档格式.docx(23页珍藏版)》请在冰豆网上搜索。
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<
stdio.h>
stdlib.h>
string.h>
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"
功能选择\n"
一.客户添加与操作二.存取款办理三.存取款查询四.关于\n"
\n\n"
printf("
请按相应的数字选择您的需要\n"
scanf("
%d"
&
m);
switch(m)
case1:
kehu();
break;
case2:
cunq1();
case3:
cunq2();
case4:
help();
}
getchar();
\n\n\n\n\n按回车键返回主界面..."
}
voidkehu()
charr[20],b[20],c[20];
longh,k;
system("
\n客户文件1客户资料查询"
\n2客户资料添加"
\n3客户资料修改"
\n4客户资料删除"
\n5后退\n\n"
按相应的数字以选择您的需要\n"
scanf("
1客户资料查询\n"
\n"
请输入您要查询的客户的姓名:
%s"
b);
kehu1(w,b,&
t);
/*从文件读到缓冲区*/
kehup(w,b,&
/*打印*/
break;
2客户资料添加\n"
请输入新客户的姓名和卡号(1-245)\n"
请输入姓名:
r);
请输入卡号:
%ld"
h);
kehu2(w,r,h);
/*把数据从缓冲区输入到文件*/
3客户资料修改\n"
\n请输入您要修改的客户的姓名和卡号\n"
c);
k);
kehu3(w,c,k);
/*把新数据从缓冲区输入到文件*/
客户资料删除\n"
\n请输入您要删除的客户姓名和卡号\n"
kehu4(w,c,k);
/*把0数据从缓冲区输入到文件*/
case5:
default:
fprintf(stderr,"
输入有误!
"
voidkehu1(structcoup[200],char*re,long*h)
FILE*fp;
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)
客户【%s】详细资料\n"
re);
客户卡号"
%ld\n"
*h);
客户密码"
p[*h].m);
客户电话"
p[*h].d);
客户地址"
%s\n"
p[*h].a);
账户当前金额"
%.2f\n"
p[*h].j);
voidkehu2(structcou*p,char*re,longh)
FILE*fp;
wb"
fwrite(&
h,4,1,fp);
请键入顾客【%s】
(卡号【%ld】)的客户资料:
re,h);
p[h].b=h;
\n客户密码:
p[h].m);
\n客户地址:
p[h].a);
\n客户电话:
只接受10位以下的号码\n"
p[h].d);
\n客户当前金额:
建议不要使账户满100万\n"
%f"
p[h].j);
p[h],sizeof(structcou),1,fp);
voidkehu3(structcou*p,char*re,longh)
\n请键入顾客【%s】
(卡号【%ld】)的新的客户资料:
\n修改后客户密码:
\n修改后客户地址:
\n修改后客户电话:
fclose(fp);
voidkehu4(structcou*p,char*re,longh)
\n\n\n\n请输入0键以清除:
p[h].m=0;
p[h].d=0;
p[h].j=0;
p[h].bc=0;
voidcunq1()
{
charg[20];
longm1;
\n1.存款办理2.取款办理3.后退\n"
\n\n按相应的数字以选择您的需要\n"
1.存款办理\n"
m1);
请输入办理存款业务的客户的姓名和卡号(1-245)\n\n"
输入客户姓名:
g);
输入客户卡号:
取款办理\n"
请输入办理取款业务的客户的姓名和卡号(1-245)\n\n"
cunq12(w,g,m1);
}
voidcunq11(structcou*p,char*re,longh)
存款办理\n\n"
(卡号%ld)的存款明细:
请输入存款流水号:
p[h].bc);
请输入存款数目(建议不要一次存超过百万):
p[h].j1);
p[h].j2=p[h].j+p[h].j1;
p[h].j=p[h].j2;
经办人:
p[h].jin);
办理时间(形如2012年06月2日):
p[h].t);
voidcunq12(structcou*p,char*re,longh)
取款办理\n\n"
(卡号%ld)的取款明细:
┄┅┄┅请输入取款流水号:
请输入取款数目(建议不要一次存超过百万):
p[h].j3);
p[h].j4=p[h].j-p[h].j3;
p[h].j=p[h].j4;
┄┅┄┅经办人:
p[h].jin2);
}
voidcunq2()
charv[20];
1.存款查询2.取款查询3后退\n\n"
按相应的数字以选择您的需要---------\n"
switch(m){
v);
cunq211(w,v,&
cunq212(w,v,&
/*注意*/
case2:
取款查询\n"
请输入您要查询的客户的姓名:
cunq221(w,v,&
cunq222(w,v,&
case3:
default:
voidcunq211(structcoup[],char*re,long*h)
voidcunq212(structcou*p,char*re,long*h)
客户【%s】存款明细\n"
客户卡号"
存款流水号"
p[*h].bc);
类别"
存款\n"
存款数目"
p[*h].j1);
账户当前总金额"
p[*h].j2);
经办人"
p[*h].jin);
客户地址"
办理时间"
p[*h].t);
voidcunq221(structcoup[],char*re,long*h)
FILE*fp;
fclose(fp);
voidcunq222(structcou*p,char*re,long*h)
客户[%s]取款明细\n"
printf("
客户卡号"
取款流水号"
类别"
取款\n"
取款数目"
p[*h].j3);
账户当前总金额"
p[*h].j4);
经办人"
p[*h].jin2);
办理时间"
voidhelp()
{
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n"
┃┃\n"
┃产品介绍与说明┃\n"