火车票管理系统——C语言程序设计实训报告

合集下载

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

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

车票管理系统课程设计报告车票管理系统课程设计报告车票管理系统一目的通过课程设计,加深对《C语言程序设计》和《数据结构》课程所学知识的理解,熟练掌握和巩固C语言的基本知识和语法规范,包括:数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);库函数应用等;复杂任务功能分解方法(自顶向下逐步求精、模块化设计、信息隐藏等),熟练掌握和巩固三种基本的数据结构(线性结构、树形结构、图形结构)的逻辑结构、存储结构以及相关运算和应用。

学会编制结构清晰、风格良好、数据结构适当的C语言程序,从而具备利用计算机编程分析解决综合性实际问题的初步能力二需求分析1、首先本演示程序要实现录入班次信息的功能,并且要用文件来保存这些信息,还可以不定时的增加班次数据。

2、需要浏览班次信息是可以一次性输出当前的班次状况,并且要从实际考虑,若当前系统时间已经超过了某班次的发车时间,则要显示“此班已发出”的提示信息。

3、此程序既为车票管理系统,就要实现查询路线、售票、退票等功能。

当使用查询路线功能时,要分两种情况:按班次号查询和按终点站查询。

若使用售票功能,则只有在查询出已定票人数小于额定载量且当前系统时间小于发车时间时才能售票,并且要自动跟新已售票人数。

退票要输入退票的班次,当本班车尚未出发时才能退票,也要自动更新已售票人次。

4、演示程序以用户和计算机的对话方式执行,即在计算机的屏幕上显示“提示信息”下,用户根据自己的意愿自行操作,每次测试完毕,新增加的班次信息要保存在data.txt文件中。

三概要设计1、本程序各个模块的功能及调用关系:(1)主程序模块main()函数:车票管理系统课程设计报告此主程序的主要目的是用来调用读取文件函数、功能菜单函数以及保存文件信息函数。

(2)文件读入与保存函数read()、save()以及功能菜单MainMenu()函数:这三个函数的主要目的是为了读取文件,保存文件和为用户创造一个功能菜单以便于用户的操作。

C语言课程设计报告书-火车票务管理系统

C语言课程设计报告书-火车票务管理系统

延边大学工学院C语言课程设计报告书题目:火车票务系统(A)班级:学号:姓名:指导教师:二○○九年七月一.系统功能的总体描述本系统要求实现火车票务基本信息的查询,订票、售票、退票、车次查询等。

功能要求实现:火车票的基本信息:符合条件的车次名称、开时、到时、历时、里程、票价(硬座、软座、硬卧(上、中、下)软卧(上、中、下))车次类型、站名的查询显示,统计,添加(新加车次)、更改(售出票后需修改所剩票数)和删除(已发车次信息)等。

二、系统基本功能本系统可实现火车票务信息的管理和查询等功能。

它的基本功能是建立火车票信息链表,存储火车票的基本信息,实现对已有车次票务的查询、预订、售票、退票等业务的保存、修改等。

软件输出输入形式:软件提示信息丰富、容易理解,重点是依据火车票务的特点有明显的即时性和快速性。

测试数据要求:本系统的测试数据当输入想要到达的目的地信息时输出符合的车次、到站时间、开车时间以及终到站时间,车次名称、开时、到时、历时、车次类型、站名必须用字符串数据;里程、车票剩余情况、票价情况必须用整型数据。

对车票的基本信息进行查找时按目的地、时间和车次三种查找方式查找。

测试数据要有即事性、快速性。

