c语言车票管理系统实验报告
车票管理系统课程设计报告

车票管理系统课程设计报告车票管理系统课程设计报告车票管理系统一目的通过课程设计,加深对《C语言程序设计》和《数据结构》课程所学知识的理解,熟练掌握和巩固C语言的基本知识和语法规范,包括:数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);库函数应用等;复杂任务功能分解方法(自顶向下逐步求精、模块化设计、信息隐藏等),熟练掌握和巩固三种基本的数据结构(线性结构、树形结构、图形结构)的逻辑结构、存储结构以及相关运算和应用。
学会编制结构清晰、风格良好、数据结构适当的C语言程序,从而具备利用计算机编程分析解决综合性实际问题的初步能力二需求分析1、首先本演示程序要实现录入班次信息的功能,并且要用文件来保存这些信息,还可以不定时的增加班次数据。
2、需要浏览班次信息是可以一次性输出当前的班次状况,并且要从实际考虑,若当前系统时间已经超过了某班次的发车时间,则要显示“此班已发出”的提示信息。
3、此程序既为车票管理系统,就要实现查询路线、售票、退票等功能。
当使用查询路线功能时,要分两种情况:按班次号查询和按终点站查询。
若使用售票功能,则只有在查询出已定票人数小于额定载量且当前系统时间小于发车时间时才能售票,并且要自动跟新已售票人数。
退票要输入退票的班次,当本班车尚未出发时才能退票,也要自动更新已售票人次。
4、演示程序以用户和计算机的对话方式执行,即在计算机的屏幕上显示“提示信息”下,用户根据自己的意愿自行操作,每次测试完毕,新增加的班次信息要保存在data.txt文件中。
三概要设计1、本程序各个模块的功能及调用关系:(1)主程序模块main()函数:车票管理系统课程设计报告此主程序的主要目的是用来调用读取文件函数、功能菜单函数以及保存文件信息函数。
(2)文件读入与保存函数read()、save()以及功能菜单MainMenu()函数:这三个函数的主要目的是为了读取文件,保存文件和为用户创造一个功能菜单以便于用户的操作。
车票管理系统实验报告(电子)

二○一三~二○一四学年第二学期车票管理系统实验报告物理与电子工程学院课程名称:数据结构班级:学号:姓名:二○一四年六月(1)题目:车票管理系统(2)系统功能模块结构图(3)各模块的功能1.信息输入模块即录入班次信息:完成班次信息的输入功能,输入信息包括班次、发车时间、起点站、终点站、行车时间、额定载量、已定票人数等;2.信息浏览模块即浏览班次信息:完成已录入信息的显示;3.信息查询模块即查询班次信息:完成班次信息的查询,查询时对应有按班次查询和按终点站查询两种方式;4.售票和退票模块:完成车票的购买和退订的功能;5.菜单选择模块即主菜单:完成用户命令的接收,此模块也是车票管理系统的入口,用户所要进行的各种操作均需在此模块中进行选择并进而调用其他模块实现相应的功能。
(4)数据结构设计及用法说明头文件,一个名TICKET的结构体进行定义:typedef struct ticket //用typedef定义结构体为TICKET{int num; //班次char starttime[10]; //发车时间char begin[21]; //起始站char end[21]; //终点站float lasttime; //行车时间int CarryNumber; //额定载量int SellNumber; //已定票人数struct ticket *next; //结点的指针域}TICKET,*Ticket; //结构体类型指针然后对各调用函数进行定义:void InsertTicket() //录入班次void FileRead() //班次信息文件读入void Keep() //保存数据void ScanTicket() //浏览信息void ScanTicket() //浏览信息void SearchbyNum() //按班次查询班次void SearchbyEnd() //按终点站查询班次void Buyticket() //预定车票void ReturnTicket() //退订车票int GetHour(char *s) //获取班次小时int GetMinute(char *s) //获取班次分钟void exit() //退出该系统最后定义main()函数,利用函数调用,实现程序的各种功能。
车票管理系统实习报告

一、实习背景随着社会经济的快速发展,人们的出行需求日益增加,车票管理系统作为现代化交通工具的重要组成部分,其重要性不言而喻。
为了提高车票管理效率,减少人工操作带来的不便,我国各大交通部门纷纷研发和实施车票管理系统。
本人在实习期间,有幸参与了某汽车站车票管理系统的设计与开发,以下为实习报告。
二、实习目的1. 熟悉车票管理系统的基本概念、设计原则和开发流程。
2. 掌握C语言编程技术,提高编程能力。
3. 了解数据库技术,提高数据库应用能力。
4. 培养团队协作和沟通能力。
三、实习内容1. 系统需求分析在实习初期,我首先对车票管理系统进行了需求分析。
通过对汽车站售票业务的了解,我发现车票管理系统应具备以下功能:(1)车次信息管理:录入、修改、删除车次信息,包括车次号、发车时间、起点站、终点站、行车时间、额定载客量等。
(2)票务信息管理:录入、修改、删除票务信息,包括车票号、票价、座位号、乘客姓名、联系方式等。
(3)售票查询:根据车次、时间、站点等信息查询车票信息。
(4)售票操作:进行售票、退票、改签等操作。
(5)统计报表:生成售票统计报表,包括车次售票情况、票价统计、售票员业绩等。
2. 系统设计在需求分析的基础上,我进行了系统设计。
系统采用模块化设计,主要包括以下模块:(1)数据模块:负责数据的存储、检索和更新。
(2)功能模块:实现售票、查询、统计等功能。
(3)界面模块:提供用户界面,方便用户进行操作。
3. 系统实现在系统实现阶段,我主要使用C语言进行编程,并结合数据库技术实现系统功能。
具体如下:(1)数据模块:采用关系型数据库MySQL存储数据,设计数据库表结构,实现数据的增删改查。
(2)功能模块:编写售票、查询、统计等功能模块的代码,实现系统功能。
(3)界面模块:使用C语言中的图形界面库,如GTK+等,设计用户界面。
4. 系统测试与优化在系统开发完成后,我对系统进行了测试和优化。
主要测试内容包括:(1)功能测试:验证系统功能是否满足需求。
火车票管理系统——C语言程序设计实训报告

