C语言 车票管理系统源程序

合集下载

用C写得车票管理系统源码

用C写得车票管理系统源码

车票管理系统详细说明:1.程序功能一车站每天有n个发车班次,每个班次都有一班次号(1、2、3、…、n),固定的发车时间,固定的路线(起始站、终点站),大致的行车时间,固定的额定载客量。

如:班次发车时间起点站终点站行车时间额定载量已定票人数1 8:00 重庆昆明 10 45 302 6:30 重庆成都 4 40 403 7:00 重庆成都4 40 204 10:00 重庆成都 4 40 2……现要求设计一个管理系统,能完成如下功能:(1)录入班次信息(信息用文件保存),可不定时地增加班次数据;(2)浏览班次信息,可显示出所有班次当前状况(如果当前系统时间超过了某班次的发车时间,则显示"此班已发出"的提示信息);(3)查询路线:可按班次号查询,也可按终点站查询;(4)售票和退票功能。

①:当查询出已定票人数小于额定载量且当前系统时间小于发车时间时才能售票,自动更新已售票人数;②:退票时,输入退票的班次,当本班车未发出时才能退票,自动更新已售票人数。

2.设计思想此系统可参照学生成绩管理系统的部份设计方法而设计。

1车票管理系统车票管理系统一车站每天有n个发车班次,每个班次都有一班次号(1、2、3…n),固定的发车时间,固定的路线(起始站、终点站),大致的行车时间,固定的额定载客量。

如班次发车时间起点站终点站行车时间额定载量已定票人数1 8:00 郫县广汉2 45 302 6:30 郫县成都0.5 40 403 7:00 郫县成都0.5 40 204 10:00 郫县成都0.5 40 2…(一)功能要求:用c/c++设计一系统,能提供下列服务:(1)录入班次信息(信息用文件保存),可不定时地增加班次数据(2)浏览班次信息,可显示出所有班次当前状态(如果当前系统时间超过了某班次的发车时间,则显示“此班已发出”的提示信息)。

(3)查询路线:可按班次号查询,可按终点站查询(4)售票和退票功能A:当查询出已定票人数小于额定载量且当前系统时间小于发车时间时才能售票,自动更新已售票人数B:退票时,输入退票的班次,当本班车未发出时才能退票,自动更新已售票人数(二)其它要求:(1) 只能使用C/C++语言,源程序要有适当的注释,使程序容易阅读(2) 至少采用文本菜单界面(如果能采用图形菜单界面更好)(3) 学生可自动增加新功能模块******************************************************************* ************************************************/ #include<stdio.h>#include<stdlib.h>#include<dos.h>#include<time.h>#include<conio.h>#include<string.h>const int MAX=20;const int N=50;const int MAXFILENAME=100; enum {FALSE,TRUE};struct time{int hour;int minutes;};struct ticket{int SerialNumber;struct time SetOut;char DeparturePoint[MAX];char TerminalPoint[MAX];float LastTime;int FixNumber;int FixedNumber;}car[N];int RecordNumber;int FLAG=FALSE;/**********************************************/ int ShowMessage(void); //载入原始数据void mainmenu(void); //主菜单void InsertMessage(void); //录入班次信息void SearchMenu(void); //查询路线子菜单void SearchByNumber(void); //按班次号查询void SearchByAddress(void); //按终点站查询void TicketManagement(void); //车票售出与退回void TicketOrder(void); //售票void TicketDelete(void); //退票void exit(void); //退出该系统/********************************************/ int main(void){RecordNumber=ShowMessage();if(1)do{mainmenu();}while(FLAG==FALSE);return 0;}void mainmenu(void){system("color 1f");system("mode con: cols=140 lines=130");char functionNumber;printf(" 车票管理系统\n\n");printf(" 制作:hmm182007\n");printf(" 日期:2007/11/25/19:57\n");printf("=========================================================== =============== ==\n");printf(" 1.录入班次信息\t\n");printf(" 2.浏览班次信息\t\n");printf(" 3.查询行车路线\t\n");printf(" 4.售票与退票系统\t\n");printf(" 5.退出该系统\t\n");printf("=========================================================== =============== ==\n");printf("请选择你所需要的功能:");scanf("%c",&functionNumber);switch(functionNumber){case '1':{InsertMessage();printf("\n按任意键回主菜单......\n"); getchar();getchar();}break;case '2':{ShowMessage();printf("\n按任意键回主菜单......\n"); getchar();getchar();}break;case '3':{SearchMenu();printf("\n按任意键回主菜单......\n"); getchar();getchar();}break;case '4':{TicketManagement();getchar();getchar();}break;case '5':FLAG=TRUE;exit();break;default:{printf("输入错误,请确保你的输入为1--5.\n"); printf("按任意键回主菜单......\n");getchar();getchar();}}//switch endsFLAG=FALSE;}void InsertMessage(void){FILE *fp;char filename[MAXFILENAME];int i;printf("请输入文件名或者文件路径名:");scanf("%s",filename);if((fp=fopen(filename,"r"))==NULL){printf("文件%s不可读,请确认文件%s存在或者文件路径正确.\n\n",filename,filename);mainmenu();}for(i=RecordNumber;!feof(fp)&&!ferror(fp);i++){fscanf(fp,"%d%d%d",&car[i].SerialNumber,&car[i].SetOut.hour,&car[i] .SetOut.minutes);fscanf(fp,"%s%s%f%d%d",&car[i].DeparturePoint,&car[i].TerminalPoint ,&car[i].LastTime,&car[i].FixNumb er,&car[i].FixedNumber);}int count=i;printf("班次\t发车时间\t起点\t终点\t行车时间(小时)\t额定载量\t已定票人数\n");for(i=0;i<count;i++){printf("%d\t%d:%d\t\t",car[i].SerialNumber,car[i].SetOut.hour,car[i ].SetOut.minutes);printf("%s\t%s\t\t%.1f\t%d\t\t%d\n",car[i].DeparturePoint,car[i].TerminalPoint,car[i].LastTime,c ar[i].FixNu mber,car[i].FixedNumber);}fclose(fp);}int ShowMessage(void){int i;FILE *fp;if((fp=fopen("add.txt","r"))==NULL){printf("读取数据失败,请检查文件add.txt是否存在.\n"); exit(-1);}for(i=0;!feof(fp)&&!ferror(fp);i++){。

《C语言程序设计》公交车管理系统源码

《C语言程序设计》公交车管理系统源码