三、系统具体分析(一)所需的功能1 输入功能:录入目的地信息2 输出功能:查看所查信息3 查询功能:查询符合车次及相关信息4修改功能:更新系统信息5 删除功能:对已发车辆信息删除6 票务功能:负责售票和退票业务7安全功能:负责管理员密码审核、修改等安全(二)系统功能模块划分(三)各模块的功能描述——主菜单模块功能————子菜单模块功能描述——(四)函数调用过程四、系统核心算法1、ccchanxun函数——通过车次查询列车信息输入:要查询车次输出:相关信息Step1:输入要查询的列车号char[6](在中国列车号有数字和字母组成,最长为5个字符,如:k8371因此为节省内存只需定义6字符长度的数组) Step2:用c与链表中的列车号(*p).lchao相比较判断strcmp((*p).lchao,c)是否等于零,否则进行step3,是则进行step4Step3:令p=p->next,判断p是否指向空节点NULL,若是则转到step2,否则进行step5Step4:显示相关信息(车次名称、开时、到时、历时、票价、车次类型等)Step5:显示未能找到所寻车次ccchanxun函数N-S流程图2、mddcharxun函数——通过目的地查询最终能到达目的地的全部车次,以及全部相关信息输入:要查询目的地输出:相关信息Step1:输入要查询的目的地char[20]Step2:用c与链表中的终到站(*p).zhongdaozhan相比较判断strcmp((*p).zhongdaozhan,m)是否等于零,否则进行step3,是则进行step4Step3:令p=p->next,判断p是否指向空节点NULL,若是则转到step2,否则进行step5Step4:显示相关信息(全部车次名称、开时、到时、历时、票价、车次类型等)Step5:显示未能找到所寻目的地。

火车票管理系统——C语言程序设计实训报告

火车票管理系统——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语言课程设计报告实验报告

.东华理工大学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语言课程设计车票管理系统

c语言课程设计车票管理系统

c语言课程设计车票管理系统车票管理系统是一种用于管理车票信息的软件系统,它可以方便地记录和查询车票的相关信息,包括车票的购买、使用和退款等操作。

本文将详细介绍车票管理系统的设计与实现。

一、系统需求分析车票管理系统的主要功能包括:车票信息的录入与管理、车票的购买与退款、车票的查询与打印等。

具体需求如下:1. 车票信息的录入与管理:系统管理员可以录入车票的基本信息,包括车次、出发地、目的地、出发时间、到达时间、票价等。

2. 车票的购买与退款:乘客可以通过系统购买车票,并可以根据需要进行退款操作。

购买车票时需要提供乘客的相关信息,包括姓名、身份证号、联系电话等。

3. 车票的查询与打印:乘客可以通过系统查询车票的相关信息,并可以选择打印车票。

二、系统设计与实现1. 数据库设计:为了存储车票的相关信息,需要设计一个车票信息表,包括车次、出发地、目的地、出发时间、到达时间、票价等字段。

同时,还需要设计一个乘客信息表,包括姓名、身份证号、联系电话等字段。

2. 界面设计:车票管理系统的界面应该简洁明了,方便用户操作。

可以采用图形界面的形式,通过按钮、输入框等控件与用户进行交互。

3. 功能实现:a. 车票信息的录入与管理:系统管理员可以通过系统界面进行车票信息的录入与管理,包括新增车票、修改车票、删除车票等操作。

b. 车票的购买与退款:乘客可以通过系统界面选择购买车票或退款,购买车票时需要填写相关信息,并将购买信息保存到数据库中,退款时需要输入订单号进行操作。

c. 车票的查询与打印:乘客可以通过系统界面进行车票的查询,可以根据车次、出发地、目的地、出发时间等条件进行筛选,并可以选择打印车票。

三、系统运行流程1. 系统管理员登录系统,进入车票管理界面。

2. 管理员可以进行车票信息的录入与管理,包括新增、修改和删除车票。

3. 乘客通过系统界面选择购买车票,填写相关信息,系统将购买信息保存到数据库中,并生成订单号。

4. 乘客可以通过系统界面进行车票的查询,可以根据条件筛选需要的车票。

票务管理系统——编程实践实验报告包括原程序、流程图.pdf

票务管理系统——编程实践实验报告包括原程序、流程图.pdf

开始
开始
输入需 修车次
显示菜单
是否查到该车
输入 choic
输入改后的 车次信息
调用类的成员函数修改车次
choice=1 调用 AddNo
choice=1 调用 NewNo
向文件中重新写入车次信息 输出所有车次信息
结束 图 3-3
结束
图 3-5
- FindNoTrain 函数:
1) 函数流程图(见图 3-7) 2)函数作用:输入要查的车次,查找是否存在要查询的车次,如果找到输出找到车次的信 息,如果没有找到输出没有该车次的信息.
FindaTrain 函数:
1)函数的流程图(见图 3-8) 2) 函数作用:输入要查的终点站,查找是否存在要查询的车次,如果找到输出找到车次的 信息,如果没有找到输出没有该车次的信息
ShowTimeTrain 函数:
1) 函数流程图(见图 3-9) 2)函数作用:对所有车辆按时间先后顺序排序,输出排好的车次信息,并将其写入文 件
ChangNo 函数:
1) 函数流程图(如图 3-3): 2)函数作用:修改车次里的流程图,当输入 1 时调用 AddNo 的函数,当输入 2 时调用 NewNo 函数
AddNo 函数:
1)函数流程图:(见图 3-4) 2)函数作用:输入需要增加的车次个数 n,分配 n 个 Ticket 的对象,并且返回值赋给指针 p[count],记录 n 存入数组 number[count],通过调用类的成员函数向新分配的内存中输入新 增车次的信息,向文件中写入新增车次的信息,并且输出所有车次的信息
三、概要设计
1)主要类: class Time class Ticket
2)主要函数流程图:

