课程设计报告-车票管理系统
车票管理系统课程设计报告

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

课程设计报告《车票管理系统》目录一、课程设计题目 (1)二、程序运行流程图 (2)三、程序设计的想法和具体思路 (3)四、参考文献 (3)附件一:设计进度 (4)附件二:源代码 (4)一、课程设计题目C++题目二十三:车票管理系统(限最多2人完成)一车站每天有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…(一)功能要求:用C/C++设计一系统,能提供下列服务:(1)录入班次信息(信息用文件保存),可不定时地增加班次数据(2)浏览班次信息,可显示出所有班次当前状总(如果当前系统时间超过了某班次的发车时间,则显示“此班已发出”的提示信息)。
(3)查询路线:可按班次号查询,可按终点站查询(4)售票和退票功能A:当查询出已定票人数小于额定载量且当前系统时间小于发车时间时才能售票,自动更新已售票人数B:退票时,输入退票的班次,当本班车未发出时才能退票,自动更新已售票人数(二)其它要求:(1)只能使用C/C++语言,源程序要有适当的注释,使程序容易阅读(2)至少采用文本菜单界面(如果能采用图形菜单界面更好)(3)学生可自动增加新功能模块(视情况可另外加分)(4)写出课程设计报告,具体要求见相关说明文档二、程序运行流程图三、运行结果 1:2:四、参考文献李春葆,曾平,刘斌,《C++语言程序设计题典》,北京,清华大学出版社,2003年五、总结通过两周多的编程,我们对已学的专业知识有了比较深刻的认识,同时在查找资料或和其他同学交流的过程中,发现了一些问题,所以在设计的时候,遇到了很多困难。
在对所学的有限知识的理解和掌握下,在查找资料以及大家共同努力学习和讨论后终于把课题做完。
车票管理系统程序设计报告

车票管理系统程序设计报告一、引言车票管理系统是一个用于管理车票信息的软件系统。
该系统旨在提供方便快捷的购票、查询、退票等功能,以满足用户的出行需求。
本报告将详细介绍车票管理系统的设计思路、功能模块、数据结构以及程序实现等内容。
二、需求分析1. 功能需求车票管理系统需要具备以下功能:- 用户注册与登录:用户可以通过注册账号并登录系统,以便进行购票、查询等操作。
- 车票购买:用户可以根据出发地、目的地、日期等条件查询车票,并进行购买。
- 车票查询:用户可以根据出发地、目的地、日期等条件查询车票的余票情况。
- 车票退票:用户可以在购票后一定时间内申请退票,并进行退款。
- 车票管理:管理员可以对车票信息进行管理,包括添加、修改、删除等操作。
2. 性能需求车票管理系统需要满足以下性能需求:- 响应速度:系统应能够在用户购票、查询等操作时快速响应,提供流畅的用户体验。
- 安全性:系统应具备一定的安全机制,保护用户的个人信息和交易数据不被泄露或篡改。
- 扩展性:系统应具备一定的扩展性,方便后续对功能进行升级和扩展。
三、系统设计1. 架构设计车票管理系统采用三层架构设计,包括表示层、业务逻辑层和数据访问层。
表示层负责与用户进行交互,接收用户的请求并展示相应的界面;业务逻辑层负责处理用户的请求,进行业务逻辑的处理;数据访问层负责与数据库进行交互,进行数据的读取和写入操作。
2. 功能模块设计车票管理系统包括以下功能模块:- 用户模块:负责用户的注册、登录、个人信息管理等操作。
- 车票模块:负责车票的购买、查询、退票等操作。
- 管理员模块:负责管理员对车票信息的管理操作。
3. 数据结构设计车票管理系统的数据结构包括以下表:- 用户表:保存用户的基本信息,包括用户名、密码、手机号等。
- 车票表:保存车票的详细信息,包括车次、出发地、目的地、日期、余票数量等。
- 订单表:保存用户购票的订单信息,包括用户ID、车票ID、购票时间等。
c语言课程设计车票管理系统

