c语言程序设计报告_第1页
c语言程序设计报告_第2页
c语言程序设计报告_第3页
c语言程序设计报告_第4页
c语言程序设计报告_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第1页,共26c语言课程设计报告 页课程设计报告题目车票管理系统系别数学与计算机科学系班级应用数学班姓名学号指导教师束红职称讲师二O一 一年六月第2页,共26c语言课程设计报告 页一.课程设计目的1、进一步掌握和利用.C语言进行程设计的能力;2、进一步理解和运用结构化程序设计的思想和方法;3、初步掌握开发一个小型实用系统的基本方法;4、学会调试一个较长程序的基本方法;5、学会利用流程图表示算法;6、掌握书写程序设计开发文档的能力。2课程设计任务与要求任务:(1)录入班次信息(信息用文件保存),可不定时地增加班次数据(2)浏览班次信息,可显示出所有班次当前状总(如果当前系统时间超过了某班次的发车

2、时间 则显示“此班已发出”的提示信息)。(3)查询路线(起点、终点):可按班次号查询,可按终点站查询(4)增加及修改班次和删除班次信息(5)售票和退票功能当查询出已定票人数小于额定载量且当前系统时间小于发车时间时才能售票,自动更新已 售票人数退票时,输入退票的班次,当本班车未发出时才能退票,自动更新已售票人数要求:1. 在处理每个题目时,要求从分析题目的需求入手,设计算法、编制上机程序和上机调试等若干步骤完成题目,最终写出完整的分析报告。前期准备工作完备与否直接影响到后序上机调试工作的效率。在程 序设计阶段应尽量利用已有的标准函数,加大代码的重用率。2. 设计的题目要求达到一定工作量(300行

3、以上代码),并具有一定的深度和难度。3. 程序设计语言推荐使用 C/C+,程序书写规范,源程序需加必要的注释4. 每组同学需提交可独立运行的程序;5. 每组同学需独立提交设计报告书(每组一份),要求编排格式统一、规范、内容充实,不少于 10页 (代码不算);6. 课程设计实践作为培养学生动手能力的一种手段,单独考核。3车票管理系统总体设计3.1车票管理系统总体设计思想车票管理系统的功能:1.录入班次2.显示所有班次3.查询班次4.增加 班次 5.售票6.退票7.修改班次8.删除班次9.退出车票管理系统软件的功能模块:(1)提供菜单界面,方便用户对程序个功能进行选择,选择要实现的功能c语言课程设

4、计报告第2页,共26页 按enter键进入该功能。(2) 接受用户输入的功能项,按enter键结束输入并将进入该系统,其需 要的结果显示出来,方便用户查看。(3) 完成每次功能,可保存用户的修改的信息,及时更新文件信息。下次 查询时内容为最新信息。实时的信息更新对比等。一个名 TICKET的结构体进行定义,包括 num10 hour3; min3 from10; to10; hours max; now;等结构体成员。然后对调用函数进行定义。intsystem_time()系统时间,voidNewMessage()新纪录录入函数,void ShowTable1() voidShowTable2

5、(int i)线框调用1和2不用没次输,void Display()显示所有函数, void add()增加记录,void save()保存函数,void save()保存函数,void load() 按班次查询函数,void search()查询函数,voidchange()修改函数,void quit() 退出函数,void Ticketorder()售票函数,void Ticketdelete() 删除函数,int menu_select()菜单函数, int whether(i nt) 判断时间是否超出函数,void fin d(char s1,char s2) 查询函数 s1为班次s

6、2 为终点站,void deletemessage()删除函数,int findnum(char s1)班次查询函数,void get(int,int)修改及增加班次,char*menu菜单函数。该系统将这些信息均放在文件d:车票管理系统0中。最后定义main()函数,利用函数调用,实现程序的各种功能。将其放在系 统文件d:车票管理系统0中。程序分为多个小模块,通过调用实现各种功能,增强了程序的可建设性。程序把每种功能分开实现,更简单,实用程序更易理解。3.2总体设计流程图车票管理系统调用主菜单选项输入选择后分别1调 用 录 入 班 次调 用 显 示 所 有 班 次调 用 查 询 班 次调 用

