火车票订票系统 - 范文中心

火车票订票系统

03/12

《数据结构课程设计作业》

作业名称

小组成员

#include

#include

#include

#include

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("* 欢迎使用火车票订票系统! *"); puts("********************************************************"); puts("* 您可以选择以下操作: *"); puts("* 1:插入列车信息 *"); puts("* 2:获取列车信息 *"); puts("* 3:订取火车票 *"); puts("* 4:更新火车信息 *"); puts("* 5:提供给您关于火车的信息 *"); puts("* 6:保存信息 *"); puts("* 7:退出系统 *"); 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("请输入列车号(0-return)");

scanf("%s",num);

if(strcmp(num,"0")==0)

break ;

/*判断是否已经存在*/

while(s)

{

if(strcmp(s->data.num,num)==0)

{

printf("列车号为 '%s'的列车已损坏!\n",num);

return ;

}

s = s->next ;

}

p = (struct node*)malloc(sizeof(struct node));

strcpy(p->data.num,num);

printf("输入您想去的地方:");

scanf("%s",p->data.city);

printf("输入列车的发车时间:");

scanf("%s",p->data.takeoffTime);

printf("输入列车到达时间:");

scanf("%s",&p->data.receiveTime);

printf("输入列车票价:");

scanf("%d",&p->data.price);

printf("输入列车票序号:");

scanf("%d",&p->data.bookNum);

p->next=NULL ;

r->next=p ;

r=p ;

shoudsave = 1 ;

}

}

/*打印火车票信息*/

void printTrainInfo(struct node*p)

{

puts("\n以下是您想要的记录:");

printf(">>列车编号: %s\n",p->data.num);

printf(">>目的地: %s\n",p->data.city);

printf(">>发车时间: %s\n到达时间: %s\n",p->data.takeoffTime,p->data.receiveTime); printf(">>列车票价: %d\n",p->data.price);

printf(">>已订车票编号: %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("没有任何记录!");

return ;

}

printf("请选择方式:\n>>1:根据列车号;\n>>2:根据城市名称:\n"); scanf("%d",&sel);

if(sel==1)

{

printf("请输入列车编号:");

scanf("%s",str1);

p=Locate1(l,str1,"num");

if(p)

{

printTrainInfo(p);

}

else

{

mark1=1 ;

printf("\n文件无法找到!");

}

}

else if(sel==2)

{

printf("请输入城市:");

scanf("%s",str2);

p=Locate1(l,str2,"city");

if(p)

{

printTrainInfo(p);

}

else

{

mark1=1 ;

printf("\n无法找到文件!");

}

}

}

/*订票子模块*/

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("输入您想要到达的城市: ");

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\n已有信息 %d条\n",i);

