民航订票二级课程设计报告.docx
《民航订票二级课程设计报告.docx》由会员分享,可在线阅读,更多相关《民航订票二级课程设计报告.docx(35页珍藏版)》请在冰豆网上搜索。
![民航订票二级课程设计报告.docx](https://file1.bdocx.com/fileroot1/2022-11/25/de51f09e-1ad0-467e-bec3-4814d23cb1f8/de51f09e-1ad0-467e-bec3-4814d23cb1f81.gif)
民航订票二级课程设计报告
石家庄铁道大学课程设计
课程设计题目
单位电气与电子工程分院(系)
专业电气
学号20122504
学生姓名何英杰
指导教师刘立嘉
完成日期2013年7月10日
摘要
在进行程序的设计过程中,必须使用一种计算机作为工具,可供选择的语言中,C语言功能丰富、表达能力强、应用范围广、可直性好,既具有高级语言的优点,又具有低级语言的许多特点,适合编写系统软件,又可方便的用来编写应用软件。
我正是利用C语言的诸多优点来完成民航订票系统的程序编写。
系统设计主要围绕全局变量,系统模块,流程图,函数意义的详细介绍而展开。
最后对民航管理系统进行了实现,并作了详细描述,主要采用注释与代码结合的方式详细地叙述了系统功能实现的过程。
此次课程设计不仅是我对C语言有了更进一步的了解,也增强了自己的动手编程的能力。
关键词:
C语言、民航订票系统
第1章选题的意义
1.1民航,即民用航空,是指使用各类航空器从事除了军事性质(包括国防、警察和海关)以外的所有的航空活动称为民用航空。
20世纪50年代以来,民用航空的服务范围不断扩大,成为一个国家的重要经济部门。
此次民航订票系统课程设计,运用相关函数调用将基本的功能实现,在设计中的指针、结构体变量等知识的联系,是我进一步的掌握了这些功能的用法。
1.2在课程设计过程中,遇到了许多的问题,不得不去查阅资料并且调试来解决,问题解决的同时也是我掌握了更多的相关知识,课外扩展了许多函数的用法和意义。
1.3在设计中,深深体会到了实践的意义,所学知识不能与实际操作更好地结合是学习的弊病,学以致用才是最终的目标。
这次课程设计的实际操作,发现了自己的知识漏洞,进一步完善自己所学的C语言知识,也在一定程度上提高了自己的编程能力。
第2章系统功能需求分析
2.1系统的基本要求
1.航班信息录入功能。
航班信息用文件保存。
2.航班信息的维护功能。
航班信息增加、删除、修改功能。
3.浏览航班信息功能。
4.航班信息查询功能。
根据航班号、终点站、飞行时间等条件查询。
5.订票功能。
对订票信息应该存储在一个数组或链表中,每次进行订票时应该先统计该天该航班的已定人数,如果超过成员定额,则不能订票。
6.统计每个航班某一天的已售(订)出座位数、剩余座位数。
第3章系统设计
charFlightID[10];
charRouteStart[20];/*起点*/
charRouteEnd[20];/*终点*/
charDeparturesTime[20];/*起航时间*/
charArrivalsTime[20];/*抵达时间*/
intLoadlimit;/*载客额定*/
structFlightInfo*next;
intaddFlightInfo();/*航班信息的增加*/
intmenu();/*主菜单*/
voidInputFlightInfo();/*航班信息的录入*/
voidFlightInfoMaintain();/*航班新的维护*/
intMaintainMenu();/*航班信息维护菜单*/
voidDeleteFlight();/*航班信息的删除*/
intReadFlightInfoFile(FlightInfo*flight);
voidSaveFile(FlightInfo*flight);
voidUpdataInfo();
voidGetFile();/*航班信息的浏览*/
intQueryMenu();/*航班信息的查询菜单*/
voidQueryInfo(char*pValue,inttag);
voidFlightQuery();
intBooking();/*订票*/
intReadBookingInfo(char*flightID,char*flightDate,inttotal,char*returnVal);
voidStatistics();/*统计*/
系统模块
1.主函数
在主函数内部对被调函数进行声明,并且调用menu函数。
2.菜单
在菜单函数中,显示并且选择各下级功能。
3.信息的录入功能
利用循环结构,在屏幕上分别输入航班的相关信息,并且将输入的信息分别存储在结构体变量str[10],在操作者修改信息后,替换源信息,中心存储在文件flightInfo中,并选择下一步。
4.信息的维护功能
进入此功能后,通过输入相关航班信息从flightInfo文件中查找原信息,在修改信息后,替换并重新保存在flightInfo文件中,并选择下一步。
5.信息的浏览功能
信息的浏览:
全部浏览——打开文件flightInfo,输出所有航班信息并选择下一步。
6.信息的查询功能
进入查询功能菜单界面,选择查询方式,输入班次,起航时间等信息后,打开flightInfo文件,查找并显示航班信息,并选择下一步。
7.订票功能
进入订票界面,根据提示输入航班、日期、名字等相关信息,打开flightInfo文件,查找信息,显示订票成功,并显示余票。
订票者的相关信息与所定的航班信息将记录在bookingInfo.txt中,并选择下一步。
8.统计功能
统计每个航班的售票与余票情况。
主要框架:
航班信息的维护:
航班信息的查询:
第4章系统实现(程序代码)
#include/*标准输入输出函数库*/
#include/*标准函数库*/
#include/*字符串函数库*/
#include
typedefstructFlightInfo
{
charFlightID[10];
charRouteStart[20];/*起点*/
charRouteEnd[20];/*终点*/
charDeparturesTime[20];/*起航时间*/
charArrivalsTime[20];/*抵达时间*/
intLoadlimit;/*载客额定*/
structFlightInfo*next;
}FlightInfo;
intaddFlightInfo();/*航班信息的增加*/
intmenu();/*主菜单*/
voidInputFlightInfo();/*航班信息的录入*/
voidFlightInfoMaintain();/*航班新的维护*/
intMaintainMenu();/*航班信息维护菜单*/
voidDeleteFlight();/*航班信息的删除*/
intReadFlightInfoFile(FlightInfo*flight);
voidSaveFile(FlightInfo*flight);
voidUpdataInfo();
voidGetFile();/*航班信息的浏览*/
intQueryMenu();/*航班信息的查询菜单*/
voidQueryInfo(char*pValue,inttag);
voidFlightQuery();
intBooking();/*订票*/
intReadBookingInfo(char*flightID,char*flightDate,inttotal,char*returnVal);
voidStatistics();/*统计*/
intaddFlightInfo()
{
FlightInfoflight;
charstr[10],flightInfo[10];
inttotal=0;
FILE*fp=NULL;
printf("请输入航班信息:
(航班号、固定航线(起始站和终点站)、飞行时间(起飞时间和到达时间)和载客定额)\n");
printf("航班号:
");
memset(flight.FlightID,0,10);
scanf("%s",flight.FlightID);
printf("航线起始站:
");
memset(flight.RouteStart,0,20);
scanf("%s",flight.RouteStart);
printf("航线终点站:
");
memset(flight.RouteEnd,0,20);
scanf("%s",flight.RouteEnd);
printf("起飞时间:
");
memset(flight.DeparturesTime,0,20);
scanf("%s",flight.DeparturesTime);
printf("到达时间:
");
memset(flight.ArrivalsTime,0,20);
scanf("%s",flight.ArrivalsTime);
printf("载客额定:
");
scanf("%d",&flight.Loadlimit);
flight.next=NULL;
if((fp=fopen("flightInfo.txt","a+"))==NULL)
{
printf("openfilefail!
\n");
return1;
}
fclose(fp);
total=GetPrivateProfileInt("航班数量","总数",0,"./flightInfo.txt");
total++;
sprintf(flightInfo,"航班信息%d",total);
memset(str,0,10);
itoa(total,str,10);
WritePrivateProfileString("航班数量","总数",str,"./flightInfo.txt");
WritePrivateProfileString(flightInfo,"航班号",flight.FlightID,"./flightInfo.txt");
WritePrivateProfileString(flightInfo,"航线起始站",flight.RouteStart,"./flightInfo.txt");
WritePrivateProfileString(flightInfo,"航线终点站",flight.RouteEnd,"./flightInfo.txt");
WritePrivateProfileString(flightInfo,"起飞时间",flight.DeparturesTime,"./flightInfo.txt");
WritePrivateProfileString(flightInfo,"到达时间",flight.ArrivalsTime,"./flightInfo.txt");
memset(str,0,10);
itoa(flight.Loadlimit,str,10);
WritePrivateProfileString(flightInfo,"载客额定",str,"./flightInfo.txt");
printf("文件保存成功!
\n");
system("pause");
return0;
}
voidInputFlightInfo()
{
inttatol=0,i=0;
printf("请输入要录入的航班个数:
");
scanf("%d",&tatol);
for(i=0;i{
addFlightInfo();
}
}
voidFlightInfoMaintain()
{
while
(1)
{
switch(MaintainMenu())
{
case1:
addFlightInfo();
break;
case2:
UpdataInfo();
break;
case3:
DeleteFlight();
break;
case4:
return;
break;
default:
printf("输入有误!
\n");
break;
}
}
}
voidFlightQuery()
{
charstr[20];
while
(1)
{
memset(str,0,20);
switch(QueryMenu())
{
case1:
printf("请输入航班号:
");
scanf("%s",str);
QueryInfo(str,1);
break;
case2:
printf("请输入终点站:
");
scanf("%s",str);
QueryInfo(str,2);
break;
case3:
printf("请输入航班起飞时间:
");
scanf("%s",str);
QueryInfo(str,3);
break;
case4:
printf("请输入航班抵达时间:
");
scanf("%s",str);
QueryInfo(str,4);
break;
case5:
return;
break;
default:
printf("输入有误!
\n");
break;
}
}
}
intmenu()
{
intnumber=0;
system("cls");
printf("\
╭═══════════════╮\n\
║民航订票系统║\n\
╭══════┤中国民航欢迎您├══════╮\n\
║║║║\n\
║╰═══════════════╯║\n\
║║\n\
║1.航班信息录入║\n\
║2.航班信息的维护║\n\
║3.浏览航班信息║\n\
║4.航班信息查询║\n\
║5.订票║\n\
║6.统计║\n\
║7.退出║\n\
║║\n\
║║\n\
║中国民航欢迎您!
║\n\
║║\n\
║║\n\
║║\n\
║╭───────────────────────╮║\n\
╰══┤课程设计├══╯\n\
╰───────────────────────╯\n");
printf("请选择:
");
scanf("%d",&number);
returnnumber;
}
intMaintainMenu()
{
intnumber=0;
system("cls");
printf("\
╭═══════════════╮\n\
║民航订票系统║\n\
╭══════┤中国民航欢迎您├══════╮\n\
║║║║\n\
║╰═══════════════╯║\n\
║║\n\
║1.航班信息增加║\n\
║2.航班信息修改║\n\
║3.航班信息删除║\n\
║4.退出║\n\
║║\n\
║║\n\
║中国民航欢迎您!
║\n\
║║\n\
║║\n\
║║\n\
║╭───────────────────────╮║\n\
╰══┤课程设计├══╯\n\
╰───────────────────────╯\n");
printf("请选择:
");
scanf("%d",&number);
returnnumber;
}
intQueryMenu()
{
intnumber=0;
system("cls");
printf("\
╭═══════════════╮\n\
║民航订票系统║\n\
╭══════┤中国民航欢迎您├══════╮\n\
║║║║\n\
║╰═══════════════╯║\n\
║║\n\
║1.按航班号查询║\n\
║2.按终点站查询║\n\
║3.按起飞时间查询║\n\
║4.按抵达时间查询║\n\
║5.退出║\n\
║║\n\
║║\n\
║中国民航欢迎您!
║\n\
║║\n\
║║\n\
║║\n\
║╭───────────────────────╮║\n\
╰══┤课程设计├══╯\n\
╰───────────────────────╯\n");
printf("请选择:
");
scanf("%d",&number);
returnnumber;
}
voidDeleteFlight()
{
intdele=0;
charstr[20]={0};
FlightInfo*p,*q;
FlightInfo*flight=(FlightInfo*)malloc(sizeof(FlightInfo));
flight->next=NULL;
ReadFlightInfoFile(flight);
printf("请输入要删除的航班信息:
");
scanf("%s",str);
p=flight;
while(p->next!
=NULL)
{
if(memcmp(p->next->FlightID,str,strlen(str))==0)
{
dele=1;
q=p->next;
if(q->next!
=NULL)
{
p->next=q->next;
}
free(q);
}
p=p->next;
}
p->next=NULL;
if(dele==1)
{
SaveFile(flight);
printf("删除成功!
\n");
}
else
{
printf("航班信息输入错误!
\n");
}
system("pause");
}
intReadFlightInfoFile(FlightInfo*flight)
{
charstr[20]={0};
intflightNO=0,i=0;
FlightInfo*q=NULL,*p=NULL;
p=flight;
printf("航班号航线起始站航线终点站起飞时间到达时间载客额定\n");
flightNO=GetPrivateProfileInt("航班数量","总数",0,"./flightInfo.txt");
for(i=0;i{
q=(FlightInfo*)malloc(sizeof(FlightInfo));
memset(str,0,20);
sprintf(str,"航班信息%d",i+1);
GetPrivateProfileString(str,"航班号","",q->FlightID,10,"./flightInfo.txt");
GetPrivateProfileString(str,"航线起始站","",q->RouteStart,20,"./flightInfo.txt");
GetPrivateProfileString(str,"航线终点站","",q->RouteEnd,20,"./flightInfo.txt");
GetPrivateProfileString(str,"起飞时间","",q->DeparturesTime,20,"./flightInfo.txt");
GetPrivateProfileString(str,"到达时间","",q->ArrivalsTime,20,"./flightInfo.txt");
q->Loadlimit=GetPrivateProfileInt(str,"载客额定",0,"./flightInfo.txt");
printf("%-10s%-15s%-17s%-13s%-14s%d\n",q->FlightID,q->RouteStart,q->RouteEnd,q->DeparturesTime,q->ArrivalsTime,q->Loadlimit);
p->next=q;
p=q;
}
p->next=NULL;
returni;
}
voidSaveFile(FlightInfo*flight)
{
inttatol=0,i=1;
FILE*fp;
charstr[10]={0};
charflightInfo[10]={0};
FlightInfo*p;
p=flight->next;
tatol=GetPrivateProfileInt("航班数量","总数",0,"./flightInfo.txt");
fp=fopen("flightInfo.txt","w+");
fclose(fp);
itoa(tatol-1,str,10);
WritePrivateProfileString("航班数量","总数",str,"./flightInfo.txt");
while(p!
=NULL)
{
memset(flightInfo,0,10);
sprintf(flightInfo,"航班信息%d",i);
WritePrivateProfileString(flightInfo,"航班号",p->FlightID,"./flightInfo.txt");
WritePrivateProfileString(flightInfo,"航线起始站",p->RouteStart,"./flightInfo.txt");
WritePrivateProfileString(flightInfo,"航线终点站",p->RouteEnd,"./flightInfo.txt");
WritePrivateProfileString(flightInfo,"起飞时间",p->DeparturesTime,"./flightInfo.txt");
WritePrivateProfileString(flightInfo,"到达时间",p->ArrivalsTime,"./flightInfo.txt");
memset(str,0,10);
itoa(p->Loadli