题 目: 学生成绩管理系统院 系: 信息科技学院专 业: 计算机科学与技术姓 名: 何荣荣学 号: 1751200204指导教师: 王小琼日 期: 2018年6月28日桂林电子科技大学信息科技学院前 言课程设计环节是应用型本科院校非常重要的一个教学环节,是学完一门课后应用本课知识及以前的知识积累而进行的综合性、开放性的训练。
通过课程设计,不仅能够使学生得到系统的技能训练,巩固和加强所学得专业理论知识,而且能够培养学生工程意识、创新能力、团队精神等综合素质,培养学生的设计能力和解决实际问题的能力。
C语言由于其强大的功能,丰富的表达能力,高效的代码,良好的移植性和灵活性,自1972年问世以来,经久不衰,即使现在出现了面向对象的程序设计方法和开发工具,但它仍然是人们学习程序设计的首选语言,用它训练和提高编程技术,以及开发应用程序等。
我们通过《C语言程序设计》这门课程的学习,已经能编写解决小问题的程序,对程序的开发也有了初步的认识,还掌握了C 语言的基本语法,这一过程确确实实令我们感到欣喜,有点计算机可以完成自我任务的成就感。
但是,对于程序设计而言,学习C 的步伐不应该停留于此。
我们最终的目的应该是掌握开发大型综合程序的方法,即遵循软件工程的开发步骤和结构化程序设计思想,用C 语言开发出解决复杂问题的大型综合程序。
可是对于多数学生来说,学习了C语言后,除了应付各种考试之外,别无它用,对Turbo C语言丰富的函数知之甚少,加上DOS环境所限,因而对C语言兴趣不大,也感到C语言比较难以掌握。
本实训就是为了让学生在学完C语言后进一步了解C语言的知识,掌握C语言在软件开发方面的使用方法,希望通过此次实训,不仅能提高学生学习C语言的兴趣,更为今后学习其它专业知识及开发程序打下坚实的基础。
本指导书中有些内容借鉴了互联网上相关程序的设计思想,在此对相关者表示衷心的感谢。
由于时间、经验及水平的原因,不当、不足之处,请大家提出宝贵意见。
课程设计报告_车票管理系统

湖南工业大学课程设计(实训)资料学院计算机学院2018-2019 学年第 1 学期课程名称面向过程程序设计(C语言)课程设计指导教师xxx 学生姓名xxx 专业班级计算机类xxx 学号xxx题目车票管理系统起止日期2019 年12 月23 日~2019 年 1 月 2 日目录清单课程设计(实训)任务书学院:计算机学院学生姓名:xxx 专业班级:xxx课程名称:面向过程程序设计(C语言)课程设计设计题目:车票管理系统完成期限:自2018 年12 月23 日至2019 年 1 月 2 日共1周指导教师(签字):年月日系(教研室)主任(签字):年月日课程设计(实训)报告课程名称:面向过程程序设计(C语言)课程设计题目:车票管理系统起止日期:2018 年12 月23 日至2019 年1 月2 日学院计算机学院学生姓名xxx班级计算机类xxx学号xxx成绩指导教师(签字)2019 年1 月目录1 课题简介 (5)1.1系统简介 (5)1.2开发环境及开发工具 (5)2 问题分析 (6)2.1需求分析 (6)2.2问题分析 (7)2.3系统中涉及到的相关算法 (8)3 系统设计 (10)3.1系统功能设计 (10)3.2系统的功能分析 (12)4 系统的实现 (13)4.1系统主函数设计 (13)4.2录入和增加班次模块 (14)4.3查询和浏览模块 (18)4.4售退票模块 (23)5 系统测试 (27)5.1软件测试 (27)5.2系统有效性 (27)6 设计总结 (27)参考文献 (28)1 课题简介1.1系统简介通过这次系统开发的经历,通过查询各种书籍以及网上视频去学会怎样灵活地去运用C语言设计编写一些小功能函数,并且结合课上所学的的知识,将呆板的文字知识变成实际的动手能力,通过编写课程设计,去体会逻辑思维和设计算法能力的重要性,并且要知道编写代码应该思路清晰,格式整齐,简单易懂为主。
我也需要去发现所学知识中的漏洞,并且及时翻找资料完善不足以提高自身水平、完善自身。
车票管理系统C语言课程设计报告实验报告

.东华理工大学C语言课程设计题目名称车票管理系统程序设计姓名刘韬学号201520150133班级1521501指导教师徐猛华编写日期2016年1月目录第一章、设计任务需求分析 (2)1、目标;2、要求;3、学生成绩管理系统;第二章、总体设计 (2)1、采用的基本思想及完成过程;2、遇到的问题和解决的方法;3、程序设的流程图;第三章、所负责部分详细设计 (4)1、程序所需函数;2、明确分工各组员所负责的模块;3,函数功能及参数的意义;4、模块功能说明;第四章、程序运行结果测试 (7)1、录入班车信息;2、浏览班车信息;3、按班次查询;4、按终点站查询;5、订票;6、退票;7、退出系统;第五章、结论与心得 (10)第六章、致谢 (10)第七章、附录 (11)正文第一章、设计任务需求分析1、目标:(1)掌握和利用C语言进行程序设计的能力。
(2)理解和运用结构化程序设计的思想和方法。
(3)学会调试一个较长程序的基本方法。
(4)掌握书写程序设计开发文档的能力(书写课程设计报告)。
2、要求:该系统需实现的功能有(1)录入班次信息(信息用文件保存),可不定时地增加班次数据。
(2)浏览班次信息,可显示出所有班次当前状总(如果当前系统时间超过了某班次的发车时间,则显示“此班已发出”的提示信息)。
(3)查询路线:可按班次号查询,可按终点站查询(4)售票和退票功能:A:当查询出已定票人数小于额定载量且当前系统时间小于发车时间时才能售票,自动更新已售票人数。
B:退票时,输入退票的班次,当本班车未发出时才能退票,自动更新已售票人数。
3、学生成绩管理系统:程序执行出一个有好的人机界面,供人合理的操作,完成浏览查询、退订票以及自动更新的功能。
第二章、总体设计1、采用的基本思路:改程序设计采用的思路是利用结构体存放车辆信息,车辆的信息有操作人员录入,录入完成后,通过菜单的提示进行相应的操作,不同的模块采用不同的算法进行管理,主要采用的头文件有:#include<stdio.h>,#include<stdlib.h>,#include<string.h>,# define size 4。
c语言车票系统报告

