c++课程设计-车票管理系统
车票管理系统程序设计报告
车票管理系统程序设计报告一、引言车票管理系统是一个用于管理车票信息的软件系统。
该系统旨在提供方便快捷的购票、查询、退票等功能,以满足用户的出行需求。
本报告将详细介绍车票管理系统的设计思路、功能模块、数据结构以及程序实现等内容。
二、需求分析1. 功能需求车票管理系统需要具备以下功能:- 用户注册与登录:用户可以通过注册账号并登录系统,以便进行购票、查询等操作。
- 车票购买:用户可以根据出发地、目的地、日期等条件查询车票,并进行购买。
- 车票查询:用户可以根据出发地、目的地、日期等条件查询车票的余票情况。
- 车票退票:用户可以在购票后一定时间内申请退票,并进行退款。
- 车票管理:管理员可以对车票信息进行管理,包括添加、修改、删除等操作。
2. 性能需求车票管理系统需要满足以下性能需求:- 响应速度:系统应能够在用户购票、查询等操作时快速响应,提供流畅的用户体验。
- 安全性:系统应具备一定的安全机制,保护用户的个人信息和交易数据不被泄露或篡改。
- 扩展性:系统应具备一定的扩展性,方便后续对功能进行升级和扩展。
三、系统设计1. 架构设计车票管理系统采用三层架构设计,包括表示层、业务逻辑层和数据访问层。
表示层负责与用户进行交互,接收用户的请求并展示相应的界面;业务逻辑层负责处理用户的请求,进行业务逻辑的处理;数据访问层负责与数据库进行交互,进行数据的读取和写入操作。
2. 功能模块设计车票管理系统包括以下功能模块:- 用户模块:负责用户的注册、登录、个人信息管理等操作。
- 车票模块:负责车票的购买、查询、退票等操作。
- 管理员模块:负责管理员对车票信息的管理操作。
3. 数据结构设计车票管理系统的数据结构包括以下表:- 用户表:保存用户的基本信息,包括用户名、密码、手机号等。
- 车票表:保存车票的详细信息,包括车次、出发地、目的地、日期、余票数量等。
- 订单表:保存用户购票的订单信息,包括用户ID、车票ID、购票时间等。
c语言购票课程设计
c语言购票课程设计一、课程目标知识目标:1. 理解C语言中基本的数据类型和运算符,并能够运用到实际编程中;2. 学会使用C语言进行顺序结构、选择结构和循环结构的编程;3. 掌握C语言数组的使用,并能实现对数据的存储和操作;4. 了解C语言函数的定义和调用,能够编写简单的函数实现特定功能;5. 了解结构体类型,能够使用结构体表示实际问题的数据结构。
技能目标:1. 能够运用C语言编写一个简单的购票系统,实现票务的查询、购买和退票功能;2. 培养学生独立分析问题、设计算法和编写程序的能力;3. 提高学生调试程序、解决问题的实际操作能力。
情感态度价值观目标:1. 激发学生对计算机编程的兴趣,培养学习编程的积极态度;2. 培养学生团队合作意识,提高沟通协调能力;3. 增强学生面对困难的勇气和信心,培养克服困难的毅力;4. 引导学生认识到编程在实际生活中的应用,体会科技改变生活的价值。
课程性质:本课程为C语言编程实践课程,以项目驱动的方式进行教学,让学生在实际编程过程中掌握C语言的基本知识和技能。
学生特点:学生已具备一定的计算机操作能力,对编程有初步的了解,但实际编程经验不足。
教学要求:注重理论与实践相结合,强化动手实践,培养学生编程思维和解决问题的能力。
通过项目实践,使学生能够将所学知识运用到实际编程中,达到学以致用的目的。
二、教学内容1. C语言基础知识回顾:数据类型、变量、常量、运算符、表达式;2. 控制结构:顺序结构、选择结构(if语句、switch语句)、循环结构(for循环、while循环、do-while循环);3. 数组:一维数组、二维数组,数组的使用和操作;4. 函数:函数定义、函数调用、函数参数传递、递归函数;5. 结构体:结构体定义、结构体变量声明和初始化、结构体数组、结构体指针;6. 指针:指针的基本概念、指针的使用、指针与数组、指针与函数、指针与结构体;7. 文件操作:文件打开与关闭、文件的读写操作、文件定位;8. 购票系统设计:需求分析、系统设计、模块划分、功能实现;- 票务查询功能:查询可用票数、票价等信息;- 购票功能:选择座位、支付、生成订单;- 退票功能:退票、退款处理。
车票管理系统
车票管理系统⒈引言⑴目的本文档旨在介绍车票管理系统的设计和功能,包括系统的概述、功能需求、非功能需求、系统架构、用户界面设计、数据模型等。
⑵范围车票管理系统是一个用于管理车票销售、查询、退票的软件系统。
该系统可以提供便捷的购票、查询和退票功能,方便用户使用。
⒉概述⑴系统背景随着交通网络的发展,车票的销售量也逐渐增加。
为了满足用户对购票、查询和退票的需求,开发一个功能完善、易于使用的车票管理系统势在必行。
⑵功能车票管理系统将包括以下主要功能:●用户注册与登录●车票购买●车票查询●车票退票●管理员功能:车次管理、用户管理、车站管理等⒊功能需求⑴用户注册与登录用户可以通过注册账号并登录系统,以便进行车票购买、查询和退票等操作。
⑵车票购买用户可以选择车次、座位类型、乘车日期和出发站点来购买车票。
购买成功后,系统将有效的车票。
⑶车票查询用户可以根据出发站点、目的站点和乘车日期等条件来查询车票信息,包括车票余量、票价等。
⑷车票退票用户可以在规定的时间范围内申请退票,并按照规定的退票规则进行操作。
⑸管理员功能管理员可以管理车次信息,包括添加、编辑、删除车次。
管理用户信息,包括查看用户购票记录。
管理车站信息,包括添加、编辑、删除车站。
⒋非功能需求⑴性能系统应具备高并发处理能力,可以同时处理大量用户的购票、查询和退票请求。
⑵可靠性系统应具备高可靠性,能够保证购票、查询和退票等功能的正常运行,避免数据丢失或出错。
⑶安全性系统应具备良好的安全性,保护用户的个人信息和支付信息不被泄露。
⒌系统架构车票管理系统将使用客户端-服务器架构,其中客户端通过网页浏览器访问服务器端提供的服务。
⒍用户界面设计车票管理系统的用户界面应简洁、直观,方便用户进行操作。
设计应符合通用的界面规范,保持一致性和易用性。
⒎数据模型车票管理系统的数据模型将包括以下实体:●用户:保存用户信息,包括用户名、密码、姓名、方式号等。
●车次:保存车次信息,包括车次编号、出发站点、目的站点、出发时间、到达时间等。
数据库课程设计实验报告-火车票售票管理系统
数据库课程设计报告 -------火车售票管理信息系统软件学院软件工程2013级x班姓名: xx学号:2013xxxxxxxx目录一、系统开发平台 (1)四、需求分析 (2)4.1 用户需求说明 (2)4.1.1 数据需求 (2)4.1.2 事务需求 (3)4.2 系统需求说明 (4)五、数据库逻辑设计 (4)5.1 ER图 (4)5.2 数据字典 (5)5.3 关系表 (7)六、数据库物理设计 (7)6.1 索引 (7)6.2 视图本节可选 (8)6.3 安全机制 (8)七、应用程序设计 (8)7.1 功能模块 (8)7.2 界面设计 (15)7.3 事务设计 (15)八、测试和运行 (16)九、总结 (16)一、系统开发平台题目:对火车站的售票进行管理。
主要功能:车次管理(车次、起止地点、到达时间、开车时间)、每一车次的车票管理(车厢号、座位号)、售票、退票、查询、异常处理。
开发工具:eclipse数据库:mysql操作系统:windows8.1二、数据库规划2.1 任务陈述:做一个火车票售票管理系统:对火车站的售票进行管理。
主要功能:车次管理(车次、起止地点、到达时间、开车时间)、每一车次的车票管理(车厢号、座位号)、售票、退票、查询、异常处理。
2.2 任务目标完成一个火车票售票管理系统,要实现管理员对车票的增添以及删改功能,同时需要实现用户对车票的查询购买,以及出现调整之后的退票服务。
三、系统定义3.1 系统边界管理员:可以对车票以及车次进行删改操作。
用户:可以买票,但是不可以对火车票进行添加操作3.2 用户视图3.2.1 管理员视图(1)列车管理:包括列车的录入、查询、修改和删除。
(2)用户管理:包括系统使用用户的添加、查询、修改、删除等。
在线支付用户身份信息用户注册车次设置管理员车次信息录入用户信息管理票务系统车站实际情况(3)系统数据处理:数据查询,根据关键字过滤,查看当前车次信息,车票信息,用户信息以及处理历史。
C语言课程设计报告 火 车 售 票 系 统
一、课程设计的原始资料及依据在现代社会,火车以其安全,舒适以及其服务的周到使愈来愈多的人选择了火车为长距离出行的交通工具,这就使火车公司以及车站的工作量愈来愈大,若仍然使用文件或者人工来管理公司、车站、火车、列班、路线、客户以及售票的信息,那无疑在效率上会大打折扣。
21世纪的今天,信息社会占着主流地位,计算机在各行各业中的运用已经得到普及,自动化、信息化的管理越来越广泛应用于各个领域。
利用计算机来储存和管理公司、车站、火车、列班、车线、客户以及售票的信息成为了首选,在这种情况下,火车订票系统就显得非常重要了。
两个客户名单可分别由线性表和队列实现。
为查找方便,已订票客户的线性表应按客户姓名有序,并且,为插入和删除方便,应以链表作存储结构。
由于预约人数无法预计,队列也应以链表作存储结构。
整个系统需汇总各条路线的情况登录在一张线性表上,由于路线基本不变,可采用顺序存储结构,并按车次有序或按终点站名有序。
每条路线是这张表上的一个记录,包含上述8个域,其中乘员名单域为指向乘员名单链表的头指针,等候替补的客户名单域为分别指向队头和队尾的指针。
队列(Queue)是只允许在一端进行插入,而在另一端进行删除的运算受限的线性表。
用队列来进行客户信息的存储。
编辑用户使用菜单,内容包括:输入列班信息,保存列班信息,读取列班信息,查找列班信息,删除列班信息,订票信息,退票信息以及修改信息。
二、课程设计主要内容及要求1. 列车基本信息管理:输入所有列班信息。
每条路线所涉及的信息有:终点站名、车次号、车厢号、开车周日(星期几)、乘员定额、余票量、已订票的客户名单(包括姓名、订票量、座位等级1,2或3)以及等候替补的客户名单(包括姓名、所需的票量)。
2.列车基本信息查询:按车次号查找,按抵达站查找,按路线查找三种查找方式进行查找。
3. 订票管理:客户对想要购买的票进行订票。
3. 退票管理:将不想要的票进行退票。
三、对课程设计说明书撰写内容、格式、字数的要求1.课程设计说明书是体现和总结课程设计成果的载体,主要内容包括:设计题目、设计目的、设备器材、设计原理及内容、设计步骤、遇到的问题及解决方法、设计总结、设计小组评语、参考文献等。
C语言编程---火车订票系统源代码
火车订票系统源码(一)#include <conio.h>#include <stdio.h>#include <stdlib.h>#include <string.h>intshoudsave=0 ;int count1=0,count2=0,mark=0,mark1=0 ;/*定义存储火车信息的结构体*/struct train{char num[10];/*列车号*/char city[10];/*目的城市*/char takeoffTime[10];/*发车时间*/char receiveTime[10];/*到达时间*/int price;/*票价*/intbookNum ;/*票数*/};/*订票人的信息*/struct man{charnum[10];/*ID*/char name[10];/*姓名*/intbookNum ;/*需求的票数*/};/*定义火车信息链表的结点结构*/typedefstruct node{struct train data ;struct node * next ;}Node,*Link ;/*定义订票人链表的结点结构*/typedefstruct people{struct man data ;struct people*next ;}bookMan,*bookManLink ;/* 初始界面*/voidprintInterface(){puts("********************************************************"); puts("* Welcome to use the system of booking tickets *");puts("********************************************************"); puts("* You can choose the operation: *");puts("* 1:Insert a train information *");puts("* 2:Inquire a train information *");puts("* 3:Book a train ticket *");puts("* 4:Update the train information *");puts("* 5:Advice to you about the train *");puts("* 6:save information to file *");puts("* 7:quit the system *");puts("********************************************************"); }/*添加一个火车信息*/voidInsertTraininfo(Link linkhead){struct node *p,*r,*s ;charnum[10];r = linkhead ;s = linkhead->next ;while(r->next!=NULL)r=r->next ;while(1){printf("please input the number of the train(0-return)");scanf("%s",num);if(strcmp(num,"0")==0)break ;/*判断是否已经存在*/while(s){if(strcmp(s->data.num,num)==0){printf("the train '%s'has been born!\n",num);return ;}s = s->next ;}p = (struct node*)malloc(sizeof(struct node));strcpy(p->data.num,num);printf("Input the city where the train will reach:");scanf("%s",p->data.city);printf("Input the time which the train take off:");scanf("%s",p->data.takeoffTime);printf("Input the time which the train receive:");scanf("%s",&p->data.receiveTime);printf("Input the price of ticket:");scanf("%d",&p->data.price);printf("Input the number of booked tickets:");scanf("%d",&p->data.bookNum);p->next=NULL ;r->next=p ;r=p ;shoudsave = 1 ;}}/*打印火车票信息*/voidprintTrainInfo(struct node*p){puts("\nThe following is the record you want:");printf(">>number of train: %s\n",p->data.num);printf(">>city the train will reach: %s\n",p->data.city);printf(">>the time the train take off: %s\nthe time the train reach: %s\n",p->data.takeoffTime,p->data.receiveTime);printf(">>the price of the ticket: %d\n",p->data.price);printf(">>the number of booked tickets: %d\n",p->data.bookNum);}struct node * Locate1(Link l,charfindmess[],char numorcity[]){Node*r ;if(strcmp(numorcity,"num")==0){r=l->next ;while(r){if(strcmp(r->data.num,findmess)==0)return r ;r=r->next ;}}else if(strcmp(numorcity,"city")==0){r=l->next ;while(r){if(strcmp(r->data.city,findmess)==0)return r ;r=r->next ;}}return 0 ;}/*查询火车信息*/voidQueryTrain(Link l){Node *p ;intsel ;char str1[5],str2[10];if(!l->next){printf("There is not any record !");return ;}printf("Choose the way:\n>>1:according to the number of train;\n>>2:according to the city:\n");scanf("%d",&sel);if(sel==1){printf("Input the the number of train:");scanf("%s",str1);p=Locate1(l,str1,"num");if(p){printTrainInfo(p);}else{mark1=1 ;printf("\nthe file can't be found!");}}else if(sel==2){printf("Input the city:");scanf("%s",str2);p=Locate1(l,str2,"city");if(p){printTrainInfo(p);}else{mark1=1 ;printf("\nthe file can't be found!");}}}/*订票子模块*/voidBookTicket(Link l,bookManLink k){Node*r[10],*p ;charch,dem ;bookMan*v,*h ;int i=0,t=0 ;charstr[10],str1[10],str2[10];v=k ;while(v->next!=NULL)v=v->next ;printf("Input the city you want to go: ");scanf("%s",&str);p=l->next ;while(p!=NULL){if(strcmp(p->data.city,str)==0){r[i]=p ;i++;}p=p->next ;}printf("\n\nthe number of record have %d\n",i);for(t=0;t<i;t++)printTrainInfo(r[t]);if(i==0)printf("\n\t\t\tSorry!Can't find the train for you!\n"); else{printf("\ndo you want to book it?<1/0>\n");scanf("%d",&ch);if(ch == 1){h=(bookMan*)malloc(sizeof(bookMan)); printf("Input your name: ");scanf("%s",&str1);strcpy(h->,str1);printf("Input your id: ");scanf("%s",&str2);strcpy(h->data.num,str2);printf("Input your bookNum: ");scanf("%d",&dem);h->data.bookNum=dem ;h->next=NULL ;v->next=h ;v=h ;printf("\nLucky!you have booked a ticket!"); getch();shoudsave=1 ;}}}bookMan*Locate2(bookManLinkk,charfindmess[]) {bookMan*r ;r=k->next ;while(r){if(strcmp(r->data.num,findmess)==0){mark=1 ;return r ;}r=r->next ;}return 0 ;}/*修改火车信息*/voidUpdateInfo(Link l){Node*p ;charfindmess[20],ch ;if(!l->next){printf("\nthere isn't record for you to modify!\n"); return ;}else{QueryTrain(l);if(mark1==0){printf("\nDo you want to modify it?\n"); getchar();scanf("%c",&ch);if(ch=='y');{printf("\nInput the number of the train:");scanf("%s",findmess);p=Locate1(l,findmess,"num");if(p){printf("Input new number of train:");scanf("%s",&p->data.num);printf("Input new city the train will reach:");scanf("%s",&p->data.city);printf("Input new time the train take off");scanf("%s",&p->data.takeoffTime);printf("Input new time the train reach:");scanf("%s",&p->data.receiveTime);printf("Input new price of the ticket::");scanf("%d",&p->data.price);printf("Input new number of people who have booked ticket:"); scanf("%d",&p->data.bookNum);printf("\nmodifying record is sucessful!\n");shoudsave=1 ;}elseprintf("\t\t\tcan't find the record!");}}elsemark1=0 ;}}/*系统给用户的提示信息*/voidAdvicedTrains(Link l){Node*r ;charstr[10];int mar=0 ;r=l->next ;printf("Iuput the city you want to go: ");scanf("%s",str);while(r){if(strcmp(r->data.city,str)==0&&r->data.bookNum<200){mar=1 ;printf("\nyou can select the following train!\n");printf("\n\nplease select the fourth operation to book the ticket!\n"); printTrainInfo(r);}r=r->next ;}if(mar==0)printf("\n\t\t\tyou can't book any ticket now!\n");}/*保存火车信息*/voidSaveTrainInfo(Link l){FILE*fp ;Node*p ;int count=0,flag=1 ;fp=fopen("c:\\train.txt","wb");if(fp==NULL){printf("the file can't be opened!");return ;}p=l->next ;while(p){if(fwrite(p,sizeof(Node),1,fp)==1){p=p->next ;count++;}else{flag=0 ;break ;}}if(flag){printf("the number of the record which have been saved is %d\n",count); shoudsave=0 ;}fclose(fp);}/*保存订票人的信息*/voidSaveBookmanInfo(bookManLink k){FILE*fp ;bookMan*p ;int count=0,flag=1 ;fp=fopen("c:\\man.txt","wb");if(fp==NULL){printf("the file can't be opened!");return ;}p=k->next ;while(p){if(fwrite(p,sizeof(bookMan),1,fp)==1){p=p->next ;count++;}else{flag=0 ;break ;}}if(flag){printf("the number of the record which have been saved is %d\n",count); shoudsave=0 ;}fclose(fp);}int main(){FILE*fp1,*fp2 ;Node*p,*r ;char ch1,ch2 ;Link l ;bookManLink k ;bookMan*t,*h ;intsel ;l=(Node*)malloc(sizeof(Node));l->next=NULL ;r=l ;k=(bookMan*)malloc(sizeof(bookMan));k->next=NULL ;h=k ;fp1=fopen("c:\\train.txt","ab+");if((fp1==NULL)){printf("can't open the file!");return 0 ;}while(!feof(fp1)){p=(Node*)malloc(sizeof(Node));if(fread(p,sizeof(Node),1,fp1)==1){p->next=NULL ;r->next=p ;r=p ;count1++;}}fclose(fp1);fp2=fopen("c:\\man.txt","ab+");if((fp2==NULL)){printf("can't open the file!");return 0 ;}while(!feof(fp2)){t=(bookMan*)malloc(sizeof(bookMan)); if(fread(t,sizeof(bookMan),1,fp2)==1){t->next=NULL ;h->next=t ;h=t ;count2++;}}fclose(fp2);while(1){system("cls");printInterface();printf("please choose the operation: "); scanf("%d",&sel);system("cls");if(sel==8){if(shoudsave==1){getchar();printf("\nthe file have been changed!do you want to save it(y/n)?\n"); scanf("%c",&ch1);if(ch1=='y'||ch1=='Y'){SaveBookmanInfo(k);SaveTrainInfo(l);}}printf("\nThank you!!You are welcome too\n");break ;}switch(sel){case 1 :InsertTraininfo(l);break ;case 2 :QueryTrain(l);break ;case 3 :BookTicket(l,k);break ;case 4 :UpdateInfo(l);break ;case 5 :AdvicedTrains(l);break ;case 6 :SaveTrainInfo(l);SaveBookmanInfo(k);break ;case 7 :return 0;}printf("\nplease press any key to continue.......");getch();}return 0;}11/11。
C语言课程设计题目
C语言程序编码训练题目一、程序设计题目:简单的学生成绩管理程序程序设计功能及要求:(1)总人数定义为宏,数据使用文件存放;(2)输入学生姓名学号,及五门成绩,并计算每个学生五门功课的平均分,并按平均分排列名次,若平均分相同则名次并列;结果写入文件并按格式打印在屏幕上。
⑶统计全班每门课程的平均分,并计算各分数段(60以下,60~69,70~79,80~89,90以上)的学生人数;结果写入文件,并按格式在屏幕上打印;⑷在屏幕上打印出所有不及格学生的下列信息:学号,不及格的课程名,该不及格课程成绩;⑸在开始画面加入简单的菜单便于选择各种功能。
例:1学生条目输入2成绩统计3分数段统计4不及格学生筛选⑹文件格式要求1.原始数据文件格式(具体数据和项目自行编写)学号姓名英语C语言高等数学…………..1张三7689782李四….….….2.输出数据文件(由程序自动生成)1)学生综合成绩文件。
2)学号姓名英语C语言高等数学…………….平均成绩名次1张三768978…………..2李四….….….3)统计结果文件。
4)分数段英语C语言高等数学………………….<602…60~698…70~795…80~8910…⑺加入优等生统计功能,要求按优等生条件筛选出优等生的条目存入单独文件,并输出到屏幕。
优等生标准(满足之一即可):1平均成绩上80。
2平均成绩及格但未上80,有单科成绩上90。
3平均成绩未及格,有单科满分。
二、程序设计题目:简单的同学通讯录程序设计[问题描述]具有数据插入、修改、删除、显示、查询和统计功能的电话簿管理程序。
[程序设计功能及要求]⑴人数不定,数据使用文件存放。
⑵记录每位同学的学号、姓名、性别、工作单位、电话号码和E-mail地址建立单独的条目,存入数据文件。
⑶可对记录中的姓名和电话号码等进行修改。
⑷可增加或删除记录⑸可显示所有保存的记录⑹加入统计功能,可以统计男女同学或总人数。
⑺加入查询功能,通过姓名、学号或电话号码查询到同学的条目。
车票管理系统课程设计
车票管理系统课程设计一、课程目标知识目标:1. 理解车票管理系统的基本原理和功能需求;2. 掌握车票管理系统中数据库的设计与操作方法;3. 学会运用编程语言实现车票管理系统的核心功能;4. 了解车票管理系统的实际应用场景和发展前景。
技能目标:1. 能够运用所学知识设计并搭建一个简单的车票管理系统;2. 熟练使用数据库管理工具进行数据查询、更新和删除操作;3. 掌握基本的编程技巧,实现车票管理系统的功能模块;4. 能够分析实际问题,提出合理的解决方案,优化车票管理系统。
情感态度价值观目标:1. 培养学生对车票管理系统及相关技术领域的兴趣,激发学习热情;2. 培养学生的团队协作精神,提高沟通与协作能力;3. 增强学生的实践操作能力,使其具备解决实际问题的信心;4. 引导学生关注车票管理系统在现实生活中的应用,认识到科技对生活的影响。
课程性质:本课程为信息技术学科的教学内容,以实践操作为主,理论讲解为辅。
学生特点:六年级学生具有一定的计算机操作基础,对新鲜事物充满好奇,喜欢动手实践。
教学要求:结合学生特点,注重理论与实践相结合,提高学生的动手能力和创新能力。
在教学过程中,将课程目标分解为具体的学习成果,以便于教学设计和评估。
二、教学内容1. 车票管理系统的基本原理与功能模块介绍- 系统需求分析- 功能模块划分- 数据库设计基本原理2. 数据库设计与操作- 数据表创建与维护- 数据查询、更新和删除操作- 数据库管理工具的使用3. 编程语言实现车票管理系统功能- 常用编程语言的介绍与选择- 编程实现车票预订、查询、退票等功能- 代码调试与优化4. 车票管理系统的实际应用案例与拓展- 系统在实际场景中的应用案例分析- 系统功能的拓展与优化- 车票管理系统的发展趋势教学内容安排与进度:第一周:车票管理系统的基本原理与功能模块介绍第二周:数据库设计与操作第三周:编程语言实现车票管理系统功能第四周:车票管理系统的实际应用案例与拓展教材章节及内容列举:第一章:信息技术基础1.1 计算机系统组成1.2 计算机网络基础1.3 数据库基本概念第二章:数据库技术2.1 数据库设计2.2 数据库操作2.3 数据库管理工具第三章:编程语言3.1 编程语言概述3.2 程序设计基础3.3 编程实现车票管理系统功能第四章:车票管理系统实际应用与拓展4.1 车票管理系统案例4.2 系统功能拓展4.3 车票管理系统发展趋势三、教学方法为了提高学生的学习兴趣和主动性,本课程将采用以下多样化的教学方法:1. 讲授法:通过生动的语言和形象的表达,讲解车票管理系统的基本原理、功能模块和数据库设计等理论知识,为学生奠定扎实的基础。
C语言火车票管理系统
#include<stdio.h>#include<string.h>#include<stdlib.h>#include<time.h>#include<conio.h>#define N 1000typedef 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;CLASS records[N];int system_time();void message();void ShowTable1();void ShowTable2(int i);void Display();void add();void save();void load(); // 按班次查询void search(); //查询void change(); //修改void quit(); //退出void buyticket(); //售票void deleteticket(); //取消int menu_select(); //菜单int whether(int); //判断购买时间void find(char s1[],char s2[]); //按起点终点查询void deletemessage(); //删除int findnum(char s1[]); //班次查询void get(int,int); //修改及增加班次char*menu[]={" 欢迎使用车票查询系统","\n*******************菜单***********************", "\n 1. 录入班次","\n 2. 浏览班次信息","\n 3. 查询路线","\n 4. 增加班次","\n 5. 售票","\n 6. 退票","\n 7. 修改班次","\n 8. 删除班次","\n 9. 退出"};int main(){system("cls");while(1){switch(menu_select()) //菜单{case 1: message();break;case 2: Display();break;case 3: search();break;case 4: add();break;case 5: buyticket();break;case 6: deleteticket();break;case 7: change();break;case 8: deletemessage();break;case 9: quit();break;}}}int menu_select() //菜单{char s[5];int c,i;system("cls");for(i=0;i<11;i++){printf("%s",menu[i]); //输出菜单}i=0;while(c<0||c>9){printf("\n");printf("\n请输入选项(1-9): ");scanf("%s",s);c=atoi(s);}//输出菜单return c;}void message() //录入{int i=0,j=5,h;char s[5];FILE *fp; //定义文件型指针变量system("cls"); //刷屏if((fp=fopen("d:车票管理系统0.dat","rb"))!=NULL) //fopen打开文件{printf("增加信息\n");printf("请输入任意键返回\n");scanf("%s",s);i=1;}if(i==0){system("cls"); //刷屏printf("请输入班次总数:\n");scanf("%d",&class_num); //指向班次指针system("cls"); //刷屏for(i=0;i<class_num;i++){system("cls"); //刷屏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;system("cls"); //刷屏load(); // 按班次查询ShowTable1();for(i=0,j=0;i<class_num;i++,j+=2) //按班次顺序输出{if(whether(i)) //判断时间是否超出printf("|%10s|%5s:%-4s|%10s|%10s|%8.1f|%8d|%8d|",records[i].num,records[i].h our,records[i].min, records[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);printf("\n按任意键继续\n");getch();}void ShowTable1(){int i=2;system("cls"); //刷屏printf(" 班次信息\n");printf("\n|----------|----------|----------|----------|--------|--------|--------|\n");printf("\n| 班次| 发车时间| 起点站| 终点站|行车时间|额定载量| 已售票|\n");}void ShowTable2(int i){printf("\n|----------|----------|----------|----------|--------|--------|--------|\n");}void search() //查询班次{int i;char s1[10]={'\0'},s2[10]={'\0'};system("cls"); //刷屏printf("1. 按班次查询\n");printf("2. 按终点站查询\n");printf("3. 退出\n");printf("请选择(1-3):\n");scanf("%d",&i);load(); //按班次查询switch(i){case 1: printf("请输入要查询的班次:\n");scanf("%s",s1);find(s1,s2);break;case 2: printf("请输入要查询终点站:\n");scanf("%s",s2);find(s1,s2);break;case 3: break;default : printf("输入错误!\n");break;}printf("按任意键继续\n");getch();}void find(char s1[],char s2[]){int i,h=0,m;ShowTable1();if(s2[0]=='\0')m=1;else m=0;for(i=0;i<class_num;i++)if(strcmp(s1,records[i].num)==0||strcmp(s2,records[i].to)==0){printf("\n");printf("|%10s|%5s:%-4s|%10s|%10s|%8.1f|%8d|%8d|",records[i].num,records[i].h our,records[i].min,records[i].from,records[i].to,records[i].hours,records[i].max,records[i].now);h+=2;if(m==1)break;}ShowTable2(h);if(h==0)printf("查找的班次不存在\n");}void add(){int i,j=5;load();system("cls");printf("1. 增加班次\n");printf("2. 返回\n");printf("请选择(1-2)\n");scanf("%d",&i);if(i==1){system("cls");printf("1. 输入要增加的班次:\n");scanf("%s",records[class_num].num);for(i=0;i<class_num;i++)if(strcmp(records[class_num].num,records[i].num)==0){printf("输入错误\n");getch();break;}if(i==class_num){get(i,j);class_num++;save();}}}void buyticket(){int i;char num[10];system("cls");printf("1. 售票\n");printf("2. 返回\n");printf("请选择(1-2):\n");scanf("%d",&i);if(i==1){load(); // 按班次查询search();printf("请输入要订票的班次(若无请输入0):\n");scanf("%s",num);for(i=0;i<class_num;i++)if(strcmp(num,records[i].num)==0)if(records[i].max>records[i].now&&whether(i)==1){records[i].now++;printf("通向%s班次为%s的票订票成功\n",records[i].to,records[i].num);save();getch();break;}else{printf("该班次已满或已发出!\n");getch();}}}void deleteticket(){int i;char num[10];system("cls");printf("1. 退票\n");printf("2. 返回\n");printf("请选择(1-2)\n:");scanf("%d",&i);if(i==1){system("cls");load();printf("请输入要退票的班次:\n");scanf("%s",num);i=findnum(num);if(strcmp(num,records[i].num)==0)if(whether(i)){printf("是否确认");scanf("%s",num);if(num[0]=='y'||num[0]=='Y'){records[i].now--;printf("退票成功\n");save();getch();}}else{printf("该班车已发出,无法退票\n");getch();}if(i==class_num){printf("输入错误\n");getch();}}}void change(){char num[10],s[10];int h=0,j=13,i;load();system("cls");printf("请输入要修改的班次:\n");scanf("%s",num);i=findnum(num);if(i==class_num){printf("输入错误\n");getch();}else{printf("确认修改\n");scanf("%s",s);if(s[0]=='y'||s[0]=='Y'){get(i,j);save();}}}void deletemessage(){int i,h=0;char num[10];system("cls");printf("1. 删除班次\n");printf("2. 返回\n");printf("请选择(1-2):\n");scanf("%d",&i);if(i==1){system("cls");printf("请输入要删除的班次:\n");scanf("%s",num);i=findnum(num);if(i==class_num){printf("输入错误\n");getch();}else{printf("是否确认\n");scanf("%s",num);if(num[0]=='y'||num[0]=='Y'){for(;i<class_num-1;i++)records[i]=records[i+1];class_num--;save();printf("删除成功\n");getch();}}}}int findnum(char s1[]){int i,h=0;ShowTable1();for(i=0;i<class_num;i++){if(strcmp(s1,records[i].num)==0){printf("|%10s|%5s:%-4s|%10s|%10s|%8.1f|%8d|%8d|",records[i].num,records[i].h our,records[i].min,records[i].from,records[i].to,records[i].hours,records[i].max,records[i] .now);h+=2;break;}}ShowTable2(h);return i;}void save(){FILE *fp1,*fp2;if((fp1=fopen("d:车票管理系统.dat","wb"))==NULL) //打开文件{printf("文件打开错误!\n");exit(0);}if((fp2=fopen("d:车票管理系统0.dat","wb"))==NULL){printf("文件打开错误!\n");exit(0);}fwrite(&class_num,sizeof(int),1,fp2);fwrite(records,sizeof(CLASS),class_num,fp1);fclose(fp1);fclose(fp2);}void load(){FILE *fp1,*fp2;if((fp1=fopen("d:车票管理系统.dat","rb"))==NULL){system("cls");printf("文件打开错误\n");getch();exit(0);}if((fp2=fopen("d:车票管理系统0.dat","rb"))==NULL) {system("cls");printf("文件打开错误\n");getch();exit(0);}fread(&class_num,sizeof(int),1,fp2);fread(records,sizeof(CLASS),class_num,fp1);fclose(fp1);fclose(fp2);}void quit(){char s[5];printf("确认退出\n");scanf("%s",s);if(s[0]=='y'||s[0]=='Y')exit(0);}void get(int i,int j){for(;;){printf("请输入发车时间(xx xx)");scanf("%s%s",records[i].hour,records[i].min);if((atoi(records[i].hour)<24&&atoi(records[i].hour)>=0)&&(atoi(records[i].min)<60& &atoi(records[i].min)>=0))break;else{printf("输入错误\n");getch();}}printf("请输入起点站:\n");scanf("%s",records[i].from);printf("请输入终点站:\n");scanf("%s",records[i].to);printf("请输入行车时间:\n");scanf("%f",&records[i].hours);printf("请输入额定载量:\n");scanf("%d",&records[i].max);for(;;){printf("请输入已售票数:\n");scanf("%d",&records[i].now);if(records[i].now<=records[i].max) break;else{printf("输入错误\n");getch();}}}int whether(int i){struct tm *local;time_t t;t=time(NULL); //NULL在stdio.h中定义为0local=localtime(&t); /////获取当前系统时间if(local->tm_hour<atoi(records[i].hour)||local->tm_hour==atoi(records[i].hour)&&local->tm_min<atoi(records[i].min))//atoi将字符串转换成一个整数值return 1;elsereturn 0;}。
c语言火车售票系统课程设计
c语言火车售票系统课程设计一、课程目标知识目标:1. 理解C语言中数组、函数、指针、结构体等基本概念,并能运用到火车售票系统的设计与实现中;2. 掌握C语言文件操作,实现火车票信息的存储与读取;3. 理解并掌握C语言中模块化编程思想,将火车售票系统划分为多个功能模块。
技能目标:1. 能够运用C语言编写出具有良好结构和可读性的代码;2. 培养学生分析问题、解决问题的能力,通过设计火车售票系统,学会使用C 语言进行实际项目开发;3. 学会使用调试工具,对火车售票系统进行测试和优化。
情感态度价值观目标:1. 培养学生合作意识,学会在团队中共同解决问题,提高沟通与协作能力;2. 激发学生对计算机编程的兴趣,培养勇于探索、积极创新的精神;3. 培养学生关注社会实际问题的责任感,了解信息技术在实际应用中的作用和价值。
课程性质:本课程为C语言程序设计课程的实践环节,通过设计火车售票系统,让学生将所学理论知识运用到实际项目中。
学生特点:学生已具备C语言基础知识和一定的编程能力,但对实际项目的开发流程和模块化编程思想尚不熟悉。
教学要求:注重理论与实践相结合,引导学生自主探究,培养学生实际编程能力和团队协作能力。
在教学过程中,关注学生的个体差异,提供个性化指导,确保每位学生都能达到课程目标。
通过课程学习,使学生具备独立开发小型项目的能力。
二、教学内容1. 火车售票系统需求分析:介绍项目背景,分析系统功能需求,明确学生需要实现的功能模块,如用户登录、车次查询、购票、退票、余票显示等。
2. C语言基础知识回顾:- 数组:回顾一维数组、二维数组的概念和应用;- 函数:介绍函数定义、调用、参数传递等基本概念;- 指针:讲解指针的定义、使用和指针操作;- 结构体:回顾结构体的定义和使用。
3. 火车售票系统设计:- 系统架构设计:引导学生采用模块化设计思想,将系统划分为多个功能模块;- 数据结构设计:介绍如何使用结构体和数组来存储和管理车次、座位、用户等信息。
火车票管理系统实训报告
#### 一、实训背景随着我国铁路事业的快速发展,火车票的销售和管理已经成为铁路运营的重要组成部分。
为了提高火车票的销售效率,降低运营成本,提高旅客购票体验,我们开展了火车票管理系统的实训项目。
本项目旨在通过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#include <stdio.h>#include <stdlib.h>#define MAX_SEATS 100typedef struct {int seat_number;char passenger_name[50];} Ticket;Ticket tickets[MAX_SEATS];int total_tickets = 0;void displayMenu() {printf("\n=== 火车票售票系统 ===\n");printf("1. 购买票\n");printf("2. 查询票\n");printf("3. 取消票\n");printf("4. 退出\n");printf("=====================\n");printf("请输入选项: ");}void buyTicket() {if (total_tickets >= MAX_SEATS) {printf("对不起,票已售完。
\n");return;}Ticket ticket;printf("请输入座位号: ");scanf("%d", &ticket.seat_number);// 检查座位号是否已经被购买for (int i = 0; i < total_tickets; i++) {if (tickets[i].seat_number == ticket.seat_number) {printf("对不起,该座位已被购买。
\n");return;}}printf("请输入乘客姓名: ");scanf("%s", ticket.passenger_name);tickets[total_tickets++] = ticket;printf("购票成功!\n");}void queryTicket() {int seat_number;printf("请输入座位号: ");scanf("%d", &seat_number);for (int i = 0; i < total_tickets; i++) {if (tickets[i].seat_number == seat_number) {printf("座位号: %d\n", tickets[i].seat_number);printf("乘客姓名: %s\n", tickets[i].passenger_name); return;}}printf("对不起,该座位未被购买。
C语言课程设计报告 火车售票查询系统(完)
湖北工业大学工程技术学院课程设计报告书课程名称:C语言课程设计班级:物联网一班小组成员:范立恒、陈根、聂俊豪、麦灿文、黄文康组长:范立恒指导教师:楚惟善二○一三年六月1 课程题目及要求及要求题目一:火车售票系统任务:结合C语言中相关知识,设计出火车售票系统。
1 录入北京西站车次信息;2 旅客按车次买票;3 统计某日火车票销售金额。
程序要求:⏹贯彻结构化的程序设计思想。
⏹用户界面友好,功能明确,操作方便。
⏹用户界面中的菜单至少应包括“车次信息录入”、“旅客买票”、“统计某日销售金额”、“退出”4项。
⏹代码应适当缩进,并给出必要的注释,以增强程序的可读性⏹为了保证所有的数据可以长期被使用,要求程序能将相关数据存储在外部数据文件中,具体数据格式和文件名、路径等自定;⏹根据所设计的算法,定义相应函数分别实现系统的各子功能模块,同时由主程序提供友好的用户界面,使用户可通过选择主菜单来调用课程设计中要求完成的各个功能模块,子程序执行完后可返回到主菜单,继续选择其他功能执行。
源程序要求书写规范,结构清晰。
重点函数的重点变量,重点功能部分均要求给出清晰的程序注释。
⏹程序编译、链接成功后,自己设计实现程序功能的一组或多组测试数据,并严格按照此测试数据进行测试,然后分析测试结果。
如果程序不能正常运行或结果不正确,则需对程序进行单步调试,在调试过程中认真查找算法实现中存在的问题,并加以分析和2 程序分设计说明经过对程序设计题目的分析可知,整个程序的设计实现大致分为八个模块,每一个模块对应一个函数。
在这些函数当中,添加车次数据函数,售票函数,查询总额函数的实现严格按照题目的要求,而显示时间函数和显示车次函数属于附加功能。
读取文件函数和保存信息函数对其它函数的实现起辅助作用,主函数及菜单函数控制程序的整体运行。
1. 添加车次函数主要实现程序最初运行时车次的录入;2. 旅客买票函数实现的功能是按照旅客所需车次几所购买车票的数目;3. 查询车票总额按照题目的具体要求实现的是总额的查询;4. 显示函数实现的是显示目前所有的有效车次信息。
火车售票系统课程设计c
火车售票系统课程设计c一、教学目标本节课的教学目标是让学生掌握火车售票系统的基本原理和操作流程。
知识目标包括了解火车售票系统的基本组成部分、掌握数据库的基本操作、理解程序设计的基本概念。
技能目标包括能够使用数据库管理系统进行数据维护、能够编写简单的程序实现火车票的销售。
情感态度价值观目标包括培养学生对计算机科学的兴趣、培养学生解决问题的能力、培养学生团队合作的精神。
二、教学内容本节课的教学内容主要包括火车售票系统的概述、数据库的基本操作、程序设计的基本概念。
首先,介绍火车售票系统的整体架构,包括前端界面、后端数据库和管理系统。
然后,讲解数据库的基本操作,包括数据的增删改查。
接下来,介绍程序设计的基本概念,如变量、循环、条件语句等。
最后,通过实例演示如何使用编程语言实现火车票的销售。
三、教学方法为了达到本节课的教学目标,将采用多种教学方法相结合的方式。
首先,使用讲授法向学生传授火车售票系统的相关知识。
其次,通过案例分析法让学生深入了解火车售票系统的实际应用。
然后,利用实验法让学生动手实践,操作数据库和编程实现火车票的销售。
此外,还鼓励学生进行小组讨论,培养团队合作精神和解决问题的能力。
四、教学资源为了支持本节课的教学内容和教学方法的实施,将准备以下教学资源。
首先,教材《火车售票系统设计与实现》,为学生提供理论知识的学习。
其次,参考书《数据库原理与应用》和《编程基础》,为学生提供更多的学习资料。
然后,多媒体资料,包括PPT课件、视频教程等,为学生提供直观的学习体验。
最后,实验设备,包括计算机、数据库管理系统等,为学生提供动手实践的机会。
五、教学评估本节课的教学评估将采用多元化评价方式,以全面客观地评价学生的学习成果。
评估方式包括平时表现、作业、考试等。
平时表现主要考察学生的课堂参与度、提问回答等情况,占总评的20%。
作业分为课后练习和小组项目,占总评的30%。
考试为书面考试,内容涵盖本节课的全部知识点,占总评的50%。
数据库课程设计报告-车站售票管理系统
吉林工程技术师范学院课程设计报告设计名称:车站售票信息管理系统姓名:孟祥丽学号:23号专业:计算机科学与技术班级:C1042院系:信息工程学院指导教师:刘国成、杨宇晶、郭天娇2010年12月16日一、概述1、项目背景:随着市场经济的不断飞速发展,交通道路环境的不断改善,人们的出行次数不断增多,人口流动频繁,数量不断加大,车站信息量迅猛增长,车站售票管理系统在人们的日常生活中发挥着越来越重要的作用。
本系统实现了线路信息,汽车信息,票务信息的查询和管理,满足人们的需求。
2、编写目的:掌握数据库设计原理及相关软件的使用。
实现方便、快速售票;是用户准确了解售票情况,提供多种查询和统计功能;实现系统的安全性设置,使系统本身具有一定的维护功能。
3、软件定义:车站售票管理系统,主要用于车站日常的票务处理。
4、开发环境:Visual Studio2008,SQL SERVER2000二、需求分析车站售票管理系统员工管理模块汽车管理模块线路管理模块车票管理模块票务信息管理模块员工信息添加员工信息删除员工信息修改汽车信息添加汽车信息修改汽车信息删除线路信息添加线路信息修改线路信息删除添加车票删除车票查询车票信息购买/预订车票员工信息查询汽车信息查询线路信息查询车票信息查询功能模块图1,员工管理模块:员工有两种身份,售票员和系统管理员。
系统管理员可以进行系统用户的添加,密码的修改操作,汽车,线路,车票信息的更新等,售票员可以查询以上信息和购买车票等。
2,线路信息管理模块:系统管理员可以在线路信息管理模块对车站线路信息进行管理。
管理员首先建立线路信息数据库,输入原始的线路信息,当有新的线路需要添加或者需要对已有的线路信息进行修改,删除的时候,管理员就可以进行相应的操作。
管理员也可以通过本模块查询到所有需要查询的线路的详细信息。
3,汽车信息管理模块:系统管理员可以在汽车信息管理模块实现对汽车信息的管理。
管理员首先应该建立汽车信息数据库,输入原始的数据信息,当有新的汽车信息的时候或者管理员需要修改某个汽车的相关信息以及想要删除某个汽车信息的时候,就可以完成相应的操作。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include<iostream> //数据流输入/输出#include<fstream> //文件输入/输出#include<string> //字符串操作#include<iomanip> //参数化输入/输出#include<time.h> //时间库函数using namespace std; //命名空间class Bus_infor{private:static int Bus_No; //静态数据成员,统计当前所有的Bus_infor对象的数目char start[20]; //起点站char end[20]; //终点站int Bus_order; //班次号int all_tickted; //额定载量int tickted; //已定票人数int Hour_start,Minute_start; //发车时间float GoHour; //行车时间public:Bus_infor();~Bus_infor();Bus_infor *next;void input(); //录入函数void input(ifstream & is); //读取函数void output(); //输出函数void output(ofstream & os); //写入函数void Order_tickt(int n); //定票函数void Unorder_tickt(int n); //退票函数void GetTime_start(); //获取发车时间函数bool GetTime(); //判断当前班次状况函数int Get_all_tickted() { return all_tickted; } //内联函数,返回额定载量int Get_tickted() { return tickted; } //返回已定票人数int Get_bus_order() { return Bus_order; } //返回班次号string Get_end()const; //返回终点站的字符串};int Bus_infor::Bus_No=1;Bus_infor::Bus_infor(){Bus_No++;tickted=0;}Bus_infor::~Bus_infor(){Bus_No--;}void Bus_infor::input(){cout<<"\t\t\t按提示输入:"<<endl;cout<<"输入班次: ";while(1){cin>>Bus_order;if (cin.fail()) //判断输入的数据类型是否有错{cout << "\n班次输入错误,请重新输入:";cin.clear();cin.get();}elsebreak;}cout<<"请输入车的额定座位数: ";while(1){cin>>all_tickted;if (cin.fail()) //判断输入的数据类型是否有错{cout << "\n座位数输入错误,请重新输入:";cin.clear();cin.get();}elsebreak;}GetTime_start();cout<<"请输入行车时间:";while(1){cin>>GoHour;if (cin.fail()) //判断输入的数据类型是否有错{cout << "\n行车时间输入错误,请重新输入:";cin.clear();cin.get();}elsebreak;}cout<<"请输入起始站与终点站:";cin>>start;cin>>end;cout<<"是否清空售票(y/n)?";char a;cin>>a;if(a=='y'||a=='Y') tickted=0;}void Bus_infor::input(ifstream & is){is>>Bus_order>>Hour_start>>Minute_start>>start>>end>>GoHour>>all_tickted>>tickted;is.get();}void Bus_infor::output(){cout<<" "<<Bus_order<<"\t";if(Minute_start==0) //判断发车时的分钟时刻,若为分则在后面多显示个,以符合时间格式{cout<<Hour_start<<":"<< Minute_start<<"0\t";}else{cout<<Hour_start<<":"<< Minute_start<<"\t";}cout<<start<<"\t"<<end<< "\t"<<GoHour<<"\t "<<all_tickted<<"\t "<<tickted;if(!GetTime())cout<<"\t 此班已出发"<<endl;elsecout<<"\t 此班未出发"<<endl;}void Bus_infor::output(ofstream & os){os<<setw(6)<<Bus_order //setw()设置输出宽度<<setw(15)<<Hour_start<<setw(15)<<Minute_start<<setw(15)<<start<<setw(6)<<end<<setw(15)<<GoHour<<setw(15)<<all_tickted<<setw(15)<<tickted<<endl;}void Bus_infor::GetTime_start(){cout<<"请输入始发时间(时分):";while(1){cin>>Hour_start>>Minute_start;if (cin.fail()) //判断输入的数据类型是否有错{cout << "\n时间输入错误,请重新输入:";cin.clear();cin.get();}else if(Hour_start<0||Hour_start>24||Minute_start<0||Minute_start>60)cout<<"\n时间格式出错,请重新输入:"; ////判断时间格式是否出错,小时不能小于大于,分钟不能小于大于elsebreak;}}bool Bus_infor::GetTime(){struct tm *local;time_t t;t=time(NULL);local=localtime(&t); //获取当前系统时间if(local->tm_hour<Hour_start||(local->tm_hour==Hour_start && local->tm_min<=Minute_start)) return 1; //比较当前时间与发车时间,获得班次的当前状况,返回表示班次未出发elsereturn 0; //返回表示班次已出发}void Bus_infor::Order_tickt(int n){tickted=tickted+n;}void Bus_infor::Unorder_tickt(int n){tickted=tickted-n;}string Bus_infor::Get_end()const{string s=end;return s;}class Bus_link{public:Bus_link(){head=new Bus_infor;head->next=NULL;key=0;} //带参数的构造函数~Bus_link(){delete head;} //析构函数void input(); //录入车票信息void mend(); //修改车票信息void del(); //删除车票信息int find(Bus_infor **p,int num,char *pn); //查找函数void found(); //查询车票信息void show(); //显示车票信息void Order(); //定购车票信息void Unorder(); //退还车票信息void save(); //保存车票信息void begin(); //初始化车票信息void clear(); //清除函数void about(); //关于车票信息char mainmenu(); //主菜单函数void setkey(int k){ key=k; } //设置系统修改标志int getkey(){ return key;} //返回系统修改标志private:Bus_infor *head; //链表指针int key; //系统修改标志int password; //管理员登陆标志};void Bus_link::input(){if(password==1){Bus_infor *p,*p2=NULL;p=head;int n=1; //int n;while(p->next)p=p->next;while(n){p2=new Bus_infor;p2->input();p->next=p2;p2->next=NULL;p=p->next;Bus_link::setkey(1);cout<<"\t\t\t按继续,按返回: ";cin>>n;if(!cin)throw string("数据输入错误");}}elsecout<<"\n\t\t对不起,游客不能录入车票信息"<<endl;}void Bus_link::show(){cout<<"客车基本信息如下:"<<endl<<"班次发车时间起点站终点站行车时间额定载量已定票人数当前状况"<<endl;Bus_infor *p;p=head;while(p->next){(p->next)->output();p=p->next;}}void Bus_link::found(){Bus_infor *p;int num,n;char name[20];do{cout<<"\t\t1:按班次查找,2:按终点站查找: ";cin>>n;if(!cin)throw string("数据输入错误");}while(n<1||n>2);if(n==1){cout<<"\t\t\t输入班次: ";cin>>num;if(!cin)throw string("数据输入错误");}if(n==2){cout<<"\t\t\t输入终点站: ";cin>>name;}if(!find(&p,num,name)){cout<<"\t\t找不到你要查找的内容!"<<endl;return;}}int Bus_link::find(Bus_infor **p1,int num,char *pn){Bus_infor *p;p=head;int t=0;while(p->next){(*p1)=p;if( (p->next)->Get_bus_order()==num|| (p->next)->Get_end()==pn ){cout<<"客车基本信息如下:"<<endl<<"班次发车时间起点站终点站行车时间额定载量已定票人数当前状况"<<endl;(p->next)->output();t=1;}p=p->next;}return t;}void Bus_link::del(){if(password==1){Bus_infor *p,*p2;int num;char name[20];cout<<"\t\t\t输入班次号: ";cin>>num;if(!cin)throw string("数据输入错误");if( !find(&p,num,name) ){cout<<"\t\t找不到你要删除的内容!"<<endl;return;}cout<<"\n\t\t\t确定删除(y/n)?";char a;cin>>a;if(a=='y'||a=='Y'){p2=p->next;p->next=p2->next;delete p2;Bus_link::setkey(1);}}elsecout<<"\n\t\t对不起,游客不能删除车票信息"<<endl; }void Bus_link::mend(){if(password==1){Bus_infor *p;int num;char name[20];cout<<"\t\t\t输入班次号: ";cin>>num;if(!cin)throw string("数据输入错误");if( !find(&p,num,name) ){cout<<"\t\t找不到你要修改的内容!"<<endl;return;}(p->next)->input();Bus_link::setkey(1);}elsecout<<"\n\t\t对不起,游客不能修改车票信息"<<endl; }void Bus_link::Order(){if(password==1){Bus_infor *p;cout<<"\n\t\t\t确定购票(y/n)?";char X;cin>>X;if(X=='y'||X=='Y'){int num;cout<<"\n\t\t\t输入班次号: ";cin>>num;if(!cin)throw string("数据输入错误");if( !find(&p,num,"^") ){cout<<"\n\t\t找不到你要定票的车辆的内容!"<<endl;return;}p=p->next;if(!(p->GetTime())) //判断要定票的车辆是否已经出发,若已经出发则不允许定票{cout<<"\n\t\t你要订票的车辆已出发!"<<endl;return;}cout<<"\n\t\t\t输入要定的票数";int n;cin>>n;if(!cin)throw string("数据输入错误");if((p->Get_tickted()+n)<=p->Get_all_tickted())p->Order_tickt(n);else cout<<"\n\t\t对不起,没有足够的票数。