1、错误!未找到目录项。C程序课程设计报告题目车票管理系统院别数学与计算机学院班级姓名学号指导教师邓永江二一五年 六 月预习报告一:设计题目银行存取款管理设计二:功能要求能够添加与修改以及删除客户文件。(在客户文件中,每个客户就是一条记录,包括编号、客户姓名、支取密码、客户地址、客户电话、账户总金额)。能够输入与查询客户存款取款记录。(在存取款文件中,每次存取款就是一条记录,包括编号、日期、类别、存取数目、经办人。类别分为取款与存款两种)。能够给程序提供运行提示。三:设计要求、用C语言实现系统;、函数功能要划分好(结构化程序设计);、界面友好(良好得人机交互),加必要得注释;、要提供程序测试方案,
2、程序一定要经得起测试,宁可功能少一些,也要能运行起来,不能运行得程序就是没有价值得。四:设计目得、通过这次课程设计,使我们更加深入地理解与掌握C语言基本概念,切身体会用结构化程序设计得工程思想,感受C语言得魅力。、通过这次课程设计,培养我们独立思考、勇于探索、积极创新、严谨求实、有过必改得工作态度以及较熟得上级操作能力,同时加强我们团结友爱,协作攻关得团队合作意识。取款办理存款办理存取款办理客户资料添加与操作功能选择五:设计框架图关于存取款查询添加修改删除查询取款查询存款查询六:函数与变量说明自定义函数void main: 在里面写了“功能选择”得SWITCH函数;void kehu; 客户资
3、料添加与操作主菜单;void kehu1(struct cou p,char *re,long *h); 客户资料查询函数; void kehu2(struct cou *p,char *re,long h); 客户资料添加函数; void kehu3(struct cou *p,char *re,long h); 客户资料修改函数; void kehu4(struct cou *p,char *re,long h); 客户资料清楚函数; void kehup(struct cou *p,char *re,long *h); 客户资料打印函数;void cunq1; 存取款办理选择主菜单;vo
4、id cunq11(struct cou *p,char *re,long h); 客户存款资料得键入; void cunq12(struct cou *p,char *re,long h); 客户取款资料得键入; void cunq2; 存取款选择查询主菜单;void cunq211(struct cou p,char *re,long *h); 把顾客存款资料从文件读到缓冲区;void cunq212(struct cou *p,char *re,long *h); 打印存款资料;void cunq221(struct cou p,char *re,long *h); 把顾客取款资料从文件
5、读到缓冲区;void cunq222(struct cou *p,char *re,long *h); 打印取款资料;void help; 使用说明模块。变量全局得结构体型数组w(用来存放200多个结构体变量):extern struct coulong b;char x20;long m;char a50;long d;float j;long bc;char jin20;char jin220;char t20;float j1;float j2;float j3;float j4; w200;局部变量int m;用来在主与其她函数中进行SWITCH选择判断;全局变量long t;用于记录
6、客户卡号,而卡号就是在整个程序中都要用到得,因为就是全局变量,所以一个客户得卡号不能变更。char r20,b20,c20;都为记录客户姓名得一维数组,用在生成客户以及存取款文件与读取客户文件以及存取款文件;七:函数调用流程图(客户资料添加与查询 部分 )void mainwhile(1)scanf(%d,&m); m=1? 其她函数 就是kehu;scanf(%d,&m);switch(m);m=? 1 2scanf(%s,b);kehu1(w,b,&t);kehup(w,b,&t);break;scanf(%s,r);scanf(%ld,&h);kehu2(w,r,h);break; 注:
7、上叙具体函数功能见 六(一)函数说明八:客户资料添加与查询 部分 得设计思想、由于就是银行存取款管理设计,考虑到要有较周全得功能要求,所以在设计之初就对最终成品得功能进行了较为详细得布局,最终确定了4个主功能(见源代码)。、采用了结构化程序设计思想,在主函数外定义了void kehu;(客户文件操作)、void cunq1;(存取款办理)、void cunq2;(存取款查询)、void help;(使用帮助)以及她们得嵌套函数,使产品功能更加健全。、对于如何使每次次级操作后能方便得返回主界面,我们在主函数里用到了while(1)这样函数,再在里面用到几个break;就实现了返回主界面得功能。、
8、对于客户及存取款记录得保存我们在这里用到了用FILE类型定义文件指针,从而来以文件形式存放数据,而又用到fopen函数打开文件,用fclose关闭文件,释放文件缓冲区;又用到fwrite函数使数据写入到磁盘保存,用fread函数把数据拉到缓冲区。、对于如何使客户文件与客户存取款记录很灵活得结合到一起,我们在主函数前面构造了一个具有多个成员得结构体,从客户文件记录得客户地址、客户电话、当前金额等到客户存取款记录得办理时间、办理人、存取金额等全部囊括在同一个名为cou结构体类型中。、程序在主函数之前定义了全局得结构体型数组w,为相关文件提供了较为灵活得存取空间,而程序中在fwrite函数之前输入了
9、客户姓名与卡号,这实际上就创建了一个名为所输入客户姓名得文件, 从而在资料读取时直接用姓名读取非常方便。实验总结报告九:测试方案方案、可以直接打开所给得名为“银行存取款及客户资料管理系统、exe”应用程序进行操作,而操作就是纯键盘式得,建议先添加客户文件,或者先查瞧“关于”中得帮助。方案、如果就是对源代码进行操作,可以双击名为“银行存取款及客户资料管理系统、c”得、c文件,进入C+运行环境,按“重新组建”,然后点击运行按钮“!”,运行成功,便可进入主界面,相关操作见上。而这同时C+又在后台生成了、exe文件,这就就是我们所需要得应用程序。十:调试中问题及解决方案调试过程并不就是一帆风顺得,比如
10、、如何对客户各种详细资料进行表示,之前我们并没有想到用结构体,然后再写程序过程中遇到诸多困难,一段时间之后,组员进行仔细研究,并查阅相关书籍,最终确定了用结构体这样便捷得数据类型,而这一决定也为后续工作指明了方向;、对客户资料得打印,因为没有注意到要把文件资料从文件读取到缓冲区,因而始终不能正确得打印出所要得数据,而最终在组员得一致努力下,察觉到问题,然后fread函数被用到,这问题迎刃而解;、在程序编写过程中,由于时间关系,难免还有些问题尚未解决,我们不怕暴露问题,我们只求进步。比如说在写入客户卡号时,用到fwrite(&h,4,1,fp);这样得函数语句,虽然h已经被我们定义为long型变
11、量,然为什么上限为245至今尚未得到很好得解决。但这并不影响我们程序得运行,只要稍微注意一下卡号,程序还就是很理想得。十一:心得与体会这次得C语言课程设计我们付出不少,一次一次得编写,一次次得修改,花了不少时间,甚至有时也用上了休息时间。但我们得收获就是那些付出比量不了得。在一次次得调试与失败中,我们更加坚强,更加专注。在团队合作过程中也发生过小小得矛盾,但这些终被我们克服,从而转化为难得得友谊,而又使我们对团队这个概念得认识又上升到一个新得高度。其实一切得一切,都没有知识来得重要,在这次课程设计过程中我们查阅了大量得资料,而有些就是书本上都较少提到得,而这些给我们得便就是知识,无形得宝贵财富
12、。最后,老师提供给我们这次难得得课程实习机会,我们就是受益匪浅得,当瞧到一个完整得应用程序出现在我们面前,作为一个初涉软件得学徒来说,又何尝不就是感慨万千呢?我们深怀感恩,一路前行,软件工程,我们来了!十二:附源程序清单#include#includevoid kehu;void kehu1(struct cou p,char *re,long *h); /*(把顾客资料)从文件读到缓冲区*/void kehu2(struct cou *p,char *re,long h); /*客户资料输入*/void kehu3(struct cou *p,char *re,long h); /*新客户资
13、料输入*/void kehu4(struct cou *p,char *re,long h); /* 资料清除*/void kehup(struct cou *p,char *re,long *h); /*打印顾客资料*/ void cunq1;void cunq11(struct cou *p,char *re,long h); /*客户存款资料得键入*/void cunq12(struct cou *p,char *re,long h); /*客户取款资料得键入*/void cunq2;void cunq211(struct cou p,char *re,long *h); /*(把顾客存
14、款资料)从文件读到缓冲区*/void cunq212(struct cou *p,char *re,long *h);void cunq221(struct cou p,char *re,long *h); /*(把顾客取款资料)从文件读到缓冲区*/void cunq222(struct cou *p,char *re,long *h);void help;long t;extern struct coulong b;char x20;long m;char a50;long d;float j;long bc;char jin20;char jin220;char t20;float j1;
15、float j2;float j3;float j4;struct cou w200;void main int m;while(1) system(cls);printf(n银行存取款管理系统n);printf(【功能选择】n);printf( 一:客户添加与操作 二:存取款办理 三:存取款查询 四:关于n);printf(nn);printf(请按相应得数字选择您得需要n); scanf(%d,&m); switch(m) case 1:kehu;break; case 2:cunq1;break; case 3:cunq2;break; case 4:help;break; getcha
16、r;printf(nnnnn 按回车键返回主界面、); getchar; void kehu int m;char r20,b20,c20;long h,k;system(cls);printf(n);printf(n 客户文件:1:客户资料查询); printf(n 2:客户资料添加); printf(n 3:客户资料修改); printf(n 4:客户资料删除); printf(n 5:后退nn); printf(n); printf(按相应得数字以选择您得需要n); scanf(%d,&m); switch(m) case 1: printf( n); printf( 1:客户资料查询
17、n); printf( n); printf( 请输入您要查询得客户得姓名:n); scanf(%s,b); kehu1(w,b,&t); /*从文件读到缓冲区*/ kehup(w,b,&t); /*打印*/ break; case 2: printf( n); printf( 2:客户资料添加 n); printf( n); printf(请输入新客户得姓名与卡号(1245):n); printf(请输入姓名:n); scanf(%s,r); printf(请输入卡号:n); scanf(%ld,&h); kehu2(w,r,h); /*把数据从缓冲区输入到文件*/ break; case
18、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(请
19、输入卡号:n); scanf(%ld,&k); kehu4(w,c,k); /*把 0 数据从缓冲区输入到文件*/ break; case 5:break; default: fprintf(stderr,输入有误!); void kehu1(struct cou p,char *re,long *h)FILE *fp;system(cls);fp=fopen(re,rb);fread(h,4,1,fp);fread(&p*h,sizeof(struct cou),1,fp);fclose(fp);void kehup(struct cou *p,char *re,long *h) print
20、f( 客户 【 %s 】详细资料n,re); printf(); printf(客户卡号 ); printf(%ldn,*h); printf(); printf(客户密码 ); printf(%ldn,p*h、m); printf(); printf(客户电话 ); printf(%ldn,p*h、d); printf(); printf(客户地址 ); printf(%sn,p*h、a); printf(); printf(账户当前金额 ); printf(%、2fn,p*h、j); printf();void kehu2(struct cou *p,char *re,long h)FIL
21、E *fp;system(cls);fp=fopen(re,wb);fwrite(&h,4,1,fp);printf(请键入顾客 【%s】(卡号 【 %ld 】 )得客户资料:n,re,h);ph、b=h;printf(n 客户密码:n);scanf(%ld,&ph、m);printf(n 客户地址:n);scanf(%s,ph、a);printf(n 客户电话:(只接受10位以下得号码)n);scanf(%ld,&ph、d);printf(n 客户当前金额:(建议不要使账户满100万)n);scanf(%f,&ph、j);fwrite(&ph,sizeof(struct cou),1,fp)
22、; fclose(fp);void kehu3(struct cou *p,char *re,long h)FILE *fp;system(cls);fp=fopen(re,wb);fwrite(&h,4,1,fp);printf(n请键入顾客 【%s】(卡号 【 %ld 】 )得新得客户资料:n,re,h);ph、b=h;printf(n 修改后客户密码:n);scanf(%ld,&ph、m);printf(n 修改后客户地址:n);scanf(%s,ph、a);printf(n 修改后客户电话:n);scanf(%ld,&ph、d);fwrite(&ph,sizeof(struct cou
23、),1,fp); fclose(fp);void kehu4(struct cou *p,char *re,long h)FILE *fp;system(cls);fp=fopen(re,wb);fwrite(&h,4,1,fp);printf(nnnn 请输入0键以清除 :n);scanf(%s,ph、a); ph、m=0;ph、d=0;ph、j=0; ph、bc=0; fwrite(&ph,sizeof(struct cou),1,fp); fclose(fp); /*/void cunq1int m;char g20;long m1;system(cls);printf(n);print
24、f(n 1、存款办理 2、取款办理 3:后退n);printf(n);printf(nn按相应得数字以选择您得需要n); scanf(%d,&m); switch(m) case 1: printf( n); printf( 1、存款办理 n); printf( n); printf( 请输入办理存款业务得客户得姓名与卡号(1245) nn); printf(输入客户姓名:n); scanf(%s,g); printf(输入客户卡号:n); scanf(%ld,&m1);cunq11(w,g,m1); /*存款数据输入*/ break; case 2: printf( n); printf(
25、2:取款办理 n); printf( n); printf( 请输入办理取款业务得客户得姓名与卡号(1245) nn); printf(输入客户姓名:n); scanf(%s,g); printf(输入客户卡号:n);scanf(%ld,&m1); cunq12(w,g,m1); break; case 3:break; default: fprintf(stderr,输入有误!); void cunq11(struct cou *p,char *re,long h) FILE *fp;system(cls);fp=fopen(re,wb);fwrite(&h,4,1,fp);printf(n
26、n);printf( 存款办理nn);printf(n);printf(请键入顾客 【%s】(卡号 %ld ) 得存款明细:n,re,h);printf(请输入存款流水号:n); scanf(%ld,&ph、bc); printf(请输入存款数目(建议不要一次存超过百万):n); scanf(%f,&ph、j1); ph、j2=ph、j+ph、j1; ph、j=ph、j2; printf(经办人:n); scanf(%s,ph、jin); printf(办理时间(形如2012年06月2日):n); scanf(%s,ph、t); fwrite(&ph,sizeof(struct cou),1,
27、fp); fclose(fp);void cunq12(struct cou *p,char *re,long h) FILE *fp;system(cls);fp=fopen(re,wb);fwrite(&h,4,1,fp);printf(nn);printf( 取款办理nn);printf(nn);printf(请键入顾客 【%s】(卡号 %ld ) 得取款明细:nn,re,h);printf(请输入取款流水号:n); scanf(%ld,&ph、bc);printf(请输入取款数目(建议不要一次存超过百万):n);scanf(%f,&ph、j3); ph、j4=ph、jph、j3; ph
28、、j=ph、j4;printf(经办人:n);scanf(%s,ph、jin2);printf(办理时间(形如2012年06月2日):n);canf(%s,ph、t); fwrite(&ph,sizeof(struct cou),1,fp); fclose(fp);/*/void cunq2int m;char v20;system(cls);printf(nn);printf( 1、存款查询 2、取款查询 3:后退nn);printf(n);printf(按相应得数字以选择您得需要n);scanf(%d,&m);switch(m)case 1: printf( n); printf( 1:存
29、款查询 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: fprintf(stderr,输入有误!); void cunq211(struct cou p,
30、char *re,long *h)FILE *fp;system(cls);fp=fopen(re,rb);fread(h,4,1,fp);fread(&p*h,sizeof(struct cou),1,fp);fclose(fp);void cunq212(struct cou *p,char *re,long *h) printf( 客户 【 %s 】存款明细n,re); printf(); printf( 客户卡号 ); printf(%ldn,*h); printf(); printf( 存款流水号 ); printf(%ldn,p*h、bc); printf(); printf( 类
31、别 ); printf(存款n); printf(); printf( 存款数目 ); printf(%、2fn,p*h、j1); printf(); printf( 账户当前总金额 ); printf(%、2fn,p*h、j2); printf(); printf( 经办人 ); printf(%sn,p*h、jin); printf(); printf( 客户地址 ); printf(%sn,p*h、a); printf(); printf( 办理时间 ); printf(%sn,p*h、t); printf();void cunq221(struct cou p,char *re,lon
32、g *h)FILE *fp;system(cls);fp=fopen(re,rb);fread(h,4,1,fp);fread(&p*h,sizeof(struct cou),1,fp);fclose(fp);void cunq222(struct cou *p,char *re,long *h)printf( 客户 【 %s 】取款明细 n,re);printf();printf(客户卡号 );printf(%ldn,*h);printf();printf(取款流水号 );printf(%ldn,p*h、bc); printf();printf(类别 );printf(取款n);printf();printf(取款数目