struct information *next;
}INFORMATION,*PINF;
void main() /*主函数*/
{
switch(i){ case 1:{
Insert(); printf("\n按任意键回主菜单......\n");getchar();getchar();}break;/*录入*/
case 2:{Scan();printf("\n按任意键回主菜单......\n");getchar();getchar();}break;/*浏览*/
case 3:SearchMenu();break;/*查询*/
case 4:Buyticket();break;/*订票*/
case 5:TicketDelete();break;/*退票*/
p=p->next;
}
fclose(fp);
}
void Scan()
{
PINF p=head->next;
printf("\n各班次信息如下:\n");
printf("\n班次号\t出发时间\t起点\t终点\t行车时间额定载客量已订票人数\n");
printf("____________________________________________________________________________\n");
void Save_In(); //把数据重新保存到文件中
void exit(); //退出该系统
input();
int i=0;
while(i!=6)
车票管理系统实习报告

实习报告一、实习背景及目的近期,我参加了一次车票管理系统的实习,该系统采用C语言进行编程,旨在提高我对计算机编程能力的掌握,以及对于实际项目开发的认知。
本次实习的主要目的是熟悉C语言编程,了解软件开发流程,掌握项目管理工具,提高团队协作能力。
二、实习内容在本次实习中,我主要负责以下几个方面的工作:1. 录入班次信息:根据实际情况,录入发车班次的相关信息,包括班次号、发车时间、起点站、终点站、行车时间、额定载客量等,并将信息保存至文件。
2. 浏览班次信息:显示出所有班次的当前状态,如果当前系统时间超过了某班次的发车时间,则显示此班已发出”的提示信息。
3. 查询路线:可按班次号查询,也可按终点站查询。
4. 编写相关文档:包括需求分析、设计报告等。
三、实习过程及收获1. 实习过程:(1)首先,我们对车票管理系统进行了需求分析,明确了系统的功能要求,包括录入班次信息、浏览班次信息、查询路线等。
(2)然后,我们进行了系统设计,确定了采用文本菜单界面,以及C语言进行编程。
(3)接着,我们进行了编码实现,分别实现了录入班次信息、浏览班次信息、查询路线等功能。
(4)最后,我们对代码进行了调试和优化,确保系统的稳定性和性能。
2. 实习收获:(1)通过本次实习,我深入了解了C语言编程,掌握了C语言的基本语法和编程技巧。
(2)我学会了如何使用项目管理工具,如版本控制系统、代码调试工具等。
(3)我提高了团队协作能力,学会了如何与团队成员进行有效沟通,分工合作,共同完成项目。
(4)我了解了软件开发流程,包括需求分析、设计、编码、测试等环节,为今后从事软件开发工作奠定了基础。
四、实习总结通过本次实习,我对C语言编程有了更深入的了解,掌握了项目管理工具的使用,提高了团队协作能力。
同时,我也认识到了自己在编程能力和团队协作方面的不足,今后将继续努力,提高自己的综合素质,为更好地投身于软件开发工作做好准备。
C语言编写车票管理系统(2024)

引言概述:车票管理系统是一种用于管理车票信息,包括购票、退票、查询票务等功能的软件系统。
本文将以C语言为编程语言,详细阐述如何编写一个车票管理系统。
该系统可以方便管理者对车票信息进行操作,同时也提供给用户便捷的购票和查询功能。
正文内容:一、数据库设计1.1数据库表的建立1.2表中字段的设置1.3数据库的连接与操作1.4数据库的备份与恢复1.5数据库的维护与优化二、用户管理2.1用户注册2.2用户登录2.3用户信息修改2.4用户权限管理2.5用户数据备份与恢复三、车票管理3.1车票添加3.2车票查询3.3车票修改3.4车票删除3.5车票排序和筛选四、订单管理4.1订单4.2订单查询4.3订单修改4.4订单删除4.5订单统计和报表五、支付管理5.1支付方式的选择5.2支付状态的更新5.3支付记录的查询5.4退款管理5.5支付安全性保证总结:通过本文详细的阐述,我们了解到了如何使用C语言编写一个车票管理系统。
在系统的开发过程中,数据库设计、用户管理、车票管理、订单管理和支付管理等方面都需要详细考虑。
通过对每个模块的分析和设计,能够使系统更加高效、安全和易用。
在实际开发中,我们还需要根据具体需求进行对系统的优化和完善,保证系统能够满足用户的需求,并且能够稳定运行。
希望本文对您有所帮助,能够指导您在C语言中编写车票管理系统的开发过程。
引言概述:C语言编写车票管理系统是一个涉及到计算机编程技术的项目,旨在帮助车票销售员和管理员更好地管理和控制车票的销售与出票过程。
本文将详细介绍该系统的设计和实现过程,包括系统的功能需求、系统的结构设计、关键代码的实现以及系统的优化与改进。
正文内容:1.功能需求车票管理系统的功能需求包括但不限于:车票销售、车票查询、座位管理、车票退换等。
具体的系统功能要求涉及到对车票信息的录入、查询、修改和删除,车票的座位分配和座位的查询,以及对车票销售记录的统计和报表等功能。
1.1车票销售功能实现车票销售功能是车票管理系统的核心功能之一。
C语言 车票管理设计报告

车票管理系统设计报告目录一.需求分析:1.1设计题目内容以及要求1.2设计要求1.3设计目的二.概要设计2.1系统总体设计框架2.2系统功能模块图2.3数据库设计三.车票管理模块流程图分析3.1功能说明3.2售票流程图3.2退票流程图四. 任务分工4.1 任务成员4.2 任务分工五. 主要程序1.声明部分2.主函数3.程序初始界面功能选择4.信息的录入5.信息的浏览6.信息的查询7.订退票8.程序的退出六.心得体会一. 理论与实践的结合二. 合作的重要性三. 资料和网络资源的利用七.参考文献:车票管理系统一.需求分析:1.1设计题目内容以及要求:一车站每天有n个发车班次,每个班次都有一班次号(1、2、3…n),固定的发车时间,固定的路线(起始站、终点站),大致的行车时间,固定的额定载客量。
如班次发车时间起点站终点站行车时间额定载量已定票人数1 8:00 西安广汉2 45 302 6:30 西安成都 0.5 40 403 7:00 西安成都 0.5 40 204 10:00 西安成都 0.5 40 2…1.2设计要求:(1)录入班次信息(信息用文件保存),可不定时地增加班次数据(2)浏览班次信息,可显示出所有班次当前状总(如果当前系统时间超过了某班次的发车时间,则显示“此班已发出”的提示信息)。
(3)查询路线:可按班次号查询 ,可按终点站查询(4)售票和退票功能A:当查询出已定票人数小于额定载量且当前系统时间小于发车时间时才能售票,自动更新已售票人数B:退票时,输入退票的班次,当本班车未发出时才能退票,自动更新已售票人数1.3设计目的:通过本次课程设计,提高学生综合应用所学知识和查阅相关资料的能力。
二.概要设计:2.1系统总体设计框架:2.1.1“车票服务”模块:售票服务:当查询出已定票人数小于额定载量且当前系统时间小于发车时间时才能售票,自动更新已售票人数退票服务:输入退票的班次,当本班车未发出时才能退票,自动更新已售票人数2.1.2“信息查询”模块:按班次查询:根据相应的班次对所有班次进行查询按终点站查询:根据所需的终点站对所有班次进行所需查询2.1.3“车次管理”模块:添加车次信息:可不定时地增加班次数据删除车次信息:可以删除任一车次信息修改车次信息:可以修改车次信息表中的任何信息2.1.4“系统管理”模块:用户系统登录(根据需求可以增设):输入正确的用户名和密码登录后,才可以登录系统判断发车情况:系统自动将系统时间和发车时间相比较2.2系统功能模块图:模块框架图2.3数据库设计:系统设计的工作完成后,接下来的工作就是数据库分析和设计了,数据库的建立是整个数据库应用系统开发系统中,数据库设计的好坏将直接影响到整个系统的效率和实现。
火车票系统(C语言)【报告版-带截图】

一、课题内容和要求设计目标:设计一个火车票务管理系统,用C语言实现。
对该系统的要求如下:需求描述:1.系统功能(1)火车时刻信息录入。
包括车次、日期、起点、终点、开车时间、到达时间、票价。
数据存入数据文件hchsk.dat或hchsk.txt中。
(2)火车时刻信息查询。
按照车次查询按终点查询按起点查询按终点和日期查询(3)统计按终点统计每日的车次数按起点统计每日的车次数2. 系统主界面应有以下功能选项录入火车时刻信息查询火车时刻信息统计火车车次退出注:建议用VC环境开发用户界面。
结果形式:提交程序设计报告和可演示的系统软件二、需求分析系统主界面应有以下功能选项录入火车时刻信息查询火车时刻信息统计火车车次退出(1)火车时刻信息录入。
包括车次、日期、起点、终点、开车时间、到达时间、票价。
数据存入数据文件hchsk.dat或hchsk.txt中。
(2)火车时刻信息查询。
按照车次查询按终点查询按起点查询按终点和日期查询(3)统计按终点统计每日的车次数按起点统计每日的车次数在该部分中叙述每个模块的功能要求三、概要设计/* 头文件 */#include<stdio.h>#include<string.h>#include<stdlib.h>/* 函数声明 */int MENU(); //菜单模块void INPUT(); //输入模块void SEARCH(); //查询模块void SELECT(); //统计模块void WRITE(); //文件记录模块void PRINT(); //打印模块void READ(); //文件读取模块void WRONG(); //纠错模块/* 宏定义 */#define N 1000 //最大列车组数#define Print " %s%13s%10s%10s%12s%15s%11s\n",T[i].code,T[i].data,T[i].lp,T[i] .ap,T[i].lt,T[i].at,T[i].price //输出记录格式#define Wrong "\n ! ! ! ! ! ! ! ! ! ! ! 输入错误,请重新输入 ! ! ! ! ! ! ! ! ! ! ! \n"#define GeShi " 车次日期起点终点开车时间到达时间票价\n" //输出表头/* 结构定义 */struct Train{char code[10]; //车次char data[10]; //日期char lp[10]; //left place 起点char ap[10]; //arrive place 终点char lt[10]; //left time 开车时间char at[10]; //arrive time 到达时间char price[10]; // 票价}T[N];/* 全局变量 */int i=0; //输入计数器int n=0; //合计计数器char l[20]; //纠错空间四、详细设计/* 头文件 */#include<stdio.h>#include<string.h>#include<stdlib.h>/* 函数声明 */int MENU(); //菜单模块void INPUT(); //输入模块void SEARCH(); //查询模块void SELECT(); //统计模块void WRITE(); //文件记录模块void PRINT(); //打印模块void READ(); //文件读取模块void WRONG(); //纠错模块/* 宏定义 */#define N 1000 //最大列车组数#define Print " %s%13s%10s%10s%12s%15s%11s\n",T[i].code,T[i].data,T[i].lp,T[i].ap ,T[i].lt,T[i].at,T[i].price //输出记录格式#define Wrong "\n ! ! ! ! ! ! ! ! ! ! ! 输入错误,请重新输入 ! ! ! ! ! ! ! ! ! ! ! \n"#define GeShi " 车次日期起点终点开车时间到达时间票价\n" //输出表头/* 结构定义 */struct Train{char code[10]; //车次char data[10]; //日期char lp[10]; //left place 起点char ap[10]; //arrive place 终点char lt[10]; //left time 开车时间char at[10]; //arrive time 到达时间char price[10]; // 票价}T[N];/* 全局变量 */int i=0; //输入计数器int n=0; //合计计数器char l[20]; //纠错空间/////////////////////////////////////////////////////////////////////int main() {int x;do{x=MENU();switch(x){case 1:INPUT(); break;case 2:SEARCH(); break;case 3:SELECT(); break;case 4:printf("\n---------------------------------------");printf("\n 正在退出,请按任意键退出");printf("\n\n 阿哈工作室出品B09020424");printf("\n---------------------------------------\n");break;default:WRONG(); break;}}while(x!=4);return 0;}/////////////////////////////////////////////////////////////////////int MENU(){int choice;system("cls"); //借鉴而来的清屏语句,好用!printf("\n----------------------------------------------\n");printf("----------------------------------------------\n");printf(" --- ---\n");printf(" --- 欢迎进入火车票务管理系统---\n");printf(" --- ---\n");printf("----------------------------------------------\n");printf("----------------------------------------------\n\n");printf(" \n -------------- 请输入选项-------------\n");printf(" 1.录入火车时刻信息\n");printf(" 2.查询火车时刻信息\n");printf(" 3.统计火车车次\n");printf(" 4.退出\n");printf("-----------------------------------------\n");printf(" 请选择: ");scanf("%d",&choice);gets(l);return choice;}///////////////////////////////////////////////////////////////////// //////////////////输入模块void INPUT(){char ch;do{system("cls"); //借鉴而来的清屏语句,好用!printf("\n\n ====================欢迎进入录入火车时刻信息界面====================\n");do{printf("\n 新建列车信息?(y/n) ");scanf("%c",&ch);gets(l);if(ch!='y'&&ch!='n')WRONG ();}while(ch!='y'&&ch!='n');if(ch=='n')break;printf(" ---------------------");printf("\n 录入第%d趟列车信息\n",n+1);printf(" 车次 ");gets(T[i].code);printf(" 日期 ");gets(T[i].data);printf(" 起点 ");gets(T[i].lp);printf(" 终点 ");gets(T[i].ap);printf(" 开车时间 ");gets(T[i].lt);printf(" 到达时间 ");gets(T[i].at);printf(" 票价 ");gets(T[i].price);n++;i++;}while(i<N);WRITE();system("cls"); //借鉴而来的清屏语句,好用!printf("\n");printf("--------------------------------\n");printf(" 系统记载的列车信息如下\n");printf("--------------------------------\n\n");PRINT();}///////////////////////////////////////////////////////////////////// //////////////////文件记录模块void WRITE(){FILE *fp,*fp1;if((fp=fopen("hchsk.txt","w"))==NULL){printf("无法创建文件!\n\n");getchar();return;}if((fp1=fopen("N.txt","w"))==NULL)//用于记录共几趟车{printf("无法创建文件!\n");getchar();return;}for(i=0;i<n;i++)if(fwrite(&T[i],sizeof(struct Train),1,fp)==0)printf("写入数据失败!\n\n");fprintf(fp1,"%d",n);fclose(fp);fclose(fp1);}///////////////////////////////////////////////////////////////////// //////////////////文件读取模块void READ(){FILE *fp,*fp1;if((fp=fopen("hchsk.txt","r"))==NULL){printf("无法打开文件\n");getchar();return;}if((fp1=fopen("N.txt","r"))==NULL){printf("无法打开文件!\n\n");getchar();return;}fscanf(fp1,"%d",&n);fclose(fp1);for(i=0;i<n;i++){fread(&T[i],sizeof(struct Train),1,fp);}fclose(fp);}///////////////////////////////////////////////////////////////////// //////////////////打印模块void PRINT(){char ch[10];READ();printf("\n===================================================================== ======\n");printf(GeShi);for(i=0;i<n;i++)printf(Print);printf("===========================================================================\n");printf("\n 按任意键返回上级菜单: ");gets(ch);}///////////////////////////////////////////////////////////////////// //////////////////查询模块void SEARCH(){char name1[10];//车次char name2[10];//终点char name3[10];//起点char name41[10];//终点char name42[10];//日期char choice;int j;int k;do{system("cls"); //借鉴而来的清屏语句,好用!printf("\n\n ====================欢迎进入查询火车时刻信息界面====================\n");printf("\n ++++++++++++++++++请选择查找方式++++++++++++++++++\n\n");printf(" ----1.显示所有列车信息 2.按车次查询3.按终点查询----\n");printf(" -----4.按起点查询 5.按终点和日期查询6.返回上级菜单----\n");printf("\n 请选择: ");scanf("%d",&j);gets(l);switch(j){case 1:PRINT();break;case 2:printf("\n --- 请输入车次 ---: ");gets(name1);break;case 3:printf("\n --- 请输入终点 ---: ");gets(name2);break;case 4:printf("\n --- 请输入起点 ---: ");gets(name3);break;case 5:printf("\n --- 请输入终点 ---: ");gets(name41);printf("\n --- 请输入日期 ---: ");gets(name42);break;case 6:break;default:WRONG ();break;}READ();k=0;if(j==2){for(i=0;i<n;i++){if(strcmp(T[i].code,name1)==0){printf("\n 按车次查找列车信息成功!\n");printf("\n===================================================================== ======\n");printf(GeShi);break;}}for(i=0;i<n;i++){if(strcmp(T[i].code,name1)==0){printf(Print);k++;}}printf("===================================================================== ======\n");printf("\n --> 共查询到 %d 趟列车信息,请按任意键返回 <-- ",k);gets(l);}if(j==3){for(i=0;i<n;i++){if(strcmp(T[i].ap,name2)==0){printf("\n 按终点查找列车信息成功!\n");printf("\n===================================================================== ======\n");printf(GeShi);break;}}for(i=0;i<n;i++){if(strcmp(T[i].ap,name2)==0){printf(Print);k++;}}printf("===========================================================================\n");printf("\n --> 共查询到 %d 趟列车信息,请按任意键返回 <-- ",k);gets(l);}if(j==4){for(i=0;i<n;i++){if(strcmp(T[i].lp,name3)==0){printf("\n 按起点查找列车信息成功!\n");printf("\n===================================================================== ======\n");printf(GeShi);break;}}for(i=0;i<n;i++){if(strcmp(T[i].lp,name3)==0){printf(Print);k++;}}printf("===================================================================== ======\n");printf("\n --> 共查询到 %d 趟列车信息,请按任意键返回 <-- ",k);gets(l);}if(j==5){for(i=0;i<n;i++){if(strcmp(T[i].ap,name41)==0&&strcmp(T[i].data,name42)==0){printf("\n 按终点和日期查找列车信息成功!\n");printf("\n===================================================================== ======\n");printf(GeShi);break;}}for(i=0;i<n;i++){if(strcmp(T[i].ap,name41)==0&&strcmp(T[i].data,name42)==0){printf(Print);k++;}}printf("===================================================================== ======\n");printf("\n --> 共查询到 %d 趟列车信息,请按任意键返回 <-- ",k);gets(l);}do{system("cls"); //借鉴而来的清屏语句,好用!printf("\n\n -->继续查找(1),返回主菜单(2)<-- ");choice=getchar();gets(l);if(choice!='1'&&choice!='2')WRONG ();}while(choice!='1'&&choice!='2');}while(choice!='2');}///////////////////////////////////////////////////////////////////// //////////////////统计模块void SELECT(){char name1[10];//终点char name2[10];//起点int t,k;char choice;do{system("cls");printf("\n\n ====================欢迎进入统计火车车次界面====================\n");printf("\n -|- -|- -|- -|- 请选择统计方式 -|- -|- -|- -|- \n\n");printf(" 1.按终点统计每日的车次数\n");printf(" 2.按起点统计每日的车次数\n");printf("\n 请选择: ");scanf("%d",&t);gets(l);switch(t){case 1:printf(" 请输入终点: ");gets(name1);break;case 2:printf(" 请输入起点: ");gets(name2);break;default:WRONG();break;}READ();if(t==1){k=0;for(i=0;i<n;i++){if(strcmp(T[i].lp,name1)==0){printf("\n 按终点统计列车信息成功!\n");break;}}for(i=0;i<n;i++){if(strcmp(T[i].lp,name1)==0)k++;}printf("\n --> 共查询到 %d 趟列车信息,请按任意键返回 <-- ",k);gets(l);}if(t==2){k=0;for(i=0;i<n;i++){if(strcmp(T[i].lp,name2)==0){printf("\n 按起点统计列车信息成功!\n");break;}}for(i=0;i<n;i++){if(strcmp(T[i].lp,name2)==0)k++;}printf("\n --> 共查询到 %d 趟列车信息,请按任意键返回 <-- ",k);gets(l);}do{system("cls"); //借鉴而来的清屏语句,好用!printf("\n\n -->继续统计(1),返回主菜单(2)<-- ");choice=getchar();gets(l);if(choice!='1'&&choice!='2')WRONG ();}while(choice!='1'&&choice!='2');}while(choice!='2');}///////////////////////////////////////////////////////////////////// //////////////////纠错模块void WRONG(){system("cls"); //借鉴而来的清屏语句,好用!printf("\n\n ---> ! ! ! 输入错误,请按任意键返回 ! ! ! <--- ");gets(l);}五、测试数据及其结果分析1、菜单模块-选择界面:1、菜单模块-退出2、输入模块2、输入完毕3、查询模块3、查询模块-23、查询模块-43、查询模块-询问3、查询模块-失败4、统计模块-14、统计模块-2 4、统计模块询问出错提示六、调试过程中的问题实验中遇到的问题不少,有以下几点:1.本来一开始做程序时候想使用模块化的,但因外部变量总要声明的缘故被取消。
C语言程序设计实验报告

else
if(strcmp(s,"t1")==0)
j=0;
else
if(strcmp(s,"t2")==0)
j=1;
else
if(strcmp(s,"t3")==0)
j=2;
else
printf("很抱歉,没有你所要查询的班次\n");
{"t1",5},{"t2",28},{"t3",35},
{"t1",51},{"t2",48},{"t3",35},
{"t1",45},{"t2",28},{"t3",11}};
/*定义数组结构体,并输入原始班次和票数*/
void banci()//定义查询班次的函数
{
int j,c;
char s[32];
printf("请输入日期,1月");
scanf("%d",&c);
printf("请输入班次");
scanf("%s",s);
if(c>11)
j=-1;
else
if(strcmp(s,"t1")==0)
j=0;
else
if(strcmp(s,"t2")==0)
j=1;
else
if(strcmp(s,"t3")==0)
printf(" 2,火车订票\n");
火车票管理系统实训报告

#### 一、实训背景随着我国铁路事业的快速发展,火车票的销售和管理已经成为铁路运营的重要组成部分。
为了提高火车票的销售效率,降低运营成本,提高旅客购票体验,我们开展了火车票管理系统的实训项目。
本项目旨在通过C语言程序设计,实现火车票的在线查询、预订、支付等功能,为学生提供一个实践平台,提高学生的编程能力和系统设计能力。
#### 二、实训目标1. 掌握C语言的基本语法和编程技巧。
2. 熟悉面向对象程序设计方法,掌握UML类图、时序图等设计工具。
3. 学习数据库设计,实现火车票信息的存储和查询。
4. 了解网络编程,实现火车票在线预订和支付功能。
5. 培养团队协作能力和项目实施能力。
#### 三、实训内容1. 需求分析:分析火车票管理系统的功能需求,包括用户查询、预订、支付、退票等。
2. 系统设计:根据需求分析,设计火车票管理系统的架构,包括前端界面、后端数据库、网络通信等。
3. 数据库设计:设计火车票数据库,包括用户信息表、车次信息表、订单信息表等。
4. 程序编写:使用C语言编写火车票管理系统的各个模块,包括登录模块、查询模块、预订模块、支付模块等。
5. 系统测试:对火车票管理系统进行功能测试、性能测试和安全性测试。
#### 四、实训过程1. 需求分析阶段:我们通过查阅相关资料、与铁路部门沟通,明确了火车票管理系统的功能需求。
主要包括用户查询车次、预订车票、支付车票、退票等功能。
2. 系统设计阶段:我们采用UML类图、时序图等工具,对火车票管理系统进行了详细设计。
前端界面采用C语言编写,后端数据库采用MySQL,网络通信采用TCP/IP协议。
3. 数据库设计阶段:我们根据需求分析,设计了火车票数据库,包括用户信息表、车次信息表、订单信息表等。
数据库设计遵循规范化原则,保证数据的一致性和完整性。
4. 程序编写阶段:我们按照系统设计,使用C语言编写了火车票管理系统的各个模块。
在编写过程中,我们遵循模块化、可重用原则,提高代码质量。
车票管理系统-报告

南京晓庄学院数学与信息技术学院数据结构课程设计报告题目:车票管理系统所在班级:学生姓名:指导教师:研究起止日期:二○一二年三月至二○一二年五月数据结构课程设计实验报告班级姓名学号实验课程数据结构实验名称车票管理系统实验成绩实验日期2012、4、3 任课教师一、目的(本次课程设计所涉及并要求掌握的知识点。
)1.通过课程设计,加深对《C语言程序设计》和《数据结构》课程所学知识的理解,熟练掌握和巩固C语言的基本知识和语法规范,包括:数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);库函数应用等;复杂任务功能分解方法(自顶向下逐步求精、模块化设计、信息隐藏等),熟练掌握和巩固三种基本的数据结构(线性结构、树形结构、图形结构)的逻辑结构、存储结构以及相关运算和应用。
2.学会编制结构清晰、风格良好、数据结构适当的C语言程序,从而具备利用计算机编程分析解决综合性实际问题的初步能力3.便于车站管理部门对汽车班次信息的统计和管理,提高车站部门的工作效率,能够更好的为市民服务,同时也便于乘客了解相关的信息,方便出行。
二、使用环境(本次上机实践所使用的平台和相关软件。
)操作系统:Windows XP或者Windows 7集成开发环境:Microsoft Visual C++三、内容与设计思想(1 .设计思路 2 .主要数据结构 3 .主要代码结构 4 .主要代码段分析)1、设计思路(1)能够增加汽车班次信息,如班次号,发车时间,起点站,终点站,行车时间,额载量,已订票人数等。
(2)能够显示班次信息,显示信息总和(如果已发出站的要要显示“已经开出”)。
(3)查询路线:可按班次号查询 ,可按终点站查询(4)售票功能:当查询出已定票人数小于额定载量且当前系统时间小于发车时间才能售票,自动更新已售票人数。
(5)退票功能:输入退票的班次,当本班车未发出时才能退票,自动更新已售票人数总体设计框架:班次信息增加功能流程图:增加班次信息 显示班次信息查询班次信息售票退票保存车次信息退出系统按班次查询按终点站查询车票管理系统按Y继续增加班次信息增加输入错误增加班次输入发车时间输入行车时间输入起点站输入额定载量查询班次信息流程图:2、主要数据结构以及代码结构(1)主程序模块main ()函数:用来调用读取文件函数、功能菜单函数以及保存文件信息函数。
(完整版)C语言集中上机实验报告 - 车票管理系统

