1、 石家庄铁道大学课程设计 课程设计题目 单 位 电气与电子工程 分院(系) 专 业 电气 完成日期 2013 年 7 月 10日 摘 要 在进行程序的设计过程中,必须使用一种计算机作为工具,可供选择的语言中,C语言功能丰富、表达能力强、应用范围广、可直性好,既具有高级语言的优点,又具有低级语言的许多特点,适合编写系统软件,又可方便的用来编写应用软件。 我正是利用C语言的诸多优点来完成民航订票系统的程序编写。系统设计主要围绕全局变量
2、系统模块,流程图,函数意义的详细介绍而展开。最后对民航管理系统进行了实现,并作了详细描述,主要采用注释与代码结合的方式详细地叙述了系统功能实现的过程。 此次课程设计不仅是我对C语言有了更进一步的了解,也增强了自己的动手编程的能力。 关键词: C语言、民航订票系统 目录 第1章 选题的意义……………………………………………………………… 4 1.1 ………………………………………………………………………… 4 1.2 ………………………………………………………………………… 4 第2章 系统功能需求分析 ……………………………………………………… 5 2.1系统的基本要求 …
3、…………………………………………………… 5 2.2 ………………………………………………………………………… 5 第3章 系统设计 ………………………………………………………………… 6 第4章 系统实现 ………………………………………………………………… 7 第5章 总结 ……………………………………………………………………… 8 第1章 选题的意义 1.1 民航,即民用航空,是指使用各类航空器从事除了军事性质(包括国防、警察和海关)以外的所有的航空活动称为民用航空。20世纪50年代以来,民用航空的服务范围不断扩大,成为一个国家的重要经济部门。此次民航订票系统课程设计,运用相关
4、函数调用将基本的功能实现,在设计中的指针、结构体变量等知识的联系,是我进一步的掌握了这些功能的用法。 1.2在课程设计过程中,遇到了许多的问题,不得不去查阅资料并且调试来解决,问题解决的同时也是我掌握了更多的相关知识,课外扩展了许多函数的用法和意义。 1.3 在设计中,深深体会到了实践的意义,所学知识不能与实际操作更好地结合是学习的弊病,学以致用才是最终的目标。这次课程设计的实际操作,发现了自己的知识漏洞,进一步完善自己所学的C语言知识,也在一定程度上提高了自己的编程能力。第2章 系统功能需求分析 2.1系统的基本要求 1. 航班信息录入功能。航班信息用文件保存。 2. 航班信息的维
5、护功能。航班信息增加、删除、修改功能。 3. 浏览航班信息功能。 4. 航班信息查询功能。根据航班号、终点站、飞行时间等条件查询。 5. 订票功能。对订票信息应该存储在一个数组或链表中,每次进行订票时应该先统计该天该航班的已定人数,如果超过成员定额,则不能订票。 6. 统计每个航班某一天的已售(订)出座位数、剩余座位数。第3章 系统设计 char FlightID[10]; char RouteStart[20]; /*起点*/ char RouteEnd[20]; /*终点*/ char DeparturesTime[20]; /*起航时间*/ c
6、har ArrivalsTime[20]; /*抵达时间*/ int Loadlimit; /*载客额定*/ struct FlightInfo *next; int addFlightInfo(); /*航班信息的增加*/ int menu(); /*主菜单*/ void InputFlightInfo(); /*航班信息的录入*/ void FlightInfoMaintain(); /*航班新的维护*/ int
7、 MaintainMenu(); /*航班信息维护菜单*/ void DeleteFlight(); /*航班信息的删除*/ int ReadFlightInfoFile(FlightInfo *flight); void SaveFile(FlightInfo *flight); void UpdataInfo(); void GetFile(); /*航班信息的浏览*/ int QueryMenu(); /*航班
8、信息的查询菜单*/ void QueryInfo(char *pValue,int tag); void FlightQuery(); int Booking(); /*订票*/ int ReadBookingInfo(char *flightID,char *flightDate,int total,char *returnVal); void Statistics(); /*统计*/ 系统模块 1.主函数 在主函数内部对被调函数进行声明,并且调用menu函数。 2.菜单 在菜单函
9、数中,显示并且选择各下级功能。 3.信息的录入功能 利用循环结构,在屏幕上分别输入航班的相关信息,并且将输入的信息分别存储在结构体变量str[10],在操作者修改信息后,替换源信息,中心存储在文件flightInfo中,并选择下一步。 4.信息的维护功能 进入此功能后,通过输入相关航班信息从flightInfo文件中查找原信息,在修改信息后,替换并重新保存在flightInfo文件中,并选择下一步。 5.信息的浏览功能 信息的浏览:全部浏览——打开文件flightInfo,输出所有航班信息并选择下一步。 6.信息的查询功能 进入查询功能菜单界面,选择查询方式,输
10、入班次,起航时间等信息后,打开flightInfo文件,查找并显示航班信息,并选择下一步。 7.订票功能 进入订票界面,根据提示输入航班、日期、名字等相关信息,打开flightInfo文件,查找信息,显示订票成功,并显示余票。订票者的相关信息与所定的航班信息将记录在bookingInfo.txt中,并选择下一步。 8.统计功能 统计每个航班的售票与余票情况。 主要框架: 主函数 被调函数 menu 被调函数 InputFlightInfo(信息的录入) 被调函数 FlightInfoMaintain(信息的维护) 被调函数 Get
11、File(信息的浏览)
被调函数
FlightQuery(信息的查询)
被调函数
Booking(订票)
被调函数
Statistics(统计)
退出
航班信息的录入
要输入的航班个数
输入航班信息
文件保存成功
航班号
起飞时间
终点站
起始站
额定载客
到达时间
航班信息的维护:
航班信息的维护
增加
修改
删除
航班信息的查询:
航班信息的查询
按航班号查询
按终点站查询
按起飞时间查询
按抵达时间查询
退出
第4章 系统实现(程序代码)
#include 12、> /*标准输入输出函数库*/
#include 13、 /*抵达时间*/
int Loadlimit; /*载客额定*/
struct FlightInfo *next;
}FlightInfo;
int addFlightInfo(); /*航班信息的增加*/
int menu(); /*主菜单*/
void InputFlightInfo(); /*航班信息的录入*/
void FlightInfoMaintain(); /*航班新的维护*/
int 14、MaintainMenu(); /*航班信息维护菜单*/
void DeleteFlight(); /*航班信息的删除*/
int ReadFlightInfoFile(FlightInfo *flight);
void SaveFile(FlightInfo *flight);
void UpdataInfo();
void GetFile(); /*航班信息的浏览*/
int QueryMenu(); /*航班信 15、息的查询菜单*/
void QueryInfo(char *pValue,int tag);
void FlightQuery();
int Booking(); /*订票*/
int ReadBookingInfo(char *flightID,char *flightDate,int total,char *returnVal);
void Statistics(); /*统计*/
int addFlightInfo()
{
FlightInfo flight;
ch 16、ar str[10],flightInfo[10];
int total=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( 17、"航线终点站:");
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.Lo 18、adlimit);
flight.next=NULL;
if((fp=fopen("flightInfo.txt","a+"))==NULL)
{
printf("open file fail!\n");
return 1;
}
fclose(fp);
total=GetPrivateProfileInt("航班数量","总数",0,"./flightInfo.txt");
total++;
sprintf(flightInfo,"航班信息%d",total);
memset(str,0,10);
itoa(total,str,10);
19、WritePrivateProfileString("航班数量","总数",str,"./flightInfo.txt");
WritePrivateProfileString(flightInfo,"航班号",flight.FlightID,"./flightInfo.txt");
WritePrivateProfileString(flightInfo,"航线起始站",flight.RouteStart,"./flightInfo.txt");
WritePrivateProfileString(flightInfo,"航线终点站",flight.RouteEnd,"./fli 20、ghtInfo.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,"./fli 21、ghtInfo.txt");
printf("文件保存成功!\n");
system("pause");
return 0;
}
void InputFlightInfo()
{
int tatol=0,i=0;
printf("请输入要录入的航班个数:");
scanf("%d",&tatol);
for (i=0;i 22、
{
case 1:
addFlightInfo();
break;
case 2:
UpdataInfo();
break;
case 3:
DeleteFlight();
break;
case 4:
return;
break;
default:
printf("输入有误!\n");
break;
}
}
}
void FlightQuery()
{
char str[20];
while(1)
{
memset(str,0,20 23、);
switch(QueryMenu())
{
case 1:
printf("请输入航班号:");
scanf("%s",str);
QueryInfo(str,1);
break;
case 2:
printf("请输入终点站:");
scanf("%s",str);
QueryInfo(str,2);
break;
case 3:
printf("请输入航班起飞时间:");
scanf("%s",str);
QueryInfo(str,3);
break;
24、 case 4:
printf("请输入航班抵达时间:");
scanf("%s",str);
QueryInfo(str,4);
break;
case 5:
return;
break;
default:
printf("输入有误!\n");
break;
}
}
}
int menu()
{
int number=0;
system("cls");
printf("\
╭═══════════════╮\n\
25、 ║ 民 航 订 票 系 统 ║\n\
╭══════┤ 中 国 民 航 欢 迎 您 ├══════╮\n\
║ ║ ║ ║\n\
║ ╰═══════════════╯ ║\n\
║ ║\n\
26、 ║ 1. 航班信息录入 ║\n\
║ 2. 航班信息的维护 ║\n\
║ 3. 浏览航班信息 ║\n\
║ 4. 航班信息查询 ║\n\
║ 5. 订票 27、 ║\n\
║ 6. 统计 ║\n\
║ 7. 退出 ║\n\
║ ║\n\
║ 28、 ║\n\
║ 中 国 民 航 欢 迎 您 ! ║\n\
║ ║\n\
║ ║\n\
║ 29、║\n\
║ ╭───────────────────────╮ ║\n\
╰══┤ 课程设计 ├══╯\n\
╰───────────────────────╯\n");
printf("请选择:");
scanf("%d",&number);
return number;
}
int MaintainMenu()
{
int number=0;
system("cls");
printf("\
30、 ╭═══════════════╮\n\
║ 民 航 订 票 系 统 ║\n\
╭══════┤ 中 国 民 航 欢 迎 您 ├══════╮\n\
║ ║ ║ ║\n\
║ ╰═══════════════╯ ║\n\
║ 31、 ║\n\
║ 1. 航班信息增加 ║\n\
║ 2. 航班信息修改 ║\n\
║ 3. 航班信息删除 ║\n\
║ 4. 退出 32、 ║\n\
║ ║\n\
║ ║\n\
║ 中 国 民 航 欢 迎 您 ! ║\n\
║ ║\n\
33、 ║ ║\n\
║ ║\n\
║ ╭───────────────────────╮ ║\n\
╰══┤ 课程设计 ├══╯\n\
╰───────────────────────╯\n") 34、
printf("请选择:");
scanf("%d",&number);
return number;
}
int QueryMenu()
{
int number=0;
system("cls");
printf("\
╭═══════════════╮\n\
║ 民 航 订 票 系 统 ║\n\
╭══════┤ 中 国 民 航 欢 迎 您 ├══════╮\n\
║ 35、 ║ ║ ║\n\
║ ╰═══════════════╯ ║\n\
║ ║\n\
║ 1. 按航班号查询 ║\n\
║ 2. 按终点站查询 36、 ║\n\
║ 3. 按起飞时间查询 ║\n\
║ 4. 按抵达时间查询 ║\n\
║ 5. 退出 ║\n\
║ ║\n\
║ 37、 ║\n\
║ 中 国 民 航 欢 迎 您 ! ║\n\
║ ║\n\
║ ║\n\
║ 38、 ║\n\
║ ╭───────────────────────╮ ║\n\
╰══┤ 课程设计 ├══╯\n\
╰───────────────────────╯\n");
printf("请选择:");
scanf("%d",&number);
return number;
}
void DeleteFlight()
{
int del 39、e=0;
char str[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)
{
40、 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");
}
int ReadFlightInfoFile(FlightI 41、nfo *flight)
{
char str[20]={0};
int flightNO=0,i=0;
FlightInfo *q=NULL,*p=NULL;
p=flight;
printf(" 航班号 航线起始站 航线终点站 起飞时间 到达时间 载客额定\n");
flightNO=GetPrivateProfileInt("航班数量","总数",0,"./flightInfo.txt");
for (i=0;i 42、ghtInfo));
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");
43、 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->RouteS 44、tart,q->RouteEnd,q->DeparturesTime,q->ArrivalsTime,q->Loadlimit);
p->next=q;
p=q;
}
p->next=NULL;
return i;
}
void SaveFile(FlightInfo *flight)
{
int tatol=0,i=1;
FILE *fp;
char str[10]={0};
char flightInfo[10]={0};
FlightInfo *p;
p=flight->next;
tatol=GetPrivateProfil 45、eInt("航班数量","总数",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(flig 46、htInfo,"航班号",p->FlightID,"./flightInfo.txt");
WritePrivateProfileString(flightInfo,"航线起始站",p->RouteStart,"./flightInfo.txt");
WritePrivateProfileString(flightInfo,"航线终点站",p->RouteEnd,"./flightInfo.txt");
WritePrivateProfileString(flightInfo,"起飞时间",p->DeparturesTime,"./flightInfo.txt");
W 47、ritePrivateProfileString(flightInfo,"到达时间",p->ArrivalsTime,"./flightInfo.txt");
memset(str,0,10);
itoa(p->Loadlimit,str,10);
WritePrivateProfileString(flightInfo,"载客额定",str,"./flightInfo.txt");
i++;
p=p->next;
}
}
void GetFile()
{
char str[20]={0};
FlightInfo flight;
int 48、flightNO=0,i=0;
printf(" 航班号 航线起始站 航线终点站 起飞时间 到达时间 载客额定\n");
flightNO=GetPrivateProfileInt("航班数量","总数",0,"./flightInfo.txt");
for (i=0;i 49、
memset(flight.RouteEnd,0,20);
memset(flight.DeparturesTime,0,20);
memset(flight.ArrivalsTime,0,20);
GetPrivateProfileString(str,"航班号"," ",flight.FlightID,10,"./flightInfo.txt");
GetPrivateProfileString(str,"航线起始站"," ",flight.RouteStart,20,"./flightInfo.txt");
GetPrivateProfileStrin 50、g(str,"航线终点站"," ",flight.RouteEnd,20,"./flightInfo.txt");
GetPrivateProfileString(str,"起飞时间"," ",flight.DeparturesTime,20,"./flightInfo.txt");
GetPrivateProfileString(str,"到达时间"," ",flight.ArrivalsTime,20,"./flightInfo.txt");
flight.Loadlimit=GetPrivateProfileInt(str,"载客额定",0,"./flightInfo.