《C语言程序设计》公交车管理系统源码#include<stdio.h>main(){int ticket=0,stops=0,symbol=0,cardnumber=0,cardmoney=0,num=0; int i=0,balance=0,maxindex=0;int cnum[20]={0},cmoney[20]={0},cbalance[20]={0},flag[20]={0}; char choose='\0';while(1){ clrscr();printf("\n\t\t||=======================================||"); printf("\n\t\t||---------------------------------------||"); printf("\n\t\t||-------------Welcome-------------------||"); printf("\n\t\t||----------use bus traffic--------------||"); printf("\n\t\t||--------------Card---------------------||"); printf("\n\t\t||---------------------------------------||"); printf("\n\t\t||=======================================||"); printf("\n\n\n\n");printf("\n\t\t||---------------------------------------||"); printf("\n\t\t||----------Please input(0-8)------------||"); printf("\n\t\t||---------------------------------------||"); printf("\n\t\t| 1.Add new Card |");printf("\n\t\t| 2.Logout Card |");printf("\n\t\t| 3.Modify Card |");printf("\n\t\t| 4.Read card |");printf("\n\t\t| 5.Save money |");printf("\n\t\t| 6.Stat.max money |");printf("\n\t\t| 7.Display |");printf("\n\t\t| 8.Delete Data File |");printf("\n\t\t| 0.Exit |");printf("\n\t\t|-----------------------------------------|"); printf("\n\t\t");scanf("%c",&choose);switch(choose){ case'1':for(i=0;i<num;i++)if(flag[i]==1)break;cardnumber=i;printf("\n\tHow much money you want to save in your card"); scanf("%d",&cardmoney);cnum[cardnumber]=cardnumber+1;cmoney[cardnumber]=cardmoney;cbalance[cardnumber]=cardmoney;flag[cardnumber]=0;if(cardnumber==num) num++;printf("\n\t|--%5d--|--%5d--|--%5d--|",cnum[i],cmoney[i],cbalance[i]);getch();break;case'2':printf("\n\tPlease input your card number:");scanf("%d",&cardnumber);for(i=0;i<num;i++)if(cnum[i]==cardnumber && flag[i]!=1){printf("\n\tReturu you balance money:%d.",cbalance[i]);do{printf("\n\n\tAre you sure logout the card(y/n)?");scanf("%c",&choose);}while(choose!='y' && choose!='y' && choose!='N' && choose!='n'); if(choose=='y' || choose=='y'){cmoney[i]=0;cbalance[i]=0;flag[i]=1;}break;}if(i==num){printf("\n\ntNo find the card.");getch();}break;case'3':printf("\n\tPlease input card number that you want to modify:"); scanf("%d",&cardnumber);for(i=0;i<num;i++)if(cnum[i]==cardnumber && flag[i]!=1){do{clrscr();printf("\n\t\t-------------------------------------------"); printf("\n\t\t please input modify Item ");printf("\n\t\t-------------------------------------------"); printf("\n\t\t------------ 1.save money------------------"); printf("\n\t\t------------ 2.balance money---------------"); printf("\n\t\t------------ 3.Return----------------------"); printf("\n\t\t-------------------------------------------"); scanf("%c",&choose);switch(choose){case'1':printf("\n\tPlease input new save money:"); scanf("%d%",&cardmoney);cbalance[i]+=cardmoney-cmoney[i];cmoney[i]=cardmoney;break;case'2':printf("\n\tPlease input new balance money:"); scanf("%d%",&balance);cbalance[i]=balance;break;case'3':break;default:printf("\n\tInput error, Please input again!"); getch();continue;}}while(choose!='3');break;}if(i==num){printf("\n\tNo find the card.");getch();}break;case'4':printf("\n\tPlease input your card number:");scanf("%d",&cardnumber);for(i=0;i<num;i++)if(cnum[i]==cardnumber && flag[i]!=1){ while(symbol==0){ printf("\n\tHow many you want to take bus stops:"); scanf("%d",&stops);if(stops<1||stops>30){printf("\n\tInput error.Please input again.");getch();}else if(stops<=10){ticket=1;symbol=1;}else if(stops<=15){ticket=2;symbol=1;}else if(stops<=20){ticket=3;symbol=1;}else if(stops<=25){ticket=4;symbol=1;}else if(stops<=30){ticket=5;symbol=1;}}if(cbalance[i]>=ticket){printf("\n\tBefore:");printf("cnum:%5d cmoner:%5dcbalance:%5d",cnum[i],cmoney[i],cbalance[i]); cbalance[i]-=ticket;printf("\n\tAfter:");printf("cnum:%5d cmoner:%5dcbalance:%5d",cnum[i],cmoney[i],cbalance[i]);getch();}else{printf("\n\tYour card balance money is not enough.Please use cash.");getch();}break;}if(i==num){ printf("\n\tNo find the card");getch();}break;case'5':printf("\n\tPlease input your card number:");scanf("%d",&cardnumber);for(i=0;i<num;i++)if(cnum[i]==cardnumber && flag[i]!=1){ do{ printf("\n\tPlease input you want to save money in thecard:");scanf("%d",&cardmoney);if(cardmoney<=0)printf("\n\tInput error.Please input again.");}while(cardmoney<=0);cmoney[i]=cardmoney;cbalance[i]+=cardmoney;printf("\n\tYour card have already saved money:%5d.",cardmoney); printf("\n\tcnum:% 5d cmoney:%5d cbalance:%5d",cnum[i],cmoney[i],cbalance[i]);getch();break;}if(i==num){ printf("\n\tNo find the card.");getch();}break;case'6':maxindex=0;for(i=1;i<num;i++)if(cmoney[maxindex]<cmoney[i])maxindex=i;printf("\n\tMax save money is:%d.",cmoney[maxindex]);printf("\n\tcnum:%5d cmoney:%5d cbalance:%5d",cnum[maxindex],cmoney[maxindex],cbalance[maxindex]); getch();break;case'7':clrscr();printf("\n\t|---------------------------------------|"); printf("\n\t|--Cardnum--|--Savvemoney--|--Balance-- |"); for(i=0;i<num;i++){ if(flag[i]==1) continue;else{ printf("\n\t|-----------------------------|");printf("\n\t|--%5d--|--%5d--|--%5d--------|");cnum[i],cmoney[i],cbalance[i];if((i+1)%10==0){ getch();printf("Press any key to go on...");}}}printf("\n\t|---------------------------------|");getch();break;case'8':printf("\n\tYou select 8");getch();break;case'0':do{ printf("\n\tAre you sure exit(y/n):");scanf("%c",&choose);}while(choose!='Y' && choose!='y' && choose!='N'&&choose!='n');if(choose=='Y'||choose=='y')exit(0);break;default:printf("\n\tYou input error.Please input again."); getch();}}}。

C程序设计 火车票管理系统

C程序设计 火车票管理系统

课程设计任务书课设题目:火车售票系统系别班级学生姓名学号指导教师职称课程设计进行地点:实训F座任务下达时间: 年月日起止日期:年月日起至年月日止教研室主任: 年12月24日批准一、课程设计的原始资料及依据在现代社会,火车以其安全,舒适以及其服务的周到使愈来愈多的人选择了火车为长距离出行的交通工具,这就使火车公司以及车站的工作量愈来愈大,若仍然使用文件或者人工来管理公司、车站、火车、列班、路线、客户以及售票的信息,那无疑在效率上会大打折扣。

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

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

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

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

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

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

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

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

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

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

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

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

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

c语言简单的地铁售票系统

c语言简单的地铁售票系统

c语言简单的地铁售票系统一个简单的地铁售票系统可以使用C语言来实现。

这个系统可以包括以下功能:1. 用户登录,用户可以输入用户名和密码进行登录,系统验证用户信息后允许用户进入系统。

2. 购票,用户可以选择起始站和目的站,系统根据用户选择计算票价,并提供购票选项。

3. 支付,用户可以选择支付方式,系统接受用户支付并发放车票。

