《面向过程程序设计实践》课题课件.docx
《《面向过程程序设计实践》课题课件.docx》由会员分享,可在线阅读,更多相关《《面向过程程序设计实践》课题课件.docx(29页珍藏版)》请在冰点文库上搜索。
《面向过程程序设计实践》课题课件
任务18
课题名称
某航空公司飞机购票模拟系统(服务器端)
课题内容
文件信息:
航线信息:
航线编码、起点、终点、公里数、飞行时间。
航班信息:
航班编号、航线编码、起飞时间、可售机票总数、票价、当前状态(准备、已出票、售完、已结束)。
售票信息:
航班编号、顾客ID、顾客姓名、购票时间(y-m-d-h-m-s)。
以顺序存储结构设计程序能实现以下航空公司服务器端功能:
(1)航线的维护(创建、修改、删除(不能删除已出票、售完航班))
(2)航班的维护(创建、修改、删除(不能删除已出票、售完航班))。
(3)显示航班列表。
(4)显示指定航班的售票情况(明细和统计值)。
(5)显示各航班的销售情况。
inthbId;
intuserId;
charuserName[NUMBER];
charbuytime[NUMBER];
任务19
课题名称
某航空公司飞机购票模拟系统(客户端)
课题内容
航班文件信息:
航线信息:
航线编码、起点、终点、公里数、飞行时间。
航班信息:
航班编号、航线编码、起飞时间、可售机票总数、票价、当前状态(准备、已出票、售完、已结束)。
售票信息:
航班编号、顾客ID、顾客姓名、购票时间(y-m-d-h-m-s)。
以链式存储结构设计程序能实现以下顾客端功能:
(1)搜索指定航线、指定时间段的航班
(2)购票
(3)退票
(4)输入顾客ID,显示顾客的购票信息
主菜单
/****************************************/
/*模块名称:
Menu.c功能描述:
实现菜单功能*/
#include"stdio.h"/*输入输出函数的头文件*/
#include"shoupiao.c"
#include"hangban.c"
#include"hangxian.c"
voidmenu();/*菜单*/
//航班
voidinit_hb(hbnum*hb);//初始化列表
voidcreate_hb(hbnum*hb);//从文件中加载数据
voidappend_hb(hbnum*hb,hbinfox);/*添加数据*/
voiddisplay_hb(hbnumhb);/*输出航班信息表*/
voiddisplay_xs(hbnumhb);/*输出航班销售信息表*/
hbinfosearch_hb(hbnumhb,intid);//根据id查找航班的售票情况
hbnumupdate_hb(hbnumhb,hbinfox);//根据id修改航班信息
voiddele_hb(hbnum*hb,intid);//删除航班信息
voidInsertSort_hb(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查找航班的售票情况
hxnumupdate_hx(hxnumhb,hxinfox);//根据id修改航线信息
voiddele_hx(hxnum*hx,intid);//删除航班信息
voidInsertSort_hx(hxnum*r);//排序
voidsave_hx(hxnum*hx);//将数据保存到文件中
//售票
voidinit_sp(spnum*sp);//初始化列表
voidcreate_sp(spnum*sp);//从文件中加载数据
voidappend_sp(spnum*sp,spinfox);/*添加数据*/
voiddisplay_sp(spnumsp);/*输出航班信息表*/
spinfosearch_sp(spnumsp,intid);//根据id查找航班的售票情况
voidsearch_mx(spnumsp,intid);
intsearch_tj(spnumsp,intid);
voiddele_sp(spnum*sp,intid);//删除航班信息
voidInsertSort_sp(spnum*r);//排序
voidsave_sp(spnum*sp);//将数据保存到文件中
/*主函数*/
main(){
hbnumhb;
hxnumhx;
spnumsp;
init_hb(&hb);//初始化航班表
create_hb(&hb);//创建航班表
init_hx(&hx);//初始航线表
create_hx(&hx);//创建航线表
init_sp(&sp);//初始化售票表
create_sp(&sp);//创建售票表
InsertSort_hb(&hb);//对航班表排序
InsertSort_hx(&hx);//对航线表排序
InsertSort_sp(&sp);//对售票表排序
menu();
save_hb(&hb);
save_hx(&hx);
save_sp(&sp);
}
/****************************************************/
/*函数定义函数名称:
menu功能描述:
实现主菜单功能的循环选择。
*/
voidmenu(){
intj;
hbnumhb;
hxnumhx;
spnumsp;
hbinfohb_up,hb_sea,hb_add;
hxinfohx_up,hx_sea,hx_add;
spinfosp_sea,sp_add;
intid,total;
printf("\n\n\n\n$---------------------------------$\n");
printf("|**welcome**|\n");
printf("^_^管理员能查看和查询的航空信息^_^\n");
printf("\n\n输入航班信息:
\n\n");
printf("1添加新的航班\n");
printf("2添加新的航线\n");
printf("3修改航班信息\n");
printf("4修改航线信息\n");
printf("5根据航班编号删除航班\n");
printf("6根据航班编号删除航班\n");
printf("7显示指定航班的售票情况(明细)\n");
printf("8显示指定航班的售票情况(统计值)\n");
printf("9显示各航班的销售情况\n");
printf("0返回菜单:
");
printf("请选择按键<0-6>:
");
scanf("%d",&j);
if(j!
=1&&j!
=0&&j!
=2&&j!
=3&&j!
=4&&j!
=5&&j!
=6&&j!
=7&&j!
=8&&j!
=9){
printf("您输入的选项不存在,请重新输入:
");menu();
}
else{
switch(j){
case1:
{
printf("\nInputahxdentinformation:
\n");
scanf("%d%d%s%d%s%s",&hb_add.hbId,&hb_add.hxId,&hb_add.qifei,&hb_add.emptytotal,&hb_add.price,&hb_add.state);
append_hb(&hb,hb_add);
display_hb(hb);menu();break;}
case2:
{printf("\nInputahxdentinformation:
\n");
scanf("%d%s%s%s%s",&hx_add.hxId,&hx_add.qidian,&hx_add.zhongdian,&hx_add.gongli,&hx_add.flytime);
append_hx(&hx,hx_add);
display_hx(hx);menu();break;}
case3:
{
printf("\nInputupdateid:
\n");
scanf("%d",&hb_up.hbId);
printf("\nInputupdatehx,qifeishijian,kongpiao,price,state:
\n");
scanf("%d%s%d%s%s",&hb_up.hxId,&hb_up.qifei,&hb_up.emptytotal,&hb_up.price,&hb_up.state);
hb=update_hb(hb,hb_up);
display_hb(hb);/*输出学生信息表*/
menu();break;}
case4:
{printf("\nInputupdateid:
\n");
scanf("%d",&hx_up.hxId);
printf("\nInputupdatehx,qifeishijian,kongpiao,price,state:
\n");
scanf("%d%s%s",&hx_up.qidian,&hx_up.zhongdian,&hx_up.gongli,&hx_up.flytime);
hx=update_hx(hx,hx_up);
display_hx(hx);/*输出学生信息表*/
menu();break;}
case5:
{
printf("\nInputayouwangdeletehangbanid:
");
scanf("%d",&id);
dele_hb(&hb,id);menu();break;}
case6:
{
printf("\nInputayouwangdeletehangbanid:
");
scanf("%d",&id);
dele_hb(&hb,id);menu();break;}
case7:
{
printf("\nInputahangbanid:
\n");
scanf("%d",&id);
search_mx(sp,id);menu();break;}
case8:
{
printf("\nInputahangbanid:
\n");
scanf("%d",&id);
total=search_tj(sp,id);
printf("%d\n",total);menu();break;}
case9:
{display_xs(hb);
menu();break;}
case0:
{menu();}
}
}
}
航班信息
#include
#include
#include
#defineMAXhbsize100
#defineNUMBER50
typedefstruct
{
inthbId;
inthxId;
charqifei[NUMBER];
intemptytotal;
charprice[NUMBER];
charstate[NUMBER];
}hbinfo;
typedefstruct
{
hbinfoa[MAXhbsize];
inthbsize;
}hbnum;
/*置一个空表*/
voidinit_hb(hbnum*hb)
{
hb->hbsize=0;
}
/*创建航班表并从文件读取*/
voidcreate_hb(hbnum*hb)
{
FILE*fp;
inti=0;
if((fp=fopen("hangban.txt","r"))==NULL)
{
printf("canhIdtopenfile!
");
exit(-1);
}
while(!
feof(fp))
{
fscanf(fp,"%d%d%s%d%s%s",&hb->a[i].hbId,&hb->a[i].hxId,&hb->a[i].qifei,&hb->a[i].emptytotal,&hb->a[i].price,&hb->a[i].state);
i++;
hb->hbsize++;
}
fclose(fp);
}
/*追加航班信息*/
voidappend_hb(hbnum*hb,hbinfox)
{
if(hb->hbsize==MAXhbsize){
printf("Thesequenceisfull!
");exit
(1);}
else{
hb->a[hb->hbsize]=x;
hb->hbsize++;
}
}
/*输出航班信息表*/
voiddisplay_hb(hbnumhb)
{
inti;
if(!
hb.hbsize){
printf("\nemptytable");}
else{
for(i=0;iprintf("%d,%d,%s,%d,%s,%s\n",hb.a[i].hbId,hb.a[i].hxId,hb.a[i].qifei,hb.a[i].emptytotal,hb.a[i].price,hb.a[i].state);
}
}
}
/*输出航班销售信息表*/
voiddisplay_xs(hbnumhb);
{
inti;
if(!
hb.hbsize){
printf("\nemptytable");}
else{
for(i=0;iprintf("航班编号,可售机票总数\n");
printf("%d,%d\n",hb.a[i].hbId,hb.a[i].emptytotal);
}
}
}
/*判断所查找学生是否在创建的学生表内*/
hbinfosearch_hb(hbnumhb,inthId)
{
inti=0;
while(i=hId){i++;}
returnhb.a[i];
}
/*根据id修改航班信息*/
hbnumupdate_hb(hbnumhb,hbinfox){
inti=0;
while(i=x.hbId){i++;}
hb.a[i]=x;
returnhb;
}
/*删除航班数据*/
voiddele_hb(hbnum*hb,intid)
{
inti=0,j;
if(hb->hbsize==0)
{
printf("\n顺序表是空的");
exit
(1);
}
while(ihbsize&&id!
=hb->a[i].hbId)
{
i++;
}
if(i<0||i>hb->hbsize){
printf("\n指定的删除位置不存在!
");exit
(1);
}else{
for(j=i;jhbsize-1;j++)
hb->a[j]=hb->a[j+1];
hb->hbsize--;
}
}
/*按学号进行顺序排序*/
voidInsertSort_hb(hbnum*r)
{
inti,j;
hbinfox;
for(i=1;i>r->hbsize;i++)/*待插入记录下标为1~r->len-1*/
{
x=r->a[i];
j=i-1;
while(j>=0&&x.hbIda[j].hbId)
{
r->a[j+1]=r->a[j];
j--;
}
r->a[j+1]=x;
}
}
/*保存数据到文件*/
voidsave_hb(hbnum*hb)
{
FILE*fp;
inti;
if((fp=fopen("hangban.txt","w"))==NULL)
{
printf("canhIdtopenfile!
");
exit(-1);
}
for(i=0;ihbsize;i++)
{
fprintf(fp,"%d%d%s%d%s%s\n",hb->a[i].hbId,hb->a[i].hxId,hb->a[i].qifei,hb->a[i].emptytotal,hb->a[i].price,hb->a[i].state);
}
fclose(fp);
}
//voidmain(){
//hbnumhb;
//hbinfoup,sea,add;
//intid;
///*创建一个包含航班编号、航线编码、起飞时间、可售机票总数、票价、当前状态(准备、已出票、售完、已结束)信息表并输出到屏幕,学生信息从recod.txt读取*/
//init(&hb);//初始化线性表
//create(&hb);//创建学生表
//printf("\nsourcelist:
\n");
///*对已建立的学生信息表按学号从小到大排序,并把结果写入到数据文件中(result.txt)*/
//InsertSort(&hb);
//display(hb);/*输出学生信息表*/
//printf("\nInputupdateid:
\n");
//scanf("%d",&up.hbId);
//printf("\nInputupdatehx,qifeishijian,kongpiao,price,state:
\n");
//scanf("%d%s%d%s%s",&up.hxId,&up.qifei,&up.emptytotal,&up.price,&up.state);
//hb=update(hb,up);
//display(hb);/*输出学生信息表*/
////根据id查询航班
//printf("\nInputahangbanid:
\n");
//scanf("%d",&id);
//sea=search(hb,id);
////对查找返回的数据进行判断,如果为空则提示没找到,否则输出数据
//if(sea.hbId==0){
//printf("nofound%d\n",id);
//}else{
//printf("%d,%d,%s,%d,%s,%s\n",sea.hbId,sea.hxId,sea.qifei,sea.emptytotal,sea.price,sea.state);}//将查找到的数据输出
///*从键盘输入航班的相关信息插入到已排序的信息表中*/
//printf("\nInputahbdentinformation:
\n");
//scanf("%d%d%s%d%s%s",&add.hbId,&add.hxId,&add.qifei,&add.emptytotal,&add.price,&add.state);
//append(&hb,add);
//display(hb);
//printf("\nInputayouwangdeletehangbanid:
");
//scanf("%d",&id);
//dele(&hb,id);
//printf("\nsave-baocun:
");
//save(&hb);
//getchar();
//}
航线信息
#include
#include
#include
#defineMAXhxsize100
#defineNUMBER50
typedefstruct
{
inthxId;
charqidian[NUMBER];
charzhongdian[NUMBER];
chargongli[NUMBER];
charflytime[NUMBER];
}hxinfo;
typedefstruct
{
hxinfoa[MAXhxsize];
inthxsize;
}hxnum;
/*置一个空表*/
voidinit_hx(hxnum*hx)
{
hx->hxsize=0;
}
/*创建航班表并从文件读取*/
voidcreate_hx(hxnum*hx)
{
FILE*fp;
inti=0;
if((fp=fopen("hangxian.txt","r"))==NULL)
{
printf("canhIdtopenfile!
");
exit(-1);
}
while(!
feof(fp))
{
fscanf(fp,"%d%s%s%s%s",&hx->a[i].hxId,&hx->a[i].qidian,&hx->a[i].zhongdian,&hx->a[i].gongli,&hx->a[i].flytime);
i++;
hx->hxsize++;
}
fclose(fp);
}
/*追加航班信息*/
voidappend_hx(hxnum*hx,hxinfox)
{
if(hx->hxsize==MAXhxsize){
printf("Thesequenceisfull!
");exit
(1);}
else{
hx->a[hx->hxsize]=x;
hx->hxsize++;
}
}
/*输出航班信息表*/
voiddisplay_hx(hxnumhx)
{
inti;
if(!
hx.hxsize){
printf("\nemptytable");}
else{
for(i=0;i