一个简单的火车票售票管理系统
火车票管理系统

实训报告题目:火车票管理系统院系:专业:姓名:学号:指导教师:日期:火车票管理系统本题目设计目的是训练学生的基本编程能力,了解管理信息系统的开发流程,熟悉C语言的文件和链表的各种基本操作。
本程序中涉及结构体、链表、文件等方面的知识。
通过本程序的训练,使学生能对C语言的文件操作有一个更深刻的了解,掌握利用链表存储结构实现对火车票信息管理的原理,为进一步开发出高质量的管理信息系统打下坚实的基础。
1、问题定义用所学过的C语言知识(文件,结构体,函数,数组等)编写一个火车票管理系统。
使其有以下功能。
1.输入火车票的信息,包括火车车次号、出发城市、到站城市、出发时间、到站时间、票价等。
2.可以搜索到火车票的信息。
3.可以修改火车票的信息。
4.可以查看以及预定火车票。
5.最后可将火车票的纪录保存到文件。
在问题定义阶段要考虑题目的可行性和需求分析,接下来进入开发阶段,完成系统设计和系统实现的任务。
2、系统设计2.1 总体设计先定义一个结构体,然后采用模块化的程序设计方法,即将较大的任务按照一定的原则分为一个个较小的任务,最后分别设计各个小任务。
需要注意的是划分出来的模块应该相对独立但又相关,且容易理解。
可以用模块化层次结构图(即模块图)来分析其任务的划分,一般从上到下进行,最上面一层是主模块,下面各层是其上一层模块的逐步细化描述。
图2.1 火车票管理系统2.2 详细设计 2.2.1数据结构设计火车票管理系统重点设计(1)struct train {char num[10];/*列车号*/char startcity[10];/*出发城市*/ char reachcity[10];/*目的城市*/ char takeofftime[10];/*发车时间*/ char receivetime[10];/*到达时间*/ int price;/*票价*/int ticketnum ;/*票数*/ };/*订票人的信息*/ struct man {char num[10];/*ID*/ char name[10];/*姓名*/int bookNum ;/*订的票数*/ };(2)/*定义火车信息链表的结点结构*/ typedef struct node进入主界面返回系统模块系统信息输入模块信息输入 火车票预订模块信息模块信息查看模块 信息信息修改模块预定 信息输出模块信息信息保存模块{struct train data ;struct node * next ;}Node,*Link ;/*定义订票人链表的结点结构*/typedef struct Man{struct man data ;struct Man *next ;}book,*bookLink ;这样就定义了一个存储火车信息的结构体,data为struct 结构类型的数据,为struct函数接下来定义火车信息链表的结点结构。
火车票管理系统

火车票管理系统火车票管理系统文档⒈引言本文档旨在介绍火车票管理系统的功能、设计和使用方法。
该系统是为了方便用户购买、查询和管理火车票而开发的,使用户能够更加便捷地进行出行安排。
⒉系统概述⑴系统功能火车票管理系统提供以下主要功能:- 用户注册与登录:用户可以注册新账号,并使用注册信息登录系统。
- 车次查询与预订:用户可以根据出发地、目的地和出发日期等条件查询火车车次,并进行车票预订。
- 车票购买与支付:用户可以选择预订的车票进行购买,并使用合适的支付方式完成支付。
- 车票退订与退款:用户在一定时间范围内可以取消已购的车票,并申请退款。
- 车票改签:用户在一定时间范围内可以申请对已购车票的改签。
- 个人信息管理:用户可以查看、修改个人信息,并查看自己的购票记录。
- 管理员功能:管理员可以管理系统的用户信息、车次信息和订单信息。
⑵用户角色本系统包含以下几种用户角色:- 普通用户:可以进行车次查询、预订和购票等操作。
- 管理员:可以管理系统的用户信息、车次信息和订单信息。
⒊系统设计⑴系统架构火车票管理系统的架构如下图所示:(插入系统架构图)⑵数据库设计系统的核心数据结构包括以下表:- 用户表:保存用户的注册信息和个人信息。
- 车次表:保存火车车次的相关信息,如车次号、起始站、终点站、票价等。
- 订单表:保存用户购买和预订的车票订单信息。
⑶页面设计系统的主要页面包括以下几个:- 登录页:用户输入账号和密码进行登录。
- 注册页:用户填写注册信息进行账号注册。
- 车次查询页:用户输入查询条件进行车次查询。
- 车次详情页:展示选择的车次的具体信息和预订功能。
- 购票页:用户选择座位类型和支付方式进行购票。
- 个人中心页:用户查看个人信息和购票记录,进行车票退订和改签等操作。
- 管理员页面:管理员管理用户信息、车次信息和订单信息。
⒋使用方法⑴用户注册与登录用户可以通过注册页进行账号注册,填写必要的信息后提交注册申请。
火车票售票管理系统 (3)