C语言集中上机报告院系:计算机学院班级:xxx姓名:xxx合作者:无指导教师:xxx2009年6月11日目录一.概述 (3)二.总体方案设计 (3)三.详细设计 (5)四.程序的调试与运行结果说明 (8)五.课程设计总结 (10)六.后记 (10)七.附录 (11)参考文献 (20)一概述1.课程设计的目的熟练掌握C语言的应用及特点;掌握函数声明、定义和使用的方法;熟练掌握C语言中的对文件进行操作的基本方法;熟练掌握结构体的使用方法;掌握链表的基本操作。
2.课程设计的要求1.要求利用C语言面向过程的编程思想完成系统设计;2.突出C语言的函数特征,以多个函数实现每一个子功能;3.画出功能模块图;4.进行简单的界面设计,能够实现友好交互;5.具有清晰的程序流程图和数据结构的详细定义;6.源码格式规范,要有适当的注释,使程序容易阅读。
3.课程设计的主要设计思想这次设计的车票管理系统,实现了对车票的实时管理,功能包括录入、增加班次信息(信息用文件保存),浏览班次信息,查询路线以及售票和退票功能。
主要使用了链表实现了数据的保存和修改,同时使用文件相关函数对文件进行同步。
二总体方案设计这个程序比较简单,主要分为菜单,浏览/查询,售票/退票,和增加数据四个部分。
采用了链表作为存储的方式,并实现了结构体与文件的同步修改,已经具备了题目要求的所有功能。
这个程序由我个人完成。
在编程过程中遇到的关键问题有系统时间的获取与显示,从文件中读取链表,处理每天班次的人数刷新问题,以及如何提高代码的复用率等。
程序整体框图如下:三详细设计程序结构以及各函数的具体功能main.c:void main();程序入口,对文件进行打开和初始化后进入菜单void menu(struct banci *head,struct banci *nw,FILE *data,unsigned int serial);显示菜单,从主函数中得到各种信息,通过switch语句调用其他功能operate.c:void update(struct banci *ut,FILE *data);更新结构体中的各个数据,主要对日期进行处理,当班次更新后重新写入日期并将已订票人数清零void displaybanci(struct banci *head, unsigned short mode);作为整个程序中唯一的数据显示函数,显示班次信息,有3个显示模式struct banci * addbanci(struct banci * tail, FILE *data,unsigned serial); 增加一条新的班次信息到链表末尾,并写入文件void searchbanci(struct banci * head);查找班次信息,可按班次号查询或按终点站查询void piao(struct banci *head,FILE *data);实现售票和退票功能,并自动更新文件operate.h声明结构体和各个自定义函数部分函数的算法分析1. 对文件进行打开和初始化。
C语言课程设计车票实验报告 精华

