1、车票管理管理系统是车站对车票信息管理的工具。系统能够实现车票信息的录入,浏览,查询,订票,退票等功能.1.3 功能概述:车票管理系统主要分为管理员登录和普通用户登录两大部分。其中管理员登录后,可以录入、浏览和查询车票信息。普通用户登录后可进行查询、退票和订票等操作。2 需求分析2.1 车次的信息包括 :班次、发车时间、起点站、终点站、行车时间、额定人数、已定票人数、票价等。2.2 系统能够完成车票信息的录入、浏览、查询、订票、退票等功能。(1)车次信息录入功能: 可进行车次信息的录入,并以文件保存。(2)车次信息浏览功能: 浏览所有班次信息,并可显示出所有班次当前状态,若某车次发车时间已过,则
2、显示“车已开出”。(3)车次信息查询功能: 查询车次信息。可按班次号查询,也可按终点站查询。(4)车票订票功能:只有当已订票人数小于额定载客量且该班次未到发车时间时才能完成订票。(5)车票退票功能: 退票时,输入退票班次,若此班次未发出则可能完成退票。(6)票数变更功能:当用户订票或退票成功后,票数会自动发生相应的改变。3 模块设计图4 NS流程图清单4.1录入(load()system(cls); printf(*欢迎使用车票管理系统*n当前时间: system_time(); /调用系统时间函数FILE *fp; ticket train;T(fp=fopen(record,a+)=NUL
3、L F File(record) open error!n fscanf(fp,%d,&record); fclose(fp);ticketFile(ticket) open error!fputs(,fp); printf(请输入班次: scanf(train.number); fprintf(fp,train.number); fputs(t printf(请输入发车时间:%d:train.ft.hour,&train.ft.minute);%02d:%02d,train.ft.hour,train.ft.minute);请输入起始站:%strain.origin_station); fp
4、uts(train.origin_station,fp);exit(0); fputs(请输入终点站:train.last_station); fputs(train.last_station,fp);请输入持续时间:%lftrain.last_time); fprintf(fp,%.2lf,train.last_time);请输入最大载客量:train.max_number);,train.max_number);请输入已售出票数:train.sold_ticket);fprintf(fp,train.sold_ticket);请输入票价(远):scanf(train.price),trai
5、n.price); record+; fclose(fp)w+ F,record); fclose(fp);*录入成功,请继续选择*n* 1.继续录入 *n* 2.返回管理员菜单 *n*nint n;请输入您想做的操作: n); exit(0);case n, n=1,2case 1: case 2:load(); break;glymenu();4.2 浏览(show() printf( FILE *fp;rFile(ticket) open error! exit(0);n班次 发车时间 起点 终点 行车时间(小时) 额定载量 已定票人数 票价(元)状态n 当(!feof(fp)为真fsc
6、anf(fp,%dt%d:train.number,& fscanf(fp,%s%strain.origin_station,&%lf%d%d%dtrain.last_time,&train.max_number,&train.sold_ticket,&train.price);%dt%02d:%02dt ,train.number,train.ft.hour,train.ft.minute);%st%st,train.origin_station,train.last_station);%.2lft%dt%dt%dt,train.last_time,train.max_number,trai
7、n.sold_ticket,train.price);(syshourtrain.ft.hour)|(syshour=train.ft.hour)&(sysminutetrain.ft.minute) 车已开出n共有%d条车次信息n system(pause glymenu()4.3 按班次查询(searsh1() int m; int flag=1;请您输入你要查询的班次: scanf(m);)=NULLFile open error! feof(fp)为真train.sold_ticket,& (m=train.number)&(flag=1)n班次 发车时间 起点 终点 行车时间(小时)
8、 额定载量 已定票人数t票价(元)状态ncontinue;%02dtT train.ft.hour)| (syshour=train.ft.hour)& (sysminutetrain.ft.minute)prinf( flag=0;fclose(fp); flag=1 n!没有此条车次记录!n*查询完成,请继续选择*n* 1.继续按班次查询 *n* 2.按起点站和终点站查询 *n* 3.返回主菜单 *n*n case n, n=1,2,3case 2:case 3:searsh1();searsh2();break;mainmenu();4.4按起点站和终点站查询(searsh2() cha
9、r a20; char b20;请您输入你要查询的起始站:a);请您输入你要查询的终点站: scanf(b);(strcmp(a,train.origin_station)=0)& (strcmp(b,train.last_station)=0)&n班次 发车时间 起点 终点 行车时间(小时) 额定载量 已定票人数t状态n* 1.继续按起点站和终点站查询 *n* 2.按班次查询 *nSearsh2();Searsh1();4.5 订票(buy_ticket()int y=1; int x; int m; char a; int flag=1 FILE *fp;请输入您想买的班次:)=NULL
10、FPrintf(File open errorexit(0);当(!train.ft.hour)|(syshour=train.ft.hour)&x=1;x=0;(m=train.number)&(x=1)n!此车已开出,订票失败!nn flag=0;(x=0)&(train.max_numbertrain.sold_ticke)n您确定要买%d:%d由%s到%s的车票(y/n):,train.ft.hour,train.ft.minute,train.origin_station,train.last_station);a=y n$购买成功,请按时乘车$n 售票失败!nn save(y,m);nntflag=0; break;flag=1n !没有此车次信息,请确认后再购票! nn *请 继 续 选 择*n* 1.继续订票 *n* 2.返回普通用户菜单 *ncase n, n=1,2buy_ticket();ptyhmenu();4.6 退票(back_ticket()int y=0;请输入您要退的班次: feof(fp)为真此车已开出, 退票失败!(train.sold_ticket0)n您确定要退%d: n$退票成功$n 退票失败!没有此车次信息,请确认后再退票!* 1.继续退票 *n请输入