火车票售票管理系统介绍火车票售票管理系统是一个用于管理火车票售票、订单管理和客户信息的软件系统。
该系统提供了一个方便快捷的平台,使用户能够在线浏览、预订和购买火车票,并对订单进行管理和查询。
功能1. 火车票查询用户可以通过系统提供的火车票查询功能查找目标日期和路线的火车票。
用户可以输入出发地、目的地和日期等信息来查找合适的火车票。
查询结果包括列车的发车时间、到达时间、车次、票价和余票数量等。
2. 火车票预订用户可以查看到的火车票信息后进行预订。
用户需要输入乘车人的信息,并选择座位类型和票数进行预订。
系统会根据用户的选择自动生成订单号,并提供支付链接进行付款。
3. 订单管理用户可以在系统中管理自己的订单。
用户可以查看订单详情,包括订单号、乘车人信息、座位类型、票价和支付状态等。
用户还可以取消未支付的订单,并根据需要重新预订。
4. 客户信息管理系统提供了客户信息管理功能,用户可以在系统中维护个人信息。
用户可以修改个人信息,包括姓名、性别、手机号码和电子邮箱等。
用户也可以查看自己的历史订单和购票记录。
5. 系统管理系统管理员可以对火车票售票管理系统进行管理。
管理员可以管理火车票信息,包括添加新的火车车次、修改票价和调整余票数量等。
管理员还可以管理用户信息,包括添加新用户、修改用户信息和删除用户等。
架构火车票售票管理系统的架构包括前端和后端两部分。
前端前端使用HTML、CSS和JavaScript编写,采用响应式设计,能够在不同终端设备上良好地展示。
前端实现了用户界面和交互逻辑,包括火车票查询、预订、订单管理和客户信息管理等功能。
后端后端使用Java编程语言开发,采用Spring框架和Spring Boot技术,实现了业务逻辑和数据交互。
后端处理用户请求,调用相应的服务进行数据处理和查询,并将结果返回给前端。
数据库设计火车票售票管理系统使用关系型数据库存储数据。
数据库中包括以下主要表:用户表存储用户的个人信息,包括用户ID、姓名、性别、手机号码和电子邮箱等。
火车票售票系统C语言大作业,基于C语言实现简单的12306火车售票系统

⽕车票售票系统C语⾔⼤作业,基于C语⾔实现简单的12306⽕车售票系统程序设计要求⽤C语⾔写⼀个简单的⽕车售票系统,主要实现的功能为:录⼊班次信息浏览班次信息按班次号查询按终点站查询按余票数量排序保存售票退票更新班次信息退出系统所有的班次信息保存在number.dat⽂件中,排序过后的保存在sort.dat中(.dat是⼀种⼆进制⽂件)。
在编写的过程中我觉得在判断⽕车的状态⽐较值得深究。
这⾥假设⽕车主要有四种状态:1.未发车2.已发车3.停⽌检票4.停⽌退票在程序中,思路是将代表发车时间的字符串转化为整型,再和系统现在的时间进⾏⼤⼩⽐较,主要采⽤if判断各种情况。
其中atime代表的是发车时间的整型数,btime代表的是系统时间的整型数,具体实现如下:if(atime<=btime) //已经发车return 1;if(((atime-btime<=30)&&(atime-btime>5)&&(atime/100==btime/100))||(((atime%100+(60-btime%100))<=30)&&(atime%100+(60-btime%100))>5&&(atime/100-btime/100==1))) //距发车半⼩时以内,停⽌退票,%表⽰取余return 2;if(((atime-btime<=5)&&(atime/100==btime/100))||((atime%100+(60-btime%100)&&(atime/100-btime/100==1))<=5)) //距发车前五分钟内停⽌检票return 3;return 0; //可以办理购退票在判断退票时如果两个时间的⼩时数是⼀样的,则它们的分钟数如果相差在30之内即半⼩时之内或者发车时间的⼩时和系统时间的⼩时相差⼀个1,并且发车时间的分钟数⼩于30,系统时间的分钟⼤于30,则它们之间也就相差在30之内,此时代表停⽌退票。
火车票管理系统

