您好,欢迎访问三七文档
目录1.设计内容_____________________________________________12.概要设计_____________________________________________33.详细设计_____________________________________________54.程序源码_____________________________________________75.程序运行与调试______________________________________166.总结________________________________________________177.参考文献____________________________________________171.设计内容(1)软件名称:铁路售票系统(2)软件开发的目标:完善目前现有的铁路售票系统,使之能跟够上时代的发展,更能够满足乘客的需求以及方便售票员的工作。同时通过实践来提高自己的动手能力,并增强自己对知识掌握的熟练程度。(3)软件的应用范围:理论上能够实现于铁路部门的售票系统,其目的在于在原有的系统基础使得铁路售票系统更加自动化,以期实现完善日常生活中铁路售票的各种缺陷。(4)软件的数据流图:D1车票信息库车票信息出行信息出行信息车票车票信息车票信息图1—1车票车票信息D2车票信息库车票信息退款信息现金图1—2乘客P1.1输入出行信息P1.2确定车次、座位号、票种等P1.4打印车票P1.3收款乘客P2.1输入要退的车票信息P2.2扣除手续费,返回退款信息P2.3退款乘客D3车票信息库车票信息改签换乘信息、车票改签换乘信息改签换乘车票信息车票信息图1—3(5)软件的数据字典:乘客P3.1输入改签换乘信息P3.2确定车次、座位号、票种等P3.3退款或收款P3.4打印车票名字:出行信息别名:描述:每名乘客提供给售票员的乘车信息定义:出行信息=始发站+终点站+车次+票数+票种+日期位置:售票系统存储器名字:车票信息别名:描述:电脑根据乘客的出行信息,而生成的车次安排信息定义:车票信息=始发站+终点站+售票站+车次+座位号+票价+编码+票种+日期位置:车票信息库名字:退款信息别名:描述:针对要退的车票的票价,按预先规定的方法扣除手续费后,所得到的退款金额定义:退款信息=1{数字}9位置:车票信息库(6)软件的E-R图:1n图2—12.概要设计(1)系统功能包括:售票、退票、改签换乘、车次查询、系统管理等。功能说明:①在售票时设计了多种售票模式,售票员可输入班次、自定义站点编码、站点拼音代码,即可显示经过该站点的所有可售班次,班次车辆的座位状态以图形方式直观地显示,全面支持键盘操作,对退票等常用功能提供自定义快捷键,提高工作效率;②一个人可同时售数张相同或不同站点,相同或不同票种(全票、半票、免票儿童)的车票,可以实现累加本次售票款,直至下次新售票开始;③根据退票时间系统自动设置应收退票手续费。并显示车票金额,应扣手续费以及退票金额,并打印出退票手续费收据;退票用户应该包括两种:第一种用户是订票的旅客,订完车票的旅客,在取票前需要退票时,可以输入旅客的身份证号和车票号,完成退票过程;第二种用户是售票员,对于已经售出的车票,进行退票。退票时,需要人工服务,所以收取票面金额20%的手续费。④可实现异地联网售票、本地售票、互联网售票。从网络订票功能上分析,车票的信息应该包括列车的车次、出发地和目的地、席位的类型,票价和出发的日期时间。预订车票时用户需要输入购票的张数,旅客和名字:改签换乘信息别名:描述:乘客提供给售票员的变更后的出行信息定义:改签换乘信息=始发站+终点站+车次+票种+日期位置:售票系统缓存乘客购买车票姓名性别年龄出行信息始发站票价票种终点站售票站座位号编码车次日期联系人资料。为了方便旅客取得车票,系统生成取票号码,用户可以凭借此号码与身份证取得车票,并付款。订票功能,只受理5天后到20天之间的订票业务。对于循环发车的车次,系统不提供订票。订好车票的旅客,需要于开车两天前到取票点取票,否则系统将自动收回所订的车票。(2)子集说明:软件主要由五个模块组成,每个模块各有不同的功能。但都能够完成特定的处理和存储功能,各模块的数据都存放在数据库中。数据的调用和连接都由相应的程序来完成。①售票模块:从售票功能上分析,首先,售票系统应该能够按发车站,终到站进行打印车票。售票时,售票员输入发车站和终到站,找到需要的车次,再填写售票数量,优惠信息和座位类型,并按优惠情况,折算票价。其次,此售票系统应该提供出售循环车次车票的功能。也实现按站打印车票。按站打印车票的好处是,使消费更加透明和公平。②退票模块:从退票功能上分析,退票用户应该包括两种。第一种用户是订票的旅客,订完车票的旅客,在取票前需要退票时,可以输入旅客的身份证号和车票号,完成退票过程;第二种用户是售票员,对于已经售出的车票,进行退票。退票时,需要人工服务,所以收取票面金额20%的手续费。当票面金额小于2元时,去掉手续费,就所剩无几了,因此系统应该不予退票。由于车票退回系统后,需要时间卖给其他旅客,所以旅客需在开车前办理退票手续,否则系统不予退票。③改签换乘模块:从改签换乘功能上分析,首先,根据乘客提供的改签换成信息,调用车票信息库中的数据,以确定该选择的车次信息,再根据车次信息中票价,确定是该退款还是增收相应的票间差额。待退款后或收完款后,打印新的车票。但改签换乘必须在发车前完成,发车后不予改签车票。④查询模块:从查询功能上分析,需要分别满足三个条件查询。第一个条件是,当只输入“车次”时,进行查询,查出车次的详细信息;第二个条件是,当只输入“发车站”和“终到站”时,系统会把所有满足条件的车次,查询出来;第三个条件是,当把“车次”,“发车站”和“终到站”全都输入时,会把满足条件的唯一的一条记录(车次是唯一的)查询出来。⑤系统管理模块:从系统管理功能上分析,需要实现对优惠信息的设置与维护,管理车站信息,对车次信息的维护,实现列车票额分配,车票预售期设置,对售出的车票数进行统计,记录已售出车票的信息,显示剩余车票数。设置本站名称和用户管理等功能。(3)软件结构图:图3.13.详细设计(1)软件数据结构的描述:车票=日期+价格+出发站+终点站+售票站+座号+车次+性质+编号日期=年+月+日+时+分价格=“1”~“9999”出发站=1{汉字}6终点站=1{汉字}6售票站=1{汉字}6座号=车厢号+座位号车次=“1”~“9999”性质=“1”~“6”注:如“1”表示空调硬座特快,“2”表示空调软座普快等编号=“000000001”~“999999999”(2)软件程序流程图:铁路售票系统售票1.0退票2.0改签换乘3.0确定车次信息1.2打印车票1.3输入退票信息2.1扣款返回退款额2.2返款2.3输入改签信息3.1确定车次信息3.2退款或收款3.3打印车票3.4输入出行信息1.1售票改签换乘退票退款收款图4.1开始选择事务类型输入出行信息输入要退车票信息输入改签换乘信息确定车次信息扣除手续费返回退款信息确定车次信息退款或收款打印车票返回退款信息返回收款信息打印车票停止退还现金(3)软件的主要算法:statuscreatelist_l(linklist&L)//生成链表的定义voiddataout_l(linklist&L)//打印火车票voidsearchlist_traindate(linklist&L,chare1[])//按火车出发日期查询voidsearchlist_trainnum(linklist&L,chare3[])//按班次查询statusdeletelist_l(linklistL,chark1[],chark2[])//售票功能statuslistcountnum_l(linklist&L)//票数功能statuslistticketprice_l(linklist&L,intcount)//按票价排票statuslisttrainnum_l(linklist&L,intcount)//按班次排票statusinsertlist_l(linklist&L,elemtypee)//退票功能4.程序源码#includestdio.h#includestdlib.h#includemalloc.h#includestring.h#defineOK1#defineERROR0#defineMAX_NUM10#defineMAX20#defineMAX15#defineNULL0typedefintstatus;structticket{longintticketnumber;//票号采用长整型chartrainnum[MAX_NUM];//车的班次charstartstation[MAX];//起始站chardestination[MAX];//终点站floatticketprice;//票价chartraindate[MAX];//火车出发日期}ticket[MAX1];typedefstructticketelemtype;typedefstructlnode//管理类型重定义{elemtypedata;structlnode*next;}*linklist,lnode;voidsave(){FILE*fp;inti;fp=fopen(C:\\ticketrecord.txt,w);if(fp==NULL){printf(\ncannotopenfile);exit(0);}for(i=0;i=MAX1-1;i++){if(fwrite(&ticket[i],sizeof(elemtype),1,fp)!=1)printf(\nfilewriteerror);}fclose(fp);}statuscreatelist_l(linklist&L)//生成链表的定义{inti;linklistp;FILE*fp;fp=fopen(C:\\ticketrecord.txt,r);if(fp==NULL){printf(\ncannotopenfile);exit(0);}L=(linklist)malloc(sizeof(lnode));//向内存申请一块占sizeof(lnode)字节的空间,并将这块空间的首地址交给L管理L-next=NULL;for(i=MAX1;i0;i--){p=(linklist)malloc(sizeof(lnode));if(fread(&p-data,sizeof(elemtype),1,fp)!=1)printf(\nfilereaderror);p-next=L-next;L-next=p;}fclose(fp);returnOK;}voiddataout_l(linklist&L)//打印火车票{linklistp;p=L-next;printf(\n票号\t班次\t起始站\t终点站\t票价\t火车出发日期:);while(p){printf(\n%ld\t%s\t%s\t%s\t%f\t%s,p-data.ticketnumber,p-data.trainnum,p-data.startstation,p-data.destination,p-data.ticketprice,p-data.traindate);printf(\n);p=p-next;}}voidsearchlist_traindate(linklist&L,chare1[])//按火车出发日期查询{linklistp;intcount=0;p=L-next;while(p){if(strcmp(p-data.traindate,e1)==0){count++;if(count==1)printf(\n票号\t班次\t起始站\t终点站\t票价\t火车出发日期\n:);printf(\n%ld
本文标题:铁路售票系统
链接地址:https://www.777doc.com/doc-1278705 .html