7、 增 加 班 次调 用 售 票调 用 退 票完成功能后返回主菜单调 用 修 改 班 次V8调用删除班次调 用 退 出结束图3 -2-1 总体设计流程第2页,共26c语言课程设计报告 页4程序测试、4.0菜单界面图4 0 1采单界面如上图所示,该程序为用户提供菜单界面,用户可以对程序的各种功能进 行选择,方便用户使用。选择1-9并按enter键进行操作。如选择出错,系统将 提出警告,并提醒用户重新进行选择。4.1录入班次界面图4 1- 1第一次输入时的界面图4 1- 2第二次输入时的界面如上图所示,该功能实现录入班次信息。选择1按enter键进入该功能,程序提醒用户输入车次.发车时间.起始站.终

8、点站.行车时间.额定载量.已售票数, 输入完毕后按enter键将完成录入班次结果,同时程序将再次提醒用户进行新的 选择。而第二次输入时提醒已经输过,不能在加。4.2查询所有班次界面图4 2-1字符串重新统计界面如上图所示,该功能实现显示所有班次。选择2按enter键进入该功能,程序提直接显示出信息,按enter键,程序进入菜单项,程序将再次提醒用户进行 新的选择。4.3 查询班次界面图4 3-1查询班次界面图4 3- 2选择查询方式的界面如上图所示,该功能将实现程序运行班次的查询。选择3并按enter键将实现该功能。分班次和终点站两种方式查询第2页,共26c语言课程设计报告 页4.4 增加班次

9、界面图4 41增加功能界面图4 4 2增加前界面图4 4 3增加后界面如上图所示,该功能将增加班次信息,帮助用户更新班次信息。选择 enter键将实现该功能,再按提示输入就行。按任意键返回主菜单。4.5 售票界面4并按图4 5 2选择后的界面c语言课程设计报告 页第2页,共26图4 5- 3订票时的界面如上图所示,该功能将帮助人们选择买票。选择5按enter键实现该功能,按任意键关闭程序。买票程序可提示买票成功否,且自动判断是否可卖。4.6退票界面图4 6-1退票时的界面如上图所示,该功能将帮助人们选择退票。选择 6按enter键实现该功能, 按任意键关闭程序。退票程序可提示退票成功否,且自动

10、判断是否可退。4.7修改班次界面图4 7-1修改班次时的界面如上图所示,该功能将帮助人们修改班次信息。选择7按enter键实现该功按任意键关闭程序。按提示操作修改班次。4.8 删除班次界面图4 8-1删除班次时的界面如上图所示,该功能可删除班次信息。选择8按enter键实现该功能,按任意键关闭程序。按提示操作删除班次。4. 9退出界面图4 9-1退出时的界面如上图所示,该功能可退出系统。选择9按enter键实现该功能c语言课程设计报告 页第2页,共265.源程序流程图清单#i nclude/宏定义函数#i nclude/串操作及内存操作函数#in clude/调用系统函数#in clude/时

11、间库函数#in clude/输入输出函数#defi ne N 1000/宏定义多条记录typedef struct TICKET/定义新结构体TICKETchar num10;/车次编号char hour3;/时间,,小电寸char min3;/分钟char from10;/起始站char to10;/终点站float hours;/车程实际时间int max;/最大车载容量int now;/已售票数CLASS;int class_ num=0;/初始班次总数为0CLASSrecordsN;/多条记录int system_time();/ 系统时间void NewMessage();/新纪录*