c语言课程设计车票管理系统一、教学目标本课程的教学目标是使学生掌握C语言编程的基本技能,能够运用C语言设计简单的车票管理系统。
具体目标如下:1.知识目标:–掌握C语言的基本语法和数据结构;–理解车票管理系统的业务逻辑和需求;–了解软件开发的基本流程。
2.技能目标:–能够使用C语言编写程序,实现车票管理系统的基本功能;–能够进行程序调试和优化,提高程序的性能和可维护性;–能够运用面向对象编程思想,设计合理的软件架构。
3.情感态度价值观目标:–培养学生的编程兴趣,增强自信心;–培养学生团队合作精神和自主学习能力;–培养学生对软件行业的热爱和对编程事业的敬业精神。
二、教学内容本课程的教学内容主要包括C语言基础知识、车票管理系统的需求分析、系统设计、编码实现和测试等。
具体安排如下:1.C语言基础知识:–数据类型、变量和常量;–运算符和表达式;–控制语句;–函数和数组。
2.车票管理系统的需求分析:–理解车票管理系统的业务流程;–分析系统需求,确定功能模块。
3.系统设计:–设计系统的数据结构和算法;–设计系统的界面和交互逻辑。
4.编码实现:–使用C语言编写程序,实现车票管理系统的基本功能;–进行程序调试和优化。
5.测试与总结:–对程序进行测试,确保功能正确;–总结学习过程,提高编程能力。
三、教学方法本课程采用讲授法、案例分析法和实验法等多种教学方法,以激发学生的学习兴趣和主动性。
1.讲授法:通过讲解C语言的基本语法和车票管理系统的业务逻辑,使学生掌握相关知识。
2.案例分析法:分析实际案例,使学生更好地理解车票管理系统的需求和设计。
3.实验法:让学生动手编写程序,培养实际操作能力和编程技能。
四、教学资源本课程所需的教学资源包括:1.教材:《C程序设计语言》或《C语言入门教程》;2.参考书:《C语言编程思想》或《C语言实例教程》;3.多媒体资料:教学PPT、视频教程等;4.实验设备:计算机、网络环境等。
以上教学资源将有助于实现本课程的教学目标,提高学生的编程能力,为学生的职业发展奠定基础。
车票管理系统uml课程设计

车票管理系统 uml课程设计一、课程目标知识目标:1. 让学生理解UML的基本概念,掌握UML图的绘制方法。
2. 使学生掌握车票管理系统的需求分析、系统设计及系统实现的基本步骤。
3. 帮助学生了解数据库设计原则,并能运用UML图对车票管理系统进行数据库设计。
技能目标:1. 培养学生运用UML图进行系统分析和设计的能力。
2. 提高学生解决实际问题的能力,能将UML理论知识运用到车票管理系统课程设计中。
3. 培养学生团队协作、沟通表达的能力,能在小组合作中发挥各自优势,共同完成课程设计。
情感态度价值观目标:1. 培养学生对软件工程及UML建模的兴趣,激发学生主动学习的热情。
2. 培养学生严谨、认真的工作态度,养成良好的编程习惯。
3. 增强学生的自信心和责任感,使其在面对复杂问题时,能够积极寻求解决方案,勇于克服困难。
课程性质:本课程设计旨在让学生结合已学的UML知识,设计并实现一个实际的车票管理系统,提高学生的实际操作能力和解决问题的能力。
学生特点:学生具备一定的UML基础,具备基本的编程能力和数据库知识,但可能缺乏将理论知识运用到实际项目中的经验。
教学要求:教师应注重引导学生独立思考,培养学生的动手实践能力,以项目为导向,让学生在完成课程设计的过程中,掌握UML相关知识,提高解决实际问题的能力。
通过小组合作,培养学生的团队协作和沟通能力。
同时,注重对学生的激励和鼓励,使其在课程设计中不断成长和进步。
二、教学内容1. UML基础知识回顾:类图、用例图、顺序图、活动图等基本概念和绘制方法。
2. 车票管理系统需求分析:介绍需求分析的重要性,讲解如何从用户角度进行需求收集,并以车票管理系统为例,分析系统功能需求。
3. 系统设计:基于UML类图、用例图进行系统设计,包括模块划分、类的设计、接口的设计等。
4. 数据库设计:运用UML图进行数据库ER图的绘制,介绍数据库设计原则,指导学生完成车票管理系统的数据库设计。
课程设计报告_车票管理系统