一实验目的进一步加深、巩固所学专业课程(《C语言程序设计》)的基本理论知识,理论联系实际,进一步培养自己综合分析问题和解决问题的能力。
掌握运用C语言独立地编写、调试应用程序和进行其它相关设计的技能。
二课程设计的内容对车票信息(包括班次、发车时间、行车时间、起点站终点站、额定人数及已订票人数)进行管理,包括车票的信息录入、浏览、查询、修改、删除、订票、退出.将车票信息进行录入,信息内容包含:(1)车票的班次(2)起点站到终点站(3)发车时间(4)行车时间(5)额定人数(6)已订票人数。
要求用C语言编写一个简单的车票管理系统,可进行录入、查询、修改和浏览等功能。
学习相关开发工具和应用软件的开发流程,熟悉系统建设过程。
三课程设计的要求与数据题目三:实现车票管理系统任务:自学C语言中有关链表及外部文件的内容,设计出车票管理系统。
要求如下所述:一车站每天有n个发车班次,每个班次都有一个班次号(1、2、3…n),固定的发车时间,固定的路线(起始站、终点站),大致的行车时间,固定的额定载客量。
如:班次发车时间起点站终点站行车时间额定载量已定票人数1 8:00 郫县广汉2 45 302 6:30 郫县成都0.5 40 403 7:00 郫县成都0.5 40 204 10:00 郫县成都0.5 40 2 …根据以上情况设计出相应的车票管理系统,具体功能如下:* 录入功能录入班次信息(信息用文件保存),可不定时地增加班次数据* 浏览功能浏览班次信息,可显示出所有班次当前状总(如果当前系统时间超过了某班次的发车时间,则显示“此班已发出”的提示信息)。
* 查询功能查询路线:可按班次号查询,可按终点站查询。
* 售票功能当查询出已定票人数小于额定载量且当前系统时间小于发车时间时才能售票,自动更新已售票人数。
* 退票功能退票时,输入退票的班次,当本班车未发出时才能退票,自动更新已售票人数。
四课程设计应完成的工作(1)编写算法;(2)算法测试,并有具体的测试结果和结果分析;(3)撰写课程设计报告。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《车票管理系统》程序设计实验报告物理与电子工程学院专业:电子信息科学与技术班级:电子132学号:1319200055姓名:黎杰华一、题目题目:车票管理系统二、系统功能模块结构图三、各模块功能1.录入班次信息2.显示班次信息3.查询班次:①按班次查询;②按终点查询;4.售票(1)售票成功(当车票有剩余,且车未发出时)(2)班次不存在(3)票已售完(当座位数小于等于已定票人数)(4)车已发出5.退票退票成功(输入的班次号存在且当前时间比发车时间早)退票失败(班次不存在或当前时间比发车时间晚)6.保存班次信息7.系统退出四、数据结构设计及用法说明使用数组五、画出各函数流程图六、实验结果主菜单车次信息录入显示班次信息查询班次信息售票退票文件保存七、体会这次实验让我们收获良多,这让我们得到了很多经验,又认识了很多的不足,在c语言这方面我们还需要很多的历练!我想通过这次的练习,我们都有所进展,我们现在需要的就是实践。
完成了任务我们还是很有成就感的,也增添了我们对c语言的热情!经过这几周,我们也比较满意自己的表现。
在此过程中我们翻阅很多的书籍,学到了很多课堂上没有的东西。
有好多知识是之前不知道的,现在了解了差不多了。
但是对于时间函数和文件保存,我还是不太清楚。
在文件读取上有不足。
这几周编程的过程实在是繁琐,但是在编出程序之后,是相当有成就感的,在今后我们知道,凡事都要有自己的见解,我们可以借鉴别人,但别人是不可复制的,我们要明白只有理解才是自己的,只有通过自己实践我们才能深刻的认识到这一点!八、参考文献[1] 谭浩强.C程序设计(第四版) 清华大学出版社[2] 严蔚敏数据结构人民邮电出版社九、附录#include<stdio.h>#include<time.h>#include<string.h>#include<dos.h>#include<stdlib.h>#include<ctype.h>#define Max 100//最大贮赌量#define null 0static int H=0;struct Times{//定义时钟int hour;int min;int sec;};struct Buses{//定义汽车int number;struct Times time;char start[30];char end[30];float time_cost;int carry_number;int prices;int booK_number;};struct Buses bus[Max];time_t now = time(0);tm *tnow =localtime(&now);void load();//载入车次信息void lu(void);//声明录入函数void chaxun(struct Buses bus[]);//声明查询路线函数void save(struct Buses bus[]);//声明保存函数int caidan();//声明菜单录数void liulan(struct Buses bus[]);//声明浏览函数void tuipiao(struct Buses bus[]);//退票void shoupiao(struct Buses bus[]);//声明售票函数void xitongtuichu();//声明退出函数//工具函数struct Buses copy(struct Buses b1,struct Buses b2);//赋值int compare_time(struct Times t1,struct Times t2);//时间比较函数int compare_systime(struct Buses bus,tm *T);//比较发车时间与当前系统时间的函数void print(struct Buses bus);//声明输入出函数int number_search(struct Buses bus[],int num);//声明按班次查询函数int end_search(struct Buses bus,char ends[]);//声明按终点查询函数int compare_systime(struct Buses bus,tm *T){//与系统时间的比较函数if(bus.time.hour>=T->tm_hour){return 1;if(bus.time.min>=T->tm_min){return 1;if(bus.time.sec>T->tm_sec)return 1;else return 0;}return 0;}return 0;}struct Buses copy(struct Buses b1,struct Buses b2){b1.booK_number=b2.booK_number;b1.carry_number=b2.carry_number;strcpy(b1.end,b2.end);b1.number=b2.number;strcpy(b1.start,b2.start);b1.time.hour=b2.time.hour;b1.time.min=b2.time.min;b1.time.sec=b2.time.sec;b1.time_cost=b2.time_cost;return b1;}//浏览车次函数//void liulan(struct Buses bus[]){getchar();int i;printf("\n\t\t\t\t车辆时刻表\n");printf("\t\t\t===========================\n");printf("\t班次发车时间起点站终点站行车时间额定载量票价已定票人数");printf("\n\t--------------------------------------------------------------\n");for(i=0;i<H;i++){print(bus[i]);}printf("\t--------------------------------------------------------------\n");printf("\t\t\t\t%d条记录!\n",H);printf("\t按任意键返回主菜单...");getchar();}//比较时间大小函数//int compare_time(struct Times t1,struct Times t2){if(t1.hour>t2.hour){return 1;if(t1.min>=t2.min){return 1;if(t1.sec>=t2.sec)return 1;else return 0;}return 0;}return 0;}//按班次查询//int number_search(struct Buses bus[],int n){int i;for(i=0;i<H;i++){if(bus[i].number==n)return i;}return -1;}//按终点站查询//int end_search(struct Buses bus,char ends[]){if(strcmp(bus.end,ends)==0)return 1;elsereturn -1;}//输出函数//void print(struct Buses bus){if(!compare_systime(bus,tnow))printf("\t%-6d%-2d:%-2d:%-2d%6s%8s%8.1f%4d%10d%10d(已发出)\n",bus.number,bus.time.hour,bus.time.min,bus.time.sec,bus.start,bus.end,bus.time_cost,bus.carry_number,bus.price s,bus.booK_number);elseprintf("\t%-6d%-2d:%-2d:%-2d%6s%8s%8.1f%4d%10d%10d\n",bus.number,bus.tim e.hour,bus.time.min,bus.time.sec,bus.start,bus.end,bus.time_cost,bus.carry_number,bus.price s,bus.booK_number);}int caidan(){int a;//以下是输出的菜单图案//printf("\n\n");printf("\t\t 车票管理系统\n");printf("\t\t ***************** (%d年%d月%d日)\n",1900+tnow->tm_year,tnow->tm_mon+1,tnow->tm_mday);printf("\t\t||==================================||\n");printf("\t\t|| 菜单||\n");printf("\t\t|| (1) 录入班次信息||\n");printf("\t\t|| (2) 显示班次信息||\n");printf("\t\t|| (3) 查询班次信息||\n");printf("\t\t|| (4) 售票||\n");printf("\t\t|| (5) 退票||\n");printf("\t\t|| (6) 保存车次信息||\n");printf("\t\t|| (0) 退出系统||\n");printf("\n\t\t请选择(0-6):");scanf("%d",&a);return(a);}//保存函数//void save(struct Buses bus[]){getchar();FILE *fp;int i;if((fp=fopen("Bus_system","wb"))==null){printf("不能打开文件\n");return;}for(i=0;i<H;i++)if(fwrite(&bus[i],sizeof(struct Buses),1,fp)!=1)printf("文件保存出错!\n");fclose(fp);printf("文件保存成功!");getchar();}//录入函数//void lu(){int i=H,f=1;char flag='Y';while(toupper(flag)=='Y'){printf("\n\t\t车次信息录入\n请输入车的班次:");scanf("%d",&bus[i].number);getchar();while(number_search(bus,bus[i].number)>=0){printf("你输入的班次已存在请重新输入!:");scanf("%d",&bus[i].number);getchar();}printf("请输入时间如:(20:30:00) :");scanf("%d:%d:%d",&bus[i].time.hour,&bus[i].time.min,&bus[i].time.sec); getchar();printf("请输入车的起点站:");scanf("%s",bus[i].start);getchar();printf("请输入车的终点站:");scanf("%s",bus[i].end);getchar();printf("请输入行车时间:");scanf("%f",&bus[i].time_cost);getchar();printf("请输入车的额定载量:");scanf("%d",&bus[i].carry_number);printf("请输入票价:");scanf("%d",&bus[i].prices);getchar();bus[i].booK_number=0;H++;i++;printf("信息录入成功!\n");printf("继续录入请按(Y),返回主菜单按任意键...");flag=getchar();}}//查询路线函数//void chaxun(struct Buses bus[]){int a,i=0;int m=0;char flag='Y';while(toupper(flag)=='Y'){char end[30];printf("\n按班次查询请按1\n终点站查询请按2\n请选择(1-2):");scanf("%d",&a);while(a!=1&&a!=2){printf("注意只能选择1或2!\n请重新输入:");scanf("%d",&a);getchar();}switch(a){case 1:{printf("请输入车次号:");scanf("%d",&m);getchar();i=number_search(bus,m);if(i>=0){printf("\n\t\t\t\t车辆时刻表\n");printf("\t\t\t**************************\n");printf("\t班次发车时间起点站终点站行车时间额定载量票价已定票人数");printf("\n\t--------------------------------------------------------------\n");print(bus[i]);printf("\t--------------------------------------------------------------\n");}elseprintf("\n\t\t\t没有你要查找的记录!\n");}break;case 2:{printf("请输入车的终点站:");scanf("%s",end);getchar();while(i<H){if((m=end_search(bus[i],end))==1){printf("\n\t\t\t\t车辆时刻表\n");printf("\t\t\t**************************\n");printf("\t班次发车时间起点站终点站行车时间额定载量票价已定票人数");printf("\n\t--------------------------------------------------------------\n");print(bus[i]);i++;}break;}for(i;i<H;i++){if(end_search(bus[i],end)==1)print(bus[i]);}if(m==1)printf("\t--------------------------------------------------------------\n");}for(i=0;i<H;i++){if(end_search(bus[i],end)!=1)printf("\n\t\t\t没有到该站的车!\n");break;}}printf("\t\t继续查找请按(Y),返回主菜单按任意键...");flag=getchar();}}//售票函数//void shoupiao(struct Buses bus[]){int i,n;char flag='Y';while(toupper(flag)=='Y'){printf("\n\t\t\t\t车辆时刻表\n");printf("\t\t\t************************** 当前时间(%d:%d:%d)\n",tnow->tm_hour,tnow->tm_min,tnow->tm_sec);printf("\t班次发车时间起点站终点站行车时间额定载量票价已定票人数");printf("\n\t--------------------------------------------------------------\n");for(int j=0;j<H;j++){print(bus[j]);}printf("\t--------------------------------------------------------------\n");printf("\t请输入车的班次:");scanf("%d",&i);n=number_search(bus,i);getchar();if(n>=0&&bus[n].carry_number>bus[n].booK_number&&compare_systime(bus[n],t now)){printf("\n\t\t\t售票成功!\n");bus[n].booK_number++;printf("\t班次发车时间起点站终点站行车时间额定载量票价已定票人数");printf("\n\t--------------------------------------------------------------\n");print(bus[n]);printf("\n\t--------------------------------------------------------------\n");}if(bus[n].carry_number<=bus[n].booK_number)printf("\n\t\t\t该次车的票已售完!\n");else if(n<0)printf("\n\t\t\t该次车不存在!\n");else if(!compare_systime(bus[n],tnow))printf("\n\t\t\t该次已发出!\n");printf("\t\t继续售票请按(Y),返回主菜单按任意键...");flag=getchar();}}//退票函数//void tuipiao(struct Buses bus[]){int n,i;char flag='Y';while(toupper(flag)=='Y'){printf("\n\n请输入车次:");scanf("%d",&n);getchar();i=number_search(bus,n);if(i>=0&&compare_systime(bus[i],tnow)){bus[i].booK_number--;printf("\n\t\t\t退票成功!\n");}else if(i<0)printf("\n\t\t\t该车次不存在!\n");else if(!compare_systime(bus[n],tnow))printf("\n\t\t\t车已发出不能退票!\n");printf("\t继续退票请按(Y),返回主菜单按任意键...");flag=getchar();}}//载入车次信息函数//void load(){ FILE *fp;int i=0;while((fp=fopen("Bus_system","rb"))==NULL) //以rb形式打开文件return;for(i;!feof(fp);i++,H++){if(fread(&bus[H],sizeof(struct Buses),1,fp)!=1){}if(feof(fp)){fclose(fp);return;}}fclose(fp);}//退出函数//void xitongtuichu(){getchar();char flag=null;printf("\n\n\t\t你确定要退出并保存信息吗?(Y/N)");flag=getchar();if(toupper(flag)=='Y'){save(bus);exit(0);}else if(toupper(flag)=='N')exit(0);elsereturn;}//主函数//void main(){while(1){switch(caidan()){case 1: lu(); break;case 2: liulan(bus); break;case 3: chaxun(bus); break;case 4: shoupiao(bus); break;case 5: tuipiao(bus); break;case 6: save(bus); break;case 0: xitongtuichu(); break;}}}。