C语言编写车票管理系统(2024)

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语言 车票管理设计报告

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语言)【报告版-带截图】

一、课题内容和要求设计目标:设计一个火车票务管理系统,用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语言源代码

列车时刻表信息管理系统实践报告C语言源代码

printf("********************************************************************* ***********\n"); printf(" 请选择要执行的操作: \n");/* 菜单程序,用于各种功能的选择 */ } struct train/* 定义结构体 */{char name[8];char checi[6];int year;int month; int day; int hour;int minute;}lieche[N];/* 定义一个结构体数组 */ void paixu(struct train *p);/* 函数声明 */void chaxun(struct train *p)/* 子程序,其功能是查询列车 */ {paixu(lieche);/* 先排序一下,方便查看 */ char a[8];/* 定义一个字符数组,输入要查询的列车 int k=0,i,c;printf(" 请输入要查询的列车 :\n"); scanf("%s",a);for(i=0;i<N;i++) #include"stdio.h"#include"stdlib.h" #include"string.h"/* 定义头文件,处理文件及字符数组时要用到相应功能 #define N 10 void fmenu() { system("cls"); printf("************************v1.20*****************\n");%c1. 查询列车 */欢迎使用苏州列车时刻表信息管理系统printf("\t\t\t\tprintf("\n");printf("\t\t\t\t printf("\n"); printf("\t\t\t\t printf("\n"); printf("\t\t\t\tprintf("\n"); printf("\t\t\t\t printf("\n"); printf("\t\t\t\t%c2. 修改列车 %c3. 增加列车 %c4. 取消列车 %c5. 保存信息 \n",3); \n",3); \n",3);\n",3);\n",3);%c0. 退出 \n",3); */{if(strcmp(p[i].name,a)==0){printf(" 苏州—%s\t%s( 车次 )\t%d 年 %d\t%d:%02d\n",p[i].name,p[i].checi,p[i].year,p[i].month,p[i].day,p[i].hour,p[i].minute) ;/* 车的信息全部打出 */k++;}}if(k==0)printf(" 抱歉,没有这趟列车 \n");/* 没有查到时,打出通知 */ printf(" 按 1 继续,按 0 退出 \n");/* 选择继续或者退出 */ scanf("%d",&c);if(c!=0)chaxun(lieche);}void xiugai(struct train *p)/* 子程序,用于修改列车时间 */{char a[8],b[6];int i,x,c,k=0,h,mi,y,m,d,q;printf(" 请输入要修改的列车 :\n");scanf("%s",a);for(i=0;i<N;i++){if(strcmp(p[i].name,a)==0){printf(" 苏州—%s\t%s() 车次 \t%d 年 %d\t%d:%02d\n",p[i].name,p[i].checi,p[i].year,p[i].month,p[i].day,p[i].hour,p[i].minute) ;printf(”要修改这趟列车吗?\n1.是0.否\n");scanf("%d",&q); if(q==1){printf(" 请输入修改后的车次 :\n"); scanf("%s",b);printf(" 请输入修改后的年月日 :\n"); scanf("%d%d%d",&y,&m,&d); scanf("%d%d",&h,&mi);printf("确定修改吗?\n1.是2.否\n");/*选择是否确定修改列车时间,防止错误操作 */scan f("%d", &x);if(x==1){strcpy(p[i].checi,b);p[i].year=y;%d 日将所查列%d 日p[i].month=m; p[i].day=d; p[i].hour=h; p[i].minute=mi;printf(" 已经修改此列车 ");}}k++;}} if(k==0)printf(" 抱歉,没有这趟列车 \n");/* 没有查到时,打出通知 */ printf(" 按 1 继续,按 scanf("%d",&c); if(c!=0)xiugai(lieche);printf(" 请输入要增加的列车目的地 scanf("%s",);printf(" 请输入修改后的车次 :\n");scanf("%s",a.checi);printf(" 请输入所增加列车的年月日 scanf("%d%d%d",&a.year,&a.month,&a.day);printf(" 请输入所增加列车的小时和分钟 :\n");scanf("%d%d",&a.hour,&a.minute);printf (”确定要增加这一趟列车吗? \n1.是0.否\n");scanf("%d",&x);if(x==1) for(i=0;i<N-1;i++){if(strcmp(p[i].name,b)==0){strcpy(p[i].name,); strcpy(p[i].checi,a.checi);p[i].year=a.year;p[i].month=a.month; p[i].day=a.day; p[i].hour=a.hour;p[i].minute=a.minute;0 退出 \n");}void zengjia(struct train*p)/*{struct train a;charb[]={"0000000"};/*子程序,用于列车增加 */ 空白位置, 在此处插入所填列车 */:\n");:\n");strcpy(p[i+1].name,b);/* 找到位置, 插入列车, 并把 0000000 给后面一个结构体printf(" 已经增加这趟列车 "); break; } paixu(lieche); printf(" 按 1 继续,按 0 退出 \n"); scanf("%d",&c);if(c!=0) zengjia(lieche);paixu(struct train *p)/* 子程序,用于同名列车时刻排序 */ int i,x;char a[6];for(i=0;i<N;i++){if(strcmp(p[i].name,p[i+1].name)==0)/* 先找到相同名字的列车 */ {if(p[i].year>p[i+1].year)// 根据年份排序 {strcpy(a,p[i].checi);strcpy(p[i].checi,p[i+1].checi);strcpy(p[i+1].checi,p[i].checi); x=p[i].year;p[i].year=p[i+1].year;p[i+1].year=x;x=p[i].month;p[i].month=p[i+1].month;p[i+1].month=x;x=p[i].day;p[i].day=p[i+1].day;p[i+1].day=x;x=p[i].hour;p[i].hour=p[i+1].hour;p[i+1].hour=x;x=p[i].minute;p[i].minute=p[i+1].minute;p[i+1].minute=x;}else if(p[i].year==p[i+1].year)*/} void{{if(p[i].month>p[i+1].month)// 相同年数,根据月份排序。

C语言--火车站售票系统报告及代码解析

C语言--火车站售票系统报告及代码解析

目录第一章——————————————课程认识第二章——————————————课题选择第三章———————————总体设计与分析第四章————————————模块详细设计第五章————————————主要实现方法第六章————————————课程设计总结第七章————————————————结论第八章————————————————建议一、课程的性质、任务、目的C语言是非常优秀的程序设计语言,应用广泛,是高校计算机专业的一门专业基础课程;学好C语言,是学习计算机专业课程和用好计算机的重要基础。

要学好C语言,应抓好理论学习、上机实验以及综合应用这三个环节。

在《C程序设计》课程的学习中,学生在掌握C语言理论知识的同时,通过上机实验完成一定量的实践性题目,初步掌握了程序设计的基本思想、基本概念和基本方法。

本课程是计算机专业的学生在完成了《C程序设计》课程的学习后,为加强学生对程序设计思想的理解、通过解决有一定代表性的小型综合应用类课题从而提高实际编程能力而设置的一门实践性课程。

本课程为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机地结合起来,培养和锻炼学生分工协作、分析和解决实际问题并利用计算机求解问题的能力,以提高学生适应实际,实践编程的能力,从而掌握基本的程序设计过程和技巧,具备初步的高级语言程序设计和调试能力。

二、课题选择(背景、意义、实用性……);背景:现今,人们的生活水平渐渐改善,生活质量也随之提高,人们的精神需求也大了,应此,出行旅游,或是走访亲友成了习以为常的事了,出行已成为现代人的家常便饭,汽车,火车,飞机等交通工具为我们提供了更多的方便。

然而在售票中,就需要一个售票系统来帮助售票员来更为快捷,高效,方便的售票,同时也为了车站方面更好的管理票务,因此,一个好的车票管理系统就必不可少了。

意义:选择车站售票系统作为课程设计的课题,就车站的售票流程等进一步了解车站的售票系统的原理。

C语言程序设计实验报告

C语言程序设计实验报告
printf("很抱歉,还不能购买1月%d号的车票\n",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语言编写了火车票管理系统的各个模块。

在编写过程中,我们遵循模块化、可重用原则,提高代码质量。

C语言课程设计报告 火车售票查询系统(完)

C语言课程设计报告  火车售票查询系统(完)

湖北工业大学工程技术学院课程设计报告书课程名称:C语言课程设计班级:物联网一班小组成员:范立恒、陈根、聂俊豪、麦灿文、黄文康组长:范立恒指导教师:楚惟善二○一三年六月1 课程题目及要求及要求题目一:火车售票系统任务:结合C语言中相关知识,设计出火车售票系统。

1 录入北京西站车次信息;2 旅客按车次买票;3 统计某日火车票销售金额。

程序要求:⏹贯彻结构化的程序设计思想。

⏹用户界面友好,功能明确,操作方便。

⏹用户界面中的菜单至少应包括“车次信息录入”、“旅客买票”、“统计某日销售金额”、“退出”4项。

⏹代码应适当缩进,并给出必要的注释,以增强程序的可读性⏹为了保证所有的数据可以长期被使用,要求程序能将相关数据存储在外部数据文件中,具体数据格式和文件名、路径等自定;⏹根据所设计的算法,定义相应函数分别实现系统的各子功能模块,同时由主程序提供友好的用户界面,使用户可通过选择主菜单来调用课程设计中要求完成的各个功能模块,子程序执行完后可返回到主菜单,继续选择其他功能执行。

源程序要求书写规范,结构清晰。

重点函数的重点变量,重点功能部分均要求给出清晰的程序注释。

⏹程序编译、链接成功后,自己设计实现程序功能的一组或多组测试数据,并严格按照此测试数据进行测试,然后分析测试结果。

如果程序不能正常运行或结果不正确,则需对程序进行单步调试,在调试过程中认真查找算法实现中存在的问题,并加以分析和2 程序分设计说明经过对程序设计题目的分析可知,整个程序的设计实现大致分为八个模块,每一个模块对应一个函数。

在这些函数当中,添加车次数据函数,售票函数,查询总额函数的实现严格按照题目的要求,而显示时间函数和显示车次函数属于附加功能。

读取文件函数和保存信息函数对其它函数的实现起辅助作用,主函数及菜单函数控制程序的整体运行。

1. 添加车次函数主要实现程序最初运行时车次的录入;2. 旅客买票函数实现的功能是按照旅客所需车次几所购买车票的数目;3. 查询车票总额按照题目的具体要求实现的是总额的查询;4. 显示函数实现的是显示目前所有的有效车次信息。

(完整版)C语言集中上机实验报告 - 车票管理系统

(完整版)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语言程序设计》)的基本理论知识,理论联系实际,进一步培养自己综合分析问题和解决问题的能力。

掌握运用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. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

题 目: 学生成绩管理系统院 系: 信息科技学院专 业: 计算机科学与技术姓 名: 何荣荣学 号: 1751200204指导教师: 王小琼日 期: 2018年6月28日桂林电子科技大学信息科技学院前 言课程设计环节是应用型本科院校非常重要的一个教学环节,是学完一门课后应用本课知识及以前的知识积累而进行的综合性、开放性的训练。

通过课程设计,不仅能够使学生得到系统的技能训练,巩固和加强所学得专业理论知识,而且能够培养学生工程意识、创新能力、团队精神等综合素质,培养学生的设计能力和解决实际问题的能力。

C语言由于其强大的功能,丰富的表达能力,高效的代码,良好的移植性和灵活性,自1972年问世以来,经久不衰,即使现在出现了面向对象的程序设计方法和开发工具,但它仍然是人们学习程序设计的首选语言,用它训练和提高编程技术,以及开发应用程序等。

我们通过《C语言程序设计》这门课程的学习,已经能编写解决小问题的程序,对程序的开发也有了初步的认识,还掌握了C 语言的基本语法,这一过程确确实实令我们感到欣喜,有点计算机可以完成自我任务的成就感。

但是,对于程序设计而言,学习C 的步伐不应该停留于此。

我们最终的目的应该是掌握开发大型综合程序的方法,即遵循软件工程的开发步骤和结构化程序设计思想,用C 语言开发出解决复杂问题的大型综合程序。

可是对于多数学生来说,学习了C语言后,除了应付各种考试之外,别无它用,对Turbo C语言丰富的函数知之甚少,加上DOS环境所限,因而对C语言兴趣不大,也感到C语言比较难以掌握。

本实训就是为了让学生在学完C语言后进一步了解C语言的知识,掌握C语言在软件开发方面的使用方法,希望通过此次实训,不仅能提高学生学习C语言的兴趣,更为今后学习其它专业知识及开发程序打下坚实的基础。

本指导书中有些内容借鉴了互联网上相关程序的设计思想,在此对相关者表示衷心的感谢。

由于时间、经验及水平的原因,不当、不足之处,请大家提出宝贵意见。

编者目录1、问题定义 (3)2、系统设计 (3)2.1 总体设计 (3)2.2 详细设计 (5)3、程序测试 (5)4、详细程序 (7)5、归纳总结 (19)5.1 开发经验 (19)5.2 实训中遇到的问题及解决方法 (19)5.3 感想和心得体会 (20)6、参考资料 (20)火车票管理系统本题目设计目的是训练学生的基本编程能力,了解管理信息系统的开发流程,熟悉C 语言的文件和单链表的各种基本操作。

本程序中涉及字符数组的使用、字符指针的使用、数据库的设计和文件使用等方面的知识。

通过本程序的训练,使学生能对C语言的文件操作有一个更深刻的了解,掌握利用单链表存储结构实现对学生成绩管理的原理,为进一步开发出高质量的管理信息系统打下坚实的基础。

1、问题定义该系统要求实现一个简单、实用的火车票管理程序,主要功能包括火车票数据的录入、查找、删除、显示、售票、退票等。

所有火车票数据都要利用文件系统保存,以备系统下次运行时使用。

通过此课题,熟练掌握文件、数组、指针的各种操作,以及一些基本算法思想的应用。

本火车票管理系统应该具备如下功能:1)录入班次:车次信息包括:班次、发车时间、起点站、终点站、行车时间、额定载量、已售票)2)显示所有班次3)查询班次4)增加班次5)售票6)退票7)修改班次8)(退票)删除班次9)退出2、系统设计2.1 总体设计采用模块化的程序设计方法,即将较大的任务按照一定的原则分为一个个较小的任务,然后分别设计各个小任务。