12、录入函数*void ShowTable1();/线框调用1,不用没次输void ShowTable2(int i);/线框调用2,不用没次输void Display();/显示所有函数void add();/增加记录void save();/保存函数void load();/按班次查询函数void search();/查询函数void change();/ 修改函数 *void quit();/ 退出函数 *void Ticketorder();/*售票函数*void Ticketdelete();/删除函数*int menu _select();/菜单函数*int whether(i nt)

13、;/判断时间是否超出函数*void find(char s1,char s2);/ 查询函数 s1 为班次 s2为终点站void deletemessage();/删除函数int findnu m(char s1);/班次查询函数void get(int,int);/修改及增加班次*char*me nu=*欢迎使用车票查询系统*“n*MENU功能 菜单 *nF1.录入班次n2.显示所有班次n3.查询班次n4.增加班次n5.隹酋售票n6.退票n7.修改班次n8.删除班次.ni9.退出*主函数 *I;I*void main() system(cls);while(1)II刷屏II菜单函数循环swi

14、tch(me nu _select() case case case case case case case case case II菜单函数*123456789NewMessage();break;Display();break; search();break; add();break;Ticketorder();break; Ticketdelete();break; cha nge();break; deletemessage();break; quit();break;IIIIIIIIII 新纪录*录入函数*II II显示II查找函数*II II增加记录IIII* 售票函数*II删除函

15、数*II修改函数*IIIIII 选择调用删除函数退出函数*I*int menu _select()char s5; int c,i; system(cls); system(color for(i=0;i11;i+) prin tf(%s,me nui); i=0; while(c9)菜单 函数 */IIIIIIIII 菜单函数*III定义要输入的数字功能09);/II刷屏改变颜色II输出菜单各项)II判断是否是1到9的命令prin tf(n);III输出换行第2页,共26c语言课程设计报告 页printf(printf(n 请选择(1- 9):”);scan f(%s,s);c=atoi(s

16、);/atoi将字符串转换成一个整数值/输出菜单面return c;/ 返回请求录入函数void NewMessage()/*录入函数*int i=0,j=5,h; char s5; FILE *fp; system(cls); if(fp=fope n(d:/fopen 打开/定义文件型指针变量/刷屏车票管理系统0.datTrb)!=NULL)文件printf(车票信息已经存在请选择增加功能!n);printf(任意输入则返回菜单n);scan f(%s,s);i=1;/通过是1if(i=0) system(cls);/ 刷屏printf(请输入要录入班次总数:n);scanf(%d,&cl

17、ass_num);/ 指向班次指针system(cls);/ 刷屏for(i=0;iclass_ nu m;i+)system(cls);/ 刷屏printf(请输入第c个班次信息:n,i+1);h=-1;for(;h!=i;)/ 循环输出printf(请输入班次:);sca nf(%s,recordsi. nu m);for(h=0;hi;h+) if(strcmp(recordsh. nu m,recordsi. num)=0)/判断字符串比较是否相等,,待比较的字符串16printf( break;get(i,j);j=5; save();/*void Display。int i,j;

18、system(cls); load();ShowTable1();输入错误!该班次已存在!n)/返回/修改及增加班次*/调用保存函数显示所有函数/显示所有函数/刷屏调用按班次查询函数/线框调用1 ,,不用没次输for(i=0,j=0;iclass_ nu m;i+,j+=2)/按班次顺序输出printf(n|1111T|n);if(whether(i)/判断时间是否超出函数prin tf(|%10s|%5s:%-4s|%10s|%10s|%8.1f|%8d|%8d|,recordsi. num,recordsi.hour,recordsi.m in,recordsi.from,recordsi

19、.to,recordsi.hours,recordsi.max,recordsi. no w);elseprin tf(|%10s|已发车|%10s|%10s|%8.1f|%8d|%8d|,recordsi. num,recordsi.from,recordsi.to,recordsi.hours,recordsi.max,rec ordsi. no w);ShowTable2(j);/ 线框调用 2printf(n按任意键继续.n);getch();/从控制台读取一个字符,但不显示在屏幕上打印表头void ShowTable1()/线框调用1,不用没次输第2页,共26车程信息卜起点站 | 终

20、点站打印表尾c语言课程设计报告 页int i=2;system(cls);/ 刷屏printf( * MESSAGE*printf(n|1-|n);prin tf(n|班次额定载量|已售票|n);void ShowTable2(int i)/线框调用2。不用没次输printf(n|1-|n);/*void search()查找函数11/查询调用|-int i;/刷屏char s110=0,s210=0; system(cls);printf(1. 按班次查询n); printf(2.按终点站查询n);prin tf(3.退出 n);printf( 请选择(1-3):n);sca nf(%d,&

21、i);load();/调用按班次查询函数switch(i)/多分枝选择语句case 1: printf(请输入要查询的班次:);/s1 为班次scan f(%s,s1);find(s1,s2);/调用查找函数 222 2break;case 2:printf(请输入要查询终点站:);/s2 为终点站scan f(%s,s2);find(s1,s2);/调用查找函数 222 2break;case 3: break;default : printf(输入错误!n);break;printf(”按任意键继续.n);getch();/从控制台读取一个字符,但不显示在屏幕上/*22*void find

22、(chars1,char s2)int i,h=0,m;ShowTable1();/ 调用线框 1if(s20=0)m=1;/1为无条件执行else m=0;for(i=0;iclass_ nu m;i+)if(strcmp(s1,recordsi. num)=0|strcmp(s2,recordsi.to)=0) /判断字符串比较是否相等,,待比较的字符串printf(n|1111-|n);prin tf(|%10s|%5s:%-4s|%10s|%10s|%8.1f|%8d|%8d|,recordsi. nu m,recordsi.hour,recordsi. min.recordsi.fr

23、om,recordsi.to,recordsi.hours,recordsi.max,rec ordsi. no w);h+=2;if(m=1)break;ShowTable2(h);/ 调用线框 2if(h=0)printf( 要查找的班次不存在!n);/*void add()/土增加函*/增加记录int i,j=5;load();/调用按班次查询函数system(cls);/ 刷屏printf(1.增加班次);prin tf(2.返回 n);printf(请选择(1-2)n);sca nf(%d,&i); if(i=1)第2页,共26c语言课程设计报告 页system(cls);/ 刷屏p

24、rintf(1.请输入要增加的班次:);scan f(%s,recordsclass_ nu m. nu m);for(i=0;iclass_ nu m;i+)if(strcmp(recordsclass_ nu m. nu m,recordsi. num )=0)/判断字符串比较是否相等,,待比较的字符串判断车次没 printf( getch();重复输入错误!n);/从控制台读取一个字符,但不显示在屏幕上break;if(i=class_ num)get(i,j); class_ nu m+;save();1111/修改及增加班次*/使班次数加1 调用保存函数/*/void Ticketo

25、rder()int i;char num10; system(cls);prin tf(1.售票 n);prin tf(2.返回 n);printf(请选择(1-2):n);sca nf(%d,&i);if(i=1)load();search();售票函数/*售票函数*/刷屏/调用按班次查询函数/查找函数*printf(请输入要订票的班次(若无请输入0):);sca nf(%s, nu m); for(i=0;irecordsi. now&whether(i)=1)/判断时间是否超出函数*并且*没超出最大客量recordsi.now+;III 使已售的暑假 1printf(通向s班次为s的票订

26、票成功!n,recordsi.to,recordsi. nu m);/调用保存函数IIIII从控制台读取一个字符,但不显示该班次已满或已发出!n);IIIII从控制台读取一个字符,但不显示退票删除函数save(); getch();在屏幕上break; else printf( getch();在屏幕上*/void Ticketdelete()/ 删除函数 *int i;char num10;system(cls);/ 刷屏prin tf(1.退票 n);prin tf(2.返回 n);printf(请选择(1-2)n:);sca nf(%d,&i);if(i=1)system(cls);/

27、刷屏load();/调用按班次查询函数printf(请输入要退票的班次:n);sca nf(%s, nu m);i=findnum(num);/调用班次查询函数if(strcmp(num,recordsi.num)=0)/判断字符串比较是否相等待比较的字符串if(whether(i)/判断时间是否超出函数*prin tf(确定(Y/N)?);sca nf(%s, nu m);if(n um0=y| nu m0=Y)recordsi. no w-;/使已售票加1printf(”退票成功!n);save();/调用保存函数getch(); /从控制台读取一个字符,但不显示在屏幕 上 elsepri

28、ntf( 该班车已发出,无法退票!n);getch();/从控制台读取一个字符,但不显示在屏幕上 if(i=class_ num)printf(-输入错误!n);getch();/从控制台读取一个字符,但不显示在屏幕上/* */void change()/ 修改函数 *char num10,s10;int h=0,j=13,i;load();/调用按班次查询函数system(cls);/ 刷屏printf(请输入要修改的班次:n);sca nf(%s, nu m);i=findnum(num);/调用班次查询函数if(i=class_ num)printf(输入错误,无此班次!n);getch

29、(); /从控制台读取一个字符,但不显示在屏幕上 elseprintf(确定修改(Y/N)?n”);scan f(%s,s);if(s0=y|s0=Y)get(i,j);/修改及增加班次*save();/调用保存函数/*/删除函数void deletemessage()int i,h=0;char num10; system(cls);prin tf(1.删除班次 n);prin tf(2.返回 n);printf(请选择(1-2):n); sca nf(%d,&i);if(i=1)/刷屏/删除班次信息/刷屏system(cls);printf( 请输入要删除的班次:n); sca nf(%s

30、, nu m);i=findnum(nu m); if(i=class_ num) _ printf( getch(); else/调用班次查询函数输入错误,无此班次!n);/从控制台读取一个字符,但不显示在屏幕上确定?(y/n)n);printf(sca nf(%s, nu m);if(n umO=y| nu mO=Y) for(;iclass_ nu m-1;i+) recordsi=recordsi+1; class_ num-; save(); printf( getch();/班次总数减1/调用保存函数删除成功!n);/* */ int findnu m(char s1) 按班次查询

31、函数/查找班次int i,h=0;ShowTable1();/线框调用1,不用没次输for(i=0;iclass_ nu m;i+) if(strcmp(s1,recordsi.num)=0)/ 判断字符串比较是否相等,如果符合则输出车次等信息printf(|1111|n);prin tf(|%10s|%5s:%-4s|%10s|%10s|%8.1f|%8d|%8d|,recordsi. num,recordsi.hour.recordsi.mi n,recordsi.from,recordsi.to,recordsi.hours,rec ordsi.max,recordsi. no w);h

32、+=2;break;ShowTable2(h);return i;/*/加2使输出的框架合适/调用框架2保存函数void save()FILE *fp1,*fp2; if(fp1= fope n( d:输出打开一个二进制文件printf(文件打开错误!n);exit(0);if(fp2=fopen(d:车票管理系统 0.dat,wb)=NULL)输出打开一个二进制文件printf(文件打开错误!n);exit(0);fwrite(& classnu m,sizeof(i nt),1,fp2); fwrite(records,sizeof(CLASS),class_ nu m,fp1);/保存函

33、数/文件行指针车票管理系统.dat,wb)=NULL)/打开文件、/打开文件、/写入文件信息fclose(fp1);fclose(fp2);/ 关闭文件按班次查询函数/*/void load()/按班次查询函数FILE *fp1,*fp2;if(fp仁fopen(d:车票管理系统.dat,rb)=NULL) system(cls);/ 刷屏printf(文件打开错误!n);getch();/从控制台读取一个字符,但不显示在屏幕上 exit(O);if(fp2=fopen(d:车票管理系统 0.dat,rb)=NULL) system(cls);/ 刷屏printf(文件打开错误!n);getc

34、h(); /从控制台读取一个字符,但不显示在屏幕上exit(0);/ 退出fread(& classnu m,sizeof(i nt),1,fp2);/读入信息fread(records,sizeof(CLASS),class_num,fp1);/读入信息fclose(fp1);fclose(fp2);/ 文件关闭退出函数void quit()/退出函数*char s5;printf(确认退出?(Y/N)n);sca nf(%s,s);if(s0=y|s0=Y)exit(O); /程序中止执行,返回调用过程.state 0-正常中止非0-非 正常/*彳修改及增加班次*/void get(int

35、i,int j)/修改及增加班次*for(;)printf(请输入发车时间(xx : xx);scanf(%s : %s,recordsi.hour,recordsi.m in);if(atoi(recordsi.hour)=0)&(atoi(re cordsi.mi n)=0)break;else printf(输入错误!n);getch();/从控制台读取一个字符,但不显示在屏幕上printf(请输入起点站:);sea nf(%s,recordsi.from);printf(请输入终点站:);sca nf(%s,recordsi.to);printf(请输入行车时间:);sca nf(%f

36、,&recordsi.hours); printf( 请输入额定载量:);sca nf(%d,&recordsi.max);for(;)printf(请输入已售票数:);scan f(%d,&recordsi. now); if(recordsi. no wtm_hourtm_hour=atoi(recordsi.hour)&local-tm_mi n atoi(recordsi.mi n)-/atoi将字符串转换成一个整数值一return 1;elsereturn 0;6实践心得体会经过一周的课程设计,我们学到了很多东西:巩固和加深了对结构体, 指针的理解,提高综合运用所学知识的能力。培养了我们选用参考书,查阅 手册及文献资料的能力。培养独立思考,深入研究,分析问题、解决问题的能 力。通过实践解决实际问题,学会很多实用的函数。通过实际编译

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论