c++课程设计-车票管理系统

合集下载

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

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

车票管理系统程序设计报告一、引言车票管理系统是一个用于管理车票信息的软件系统。

该系统旨在提供方便快捷的购票、查询、退票等功能,以满足用户的出行需求。

本报告将详细介绍车票管理系统的设计思路、功能模块、数据结构以及程序实现等内容。

二、需求分析1. 功能需求车票管理系统需要具备以下功能:- 用户注册与登录:用户可以通过注册账号并登录系统,以便进行购票、查询等操作。

- 车票购买:用户可以根据出发地、目的地、日期等条件查询车票,并进行购买。

- 车票查询:用户可以根据出发地、目的地、日期等条件查询车票的余票情况。

- 车票退票:用户可以在购票后一定时间内申请退票,并进行退款。

- 车票管理:管理员可以对车票信息进行管理,包括添加、修改、删除等操作。

2. 性能需求车票管理系统需要满足以下性能需求:- 响应速度:系统应能够在用户购票、查询等操作时快速响应,提供流畅的用户体验。

- 安全性:系统应具备一定的安全机制,保护用户的个人信息和交易数据不被泄露或篡改。

- 扩展性:系统应具备一定的扩展性,方便后续对功能进行升级和扩展。

三、系统设计1. 架构设计车票管理系统采用三层架构设计,包括表示层、业务逻辑层和数据访问层。

表示层负责与用户进行交互,接收用户的请求并展示相应的界面;业务逻辑层负责处理用户的请求,进行业务逻辑的处理;数据访问层负责与数据库进行交互,进行数据的读取和写入操作。

2. 功能模块设计车票管理系统包括以下功能模块:- 用户模块:负责用户的注册、登录、个人信息管理等操作。

- 车票模块:负责车票的购买、查询、退票等操作。

- 管理员模块:负责管理员对车票信息的管理操作。

3. 数据结构设计车票管理系统的数据结构包括以下表:- 用户表:保存用户的基本信息,包括用户名、密码、手机号等。

- 车票表:保存车票的详细信息,包括车次、出发地、目的地、日期、余票数量等。

- 订单表:保存用户购票的订单信息,包括用户ID、车票ID、购票时间等。

c语言购票课程设计

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语言课程设计报告 火 车 售 票 系 统

C语言课程设计报告 火 车 售 票 系 统

一、课程设计的原始资料及依据在现代社会,火车以其安全,舒适以及其服务的周到使愈来愈多的人选择了火车为长距离出行的交通工具,这就使火车公司以及车站的工作量愈来愈大,若仍然使用文件或者人工来管理公司、车站、火车、列班、路线、客户以及售票的信息,那无疑在效率上会大打折扣。

21世纪的今天,信息社会占着主流地位,计算机在各行各业中的运用已经得到普及,自动化、信息化的管理越来越广泛应用于各个领域。

利用计算机来储存和管理公司、车站、火车、列班、车线、客户以及售票的信息成为了首选,在这种情况下,火车订票系统就显得非常重要了。

两个客户名单可分别由线性表和队列实现。

为查找方便,已订票客户的线性表应按客户姓名有序,并且,为插入和删除方便,应以链表作存储结构。

由于预约人数无法预计,队列也应以链表作存储结构。

整个系统需汇总各条路线的情况登录在一张线性表上,由于路线基本不变,可采用顺序存储结构,并按车次有序或按终点站名有序。

每条路线是这张表上的一个记录,包含上述8个域,其中乘员名单域为指向乘员名单链表的头指针,等候替补的客户名单域为分别指向队头和队尾的指针。

队列(Queue)是只允许在一端进行插入,而在另一端进行删除的运算受限的线性表。

用队列来进行客户信息的存储。

编辑用户使用菜单,内容包括:输入列班信息,保存列班信息,读取列班信息,查找列班信息,删除列班信息,订票信息,退票信息以及修改信息。

二、课程设计主要内容及要求1. 列车基本信息管理:输入所有列班信息。

每条路线所涉及的信息有:终点站名、车次号、车厢号、开车周日(星期几)、乘员定额、余票量、已订票的客户名单(包括姓名、订票量、座位等级1,2或3)以及等候替补的客户名单(包括姓名、所需的票量)。

2.列车基本信息查询:按车次号查找,按抵达站查找,按路线查找三种查找方式进行查找。

3. 订票管理:客户对想要购买的票进行订票。

3. 退票管理:将不想要的票进行退票。

三、对课程设计说明书撰写内容、格式、字数的要求1.课程设计说明书是体现和总结课程设计成果的载体,主要内容包括:设计题目、设计目的、设备器材、设计原理及内容、设计步骤、遇到的问题及解决方法、设计总结、设计小组评语、参考文献等。

C语言编程---火车订票系统源代码

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语言课程设计题目

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. 讲授法:通过生动的语言和形象的表达,讲解车票管理系统的基本原理、功能模块和数据库设计等理论知识,为学生奠定扎实的基础。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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对不起,没有足够的票数。

相关文档
最新文档