版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、CC 语言课程设计语言课程设计报告报告题目:车票管理系统目目 录录一、课程设计目的和意义一、课程设计目的和意义.1二、总体设计思路(功能模块图)二、总体设计思路(功能模块图).2三、详细设计三、详细设计.31、模块功能介绍.32、程序清单.33、系统运行结果.17四、课程设计总结体会四、课程设计总结体会.23五、教师评语五、教师评语.24计算机程序设计基础 C 语言课程设计0一、课程设计目的和意义一、课程设计目的和意义通过课程设计的实践环节的教学,可以加深学生对课堂所学基础知识的掌握与理解,提高学生对所学内容的综合运用能力;同时也可以通过查询相关资料,培养学生自学能力、接受新知识的能力,提高学
2、习兴趣;增强学生程序设计能力,掌握编程技巧,并可培养学生实际上机调试程序的能力。 “理论与实践”相结合,使学生得到很好的锻炼,为以后学习、工作打下坚实的基础。每个学生需要独立完成教师安排的设计题目或由学生自拟实际的设计题目,但自拟自拟题目须经指导教师批准方可生效。计算机程序设计基础 C 语言课程设计1二、总体设计思路(功能模块图)二、总体设计思路(功能模块图)系统功能模块图: 车票管理系统1调用录入班次6调用退票 调用主菜单选项 输入选择后分别5调用售票4调用增加班次2调用显示所有班次3调用查询班次结束 完成功能后返回主菜单9调用退出8调用删除班次7调用修改班次计算机程序设计基础 C 语言课程
3、设计2三、详细设计三、详细设计1、模块功能介绍、模块功能介绍车票管理系统的功能为1. 录入班次2. 显示所有班次3. 查询班次4. 增加班次 5. 售票6. 退票7. 修改班次8. 删除班次9. 退出车票管理系统软件的功能模块有:(1)提供菜单界面,方便用户对程序个功能进行选择,选择要实现的功能按enter键进入该功能。(2)接受用户输入的功能项,按enter键结束输入并将进入该系统,其需要的结果显示出来,方便用户查看。(3)完成每次功能,可保存用户的修改的信息,及时更新文件信息。下次查询时内容为最新信息。实时的信息更新对比等。一个名TICKET的结构体进行定义,包括num10 hour3;
4、min3 from10; to10; hours max; now;等结构体成员。然后对调用函数进行定义。int system_time()系统时间,void NewMessage() 新纪录录入函数,void ShowTable1() void ShowTable2(int i) 线框调用1和2不用没次输,void Display()显示所有函数,void add()增加记录,void save() 保存函数,void save()保存函数,void load() 按班次查询函数,void search() 查询函数,void change()修改函数,void quit()退出函数,voi
5、d 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:车票管理系统0中。最后定义main()函数,利用函数调用,实现程序的各种功能。将其放在系统文件d:车票管理
6、系统0中。2、程序清单、程序清单#include /宏定义函数#include /串操作及内存操作函数计算机程序设计基础 C 语言课程设计3#include /调用系统函数#include /时间库函数 #include /输入输出函数#define N 1000 /宏定义多条记录typedef struct TICKET /定义新结构体 TICKETchar num10; /车次编号char hour3; /时间, ,小时char min3; /分钟char from10; /起始站char to10; /终点站float hours; /车程实际时间int max; /最大车载容量int
7、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(); / 保存函数void load(); / 按班次查询函数void search(); /查询函数v
8、oid 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=*欢迎使
9、用车票查询系统*,n*MENU 功能菜单*,n 1. 录入班次 ,n 2. 显示所有班次 ,n 3. 查询班次 ,n 4. 增加班次 ,计算机程序设计基础 C 语言课程设计4n 5. 售票 ,n 6. 退票 ,n 7. 修改班次 ,n 8. 删除班次 ,n 9. 退出 ; /*主函数*/void main()system(cls); /刷屏while(1) /菜单函数循环switch(menu_select() /菜单函数*case 1: NewMessage();break; /新纪录*录入函数*case 2: Display();break; / /显示case 3: search();b
10、reak; /查找函数*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
11、 09);/改变颜色 for(i=0;i11;i+)printf(%s,menui); /输出菜单各项) i=0; while(c9) /判断是否是 1 到 9 的命令printf(n); /输出换行 printf(*); printf(n 请选择(1-9):);计算机程序设计基础 C 语言课程设计5scanf(%s,s);c=atoi(s); /atoi 将字符串转换成一个整数值 /输出菜单面return c; /返回请求 /*录入函数*/void NewMessage() /*录入函数* int i=0,j=5,h; /char s5;FILE *fp; /定义文件型指针变量system(
12、cls); /刷屏if(fp=fopen(d:车票管理系统 0.dat,rb)!=NULL) /fopen 打开文件 printf(车票信息已经存在请选择增加功能!n);printf(任意输入则返回菜单n);scanf(%s,s);i=1; /通过是 1if(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!=
13、i;) /循环输出printf(请输入班次:n);scanf(%s,recordsi.num);for(h=0;hi;h+)if(strcmp(recordsh.num,recordsi.num)=0) /判断字符串比较是否相等, , 待比较的字符串 printf(输入错误!该班次已存在!n);break; /返回计算机程序设计基础 C 语言课程设计6get(i,j); /修改及增加班次*j=5;save(); /调用保存函数/*显示所有函数*/void Display() /显示所有函数int i,j;system(cls); /刷屏load(); / 调用按班次查询函数ShowTable1
14、(); /线框调用 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,recordsi.min,recordsi.from,recordsi.to,recordsi.hours,recordsi.max,recordsi.now);else printf(|%10s| 已发车 |%10s|%
15、10s|%8.1f|%8d|%8d|,recordsi.num,recordsi.from,recordsi.to,recordsi.hours,recordsi.max,recordsi.now);ShowTable2(j); /线框调用 2printf(n 按任意键继续.n);getch(); /从控制台读取一个字符,但不显示在屏幕上/*打印表头*/void ShowTable1() /线框调用 1, , ,不用没次输int i=2;system(cls); /刷屏printf(*MESSAGE 车程信息计算机程序设计基础 C 语言课程设计7*n);printf(n|-|-|-|-|-|-
16、|-|n); printf(n| 班次 | 发车时间 | 起点站 | 终点站 |行车时间|额定载量| 已售票 |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(); / 调
17、用按班次查询函数switch(i) /多分枝选择语句 case 1: printf(请输入要查询的班次:n); /s1 为班次scanf(%s,s1);find(s1,s2); /调用查找函数 222 2 break;case 2:printf(请输入要查询终点站:n); /s2 为终点站scanf(%s,s2);find(s1,s2); /调用查找函数 222 2 break; case 3: break;default : printf(输入错误!n);break;printf(按任意键继续.n);getch(); /从控制台读取一个字符,但不显示在屏幕上/*查询函数计算机程序设计基础 C
18、 语言课程设计822*/void find(char s1,char s2)int i,h=0,m;ShowTable1(); /调用线框 1if(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) /判断字符串比较是否相等, , 待比较的字符串 printf(n|-|-|-|-|-|-|-|n);printf(|%10s|%5s:%-4s|%10s|%10s|%8.1f|%8d|%8d|,recordsi.num,recordsi.h
19、our,recordsi.min,recordsi.from,recordsi.to,recordsi.hours,recordsi.max,recordsi.now);h+=2;if(m=1)break;ShowTable2(h); /调用线框 2if(h=0)printf(要查找的班次不存在!n);/*增加函数*/void add() / /增加记录int i,j=5;load(); / 调用按班次查询函数system(cls); /刷屏printf(1. 增加班次n);printf(2. 返回n);printf(请选择(1-2)n);scanf(%d,&i);if(i=1)sys
20、tem(cls); /刷屏printf(1. 请输入要增加的班次:n);scanf(%s,recordsclass_num.num);计算机程序设计基础 C 语言课程设计9for(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+; /使班次数加 1save();
21、/调用保存函数/*售票函数*/void Ticketorder() /*售票函数*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):n);scanf(%s,num);for(i=0;irecordsi.now&whether(i)=1) /判断时间是否超出函数*并且*没超出最大客量recordsi.now+
22、; /使已售的暑假 1printf(通向%s 班次为%s 的票订票成功!n,recordsi.to,recordsi.num);计算机程序设计基础 C 语言课程设计10save(); /调用保存函数getch(); /从控制台读取一个字符,但不显示在屏幕上break;elseprintf(该班次已满或已发出!n);getch(); /从控制台读取一个字符,但不显示在屏幕上/*退票删除函数*/void Ticketdelete() /删除函数*int i;char num10;system(cls); /刷屏printf(1. 退票n);printf(2. 返回n);printf(请选择(1-2
23、)n:);scanf(%d,&i);if(i=1)system(cls); /刷屏load(); / 调用按班次查询函数printf(请输入要退票的班次:n);scanf(%s,num);i=findnum(num); /调用班次查询函数if(strcmp(num,recordsi.num)=0) /判断字符串比较是否相等 待比较的字符串 if(whether(i) /判断时间是否超出函数*printf(确定(Y/N)?);scanf(%s,num);if(num0=y|num0=Y) recordsi.now-; /使已售票加 1printf(退票成功!n);save(); /调用保
24、存函数getch(); /从控制台读取一个字符,但不显示在屏幕上计算机程序设计基础 C 语言课程设计11elseprintf(该班车已发出,无法退票!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);scanf(%s,num);i=findn
25、um(num); /调用班次查询函数 if(i=class_num)printf(输入错误,无此班次!n);getch(); /从控制台读取一个字符,但不显示在屏幕上elseprintf(确定修改(Y/N)?n);scanf(%s,s);if(s0=y|s0=Y)get(i,j); /修改及增加班次*save(); /调用保存函数/*删除函数*/void deletemessage() /删除班次信息计算机程序设计基础 C 语言课程设计12int i,h=0;char num10;system(cls); /刷屏printf(1. 删除班次n);printf(2. 返回n);printf(请选
26、择(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(); /从控制台读取一个字符,但不显示在屏幕上elseprintf(确定?(y/n)n);scanf(%s,num);if(num0=y|num0=Y)for(;iclass_num-1;i+) recordsi=recordsi+1;class_num-; /班次总数减 1save(); /调用保
27、存函数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) /判断字符串比较是否相计算机程序设计基础 C 语言课程设计13等,如果符合则输出车次等信息 printf(|-|-|-|-|-|-|-|n);printf(|%10s|%5s:%-4s|%10s|%10s|%8.1f|%8d|%8d|,recordsi.num,recordsi.ho
28、ur,recordsi.min,recordsi.from,recordsi.to,recordsi.hours,recordsi.max,recordsi.now);h+=2; /加 2 使输出的框架合适break;ShowTable2(h); /调用框架 2return i;/*保存函数*/void save() /保存函数FILE *fp1,*fp2; /文件行指针if(fp1=fopen(d:车票管理系统.dat,wb)=NULL) /打开文件、为输出打开一个二进制文件printf(文件打开错误!n);exit(0);if(fp2=fopen(d:车票管理系统 0.dat,wb)=NU
29、LL) /打开文件、为输出打开一个二进制文件printf(文件打开错误!n);exit(0);fwrite(&class_num,sizeof(int),1,fp2); /写入文件信息fwrite(records,sizeof(CLASS),class_num,fp1);fclose(fp1);fclose(fp2); /关闭文件/*按班次查询函数*/void load() /按班次查询函数FILE *fp1,*fp2;if(fp1=fopen(d:车票管理系统.dat,rb)=NULL)计算机程序设计基础 C 语言课程设计14system(cls); /刷屏printf(文件打开错误
30、!n);getch(); /从控制台读取一个字符,但不显示在屏幕上 exit(0);if(fp2=fopen(d:车票管理系统 0.dat,rb)=NULL)system(cls); /刷屏printf(文件打开错误!n);getch(); /从控制台读取一个字符,但不显示在屏幕上 exit(0); /退出fread(&class_num,sizeof(int),1,fp2); /读入信息fread(records,sizeof(CLASS),class_num,fp1);/读入信息fclose(fp1);fclose(fp2); /文件关闭/*退出函数*/void quit() /退
31、出函数*char s5; printf(确认退出?(Y/N)n);scanf(%s,s);if(s0=y|s0=Y)exit(0); /程序中止执行,返回调用过程.state 0-正常中止非 0-非正常/*修改及增加班次*/void get(int i,int j) / 修改及增加班次* for(;)printf(请输入发车时间(xx xx);scanf(%s%s,recordsi.hour,recordsi.min);if(atoi(recordsi.hour)=0)&(atoi(recordsi.min)=0)break;elseprintf(输入错误!n);getch(); /从
32、控制台读取一个字符,但不显示在屏幕上计算机程序设计基础 C 语言课程设计15printf(请输入起点站:n);scanf(%s,recordsi.from);printf(请输入终点站:n);scanf(%s,recordsi.to);printf(请输入行车时间:n);scanf(%f,&recordsi.hours);printf(请输入额定载量:n);scanf(%d,&recordsi.max);for(;)printf(请输入已售票数:n);scanf(%d,&recordsi.now);if(recordsi.nowtm_hourtm_hour=atoi(r
33、ecordsi.hour)&local-tm_minatoi(recordsi.min) /atoi 将字符串转换成一个整数值return 1; else return 0;3、系统运行结果、系统运行结果0 0、界面、界面计算机程序设计基础 C 语言课程设计16 图301 菜单界面如上图所示,该程序为用户提供菜单界面,用户可以对程序的各种功能进行选择,方便用户使用。选择1-9并按enter键进行操作。如选择出错,系统将提出警告,并提醒用户重新进行选择。 1 1、录入班次界面、录入班次界面 图31- 1 第一次输入时的界面图31- 2 第二次输入时的界面 如上图所示,该功能实现录入班次信
34、息。选择1按enter键进入该功能,程序提醒用户输入车次.发车时间.起始站.终点站.行车时间.额定载量.已售票数,输入完毕后按enter键将完成录入班次结果,同时程序将再次提醒用户进行新的选择。而第二次输入时提醒已经输过,不能在加。2 2、查询所有班次界面、查询所有班次界面计算机程序设计基础 C 语言课程设计17图32 字符串重新统计界面如上图所示,该功能实现显示所有班次。选择2按enter键进入该功能,程序提直接显示出信息,按enter键,程序进入菜单项,程序将再次提醒用户进行新的选择。3 3、查询班次界面、查询班次界面图 33-1 查询班次界面 图33- 2 选择查询方式的界面如上图所示,
35、该功能将实现程序运行班次的查询。选择3并按enter键将实现该功能。分班次和终点站两种方式查询。计算机程序设计基础 C 语言课程设计184 4、增加班次界面、增加班次界面图341增加功能界面图342增加前界面计算机程序设计基础 C 语言课程设计19图343增加后界面如上图所示,该功能将增加班次信息,帮助用户更新班次信息。选择 4 并按enter 键将实现该功能,再按提示输入就行。按任意键返回主菜单。5 5、售票界面、售票界面 图351 选择售票功能界面 图352 选择后的界面图353 订票时的界面如上图所示,该功能将帮助人们选择买票。选择5按enter键实现该功能,计算机程序设计基础 C 语言课程设计20按任意键关闭程序。买票程序可提示买票成功否,且自动判断是否可卖。6 6、退票界面、退票界面 36 退票时的界面 如上图所示,该功能将帮助人们选择退票。选择6按enter键实现该功能,按任意键关闭程序。退票程序可提示退票成功否,且自动判断是否可
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年亳州职业技术学院招聘博士研究生20人模拟试卷及参考答案详解(预热题)
- 2026四川广安邻水县恒圣保安服务有限公司招聘工作人员的2人笔试题库有完整答案详解
- 2026贵州遵义市播州区退役军人事务局关于招聘城镇公益性岗位人员1人的考前冲刺试卷含答案详解【培优】
- 2026年西安市第一实验学校教师招聘备考题库【达标题】附答案详解
- 2026年福建厦门市集美职业技术学校非编教师招聘1人考前冲刺密卷【典优】附答案详解
- 26秋三年级上册数学应用题考点专项练习
- 行政长官试题全收录及答案详解
- 2026年汽车主题公园疫情防控应急预案
- 病人入院跌倒风险防范
- 2026汽车配件质量技术检测与全球供应链重构潜力调研报告
- 钻井事故与复杂问题(江汉油田)
- 英语(PEP)三年级下册教师教学用书
- 工程挂靠内部合同协议
- 起重机械吊具与索具安全规程
- 国际消防安全系统规则
- 五星级酒店服务员培训
- 基金投资管理系统O32操作手册-风险控制
- 数据建模工程师招聘笔试题与参考答案(某大型集团公司)2024年
- 下水管道合同模板
- DL-T573-2021电力变压器检修导则
- 新闻采访与写作-马工程-第二章
评论
0/150
提交评论