需要注意的是划分出来的模块应该相对独立但又相关,且容易理解。

可以用模块化层次结构图(即模块图)来分析其任务的划分,一般从上到下进行,最上面一层是主模块,下面各层是其上一层模块的逐步细化描述。

void save()保存函数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:”车票管理系统0”中。

最后定义main()函数,利用函数调用,实现程序的各种功能。

将其放在系统文件d:”车票管理系统0”中。

程序分为多个小模块,通过调用实现各种功能,增强了程序的可建设性。

程序把每种功能分开实现,更简单,实用程序更易理解。

2.2 详细设计主控main()函数执行流程3图3-0 菜单界面如上图所示,该程序为用户提供菜单界面,用户可以对程序的各种功能进行选择,方便用户使用。

选择1-9并按enter键进行操作。

如选择出错,系统将提出警告,并提醒用户重新进行选择。

3.1录入班次功能图3-1输入时的界面如上图所示,该功能实现录入班次信息。

选择1按enter键进入该功能,程序提醒用户输入车次.发车时间.起始站.终点站.行车时间.额定载量.已售票数,输入完毕后按enter键将完成录入班次结果,同时程序将再次提醒用户进行新的选择。

3.2显示所有班次图3-2查询班次界面可以显示所有录入的信息。

3.3查询所有班次功能图3-3选择查询方式的界面该功能将实现程序运行班次的查询。

