ImageVerifierCode 换一换
格式:DOCX , 页数:48 ,大小:29.21KB ,
资源ID:5366375      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5366375.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(火车订票管理系统.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

火车订票管理系统.docx

1、火车订票管理系统火车订票管理系统假设有5条火车线路(起点均为济南),每条线路所涉及的信息有:终点站、车次、发车时间(年.月.日.时.分)、票价、余票数(假设火车总票数为300)。乘客订票信息包括:乘客姓名、乘客身份证号码、订票数,总票价。 本系统要求用结构体数组和链表实现,将火车线路信息存放在结构体数组中,每条线路对应一个链表,乘客订票就是在链表中插入结点,乘客退票就是在链表中删除结点。链表的结点类型和结构体类型定义如下:struct node /乘客订票信息 char name10; /乘客姓名 char IDcard20; /乘客身份证号码 int TicketNum; /订票数 floa

2、t FareSum; /总票价 struct node *next; /指针成员;struct Dtime /发车时间 short year; short month; short day; short hour; short minute;struct train /线路 char terminal10; /终点站char sequence10; /车次struct Dtime StartTime; /发车时间float fare; /票价int SpareTicketNum; /余票数struct node *head; /指针成员,指向该线路第一个订票乘客;系统整体结构见图9.3所示。系

3、统的主要功能包括:1. 火车线路查询功能,乘客输入终点站名称或输入车次,输出相应的火车线路信息。2. 订票功能。乘客输入车次和订票数,先查询该车次的余票数,若余票数大于等于订票数,则为乘客办理订票手续,要求乘客输入姓名、身份证号码,计算出总票价,产生一个新结点,将该结点添加到对应车次的链表中,然后修改该车次的余票数。若余票数小于订票数,则输出提示信息余票数不足,订票失败!。3. 退票功能。乘客输入车次和身份证号码,在该车次对应的链表中查找该乘客,若找到,询问乘客退票数量,若退票数小于订票数,则只需修改结点的订票数;若退票数等于订票数,则将该乘客对应的结点删除,然后修改该车次的余票数;若没找到,

4、则应提示未找到相应信息,要求乘客重新输入车次和身份证号码,再进行查找,如果仍未找到,则输出提示信息输入信息错误,退票失败!。 4. 其他查询功能。(1) 输入车次,输出该车次的全部订票信息。(2) 输入车次,输出该车次的订票数和余票数。(3) 输入终点站名称,输出相关火车线路的信息。(4) 输入日期(年.月.日),输出发车时间为该天的火车线路的信息。(5) 输出余票数为0的火车线路的信息。*/#include stdio.h#include string.h#include stdlib.h#include conio.h #include cstdlib#define SUM_TICKET

5、300; /车票总数#define PASS_N 5 /车次总数,对应这些个乘客文件/=/函数声明add_train(); /增加车次admin_passger(); /乘客管理admin_password(); /管理员密码管理admin_train(); /管理员权限:管理车次和乘客booking(); /订票checking(int n,char check20); /检查输入的省份证好是否符合规定的位数check_Date(int max,int min,int mn); /检查日期是否符合标准的格式else_find(); /其他查询功能find(); /查找功能mod_train(

6、); /管理员权限:修改车次的信息print(); /从屏幕输出车次信息print_p(struct train *train_p1); /输出对应车次的全部乘客信息read(); /从文件中读取车次和乘客信息refund(); /退票功能void save(); /将车次和乘客信息保存到文件中/=/全局变量struct node *node_p1, *node_p2; /乘客struct train *head=NULL,*train_p1,*train_p2;/线路char admin20;int MaxTicket=300;struct node /乘客passengers订票信息 ch

7、ar name20; /乘客姓名 char IDcard20; /乘客身份证号码 int TicketNum; /订票数 int FareSum; /总票价 struct node *next; /指针成员;struct Dtime /发车时间 int year; int month; int day; int hour; int minute;struct train /线路 char terminal20; /终点站 char sequence20; /车次 struct Dtime *StartTime; /发车时间 int fare; /票价 int SpareTicketNum; /

8、余票数 int MaxTicket; /最大票数 struct node *nhead; /指针成员,指向该线路第一个订票乘客 struct train *next; /指针成员,指向下一条线路;/=/从文件中读取车次和乘客信息int read(void) /从文件读取信息 system(color 1f); /设置控制台背景色 FILE *fp,*pa,*ad; /打开文件,实例化三个文件结构体的指针 int site_sum=0,sum_ch=0; /总站点 int pass_sum5=0; / char ch;printf(n正在读取文件.n);/读取train.txt 文件名和文件路径

