火车票务管理系统(C语言)
C语言程序--火车站售票系统程序
火车站售票查询系统:#include <conio.h>#include <stdio.h>#include <stdlib.h>#include <string.h>int shoudsave=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;/*票价*/int bookNum ;/*票数*/};/*订票人的信息*/struct man{char num[10];/*ID*/char name[10];/*某某*/int bookNum ;/*需求的票数*/};/*定义火车信息链表的结点结构*/typedef struct node{struct train data ;struct node * next ;}Node,*Link ;/*定义订票人链表的结点结构*/typedef struct people{struct man data ;struct people*next ;}bookMan,*bookManLink ;/* 初始界面*/void printInterface(){puts("********************************************************"); puts("* Wele 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("********************************************************"); }/*添加一个火车信息*/void InsertTraininfo(Link linkhead){struct node *p,*r,*s ;char num[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 ;}}/*打印火车票信息*/void printTrainInfo(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,char findmess[],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 ;}/*查询火车信息*/void QueryTrain(Link l){Node *p ;int sel ;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!");}}}/*订票子模块*/void BookTicket(Link l,bookManLink k){Node*r[10],*p ;char ch,dem ;bookMan*v,*h ;int i=0,t=0 ;char str[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(bookManLink k,char findmess[]){bookMan*r ;r=k->next ;while(r){if(strcmp(r->data.num,findmess)==0){mark=1 ;return r ;}r=r->next ;}return 0 ;}/*修改火车信息*/void UpdateInfo(Link l){Node*p ;char findmess[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 ;}}/*系统给用户的提示信息*/void AdvicedTrains(Link l){Node*r ;char str[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");}/*保存火车信息*/void SaveTrainInfo(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 ;}}/*保存订票人的信息*/void SaveBookmanInfo(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 ;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);{clrscr();printInterface();printf("please choose the operation: ");scanf("%d",&sel);clrscr();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 wele 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();}}。
c语言课程设计车票管理系统
c语言课程设计车票管理系统一、教学目标本课程的教学目标是使学生掌握C语言编程的基本技能,能够运用C语言设计简单的车票管理系统。
具体目标如下:1.知识目标:–掌握C语言的基本语法和数据结构;–理解车票管理系统的业务逻辑和需求;–了解软件开发的基本流程。
2.技能目标:–能够使用C语言编写程序,实现车票管理系统的基本功能;–能够进行程序调试和优化,提高程序的性能和可维护性;–能够运用面向对象编程思想,设计合理的软件架构。
3.情感态度价值观目标:–培养学生的编程兴趣,增强自信心;–培养学生团队合作精神和自主学习能力;–培养学生对软件行业的热爱和对编程事业的敬业精神。
二、教学内容本课程的教学内容主要包括C语言基础知识、车票管理系统的需求分析、系统设计、编码实现和测试等。
具体安排如下:1.C语言基础知识:–数据类型、变量和常量;–运算符和表达式;–控制语句;–函数和数组。
2.车票管理系统的需求分析:–理解车票管理系统的业务流程;–分析系统需求,确定功能模块。
3.系统设计:–设计系统的数据结构和算法;–设计系统的界面和交互逻辑。
4.编码实现:–使用C语言编写程序,实现车票管理系统的基本功能;–进行程序调试和优化。
5.测试与总结:–对程序进行测试,确保功能正确;–总结学习过程,提高编程能力。
三、教学方法本课程采用讲授法、案例分析法和实验法等多种教学方法,以激发学生的学习兴趣和主动性。
1.讲授法:通过讲解C语言的基本语法和车票管理系统的业务逻辑,使学生掌握相关知识。
2.案例分析法:分析实际案例,使学生更好地理解车票管理系统的需求和设计。
3.实验法:让学生动手编写程序,培养实际操作能力和编程技能。
四、教学资源本课程所需的教学资源包括:1.教材:《C程序设计语言》或《C语言入门教程》;2.参考书:《C语言编程思想》或《C语言实例教程》;3.多媒体资料:教学PPT、视频教程等;4.实验设备:计算机、网络环境等。
以上教学资源将有助于实现本课程的教学目标,提高学生的编程能力,为学生的职业发展奠定基础。
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语言实现简单的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之内,此时代表停⽌退票。
c语言课程设计车票管理系统
c语言课程设计车票管理系统车票管理系统是一种用于管理车票信息的软件系统,它可以方便地记录和查询车票的相关信息,包括车票的购买、使用和退款等操作。
本文将详细介绍车票管理系统的设计与实现。
一、系统需求分析车票管理系统的主要功能包括:车票信息的录入与管理、车票的购买与退款、车票的查询与打印等。
具体需求如下:1. 车票信息的录入与管理:系统管理员可以录入车票的基本信息,包括车次、出发地、目的地、出发时间、到达时间、票价等。
2. 车票的购买与退款:乘客可以通过系统购买车票,并可以根据需要进行退款操作。
购买车票时需要提供乘客的相关信息,包括姓名、身份证号、联系电话等。
3. 车票的查询与打印:乘客可以通过系统查询车票的相关信息,并可以选择打印车票。
二、系统设计与实现1. 数据库设计:为了存储车票的相关信息,需要设计一个车票信息表,包括车次、出发地、目的地、出发时间、到达时间、票价等字段。
同时,还需要设计一个乘客信息表,包括姓名、身份证号、联系电话等字段。
2. 界面设计:车票管理系统的界面应该简洁明了,方便用户操作。
可以采用图形界面的形式,通过按钮、输入框等控件与用户进行交互。
3. 功能实现:a. 车票信息的录入与管理:系统管理员可以通过系统界面进行车票信息的录入与管理,包括新增车票、修改车票、删除车票等操作。
b. 车票的购买与退款:乘客可以通过系统界面选择购买车票或退款,购买车票时需要填写相关信息,并将购买信息保存到数据库中,退款时需要输入订单号进行操作。
c. 车票的查询与打印:乘客可以通过系统界面进行车票的查询,可以根据车次、出发地、目的地、出发时间等条件进行筛选,并可以选择打印车票。
三、系统运行流程1. 系统管理员登录系统,进入车票管理界面。
2. 管理员可以进行车票信息的录入与管理,包括新增、修改和删除车票。
3. 乘客通过系统界面选择购买车票,填写相关信息,系统将购买信息保存到数据库中,并生成订单号。
4. 乘客可以通过系统界面进行车票的查询,可以根据条件筛选需要的车票。
c语言课程设计车票管理系统
c语言课程设计车票管理系统一、教学目标本节课的教学目标是使学生掌握C语言编程的基本方法,通过编写“车票管理系统”程序,让学生了解和掌握结构体、文件操作等高级知识,培养学生的实际编程能力和问题解决能力。
具体分为以下三个部分:1.知识目标:使学生掌握结构体的定义和使用,理解文件操作的基本方法,了解C语言编程中的一些常见问题和解决方法。
2.技能目标:培养学生能够运用C语言进行程序设计,能够独立完成一个小型管理系统的设计与实现。
3.情感态度价值观目标:培养学生对计算机科学的兴趣,提高学生解决实际问题的能力,培养学生的团队协作精神。
二、教学内容本节课的教学内容主要包括以下几个部分:1.结构体的定义和使用:通过讲解和示例,让学生了解结构体的概念和如何使用结构体来表示车票信息。
2.文件操作:讲解如何使用C语言进行文件的读写操作,让学生掌握文件操作的基本方法。
3.车票管理系统的设计与实现:通过分组讨论和实验,让学生设计和实现一个简单车票管理系统,培养学生的实际编程能力和问题解决能力。
三、教学方法本节课的教学方法主要包括讲授法、讨论法和实验法:1.讲授法:用于讲解结构体和文件操作的基本概念和方法。
2.讨论法:通过分组讨论,让学生共同探讨如何设计和实现车票管理系统。
3.实验法:让学生动手编写程序,实现车票管理系统的功能。
四、教学资源本节课的教学资源主要包括教材、参考书、多媒体资料和实验设备:1.教材:主要包括C语言编程教材和《C程序设计》等。
2.参考书:主要包括《C语言 Primer》等。
3.多媒体资料:包括结构体和文件操作的PPT讲解,以及相关的视频教程。
4.实验设备:包括计算机和网络设备,让学生能够进行实际的编程和实验操作。
五、教学评估本节课的教学评估主要包括以下几个部分:1.平时表现:通过观察学生在课堂上的参与程度、提问回答等情况,评估学生的学习态度和理解程度。
2.作业:通过检查学生提交的作业,评估学生对结构体和文件操作知识的掌握情况。
C语言设计火车票订票系统
软件课程设计--C 语言设计火车票订票系统之源代码模拟数据库功能需求分析可行性分析设计题目:火车订票系统小组成员:指导教师:完成时间:一.需求设计:1.每条线路所涉及的信息有:起点、终点、站名、车次、、票价、时间、座位号。
2.作为示意系统,全部数据可以只放在内存中。
3.系统能实现的功能和操作如下:①.查询路线:根据旅客提出的终点站名输入下列信息:车次、车站名。
②.承办订票业务:根据客户提出的要求查询该车次票额的情况,若尚有余票,则为客户办理订票手续,输出座位号;若已满员或余票额少于订票额,则需重新查询客户要求,若需要可登记排队候补。
③.承办退票业务:根据客户提供的情况(车次、时间、座位号)为客户办理退票手续,然后查询该车次是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其他排队候补的客户。
④登记旅客情况:包括旅客姓名,性别,年龄,家庭住址,联系方式等。
⑤统计功能:将每次车的订票,退票结果统计出来。
⑥管理功能:列车管理员可以通过调用函数来查看车票极其用户情况.⑦.查询功能:用户可以查询自己需要的车辆信息.二.总体设计1.程序流程图:按1键按2键按3键按4键进入in 函数进入book 函数进入inquire 函数进入cancel 函数按5键进入you 函数2.总体设计说明:①.数据结构设计:程序数据结构算法一个好的程序必定有一个好的数据结构.本设计主要考虑车票信息和用户信息的数据结构.车票信息采用半十字链表.横向链表中的每一个结点包含以下内容:车次起始站发车时间指向下一个结点的指针指向中途站的指针.纵向链表中每一个结点包含以下内容:从始发站开始的依次到站票价到达时间是否已被购买标识才用mark 标识当mark 为1 时车票已售出当mark 为0时车票还未售出.以及指向下一个结点的指针.纵向链表采用循环链表尾指针指向首指针.未购票用户信息使用队列来保存因为考虑到用户会预订票所以把用户以来订票的时间早晚排在队中.先来先买后来后买.队列中的每个元素包含以下内容:用户姓名身份证号码想要购票的车次起始站要到的站时间.已经购票用户信息使用一个单链表来保存链表中的没个结点包含以下内容:用户姓名身份证号码已购车票的车次出发时间到达时间.车票信息链表示意图:车次起始站发车时间downnnext下一站名到站时间票价marknext座位号未购票用户信息队列:用户姓名购票的车次起始站要到的站达到时间用户姓名购票的车次起始站要到的站达到时间注:座位号包含在车次号中已购票用户信息链表示意图:用户姓名身份证号码已购车票的车次号出发时间到达时间注:座位号包含在车次号中②算法的设计:主函数:利用case 语句实现用户界面,用户输入需要的服务的数字代码,程序就会转到相应的函数,实现相应的功能。
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. 学生能掌握C语言基础语法,包括变量定义、数据类型、运算符、控制结构等;2. 学生能理解车票管理系统的需求分析,明确系统功能模块;3. 学生能运用C语言编写车票管理系统中各个功能模块的程序代码;4. 学生了解文件操作在车票管理系统中的应用。
技能目标:1. 学生能够运用结构体数组、链表等数据结构实现车票信息的管理;2. 学生能够使用函数实现模块化编程,提高代码的可读性和可维护性;3. 学生通过课程设计,培养分析和解决实际问题的能力;4. 学生能够运用调试工具,找出程序中的错误并进行修正。
情感态度价值观目标:1. 学生通过课程设计,培养对编程的兴趣和热情,提高自主学习能力;2. 学生在团队协作中,学会沟通与分享,培养合作精神;3. 学生在解决实际问题的过程中,体验程序设计的乐趣,增强自信心;4. 学生能够认识到编程在现实生活中的应用价值,激发对计算机科学的热爱。
二、教学内容1. C语言基础语法:变量定义、数据类型、运算符、控制结构(选择、循环);2. 面向过程编程:函数定义、调用、参数传递、递归;3. 数据结构:数组、结构体、链表;4. 文件操作:文件打开、读写、关闭;5. 车票管理系统功能模块:- 车票查询:按车次、日期、起始站、终点站查询车票信息;- 车票预订:选择车次、座位,录入乘客信息,完成预订;- 车票退订:根据预订记录,进行退票操作;- 车票统计:统计各车次、日期的售票情况;6. 程序调试与优化:调试工具使用,性能分析,代码优化;7. 项目实践:按照需求分析,分阶段完成车票管理系统的设计与实现。
教学内容安排与进度:第一周:C语言基础语法复习;第二周:数据结构、函数定义与调用;第三周:文件操作;第四周:车票管理系统需求分析,功能模块设计;第五周:车票查询、预订模块实现;第六周:车票退订、统计模块实现;第七周:项目调试、优化与测试;第八周:课程总结与项目汇报。
订票管理系统c语言课程设计
订票管理系统c语言课程设计一、课程目标知识目标:1. 理解C语言中结构体、数组、函数等基本概念,掌握其应用方法。
2. 学会使用C语言实现简单的订票管理系统,了解系统设计的基本流程和关键环节。
3. 掌握文件操作、指针等C语言高级特性,并能将其应用于实际项目中。
技能目标:1. 培养学生运用C语言进行问题分析和解决的能力,提高编程实践技能。
2. 培养学生团队协作能力,学会与他人共同完成一个项目,提高沟通与协作效率。
3. 培养学生具备一定的项目调试和优化能力,提高代码质量和性能。
情感态度价值观目标:1. 培养学生对计算机编程的兴趣和热情,激发学习动力。
2. 培养学生勇于面对困难、积极解决问题的精神,增强自信心。
3. 引导学生认识到编程在实际生活中的应用价值,培养社会责任感和创新意识。
分析课程性质、学生特点和教学要求,本课程将目标分解为以下具体学习成果:1. 学生能够独立完成一个简单的订票管理系统,展示其编程能力。
2. 学生能够通过团队协作,共同优化和完善订票管理系统,提高项目质量。
3. 学生在课程学习过程中,能够积极思考、提问,主动寻求解决问题的方法。
4. 学生能够体验到编程带来的成就感,激发进一步学习的兴趣和动力。
二、教学内容本课程教学内容主要包括以下几部分:1. C语言基础知识回顾:- 结构体的定义和使用- 数组的基本操作- 函数的定义和调用- 指针的概念及操作2. 订票管理系统需求分析:- 了解订票管理系统的功能模块- 分析系统需求和设计思路3. 订票管理系统模块设计:- 用户模块:注册、登录、修改密码等- 航班模块:航班查询、预订、取消预订等- 管理模块:航班管理、用户管理等- 数据存储模块:文件操作、数据存储与读取4. C语言编程实践:- 编写各模块的功能函数- 实现模块间的数据传递与交互- 调试与优化程序5. 团队协作与项目展示:- 分组进行项目开发- 协作完成项目,分享开发经验- 展示项目成果,进行评价与总结教学内容按照以下教学大纲安排和进度:第一周:回顾C语言基础知识,分析订票管理系统需求第二周:设计订票管理系统各模块,学习文件操作和指针第三周:编写各模块功能函数,实现模块间数据传递与交互第四周:项目调试与优化,团队协作与项目展示教材章节关联:《C语言程序设计》第3章:结构体与数组《C语言程序设计》第4章:函数《C语言程序设计》第5章:指针《C语言程序设计》第8章:文件操作与应用三、教学方法本课程将采用以下多样化的教学方法,以激发学生的学习兴趣和主动性:1. 讲授法:- 通过对C语言基础知识的回顾,为学生提供必要的概念和理论知识,为后续实践打下基础。
c语言课程设计车票管理系统
c语言课程设计车票管理系统一、教学目标本节课的学习目标为:知识目标:学生需要掌握C语言编程基础,理解结构体和文件操作等高级概念。
技能目标:学生能够运用C语言编写一个车票管理系统,培养学生的实际编程能力和问题解决能力。
情感态度价值观目标:通过本节课的学习,培养学生对计算机科学的兴趣,提高学生实际应用知识的能力。
二、教学内容本节课的教学内容主要包括:1.结构体的定义和使用:通过车票管理系统这个实例,让学生理解结构体在实际编程中的应用。
2.文件操作:讲解如何在C语言中进行文件的读写操作,让学生掌握文件操作的基本方法。
3.程序设计:引导学生运用所学的知识,设计并实现一个车票管理系统。
三、教学方法本节课的教学方法包括:1.讲授法:讲解结构体和文件操作的基本概念和原理。
2.案例分析法:通过分析车票管理系统的案例,让学生理解结构体和文件操作在实际编程中的应用。
3.实验法:让学生动手实践,编写一个车票管理系统,培养学生的实际编程能力。
四、教学资源本节课的教学资源包括:1.教材:《C语言程序设计》。
2.多媒体资料:包括结构体和文件操作的PPT讲解,以及车票管理系统的案例分析。
3.实验设备:计算机和网络设备,以便学生进行编程实践。
五、教学评估本节课的教学评估将采用以下方式:1.平时表现:评估学生在课堂上的参与度、提问和回答问题的表现,占总评的20%。
2.作业:布置与车票管理系统相关的编程作业,评估学生的编程能力和理解程度,占总评的30%。
3.考试:期末进行车票管理系统编程考试,评估学生的综合运用能力,占总评的50%。
评估方式将力求客观、公正,全面反映学生的学习成果。
六、教学安排本节课的教学安排如下:1.进度:按照教材的章节顺序,依次讲解结构体、文件操作等知识点,并在每个知识点讲解后进行案例分析和编程实践。
2.时间:共安排12课时,每课时45分钟,其中包括课堂讲解、案例分析、编程实践和课堂讨论等环节。
3.地点:计算机实验室,以便学生进行编程实践。
C语言--火车站售票系统报告及代码解析
目录第一章——————————————课程认识第二章——————————————课题选择第三章———————————总体设计与分析第四章————————————模块详细设计第五章————————————主要实现方法第六章————————————课程设计总结第七章————————————————结论第八章————————————————建议一、课程的性质、任务、目的C语言是非常优秀的程序设计语言,应用广泛,是高校计算机专业的一门专业基础课程;学好C语言,是学习计算机专业课程和用好计算机的重要基础。
要学好C语言,应抓好理论学习、上机实验以及综合应用这三个环节。
在《C程序设计》课程的学习中,学生在掌握C语言理论知识的同时,通过上机实验完成一定量的实践性题目,初步掌握了程序设计的基本思想、基本概念和基本方法。
本课程是计算机专业的学生在完成了《C程序设计》课程的学习后,为加强学生对程序设计思想的理解、通过解决有一定代表性的小型综合应用类课题从而提高实际编程能力而设置的一门实践性课程。
本课程为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机地结合起来,培养和锻炼学生分工协作、分析和解决实际问题并利用计算机求解问题的能力,以提高学生适应实际,实践编程的能力,从而掌握基本的程序设计过程和技巧,具备初步的高级语言程序设计和调试能力。
二、课题选择(背景、意义、实用性……);背景:现今,人们的生活水平渐渐改善,生活质量也随之提高,人们的精神需求也大了,应此,出行旅游,或是走访亲友成了习以为常的事了,出行已成为现代人的家常便饭,汽车,火车,飞机等交通工具为我们提供了更多的方便。
然而在售票中,就需要一个售票系统来帮助售票员来更为快捷,高效,方便的售票,同时也为了车站方面更好的管理票务,因此,一个好的车票管理系统就必不可少了。
意义:选择车站售票系统作为课程设计的课题,就车站的售票流程等进一步了解车站的售票系统的原理。
火车票售票系统(C语言顺序存储实现)
⽕车票售票系统(C语⾔顺序存储实现)储备知识:这个程序属于C语⾔基础训练题⽬,所以⽆需太多的复杂的语法和知识;本程序包含知识有:结构体,数组,简单的条件分⽀语句;(⽂章最后有全部代码)附上⼀张程序结构图:接下来就来看看怎么实现的吧1、定义结构体,记录车次信息;typedef struct train_infor{char number[10];//车次char start[20];//始发地char end[20];//终点站int year1,month1,day1,h1,m1;//发车⽇期时间int year2,month2,day2,h2,m2;//到达⽇期时间}train;2、定义⼀些程序中要⽤到的全局变量:int cnum=0;//记录总共有多少个列车信息;train info[10000];//结构体类型的数组⽤来保存所有的车次信息;train users[100][100];//⼆维数组⽤来保存⽤户信息,每⼀⾏可以⽤来表⽰⼀个⽤户的购票信息int vcs[100]={0};//⽤来记录每⼀个⼈⾃⼰账户的票数,初始全为0;3、管理员界⾯函数(这个函数⾥⾯会⽤到⼀些在后⾯才定义到的函数哦!看到不懂得函数可以往后翻翻看):admin_menu();int choose2;while(~scanf("%d",&choose2))//选择对应的操作;{switch(choose2){case1:create();break;case2:print();break;case3:query();break;case4:update();break;case5:insert();break;case6:dele();break;case0:return;//输⼊0直接退出整个函数default:printf("请选择有效操作对应编号哦!\n");break;}admin_menu();//每次操作结束后再次打印菜单栏}}4、按上述程序开始建造⽋缺的函数;管理员菜单:void admin_menu(){printf("***************************************************************\n"); printf("* 欢迎进⼊⽕车票信息管理系统 *\n"); printf("***************************************************************\n"); printf("* 1、录⼊⽕车票信息 *\n"); printf("* 2、显⽰⽕车票信息 *\n"); printf("* 3、查询⽕车票信息 *\n"); printf("* 4、修改⽕车票信息 *\n"); printf("* 5、添加⽕车票信息 *\n"); printf("* 6、删除⽕车票信息 *\n"); printf("* 0、退出 *\n");printf("***************************************************************\n"); }5、录⼊⽕车票信息:int sum,i;printf("请输⼊要录⼊的列车信息条数:");scanf("%d",&sum);printf("请依次输⼊车次始发地终点站发车时间(年/⽉/⽇时:分)到达时间(年/⽉/⽇时:分);\n");for(i=cnum;i<cnum+sum;i++)//录⼊信息从cnum开始的原因是避免管理员先进⾏插⼊或添加操作后再来录⼊数据,发⽣覆盖;同时这样可以多次进⾏录⼊操作(在之前的信息下继续添加)scanf("%s %s %s %d/%d/%d %d:%d %d/%d/%d %d:%d",info[i].number,info[i].start,info[i].end,&info[i].year1,&info[i].month1,&info[i].day1,&info[i].h1,&inf o[i].m1,&info[i].year2,&info[i].month2,&info[i].day2,&info[i].h2,&info[i].m2);printf("录⼊成功!\n");cnum+=sum;return;}6、显⽰⽕车票信息:void print(){if(cnum==0){printf("⽆列车信息!\n");return;}int i;printf("车次\t始发地\t终点站\t发车时间\t\t到达时间\n");for(i=0;i<cnum;i++)printf("%s\t%s\t%s\t%d/%02d/%02d %02d:%02d\t%d/%02d/%02d %02d:%02d\n",info[i].number,info[i].start,info[i].end,info[i].year1,info[i].month1,info[i]. day1,info[i].h1,info[i].m1,info[i].year2,info[i].month2,info[i].day2,info[i].h2,info[i].m2);return;}7、查询⽕车票信息:void query(){int i;printf("请输⼊查询车次:");char ch[10];//记录要查询的车次scanf("%s",ch);for(i=0;i<cnum;i++){if(strcmp(ch,info[i].number)==0)//⽐较所有的列车信息⼀直到和输⼊的车次相同则找到并输出,字符串的⽐较要是⽤strcmp()函数;如果相等则为0 {printf("%s\t%s\t%s\t%d/%02d/%02d %02d:%02d\t%d/%02d/%02d %02d:%02d\n",info[i].number,info[i].start,info[i].end,info[i].year1,info[i].month1,info [i].day1,info[i].h1,info[i].m1,info[i].year2,info[i].month2,info[i].day2,info[i].h2,info[i].m2);return;//找到后直接结束⽆需再查找}}printf("⽆此列车信息!\n");//如果找到前⾯就结束则不会运⾏到此处;所以运⾏到此处只能是没有找到;return;}8、修改⽕车票信息:int i;printf("请输⼊要修改的车次:");char ch[10];//记录要修改的车次scanf("%s",ch);//和查询⼀样先找到该列车所在的位置,然后对其进⾏修改for(i=0;i<cnum;i++){if(strcmp(ch,info[i].number)==0)//⽐较所有的列车信息⼀直到和输⼊的车次相同则找到并输出,字符串的⽐较要是⽤strcmp()函数;如果相等则为0 {printf("该列车原信息:\n");printf("车次\t始发地\t终点站\t发车时间\t\t到达时间\n");printf("%s\t%s\t%s\t%d/%02d/%02d %02d:%02d\t%d/%02d/%02d %02d:%02d\n",info[i].number,info[i].start,info[i].end,info[i].year1,info[i].month1,info [i].day1,info[i].h1,info[i].m1,info[i].year2,info[i].month2,info[i].day2,info[i].h2,info[i].m2);printf("请输⼊新的数据:\n");printf("车次\t始发地\t终点站\t发车时间\t\t到达时间\n");scanf("%s %s %s %d/%d/%d %d:%d %d/%d/%d %d:%d",info[i].number,info[i].start,info[i].end,&info[i].year1,&info[i].month1,&info[i].day1,&info[i].h1,&i nfo[i].m1,&info[i].year2,&info[i].month2,&info[i].day2,&info[i].h2,&info[i].m2);printf("修改成功!\n");return;//修改后直接结束⽆需再进⾏}}printf("⽆此列车信息!\n");//如果找到前⾯就结束则不会运⾏到此处;所以运⾏到此处只能是没有找到;return;}9、添加⽕车票信息:void insert(){int i=cnum;printf("请输⼊插⼊的信息:\n");printf("车次\t始发地\t终点站\t发车时间\t\t到达时间\n");scanf("%s %s %s %d/%d/%d %d:%d %d/%d/%d %d:%d",info[i].number,info[i].start,info[i].end,&info[i].year1,&info[i].month1,&info[i].day1,&info[i].h1,&info[i] .m1,&info[i].year2,&info[i].month2,&info[i].day2,&info[i].h2,&info[i].m2);cnum++;//列车信息总条数加⼀printf("插⼊成功!\n");return;}10、删除⽕车票信息:int i,vis=-1;printf("请输⼊要删除的车次:");char ch[10];//记录要删除的车次scanf("%s",ch);//和查询⼀样先找到该列车所在的位置,然后对其进⾏删除for(i=0;i<cnum;i++){if(strcmp(ch,info[i].number)==0)//⽐较所有的列车信息⼀直到和输⼊的车次相同则找到并输出,字符串的⽐较要是⽤strcmp()函数;如果相等则为0 {vis=i;//将要删除的车次的下标保存下来,为后边的删除操作服务;break;//找到后就可以结束循环}}if(vis==-1)//vis初始值设为-1因为下标不存在负值,如果经过查找后还没变说明没有找到该车次所以可以直接结束{printf("⽆此列车信息!\n");return;}else{for(i=vis;i<cnum-1;i++)//vis为要删除列车信息的下标,要想把它删除只⽤把后边的信息依次往前进⾏覆盖即可;此处i<cnum-1是为了避免最后越界;{info[i]=info[i+1];}printf("删除成功!\n");cnum--;//列车信息总条数减⼀;return;}}11、⽤户界⾯(这个函数⾥⾯也会⽤到⼀些在后⾯才定义到的函数!看到不懂得函数可以往后翻翻看):void user(){int no;printf("请输⼊你的⽤户编码:");scanf("%d",&no);//记录⽤户编码⽤来对应的保存其购票信息user_menu();int choose3;while(~scanf("%d",&choose3))//记录⽤户选择的操作;{switch(choose3){case1:look_up(no);break;case2:out_print(no);break;case3:refund(no);break;case0:return;//输⼊0直接退出整个函数default:printf("请选择有效操作对应编号哦!\n");break;}user_menu();}}12、⽤户菜单:void user_menu(){printf("***************************************************************\n"); printf("* 欢迎进⼊⽕车票售票系统 *\n"); printf("***************************************************************\n"); printf("* 1、⽕车票区间查询 *\n"); printf("* 2、打印购票信息 *\n"); printf("* 3、退票 *\n"); printf("* 0、退出 *\n"); printf("***************************************************************\n"); }13、⽕车票区间查询:if(cnum==0){printf("⽆车次信息,请管理员进⾏车次信息录⼊!\n");return;}char starts[20];char ends[20];int cnums=0,i;//记录查询到的车次条数printf("请输⼊查询的起始终⽌区间(空格隔开哦!):\n");scanf("%s %s",starts,ends);for(i=0;i<cnum;i++){if(strcmp(starts,info[i].start)==0&&strcmp(ends,info[i].end)==0){printf("%s\t%s\t%s\t%d/%02d/%02d %02d:%02d\t%d/%02d/%02d %02d:%02d\n",info[i].number,info[i].start,info[i].end,info[i].year1,info[i].month1,i nfo[i].day1,info[i].h1,info[i].m1,info[i].year2,info[i].month2,info[i].day2,info[i].h2,info[i].m2);cnums++;}}if(cnums==0){printf("⽆此区间车次信息!\n");return;}else{printf("------------------------\n");printf("| 是否购票 |\n");printf("------------------------\n");printf("| 1、是 | 2、否 |\n");printf("------------------------\n");int choose4;//记录⽤户的选择while(~scanf("%d",&choose4)){switch(choose4){case1:buy(no);break;case2:return;default:printf("请选择有效操作对应编号哦!\n");break;}printf("------------------------\n");printf("| 是否购票 |\n");printf("------------------------\n");printf("| 1、是 | 2、否 |\n");printf("------------------------\n");}}}14、买票:int i;printf("请输⼊你要购票的车次:\n"); char che[10];scanf("%s",che);for(i=0;i<cnum;i++){if(strcmp(che,info[i].number)==0){users[no][vcs[no]]=info[i];vcs[no]++;//该⽤户的购票数加⼀;printf("购票成功!\n");return;}}printf("⽆此列车信息!\n");return;}15、退票:int vis=-1,i;if(vcs[no]==0){printf("你还尚未购票哦!\n");return;}else{printf("你的购票信息:\n");printf("车次\t始发地\t终点站\t发车时间\t\t到达时间\n");for(i=0;i<vcs[no];i++){printf("%s\t%s\t%s\t%d/%02d/%02d %02d:%02d\t%d/%02d/%02d %02d:%02d\n",users[no][i].number,users[no][i].start,users[no][i].end,users[no][i].y ear1,users[no][i].month1,users[no][i].day1,users[no][i].h1,users[no][i].m1,users[no][i].year2,users[no][i].month2,users[no][i].day2,users[no][i].h2,users[no][i]. m2);}printf("请输⼊退票车次:");char cs[10];scanf("%s",cs);for(i=0;i<vcs[no];i++){if(strcmp(cs,users[no][i].number)==0)//⽐较你所购票的列车信息⼀直到和输⼊的车次相同则找到并输出,字符串的⽐较要是⽤strcmp()函数;如果相等则为0{vis=i;//将要退票的车次的下标保存下来,为后边的删除操作服务;break;//找到后就可以结束循环}}if(vis==-1)//vis初始值设为-1因为下标不存在负值,如果经过查找后还没变说明没有找到该车次所以可以直接结束{printf("你尚未购买此列车车票!\n");return;}else{for(i=vis;i<vcs[no]-1;i++)//vis为要删除列车信息的下标,要想把它删除只⽤把后边的信息依次往前进⾏覆盖即可;此处i<vcs[no]-1是为了避免最后越界;{users[no][i]=users[no][i+1];}printf("退票成功!\n");vcs[no]--;//购票总条数减⼀;return;}}}16、打印购票信息:int i;if(vcs[no]==0){printf("⽆购票记录!\n");return;}else{printf("车次\t始发地\t终点站\t发车时间\t\t到达时间\n");for(i=0;i<vcs[no];i++){printf("%s\t%s\t%s\t%d/%02d/%02d %02d:%02d\t%d/%02d/%02d %02d:%02d\n",users[no][i].number,users[no][i].start,users[no][i].end,users[no][i].y ear1,users[no][i].month1,users[no][i].day1,users[no][i].h1,users[no][i].m1,users[no][i].year2,users[no][i].month2,users[no][i].day2,users[no][i].h2,users[no][i]. m2);}}}17、主函数部分:int main(){printf("提⽰:整个输⼊过程请严格按照格式,标点均为英⽂!\n");printf("-------------请选择⾝份-------------\n");printf("| 1、管理员 | 2、⽤户 |\n");printf("| 0、结束程序 |\n");printf("------------------------------------\n");//输⼊1表⽰进⼊管理员界⾯,2进⼊⽤户界⾯int choose1;while(~scanf("%d",&choose1))//记录选择的序号,多组测试{if(choose1==0)break;switch(choose1){case1:admin();break;case2:user();break;default:printf("请选择有效操作对应编号哦!\n");break;}printf("-------------请选择⾝份-------------\n");printf("| 1、管理员 | 2、⽤户 |\n");printf("| 0、结束程序 |\n");printf("------------------------------------\n");}return0;}18、到此这个程序就可以运⾏了,以上就是各个部分的代码,希望你的程序也可以运⾏了( ̄︶ ̄)在此附上全部代码:#include<stdio.h>#include<stdlib.h>#include<string.h>//定义结构体,记录车次信息typedef struct train_infor{char number[10];//车次char start[20];//始发地char start[20];//始发地char end[20];//终点站int year1,month1,day1,h1,m1;//发车⽇期时间int year2,month2,day2,h2,m2;//到达⽇期时间}train;int cnum=0;//记录总共有多少个列车信息;train info[10000];//结构体类型的数组⽤来保存所有的车次信息;train users[100][100];//⼆维数组⽤来保存⽤户信息,每⼀⾏可以⽤来表⽰⼀个⽤户的购票信息int vcs[100]={0};//⽤来记录每⼀个⼈⾃⼰账户的票数,初始全为0;//录⼊⽕车票信息void create(){int sum,i;printf("请输⼊要录⼊的列车信息条数:");scanf("%d",&sum);printf("请依次输⼊车次始发地终点站发车时间(年/⽉/⽇时:分)到达时间(年/⽉/⽇时:分);\n");for(i=cnum;i<cnum+sum;i++)//录⼊信息从cnum开始的原因是避免管理员先进⾏插⼊或添加操作后再来录⼊数据,发⽣覆盖;同时这样可以多次进⾏录⼊操作(在之前的信息下继续添加)scanf("%s %s %s %d/%d/%d %d:%d %d/%d/%d %d:%d",info[i].number,info[i].start,info[i].end,&info[i].year1,&info[i].month1,&info[i].day1,&info[i].h1,&inf o[i].m1,&info[i].year2,&info[i].month2,&info[i].day2,&info[i].h2,&info[i].m2);printf("录⼊成功!\n");cnum+=sum;return;}//显⽰⽕车票信息void print(){if(cnum==0){printf("⽆列车信息!\n");return;}int i;printf("车次\t始发地\t终点站\t发车时间\t\t到达时间\n");for(i=0;i<cnum;i++)printf("%s\t%s\t%s\t%d/%02d/%02d %02d:%02d\t%d/%02d/%02d %02d:%02d\n",info[i].number,info[i].start,info[i].end,info[i].year1,info[i].month1,info[i]. day1,info[i].h1,info[i].m1,info[i].year2,info[i].month2,info[i].day2,info[i].h2,info[i].m2);return;}//查询⽕车票信息void query(){int i;printf("请输⼊查询车次:");char ch[10];//记录要查询的车次scanf("%s",ch);for(i=0;i<cnum;i++){if(strcmp(ch,info[i].number)==0)//⽐较所有的列车信息⼀直到和输⼊的车次相同则找到并输出,字符串的⽐较要是⽤strcmp()函数;如果相等则为0 {printf("%s\t%s\t%s\t%d/%02d/%02d %02d:%02d\t%d/%02d/%02d %02d:%02d\n",info[i].number,info[i].start,info[i].end,info[i].year1,info[i].month1,info [i].day1,info[i].h1,info[i].m1,info[i].year2,info[i].month2,info[i].day2,info[i].h2,info[i].m2);return;//找到后直接结束⽆需再查找}}printf("⽆此列车信息!\n");//如果找到前⾯就结束则不会运⾏到此处;所以运⾏到此处只能是没有找到;return;}//修改⽕车票信息void update(){int i;printf("请输⼊要修改的车次:");char ch[10];//记录要修改的车次scanf("%s",ch);//和查询⼀样先找到该列车所在的位置,然后对其进⾏修改for(i=0;i<cnum;i++){if(strcmp(ch,info[i].number)==0)//⽐较所有的列车信息⼀直到和输⼊的车次相同则找到并输出,字符串的⽐较要是⽤strcmp()函数;如果相等则为0 {printf("该列车原信息:\n");printf("车次\t始发地\t终点站\t发车时间\t\t到达时间\n");printf("%s\t%s\t%s\t%d/%02d/%02d %02d:%02d\t%d/%02d/%02d %02d:%02d\n",info[i].number,info[i].start,info[i].end,info[i].year1,info[i].month1,info [i].day1,info[i].h1,info[i].m1,info[i].year2,info[i].month2,info[i].day2,info[i].h2,info[i].m2);printf("请输⼊新的数据:\n");printf("车次\t始发地\t终点站\t发车时间\t\t到达时间\n");scanf("%s %s %s %d/%d/%d %d:%d %d/%d/%d %d:%d",info[i].number,info[i].start,info[i].end,&info[i].year1,&info[i].month1,&info[i].day1,&info[i].h1,&i nfo[i].m1,&info[i].year2,&info[i].month2,&info[i].day2,&info[i].h2,&info[i].m2);printf("修改成功!\n");return;//修改后直接结束⽆需再进⾏}}printf("⽆此列车信息!\n");//如果找到前⾯就结束则不会运⾏到此处;所以运⾏到此处只能是没有找到;return;}//添加⽕车票信息void insert(){int i=cnum;printf("请输⼊插⼊的信息:\n");printf("车次\t始发地\t终点站\t发车时间\t\t到达时间\n");scanf("%s %s %s %d/%d/%d %d:%d %d/%d/%d %d:%d",info[i].number,info[i].start,info[i].end,&info[i].year1,&info[i].month1,&info[i].day1,&info[i].h1,&info[i] .m1,&info[i].year2,&info[i].month2,&info[i].day2,&info[i].h2,&info[i].m2);cnum++;//列车信息总条数加⼀printf("插⼊成功!\n");return;}//删除⽕车票信息void dele(){int i,vis=-1;printf("请输⼊要删除的车次:");char ch[10];//记录要删除的车次scanf("%s",ch);//和查询⼀样先找到该列车所在的位置,然后对其进⾏删除for(i=0;i<cnum;i++){if(strcmp(ch,info[i].number)==0)//⽐较所有的列车信息⼀直到和输⼊的车次相同则找到并输出,字符串的⽐较要是⽤strcmp()函数;如果相等则为0 {vis=i;//将要删除的车次的下标保存下来,为后边的删除操作服务;break;//找到后就可以结束循环}}if(vis==-1)//vis初始值设为-1因为下标不存在负值,如果经过查找后还没变说明没有找到该车次所以可以直接结束{printf("⽆此列车信息!\n");return;}else{for(i=vis;i<cnum-1;i++)//vis为要删除列车信息的下标,要想把它删除只⽤把后边的信息依次往前进⾏覆盖即可;此处i<cnum-1是为了避免最后越界;{info[i]=info[i+1];}printf("删除成功!\n");cnum--;//列车信息总条数减⼀;return;}}//管理员菜单void admin_menu(){printf("***************************************************************\n"); printf("* 欢迎进⼊⽕车票信息管理系统 *\n"); printf("***************************************************************\n"); printf("* 1、录⼊⽕车票信息 *\n"); printf("* 2、显⽰⽕车票信息 *\n"); printf("* 3、查询⽕车票信息 *\n"); printf("* 4、修改⽕车票信息 *\n"); printf("* 5、添加⽕车票信息 *\n"); printf("* 6、删除⽕车票信息 *\n"); printf("* 0、退出 *\n");printf("***************************************************************\n"); }//管理员界⾯void admin(){admin_menu();int choose2;while(~scanf("%d",&choose2))//选择对应的操作;{switch(choose2){case1:create();break;case2:print();break;case3:query();break;case4:update();break;case5:insert();break;case6:dele();break;case0:return;//输⼊0直接退出整个函数default:printf("请选择有效操作对应编号哦!\n");break;}admin_menu();//每次操作结束后再次打印菜单栏}}//买票void buy(int no){int i;printf("请输⼊你要购票的车次:\n");char che[10];scanf("%s",che);for(i=0;i<cnum;i++){if(strcmp(che,info[i].number)==0){users[no][vcs[no]]=info[i];vcs[no]++;//该⽤户的购票数加⼀;printf("购票成功!\n");return;}}printf("⽆此列车信息!\n");return;}//⽕车票区间查询void look_up(int no){if(cnum==0){printf("⽆车次信息,请管理员进⾏车次信息录⼊!\n");return;}char starts[20];char ends[20];int cnums=0,i;//记录查询到的车次条数printf("请输⼊查询的起始终⽌区间(空格隔开哦!):\n");scanf("%s %s",starts,ends);for(i=0;i<cnum;i++){if(strcmp(starts,info[i].start)==0&&strcmp(ends,info[i].end)==0){printf("%s\t%s\t%s\t%d/%02d/%02d %02d:%02d\t%d/%02d/%02d %02d:%02d\n",info[i].number,info[i].start,info[i].end,info[i].year1,info[i].month1,i nfo[i].day1,info[i].h1,info[i].m1,info[i].year2,info[i].month2,info[i].day2,info[i].h2,info[i].m2);cnums++;}}if(cnums==0){printf("⽆此区间车次信息!\n");return;}else{printf("------------------------\n");printf("| 是否购票 |\n");printf("------------------------\n");printf("| 1、是 | 2、否 |\n");printf("------------------------\n");int choose4;//记录⽤户的选择while(~scanf("%d",&choose4)){switch(choose4){case1:buy(no);break;case2:return;default:printf("请选择有效操作对应编号哦!\n");break;}printf("------------------------\n");printf("| 是否购票 |\n");printf("------------------------\n");printf("| 1、是 | 2、否 |\n");printf("------------------------\n");}}}//退票void refund(int no){int vis=-1,i;if(vcs[no]==0){printf("你还尚未购票哦!\n");return;}else{printf("你的购票信息:\n");printf("车次\t始发地\t终点站\t发车时间\t\t到达时间\n");for(i=0;i<vcs[no];i++){printf("%s\t%s\t%s\t%d/%02d/%02d %02d:%02d\t%d/%02d/%02d %02d:%02d\n",users[no][i].number,users[no][i].start,users[no][i].end,users[no][i].y ear1,users[no][i].month1,users[no][i].day1,users[no][i].h1,users[no][i].m1,users[no][i].year2,users[no][i].month2,users[no][i].day2,users[no][i].h2,users[no][i]. m2);}printf("请输⼊退票车次:");char cs[10];scanf("%s",cs);for(i=0;i<vcs[no];i++){if(strcmp(cs,users[no][i].number)==0)//⽐较你所购票的列车信息⼀直到和输⼊的车次相同则找到并输出,字符串的⽐较要是⽤strcmp()函数;如果相等则为0{vis=i;//将要退票的车次的下标保存下来,为后边的删除操作服务;break;//找到后就可以结束循环}}if(vis==-1)//vis初始值设为-1因为下标不存在负值,如果经过查找后还没变说明没有找到该车次所以可以直接结束{printf("你尚未购买此列车车票!\n");return;}else{for(i=vis;i<vcs[no]-1;i++)//vis为要删除列车信息的下标,要想把它删除只⽤把后边的信息依次往前进⾏覆盖即可;此处i<vcs[no]-1是为了避免最后越界;{users[no][i]=users[no][i+1];}printf("退票成功!\n");vcs[no]--;//购票总条数减⼀;return;}}}//打印购票信息void out_print(int no){int i;if(vcs[no]==0){printf("⽆购票记录!\n");return;}else{printf("车次\t始发地\t终点站\t发车时间\t\t到达时间\n");for(i=0;i<vcs[no];i++){printf("%s\t%s\t%s\t%d/%02d/%02d %02d:%02d\t%d/%02d/%02d %02d:%02d\n",users[no][i].number,users[no][i].start,users[no][i].end,users[no][i].y ear1,users[no][i].month1,users[no][i].day1,users[no][i].h1,users[no][i].m1,users[no][i].year2,users[no][i].month2,users[no][i].day2,users[no][i].h2,users[no][i]. m2);}}}//⽤户菜单void user_menu(){printf("***************************************************************\n");printf("* 欢迎进⼊⽕车票售票系统 *\n");printf("***************************************************************\n");printf("* 1、⽕车票区间查询 *\n");printf("* 2、打印购票信息 *\n");printf("* 3、退票 *\n");printf("* 0、退出 *\n");printf("***************************************************************\n");}//⽤户界⾯void user(){int no;printf("请输⼊你的⽤户编码:");scanf("%d",&no);//记录⽤户编码⽤来对应的保存其购票信息user_menu();int choose3;while(~scanf("%d",&choose3))//记录⽤户选择的操作;{switch(choose3){case1:look_up(no);break;case2:out_print(no);break;case3:refund(no);break;case0:return;//输⼊0直接退出整个函数default:printf("请选择有效操作对应编号哦!\n");break;}user_menu();}}int main(){printf("提⽰:整个输⼊过程请严格按照格式,标点均为英⽂!\n");printf("-------------请选择⾝份-------------\n");printf("| 1、管理员 | 2、⽤户 |\n");printf("| 0、结束程序 |\n");printf("------------------------------------\n");//输⼊1表⽰进⼊管理员界⾯,2进⼊⽤户界⾯int choose1;while(~scanf("%d",&choose1))//记录选择的序号,多组测试{if(choose1==0)if(choose1==0)break;switch(choose1){case1:admin();break;case2:user();break;default:printf("请选择有效操作对应编号哦!\n");break;}printf("-------------请选择⾝份-------------\n");printf("| 1、管理员 | 2、⽤户 |\n");printf("| 0、结束程序 |\n");printf("------------------------------------\n");}return0;}。
C语言火车票管理系统
C语言火车票管理系统#include#include#include#include#include#define N 1000typedefstruct 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++)< p="">{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++)< p="">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<="">{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,r ecords[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++)< p="">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].hour,records[i].min,records[i].from,records[i].to,records[i].hours,records[i].max,r ecords[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++)< p="">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++)< p="">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++)< p=""> 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++)< p=""> {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,re cords[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_hourtm_hour==atoi(records[i].hour)&&local-> tm_min<atoi(records[i].min))< p="">//atoi将字符串转换成一个整数值return 1;elsereturn 0;}</atoi(records[i].min))<></class_num;i++)<></class_num-1;i++)<></class_num;i++)<></class_num;i++)<></class_num;i++)<></i;h++)<></class_num;i++)<>。
VC车站票务管理系统(C语言(liunx))(SQLlite)
VC++062车站票务管理系统(C语言(liunx))(SQLlite)摘要:铁路客货运业务诞生已有近一个世纪了,作为现有交通工具最为普遍的一种,铁路客货运给民众的生活、出行带来了极大的方便。
铁路客货运业务中,售票是必不可少的一个环节。
自铁路运营以来,售票方式在“大提速”似的的在发展,早期的车票还是纯手工制作,且售票结构单一,每个工作人员只能完成一种工作,若要买一张票需要2-3分钟的时间。
随着科技的发展,计算机的诞生,信息技术在管理上越来越深入而广泛的应用,管理系统的实施在技术上已逐步成熟。
任何单位若想把内部活动有机的组织起来,就需要建立与自身特点适应的管理系统。
本系统是根据售票人员的需求,同时方便购票人员,改变以前购票费时的难题,开发的一套车站票务管理系统。
本系统是在Linux环境下利用C语言基于MiniGUI图形界面开发的,数据库采用的是SQLite3。
通过对数据库SQLite3的增、删、改、查等操作实现系统订票,退票,改签票务以及管理员对数据及时更新等功能,实现方便购票人员和工作人员,以达到即可提高工作人员工作效率,又节省购票人员时间的目的。
关键词:车站票务管理系统,Linux,MiniGUI,SQLite3目录毕业设计(论文)任务书I摘要IIABSTRACT III第1章绪论11.1 论文研究主要内容11.2 国内外现状21.3 论文组织结构2第2章关键技术介绍 42.1关键性开发技术的介绍42.1.1Linux环境下C编程42.1.2MiniGUI图形开发界面52.1.3SQLite数据库操作5第3章系统分析73.1体系结构73.1.1功能描述73.1.2业务模型73.2系统开发环境93.3系统任务的可行性分析93.3.1技术可行性93.3.2经济可行性9第4章系统设计114.1设计指导思想和原则114.1.1指导思想114.1.2软件设计原则114.2构架概述134.3系统的概要设计144.3.1系统结构模块与程序的关系144.3.2运行模式154.3.3数据结构164.3.4功能模块设计164.3.5系统故障处理设计16第5章系统实现185.1开发环境185.2功能说明185.3功能实现185.3.1MiniGUI图形界面185.3.2查票模块205.3.3订票模块215.3.4退票模块215.3.5改票模块22第6章系统测试236.1测试方案及测试用例236.1.1订票模块236.1.2退票模块236.1.3查票模块236.1.4改票模块23第7章结论24参考文献25致谢26功能说明车站票务管理系统的核心部分为四个模块,即订票、退票、查票、改票四个模块,实现此四个模块的主要技术就是对SQLite3数据库的增、删、改、查。
c语言火车售票系统课程设计
c语言火车售票系统课程设计一、课程目标知识目标:1. 理解C语言中数组、函数、指针、结构体等基本概念,并能运用到火车售票系统的设计与实现中;2. 掌握C语言文件操作,实现火车票信息的存储与读取;3. 理解并掌握C语言中模块化编程思想,将火车售票系统划分为多个功能模块。
技能目标:1. 能够运用C语言编写出具有良好结构和可读性的代码;2. 培养学生分析问题、解决问题的能力,通过设计火车售票系统,学会使用C 语言进行实际项目开发;3. 学会使用调试工具,对火车售票系统进行测试和优化。
情感态度价值观目标:1. 培养学生合作意识,学会在团队中共同解决问题,提高沟通与协作能力;2. 激发学生对计算机编程的兴趣,培养勇于探索、积极创新的精神;3. 培养学生关注社会实际问题的责任感,了解信息技术在实际应用中的作用和价值。
课程性质:本课程为C语言程序设计课程的实践环节,通过设计火车售票系统,让学生将所学理论知识运用到实际项目中。
学生特点:学生已具备C语言基础知识和一定的编程能力,但对实际项目的开发流程和模块化编程思想尚不熟悉。
教学要求:注重理论与实践相结合,引导学生自主探究,培养学生实际编程能力和团队协作能力。
在教学过程中,关注学生的个体差异,提供个性化指导,确保每位学生都能达到课程目标。
通过课程学习,使学生具备独立开发小型项目的能力。
二、教学内容1. 火车售票系统需求分析:介绍项目背景,分析系统功能需求,明确学生需要实现的功能模块,如用户登录、车次查询、购票、退票、余票显示等。
2. C语言基础知识回顾:- 数组:回顾一维数组、二维数组的概念和应用;- 函数:介绍函数定义、调用、参数传递等基本概念;- 指针:讲解指针的定义、使用和指针操作;- 结构体:回顾结构体的定义和使用。
3. 火车售票系统设计:- 系统架构设计:引导学生采用模块化设计思想,将系统划分为多个功能模块;- 数据结构设计:介绍如何使用结构体和数组来存储和管理车次、座位、用户等信息。
火车票务管理系统(C语言)
火车票务管理系统一、课题内容和要求设计目标:设计一个火车票务管理系统,用C语言实现。
对该系统的要求如下:需求描述:1.系统功能(1)火车时刻信息录入。
包括车次、日期、起点、终点、开车时间、到达时间、票价。
数据存入数据文件或中。
(2)火车时刻信息查询。
按照车次查询按终点查询按起点查询按终点和日期查询(3)统计按终点统计每日的车次数按起点统计每日的车次数2. 系统主界面应有以下功能选项录入火车时刻信息查询火车时刻信息统计火车车次退出注:建议用VC环境开发用户界面。
结果形式:提交程序设计报告和可演示的系统软件二、需求分析系统主界面应有以下功能选项1.录入火车时刻信息2.查询火车时刻信息3.统计火车车次4.退出(1)火车时刻信息录入。
包括车次、日期、起点、终点、开车时间、到达时间、票价。
数据存入数据文件或中。
(2)火车时刻信息查询。
按照车次查询按终点查询按起点查询按终点和日期查询(3)统计按终点统计每日的车次数按起点统计每日的车次数二、概要设计void SearchTrainNum();入火车时刻信息.\n");printf("2.查询火车时刻信息.\n");printf("3.统计火车车次.\n");printf("4.退出.\n");Star();printf("\n");printf("请输入:");scanf("%d",&request);switch(request) \","wb"); rainNum,train[i].date,train[i].fromPlace ,train[i].toPlace,train[i].inTime,train[i].outTime,&myprice);train[i].price=myprice;fwrite(&train[i],sizeof(struct TRAIN),1,fp);i++;printf("continue(Y/N)(N to end)?");getchar();scanf("%c",&ch);}while(ch!='N');fclose(fp);printf("返回主界面吗?(Y返回)");getchar();scanf("%c",&ch);if(ch=='Y'){printf("\n\n");goto repeat;}}break;case 2:{ printf("\n\n");printf(">>>>>火车时刻信息查询<<<<<\n"); printf("1.按车次查询.\n");printf("2.按终点查询.\n");printf("3.按起点查询.\n");printf("4.按终点和日期查询.\n");printf("5.退出.\n");printf("请输入:");scanf("%d",&request);switch(request){case 1: SearchTrainNum(); break; case 2: SearchToPlace(); break; case 3: SearchFromPlace(); break; case 4: SearchToPlaceAndDate(); break; case 5: exit(0); break;}printf("返回主界面吗?(Y返回)");getchar();scanf("%c",&ch);if(ch=='Y'){printf("\n\n");goto repeat;}} break;case 3:{printf("\n\n");printf(">>>>>火车车次统计系统<<<<<\n");printf("1.按终点统计每日的车次数.\n");printf("2.按起点统计每日的车次数.\n");printf("3.退出.\n");printf("请输入:");scanf("%d",&request);switch(request){case 1: CountToPlace(); break; case 2: CountFromPlace(); break; case 3: exit(0); break;}printf("返回主界面吗?(Y返回)");getchar();scanf("%c",&ch);if(ch=='Y'){printf("\n\n");goto repeat;}} break;case 4:{Star();printf("欢迎下次使用,拜拜~~\n");Star();}exit(0); break;default:printf("Incorrect num entered.");printf("Enter a new num.\n");break;}return 0;}void SearchTrainNum(){FILE *fp1;char num[20];char ch;int i=0;fp1=fopen(".\\","r+");if(!fp1){printf("File can not be opened\n");exit(1);}do{rewind(fp1); n>>>");scanf("%s",num);while(!feof(fp1)){fread(&train[i],sizeof(struct TRAIN),1,fp1);if(strcmp(num,train[i].trainNum)==0){printf("%-4s%-12s%-8s%-10s%-10s%-8s%.2lf",train[i].trainNum,train[i].date, train[i].fromPlace,train[i].toPlace,train[i].inTime,train[i].outTime,train[i].price);printf("\n");}i++;}printf("continue(Y/N)(N to end)?");getchar();scanf("%c",&ch);}while(ch!='N');printf("\n");fclose(fp1);}void SearchToPlace(){FILE *fp2;char num[20];char ch;int i=0;fp2=fopen(".\\","r+");if(!fp2){printf("File can not be opened\n");exit(1);}do{rewind(fp2);printf("输入你要查询的终点.\n>>>");scanf("%s",num);while(!feof(fp2)){fread(&train[i],sizeof(struct TRAIN),1,fp2);if(strcmp(num,train[i].toPlace)==0){printf("%-4s%-12s%-8s%-10s%-10s%-8s%.2lf",train[i].trainNum,train[i].date, train[i].fromPlace,train[i].toPlace,train[i].inTime,train[i].outTime,train[i].price);printf("\n");}i++;}printf("continue(Y/N)(N to end)?");getchar();scanf("%c",&ch);}while(ch!='N');printf("\n");fclose(fp2);}void SearchFromPlace(){FILE *fp3;char num[20];char ch;int i=0;fp3=fopen(".\\","r+");if(!fp3){printf("File can not be opened\n");exit(1);}do{rewind(fp3);printf("输入你要查询的起点.\n>>>");scanf("%s",num);while(!feof(fp3)){fread(&train[i],sizeof(struct TRAIN),1,fp3);if(strcmp(num,train[i].fromPlace)==0){printf("%-4s%-12s%-8s%-10s%-10s%-8s%.2lf",train[i].trainNum,train[i].date,tra in[i].fromPlace,train[i].toPlace,train[i].inTime,train[i].outTime,train[i].price);printf("\n");}i++;}printf("continue(Y/N)(N to end)?");getchar();scanf("%c",&ch);}while(ch!='N');printf("\n");fclose(fp3);}void SearchToPlaceAndDate(){FILE *fp4;char num[20];char num1[20];char ch;int i=0;fp4=fopen(".\\","r+");if(!fp4){printf("File can not be opened\n");exit(1);}do{rewind(fp4);printf("输入你要查询的终点与日期.\n>>>");scanf("%s",num);scanf("%s",num1);while(!feof(fp4)){fread(&train[i],sizeof(struct TRAIN),1,fp4);if((strcmp(num,train[i].toPlace)==0)&&(strcmp(num1,train[i].date)==0)) {printf("%-4s%-12s%-8s%-10s%-10s%-8s%.2lf",train[i].trainNum,train[i].date, train[i].fromPlace,train[i].toPlace,train[i].inTime,train[i].outTime,train[i].price);printf("\n");}i++;}printf("continue(Y/N)(N to end)?");getchar();scanf("%c",&ch);}while(ch!='N');printf("\n");fclose(fp4);}void CountToPlace(){FILE *fp5;char num[20];char ch;int i=0;int j=0;fp5=fopen(".\\","r+");if(!fp5){printf("File can not be opened\n");exit(1);}do{rewind(fp5);printf("输入你(要统计的车次数的)终点.\n>>>");scanf("%s",num);j=0;while(!feof(fp5)){fread(&train[i],sizeof(struct TRAIN),1,fp5);if(strcmp(num,train[i].toPlace)==0){j++;}i++;}printf("当日终点%s的车次数:%d",num,j);printf("\n");printf("continue(Y/N)(N to end)?");getchar();scanf("%c",&ch);}while(ch!='N');fclose(fp5);}void CountFromPlace(){FILE *fp6;char num[20];char ch;int i=0;int j=0;fp6=fopen(".\\","r+");if(!fp6){printf("File can not be opened\n");exit(1);}do{rewind(fp6);printf("输入你(要统计的车次数的)起点.\n>>>");scanf("%s",num);j=0;while(!feof(fp6)){fread(&train[i],sizeof(struct TRAIN),1,fp6);if(strcmp(num,train[i].fromPlace)==0){j++;}i++;}printf("当日起点%s的车次数:%d",num,j);printf("\n");printf("continue(Y/N)(N to end)?");getchar();scanf("%c",&ch);}while(ch!='N');fclose(fp6);}void Star(){int i;for(i=0;i<20;i++){printf("*");}printf("\n");}四、测试数据及其结果分析(如图)1.火车时刻信息录入2.火车时刻信息查询。
c语言课程设计火车售票系统
c语言课程设计火车售票系统一、教学目标本章节的教学目标旨在让学生掌握C语言编程的基本知识,通过构建火车售票系统的案例,使学生能够理解和运用C语言的数据类型、控制结构、函数等核心概念。
同时,培养学生解决实际问题的能力,提高学生的编程思维和团队协作能力。
具体来说,知识目标包括:1.掌握C语言的基本语法和数据类型。
2.理解函数的定义和调用。
3.熟悉数组、指针和字符串在编程中的应用。
4.学习常用的输入输出库函数。
技能目标包括:1.能够使用C语言编写简单的程序。
2.能够运用条件语句和循环语句实现复杂逻辑。
3.能够独立完成火车售票系统的编程任务。
4.具备良好的代码调试和优化能力。
情感态度价值观目标包括:1.培养学生的创新意识和解决问题的能力。
2.增强学生对编程事业的热爱和敬业精神。
3.培养学生团队合作和沟通交流的能力。
二、教学内容本章节的教学内容主要包括C语言的基本语法、数据类型、控制结构、函数、数组、指针和字符串等。
通过讲解火车售票系统的案例,使学生能够将这些知识点运用到实际编程中。
具体的教学大纲如下:1.第一课时:C语言概述和基本语法。
2.第二课时:数据类型和变量。
3.第三课时:运算符和表达式。
4.第四课时:控制结构(条件语句、循环语句)。
5.第五课时:函数的定义和调用。
6.第六课时:数组、指针和字符串。
7.第七课时:文件操作和库函数。
8.第八课时:火车售票系统案例分析。
9.第九课时:火车售票系统编程实践。
10.第十课时:代码调试和优化。
三、教学方法为了提高教学效果,本章节将采用多种教学方法相结合的方式。
包括:1.讲授法:讲解C语言的基本语法、数据类型、控制结构等知识点。
2.案例分析法:分析火车售票系统的案例,引导学生运用所学知识解决实际问题。
3.实验法:让学生动手编写代码,进行火车售票系统的实践操作。
4.讨论法:学生进行小组讨论,分享编程心得和解决问题的方法。
四、教学资源本章节的教学资源包括:1.教材:《C程序设计语言》(K&R)。
火车票售票系统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语言 源代码
Journey Planer 原始程序#define TRAIN struct journey/*#define _CRT_SECURE_NO_DEPRECATE*/#include<stdlib.h>#include<stdio.h>#include<tchar.h>#include<string.h>#include<conio.h>TRAIN{char start_site[20]; /*始发站*/char end_site[20];/*终点站*/char go_time[6]; /*出发时间*/char end_time[6]; /*到达时间*/}all[200]={ "Delphinium","Oopcentral","0810","1118",\ "Delphinium","Seatown" ,"0814","1023",\ "Delphinium" ,"Seatown" ,"0938", "1152",\ "Delphinium" ,"Seatown" ,"1015", "1225",\ "Delphinium" ,"Seatown" ,"1115", "1321",\ "Delphinium" ,"Seatown" ,"1236", "1439",\ "Delphinium" ,"Teakall" ,"0825", "0923",\ "Delphinium" ,"Teakall" ,"0925", "1023",\ "Delphinium" ,"Teakall" ,"1025", "1123",\ "Delphinium" ,"Teakall" ,"1125", "1223",\ "Delphinium" ,"Teakall" ,"1225", "1323",\ "Delphinium" ,"Teakall" ,"1325", "1423",\ "Delphinium" ,"Teakall" ,"1425", "1523",\ "Delphinium" ,"Teakall" ,"1525", "1623",\ "Javaville" ,"Seatown" ,"0830", "0955",\ "Javaville" ,"Seatown" ,"1013", "1140",\ "Javaville" ,"Seatown" ,"1114", "1240",\ "Javaville" ,"Seatown" ,"1210", "1340",\ "Javaville" ,"Seatown" ,"1314", "1440",\ "Javaville" ,"Seatown" ,"1412", "1542",\ "Javaville" ,"Teakall" ,"0926", "1302",\ "Javaville" ,"Teakall" ,"1118", "1436",\ "Javaville" ,"Teakall" ,"1256", "1616",\ "Javaville" ,"Teakall" ,"1535", "1902",\ "Oopcentral" ,"Delphinium" ,"0840", "1141",\ "Oopcentral" ,"Seatown" ,"0810", "1321",\ "Oopcentral" ,"Seatown" ,"0910", "1349",\ "Oopcentral" ,"Seatown" ,"0940", "1500",\ "Oopcentral" ,"Seatown" ,"1155", "1653",\ "Oopcentral" ,"Seatown" ,"1440", "1919",\ "Oopcentral" ,"Teakall" ,"1040", "1412",\ "Oopcentral" ,"Teakall" ,"1155", "1515",\ "Perlston" ,"Seatown" ,"0819", "0913",\ "Perlston" ,"Seatown" ,"0919", "1013",\ "Perlston" ,"Seatown" ,"1019", "1113",\ "Perlston" ,"Seatown" ,"1119", "1213",\ "Perlston" ,"Seatown" ,"1219", "1313",\ "Perlston" ,"Seatown" ,"1319", "1413",\ "Perlston" ,"Seatown" ,"1419", "1513",\"Seatown" ,"Delphinium" ,"0845", "1046",\ "Seatown" ,"Delphinium" ,"1045", "1246",\ "Seatown" ,"Delphinium" ,"1145", "1347",\ "Seatown" ,"Delphinium" ,"1245", "1447",\ "Seatown" ,"Delphinium" ,"1445", "1647",\ "Seatown" ,"Javaville" ,"0830", "1007",\ "Seatown" ,"Javaville" ,"0930", "1107",\ "Seatown" ,"Javaville" ,"1000", "1136",\ "Seatown" ,"Javaville" ,"1039", "1155",\ "Seatown" ,"Javaville" ,"1100", "1231",\ "Seatown" ,"Javaville" ,"1230", "1354",\ "Seatown" ,"Javaville" ,"1330", "1453",\ "Seatown" ,"Javaville" ,"1509", "1642",\ "Seatown" ,"Oopcentral" ,"0905", "1338",\ "Seatown" ,"Oopcentral" ,"1104", "1532",\ "Seatown" ,"Oopcentral" ,"1334", "1909",\ "Seatown" ,"Oopcentral" ,"1445", "1956",\ "Seatown" ,"Perlston" ,"0836", "0930",\ "Seatown" ,"Perlston" ,"0936", "1030",\ "Seatown" ,"Perlston" ,"1036", "1130",\ "Seatown" ,"Perlston" ,"1136", "1230",\ "Seatown" ,"Perlston" ,"1236", "1330",\ "Seatown" ,"Perlston" ,"1336", "1430",\ "Seatown" ,"Perlston" ,"1436", "1530",\ "Seatown" ,"Teakall" ,"0800", "0945",\ "Seatown" ,"Teakall" ,"0835", "1017",\ "Seatown" ,"Teakall" ,"0934", "1120",\ "Seatown" ,"Teakall" ,"1034", "1216",\ "Seatown" ,"Teakall" ,"1107", "1302",\ "Seatown" ,"Teakall" ,"1134", "1326",\ "Seatown" ,"Teakall" ,"1234", "1417",\ "Seatown" ,"Teakall" ,"1334", "1519",\ "Seatown" ,"Teakall" ,"1434", "1616",\ "Teakall" ,"Delphinium" ,"0833", "0933",\ "Teakall" ,"Delphinium" ,"0933", "1033",\ "Teakall" ,"Delphinium" ,"1033", "1133",\ "Teakall" ,"Delphinium" ,"1133", "1233",\ "Teakall" ,"Delphinium" ,"1233", "1333",\ "Teakall" ,"Delphinium" ,"1333", "1433",\ "Teakall" ,"Delphinium" ,"1433", "1533",\ "Teakall" ,"Delphinium" ,"1533", "1633",\ "Teakall" ,"Javaville" ,"1103", "1429",\ "Teakall" ,"Javaville" ,"1115", "1445",\ "Teakall" ,"Javaville" ,"1217", "1542",\ "Teakall" ,"Javaville" ,"1517", "1846",\ "Teakall" ,"Oopcentral" ,"1307", "1628",\ "Teakall" ,"Oopcentral" ,"1522", "1909",\ "Teakall" ,"Seatown" ,"0814", "1003",\ "Teakall" ,"Seatown" ,"0914", "1100",\ "Teakall" ,"Seatown" ,"1014", "1159",\ "Teakall" ,"Seatown" ,"1115", "1303",\ "Teakall" ,"Seatown" ,"1217", "1403",\ "Teakall" ,"Seatown" ,"1314", "1451",\ "Teakall" ,"Seatown" ,"1417", "1600",\ "#","#","#","#"void _time_to_2_numbers(char a[6],int *p1,int *p2) /*字符串---- 数字,指针带回小时和分钟两个整*/ {int t11,t12,t21,t22;t11=a[0]-48; /*将'2'*字符转换为数字2*/t12=a[1]-48;*p1=t11*10+t12; /*t1:前两位*/t21=a[2]-48;t22=a[3]-48;*p2=t21*10+t22; /*t2:后两位*/}TRAIN my[100]; /*存放:直达直达或者不能直达时前一段车次*/TRAIN change[100]; /*存放:转车的车次*/char site[7][20]={"Delphinium","Javaville","Oopcentral","Perlston","Seatown","Teakall"};/*站点集合*/char my_start_site[20]=""; /*输入的始发站*/char my_end_site[20]=""; /*输入的终点站*/char my_end_time[6]=""; /*输入的到达时间*/int all_length=0;void _duration(char time1[6],char time2[6],char duration_time[6])/*duration _time: 时间差*/{int f1=0,f2=0,m1=0,m2=0;int d1,d2; /*算时间差用*/int *k1=&f1,*k2=&f2,*n1=&m1,*n2=&m2;_time_to_2_numbers(time1,k1,k2); /*得到f1,f2 第一个时间的小时,分钟*/_time_to_2_numbers(time2,n1,n2); /*得到m1,m2 第二个时间的小时¡分钟*/d1=m1-f1; /*小时的差值*/if (m2>=f2)d2=m2-f2; /*分钟的差值*/else{d2=m2+60-f2;d1=d1-1;}duration_time[0]='0';duration_time[1]=d1+48;duration_time[2]=d2/10+48;duration_time[3]=d2%10+48;duration_time[4]='\0'; /*时间差值---duration_time*/}int _In_5_60(char time1[6],char time2[6]){int f1=0,f2=0,m1=0,m2=0;int d1,d2; /*算时间差用*/int *k1=&f1,*k2=&f2,*n1=&m1,*n2=&m2;_time_to_2_numbers(time1,k1,k2); /*得到f1,f2 第一个时间的小时¡分钟*/_time_to_2_numbers(time2,n1,n2); /*得到m1,m2 第二个时间的小时¡分钟*/d1=m1-f1; /*小时的差值*/if (m2>=f2)d2=m2-f2; /*分钟的差值*/elsed2=m2+60-f2;d1=d1-1;}if ((d1==1&&d2==0) ||(d1==0&&d2>=5)) /*是否5---60分钟之内*/return1; /*用指针带出flag2的值*/elsereturn0;}int _In_2_hours(char time1[6],char time2[6]){int f1=0,f2=0,m1=0,m2=0;int *k1=&f1,*k2=&f2,*n1=&m1,*n2=&m2;_time_to_2_numbers(time1,k1,k2); /*得到f1,f2 第一个时间的小时¡分钟*/_time_to_2_numbers(time2,n1,n2); /*得到m1,m2 第Ì二t个时间的小时¡分钟*/if ( m1<f1||(f1==m1&&m2<f2) )return0; /*输入时间晚于到达时间*/m1-=2;if ( (f1>m1)||(f1==m1&&f2>m2) )return1; /*两小时之内*/elsereturn0;}void _format_time(char s1[6],char result[6]) /*将时间1234变为12:34的格式*/{strcpy_s(result,6,s1);result[4]=result[3];result[3]=result[2];result[2]=':';result[5]='\0';}void _printf_arr(TRAIN f[100],int len) /*打印数组f,测试用*/{int i=0;printf("\n\n");for(i=0;i<len;i++){printf("%s,%s,%s,%s\n",f[i].start_site,f[i].end_site,f[i].go_time,f[i].end_time);if ((i+1)%10==0) {printf("\n");getchar();}}}int _len(TRAIN t[100]) /*求实际长度*/{int i=0;for(;strcmp(t[i].start_site,"#");i++);return i;}void _search_site(char one_site[],TRAIN temp[100])/*查找所有以one_site为起点的列车,结果存放在temp中*/{int i=0,j=0;for(;i<all_length;i++)if (strcmp(one_site,all[i].start_site)==0){strcpy_s(temp[j].start_site,20,all[i].start_site);strcpy_s(temp[j].end_site,20,all[i].end_site);strcpy_s(temp[j].go_time,6,all[i].go_time);strcpy_s(temp[j].end_time,6,all[i].end_time);j++;}strcpy_s(temp[j].start_site,20,"#");strcpy_s(temp[j].end_site,20,"#");strcpy_s(temp[j].go_time,6,"#");strcpy_s(temp[j].end_time,6,"#"); /*加四个#作为结束标志*/}void _input() /*输入*/{printf("Please input start_site:");scanf("%s",my_start_site);printf("Input end_site:");scanf("%s",my_end_site);printf("Input end_time(4 numbers):");scanf("%s",my_end_time);}int _check_input () /*检查输入 1输入合法¡ 0不合法*/{int flag1=0,flag2=0;int i=0,j=0;while (my_end_time[j]!='\0'){if (my_end_time[j]<'0' ||my_end_time[j]>'9') {printf("Input is notNumeric!Error!\n");getchar();return0;} /*输入须为数字*/j++;}if (j>4) {printf("Digit number>4\n");getchar();return0;} /*时间输入:4位__数字*/ i=0;while (i<6){ if (strcmp(my_start_site,site[i])!=0)flag1=0;else{flag1=1;break;}/*输入的地点有一个在站点集合*/i++;}j=0;while (j<6){ if (strcmp(my_end_site,site[j])!=0)flag2=0;else{ flag2=1;break;}/*输入的地点有一个在站点集合*/j++;}if (flag1==1&&flag2==1){printf("Input right.\n");getchar();return1;}else{printf("Input is not In sites.\n");return0 ;}}main(){char go_time_[6]=" "; /*格式化后的出发时间*/char end_time_[6]=" "; /*格式化后的到达时间*/char direct_time[6]=" "; /*直达时间*/char direct_time_[6]=" ";char change_all_time[6]=" "; /*所有转车间*/char change_all_time_[6]=" "; /*格式化后的所有转车时间*/int my_len=0,change_len=0; /**/int i=0,j=0;all_length=_len(all);/*清屏*/_input();if (!_check_input()){ printf("Input Error!The program is Over!"); getchar(); exit(0);} _search_site(my_start_site,my); /*求得所有以my_start_site为起点的车次,结果存放于my数组中*/my_len=_len(my);i=0;while((i<my_len) ){if(strcmp(my[i].end_site,my_end_site)==0) /*直达车次*/if (_In_2_hours(my[i].end_time,my_end_time)){_format_time(my[i].go_time,go_time_); /*格式化出发时间*/_format_time(my[i].end_time,end_time_); /*格式化到达时间*/_duration(my[i].go_time,my[i].end_time,direct_time); /*求经历时间*/_format_time(direct_time,direct_time_) ; /*格式化经历时间*/printf("%s to %s,duration %s ,no changes.\n",go_time_,end_time_,direct_time_);}i++;}/*以下为要转车*/i=0;while(i<my_len){if (strcmp(my[i].end_site,my_end_site)!=0) /*此趟车的终点不对,要转车*/{_format_time(my[i].go_time,go_time_); /*格式化出发时间*/_search_site(my[i].end_site,change); /*不是直达线路,找出以my[i].end_site为起点的所有车次,放于change*/change_len=_len(change);j=0; /*内循-环变量*/while(j<change_len){if (strcmp(change[j].end_site,my_end_site)==0) /*能到达终点的线路*/if (_In_2_hours(change[j].end_time,my_end_time))if(_In_5_60(my[i].end_time,change[j].go_time)){_duration(my[i].go_time,change[j].end_time,change_all_time);_format_time(change[j].end_time,end_time_); /*格式化到达时间*/_format_time(change_all_time,change_all_time_) ; /*格式化转车所有用时*/printf("%s to %s,duration %s , changeat %s.\n",go_time_,end_time_,change_all_time_,my[i].end_site);}j++; }}i++;}getchar();}。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
火车票务管理系统一、课题内容和要求设计目标:设计一个火车票务管理系统,用C语言实现。
对该系统的要求如下:需求描述:1.系统功能(1)火车时刻信息录入。
包括车次、日期、起点、终点、开车时间、到达时间、票价。
数据存入数据文件或中。
(2)火车时刻信息查询。
按照车次查询》按终点查询按起点查询按终点和日期查询(3)统计按终点统计每日的车次数按起点统计每日的车次数2. 系统主界面应有以下功能选项录入火车时刻信息)查询火车时刻信息统计火车车次退出注:建议用VC环境开发用户界面。
结果形式:提交程序设计报告和可演示的系统软件二、需求分析【系统主界面应有以下功能选项1.录入火车时刻信息2.查询火车时刻信息3.统计火车车次4.退出(1)火车时刻信息录入。
包括车次、日期、起点、终点、开车时间、到达时间、票价。
数据存入数据文件或中。
(2)火车时刻信息查询。
.按照车次查询按终点查询按起点查询按终点和日期查询(3)统计按终点统计每日的车次数按起点统计每日的车次数二、概要设计。
void SearchTrainNum();入火车时刻信息.\n");printf("2.查询火车时刻信息.\n");printf("3.统计火车车次.\n");printf("4.退出.\n");Star();printf("\n");【printf("请输入:");scanf("%d",&request);switch(request) \","wb"); rainNum,train[i].date,train[i].fromPlace ,train[i].toPlace,train[i].inTime,train[i].outTime,&myprice);train[i].price=myprice;fwrite(&train[i],sizeof(struct TRAIN),1,fp);i++;printf("continue(Y/N)(N to end)");!getchar();scanf("%c",&ch);}while(ch!='N');fclose(fp);printf("返回主界面吗(Y返回)");getchar();scanf("%c",&ch);if(ch=='Y')*{printf("\n\n");goto repeat;}}break;case 2:{ printf("\n\n");printf(">>>>>火车时刻信息查询<<<<<\n");printf("1.按车次查询.\n");printf("2.按终点查询.\n");printf("3.按起点查询.\n");printf("4.按终点和日期查询.\n");printf("5.退出.\n");]printf("请输入:");scanf("%d",&request);switch(request){case 1: SearchTrainNum(); break;case 2: SearchToPlace(); break;case 3: SearchFromPlace(); break;¥case 4: SearchToPlaceAndDate(); break;case 5: exit(0); break;}printf("返回主界面吗(Y返回)");getchar();scanf("%c",&ch);if(ch=='Y'){《printf("\n\n");goto repeat;}} break;case 3:{printf("\n\n");(printf(">>>>>火车车次统计系统<<<<<\n");printf("1.按终点统计每日的车次数.\n");printf("2.按起点统计每日的车次数.\n");printf("3.退出.\n");printf("请输入:");scanf("%d",&request);—switch(request){case 1: CountToPlace(); break;case 2: CountFromPlace(); break;case 3: exit(0); break;}printf("返回主界面吗(Y返回)");#getchar();scanf("%c",&ch);if(ch=='Y'){printf("\n\n");goto repeat;}} break;-case 4:{Star();printf("欢迎下次使用,拜拜~~\n");Star();}exit(0); break;·default:printf("Incorrect num entered.");printf("Enter a new num.\n");break;})return 0;}void SearchTrainNum(){;FILE *fp1;char num[20];char ch;int i=0;fp1=fopen(".\\","r+");if(!fp1){.printf("File can not be opened\n");exit(1);}do{rewind(fp1); n>>>");scanf("%s",num);:while(!feof(fp1)){fread(&train[i],sizeof(struct TRAIN),1,fp1);if(strcmp(num,train[i].trainNum)==0){printf("%-4s%-12s%-8s%-10s%-10s%-8s%.2lf",train[i].trainNum,train[i].date,train[i].fromPla ce,train[i].toPlace,train[i].inTime,train[i].outTime,train[i].price);printf("\n");*}i++;}printf("continue(Y/N)(N to end)");getchar();scanf("%c",&ch);}while(ch!='N');printf("\n");)fclose(fp1);}void SearchToPlace(){FILE *fp2;char num[20];char ch;…int i=0;fp2=fopen(".\\","r+");if(!fp2){printf("File can not be opened\n");exit(1);}!dorewind(fp2);printf("输入你要查询的终点.\n>>>");scanf("%s",num);while(!feof(fp2)){fread(&train[i],sizeof(struct TRAIN),1,fp2);!if(strcmp(num,train[i].toPlace)==0){printf("%-4s%-12s%-8s%-10s%-10s%-8s%.2lf",train[i].trainNum,train[i].date,train[i].fromPla ce,train[i].toPlace,train[i].inTime,train[i].outTime,train[i].price);printf("\n");}i++;}"printf("continue(Y/N)(N to end)");getchar();scanf("%c",&ch);}while(ch!='N');printf("\n");fclose(fp2);}(void SearchFromPlace(){FILE *fp3;char num[20];char ch;int i=0;fp3=fopen(".\\","r+");/if(!fp3){printf("File can not be opened\n");exit(1);}do{rewind(fp3);~printf("输入你要查询的起点.\n>>>");scanf("%s",num);while(!feof(fp3)){fread(&train[i],sizeof(struct TRAIN),1,fp3);if(strcmp(num,train[i].fromPlace)==0){printf("%-4s%-12s%-8s%-10s%-10s%-8s%.2lf",train[i].trainNum,train[i].date,train[i].fromPlace,tr ain[i].toPlace,·train[i].inTime,train[i].outTime,train[i].price);printf("\n");}i++;}printf("continue(Y/N)(N to end)");getchar();scanf("%c",&ch);'}while(ch!='N');printf("\n");fclose(fp3);}void SearchToPlaceAndDate(){FILE *fp4;`char num[20];char num1[20];char ch;int i=0;fp4=fopen(".\\","r+");if(!fp4){(printf("File can not be opened\n");exit(1);}do{rewind(fp4);printf("输入你要查询的终点与日期.\n>>>");scanf("%s",num);[scanf("%s",num1);while(!feof(fp4)){fread(&train[i],sizeof(struct TRAIN),1,fp4);if((strcmp(num,train[i].toPlace)==0)&&(strcmp(num1,train[i].date)==0)){printf("%-4s%-12s%-8s%-10s%-10s%-8s%.2lf",train[i].trainNum,train[i].date,train[i].fromPla ce,train[i].toPlace,train[i].inTime,train[i].outTime,train[i].price);#printf("\n");}i++;}printf("continue(Y/N)(N to end)");getchar();scanf("%c",&ch);}while(ch!='N');[printf("\n");fclose(fp4);}void CountToPlace(){FILE *fp5;char num[20];char ch;~int i=0;int j=0;fp5=fopen(".\\","r+");if(!fp5){printf("File can not be opened\n");,exit(1);}do{rewind(fp5);printf("输入你(要统计的车次数的)终点.\n>>>");scanf("%s",num);j=0;、while(!feof(fp5)){fread(&train[i],sizeof(struct TRAIN),1,fp5);if(strcmp(num,train[i].toPlace)==0){j++;}i++;)}printf("当日终点%s的车次数:%d",num,j);printf("\n");printf("continue(Y/N)(N to end)");getchar();scanf("%c",&ch);}while(ch!='N');fclose(fp5);》}void CountFromPlace(){FILE *fp6;char num[20];char ch;int i=0;int j=0;fp6=fopen(".\\","r+");if(!fp6){printf("File can not be opened\n");@exit(1);}do{rewind(fp6);printf("输入你(要统计的车次数的)起点.\n>>>");scanf("%s",num);j=0;)while(!feof(fp6)){fread(&train[i],sizeof(struct TRAIN),1,fp6);if(strcmp(num,train[i].fromPlace)==0){j++;}i++;}}printf("当日起点%s的车次数:%d",num,j);printf("\n");printf("continue(Y/N)(N to end)");getchar();scanf("%c",&ch);}while(ch!='N');fclose(fp6);:}void Star(){int i;for(i=0;i<20;i++){printf("*");(}printf("\n");}四、测试数据及其结果分析(如图)1.火车时刻信息录入>2.火车时刻信息查询。