2022年车票管理系统c语言程序设计报告 .pdf
C程序课程设计报告题目车票管理系统院别数学与计算机学院班级姓名学号指导教师邓永江二一五年六 月名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 35 页 - - - - - - - - - C 语言课程设计报告- 1 - 8 目录1、设计目的和要求 . . - 2 - 2、总体设计 . . - 2 - 3、详细设计 . . - 3 - 4、程序测试分析 . . - 4 - 4.1 菜单界面 . - 5 - 4.3 查询所有班次界面 . . - 6 - 4.4 查询班次界面 . - 6 - 4.5 增加班次界面 . - 7 - 4.6 售票界面 . - 8 - 4.7 退票界面 . - 9 - 4.8 修改班次界面 . - 9 - 4.9 删除班次界面 . - 10 - 4.10 退出界面 . - 10 - 5、 总结 . . - 11 - 附录 . . - 12 - 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 35 页 - - - - - - - - - C 语言课程设计报告- 2 - 8 1、设计目的和要求任务:(1)录入班次信息 ( 信息用文件保存 ), 可不定时地增加班次数据(2) 浏览班次信息 , 可显示出所有班次当前状总( 如果当前系统时间超过了某班次的发车时间 , 则显示“此班已发出”的提示信息) 。(3)查询路线(起点、终点) :可按班次号查询 , 可按终点站查询(4)增加及修改班次和删除班次信息(5)售票和退票功能当查询出已定票人数小于额定载量且当前系统时间小于发车时间时才能售票,自动更新已售票人数退票时,输入退票的班次,当本班车未发出时才能退票,自动更新已售票人数要求:1. 在处理每个题目时, 要求从分析题目的需求入手,设计算法、编制上机程序和上机调试等若干步骤完成题目,最终写出完整的分析报告。前期准备工作完备与否直接影响到后序上机调试工作的效率。在程序设计阶段应尽量利用已有的标准函数,加大代码的重用率。2. 设计的题目要求达到一定工作量(300 行以上代码),并具有一定的深度和难度。3. 程序设计语言推荐使用C,程序书写规范,源程序需加必要的注释;4. 每组同学需提交可独立运行的程序;5. 每组同学需独立提交设计报告书(每组一份),要求编排格式统一、规范、内容充实,不少于8 页(代码不算);6. 课程设计实践作为培养学生动手能力的一种手段,单独考核。目的:(1)进一步掌握和利用C语言进行程设计的能力;(2)进一步理解和运用结构化程序设计的思想和方法;(3)初步掌握开发一个小型实用系统的基本方法;(4)学会调试一个较长程序的基本方法;(5)学会利用流程图表示算法;(6)掌握书写程序设计开发文档的能力。2、总体设计车票管理系统的功能: 1. 录入班次 2. 显示所有班次 3. 查询班次 4. 增加班名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 35 页 - - - - - - - - - C 语言课程设计报告- 3 - 8 次 5. 售票 6. 退票 7. 修改班次 8. 删除班次 9. 退出图2-1 总体设计流程3、详细设计车票管理系统软件的功能模块:(1)提供菜单界面,方便用户对程序个功能进行选择,选择要实现的功能按enter 键进入该功能。(2)接受用户输入的功能项,按 enter 键结束输入并将进入该系统,其需要的结果显示出来,方便用户查看。(3)完成每次功能 ,可保存用户的修改的信息,及时更新文件信息。下次查询时内容为最新信息。实时的信息更新对比等。一个名 TICKET 的结构体进行定义 : typedef struct TICKET char num10; /车次编号char hour3; /时间, ,小时char min3; /分钟char from10; /起始站char to10; /终点站float hours; /车程实际时间车票管理系统录入班次所有班次显示查询班次增加班次售票退票修改班次删除班次退出显示主菜单,选择相应菜单项返回主菜单名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 35 页 - - - - - - - - - C 语言课程设计报告- 4 - 8 int max; /最大车载容量int now; /已售票数CLASS;包括num10 hour3;min3 from10; to10;hours max; now;等结构体成员。然后对调用函数进行定义。void NewMessage() 新纪录录入函数void ShowTable1() void ShowTable2(int i) 线框调用 1和2不用每次输void Display() 显示所有函数void add() 增加记录void save() 保存函数void load() 读入信息函数void search() 查询函数void change() 修改函数void quit() 退出函数void Ticketorder() 售票函数void Ticketdelete() 删除函数int menu_select() 菜单函数int whether(int) 判断时间是否超出函数void find(char s1,char s2) 查询函数 /s1 为班次 /s2 为终点站void deletemessage() 删除函数int findnum(char s1) 班次查询函数void get(int,int) 修改及增加班次char *menu 菜单数组。该系统将这些信息均放在文件d: 车票管理系统中。最后定义 main() 函数,利用函数调用,实现程序的各种功能。将其放在系统文件d: 车票管理系统 0中。程序分为多个小模块,通过调用实现各种功能,增强了程序的可建设性。程序把每种功能分开实现,更简单,实用程序更易理解。4、程序测试 分析名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 35 页 - - - - - - - - - C 语言课程设计报告- 5 - 8 4.1 菜单界面图4-1 菜单界面如图4-1所示,该程序为用户提供菜单界面,用户可以对程序的各种功能进行选择,方便用户使用。选择 1-9并按enter 键进行操作。如选择出错,系统将提出警告,并提醒用户重新进行选择。4.2 录入班次界面图4-2 第一次输入时的界面图4-3 第二次输入时的界面如图4-2、 4-3所示,该功能实现录入班次信息。 选择1按enter 键进入该功能,程序提醒用户输入车次. 发车时间 . 起始站 . 终点站 . 行车时间 . 额定载量 . 已售票数,输入完毕后按 enter 键将完成录入班次结果,同时程序将再次提醒用户进行新的选择。而第二次输入时提醒已经输过,不能再加。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 35 页 - - - - - - - - - C 语言课程设计报告- 6 - 8 4.3 查询所有班次界面图4-4 字符串重新统计界面如图4-4 所示,该功能实现显示所有班次。选择2按enter 键进入该功能,程序提直接显示出信息,按enter 键,程序进入菜单项,程序将再次提醒用户进行新的选择。4.4 查询班次界面图 4-5 查询班次界面图4-6 选择查询方式的界面如4-5、4-6所示,该功能将实现程序运行班次的查询。选择3并按enter 键将实现该功能。分班次和终点站两种方式查询。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 35 页 - - - - - - - - - C 语言课程设计报告- 7 - 8 4.5 增加班次界面图4-7 增加功能界面图4-8 增加前界面名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 35 页 - - - - - - - - - C 语言课程设计报告- 8 - 8 图4-9 增加后界面如图4-7、4-8、4-9所示,该功能将增加班次信息,帮助用户更新班次信息。选择4并按enter 键将实现该功能,再按提示输入就行。按任意键返回主菜单。4.6 售票界面图4-10 选择售票功能界面图4-11 选择后的界面名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 35 页 - - - - - - - - - C 语言课程设计报告- 9 - 8 图4-12 订票时的界面如图 4-10、4-11、4-12所示,该功能将帮助人们选择买票。选择5按enter键实现该功能,按任意键关闭程序。买票程序可提示买票成功否,且自动判断是否可卖。4.7 退票界面图 4-13 退票时的界面如图4-13所示,该功能将帮助人们选择退票。选择6按enter 键实现该功能,按任意键关闭程序。退票程序可提示退票成功否,且自动判断是否可退。4.8 修改班次界面名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 35 页 - - - - - - - - - C 语言课程设计报告- 10 - 8 图 4-14 修改班次时的界面如图4-14所示,该功能将帮助人们修改班次信息。选择7按enter 键实现该功能,按任意键关闭程序。按提示操作修改班次。4.9 删除班次界面图 4-15 删除班次时的界面如图4-15所示,该功能可删除班次信息。选择8按enter 键实现该功能, 按任意键关闭程序。按提示操作删除班次。4.10 退出界面图 4-16 退出时的界面如图 4-16 所示,该功能可退出系统。选择9 按 enter 键实现该功能。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 35 页 - - - - - - - - - C 语言课程设计报告- 11 - 8 5、 总结经过一周的课程设计,我们学到了很多东西:巩固和加深了对结构体,指针的理解,提高综合运用所学知识的能力。培养了我们选用参考书,查阅手册及文献资料的能力。培养独立思考,深入研究,分析问题、解决问题的能力。通过实践解决实际问题,学会很多实用的函数。通过实际编译系统的分析设计、编程调试,掌握应用软件的分析方法和工程设计方法。能够按要求编写课程设计报告书, 能正确阐述设计和实验结果, 正确绘制系统和程序框图。通过课程设计,培养了我严肃认真的工作作风,逐步建立正确的生产观念、经济观念和全局观念。对 c 语言和课程设计的认识:课程设计是把我们所学的理论知识进行系统的总结并应用于实践的良好机会,有利于加强我们用知识理论来分析实际问题的能力,进而加强了我们对知识认识的实践度,巩固了我们的理论知识,深化了对知识的认识,并为走向社会打下一个良好的基础。在这次课程设计中我遇到许多问题和麻烦,得到了老师的帮助和指导,才能够使得这次课程设计顺利的进行下去,另外,在程序调试过程中,也得到很多同学的帮助,给我及时指出错误,提出许多宝贵意见。在此对老师和同学们表示感谢!经历这一周的锻炼,我也比较满意自己的表现。在这过程中我查阅了很多书,学到了很多课堂上没有的东西。很多知识我之前不知道的现在大部分都知道了,不过理解不够深透,导致在这一周里碰了不少壁!我觉得编程既是一项费时费力但也是有趣的。说它费时费力是因为它繁琐,而有趣是因为我很享受一段段的小程序编成功之后的喜悦,苦尽干来啊。我觉得编程是一件快乐的差事,我想我今后会加把时间学习它,把它学好。通过这次课程设计,使我们更加熟悉的掌握了C语言的运用。帮助我们熟悉了更多 C语言的功能,提高了我们的动手能力,学到了许多解决实际问题的宝贵经验同时也挖掘出了我们潜在的能力,使我们对自己更有自信,对编程也更有兴趣。我相信,只要努力、勤奋、坚持不懈,就没有什么做不到的事,不能还没开始就退缩,要勇于拼搏,敢于创新。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 35 页 - - - - - - - - - C 语言课程设计报告- 12 - 8 附录/ 源程序完整清单#include /宏定义函数#include /串操作及内存操作函数#include /调用系统函数#include /时间库函数#include /输入输出函数#define N 1000 /宏定义多条记录typedef struct TICKET /定义新结构体 TICKET char num10; /车次编号char hour3; /时间,小时char min3; /分钟char from10; /起始站char to10; /终点站float hours; /车程实际时间int max; /最大车载容量int now; /已售票数CLASS; int class_num=0; /初始班次总数为 0 CLASS recordsN; / 多条记录int system_time(); /系统时间void NewMessage(); /新纪录 *录入函数 * void ShowTable1(); /线框调用 1, , ,不用每次输void ShowTable2(int i); /线框调用 2, , ,不用每次输void Display(); /显示所有函数void add(); /增加记录void save(); / 保存函数名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 35 页 - - - - - - - - - C 语言课程设计报告- 13 - 8 void load(); / 按班次查询函数void search(); /查询函数void change(); /修改函数 * void quit(); / /退出函数 * void Ticketorder(); / /*售票函数 * void Ticketdelete(); /删除函数 * int menu_select(); /菜单函数 * int whether(int); /判断时间是否超出函数 * void find(char s1,char s2); /查询函数 /s1为班次 /s2为终点站void deletemessage(); /删除函数int findnum(char s1); /班次查询函数void get(int,int); /修改及增加班次 * char *menu=*欢迎使用车票管理系统*, n*MENU功能菜单 *, n 1. 录入班次, n 2. 显示所有班次, n 3. 查询班次, n 4. 增加班次, n 5. 售票, n 6. 退票, n 7. 修改班次, n 8. 删除班次, n 9. 退出; /*主函数 */ 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 35 页 - - - - - - - - - C 语言课程设计报告- 14 - 8 void main() system(cls); /刷屏while(1) /菜单函数循环 switch(menu_select() /菜单函数 * case 1: NewMessage();break; /新纪录 *录入函数 * case 2: Display();break; / /显示case 3: search();break; /查找函数 * case 4: add();break; / /增加记录case 5: Ticketorder();break; /*售票函数 * case 6: Ticketdelete();break; /删除函数 * case 7: change();break; /修改函数 * case 8: deletemessage();break; /选择调用删除函数case 9: quit();break; /退出函数 * /*菜单函数 */ int menu_select() /菜单函数 * char s5; /定义要输入的数字功能int c,i; system(cls); /清屏system(color 07);/改变颜色颜色属性由两个十六进制数字指定/ 第一个为背景,第二个则为前景。每个数字可以为以下任何值之一: 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 35 页 - - - - - - - - - C 语言课程设计报告- 15 - 8 /0 = 黑色 8 = 灰色 1 = 蓝色 9 = 淡蓝色 2 = 绿色 A = 淡绿色 3 = 湖蓝色 B = 淡浅绿色 4 = 红色 C = 淡红色 5 = 紫色/D = 淡紫色 6 = 黄色 E = 淡黄色 7 = 白色 F = 亮白色for(i=0;i11;i+) printf(%s,menui); /输出菜单各项) i=0; while(c9) /判断是否是 1 到 9 的命令 printf(n); /输出换行printf(*); printf(n请选择 (1-9): ); scanf(%s,s); c=atoi(s); /atoi将字符串转换成一个整数值 /输出菜单面return c; /返回请求 /*录入函数*/ void NewMessage() /*录入函数 * int i=0,j=5,h; / char s5; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 16 页,共 35 页 - - - - - - - - - C 语言课程设计报告- 16 - 8 FILE *fp; /定义文件型指针变量system(cls); /刷屏if(fp=fopen(d:车票管理系统0.dat,rb)!=NULL) /fopen打开文件 printf(车票信息已经存在请选择增加功能!n); printf(任意输入则返回菜单 n); scanf(%s,s); i=1; /通过是 1 if(i=0) system(cls); /刷屏printf(请输入要录入班次总数 :n); scanf(%d,&class_num); /指向班次指针system(cls); /刷屏for(i=0;iclass_num;i+) system(cls); /刷屏printf(请输入第 %d个班次信息 :n,i+1); h=-1; for(;h!=i;) /循环输出 printf(请输入班次 :); scanf(%s,recordsi.num); for(h=0;hi;h+) if(strcmp(recordsh.num,recordsi.num)=0) / 判断字符串比较是否相等, , 待比较的字符串 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 17 页,共 35 页 - - - - - - - - - C 语言课程设计报告- 17 - 8 printf(输入错误 ! 该班次已存在 !n); break; /返回 get(i,j); /修改及增加班次 * j=5; save(); /调用保存函数 /*显示所有函数*/ void Display() /显示所有函数 int i,j; system(cls); /刷屏load(); / 调用按班次查询函数ShowTable1(); /线框调用 1, , ,不用每次输for(i=0,j=0;iclass_num;i+,j+=2) /按班次顺序输出 printf(n|-|-|-|-|-|-|-|n); if(whether(i) /判断时间是否超出函数 * printf(|%10s|%5s:%-4s|%10s|%10s|%8.1f|%8d|%8d|,recordsi.num,recordsi.hour, 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 18 页,共 35 页 - - - - - - - - - C 语言课程设计报告- 18 - 8 recordsi.min,recordsi.from,recordsi.to,recordsi.hours, recordsi.max,recordsi.now); else printf(|%10s| 已发车|%10s|%10s|%8.1f|%8d|%8d|,recordsi.num, recordsi.from,recordsi.to,recordsi.hours,recordsi.max,recordsi.now); ShowTable2(j); /线框调用 2 printf(n按任意键继续 .n); getch(); /从控制台读取一个字符,但不显示在屏幕上 /*打印表头*/ void ShowTable1() /线框调用 1, , ,不用每次输 int i=2; system(cls); /刷屏printf(*MESSAGE车程信息*n); printf(n|-|-|-|-|-|-|-|n); printf(n| 班次 | 发车时间 | 起点站 | 终点站 |行车时间 |名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 19 页,共 35 页 - - - - - - - - - C 语言课程设计报告- 19 - 8 额定载量 | 已售票 |n); /*打印表尾*/ void ShowTable2(int i) /线框调用 2。不用每次输。 printf(n|-|-|-|-|-|-|-|n); /*查找函数 11*/ void search() /查询调用 int i; char s110=0,s210=0; system(cls); /刷屏printf(1. 按班次查询 n); printf(2. 按终点站查询 n); printf(3. 退出n); printf(请选择 (1-3):n); scanf(%d,&i); load(); / 调用按班次查询函数switch(i) /多分枝选择语句 case 1: printf(请输入要查询的班次 :); /s1为班次名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 20 页,共 35 页 - - - - - - - - - C 语言课程设计报告- 20 - 8 scanf(%s,s1); find(s1,s2); /调用查找函数 222 2 break; case 2: printf(请输入要查询终点站 :); /s2为终点站scanf(%s,s2); find(s1,s2); /调用查找函数 222 2 break; case 3: break; default : printf(输入错误 !n); break; printf(按任意键继续 .n); getch(); /从控制台读取一个字符,但不显示在屏幕上 /*查询函数22*/ void find(char s1,char s2) int i,h=0,m; ShowTable1(); /调用线框 1 if(s20=0) m=1; /1为无条件执行else m=0; for(i=0;iclass_num;i+) if(strcmp(s1,recordsi.num)=0|strcmp(s2,recordsi.to)=0) /判断字符串比较是否相等, , 待比较的字符串 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 21 页,共 35 页 - - - - - - - - - C 语言课程设计报告- 21 - 8 printf(n|-|-|-|-|-|-|-|n); printf(|%10s|%5s:%-4s|%10s|%10s|%8.1f|%8d|%8d|,recordsi.num,recordsi.hour,recordsi.min, recordsi.from,recordsi.to,recordsi.hours,recordsi.max,recordsi.now); h+=2; if(m=1) break; ShowTable2(h); /调用线框 2 if(h=0) printf(要查找的班次不存在 !n); /*增加函数 */ void add() / /增加记录 int i,j=5; load(); / 调用按班次查询函数system(cls); /刷屏printf(1. 增加班次 ); printf(2. 返回n); printf(请选择 (1-2)n); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 22 页,共 35 页 - - - - - - - - - C 语言课程设计报告- 22 - 8 scanf(%d,&i); if(i=1) system(cls); /刷屏printf(1. 请输入要增加的班次 :); scanf(%s,recordsclass_num.num); for(i=0;iclass_num;i+) if(strcmp(recordsclass_num.num,recordsi.num)=0) / 判断字符串比较是否相等, , 待比较的字符串判断车次没重复 printf(输入错误 !n); getch(); /从控制台读取一个字符,但不显示在屏幕上break; if(i=class_num) get(i,j); /修改及增加班次 * class_num+; /使班次数加 1 save(); /调用保存函数 /*售票函数*/ void Ticketorder() /*售票函数 * 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 23 页,共 35 页 - - - - - - - - - C 语言课程设计报告- 23 - 8 int i; char num10; system(cls); /刷屏printf(1. 售票n); printf(2. 返回n); printf(请选择 (1-2):n); scanf(%d,&i); if(i=1) load(); / 调用按班次查询函数search(); /查找函数 * printf(请输入要订票的班次 ( 若无请输入 0):); scanf(%s,num); for(i=0;irecordsi.now&whether(i)=1) / 判断时间是否超出函数 * 并且* 没超出最大客量 recordsi.now+; /使已售的暑假 1 printf(通向%s班次为 %s的 票订 票成功!n,recordsi.to,recordsi.num); save(); /调用保存函数getch(); /从控制台读取一个字符,但不显示在屏幕上break; else 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 24 页,共 35 页 - - - - - - - - - C 语言课程设计报告- 24 - 8 printf(该班次已满或已发出 !n); getch(); /从控制台读取一个字符,但不显示在屏幕上 /*退票删除函数*/ void Ticketdelete() /删除函数 * int i; char num10; system(cls); /刷屏printf(1. 退票n); printf(2. 返回n); printf(请选择 (1-2)n:); scanf(%d,&i); if(i=1) system(cls); /刷屏load(); / 调用按班次查询函数printf(请输入要退票的班次 :n); scanf(%s,num); i=findnum(num); /调用班次查询函数if(strcmp(num,recordsi.num)=0) /判断字符串比较是否相等待比较的字符串名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 25 页,共 35 页 - - - - - - - - - C 语言课程设计报告- 25 - 8 if(whether(i) /判断时间是否超出函数 * printf(确定(Y/N)?); scanf(%s,num); if(num0=y|num0=Y) recordsi.now-; /使已售票加 1 printf(退票成功 !n); save(); /调用保存函数getch(); /从控制台读取一个字符,但不显示在屏幕上 else printf(该班车已发出 , 无法退票 !n); getch(); /从控制台读取一个字符,但不显示在屏幕上 if(i=class_num) printf(输入错误 !n); getch(); /从控制台读取一个字符, 但不显示在屏幕上 /*修改函数*/ 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 26 页,共 35 页 - - - - - - - - - C 语言课程设计报告- 26 - 8 void change() /修改函数 * char num10,s10; int h=0,j=13,i; load(); / 调用按班次查询函数system(cls); /刷屏printf(请输入要修改的班次 :n); scanf(%s,num); i=findnum(num); /调用班次查询函数if(i=class_num) printf(输入错误 , 无此班次 !n); getch(); /从控制台读取一个字符,但不显示在屏幕上 else printf(确定修改 (Y/N)?n); scanf(%s,s); if(s0=y|s0=Y) get(i,j); /修改及增加班次 * save(); /调用保存函数 /*删除函数*/ 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 27 页,共 35 页 - - - - - - - - - C 语言课程设计报告- 27 - 8 void deletemessage() /删除班次信息 int i,h=0; char num10; system(cls); /刷屏printf(1. 删除班次 n); printf(2. 返回n); printf(请选择 (1-2):n); scanf(%d,&i); if(i=1) system(cls); /刷屏printf(请输入要删除的班次 :n); scanf(%s,num); i=findnum(num); /调用班次查询函数if(i=class_num) printf(输入错误 , 无此班次 !n); getch(); /从控制台读取一个字符,但不显示在屏幕上 else printf(确定?(y/n)n); scanf(%s,num); if(num0=y|num0=Y) for(;iclass_num-1;i+) recordsi=recordsi+1; class_num-; /班次总数减 1 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 28 页,共 35 页 - - - - - - - - - C 语言课程设计报告- 28 - 8 save(); /调用保存函数printf(删除成功 !n); getch(); /*按班次查询函数*/ int findnum(char s1) /查找班次 int i,h=0; ShowTable1(); /线框调用 1, , ,不用没次输for(i=0;iclass_num;i+) if(strcmp(s1,recordsi.num)=0) /判断字符串比较是否相等,如果符合则输出车次等信息 printf(|-|-|-|-|-|-|-|n); printf(|%10s|%5s:%-4s|%10s|%10s|%8.1f|%8d|%8d|,recordsi.num,recordsi.hour, recordsi.min,recordsi.from,recordsi.to,recordsi.hours,recordsi.max,recordsi.now); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 29 页,共 35 页 - - - - - - - - - C 语言课程设计报告- 29 - 8 h+=2; /加 2 使输出的框架合适break; ShowTable2(h); /调用框架 2 return i; /*保存函数*/ void save() /保存函数 FILE *fp1,*fp2; /文件行指针if(fp1=fopen(d:车票管理系统 .dat,wb)=NULL) /打开文件、为输出打开一个二进制文件 printf(文件打开错误 !n); exit(0); if(fp2=fopen(d:车票管理系统 0.dat,wb)=NULL) /打开文件、为输出打开一个二进制文件 printf(文件打开错误 !n); exit(0); fwrite(&class_num,sizeof(int),1,fp2); /写入文件信息fwrite(records,sizeof(CLASS),class_num,fp