《《面向过程程序设计实践》课题课件.docx》由会员分享,可在线阅读,更多相关《《面向过程程序设计实践》课题课件.docx(31页珍藏版)》请在三一办公上搜索。
1、任务18课题名称某航空公司飞机购票模拟系统(服务器端)课题内容文件信息:航线信息:航线编码、起点、终点、公里数、飞行时间。航班信息:航班编号、航线编码、起飞时间、可售机票总数、票价、当前状态(准备、己出票、售完、已结束)。售票信息:航班编号、顾客ID、顾客姓名、购票时间(y-m-d-h-m-s)o以顺序存储结构设计程序能实现以下航空公司服务器端功能:(1)航线的维护(创建、修改、删除(不能删除己出票、售完航班)(2)航班的维护(创建、修改、删除(不能删除已出票、售完航班)。(3)显示航班列表。(4)显示指定航班的售票情况(明细和统计值)。(5)显示各航班的销售情况。inthbId;intuse
2、rid;charUserNameNUMBER;charbuytimeNUMBER;任务19课题名称某航空公司飞机购票模拟系统(客户端)课题内容航班文件信息:航线信息:航线编码、起点、终点、公里数、飞行时间。航班信息:航班编号、航线编码、起飞时间、可售机票总数、票价、当前状态(准备、已出票、售完、已结束)。售票信息:航班编号、顾客ID、顾客姓名、购票时间(y-m-d-h-m-s)o以链式存储结构设计程序能实现以下顾客端功能:(1)搜索指定航线、指定时间段的航班(2)购票(3)退票(4)输入顾客ID,显示顾客的购票信息主菜单/*模块名称:Menu.C功能描述:实现菜单功能*/#includestd
3、io.h7*输入输出函数的头文件*/includeshoupiao.c#includehangban.c#include,hangxian.cvoidmenu();*菜单*/航班voidinithb(hbnum*hb);/初始化列表voidcreatehb(hbnum*hb);从文件中加载数据voidappendhb(hbnum*hb,hbinfox);/*添加数据*/voiddisplayhb(hbnumhb);/*输出航班信息表*/voiddisplay_xs(hbnumhb);/*输出航班销倍信息表*/hbinfosearchhb(hbnumhb,intid);根据id查找航班的售票情况
4、hbnumupdatehb(hbnurnhb,hbinfox);根据id修改航班信息voiddeIehb(hbnum*hb,intid);删除航班信息voidInsertSorthb(hbnum*r);排序voidsave_hb(hbnum*hb);将数据保存到文件中航线voidinit_hx(hxnum*hx);初始化列表voidcreate_hx(hxnum*hx);从文件中加载数据voidappend_hx(hxnum*hx,hxinfox);/*添加数据*/voiddisplay_hx(hxnumhx);*输出航班信息表*/hxinfosearch_hx(hxnumhx,intid);
5、根据id查找航班的售票情况hxnumUpdatehx(hxnumhb,hxinfox);根据id修改航线信息voiddelehx(hxnum*hx,intid);删除航班信息voidInsertSorthx(hxnum*r);排序voidsavehx(hxnum*hx);将数据保存到文件中售票voidinitsp(spnum*sp);/初始化列表voidcreate_sp(spnum*sp);从文件中加载数据voidappendsp(spnum*sp,spinfox);/*添加数据*/voiddisplaysp(spnumsp);/*输出航班信息表*/spinfosearchsp(spnums
6、p,intid);根据id查找航班的售票情况voidsearchmx(spnumsp,intid);intsearchtj(spnumsp,intid);voiddele_sp(spnum*sp,intid);/删除航班信息voidInsertSort_sp(spnum*r);排序voidSaVe一SP(SPnUm*sp);将数据保存到文件中/*主函数*/main()hbnumhb;hxnumhx;spnumsp;init_hb(&hb);初始化航班表createhb(&hb);创建航班表init_hx(&hx);初始航线表Create_hx(&hx);创建航线表inits(fes);初始化售
7、票表CreateSP(&sp);创建售票表InsertSorthb(&hb);对航班表排序InsertSorthx(&hx);对航线表排序InsertSortsp(&sp);对售票表排序menu();savehb(&hb);savehx(&hx);savesp(&sp);/*函数定义函数名称:menu功能描述:实现主菜单功能的循环选择。*/voidmenu)intj;hbnumhb;hxnumhx;spnumsp;hbinfohb_up,hb_sea,hbadd;hxinfohx_up,hx_sea,hxadd;spinfosp_sea,sp_add;intid,total;rintf(nnn
8、n$n);printfCI*welcome*In);Printf(_-管理员能查看和查询的航空信息?n);printf(,11n输入航班信息:nn);Printf(1添加新的航班n);Printf(2添加新的航线n);Printf(3修改航班信息n);Printf(4修改航线信息n);printfr5根据航班编号删除航班n);printfr6根据航班编号删除航班n);Printf(7显示指定航班的售票情况(明细)、n);printf8显示指定航班的售票情况(统计值)n);printf9显示各航班的销售情况n);PrintfrO返回菜单:);Printf(请选择按键:);scanf(,&j);i
9、f(j!=l&j!=0&j!=2&J!=3&J!=4&j!=5&j!=6&j!=7&j!=8&j!=9)Printf(您输入的选项不存在,请重新输入:);menu0;elseswitch(j)Printf(nlnputahxdentinformation:n);SCanf(%d%d%s%d%s%s,hbadd.hbld,&hbadd.hxld,&hb_add.qifei,&hb_add.emptytotal,&hb_add.price,&hb_add.state);appendhb(&hb,hbadd);displayhb(hb);menu();break;case2:Printf(nlnpu
10、tahxdentinformation:n);SCanf(%d%s%s%s%s,&hx_add.hxld,&hxadd.qidian,&hx_add.zhongdian,&hx_add.gongli,&hx_add.fIytime);appendhx(&hx,hxadd);displayhx(hx);menu();break;case3:Printf(nlnputupdateid:n);SCanf(%d,&hbuphbld);printf(*nlnputupdatehx,qifeishijian,kongpiao,price,state:n);SCanf(%d%s%d%s%s,&hb_up.h
11、xld,&hb_up.qifei,&hb_up.emptytotal,&hb_up.price,&hb_up.state);hb=update_hb(hb,hbup);display_hb(hb);/*输出学生信息表*/menu();break;case4:Printf(nlnputupdateid:n);SCanf(i,&hxup.hxld);printf(*nlnputupdatehx,qifeishijian,kongpiao,price,state:n);SCanf(%d%s%s,&hx_up.qidian,&hx_up.zhongdian,&hxup.gongli,&hxup.fly
12、time);hx=update_hx(hx,hxup);displayhx(hx);/*输出学生信息表*/menu();break:case5:printf(wnInputayouwangdeletehangbanid:);SCanf(%d,&id);delehb(&hb,id);menu();break;case6:printf(,11Inputayouwangdeletehangbanid:);SCanf(,&id);delehb(&hb,id);menu();break;case7:Printf(nlnputahangbanid:n);SCanf(%d,&id);searchmx(sp,
13、id);menu();break;case8:printf(,11Inputahangbanid:n);SCanf(%d,&id);menu () ; break;total=searchtj(sp,id)printf(ff%dntotal);case9:display_xs(hb);menu();break;case0:menu();航班信息#include#includestdlib.h#include#defineMAXhbsize100#defineNUMBER50typedefstructinthbld:inthxld;charqifeiNUMBER;intemptytotal;ch
14、arpriceNUMBER;charstatNUMBER;hbinfo;typedefstructhbinfoaMAXhbsize;inthbsize;hbnum;/*置一个空表*/voidinithb(hbnum*hb)hbhbsize=0;/*创建航班表并从文件读取*/voidcreatehb(hbnum*hb)FILE*fp;inti=0;if(fp=fopen(hangban.txt,r)=NULL)printf(,zcanhldtopenfile!);exit(T);while(!feof(fp)fscanf(i%d%d%s%d%s%s,&hb-ai.hbld,&hb-ai.hxld
15、,&hb-ai.qifeij&hb-ai.emplytotal,hb-ai.price,fehb-ai.state);i+十;hb-hbsize+;fclose(fp):/*追加航班信息*/voidappendhb(hbnum*hb,hbinfox)if(hb-hbsize=MAXhbsize)printf(Thesequenceisful1!);exit;elsehb-ahbhbsize=x;hb-hbsize+;/*输出航班信息表*/voiddisplayhb(hbnumhb)inti;if(!hb.hbsize)printfC1111ptytable);elsefor(i=0;ihb.h
16、bsize;i+)printf(%d,%d,%s,%d,%s,%sn,hb.ai.hbld,hb.ai.hxld,hb.ai.qifei,hb.ai.emptytotal,hb.ai.price,hb.ai.state);/*输出航班销售信息表*/voiddisplayxs(hbnumhb);inti;if(!hb.hbsize)printf(wnemptytable);elsefor(i=0;ihb.hbsize;i+)Printf(航班编号,可售机票总数n);printf(%d,%dr,hb.ai.hbld,hb.ai.emptytotal);/*判断所查找学生是否在创建的学生表内*/hb
17、infosearchhb(hbnumhb,inthid)inti=0;while(ihb.hbsize&hb.ai.hbld!=hld)i+;returnhb.ai;/*根据id修改航班信息*/hbnumupdatehb(hbnumhb,hbinfox)inti=0;while(ihbsize=0)Printf(n顺序表是空的);exit(1):while(ihbsize&id!=hb-ai.hbld)i+;if(ihb-hbsize)printfC,11指定的删除位置不存在!);exit(1);elsefor(j=i;jhbsize-1;j+)hb-aj=hb-aj+1;hb-hbsize;
18、/*按学号进行顺序排序*/voidInsertSorthb(hbnum*r)i11ti,j;hbinfox;for(i=1;ir-hbsize;i+)*待插入记录下标为1r-le11-l*/x=rai;j=i-1;while(j=O&x.hbldaj.hbld)r-aj+L=r-aj;r-aj十1=x;/*保存数据到文件*/voidsave_hb(hbnum*hb)FILE*Ip;inti;if(fp=fopen(hangban.txt,w)=NULL)Printf(canhldtopenfile!);exit(T);for(i=0;ihbsize;i+)fprintf(fp,%d%d%s%d
19、%s%sn,hbai.hbld,hb-ai.hxld,hbai.qifei,hb-ai.emptytotal,hbai.price,hb-ai.state);fclose(fp):/voidmain()/hbnumhb;/hbinfoup,sea,add;/intid;/佯创建一个包含航班编号、航线编码、起飞时间、可售机票总数、票价、当前状态(准备、已出票、售完、已结束)信息表并输出到屏幕,学生信息从recod.txt读取*/init(&hb);初始化线性表/Create(&hb);创建学生表/printf(w11sourceIiSt:n);/*对已建立的学生信息表按学号从小到大排序,并把结果
20、写入到数据文件中(result,txt)*/InsertSort(&hb);/display(hb);/*输出学生信息表*/Printf(nlnputupdateid:n);/SCanf(%d,&up.hbld):/printf(z,nlnputupdatehx,qifeishijian,kongpiao,price,state:n);/SCanf(%d%s%d%s%s,&up.hxld,&up.qifei,&up.emptytotal,&up.price,&up.state);/hb=update(hb,up);/display(hb);/*输出学生信息表*/根据id查询航班/printf(
21、,nlnputahangbanid:n);/SCanf(%d,&id);/sea=search(hb,id);/对查找返回的数据进行判断,如果为空则提示没找到,否则输出数据/if(sea.hbld-)/printf(,nofound%dn,id);/else/Printf(%d,%d,%s,%d,%s,%sn,sea.hbld,sea.hxld,sea.qifei,sea.emptytotal,sea.price,sea.state);将查找到的数据输出/*从键盘输入航班的相关信息插入到己排序的信息表中*/Printf(nlnputahbdentinformation:n);/SCanf(%d
22、%d%s%d%s%s,&add.hbld,&add.hxld,&add.qifei,&add.emptytotal,&add.price,&add.state);/append(&hb,add);/display(hb);/Printf(nInputayouwangdeletehangbanid:);/SCanf(%d,&id);/dele(&hb,id);/printf(,11save-baocun:);/save(&hb);/getchar();航线信息#includestdio.h#include#includestring.h#defineMAXhxsize100#defineNUMB
23、ER50typedefstructinthxld;charqidianNUMBER;charzhongdianNUMBER;chargongliNUMBER;charflytimeNUMBER;hxinfo;typedefstructhxinfoaMAXhxsize;inthxsize;hxnum;/*置一个空表*/voidinithx(hxnum*hx)h-hxsize=0;/*创建航班表并从文件读取*/voidcreatehx(hxnum*hx)FILE*fp;inti-0;if(fp=fopen(hangxian.txt,r)=NULL)printf(wcanhldtopenfile!)
24、;exit(T);while(!feof(fp)fscanf(fp,%d%s%s%s%s,&hx-ai.hxld,&hx-ai.qidian,&hx-ai.zhongdian,&hx-ai.gongli,&hx-ai.flytime);i+十;h-hxsize+;fclose(fp);/*追加航班信息*/voidappendhx(hxnum*hx,hxinfox)if(h-hxsize=MAXhxsize)printf(,Thesequenceisfull!,);exit(1);elseh-ah-hxsize=x;h-hxsize+;/*输出航班信息表*/voiddisplayhx(hxnum
25、hx)inti;if(!hx.hxsize)printf(wnemptytable);elsefor(i-0;ihx,hxsize;i+)Printf(%d,%sjs,%s,%sn,hx.ai.hxld,hx.ai.qidian,hx.ai.zhongdian,hx.ai.gongli,hx.ai.flytime);/*判断所查找学生是否在创建的学生表内*/hxinfosearchhx(hxnumhx,inthid)inti=0;while(ihx.hxsize&hx.ai.hxld!=hld)i+;returnhx.ai;/*根据id修改航班信息*/hxnumupdatehx(hxnumhx
26、,hxinfox)inti=0;while(ihxsize=0)Printf(n顺序表是空的);exit(1):Whiie(ihxsize&id!-h-ai.hxld)i+十;if(ih-hxsize)printf(11指定的删除位置不存在!);exit(l);elsefor(j=i;jhxsize-1;j+)h-aj=h-aj十1:h-hxsize;/*按学号进行顺序排序*/voidInsertSorthx(hxnum*r)inti,j;hxinfox;for(i=1;ir-hxsize;i+)*待插入记录下标为1r-le11-l*/X-Lai;ji-1;while(j=0&x.hxldaj
27、.hxld)r-aj+1=r-aj;j;r-aj+1=x;/*保存数据到文件*/voidsavehx(hxnum*hx)FILE*fp;inti;if(fp=fopen(hangxian.txt,w)=NULL)printf(wcanhldtopenfile!);exit(T);for(i=0;ihxsize;i+)fprintf(fp,%d%s%s%s%sn,h-ai.hxld,h-ai.qidian,hx-ai.zhongdian,hx-ai.gongli,hx-ai.fIytime);fclose(fp);/voidmain()/hxnumhx;/hxinfoadd,sea,up:/in
28、tid;/*创建一个包含航线编码、起点、终点、公里数、飞行时间信息表并输出到屏幕,学生信息从recod.txt读取*/init(&hx);初始化线性表/Create(&hx);创建学生表/printfC11ourcelist:r);/*对已建立的学生信息表按学号从小到大排序,并把结果写入到数据文件中(result,txt)*/InsertSort(&hx);/display(hx);/*输出学生信息表*/Printf(nlnputupdateid:n);/SCanf(%d,&up.hxld);/Printf(nlnputupdateqidian,zhongdian,gongli,feixing
29、shijan:n);/SCanf(%s%s%s%s,&up.qidian,&up.zhongdian,&up.gongli,&up.flytime);/hx=update(hx,up);/display(hx);/*输出学生信息表*/根据id查询航班/Printf(nlnputahangbanid:n);/SCanf(%d,&id);/add=search(hx,id);对查找返回的数据进行判断,如果为空则提示没找到,否则输出数据/if(add.hxld)/Printl(nofound%dn,id);/else/Printf(%d,%s,%s,%s,%sn,add.hxld,add.qidia
30、n,add.zhongdian,add.gongli,add.flytime);将查找到的数据输出/*从键盘输入航班的相关信息插入到已排序的信息表中*/printf(wnlnputahxdentinformation:n);/SCanf(%d%s%s%s%s,&sea.hxld,&sea.qidian,&sea.zhongdian,&sea.gongli,&sea.flytime);/append(&hx,sea);/display(hx);/printf(,nInputayouwangdeletehangxianid:);/SCanf(%d,&id);/dele(&hx,id);/print
31、f(w11save-baocun:);/save(&hx);售票信息ttinclude#includestdlib.h#includestring.h#defineMAXspsize100#defineNUMBER50typedefstructinthbld:intuserid;charUSerNaneNUMBER;charbuytimeNUMBER;spinfo;typedefstructspinfoaMAXspsize;intspsize:spnum;/*置一个空表*/voidinit_sp(spnum*sp)sp-spsize-1;/*创建航班表并从文件读取*/voidcreate_sp
32、(spnum*sp)FILE*fp;inti=O;if(fp=fopen(shoupiao.txt,r)=NULL)printf(,zcanhldtopenfile!);exit(T);while(!feof(fp)fscanf(fp,%d%d%s%s,&sp-ai.hbld,&sp-ai.userid,&sp-ai.userName,&sp-ai.buytime);i+;sp-spsize+;fclose(fp):/*追加航班信息*/voidappendsp(spnum*sp,spinfox)if(SP-Xpsize=MAXspsize)printf(wThesequenceisfull!)
33、;exit;elsesp-asp-spsize=x;sp-spsize+;佯输出航班信息表*/voiddisplaysp(spnumsp)inti;if(!sp.spsize)printf(wnemptytable);elsefor(i=0;isp.spsize:i+)printf(%d,%d,%s,%sn,sp.ai.hbld,sp.ai.userid,sp.ai.userName,sp.ai.buytime);/*判断所查找学生是否在创建的学生表内*/spinfosearchsp(spnumsp,inthid)inti=0;while(isp.spsize&sp.ai.hbld!=hld)
34、i+;returnsp.ai;显示指定航班的售票情况(明细)voidsearchmx(spnumsp,intid)inti=0;while(isp.spsize&sp.ai.hbld!=id)Printf(%d,%d,%s,%sn,sp.ai.hbld,sp.ai.userid,sp.ai.userName,sp.ai.buytime);i+:/显示指定航班的售票情况(统计)intsearch_tj(spnumsp,intid)inti=0,j=0;while(ispsize=0)Printf(n顺序表是空的);exit;Whiie(ispsize&id!=spai.hbld)i+;if(is
35、p-spsize)printf(wn指定的删除位置不存在!);elsefor(j=i;jspsize-1;j+十)sp-aj=s-aJ十1;sp-spsize一;/*按学号进行顺序排序*/voidInsertSortsp(spnum*r)inti,j;spinfox;for(i=1;ir-spsize;i+)/*待插入记录下标为1r-le11-l*/X=r-ai;j=i-1;while(j=O&x.hbldaj.hbld)r-aj+I=r-alj;j一;r-aj+1=x;/*保存数据到文件*/voidsavesp(spnum*sp)FILE*p;inti;if(fp=fopen(shoupia
36、o.txt,w)=NULL)printf(wcanhldtopenfile!);exit(T);for(i-0;ispsize;i+)fprintf(fp,%d%d%s%sn,sp-ai.hbld,sp-ai.userid,sp-ai.userName,sp-ai.buytime);fclose(fp);/voidmain()/spnumsp;/spinfox,h;/intid;/*创建一个包含学号,姓名,性别,出生年月日,地址,电话,E-mail信息表并输出到屏幕,学生信息从recod.txt读取*/init(&sp);初始化线性表/Create(&sp);创建学生表/Printf(nsou
37、rcelist:rz);/*对已建立的学生信息表按学号从小到大排序,并把结果写入到数据文件中(result,txt)*/InsertSort(&sp);/display(sp);/*输出学生信息表*/根据id查询航班/Printf(nlnputahangbanid:n);/SCanf(%d,&id);/x=search(spfid);对查找返回的数据进行判断,如果为空则提示没找到,否则输出数据/if(x.hbld=)/Printf(nofound%dn,id);/else/Printf(%d,%d,%s,%sn,x.hbld,x.userid,x.userName,x.buytime);将查找到的数据输出/*从键盘输入航班的相关信息插入到己排序的信息表中*/printf(wnlnputaspdentinformation:n);/SCanf(%d%d%s%s,&h.hbld,&h.userid,&h.userName,&h.buytime);/append(&sp,h);/display(sp);/printf(,z11Inputayouwangdeletehangbanid:);/SCanf(%d,&id);/dele(&sp,id);/printf(,11save-baocun:);/save(&sp);/getchar();