《面向过程程序设计实践》课题课件.docx
任务18课题名称某航空公司飞机购票模拟系统(服务器端)课题内容文件信息:航线信息:航线编码、起点、终点、公里数、飞行时间。航班信息:航班编号、航线编码、起飞时间、可售机票总数、票价、当前状态(准备、己出票、售完、已结束)。售票信息:航班编号、顾客ID、顾客姓名、购票时间(y-m-d-h-m-s)o以顺序存储结构设计程序能实现以下航空公司服务器端功能:(1)航线的维护(创建、修改、删除(不能删除己出票、售完航班)(2)航班的维护(创建、修改、删除(不能删除已出票、售完航班)。(3)显示航班列表。(4)显示指定航班的售票情况(明细和统计值)。(5)显示各航班的销售情况。inthbId;intuserid;charUserNameNUMBER;charbuytimeNUMBER;任务19课题名称某航空公司飞机购票模拟系统(客户端)课题内容航班文件信息:航线信息:航线编码、起点、终点、公里数、飞行时间。航班信息:航班编号、航线编码、起飞时间、可售机票总数、票价、当前状态(准备、已出票、售完、已结束)。售票信息:航班编号、顾客ID、顾客姓名、购票时间(y-m-d-h-m-s)o以链式存储结构设计程序能实现以下顾客端功能:(1)搜索指定航线、指定时间段的航班(2)购票(3)退票(4)输入顾客ID,显示顾客的购票信息主菜单/*模块名称:Menu.C功能描述:实现菜单功能*/#include"stdio.h7*输入输出函数的头文件*/include"shoupiao.c"#include"hangban.c"#include,hangxian.c"voidmenu();*菜单*/"航班voidinithb(hbnum*hb);/初始化列表voidcreatehb(hbnum*hb);从文件中加载数据voidappendhb(hbnum*hb,hbinfox);/*添加数据*/voiddisplayhb(hbnumhb);/*输出航班信息表*/voiddisplay_xs(hbnumhb);/*输出航班销倍信息表*/hbinfosearchhb(hbnumhb,intid);根据id查找航班的售票情况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);根据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(spnumsp,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);"初始化售票表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("nnnn$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("请选择按键<0-6>:");scanf(",&j);if(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("nlnputahxdentinformation: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.hxld,&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.flytime);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,id);menu();break;case8:printf(,11Inputahangbanid:n");SCanf("%d",&id);menu () ; break;total=searchtj(sp,id)printf(ff%dn'total);case9:display_xs(hb);menu();break;case0:menu();航班信息#include<stdio.h>#includestdlib.h>#include<string.h>#defineMAXhbsize100#defineNUMBER50typedefstructinthbld:inthxld;charqifeiNUMBER;intemptytotal;charpriceNUMBER;charstatNUMBER;hbinfo;typedefstructhbinfoaMAXhbsize;inthbsize;hbnum;/*置一个空表*/voidinithb(hbnum*hb)hb>hbsize=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,&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->ahb>hbsize=x;hb->hbsize+;/*输出航班信息表*/voiddisplayhb(hbnumhb)inti;if(!hb.hbsize)printfC'1111ptytable");elsefor(i=0;i<hb.hbsize;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;i<hb.hbsize;i+)Printf("航班编号,可售机票总数n");printf("%d,%dr,hb.ai.hbld,hb.ai.emptytotal);/*判断所查找学生是否在创建的学生表内*/hbinfosearchhb(hbnumhb,inthid)inti=0;while(i<hb.hbsize&&hb.ai.hbld!=hld)i+;returnhb.ai;/*根据id修改航班信息*/hbnumupdatehb(hbnumhb,hbinfox)inti=0;while(i<hb.hbsize&&hb.ai.hbld!=x.hbld)i+;hb.ai=x;returnhb;/*删除航班数据*/voiddele_hb(hbnum*hb,intid)inti=0,j;if(hb->hbsize=0)Printf("n顺序表是空的");exit(1):while(i<hb->hbsize&&id!=hb->ai.hbld)i+;if(i<0Ii>hb->hbsize)printfC,11指定的删除位置不存在!");exit(1);elsefor(j=i;j<hb->hbsize-1;j+)hb->aj=hb->aj+1;hb->hbsize;/*按学号进行顺序排序*/voidInsertSorthb(hbnum*r)i11ti,j;hbinfox;for(i=1;i>r->hbsize;i+)*待插入记录下标为1r->le11-l*/x=r>ai;j=i-1;while(j>=O&&x.hbld<r->aj.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;i<hb->hbsize;i+)fprintf(fp,"%d%d%s%d%s%sn",hb>ai.hbld,hb->ai.hxld,hb>ai.qifei,hb->ai.emptytotal,hb>ai.price,hb->ai.state);fclose(fp):/voidmain()/hbnumhb;/hbinfoup,sea,add;/intid;/佯创建一个包含航班编号、航线编码、起飞时间、可售机票总数、票价、当前状态(准备、已出票、售完、已结束)信息表并输出到屏幕,学生信息从recod.txt读取*/init(&hb);"初始化线性表/Create(&hb);创建学生表/printf(w11sourceIiSt:n");/*对已建立的学生信息表按学号从小到大排序,并把结果写入到数据文件中(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(,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%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<stdlib.h>#includestring.h>#defineMAXhxsize100#defineNUMBER50typedefstructinthxld;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!");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(hxnumhx)inti;if(!hx.hxsize)printf(wnemptytable");elsefor(i-0;i<hx,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(i<hx.hxsize&&hx.ai.hxld!=hld)i+;returnhx.ai;/*根据id修改航班信息*/hxnumupdatehx(hxnumhx,hxinfox)inti=0;while(i<hx.hxsize&&hx.ai.hxld!=x.hxld)i+;hx.ai=x;returnhx;/*删除航线数据*/voiddelehx(hxnum*hx,intid)inti=0,j;if(h->hxsize=0)Printf("n顺序表是空的");exit(1):Whiie(i<h->hxsize&&id!-h->ai.hxld)i+十;if(i<0Ii>h->hxsize)printf(11指定的删除位置不存在!");exit(l);elsefor(j=i;j<h->hxsize-1;j+)h->aj=h->aj十1:h->hxsize;/*按学号进行顺序排序*/voidInsertSorthx(hxnum*r)inti,j;hxinfox;for(i=1;i>r->hxsize;i+)*待插入记录下标为1'r->le11-l*/X-L>ai;ji-1;while(j>=0&&x.hxld<r->aj.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;i<h->hxsize;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:/intid;/*创建一个包含航线编码、起点、终点、公里数、飞行时间信息表并输出到屏幕,学生信息从recod.txt读取*/init(&hx);"初始化线性表/Create(&hx);创建学生表/printfC'11ourcelist:r);/*对已建立的学生信息表按学号从小到大排序,并把结果写入到数据文件中(result,txt)*/InsertSort(&hx);/display(hx);/*输出学生信息表*/Printf("nlnputupdateid:n");/SCanf("%d",&up.hxld);/Printf("nlnputupdateqidian,zhongdian,gongli,feixingshijan: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.qidian,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);/printf(w11save-baocun:");/save(&hx);售票信息ttinclude<stdio.h>#includestdlib.h>#includestring.h>#defineMAXspsize100#defineNUMBER50typedefstructinthbld:intuserid;charUSerNaneNUMBER;charbuytimeNUMBER;spinfo;typedefstructspinfoaMAXspsize;intspsize:spnum;/*置一个空表*/voidinit_sp(spnum*sp)sp->spsize-1;/*创建航班表并从文件读取*/voidcreate_sp(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!");exit;elsesp->asp->spsize=x;sp->spsize+;佯输出航班信息表*/voiddisplaysp(spnumsp)inti;if(!sp.spsize)printf(wnemptytable");elsefor(i=0;i<sp.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(i<sp.spsize&&sp.ai.hbld!=hld)i+;returnsp.ai;"显示指定航班的售票情况(明细)voidsearchmx(spnumsp,intid)inti=0;while(i<sp.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(i<sp.spsize&&sp.ai.hbld!=id)i+:returnJ;/*删除航班数据*/voiddelesp(spnum*sp,intid)i11ti=0,j;if(sp->spsize=0)Printf("n顺序表是空的");exit;Whiie(i<sp->spsize&&id!=sp>ai.hbld)i+;if(i<0Ii>sp->spsize)printf(wn指定的删除位置不存在!");elsefor(j=i;j<sp->spsize-1;j+十)sp->aj=s->aJ十1;sp->spsize一;/*按学号进行顺序排序*/voidInsertSortsp(spnum*r)inti,j;spinfox;for(i=1;i>r->spsize;i+)/*待插入记录下标为1r->le11-l*/X=r->ai;j=i-1;while(j>=O&&x.hbld<r>aj.hbld)r->aj+I=r->alj;j一;r->aj+1=x;/*保存数据到文件*/voidsavesp(spnum*sp)FILE*p;inti;if(fp=fopen("shoupiao.txt","w")=NULL)printf(wcanhldtopenfile!");exit(T);for(i-0;i<sp->spsize;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("nsourcelist: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();