1、石家庄铁道大学课程设计课程设计题目单 位 电气与电子工程 分院(系)专 业 电气 完成日期 2013 年 7 月 10日摘 要在进行程序的设计过程中,必须使用一种计算机作为工具,可供选择的语言中,C语言功能丰富、表达能力强、应用范围广、可直性好,既具有高级语言的优点,又具有低级语言的许多特点,适合编写系统软件,又可方便的用来编写应用软件。我正是利用C语言的诸多优点来完成民航订票系统的程序编写。系统设计主要围绕全局变量,系统模块,流程图,函数意义的详细介绍而展开。最后对民航管理系统进行了实现,并作了详细描述,主要采用注释与代码结合的方式详细地叙述了系统功能实现的过程。此次课程设计不仅是我对C语言
2、有了更进一步的了解,也增强了自己的动手编程的能力。关键词: C语言、民航订票系统目录第1章 选题的意义 41.1 41.2 4第2章 系统功能需求分析 52.1系统的基本要求 52.2 5第3章 系统设计 6第4章 系统实现 7第5章 总结 8第1章 选题的意义1.1 民航,即民用航空,是指使用各类航空器从事除了军事性质(包括国防、警察和海关)以外的所有的航空活动称为民用航空。20世纪50年代以来,民用航空的服务范围不断扩大,成为一个国家的重要经济部门。此次民航订票系统课程设计,运用相关函数调用将基本的功能实现,在设计中的指针、结构体变量等知识的联系,是我进一步的掌握了这些功能的用法。1.2在
3、课程设计过程中,遇到了许多的问题,不得不去查阅资料并且调试来解决,问题解决的同时也是我掌握了更多的相关知识,课外扩展了许多函数的用法和意义。1.3 在设计中,深深体会到了实践的意义,所学知识不能与实际操作更好地结合是学习的弊病,学以致用才是最终的目标。这次课程设计的实际操作,发现了自己的知识漏洞,进一步完善自己所学的C语言知识,也在一定程度上提高了自己的编程能力。第2章 系统功能需求分析2.1系统的基本要求1. 航班信息录入功能。航班信息用文件保存。2. 航班信息的维护功能。航班信息增加、删除、修改功能。3. 浏览航班信息功能。4. 航班信息查询功能。根据航班号、终点站、飞行时间等条件查询。5
4、. 订票功能。对订票信息应该存储在一个数组或链表中,每次进行订票时应该先统计该天该航班的已定人数,如果超过成员定额,则不能订票。6. 统计每个航班某一天的已售(订)出座位数、剩余座位数。第3章 系统设计char FlightID10;char RouteStart20; /*起点*/char RouteEnd20; /*终点*/char DeparturesTime20; /*起航时间*/char ArrivalsTime20; /*抵达时间*/int Loadlimit; /*载客额定*/struct FlightInfo *next;int addFlightInfo(); /*航班信息的
5、增加*/int menu(); /*主菜单*/void InputFlightInfo(); /*航班信息的录入*/void FlightInfoMaintain(); /*航班新的维护*/int MaintainMenu(); /*航班信息维护菜单*/void DeleteFlight(); /*航班信息的删除*/int ReadFlightInfoFile(FlightInfo *flight);void SaveFile(FlightInfo *flight);void UpdataInfo();void GetFile(); /*航班信息的浏览*/int QueryMenu(); /*
6、航班信息的查询菜单*/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.菜单在菜单函数中,显示并且选择各下级功能。3.信息的录入功能利用循环结构,在屏幕上分别输入航班的相关信息,并且将输入的信息分别存储在结构体变
7、量str10,在操作者修改信息后,替换源信息,中心存储在文件flightInfo中,并选择下一步。4.信息的维护功能进入此功能后,通过输入相关航班信息从flightInfo文件中查找原信息,在修改信息后,替换并重新保存在flightInfo文件中,并选择下一步。5.信息的浏览功能信息的浏览:全部浏览打开文件flightInfo,输出所有航班信息并选择下一步。6.信息的查询功能进入查询功能菜单界面,选择查询方式,输入班次,起航时间等信息后,打开flightInfo文件,查找并显示航班信息,并选择下一步。7.订票功能进入订票界面,根据提示输入航班、日期、名字等相关信息,打开flightInfo文件
8、,查找信息,显示订票成功,并显示余票。订票者的相关信息与所定的航班信息将记录在bookingInfo.txt中,并选择下一步。8.统计功能统计每个航班的售票与余票情况。主要框架:主函数被调函数menu被调函数InputFlightInfo(信息的录入)被调函数FlightInfoMaintain(信息的维护)被调函数GetFile(信息的浏览)被调函数FlightQuery(信息的查询)被调函数Booking(订票)被调函数Statistics(统计)退出 航班信息的录入要输入的航班个数输入航班信息文件保存成功航班号起飞时间终点站起始站额定载客到达时间航班信息的维护:航班信息的维护增加修改删除
9、航班信息的查询:航班信息的查询按航班号查询按终点站查询按起飞时间查询按抵达时间查询退出第4章 系统实现(程序代码)#include /*标准输入输出函数库*/#include /*标准函数库*/#include /*字符串函数库*/#include typedef struct FlightInfochar FlightID10;char RouteStart20; /*起点*/char RouteEnd20; /*终点*/char DeparturesTime20; /*起航时间*/char ArrivalsTime20; /*抵达时间*/int Loadlimit; /*载客额定*/str
10、uct FlightInfo *next;FlightInfo;int addFlightInfo(); /*航班信息的增加*/int menu(); /*主菜单*/void InputFlightInfo(); /*航班信息的录入*/void FlightInfoMaintain(); /*航班新的维护*/int MaintainMenu(); /*航班信息维护菜单*/void DeleteFlight(); /*航班信息的删除*/int ReadFlightInfoFile(FlightInfo *flight);void SaveFile(FlightInfo *flight);void
11、 UpdataInfo();void GetFile(); /*航班信息的浏览*/int QueryMenu(); /*航班信息的查询菜单*/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;char str10,
12、flightInfo10;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(航线终点站:);memset(flight.RouteEnd,0,20);scanf(%s,flight.R
13、outeEnd);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(open file fail!n);return 1;fclo
14、se(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(fligh
15、tInfo,航线起始站,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,
16、10);itoa(flight.Loadlimit,str,10);WritePrivateProfileString(flightInfo,载客额定,str,./flightInfo.txt);printf(文件保存成功!n);system(pause);return 0;void InputFlightInfo()int tatol=0,i=0;printf(请输入要录入的航班个数:);scanf(%d,&tatol);for (i=0;inext=NULL;ReadFlightInfoFile(flight);printf(请输入要删除的航班信息:);scanf(%s,str);p=fl
17、ight;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); elseprintf(航班信息输入错误!n);system(pause);int ReadFlightInfoFile(FlightInfo *flight)char str20=0;int flightNO=0,i=0;F
18、lightInfo *q=NULL,*p=NULL;p=flight;printf( 航班号 航线起始站 航线终点站 起飞时间 到达时间 载客额定n);flightNO=GetPrivateProfileInt(航班数量,总数,0,./flightInfo.txt);for (i=0;iFlightID,10,./flightInfo.txt);GetPrivateProfileString(str,航线起始站, ,q-RouteStart,20,./flightInfo.txt);GetPrivateProfileString(str,航线终点站, ,q-RouteEnd,20,./flig
19、htInfo.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%dn,q-FlightID,q-RouteStart,q-RouteEnd,q-Departur
20、esTime,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 str10=0;char flightInfo10=0;FlightInfo *p;p=flight-next;tatol=GetPrivateProfileInt(航班数量,总数,0,./flightInfo.txt);fp=fopen(flightInfo.txt,w+);fclose(fp);itoa(tatol-1,str,1
21、0);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(fli
22、ghtInfo,航线终点站,p-RouteEnd,./flightInfo.txt);WritePrivateProfileString(flightInfo,起飞时间,p-DeparturesTime,./flightInfo.txt);WritePrivateProfileString(flightInfo,到达时间,p-ArrivalsTime,./flightInfo.txt);memset(str,0,10);itoa(p-Loadlimit,str,10);WritePrivateProfileString(flightInfo,载客额定,str,./flightInfo.txt)
23、;i+;p=p-next;void GetFile()char str20=0;FlightInfo flight;int flightNO=0,i=0;printf( 航班号 航线起始站 航线终点站 起飞时间 到达时间 载客额定n);flightNO=GetPrivateProfileInt(航班数量,总数,0,./flightInfo.txt);for (i=0;iflightNO;i+)memset(str,0,20);sprintf(str,航班信息%d,i+1);memset(flight.FlightID,0,10);memset(flight.RouteStart,0,20);m
24、emset(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);GetPrivateProfileString(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.