火车票管理系统火车票管理系统是一款基于网络技术和信息管理技术的管理系统,它可以对火车票的销售和管理进行全面的控制和监督。
目前,火车票管理系统已经被广泛地应用于火车票售卖、系统自动调度、车站售票、售票员管理、旅客管理等方面。
1. 系统概述火车票管理系统是一种基于现代网络技术和信息管理技术的高效、灵活、安全、完整的软件系统,它由火车票售卖、系统调度、售票员管理、旅客管理等模块组成。
该系统能够提供安全、准确、高效的售票服务,保证了火车票售卖的正常运作。
2. 功能介绍2.1 火车票售卖管理火车票售卖管理是该系统的核心模块。
在这个模块中,用户可以进行火车票查询、购票、退票、改签等功能。
用户可以输入出发地、目的地和乘车日期等信息查询车票。
如果有余票,乘客可以通过本系统在线购票。
如果乘客需要退票或更改,也可以在线操作,在规定的时间内取消或改签订单。
2.2 系统自动调度模块系统自动调度模块利用网络技术和信息管理技术自动安排日程安排和行程规划。
通过该模块,系统可以将不同地域、不同出发时间、不同的乘客等信息进行分析和计算,自动调度出合适的车次和座位,避免了人工计算所带来的时间和人为成本。
2.3 车站售票管理车站售票管理是该系统的重要组成部分。
在该模块中,车站售票员可以对售票、退票、改签、延误等问题进行处理,保证了每个乘客的行程顺利进行。
2.4 售票员管理售票员管理是该系统的另一个重要组成部分。
在该模块中,可以对售票员的信息进行管理,包括姓名、工号、部门、权限等。
通过该模块可以保证系统的稳定性、安全性、高效性等方面的优良表现。
2.5 旅客管理旅客管理是一个基于用户信息的管理模块。
用户通过本系统时必须进行身份认证,通过系统为其建立个人档案,包括姓名、身份证号码、联系方式等信息。
在旅行过程中,系统会根据乘客的行程记录其乘车信息、购票人数等信息,以便于车站售票员进行快捷查找,将其与票据信息进行核对,确保车站和车上护照的总透明。
火车票预订系统

火车票预订系统
火车票预订系统是一个通过互联网进行火车票预订和购买
的系统。
它允许用户在电脑或手机上方便地查看火车票信息、选择座位、支付订单,并获得电子车票。
以下是一个
普遍的火车票预订系统的功能:
1. 火车票查询:用户可以根据出发地、目的地、日期等信
息查询火车票的可用性。
2. 车次选择:系统显示查询结果,并提供票价、出发时间、到达时间等信息,用户可以选择适合的车次。
3. 座位选择:用户可以查看火车车厢的座位布局图,选择
适合的座位。
4. 乘客信息:用户需要提供乘客的姓名、身份证号码等信息。
5. 支付:用户可以通过多种支付方式支付订单,如支付宝、微信支付、银联支付等。
6. 订单确认:用户确认订单后,系统生成订单号,并发送
确认信息到用户的手机或电子邮箱。
7. 电子车票:用户可以在系统上查看和下载电子车票,也
可以选择短信或电子邮件接收电子车票信息。
8. 订单管理:系统允许用户在个人账户中查看和管理订单
信息,包括修改座位、取消订单等操作。
9. 退票和改签:用户可以申请退票或改签,系统根据规定
的退票和改签规则进行处理。
10. 客户服务:系统提供在线客服和客服电话等渠道进行咨询和投诉。
以上只是火车票预订系统的一些基本功能,实际的系统可能还包括其他功能和特点,以满足用户的需求。
火车票订票管理系统初步设计软件设计