for(t=0;t

printTrainInfo(r[t]);

if(i==0)

printf("\n\t\t\t抱歉!无法找到您想要的火车票!\n"); else

{

printf("\您确定要订购此票么?n\n"); scanf("%d",&ch);

if(ch == 1)

{

h=(bookMan*)malloc(sizeof(bookMan)); printf("请输入您的姓名: ");

scanf("%s",&str1);

strcpy(h->data.name,str1);

printf("请输入您的身份证号: ");

scanf("%s",&str2);

strcpy(h->data.num,str2);

printf("输入您的订票编号: ");

scanf("%d",&dem);

h->data.bookNum=dem ;

h->next=NULL ;

v->next=h ;

v=h ;

printf("\n您已成功订票!");

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("\n没有您的可更改信息!\n");

return ;

}

else

{

QueryTrain(l);

if(mark1==0)

{

printf("\n您想更改它么?\n");

getchar();

scanf("%c",&ch);

if(ch=='y');

{

printf("\n输入列车编号:");

scanf("%s",findmess);

p=Locate1(l,findmess,"num");

if(p)

{

printf("请重新输入列车编号:"); scanf("%s",&p->data.num);

printf("请重新输入将要到达的城市:"); scanf("%s",&p->data.city);

printf("请重新输入列车发车时间:"); scanf("%s",&p->data.takeoffTime); printf("请重新输入列车到达时间:"); scanf("%s",&p->data.receiveTime); printf("请输入新的票价:");

scanf("%d",&p->data.price);

printf("请输入已订票乘客的编号:"); scanf("%d",&p->data.bookNum); printf("\n更改记录成功!\n"); shoudsave=1 ;

}

else

printf("\t\t\t无法找到记录!");

}

}

else

mark1=0 ;

}

}

/*系统给用户的提示信息*/

void AdvicedTrains(Link l)

{

Node*r ;

char str[10];

int mar=0 ;

r=l->next ;

printf("请输入您想去的城市: ");

scanf("%s",str);

while(r)

{

if(strcmp(r->data.city,str)==0&&r->data.bookNum

mar=1 ;

printf("\n您可以选字以下列车\n");

printf("\n\n请选择四号服务以订取火车票\n"); printTrainInfo(r);

}

r=r->next ;

}

if(mar==0)

printf("\n\t\t\t您现在不能订票!\n");

}

/*保存火车信息*/

void SaveTrainInfo(Link l)

{

FILE*fp ;

Node*p ;

int count=0,flag=1 ;

fp=fopen("c:\\train.txt","wb");

if(fp==NULL)

{

printf("文件无法被打开!");

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("已经被保存的文件编号为: %d\n",count); shoudsave=0 ;

}

fclose(fp);

}

/*保存订票人的信息*/

void SaveBookmanInfo(bookManLink k)

{

FILE*fp ;

bookMan*p ;

int count=0,flag=1 ;

fp=fopen("c:\\man.txt","wb");

if(fp==NULL)

{

printf("文件无法被打开!");

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("已经被保存的记录编号为 %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 ;

int sel ;

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("无法打开文件!");

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("无法打开文件!");

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("请选择操作: ");

scanf("%d",&sel);

system("cls");

if(sel==8)

{

if(shoudsave==1)

{

getchar();

printf("\n文件已更改,您确定要保存它么(y/n)?\n"); scanf("%c",&ch1);

if(ch1=='y'||ch1=='Y')

{

SaveBookmanInfo(k);

SaveTrainInfo(l);

}

}

printf("\n感谢有您!\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("\n请按任意键继续...............");

getch();

}

return 0;

}


相关内容

  • 北京铁路局电话订票和网上订票流程/指南
    一.北京铁路局管辖铁路及主要车站 主要管辖北京市.天津市.河北省和山东德州.山西阳泉部分铁路. 主要车站:北京站.北京西站.北京南站.北京北站.石家庄站.天津站.天津西站.唐山站.邯郸站.保定站.邢台站.丰台站.张家口站.秦皇岛站.阳泉站. ...
  • 20**年广铁集团电话订票和网上订票流程指南
    广铁集团电话订票和网上订票流程/指南 转自http://www.95105105.com/a/dingpiaozhinan 一.广铁集团管辖铁路及主要车站 主要管辖广东.湖南.海南三省以及贵州铜仁部分铁路(不包含广东湛江.茂名等部分铁路). ...
  • 网友分享:12306火车票网上订票攻略
    2012-01-10 08:54 来源:深圳广电集团 又到年底了,又要开始为火车票忙活了.过去的多年,订票可以用"八仙过海,各显神通"来形容.有关系的托关系搞票,有力气的通宵排队,有时间的死盯着58赶集,没关系没力气没时 ...
  • 全国火车站问询电话,投诉电话一览表
    铁道部投诉电话:010-51843418 010-51847023 010-51875245(路风) 010-51843421 民航总局投诉电话:010-64287798 010-64287798(传真) 北京 北京站 问询电话:010-5 ...
  • 上海铁路局扩大电话预订团体票范围 15个车站可办
    2012年03月09日 17:51 来源:中国新闻网 中新网南京3月9日电(陶利平 朱晓颖)上海铁路局9日公布,从3月10日起,该局将在合肥.南京.上海.杭州四个地区试行电话预订团体票及配送服务的基础上,再增加连云港.徐州.蚌埠.阜阳.芜湖 ...
  • 财务制度补充规定之出差管理规定
    中美资本控股集团财务制度补充规定 ----出差管理规定 编号:CUCHG-FC-[1**********]6 为明确公司员工出差程序,加强费用管理,提高效率,节约成 本,更好地配合集团业务发展,特制定本规定. 1.原则 以保证最高的工作效率 ...
  • 铁路运输进款及运输收入管理规定
    [时效性]:已失效 [发文字号]:铁道部令第13号 [颁布日期]:2003-11-26 [生效日期]:2004-01-01 [效力级别]:部门规章 [颁布机构]:铁道部(已撤销) 目录 * 1 href="#heading_1&q ...
  • 旅客调查问卷
    编号:____ 旅客调查问卷 时问:____地点:____ 欢迎您乘坐铁路客车,为了解您的服务需求,进一步改善我们的服务质量,需要占用 您的一点时间,配合我们此次问卷调查,谢谢您的支持与合作. 一.您对铁路客运的总体印象 很滴意口 满意口 ...
  • 航班信息的管理
    成 绩 评 定 表 课程设计任务书 目 录 一.题目概述(内容及要求) ............................... 2 二.功能分析 ........................................... ...
  • 网上机票预订系统课程设计文档
    东莞理工学院城市学院 CITY COLLEGE OF DONGGUAUNIVERSITY OF TECHNO LOGY 课 程 设 计 报 告 实验项目名称: 网上机票预定系统 姓 名: 叶奕川 张绍华 学 号: [1**********] ...