9、/printf(n正在读取train.txt文件.n);/ /如果打不开也写不进,那就新建个if( (fp=( fopen(train.txt,r)=NULL ) if( (fp=fopen(train.txt,w)=NULL ) printf(nCannot open the file: train.txt! nPlease confirm the file already exists!n); exit(0); /找不到文件train.txt,请确定train.txt的确存在。 fclose(fp); head=NULL; /链表置为空NULL /如果车次源文件不存在,则新建空train文

10、件 else if( (fp=fopen(train.txt,r+)=NULL ) putchar(10);/在控制台输出 10的ASSIC码,同 n for(int i=0; i=0 ) rewind(fp); while( !feof(fp) ) train_p1=(struct train *)malloc(sizeof(struct train); train_p1-nhead=NULL; train_p1-StartTime=(struct Dtime *)malloc(sizeof(struct Dtime); /开辟新节点 fscanf(fp,%s%s%d%d%d%d%d%d%d

11、n,train_p1-terminal,train_p1-sequence,&train_p1-StartTime-year,&train_p1-StartTime-month,&train_p1-StartTime-day,&train_p1-StartTime-hour,&train_p1-StartTime-minute,&train_p1-fare,&train_p1-SpareTicketNum); site_sum+; if(site_sum = 1) head=train_p1; else train_p2-next=train_p1; train_p2=train_p1; tr

12、ain_p2-next=NULL; /printf(n共有车次 %d 次!n,site_sum); fclose(fp); /print(); /读取admin密码/printf(n正在读取密码文件.n); if( ( fopen(admin.txt,r)=NULL ) if( (ad=fopen(admin.txt,w)=NULL ) putchar(10); for(int i=0; i50; i+) printf(%c,23); putchar(10); printf(Cannot open the file: admin.txt! nPlease confirm the file al

13、ready exists!n); exit(0); strcpy(admin,admin); fprintf(ad,%s,admin); /文件指针,输出字符串,输出表列;将格式化的数据写入文件 fclose(ad); /如果密码源文件不存在,则新建空admin.txt文件,初始密码:admin if( (ad=fopen(admin.txt,r)=NULL ) putchar(10); for(int i=0; i50; i+) printf(%c,23); putchar(10); printf(Cannot open the file: admin.txt! nPlease confir

14、m the file already exists!n); exit(0); fscanf(ad,%s,admin); /printf(admin=%sn,admin); if( strcmp(admin,)=0 ) strcpy(admin,admin); fprintf(ad,%s,admin); fprintf(ad,%s,admin); / 如果密码为空,怎初始化为admin fclose(ad);/读取passenger.txt /printf(site=%dn,site_sum);/* /数字转换为字符串 char passN20,cc2; /= for( i=0; isequen

15、ce);/ node_p1=train_p1-nhead; strcpy(pass,train_p1-sequence); strcat(pass,.txt); if( (pa=fopen(pass,r+)=NULL ) if( (pa=fopen(pass,w)=NULL ) for(int i=0; i=0 ) rewind(pa); while( !feof(pa) ) node_p1=(struct node *)malloc(sizeof(struct node); node_p1-next=NULL; fscanf(pa,%s%s%d%dn,node_p1-name,node_p1

16、-IDcard,&node_p1-TicketNum,&node_p1-FareSum); pass_sumj+; if( pass_sumj=1 ) train_p1-nhead=node_p1; else node_p2-next=node_p1; node_p2=node_p1; node_p2-next=NULL; fclose(pa); / /printf( %dn,j); train_p1=train_p1-next; /=/* if( ( fopen(MaxTicket1.txt,r)=NULL ) ad=fopen(MaxTicket1.txt,w); MaxTicket=30

17、0; fprintf(ad,%d,MaxTicket); fclose(ad); /printf(n正在读取文件MaxTicket.n); if( (fopen(MaxTicket.txt,r)=NULL ) ma=fopen(MaxTicket.txt,W); MaxTicket=300; printf(n MaxTicket=%dn,MaxTicket); fprintf(ma,%s,admin); else fscanf(ma,%d,&MaxTicket); fclose(ma);*/ printf(n全部文件读取完毕!n);/=/从屏幕输出车次信息int print(void) /调试

18、 :输出 putchar(10); int i=1; if( (train_p1=head)=NULL ) /如果车次文件是空文件 printf(没有任何车次!按任意键返回上一层n); getch(); return 0; / printf(终点站 车次 发车时间 t票价t余票数nn); while( train_p1!=NULL ) printf(%s %s %4d-%2d-%2d %2d:%2dtY%dt%dn,train_p1-terminal,train_p1-sequence,train_p1-StartTime-year,train_p1-StartTime-month,train

19、_p1-StartTime-day,train_p1-StartTime-hour,train_p1-StartTime-minute,train_p1-fare,train_p1-SpareTicketNum); train_p1=train_p1-next;/ printf(i=%dn,i); i+; return 1;/=/输出对应车次的全部乘客信息print_p(struct train *train_p1) /调试 :输出 putchar(10); int i=1; if( (node_p1=train_p1-nhead)=NULL ) printf(该车次没有乘客!n); retu

20、rn 0; printf(车次t乘客姓名t乘客身份证号nn); while( node_p1!=NULL ) printf(%st%stt%sn,train_p1-sequence,node_p1-name,node_p1-IDcard); node_p1=node_p1-next; return 0;/=find(void) /查询start_f: system( cls ); /清屏 putchar(10); char sect_120=1; char terminal20; /终点站 char sequence20; /车次 /格式 putchar(10); for(int i=0; i

21、50; i+) printf(%c,23); printf(n 欢迎使用 火车票查询 系统 n); for(i=0; i50; i+) printf(%c,23);putchar(10); for(i=0; iterminal)!=0 & train_p1-next!=NULL ) train_p1=train_p1-next; if( strcmp(terminal,train_p1-terminal)=0 ) printf(n终点站 车次 发车时间 t票价t余票数n); printf(%s %s %4d-%2d-%2d %2d:%2dtY%dt%dn,train_p1-terminal,train_p1-sequence,train_p1-StartTime-year,train_p1-StartTime-month,train_p1-StartTime-day,train_p1-StartTime-hour,train_p1-StartTime-min

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1