南京农业大学软件设计报告设计题目:火车票订票管理系统初步设计一摘要每年都会有买票高峰期,为了人们更方便的购买火车票,铁路部也努力地改进购票系统。
这是我对订购火车票系统的一些简单设计。
通过设计一个简单的火车票订购管理数据库系统,实现购票,查找购票者信息,查询余票信息,退出系统等功能.这只是理论设计,包含关系表以及预想界面图但不包含具体软件的实现及测试。
关键字:订购火车票火车票管理系统数据库设计二引言课题背景及意义:火车站市场的管理问题,是值得我们重视的一个问题,订票是客运业务中的一个最基本的业务,它虽然只是火车站业务的一小部分,但是它涉及到管理与客户服务等多方面,因此网上订票可以缓解订票高峰时期的客运压力,并为用户提供方便快捷的订票服务。
这次设计通过火车票管理数据库系统的设计,用visio 2007、SQL Server2000pencil等绘图软件,给需求分析,逻辑架构,数据库设计,关系表,物理设计等流程的数据库进行建立,并设想出合理的用户使用界面,给火车票管理员提供理论参考。
三系统结构分析需求分析:(1)管理员在已注册的情况下,输入账号和密码进行登录,登陆后界面会显示管理员的权限:查看用户信息,查看用户所购车票,删除用户所购车票,修改用户信息,添加用户,删除,添加车票信息等。
(2)购票者:输入始发地,目的地,日期进行查询,购票者的属性有姓名,用户名,身份证号,联系方式等。
车票的属性有始发地,目的地,发车时间,价格,票种,首先,数据库设计要能体现系统的需求,准确表达数据间的关系;其次,保证数据的准确性和一致性,通过外码、非空、限制、唯一索引等保证数据的健壮。
在此火车票订票管理系统中系统的功能结构划分如下:订票管理系统功能模块示意图三数据库设计概念结构设计:根据系统功能设计得出系统的信息,画出E-R图。
这个系统是由铁路部管理员使用的,所以首先由管理员通过账号和密码进行登录(1)管理员E—R图:(2)总E-R图N逻辑设计阶段:根据以上的关系,我得到以下的数据表:预期功能界面图总结:这就是我的火车票订票系统设计,只是简单设计了一下,还有很多不足,有待以后改善.。
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车票销售功能实现车票销售功能是车票管理系统的核心功能之一。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一个简单的火车票售票管理系统(原创)#include<stdio.h>#include<malloc.h>#define MAX 100#define N 50typedef struct time //时间类型{int x,y,z; //分别对应年,月,日}TIME;typedef struct cnode //票信息类型{int no; //票号int id; //购票人证件号TIME date; //购票日期struct cnode *next;}CNODE;typedef struct tnode //车次信息类型{char data; //车次编号struct tnode *lchild,*rchild;CNODE *head;}TNODE;void create(); //按车次建立二叉排序树void insert(int ); //增加新的车次(二叉排序树的插入)void del(); //取消车次(二叉排序树节点删除)void inorder(TNODE *); //中序遍历车次二叉排序树(仅显示车次信息)void inorder_all(TNODE *); //中序遍历车次二叉排序树(显示车次及售票信息)void preorder(TNODE *); //先序遍历车次二叉排序树(仅显示车次信息)TNODE *search(); //按车次编号搜索CNODE *insert_c(CNODE *); //插入新的售票信息(单张)CNODE *insert_c_more(CNODE *); //插入新的售票信息(批量)CNODE *del_c(CNODE *,CNODE *); //退票处理(删除售票信息)CNODE *search_c(CNODE *,int); //按票号查询void search_c_id(CNODE *,int); //按购票人证件号搜索(限定某车次)void search_c_id_all(TNODE *,int); //按购票人证件号搜索(所有车次)void search_date(CNODE *,TIME); //按购票日期搜索(限定某车次)void search_date_all(TNODE *,TIME); //按购票日期搜索(所有车次)void print_c(CNODE *); //输出售票纪录(单张)void print_c_all(CNODE *); //输出售票纪录(批量)TNODE *root=NULL;void main(){int i,func,no,ok;TNODE *t;CNODE *c;TIME d;printf("\n\n\n");for(i=0;i<15;i++) printf("=");printf("列车售票信息管理系统");for(i=0;i<15;i++) printf("=");printf("\n");printf("\t1.车次信息管理\n");printf("\t2.售票记录管理\n");printf("\t3.售票记录查询\n");printf("\t4.售票记录一览\n");printf("\t5.退出系统\n");for(i=0;i<N;i++) printf("=");printf("\n请选择您所需要的功能:");fflush(stdin);scanf("%d",&func);switch(func){case 1:printf("\n\n车次信息管理>>>>\n");for(i=0;i<N;i++) printf("=");printf("\n\t1.增加新的车次");printf("\n\t2.取消车次");printf("\n\t3.返回上级菜单\n");for(i=0;i<N;i++) printf("=");printf("\n请选择您所需要的功能:");fflush(stdin);scanf("%d",&func);switch(func){case 1:create();printf("\n售票信息更新成功!\n\n");break;case 2:del();break;case 3:main();break;default:printf("\n[错误]功能号输入有误!请重新输入!");}break;case 2:printf("\n\n售票记录管理>>>>\n");for(i=0;i<N;i++) printf("=");printf("\n\t1.增加新的售票记录");printf("\n\t2.退票");printf("\n\t3.返回上级菜单\n");for(i=0;i<N;i++) printf("=");printf("\n请选择您所需要的功能:");fflush(stdin);scanf("%d",&func);switch(func){case 1:t=search();if(t!=NULL) t->head=insert_c_more(t->head);break;case 2:t=search();printf("需要退票的票号:");scanf("%d",&no);t->head=del_c(t->head,search_c(t->head,no));break;case 3:main();break;default:printf("\n[错误]功能号输入有误!请重新输入!");}break;case 3:printf("\n\n售票记录查询>>>>\n");for(i=0;i<N;i++) printf("=");printf("\n\t1.按票号搜索");printf("\n\t2.按购票者证件号搜索");printf("\n\t3.按购票日期搜索");printf("\n\t4.返回上级菜单\n");for(i=0;i<N;i++) printf("=");printf("\n请选择您所需要的功能:");fflush(stdin);scanf("%d",&func);switch(func){case 1:t=search();if(t!=NULL){printf("\n请输入您所要查询的票号:");scanf("%d",&no);c=search_c(t->head,no);if(c==NULL) printf("[错误]没有该票号的纪录!该票还未售出或为废票!自动返回上级菜单\n...");}break;case 2:printf("\n请输入您所要查询的购票者证件号:");scanf("%d",&no);search_c_id_all(root,no);printf("搜索完毕!自动返回上级菜单\n...");break;case 3:do{printf("\n请输入您所要查询的日期(格式: yy-mm-dd):");scanf("%d-%d-%d",&d.x,&d.y,&d.z);if(d.y<13&&d.y>0){if(d.y==1||d.y==3||d.y==5||d.y==7||d.y==8||d.y==10||d.y==12)if(d.z<32&&d.z>0) ok=1;else if(d.z==2)if(d.z<30&&d.z>0) ok=1;elseif(d.z<31&&d.z>0) ok=1;}else ok=0;if(!ok) printf("\n[错误]日期输入有误!请重新输入!");}while(!ok);printf("\n指定车次吗?(1->是,0->否):");scanf("%d",&ok);if(ok) search_date(search()->head,d);else search_date_all(root,d);break;case 4:main();break;default:printf("\n[错误]功能号输入有误!自动返回上级菜单\n...");}break;case 4:printf("\n\n售票记录一览>>>>\n");for(i=0;i<N;i++) printf("=");printf("\n\t1.仅浏览车次");printf("\n\t2.指定车次已售票记录");printf("\n\t3.所有车次已售票记录");printf("\n\t4.测试:先序遍历车次");printf("\n\t5.返回上级菜单\n");for(i=0;i<N;i++) printf("=");printf("\n请选择您所需要的功能:");fflush(stdin);scanf("%d",&func);switch(func){case 1:printf("\n+++仅浏览车次\n");if(root==NULL) printf("[错误]无车次纪录!");else{inorder(root);printf("\n");}break;case 2:printf("\n+++指定车次已售票记录\n");t=search();if(t!=NULL){print_c_all(t->head);printf("\n");}break;case 3:printf("\n+++所有车次已售票记录\n");if(root==NULL) printf("[错误]无车次纪录!");else{inorder_all(root);printf("\n");}break;case 4:printf("\n+++测试:先序遍历车次\n");if(root==NULL) printf("[错误]无车次纪录!");else{preorder(root);printf("\n");}break;case 5:main();break;default:printf("\n[错误]功能号输入有误!自动返回上级菜单\n...");}break;case 5:exit(0);default:printf("\n[错误]功能号输入有误!请重新输入!");}main();}void inorder_all(TNODE *ptr){if(ptr!=NULL){inorder_all(ptr->lchild);printf("%d:\n",ptr->data);print_c_all(ptr->head);printf("\n");inorder_all(ptr->rchild);}}void inorder(TNODE *ptr){if(ptr!=NULL){inorder(ptr->lchild);printf("%d\t",ptr->data);inorder(ptr->rchild);}}void preorder(TNODE *ptr){if(ptr!=NULL){printf("%d\t ",ptr->data);preorder(ptr->lchild);preorder(ptr->rchild);}}void print_c(CNODE *tkt){if(tkt!=NULL)printf("\t%d\t%d\t%d-%d-%d\n",tkt->no,tkt->id,tkt->date.x,tkt->date.y,tkt->date.z); }void print_c_all(CNODE *head){int i=0,j=0;if(head==NULL){printf("\n记录为空!\n");return;}for(i=0;i<N;i++) printf("=");printf("\nNO\t票号\t购票者证件号\t购票日期(年-月-日)\n");for(i=0;i<N;i++) printf("-");for(j=0;head!=NULL;j++){printf("\n%d",j);print_c(head);head=head->next;}printf("\n");for(i=0;i<N;i++) printf("-");printf("\n总计%d 条记录\n",j);for(i=0;i<N;i++) printf("=");printf("\n");}void create(){int n,i;int k[MAX];printf("\n您所希望增加车次的数量:");scanf("%d",&n);for(i=0;i<n;i++){printf("新增第%d列车次:",i+1);scanf("%d",&k[i]);}for(i=0;i<n;i++)insert(k[i]);}void insert(int m){TNODE *p1,*p2;if(root==NULL){root=(TNODE *)malloc(sizeof(TNODE));root->data=m;root->lchild=root->rchild=NULL;root->head=NULL;}else{p1=root;while(m!=p1->data){if((m<p1->data)&&(p1->lchild!=NULL)) p1=p1->lchild;else if((m>p1->data)&&(p1->rchild!=NULL)) p1=p1->rchild;else if((m<p1->data)&&(p1->lchild==NULL)){p2=(TNODE *)malloc(sizeof(TNODE));p2->data=m;p2->lchild=p2->rchild=NULL;p2->head=NULL;p1->lchild=p2;return;}else if((m>p1->data)&&(p1->rchild==NULL)){p2=(TNODE *)malloc(sizeof(TNODE));p2->data=m;p2->lchild=p2->rchild=NULL;p2->head=NULL;p1->rchild=p2;return;}}printf("\n[错误]未能成功增加车次%d,车次号%d 已存在!",m,m);}}TNODE *search(){int key;TNODE *p;p=root;printf("\n输入您所要查找的车次编号:");scanf("%d",&key);while(p!=NULL&&p->data!=key){if(key<p->data){p=p->lchild;}else if(key>p->data){p=p->rchild;}}if(p==NULL) printf("\n该车次不存在!");return(p);}void del(){int key;TNODE *p1,*p2,*p3,*temp;p1=p2=root;p3=temp=NULL;printf("\n请输入您想要取消的车次编号:");scanf("%d",&key);while(p2!=NULL&&p2->data!=key){if(key<p2->data){p1=p2;p2=p2->lchild;}else if(key>p2->data){p1=p2;p2=p1->rchild;}}if(p2==NULL){printf("\n[错误]该车次不存在!返回上级菜单\n...");return;} else if(p2->lchild==NULL&&p2->rchild==NULL){if(p1->lchild==p2) p1->lchild=NULL;if(p1->rchild==p2) p1->rchild=NULL;temp=p2;if(root==p2) {temp=root;root=NULL;}}else{if(p2->rchild==NULL){temp=p2->lchild;p2->data=temp->data;p2->lchild=temp->lchild;p2->rchild=temp->rchild;}else if(p2->lchild==NULL){temp=p2->rchild;p2->data=temp->data;p2->lchild=temp->lchild;p2->rchild=temp->rchild;}else{p3=p2;temp=p2->lchild;while(temp->rchild!=NULL){p3=temp;temp=temp->rchild;}p2->data=temp->data;if(p3==p2) p3->lchild=temp->lchild;else p3->rchild=temp->lchild;}}free(temp);printf("车次%d 已取消!\n\n",key);}CNODE *insert_c(CNODE *head){CNODE *k,*p;k=(CNODE *)malloc(sizeof(CNODE));do{printf("\n车票编号:");scanf("%d",&k->no);p=search_c(head,k->no);if(p!=NULL) printf("\n[错误]该票已被购买!请重新选择!\n");}while(p!=NULL);printf("购票者证件号:");scanf("%d",&k->id);printf("购票日期(格式:yy-mm-dd):");scanf("%d-%d-%d",&k->date.x,&k->date.y,&k->date.z);k->next=head;head=k;return(head);}CNODE *insert_c_more(CNODE *head){int n,i;printf("\n请输入批量新增售票记录数:");fflush(stdin);scanf("%d",&n);for(i=0;i<n;i++) head=insert_c(head);printf("\n售票记录更新成功!\n");return(head);}CNODE *search_c(CNODE *head,int id){CNODE *temp,*s;s=temp=head;while(temp!=NULL&&temp->id!=id){s=temp;temp=temp->next;} print_c(temp);if(temp!=NULL) return(s);else return NULL;}void search_c_id(CNODE *head,int id){CNODE *s,*head_s;s=head_s=NULL;if(head==NULL) printf("无该证件号纪录!\n");while(head!=NULL){if(head->id==id){s=(CNODE *)malloc(sizeof(CNODE));s->no=head->no;s->id=head->id;s->date=head->date;s->next=head_s;head_s=s;}head=head->next;}print_c_all(head_s);printf("\n");}void search_c_id_all(TNODE *ptr,int id){if(ptr!=NULL){search_c_id_all(ptr->lchild,id);printf("\n车次:%d\n",ptr->data);search_c_id(ptr->head,id);search_c_id_all(ptr->rchild,id);}}void search_date(CNODE *head,TIME t){CNODE *s,*head_s;s=head_s=NULL;while(head!=NULL){if(t.x==head->date.x)if(t.y==head->date.y)if(t.z==head->date.z){s=(CNODE *)malloc(sizeof(CNODE));s->no=head->no;s->id=head->id;s->date=head->date;s->next=head_s;head_s=s;}head=head->next;}print_c_all(head_s);printf("\n");}void search_date_all(TNODE *ptr,TIME t){if(ptr!=NULL){search_date_all(ptr->lchild,t);printf("\n车次:%d\n",ptr->data);search_date(ptr->head,t);search_date_all(ptr->rchild,t);}}CNODE *del_c(CNODE *head,CNODE *p){CNODE *temp;if(p==NULL) printf("[错误]该票未售出或为废票!返回上级菜单\n...");else if(p==head){head=NULL;free(p);}else{temp=p->next;p->next=temp->next;free(temp);}return(head);}。