湖南工业大学课程设计(实训)资料学院计算机学院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语言课程设计车票管理系统车票管理系统是一种用于管理车票信息的软件系统,它可以方便地记录和查询车票的相关信息,包括车票的购买、使用和退款等操作。
本文将详细介绍车票管理系统的设计与实现。
一、系统需求分析车票管理系统的主要功能包括:车票信息的录入与管理、车票的购买与退款、车票的查询与打印等。
具体需求如下:1. 车票信息的录入与管理:系统管理员可以录入车票的基本信息,包括车次、出发地、目的地、出发时间、到达时间、票价等。
2. 车票的购买与退款:乘客可以通过系统购买车票,并可以根据需要进行退款操作。
购买车票时需要提供乘客的相关信息,包括姓名、身份证号、联系电话等。
3. 车票的查询与打印:乘客可以通过系统查询车票的相关信息,并可以选择打印车票。
二、系统设计与实现1. 数据库设计:为了存储车票的相关信息,需要设计一个车票信息表,包括车次、出发地、目的地、出发时间、到达时间、票价等字段。
同时,还需要设计一个乘客信息表,包括姓名、身份证号、联系电话等字段。
2. 界面设计:车票管理系统的界面应该简洁明了,方便用户操作。
可以采用图形界面的形式,通过按钮、输入框等控件与用户进行交互。
3. 功能实现:a. 车票信息的录入与管理:系统管理员可以通过系统界面进行车票信息的录入与管理,包括新增车票、修改车票、删除车票等操作。
b. 车票的购买与退款:乘客可以通过系统界面选择购买车票或退款,购买车票时需要填写相关信息,并将购买信息保存到数据库中,退款时需要输入订单号进行操作。
c. 车票的查询与打印:乘客可以通过系统界面进行车票的查询,可以根据车次、出发地、目的地、出发时间等条件进行筛选,并可以选择打印车票。
三、系统运行流程1. 系统管理员登录系统,进入车票管理界面。
2. 管理员可以进行车票信息的录入与管理,包括新增、修改和删除车票。
3. 乘客通过系统界面选择购买车票,填写相关信息,系统将购买信息保存到数据库中,并生成订单号。
4. 乘客可以通过系统界面进行车票的查询,可以根据条件筛选需要的车票。
c语言课程设计车票管理系统