4. 票务管理,系统可以管理车票库存,更新车票信息,以及生成销售报表等功能。

以下是一个简单的C语言地铁售票系统的代码示例:c.#include <stdio.h>。

#include <string.h>。

struct User {。

char username[20];char password[20];};struct Ticket {。

char start_station[20]; char end_station[20]; float price;};void login(struct User user) {。

printf("请输入用户名,");scanf("%s", user->username);printf("请输入密码,");scanf("%s", user->password);// 验证用户名和密码。

// ...}。

void buyTicket(struct Ticket ticket) {。

printf("请输入起始站,");scanf("%s", ticket->start_station);printf("请输入目的站,");scanf("%s", ticket->end_station);// 根据起始站和目的站计算票价。

// ...printf("票价为,%f\n", ticket->price); // 提供购票选项。

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语言火车票管理系统 (1)

C语言火车票管理系统 (1)

#include<stdio.h>#include<string.h>#include<stdlib.h>#include<time.h>#include<conio.h>#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(i nt 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();b reak;case 2: Display();b reak;case 3: search();b reak;case 4: add();break;case 5: buyticket();break;case 6: deleteticket();break;case 7: change();b reak;case 8: deletemessage();b reak;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(i nt 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语言编写车票管理系统(2024)

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

引言概述:车票管理系统是一种用于管理车票信息,包括购票、退票、查询票务等功能的软件系统。

本文将以C语言为编程语言,详细阐述如何编写一个车票管理系统。

该系统可以方便管理者对车票信息进行操作,同时也提供给用户便捷的购票和查询功能。

正文内容:一、数据库设计1.1数据库表的建立1.2表中字段的设置1.3数据库的连接与操作1.4数据库的备份与恢复1.5数据库的维护与优化二、用户管理2.1用户注册2.2用户登录2.3用户信息修改2.4用户权限管理2.5用户数据备份与恢复三、车票管理3.1车票添加3.2车票查询3.3车票修改3.4车票删除3.5车票排序和筛选四、订单管理4.1订单4.2订单查询4.3订单修改4.4订单删除4.5订单统计和报表五、支付管理5.1支付方式的选择5.2支付状态的更新5.3支付记录的查询5.4退款管理5.5支付安全性保证总结:通过本文详细的阐述,我们了解到了如何使用C语言编写一个车票管理系统。

在系统的开发过程中,数据库设计、用户管理、车票管理、订单管理和支付管理等方面都需要详细考虑。

通过对每个模块的分析和设计,能够使系统更加高效、安全和易用。

在实际开发中,我们还需要根据具体需求进行对系统的优化和完善,保证系统能够满足用户的需求,并且能够稳定运行。

希望本文对您有所帮助,能够指导您在C语言中编写车票管理系统的开发过程。

引言概述:C语言编写车票管理系统是一个涉及到计算机编程技术的项目,旨在帮助车票销售员和管理员更好地管理和控制车票的销售与出票过程。

本文将详细介绍该系统的设计和实现过程,包括系统的功能需求、系统的结构设计、关键代码的实现以及系统的优化与改进。

正文内容:1.功能需求车票管理系统的功能需求包括但不限于:车票销售、车票查询、座位管理、车票退换等。

具体的系统功能要求涉及到对车票信息的录入、查询、修改和删除,车票的座位分配和座位的查询,以及对车票销售记录的统计和报表等功能。

1.1车票销售功能实现车票销售功能是车票管理系统的核心功能之一。

车票管理系统c语言

车票管理系统c语言

前言随着计算机技术的发展,可视编程技术占有了越来越重要的作用。

Visual C++6.0 是一种功能强大行之有效的可视化编程工具。

因此此软件是在Visual C++6。

0环境下编写的.对于我们,随着学习的深入,已经大体掌握了Visual C++6。

0环境下的程序开发。

为了将我们的编程能力提升到一个更高的水平,深化面向对象的编程思维和解决问题的能力,值此课程设计周期间,进行基于Visual C++6.0环境的软件开发,先以字符统计软件作为开始,对Visual C++6。

0环境和面向对象程序设计进行回忆和熟悉,使得在此基础上的下一个员工培训系统软件的开发进行的更加顺利。

本文档详细叙述了基于Visual C++6.0环境下的车票管理系统的设计过程以及程序源代码。

本文档从概要设计,详细设计,参考源程序代码以及显示程序运行的截屏等方面详尽的介绍了软件开发过程.此次车票管理系统的开发目的是使我们用面向对象的方式来思考和解决问题的能力,并且可以掌握字符数组的使用、字符指针的使用、数据库的设计和文件使用以及C 语言语法。

本文档的安排如下:第一章主要介绍了对面向对象C语言以及Visual C++6.0编程环境。

第二章主要的介绍说明了车票管理系统的编程思想和详细设计。

第三章主要对车票管理系统进行调试,运行程序并截图,显示运行界面和结果。

第四章主要介绍了软件开发过程中遇到的一些问题,对该软件进行的一个总结.程序在设计的过程中遇到的问题已及时更正,但由于编者的能力和水平有限,车票管理系统和文档中不免会出现一些不期待的错误,望文档读者能够理解和体谅,并欢迎提醒和纠正,在此表示感谢以及敬意。

1 课程设计概述1.车票管理系统功能概述(1)录入班次信息(信息用文件保存),可不定时地增加班次数据(2)浏览班次信息,可显示出所有班次当前状总(如果当前系统时间超过了某班次的发车时间,则显示“此班已发出”的提示信息).(3)查询路线(起点、终点):可按班次号查询 ,可按终点站查询(4)增加及修改班次和删除班次信息(5)售票和退票功能当查询出已定票人数小于额定载量且当前系统时间小于发车时间时才能售票,自动更新已售票人数退票时,输入退票的班次,当本班车未发出时才能退票,自动更新已售票人数班级:信息093 姓名:李德河学号:0908103071.2Visual C++6。

车票管理系统C源代码

车票管理系统C源代码

#include<stdio.h> ///宏定义函数#include<string.h> //串操作及内存操作函数#include<stdlib.h> /////调用系统函数#include<time.h> ///时间库函数#include<conio.h> ///输入输出函数#define N 1000 //宏定义多条记录typedef struct TICKET ////定义新结构体TICKET{char num[10]; //车次编号char hour[3]; //时间,,小时char min[3]; //分钟char from[10]; //起始站char to[10]; //终点站float hours; //车程实际时间int max; //最大车载容量int now; //已售票数}CLASS;int class_num=0; ///初始班次总数为0CLASS records[N]; // 多条记录int system_time(); //系统时间void NewMessage(); //新纪录*录入函数******void ShowTable1(); //线框调用1,,,不用没次输void ShowTable2(int i); //线框调用2,,,不用没次输void Display(); //显示所有函数void add(); //增加记录void save(); // 保存函数void load(); // 按班次查询函数void search(); //查询函数void change(); //修改函数**void quit(); ////////// //退出函数******void Ticketorder(); // //*售票函数***void Ticketdelete(); //删除函数*int menu_select(); //菜单函数*int whether(int); ////判断时间是否超出函数***void find(char s1[],char s2[]); //查询函数★//s1为班次//s2为终点站void deletemessage(); //删除函数int findnum(char s1[]); //班次查询函数void get(int,int); //修改及增加班次*char *menu[]={"*****************欢迎使用车票查询系统*****************", "\n*******************MENU功能菜单***********************","\n◤★ 1. 录入班次◥","\n◆★ 2. 显示所有班次◆","\n◆★ 3. 查询班次◆","\n◆★ 4. 增加班次◆","\n◆★ 5. 售票◆","\n◆★ 6. 退票◆","\n◆★ 7. 修改班次◆","\n◆★ 8. 删除班次◆","\n◣★ 9. 退出◢"}; /**************************主函数***************************/void main(){system("cls"); //刷屏while(1) //菜单函数循环{switch(menu_select()) //菜单函数*{case 1: NewMessage();break; ////新纪录*录入函数******case 2: Display();break; // //显示case 3: search();break; //查找函数**case 4: add();break; // //增加记录case 5: Ticketorder();break; ////*售票函数***case 6: Ticketdelete();break; //删除函数*case 7: change();break; //修改函数**case 8: deletemessage();break; //////选择调用删除函数case 9: quit();break; //////退出函数******}}}/***********************菜单函数**************************/int menu_select() /////////菜单函数*{char s[5]; ///定义要输入的数字功能int c,i;system("cls"); //刷屏system("color 09");//改变颜色for(i=0;i<11;i++){printf("%s",menu[i]); //输出菜单各项)}i=0;while(c<0||c>9) //判断是否是1到9的命令{printf("\n"); ///输出换行printf("******************************************************");printf("\n请选择(1-9):▁▂▃▄▆▇");scanf("%s",s);c=atoi(s); //atoi将字符串转换成一个整数值} ///输出菜单面return c; ////返回请求}/*******************************录入函数************************************/void NewMessage() //*录入函数******{int i=0,j=5,h; ////char s[5];FILE *fp; ////定义文件型指针变量system("cls"); //刷屏if((fp=fopen("d:车票管理系统0.dat","rb"))!=NULL) //fopen打开文件{printf("车票信息已经存在请选择增加功能!\n");printf("任意输入则返回菜单\n");scanf("%s",s);i=1; //通过是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(); //线框调用1,,,不用没次输for(i=0,j=0;i<class_num;i++,j+=2) /////按班次顺序输出{printf("\n|----------|----------|----------|----------|--------|--------|--------|\n");if(whether(i)) //判断时间是否超出函数***printf("|%10s|%5s:%-4s|%10s|%10s|%8.1f|%8d|%8d|",records[i].num,records[ i].hour,records[i].min, 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); //线框调用2printf("\n按任意键继续....\n");getch(); /////从控制台读取一个字符,但不显示在屏幕上}/**********************************打印表头***********************************************/void ShowTable1() //线框调用1,,,不用没次输{int i=2;system("cls"); //刷屏printf("**************************MESSAGE车程信息**********************************\n");printf("\n|----------|----------|----------|----------|--------|--------|--------|\n");printf("\n| 班次 | 发车时间 | 起点站 | 终点站 |行车时间|额定载量| 已售票 |\n");}/***************************************打印表尾************************************************/void ShowTable2(int i) //线框调用2。

火车票售票系统(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 <iostream>#include <iomanip>#include <stdlib.h>#include <string>#include <fstream>#include <ctime>#include <conio.h>#include <windows.h>#include <memory.h>using namespace std;int manage=0,end=1;static int num=-1;long t = time(NULL);void mainmenu();class user{private:char train[10];int hour;int minute;int zhanshu;char start_station[20];char end_station[20];int ticket_price;char zhandian[200];public:void input();//录入函数void browse();//浏览车次函数void search_train();//按车次查询void search_station();//按站点查询void display(int );//显示个车次信息friend void save ();//保存数据friend void del();//删除数据friend void Int();//初始化函数,读取“数据.txt”中的数据} ;user ticket[10];/*------------------------------------------------存储函数将车次信息存储在数据.txt中------------------------------------------------*/void save(){ofstream file("数据.txt",ios::out);for(int j=0;j<=num;j++){file<<ticket[j].train<<" ";file<<ticket[j].zhanshu<<" ";file<<ticket[j].start_station <<" ";file<<ticket[j].end_station <<" ";file<<ticket[j].ticket_price<<" ";file<<ticket[j].zhandian <<endl;}file.close();cout<<"信息已存入文件"<<endl;}/*------------------------------------------------删除模块将车次信息从数据.txt中删除------------------------------------------------*/void del(){char na[10];int i,j;cout<<"选择删除模式(1.按车次2.按编号)"<<endl;int k;cin>>k;switch(k){case 1:cout<<"\n请输入需要删除的车次名:";cin>>na;for( i=0;i<=num;i++){if(strcmp(na,ticket[i].train)==0){for( j=i+1;j<=num;j++){ticket[j-1]=ticket[j];}cout<<endl<<"\t\t\t\t删除成功!\n";break;}}if(i>num)cout<<"对不起,没有有关此站点的车次信息!";else{num--;save();}break;case 2:cout<<"\n您要删除第几个(从上往下):"<<endl;int number;cin>>number;for(;number>num+1;){cout<<"指令错误!请重新输入!"<<endl;cin>>number;cout<<endl<<endl;}for(j=number;j<=num;j++){ticket[j-1]=ticket[j];}cout<<endl<<"\t\t\t\t删除成功!\n";num--;save();break;}}/*------------------------------------------------输入车次信息函数------------------------------------------------*/void user::input(){num++;cout<<"车次:";cin>>ticket[num].train;cout<<"站数:";//do{cin>>ticket[num].hour;}while(ticket[num].hour>24); cin>>ticket[num].zhanshu;cout<<"起始:";cin>>ticket[num].start_station;cout<<"终点:";cin>>ticket[num].end_station;cout<<"票价:";cin>>ticket[num].ticket_price;cout<<"站点:";cin>>ticket[num].zhandian;save ();}/*------------------------------------------------浏览以存车次的信息------------------------------------------------*/void user::browse(){int j;t = time(NULL);tm * pt = localtime(&t);cout<<"当前时间:"<<setfill('0')<<setw(2)<<pt->tm_hour<<':';cout<<setw(2)<<pt->tm_min<<':';cout<<setw(2)<<pt->tm_sec<<endl<<endl;cout<<"现存车次信息如下:"<<endl<<endl;cout<<"编号\t"<<"车次\t"<<"站数\t"<<"起始\t"<<"终点\t"<<"票价\t"<<"站点\t"<<endl;for( j=0;j<=num;j++)ticket[j].display(j+1);}/*------------------------------------------------按站点查询------------------------------------------------*/void user::search_station(){char station[20];int i=0;cout<<"输入你要查询的站点:";cin>>station;cout<<endl<<endl;for(int j=0;j<=num;j++)if((strcmp(station,ticket[j].start_station)==0)||(strcmp(station,ticket[j].end_station)==0)){cout<<"查询结果:"<<endl;cout<<"编号\t"<<"车次\t"<<"站数\t"<<"起始\t"<<"终点\t"<<"票价\t"<<"站点\t"<<endl;ticket[j].display(j+1);//break;i++;}if(j>num&&i==0)cout<<"对不起,没有有关此站点的车次信息!";}/*------------------------------------------------按车次查询------------------------------------------------*/void user::search_train(){char train[10];int i=0;cout<<"输入你要查询的车次:";cin>>train;cout<<endl<<endl;for(int j=0;j<=num;j++)if(strcmp(train,ticket[j].train)==0){cout<<"查询结果:"<<endl;cout<<"编号\t"<<"车次\t"<<"站数\t"<<"起始\t"<<"终点\t"<<"票价\t"<<"站点\t"<<endl;ticket[j].display(j+1);//break;i++;}if(j>num&&i==0)cout<<"对不起,没有这趟车次信息!";}/*------------------------------------------------显示模块------------------------------------------------*/void user::display(int n){int numb;numb=n;cout<<endl;cout<<numb<<"\t"<<train<<"\t"<<" "<<zhanshu<<"\t"<<start_station<<"\t"<<end_station<<"\t"<<ticket_price<<"\t"<<" "<<zhandian<<"\t";/*t = ::time(NULL);tm * pt = localtime(&t);if(hour<pt->tm_hour)cout<<" 列车已发出";else if(hour==pt->tm_hour&&minute<=pt->tm_min)cout<<" 列车已发出";else cout<<"\t正常";cout<<endl;*/}/*------------------------------------------------退出函数------------------------------------------------*/char exit(){char w;//system("cls");cout<<"\t\t O(∩_∩)O O(∩_∩)O"<<endl;cout<<"\t\t 退出菜单"<<endl;cout<<"\t\t "<<endl;cout<<"\t\t 1、确定"<<endl;cout<<"\t\t 2、取消"<<endl;cout<<"\t\t "<<endl;cout<<"\t\t "<<endl;cout<<"\t\t "<<endl;cout<<"请输入选择:";cin>>w;return w;}/*------------------------------------------------身份验证选择管理员/乘客身份------------------------------------------------*/void menu(){int functionNumber;//,code;char password[5]="1234";char code[5];cout<<"\t\t O(∩_∩)O O(∩_∩)O" <<endl;cout<<"\t\t 公交管理"<<endl;cout<<"\t\t "<<endl;cout<<"\t\t 1、管理员用户"<<endl;cout<<"\t\t 2、信息查询"<<endl;cout<<"\t\t "<<endl;cout<<"\t\t "<<endl;cout<<"\t\t ******************************* "<<endl;cout<<"\t\t "<<endl;cout<<"请输入选择:";cin>>functionNumber;for(;functionNumber!=1&&functionNumber!=2&&functionNumber!=3;){cout<<"指令错误!请重新输入:"<<endl;cin>>functionNumber;}if (functionNumber==1){cout<<"请输入密码:";int i=0;for(;i<4;i++){code[i]=getch();cout<<"*";}code[4]='\0';for(;strcmp(password,code)!=0;){cout<<"指令错误!请重新输入:"<<endl;for(i=0;i<4;i++){code[i]=getch();cout<<"*";}}manage=1;cout<<endl;}}/*------------------------------------------------查询子菜单查询某车次/有某站点的车次------------------------------------------------*/void search_menu(){int functionNumber;cout<<" 查询子菜单\n"<<endl;cout<<endl;cout<<" 1.按班次查询\n"<<endl;cout<<" 2.按站点查询\n"<<endl;cout<<" 3.返回主菜单\n"<<endl;cout<<endl;cout<<"请选择你所需要的功能:";cin>>functionNumber;cout<<endl<<endl;for(;functionNumber!=1&&functionNumber!=2&&functionNumber!=3;){cout<<"指令错误!请重新输入!"<<endl;cin>>functionNumber;cout<<endl<<endl;}switch(functionNumber){case 1:ticket[0].search_train();break;case 2:ticket[0].search_station();break;case 3:system("cls");mainmenu();}}/*------------------------------------------------主菜单------------------------------------------------*/void mainmenu(){ char s;int functionNumber;cout<<" 欢迎使用车票管理系统\n"<<endl;cout<<endl;cout<<" 1.录入班次信息\n"<<endl;cout<<" 2.浏览班次信息\n"<<endl;cout<<" 3.查询行车路线\n"<<endl;cout<<" 4.删除车次内容\n"<<endl;cout<<" 5.返回上级菜单\n"<<endl;cout<<" 6.退出系统\n"<<endl;cout<<endl;cout<<"请选择你所需要的功能:";cin>>functionNumber;cout<<endl<<endl;switch(functionNumber){case 1:{ char c;if (manage){do{ticket[num].input();cout<<"已录入"<<num+1<<"条航班信息(包括已从文件中读取的),想继续录入吗(y/n)"<<endl; //?cin>>c;for(;c!='y'&&c!='n';){cout<<"指令错误!请重新输入!"<<endl;cin>>c;}} while (c=='y');}elsecout<<"对不起,您不是管理员不能进行这项操作!";cout<<endl<<"按任意键回主菜单......"<<endl;getchar();getchar();system("cls");}break;case 2:{ticket[num].browse();cout<<endl<<endl<<endl<<"按任意键回主菜单......"<<endl;getchar();getchar();system("cls");}break;case 3:{search_menu();cout<<endl<<"按任意键回主菜单......"<<endl;getchar();getchar();system("cls");}break;case 4:{if(manage){ticket[0].browse();del();cout<<endl<<"按任意键回主菜单......"<<endl;getchar();getchar();system("cls");}else{cout<<"对不起,您不是管理员不能进行这项操作!";cout<<endl<<"按任意键回主菜单......"<<endl;getchar();getchar();system("cls");}}break;case 6:{s=exit();if(s=='1')t = time(NULL);tm* pt = localtime(&t);system("cls");cout<<endl<<endl<<endl<<endl<<endl<<endl<<endl;cout<<" 谢谢使用车票管理系统\n";cout<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl <<endl<<" \t\t\t\t\t\t\t制作:李明"<<endl<<endl;end=0;}break;case 5:{system("cls");}break;default:{cout<<"输入错误,请确保你的输入为1--5"<<endl;cout<<"按任意键回主菜单......"<<endl;getchar();system("cls");}}}/*------------------------------------------------初始化函数从数据.txt中读出信息------------------------------------------------*/void Int(){system("color c");//system("color A")0 = 黑色, 8 = 灰色1 = 蓝色//9 = 淡蓝色2 = 绿色A = 淡绿色3 = 湖蓝色//B = 淡浅绿色4 = 红色C = 淡红色// 5 = 紫色 D = 淡紫色// 6 = 黄色 E = 淡黄色//7 = 白色 F = 亮白色ifstream file ( "数据.txt" ,ios::in) ;while( !file.eof()){num++;file>>ticket[num].train;file>>ticket[num].hour ;file>>ticket[num].minute;file>>ticket[num].start_station;file>>ticket[num].end_station;file>>ticket[num].ticket_price;file>>ticket[num].zhandian;}num--;file .close();}void main(){Int();menu();while(end); }。

C语言课程设计--火车票管理系统

C语言课程设计--火车票管理系统

C语言课程设计--火车票管理系统————————————————————————————————作者:————————————————————————————————日期:二、设计内容设计一个火车票务管理系统,用C语言实现。

对该系统的要求如下:需求描述:1.系统功能(1)火车时刻信息录入。

包括车次、日期、起点、终点、开车时间、到达时间、票价。

数据存入数据文件hchsk.dat或hchsk.txt中。

(2)火车时刻信息查询。

按照车次查询按终点查询按起点查询按终点和日期查询(3)统计按终点统计每日的车次数按起点统计每日的车次数2. 系统主界面应有以下功能选项录入火车时刻信息查询火车时刻信息统计火车车次退出三、详细设计说明#include<stdio.h>#include<string.h>#include<stdlib.h>int MENU(); //菜单模块void INPUT(); //输入模块void SEARCH(); //查询模块void SELECT(); //统计模块void WRITE(); //文件记录模块void PRINT(); //打印模块void READ(); //文件读取模块void WRONG(); //纠错模块#define N 1000 //最大列车组数#define Print " %s%13s%10s%10s%12s%15s%11s\n",T[i].code,T[i].data,T[i].lp,T[i].ap,T[i].lt,T[i].at,T[i].pr ice //输出记录格式#define Wrong "\n ! ! ! ! ! ! ! ! ! ! ! 输入错误,请重新输入! ! ! ! ! ! ! ! ! ! ! \n"#define GeShi " 车次日期起点终点开车时间到达时间票价\n"struct Train{char code[10]; //车次char data[10]; //日期char lp[10]; //left place 起点char ap[10]; //arrive place 终点char lt[10]; //left time 开车时间char at[10]; //arrive time 到达时间char price[10]; // 票价}T[N];/* 全局变量*/int i=0; //输入计数器int n=0; //合计计数器char l[20]; //纠错空间///////////////////////////////////////////////////////////////////////////////////////主函数int main(){int x;do{x=MENU();switch(x){case 1:INPUT(); break;case 2:SEARCH(); break;case 3:SELECT(); break;case 4:printf("\n ---------------------------------------");printf("\n 正在退出,请按任意键退出");printf("\n\n ");printf("\n ---------------------------------------\n ");break;default:WRONG(); break;}}while(x!=4);return 0;}///////////////////////////////////////////////////////////////////////////////////////菜单模块int MENU(){int choice;system("cls");printf("\n ----------------------------------------------\n");printf(" ----------------------------------------------\n");printf(" --- ---\n");printf(" --- 欢迎进入火车票务管理系统---\n");printf(" --- ---\n");printf(" ----------------------------------------------\n");printf(" ----------------------------------------------\n\n");printf(" \n -------------- 请输入选项-------------\n");printf(" 1.录入火车时刻信息\n");printf(" 2.查询火车时刻信息\n");printf(" 3.统计火车车次\n");printf(" 4.退出\n");printf(" -----------------------------------------\n");printf(" 请选择:");scanf("%d",&choice);gets(l);return choice;}///////////////////////////////////////////////////////////////////////////////////////输入模块void INPUT(){char ch;do{system("cls");printf("\n\n ====================欢迎进入录入火车时刻信息界面====================\n");do{printf("\n 新建列车信息?(y/n) ");scanf("%c",&ch);gets(l);if(ch!='y'&&ch!='n')WRONG ();}while(ch!='y'&&ch!='n');if(ch=='n')break;printf(" ---------------------");printf("\n 录入第%d趟列车信息\n",n+1);printf(" 车次");gets(T[i].code);printf(" 日期");gets(T[i].data);printf(" 起点");gets(T[i].lp);printf(" 终点");gets(T[i].ap);printf(" 开车时间");gets(T[i].lt);printf(" 到达时间");gets(T[i].at);printf(" 票价");gets(T[i].price);n++;i++;}while(i<N);WRITE();system("cls");printf("\n");printf(" --------------------------------\n");printf(" 系统记载的列车信息如下\n");printf(" --------------------------------\n\n");PRINT();}///////////////////////////////////////////////////////////////////////////////////////文件记录模块void WRITE(){FILE *fp,*fp1;if((fp=fopen("hchsk.txt","w"))==NULL){printf("无法创建文件!\n\n");getchar();return;}if((fp1=fopen("N.txt","w"))==NULL)//用于记录共几趟车{printf("无法创建文件!\n");getchar();return;}for(i=0;i<n;i++)if(fwrite(&T[i],sizeof(struct Train),1,fp)==0)printf("写入数据失败!\n\n");fprintf(fp1,"%d",n);fclose(fp);fclose(fp1);}///////////////////////////////////////////////////////////////////////////////////////文件读取模块void READ(){FILE *fp,*fp1;if((fp=fopen("hchsk.txt","r"))==NULL){printf("无法打开文件\n");getchar();return;}if((fp1=fopen("N.txt","r"))==NULL){printf("无法打开文件!\n\n");getchar();return;}fscanf(fp1,"%d",&n);fclose(fp1);for(i=0;i<n;i++){fread(&T[i],sizeof(struct Train),1,fp);}fclose(fp);}///////////////////////////////////////////////////////////////////////////////////////打印模块void PRINT(){char ch[10];READ();printf("\n====================================================================== =====\n");printf(GeShi);for(i=0;i<n;i++)printf(Print);printf("====================================================================== =====\n");printf("\n 按任意键返回上级菜单: ");gets(ch);}///////////////////////////////////////////////////////////////////////////////////////查询模块void SEARCH(){char name1[10];//车次char name2[10];//终点char name3[10];//起点char name41[10];//终点char name42[10];//日期char choice;int j;int k;do{system("cls");printf("\n\n ====================欢迎进入查询火车时刻信息界面====================\n");printf("\n ++++++++++++++++++请选择查找方式++++++++++++++++++\n\n");printf(" ----1.显示所有列车信息 2.按车次查询 3.按终点查询----\n");printf(" -----4.按起点查询 5.按终点和日期查询 6.返回上级菜单----\n");printf("\n 请选择:");scanf("%d",&j);gets(l);switch(j){case 1:PRINT();break;case 2:printf("\n --- 请输入车次---:");gets(name1);break;case 3:printf("\n --- 请输入终点---:");gets(name2);break;case 4:printf("\n --- 请输入起点---:");gets(name3);break;case 5:printf("\n --- 请输入终点---:");gets(name41);printf("\n --- 请输入日期---:");gets(name42);break;case 6:break;default:WRONG ();break;}READ();k=0;if(j==2){for(i=0;i<n;i++){if(strcmp(T[i].code,name1)==0){printf("\n 按车次查找列车信息成功!\n");printf("\n====================================================================== =====\n");printf(GeShi);break;}}for(i=0;i<n;i++){if(strcmp(T[i].code,name1)==0){k++;}}printf("====================================================================== =====\n");printf("\n --> 共查询到%d 趟列车信息,请按任意键返回<-- ",k);gets(l);}if(j==3){for(i=0;i<n;i++){if(strcmp(T[i].ap,name2)==0){printf("\n 按终点查找列车信息成功!\n");printf("\n====================================================================== =====\n");printf(GeShi);break;}}for(i=0;i<n;i++){if(strcmp(T[i].ap,name2)==0){k++;}}printf("====================================================================== =====\n");printf("\n --> 共查询到%d 趟列车信息,请按任意键返回<-- ",k);gets(l);}if(j==4){for(i=0;i<n;i++){if(strcmp(T[i].lp,name3)==0){printf("\n 按起点查找列车信息成功!\n");printf("\n====================================================================== =====\n");printf(GeShi);break;}}for(i=0;i<n;i++){if(strcmp(T[i].lp,name3)==0){k++;}}printf("====================================================================== =====\n");printf("\n --> 共查询到%d 趟列车信息,请按任意键返回<-- ",k);gets(l);}if(j==5){for(i=0;i<n;i++){if(strcmp(T[i].ap,name41)==0&&strcmp(T[i].data,name42)==0){printf("\n 按终点和日期查找列车信息成功!\n");printf("\n====================================================================== =====\n");printf(GeShi);break;}}for(i=0;i<n;i++){if(strcmp(T[i].ap,name41)==0&&strcmp(T[i].data,name42)==0){k++;}}printf("====================================================================== =====\n");printf("\n --> 共查询到%d 趟列车信息,请按任意键返回<-- ",k);gets(l);}do{system("cls");printf("\n\n -->继续查找(1),返回主菜单(2)<-- ");choice=getchar();gets(l);if(choice!='1'&&choice!='2')WRONG ();}while(choice!='1'&&choice!='2');}while(choice!='2');}///////////////////////////////////////////////////////////////////////////////////////统计模块void SELECT(){char name1[10];//终点char name2[10];//起点int t,k;char choice;do{system("cls");printf("\n\n ====================欢迎进入统计火车车次界面====================\n");printf("\n -|- -|- -|- -|- 请选择统计方式-|- -|- -|- -|- \n\n");printf(" 1.按终点统计每日的车次数\n");printf(" 2.按起点统计每日的车次数\n");printf("\n 请选择:");scanf("%d",&t);gets(l);switch(t){case 1:printf(" 请输入终点:");gets(name1);break;case 2:printf(" 请输入起点:");gets(name2);break;default:WRONG();break;}READ();if(t==1){k=0;for(i=0;i<n;i++)if(strcmp(T[i].lp,name1)==0){printf("\n 按终点统计列车信息成功!\n");break;}}for(i=0;i<n;i++){if(strcmp(T[i].lp,name1)==0)k++;}printf("\n --> 共查询到%d 趟列车信息,请按任意键返回<-- ",k);gets(l);}if(t==2){k=0;for(i=0;i<n;i++){if(strcmp(T[i].lp,name2)==0){printf("\n 按起点统计列车信息成功!\n");break;}}for(i=0;i<n;i++)if(strcmp(T[i].lp,name2)==0)k++;}printf("\n --> 共查询到%d 趟列车信息,请按任意键返回<-- ",k);gets(l);}do{system("cls");printf("\n\n -->继续统计(1),返回主菜单(2)<-- ");choice=getchar();gets(l);if(choice!='1'&&choice!='2')WRONG ();}while(choice!='1'&&choice!='2');}while(choice!='2');}///////////////////////////////////////////////////////////////////////////////////////纠错模块void WRONG(){system("cls");printf("\n\n ---> ! ! ! 输入错误,请按任意键返回! ! ! <--- ");gets(l);}。

c语言课程设计-汽车售票系统

c语言课程设计-汽车售票系统
case 2:ReTick();return;
case 3:Show();return;
case 4:SaveTxt();return;
case 5:History();return;
case 6:About();return;
case 0:exit(0);return;
}
void BuyTick()
{
//得到当前时间
t=time(0);
date=localtime(&t);
printf("当前时间 %02d:%02d\n\n",date->tm_hour,date->tm_min);
printf("您可以购买以下车次票:\n");
printf(" %2d\t %02d:%02d%10d%10d\n",i+1,bus[i].hour,bus[i].min,bus[i].max,bus[i].seat);
j++;
sign[i]=i;
}
printf("━━━━━━━━━━━━━━━━━━━\n");
itoa(a,filename,10);strcat(filename,"-");
itoa(b,temp,10);strcat(filename,temp);strcat(filename,"-");
itoa(c,temp,10);strcat(filename,temp);
//开始写入数据
fp=fopen(filename,"w");
for(int i=0;i<5;i++)

火车票售票系统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语言车票系统 源程序
printf("____________________________________________________________________________\n");
while(p!=NULL)
{
printf("%d\t%s\t\t%s\t%s\t%.2f\t\t%d\t\t%d\n",p->numb,p->starttime,p->begin,p->end,p->lasttime,p->FixNumber,p->FixedNumber);
{
FILE *fp;
if((fp=fopen("ticket.txt", "r+"))==0)
{
printf("\n打开文件错误!\n");
exit();
}
PINF p=head->next;
rear->next=p; //在INFORMATION单链表中依次插入下一结点
rear=p;
rear->next=NULL;
}
fclose(fp);
}
void Save_In() //保存数据
{
int numb; //列车号
char starttime[10];
char begin[21];
char end[21];
float lasttime;
int FixNumber;
int FixedNumber;
struct information *next;
{
FILE *fp;

火车站售票查询系统 C语言 源代码

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

#include〈stdio。

h〉#include〈time.h> /*时间库函数*/#include<stdlib。

h> /*调用系统函数*/#include〈string。

h> /*串操作及内存操作函数*/ #include〈conio.h〉#include〈math。

h〉#define N 80 /*宏定义多条记录*/void maipiao(int s,int t);/*函数定义*/float times(int k);int hour(int k){switch(k){case 1:return 07;break;case 2:return 10;break;case 3:return 13;break;case 4:return 16;break;case 5:return 19;break;case 6:return 21;break;/*d到闽清一天的发车时间小时段*/ case 7:return 07;break;case 8:return 11;break;case 9:return 15;break;case 10:return 19;break;case 11:return 23;break; /*d到长乐一天的发车时间小时段*/ case 12:return 07;break;case 13:return 11;break;case 14:return 15;break;case 15:return 19;break;case 16:return 23;break;/*d到连江一天的发车时间小时段*/ case 17:return 07;break;case 18:return 11;break;case 19:return 16;break;case 20:return 20;break;/*d到永泰一天的发车时间小时段*/ case 21:return 07;break;case 22:return 12;break;case 23:return 17;break;case 24:return 22;break; /*d到福清一天的发车时间小时段*/ case 25:return 07;break;case 26:return 14;break;case 27:return 19;break;case 28:return 22;break;/*d到罗源一天的发车时间小时段*/ }}/*开车时间段*/ int minute(int k){switch(k){case 1:return 00;break;case 2:return 00;break;case 3:return 00;break;case 4:return 00;break;case 5:return 00;break;case 6:return 00;break;/*d到闽清一天的发车时间分钟段*/ case 7:return 00;break;case 8:return 00;break;case 9:return 00;break;case 10:return 00;break;case 11:return 00;break;/*d到长乐一天的发车时间分钟段*/ case 12:return 00;break;case 13:return 00;break;case 14:return 00;break;case 15:return 00;break;case 16:return 00;break;/*d到连江一天的发车时间分钟段*/ case 17:return 00;break;case 18:return 30;break;case 19:return 00;break;case 20:return 30;break;/*d到永泰一天的发车时间分钟段*/ case 21:return 00;break;case 22:return 30;break;case 23:return 00;break;case 24:return 30;break;/*d到福清一天的发车时间分钟段*/ case 25:return 30;break;case 26:return 00;break;case 27:return 30;break;case 28:return 30;break;/*d到罗源一天的发车时间分钟段*/ }}/*开车时间段*/ void wap(int k){switch(k){case 1:printf("闽清”);break;case 2:printf(”长乐");break;case 3:printf(”连江”);break;case 4:printf(”永泰”);break;case 5:printf(”福清”);break;case 6:printf("罗源");break;}}/*输入终点站的函数*/int shijian(){struct tm *ptr;time_t lt;lt =time(NULL);ptr=gmtime(&lt);printf(ctime(&lt));return 0;}/*输出当前时间的函数*/float times(int k){float t;if(k==1)t=1.5;if(k==2)t=3.0;if(k==3||k==4)t=4.0;if(k==5||k==6)t=4.5;return t;}/*输入行车时间的函数*/ int number(int k){int f;if(k==1||k==2)f=30;if(k==3||k==4)f=40;if(k==5||k==6)f=45;return f;}/*输入最大载客量的函数*/ int nownumber(int k,int i){int n=0;char filename[10];switch(i){case 1:strcpy(filename,”qiu1.txt”);break;case 2:strcpy(filename,”qiu2。

txt”);break;case 3:strcpy(filename,”qiu3。

txt");break;case 4:strcpy(filename,"qiu4.txt");break;case 5:strcpy(filename,”qiu5。

txt”);break;case 6:strcpy(filename,"qiu6。

txt”);break;case 7:strcpy(filename,”qiu7。

txt”);break;case 8:strcpy(filename,"qiu8.txt”);break;case 9:strcpy(filename,"qiu9。

txt");break;case 10:strcpy(filename,”qiu10。

txt”);break;case 11:strcpy(filename,”qiu11。

txt”);break;case 12:strcpy(filename,”qiu12。

txt");break;case 13:strcpy(filename,"qiu13.txt");break;case 14:strcpy(filename,”qiu14.txt");break;case 15:strcpy(filename,"qiu15.txt");break;case 16:strcpy(filename,”qiu16。

txt”);break;case 17:strcpy(filename,"qiu17。

txt");break;case 18:strcpy(filename,”qiu18。

txt”);break;case 19:strcpy(filename,”qiu19.txt");break;case 20:strcpy(filename,”qiu20.txt”);break;case 21:strcpy(filename,”qiu21.txt");break;case 22:strcpy(filename,”qiu22.txt");break;case 23:strcpy(filename,"qiu23。

txt”);break;case 24:strcpy(filename,”qiu24.txt");break;case 25:strcpy(filename,”qiu25.txt");break;case 26:strcpy(filename,”qiu26.txt");break;case 27:strcpy(filename,”qiu27。

txt”);break;case 28:strcpy(filename,"qiu28。

txt”);break;case 29:strcpy(filename,”qiu29。

txt");break;}FILE *fp;if((fp=fopen(filename,”rt+”))==NULL){printf(”cannot open file,strike any key exit!");exit(1);}fscanf(fp,"%d”,&n);n=n+k;rewind(fp);fprintf(fp,”%d”,n);//将输入数组里面的数据写到文本里fclose(fp);return n;}/*现在已定票人数*/ int tangci(int k){int x;switch(k){case 1:x=6;break;case 2:x=5;break;case 3:x=5;break;case 4:x=4;break;case 5:x=4;break;case 6:x=4;break;default:x=0;break;}return x;}/*确定每个地方一天行车趟次的函数*/void jiemian(){printf(”********************************************************************************\n");printf("******************************欢迎来到车票查询系统******************************”);printf("\n");printf("|★★★a: 进入班次一览★★★|\n");printf("|★★★b:进入查询班次★★★|\n");printf("|★★★c: 进入终点站查询★★★|\n”);printf("|★★★d:售票★★★|\n”);printf(”| ★★★e:退票★★★|\n");printf(”| ★★★f:增加班次★★★|\n”);printf(”********************************************************************************\n”);printf(”\n请选择(a-e):☆☆☆");} /*界面函数*/void banci(int s,int t){system("cls”);/*清屏*/int i,flag=1,m,k=1,o=0;/*定义一些要用的数据*/printf(" 车票管理系统");printf(”\n");printf("班次发车时间起点站终点站行车时间额定数量已订票人数状态”);printf("\n”);for(i=1;i〈=N;i++){if(flag){m=i+tangci(k)-1;flag=0;} /*计算同一个终点站的班次范围*/if(i〉=10)printf("%d ”,i);elseprintf(”%d ”,i);if(hour(i)〉=10)printf("%d ”,hour(i));/*进行页面的调整,美观*/elseprintf(”%d%d ",o,hour(i));if(minute(i)>=10)printf(”%d”,minute(i));elseprintf("%d%d",o,minute(i));printf(" 闽侯”);wap(k);printf(" %lf ”,times(k));printf(”%d ",number(k));printf(”%d ”,nownumber(0,i));if(s<hour(i))printf(”未发出");else if(t〈minute(i)&&s==hour(i))printf("未发出");elseprintf(”已发出");printf(”\n”);if(i==m){flag=1;k++;}if(k>6)break;}} /*班次一览*/void chaxun1(int s,int t){system("cls");int i,k=0,n,o=0;printf("\n请输入要查询的班次i:");scanf("%d”,&i);n=i;while(n〉0){k++;n=n—tangci(k);}printf(”班次发车时间起点站终点站行车时间额定数量已订票人数状态\n");if(i〉=10)printf(”%d ”,i);elseprintf("%d ”,i);if(hour(i)>=10)printf(”%d ",hour(i));elseprintf("%d%d ”,o,hour(i));if(minute(i)>=10)printf("%d”,minute(i));elseprintf("%d%d”,o,minute(i));printf(”闽侯”);wap(k);printf(" %f ”,times(k));printf(”%d ”,number(k));printf("%d ”,nownumber(0,i));if(s<hour(i))printf(”未发出”);else if(t<minute(i)&&s==hour(i))printf(”未发出");elseprintf(”已发出");printf(”\n”);printf("返回重新查询:3,输入其他返回:\n”);scanf("%d",&n);while(n==3) /*循环*/{system(”cls”);printf(”\n请输入要查询的班次i:”);scanf("%d”,&i);printf(”班次发车时间起点站终点站行车时间额定数量已订票人数状态\n”);if(i〉=10)printf(”%d ”,i);elseprintf("%d ",i);if(hour(i)>=10)printf(”%d ",hour(i));elseprintf(”%d%d ”,o,hour(i));if(minute(i)〉=10)printf("%d”,minute(i));elseprintf(”%d%d”,o,minute(i));printf(" 闽侯”);wap(k);printf(” %f ”,times(k));printf(”%d ”,number(k));printf("%d ”,nownumber(0,i));if(s〈hour(i))printf(”未发出");else if(t<minute(i)&&s==hour(i))printf("未发出”);elseprintf(”已发出”);printf("\n”);printf(”返回重新查询:3,输入其他返回:\n”);scanf("%d",&n);}} /*按班次查询*/void chaxun2(int s,int t){system(”cls”);int i,k=1,m,j,l=0,o=0;printf("请输入你要查询的终点站:\n”);printf(”1:闽清。

相关文档
最新文档