选择3并按enter键将实现该功能。

分班次和终点站两种方式查询。

3.4增加班次功能图3-4增加班次界面该功能将增加班次信息,帮助用户更新班次信息。

选择4并按enter键将实现该功能,再按提示输入就行。

按任意键返回主菜单。

3.5售票功能图3-5-1选择售票功能界面图3-3-2订票的界面选择5按enter键实现该功能,按任意键关闭程序。

买票程序可提示买票成功否,且自动判断是否可卖。

3.6退票功能图3-6退票界面选择6按enter键实现该功能,按任意键关闭程序。

退票程序可提示退票成功否,且自动判断是否可退。

3.7 修改班次功能图3-7修改界面选择7按enter键实现该功能,按任意键关闭程序。

按提示操作修改班次。

3.8 删除班次功能图3-8删除界面3.9 退出功能图3-9退出界面该功能可退出系统,选择9按enter键实现该功能4、详细程序#include<stdio.h> //宏定义函数#include<string.h> //字符串操作及内存操作函数#include<stdlib.h> //调用系统函数#include<time.h> ///时间库函数#include<conio.h> ///输入输出函数#define N 1000 //宏定义多条记录typedef struct TICKET ////定义新结构体TICKET{char num[10]; //车次编号char hour[3]; //时间:小时char min[3]; //时间:分钟char from[10]; //起始站char to[10]; //终点站float hours; //车程实际时间int max; //最大车载容量int now; //已售票数}CLASS;int class_num=0; //初始班次总数为0CLASS records[N]; // 多条记录int system_time(); //系统时间void NewMessage(); //新纪录*录入函数******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(int); //判断时间是否超出函数***void find(char s1[],char s2[]); //查询函数//s1为班次//s2为终点站void deletemessage(); //删除函数int findnum(char s1[]); //班次查询函数void get(int,int); //修改及增加班次*char *menu[]={"*****************欢迎使用火车票查询系统*****************", "\n*****************1751200204 何荣荣*********************","\n*******************MENU功能菜单*********************","\n 1. 录入班次","\n 2. 显示所有班次","\n 3. 查询班次","\n 4. 增加班次","\n 5. 售票","\n 6. 退票","\n 7. 修改班次","\n 8. 删除班次","\n 9. 退出"};/**************************主函数*************************/void main(){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 s[5]; //定义要输入的数字功能int c,i;for(i=0;i<11;i++){printf("%s",menu[i]); //输出菜单各项)}i=0;while(c<0||c>9) //判断是否是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 s[5];FILE *fp; //定义文件型指针变量if((fp=fopen("d:车票管理系统0.dat","rb"))!=NULL) //fopen打开文件{printf("车票信息已经存在请选择4增加功能!\n");printf("任意输入则返回菜单\n");scanf("%s",s);i=1;//通过是1}if(i==0){printf("请输入要录入班次总数:\n");scanf("%d",&class_num); //指向班次指针for(i=0;i<class_num;i++){printf("请输入第%d个班次信息:\n",i+1);h=-1;for(;h!=i;) //循环输出{printf("请输入班次:\n");scanf("%s",records[i].num);for(h=0;h<i;h++)if(strcmp(records[h].num,records[i].num)==0)//判断字符串比较是否相等,待比较的字符串{printf("输入错误!该班次已存在!\n");break; //返回}}get(i,j); //修改及增加班次*j=5;}save(); //调用保存函数}}/*******************************显示所有函数********************************/ void Display() //显示所有函数{int i,j;load(); // 调用按班次查询函数ShowTable1(); //线框调用1,不用每次输for(i=0,j=0;i<class_num;i++,j+=2) /////按班次顺序输出{printf("\n|----------|----------|----------|----------|--------|--------|--------|\n");if(whether(i)) //判断时间是否超出函数***printf("|%10s|%5s:%-4s|%10s|%10s|%8.1f|%8d|%8d|",records[i].num,records[i].hour, records[i].min,r ecords[i].from,records[i].to,records[i].hours,records[i].max,records[i].now);elseprintf("|%10s| 已发车|%10s|%10s|%8.1f|%8d|%8d|",records[i].num,records[i].from,records[i].to,records[i].hours,records[i].max,records[i].now);}ShowTable2(j); //线框调用2printf("\n按任意键继续....\n");getch(); /////从控制台读取一个字符,但不显示在屏幕上}/**********************************打印表头***********************************************/void ShowTable1() //线框调用1,不用每次输{int i=2;printf("**************************MESSAGE车程信息**********************************\n");printf("\n|----------|----------|----------|----------|--------|--------|--------|\n");printf("\n| 班次| 发车时间| 起点站| 终点站|行车时间|额定载量| 已售票|\n");}/***************************************打印表尾************************************************/void ShowTable2(int i) //线框调用2,不用每次输。

相关文档
最新文档