c语言课程设计车票管理系统车票管理系统是一个用于管理车票信息的软件系统。
它可以记录并管理车票的购买、退票、查询等操作,实现对车票信息的全面管理和统计。
本文将从需求分析、系统设计和实现三个方面来介绍车票管理系统的开发过程。
一、需求分析车票管理系统主要面向客户和管理员两类用户。
客户可以通过系统购买车票、查询车票信息,管理员可以管理车票信息、处理退票等操作。
1. 用户管理车票管理系统需要实现用户的注册和登录功能,以保证用户购票时的身份认证和信息安全。
2. 车次管理系统需要记录车次的信息,包括车次编号、起始站点、终点站点、发车时间、到达时间、票价等。
管理员可以对车次信息进行增删改查操作。
3. 车票管理系统需要记录车票的信息,包括车票编号、车次编号、座位号、购票人、购票时间等。
客户可以通过系统购买车票,管理员可以对车票信息进行增删改查操作。
4. 车票查询客户可以根据起始站点、终点站点和发车时间等条件来查询车票信息,以便选择合适的车次和座位。
5. 车票购买客户可以选择合适的车次和座位进行购票,系统需要实时更新车票信息,避免重复售票或超售情况的发生。
6. 车票退票客户可以通过系统进行退票操作,系统需要实时更新车票信息,并进行相应的退款处理。
二、系统设计基于需求分析的结果,我们可以设计出如下的系统架构:1. 用户管理模块包括用户注册、登录、信息修改等功能。
2. 车次管理模块包括车次信息的增删改查功能。
3. 车票管理模块包括车票信息的增删改查功能。
4. 车票查询模块根据用户输入的条件查询车票信息并展示给用户。
5. 车票购买模块根据用户选择的车次和座位进行购票,并更新车票信息。
6. 车票退票模块根据用户选择的车票进行退票,并更新车票信息和退款处理。
三、系统实现车票管理系统的实现主要依赖于数据库和编程语言。
我们可以选择使用MySQL作为数据库,使用C语言进行系统的开发。
1. 数据库设计根据需求分析的结果,我们可以设计出如下的数据库表结构:- 用户表:包括用户ID、用户名、密码等字段。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1课程设计报告(C语言程序设计)题目二级学院车票信息管理系统的设计与实现数学与统计专班业级信息与计算科学112010102学生姓名郭双红学号11201010209指导教师陈媛时间2013061921 需求分析1.1 课程设计题目要求设计并实现一个车票销售管理系统,系统实现以下功能。
(1)系统以菜单方式工作:要求界面清晰,友好,美观,易用。
(2)车次信息导入功能:要求可从磁盘文件导入车次信息。
(3)查询功能:可按班车号、起点站或终点站查找班车信息,并将查询结果输出。
(4)售票功能:只有当某班车已定票人数小于额定载量,且当前系统时间小于发车时间才能售票。
售票显示收费信息;售票后更新已定票人数,并实现信息存盘。
(5)退票功能:输入退票的班次,当本班车未发出时才能退票。
退票后自动更新已定票人数,并实现信息存盘。
(6)信息浏览功能:能输出所有班车的信息;要求输出格式清晰、美观。
(7)信息修改:要求能修改某一指定班次的信息,并在修改后将信息存盘。
1.2 系统功能需求(1)系统以菜单方式工作:要求界面清晰,友好,美观,易用。
(2)车次信息导入功能:要求可从磁盘文件导入车次信息。
(3)查询功能:可按班车号、起点站或终点站查找班车信息,并将查询结果输出。
(4)售票功能:只有当某班车已定票人数小于额定载量,且当前系统时间小于发车时间才能售票。
售票显示收费信息;售票后更新已定票人数,并实现信息存盘。
(5)退票功能:输入退票的班次,当本班车未发出时才能退票。
退票后自动更新已定票人数,并实现信息存盘。
(6)信息浏览功能:能输出所有班车的信息;要求输出格式清晰、美观。
(7)信息修改:要求能修改某一指定班次的信息,并在修改后将信息存盘。
2 系统设计2.1 功能模块图本系统的功能模块图如图2-1所示。
3图 2-1 系统功能模块图2.2 数据定义本系统的数据可采用结构数组来处理。
可必要的设置全局变量。
因此本系统的主要数 据定义如下:struct Train_Ticket {char cn[15]; //车量班次 char lp[15]; //left place 起点 char ap[15]; //arrive place 终点 char lt[15]; //left time 发车时间 char rt[15]; //running time 行车时间 float price; // 票价int rl;//Rated load 额定载量车 票 管 理 系 统进入班次浏览进入班次查询售 票退 票修改版此信息查 询 菜 单进入起点站查询进入终点站查询进入班次查询int bn; //booking number已定票人数}T[N];int n=0,i=0;//全局变量2.3 关键技术分析⑴在程序开始运行时,应调用自定义的INPUT()函数,将所有需要的数据导入到结构数组中,然后保存。
⑵调用load()函数,从磁盘导入车票信息。
由于第一次应用INPUT()函数磁盘中已有数据,因此不必要再进行重新导入,所以在INPUT()函数中先询问是否重新导入,然后再进入主菜单,或者在调用一次后,以后运行时不再调用。
⑶.买票和退票都涉及到时间的问题,这源于要比较发车时间与当前的时间,判断这班车到底有没有发车,和能不能订票与退票,这时用了一个时间函数,输出了当前的时间,但那边有年月日,不好进行提取和比较,于是采用输出了时间,然后看着那个时间手动的提取。
⑷系统中应编写存盘函数save(),在进行买票或者退票功能后都需要调用save()函数进行数据的更新。
⑸采用循环结构生成主菜单,在数据输入时应该有清晰的提示信息,以方便用户的操作,对输出数据进行格式控制,以使界面更加美观,清晰。
3 系统实现3.1 功能模块设计根据系统分析的结论,将本系统需完成的功能模块划分如下:#include<stdio.h>#include<stdlib.h>#include<string.h>#include<conio.h>#include<time.h>#define N4void main_menu(); //主菜单模块void load();//导入信息void INPUT();//输入模块void scan();//浏览模块void tuipiao();//退票void buy(); //买票void change(); //修改函数void save();//保存函数void prna(int pos); //打印记录void searchmenu(); //查询菜单函数int s_cn(); //按班次查询int s_lp();//按起点站查询int s_ap(); //按终点站查询struct Train_Ticket{char cn[15]; //车量班次char lp[15];//left place 起点char ap[15]; //arrive place终点char lt[15];//left time发车时间char rt[15];//running time行车时间int price;// 票价int rl; //Rated load 额定载量int bn; //booking number已定票人数}T[N];int n=0,i=0;//全局变量3.2 源代码//********************************************************//主菜单//********************************************************void main_menu(){system("cls");system("color E");printf("************************************************************* *********\n");printf("*************************欢迎来到车票查询系统*************************");printf("\n");printf("| ★★★1: 进入班次浏览★★★|\n");printf("| ★★★2: 进入查询班次★★★|\n");printf("| ★★★3: |\n");printf("| ★★★4: |\n");printf("| ★★★5: |\n");printf("| ★★★0: |\n");售票★★★退票★★★班次信息修改★★★退出★★★printf("********************************************************* **************\n");printf("\n请选择(0-5):☆☆☆");}void load() //从磁盘文件导入班次信息{int i;FILE *fp;if((fp=fopen("c:车票管理系统.dat","rb"))==NULL){printf("文件打开错误\n");exit(0);}for(i=0;i<N;i++)fread(&T[i],sizeof(struct Train_Ticket),1,fp);fclose(fp);system("cls");}void save() //将班次信息保存到磁盘文件{FILE *fp;if((fp=fopen("c:车票管理系统.dat","wb"))==NULL){printf("无法创建文件!\n\n");exit(0);}for(i=0;i<N;i++)fwrite(&T[i],sizeof(struct Train_Ticket),1,fp);fclose(fp);}int time()//当前系统时间{struct tm*f;time_t now;now=time(NULL);time(&now);f=gmtime(&now);printf(ctime(&now));return 0;}void scan(){system("cls"); /*清屏*/printf("\n===================================================================== ======\n");printf("车次额定载量起点终点开车时间行车时间票价已定票人数\n");for(i=0;i<N;i++)printf( " %s%13d%10s%10s%12s%8s%f%6d\n",T[i].cn,T[i].rl,T[i].lp,T[i].ap,T[i].lt,T[i].rt,T[i].price,T[i].bn);printf("===================================================================== ======\n");printf("请按任意键返回主菜单\n");getch();}void INPUT() //键入所有信息{char ch;do{system("cls");printf("\n\n ====================欢迎进入录入汽车时刻信息界面====================\n");do{printf("\n新建汽车信息?(y/n)");scanf("%c",&ch);if(ch!='y'&&ch!='n')printf("输入错误,请重新输入!!!");}while(ch!='y'&&ch!='n');if(ch=='n')break;printf(" ---------------------");printf("\n printf("录入第%d趟列车信息\n",n+1);车次");fflush(stdin);gets(T[i].cn);printf("额定载量"); fflush(stdin);scanf("%d",&T[i].rl);printf("起点");fflush(stdin);gets(T[i].lp);printf("终点");fflush(stdin);gets(T[i].ap);printf("开车时间");fflush(stdin);gets(T[i].lt);printf("行车时间");fflush(stdin);gets(T[i].rt);printf("票价");fflush(stdin);scanf("%f",&T[i].price);printf("已定票人数");fflush(stdin);scanf("%d",&T[i].bn);n++;i++;}while(i<N);save();system("cls");}打印一条记录void prna(int pos)//{printf("\n===================================================================== ======\n");printf("车次额定载量起点终点开车时间行车时间票价已定票人数\n");printf( "%s%13d%10s%10s%12s%8s%f%6d\n",T[pos].cn,T[pos].rl,T[pos].lp,T[pos].ap,T [pos].lt,T[pos].rt,T[pos].price,T[pos].bn);printf("===================================================================== ======\n");}查询主菜单void searchmenu()//{system("cls");printf("\n\n ====================欢迎进入查询汽车时刻信息界面====================\n");printf("\n ++++++++++++++++++请选择查找方式++++++++++++++++++\n\n");printf("| ★★★1: 按班次查询★★★ |\n");printf("| ★★★2: 按起点站查询★★★|\n");printf("| ★★★3: 进终点站查询★★★|\n");printf("| ★★★4: 返回主菜单★★★|\n");printf("***********************************************************************\n");printf("\n请选择(1-4):☆☆☆");}int s_cn() //按班次查询{char name1[15];int j;system("cls");printf("请输入要查询的班次号:\n ");11fflush(stdin);gets(name1);for(j=0;j<N;j++){if(strcmp(T[j].cn,name1)==0)printf(" %s%13d%10s%10s%12s%8s%f%6d\n",T[j].cn,T[j].rl,T[j].lp,T[j].ap,T[j].lt,T [j].rt,T[j].price,T[j].bn);continue;return 0;}return 1;}int s_lp() //按起点站查询{char name2[15];int j;system("cls");printf("请输入要查询的起点站名: \n");fflush(stdin);gets(name2);for(j=0;j<N;j++){if(strcmp(T[j].lp,name2)==0)printf(" %s%13d%10s%10s%12s%8s%f%6d\n",T[j].cn,T[j].rl,T[j].lp,T[j].ap,T[j].lt,T [j].rt,T[j].price,T[j].bn);continue;return 0;}return 1;}int s_ap() //按终点站查询{12char name3[15];int j;system("cls");printf("请输入要查询的终点站名: \n");fflush(stdin);gets(name3);for(j=0;j<N;j++){if(strcmp(T[j].ap,name3)==0)printf(" %s%13d%10s%10s%12s%8s%f%6d\n",T[j].cn,T[j].rl,T[j].lp,T[j].ap,T[j].lt,T [j].rt,T[j].price,T[j].bn);continue;return 0;}return 1;}void search() //查询函数{int select;int n;while(1){searchmenu();scanf("%d",&select);switch(select){case 1: n=s_cn();if(n)printf("没找到相关记录\n");printf("按任意键返回\n"); getch();break;case 2: n=s_lp();if(n)printf("没有找到相关记录\n");printf("按任意键返回\n"); getch();break;case 3: n=s_ap();if(n)printf("没有找到相关记录\n");printf("按任意键返回\n"); getch();break;}if(select==4){break;main_menu();}}}void buy() //买票{system("cls");int m,log;char t[10];printf("请输入您需要购买票的班次(1-4):\n");scanf("%d",&m);load();printf("\n===================================================================== ======\n");printf("车次额定载量起点终点开车时间行车时间票价已定票人数\n");printf( " %s%13d%10s%10s%12s%8s%f%6d\n",T[m-1].cn,T[m-1].rl,T[m-1].lp,T[m-1].ap,T[m-1].lt,T[m-1].rt,T[m-1].price,T[m-1].bn);printf("===================================================================== ======\n");if(T[m-1].bn>=T[m-1].rl){printf("该班次票已满!请选择其他班次\n");printf("按任意键返回\n");}if(T[m-1].bn<T[m-1].rl){printf("当前时间为:\n");time();printf("\n");printf("请再手动输入上述时间,只需要输入时辰与分钟(例如08:00): \n");scanf("%s",t);printf("\n");if(strcmp(t,T[m-1].lt)>0)printf("该班次已发车,请选择其他班次\n");else if(T[m-1].bn==T[m-1].rl)printf("该班次未发车但是该班次票已售完\n");if (T[m-1].bn!=T[m-1].rl&&strcmp(t,T[m-1].lt)<0&&T[m-1].bn<T[m-1].rl){printf("该班次还可订%d票\n",(T[m-1].rl-T[m-1]. bn));printf("请输入您要订票数量");scanf("%d",&log);printf("\n");while(log>(T[m-1].rl-T[m-1].bn)){printf("订票错误,数量不能超过余票数! !!\n");printf("请重新输入:");scanf("%d",&log);}if(log<=(T[m-1].rl-T[m-1].bn)) {printf("一共需要%d 元\n",log*T[m-1].price);printf("订票成功,祝您旅途愉快!\n");}}T[m-1].bn+=log;printf("按任意键返回主菜单\n");getchar();}save();}void tuipiao()//退票{system("cls");int x,log;char t[10];printf("请输入您要退票的班次: \n");scanf("%d",&x);i=x;int m=i;load();printf("\n===================================================================== ======\n");printf("车次额定载量起点终点开车时间行车时间票价已定票人数\n");printf( " %s%13d%10s%10s%12s%8s%f%6d\n",T[m-1].cn,T[m-1].rl,T[m-1].lp,T[m-1].ap,T[m-1].lt,T[m-1].rt,T[m-1].price,T[m-1].bn);printf("===================================================================== ======\n");printf("当前时间为:\n");time();printf("\n");printf("请再手动输入上述时间,只需要输入时辰与分钟(例如08:00): \n");scanf("%s",t);if(strcmp(T[i-1].lt,t)>0){printf("可以退票\n");printf("请问你真的要退票吗?\n");printf("确认退票请按1,否则返回主菜单\n");scanf("%d",&log);if(log==1){printf("退票成功!\n");T[i-1].bn--;save();printf("按任意键返回主菜单\n");getch();}else{printf("您选择不退票\n");printf("按任意键返回主菜单\n"); getch();}}if(strcmp(T[i-1].lt,t)<0){printf("此班次已发车不能退票!!!\n");printf("按任意键返回主菜单\n");getch();}}void change(){system("cls");int k,select;char banci[100];char mima[10];//假设密码为aaaprintf("这个是工作人员所进,请输入密码:\n");scanf("%s",mima);while(strcmp(mima,"aaa")!=0){printf("密码错误!\n");printf("请重新输入:\n");scanf("%s",mima);}printf("进入成功!\n");printf("输入所要修改班次号:\n");scanf("%s",banci);for(k=0;k<N;k++){if(strcmp(T[k].cn,banci)==0)break;}printf("\n===================================================================== ======\n");printf("车次额定载量起点终点开车时间行车时间票价已定票人数\n");printf( " %s%13d%10s%10s%12s%8s%f%6d\n",T[k].cn,T[k].rl,T[k].lp,T[k].ap,T[k].lt,T [k].rt,T[k].price,T[k].bn);printf("===================================================================== ======\n");printf("修改时间请按1\n");printf("修改终点站请按2\n");printf("修改票价请按3\n");scanf("%d",&select);switch(select){case 1:for(k=0;k<N;k++)if(strcmp(T[k].cn,banci)==0)break;printf("请输入修改后的时间(例如08:00)\n");scanf("%s",T[k].lt);printf("修改成功!\n");printf("\n===================================================================== ======\n");printf("车次额定载量起点终点开车时间行车时间票价已定票人数\n");printf( " %s%13d%10s%10s%12s%8s%f%6d\n",T[k].cn,T[k].rl,T[k].lp,T[k].ap,T[k].lt,T [k].rt,T[k].price,T[k].bn);printf("===================================================================== ======\n");printf("按任意键返回\n");save();getch();break;case 2:for(k=0;k<N;k++)if(strcmp(T[k].cn,banci)==0)break;printf("请输入修改后的终点站\n");scanf("%s",T[k].ap);printf("修改成功!\n");printf("\n===================================================================== ======\n");printf("车次额定载量起点终点开车时间行车时间票价printf(已定票人数\n");"%s%13d%10s%10s%12s%8s%f%6d\n",T[k].cn,T[k].rl,T[k].lp,T[k].ap,T[k].lt,T [k].rt,T[k].price,T[k].bn);printf("===================================================================== ======\n");printf("按任意键返回\n");save();getch();break;case 3:for(k=0;k<N;k++)if(strcmp(T[k].cn,banci)==0)break;printf("请输入修改后的票价\n");scanf("%d",&T[k].price);printf("修改成功!\n");printf("\n===================================================================== ======\n");printf("车次额定载量起点终点开车时间行车时间票价已定票人数\n");printf( " %s%13d%10s%10s%12s%8s%f%6d\n",T[k].cn,T[k].rl,T[k].lp,T[k].ap,T[k].lt,T[k].rt,T[k].price,T[k].bn);printf("===================================================================== ======\n");printf("按任意键返回\n");save();getch();default:printf("选择错误!");printf("按任意键返回主菜单\n");getch();break;}}void main(){int select;load();while(1){main_menu();scanf("%d",&select);switch(select){case 1:scan();getchar();break;case 2:search();getchar();break;case 3:buy();getch();break;case 4:tuipiao();getchar();break;case 5:change();getchar();break;}if(select==0){ printf("按任意键退出\n");printf("\n");break;}}}4 系统测试4.1 主界面系统主界面如图4-1所示:系统运行主窗口4.2 车次信息浏览模块在主菜单的提示下选择1,可显示所有车次信息。