*******************
实践教学
*******************
兰州理工大学
计算机与通信学院
2014年春季学期
题 目: 航班信息管理系统 专业班级:姓 名: 学 号: 指导教师:成 绩:
今年来随着人们生活水平的提高,外出旅行的人越来越多,而飞机以其舒适,便捷的优点开始成为越来越多旅客的选择,随着乘机人员的越来越多,一个好的机场信息管理系统变得越来越重要。
航班管理系统是一个数据应用系统,航班中的所有信息都是保存在数据库中。在数据库系统的应用开发过程中,数据库设计是一个非常重要的问题。数据库结构设计的好坏将直接对应用系统的效率以及实现的效果产生影响。好的数据库结构的设计会减少数据库的存储量,数据的完整性和一致性会比较高,系统具有较快的反应速度,简化基于数据库的应用程序的实现等等。
本文将介绍的是我设计的一种机场航班信息管理系统,可以为高效有序的管理组织机场的生产与服务,有效提高机场服务的运营效率及服务质量,提高机场的盈利与竞争水平,以保证为旅客,航空公司以及机场自身的业务发展管理提供一致,及时,准确,系统,完整的信息服务功能。
近些年来,我国民航事业取得了飞速的发展,与此同时计算机软件技术、数据库技术、信息技术也取得到了长足的发展与广泛的应用。技术的进步一方面提高了机场信息化的要求、另外一方面也使得企业信息化的环境日益复杂。一个好的航班管理系统必须能够合理的规划航班信息,为高效有序地管理组织机场的生产与服务, 有效提高机场的运营效率及服务质量, 提高机场的赢利与竞争水平, 以保证为旅客、航空公司以及机场自身的业务管理提供一致、及时、准确、系统、完整的信息服务功能。
本次我的软件工程作业就是应对于机场信息化要求,探讨了在机场复杂的信息化环境下的航班信息管理系统的方法与过程。一个机场的航班信息,就是这个机场运营的所有航班的实时信息,包括值机信息、登机信息、到港信息、离港信息、行李转盘信息等等,它们为旅客登机转机、亲友接机和各类人员工作提供了必不可少的服务。而我设计的机场航班管理系统就是用于管理机场航班信息的。
关键词:航班、信息、管理、软件工程
目录
一、需求分析 . .................................................................................................................................. 1 二 、总体设计 . ................................................................................................................................ 1
2. 1程序的总体设计 . ............................................................................................................ 1 2. 2数据结构 . ........................................................................................................................ 2 三、 详细设计 . ................................................................................................................................ 3
3.1主控模块设计 . .................................................................................................................... 3 3.2 航班信息录入模块 ................................................................ 4
3.2.1 Input函数流程图 . ............................................................................................... 5 3.3航班信息浏览模块 . ............................................................................................................ 6 3.4航班操作模块 . .................................................................................................................... 7 3.5订票系统模块 . .................................................................................................................... 8 3.6退票系统模块 . .................................................................................................................... 9 3.7航班信息保存模块 . .......................................................................................................... 10 四、主要函数功能描述 . ................................................................................................................ 11
4.1 航班信息录入函数enter() ............................................................................................. 11 4.2航班信息浏览函数browse() . .......................................................................................... 11 4.3 订票函数book() ............................................................................................................. 12 4.4 保存函数save() . ............................................................................................................. 13 五、 测试与调试 . .......................................................................................................................... 13
5.1输入航班测试 . ................................................................................................................. 13 5.2浏览航班测试 . ................................................................................................................. 16 5.3航班操作测试 . ................................................................................................................. 16 5.4订票测试 . ......................................................................................................................... 18 5.5退票测试 . ......................................................................................................................... 18 设计总结......................................................................................................................................... 19 参考文献......................................................................................................................................... 19 附录 源代码 . ................................................................................................................................ 19
一、需求分析
(1)问题
根据需求,该系统所应包含的信息有以下一些:
航班起飞地点,起飞时间,降落地点,票价,最大乘客数,已售票数 根据需求,该系统所应实现的功能有以下一些: 菜单选择功能;
航班信息的录入功能; 航班信息的浏览功能; 订票功能; 退票功能。 (2)系统
采用C 语言实现,开发环境为VC ,可以运行在操作系统windows98及以上皆可。
(3)运行要求
能不受限制的录入通讯录信息
界面友好,操作方便,例如删除前需要提示用户是否删除 容错性强,例如数据导出时,如果文件不存在需要提示用户。
二 、总体设计
2. 1程序的总体设计
图1 航班管理系统功能模块图
根据需求描述,本人按照结构化程序设计的原则将整个系统划分若干个功能模块。 系统各子模块的设计如下: (1)输入记录模块
输入记录模块主要功能描述 (2)更新记录模块
更新记录模块主要功能描述 (3)查询记录模块
模块主要功能描述
(4)输出记录模块
模块主要功能描述
2. 2数据结构
typedef struct plane {
char ID[10]; /*航班代号*/ char BePlace[10]; /*飞机起飞地点*/ char EnPlace[10]; /*飞机降落终点*/ char data[15]; /*飞机起飞时间*/ int max; /*飞机最大乘客人数*/ int price; /*飞机票价*/
int num; /*飞机已售票数*/ }
三、 详细设计
3.1主控模块设计
控制整个程序的运行,通过主函数模块分别调用各个模块,实现各项功能,流程如图2所示。
注释:选择1~7不同的数字进入不同的功能模块,其中1表示输入新航班,2表示航班浏览,3表示航班操作,4表示订票,5表示退票,6表示保存,7表示载入,8表示退出系统。
3.2 航班信息录入模块
录入新的航班信息程序流程图如图3
图3 航班信息录入流程图
3.2.1 Input函数流程图
图4 input函数流程图
注释:input 函数是航班信息录入模块需要调用的函数
3.3航班信息浏览模块
航班信息浏览模块程序图如图4
图5 航班信息浏览流程图
3.4航班操作模块 航班操作模块流程图如图5
订票函数流程图如图7
图7 订票系统函数流程图
3.7航班信息保存模块
四、主要函数功能描述
4.1 航班信息录入函数enter()
函数原型void enter()
功能描述:先输入需要录入的航班数,再调用输入函数input (),逐一录入每一次航班的所有信息,录入完毕则返回功能主菜单。 函数流程图如图3 所示 主要代码为:
void enter() { int i;
system( "cls" );
printf("请输入航班的数目(0-%d)?:",N); scanf("%d",&n); /*要输入的记录个数*/ printf("\n请输入数据\n\n"); for(i=0;i
void printf_one(int i) /*显示一个记录的函数*/ { printf("%11s %6s %10s %6s %6d %6d %6d", ti[i].ID,ti[i].BePlace,ti[i].EnPlace,ti[i].data, ti[i].price,ti[i].max,ti[i].num); }
4.2航班信息浏览函数browse()
函数原型:void browse()
功能描述:选择航班信息浏览选项2,进入航班信息浏览界面,所有航班的信息则会显示在主界面,每一次航班信息包括:航班代号,起飞地点,降落地点,起飞时间,票价,最大乘客,已售票数。 函数流程图如图5所示 主要代码为:
void browse() { int i; system( "cls" ); puts("\n--------------------------------------------------------------------"); printf("\n\t航班代号 起飞地点 降落地点 起飞时间 票价 最大乘客 已售票数\n"); for(i=0;i
4.3 订票函数book()
函数原型:void book()
功能描述:选择选项4进入订票系统界面,输入航班信息则订票成功 函数流程图如图7所示 主要代码为:
void book() {
int i; system( "cls" ); printf("欢迎进入售票窗口!\n"); i=search(); if(i!=-1) { if(ti[i].num>=ti[i].max) { printf("\n该趟航班票已售完!"); } else { ti[i].num++; printf("\n订票成功!\n"); } } else printf("该航班不存在!\n"); getchar();
}
getchar(); /*按任意健*/ menu();
4.4 保存函数save()
函数原型:void save()
功能描述:先打开ticket.txt 文档,把航班状态信息写入该文档里,保存好后关闭文档。
函数流程图如图9所示 主要代码为:
void save() { int w=1; FILE *fp; int i; system( "cls" ); if((fp=fopen("ticket.txt","wb"))==NULL) /*以输出打开方式, 在此前的记录被覆盖*/ { printf("\nCannot open file\n"); return ; }
for(i=0;i
五、 测试与调试
5.1输入航班测试
系统菜单选择界面如下:
图10
选择1
进入
图11
输入2跳转到输入航班信息
第1条航班输入:航班代号:MU2065,起飞地点:兰州,降落地点:南京,起飞时间:2014年7月20日12:30,最大载客人数:300,航班票价:800;
第2条航班输入:航班代号:HU2780,起飞地点:兰州,降落地点:上海,起飞时间:2014年7月21日21:54,最大载客人数:350,航班票价:946; 则显示如下:
图
12
图13
5.2浏览航班测试
航班信息输入结束则返回菜单主界面如图10
选择2进入航班浏览界面
图14
5.3航班操作测试
选择3进入航班操作
图15
选择1按时间排序如图
16
图16
选择3按地点查找航班如图
17
图17
5.4订票测试
选择4进入主菜单后选择4进入订票如图18所示
输入起飞地点:兰州,降落地点:南京,起飞时间:
12:30
图18
5.5退票测试
选择5进入退票系统如图19
输入航班代号:
MU2065
图19
选择8后退出测试
设计总结
通过这次课程设计,我对复杂程序的开发有了一个深刻的认识,使我进一步明白了模块化思想在程序开发中的重要性。也是我明白了在平时的学习生活中一定要努力才能在真正用到时运用自如。
这次课程设计中还深入学习了优化算法的各种思想,加深了对指针概念的理解,也较好的掌握了指针的使用方法。通过这次课程设计学会了在实践中运用所学的知识,并通过翻阅资料增加了自己的知识面,对C 语言调用其他可执行文件和图形界面的设计有了新的识和了解,并运用在这次课程设计中,使我受到了锻炼,受益匪浅,同时也深入学习了算法的思想,指针的使用方法,为我以后的应用打下了坚实的基础,相信有因为这次课程设计,会使我对C 语言有更深入的认知,以及能较好的掌握它,在以后的实践中能运用自如。在这次课程设计中学会了贯通运用所学的知识,通过翻阅大量资料学习了新的知识。在这次课程设计中对C 语言中调用其他可执行文件和图形界面的设计思路有了新的认识和了解,并运用在其中,发现C 语言作用的强大。
参考文献
[1] 严蔚敏, 吴伟民. 数据结构(C 语言版). 北京:清华大学出版社,2007
[2] 张长海.C 语言程设计[M].北京:高等教育出版社,2006
[3] 陈建新, 李志敏. 数据结构实验指导与课程设计教程. 北京:科学出版社,2010
[4] 吴玉蓉, 李劲. 数据结构(C 语言版). 北京:中国水利水电出版社,2008
[5] 谭浩强 .C语言程设计. 北京:清华大学出版社,2005
[6]王为青, 刘变红. C语言高级编程及实例剖析. 北京:人民邮电出版社,2007
附录 源代码
#include
#include
#include
#define N 1000
typedef struct plane
{
char ID[10]; /*航班代号*/
char BePlace[10];/*飞机起飞地点*/
char EnPlace[10];/*飞机降落终点*/
char data[15];/*飞机起飞时间*/
int max;/*飞机最大乘客人数*/
int price;/*飞机票价*/
int num;/*飞机已售票数*/
}PLANE;
PLANE ti[N];
int n;/*当前的航班数目*/
void menu();
void menu1();
void input(int i)
{
}
void enter()
{
int i;
system( "cls" );
printf("请输入航班的数目(0-%d)?:",N);
}
void printf_one(int i) /*显示一个记录的函数*/
{
}
void browse()
{
int i; printf("%11s %6s %10s %6s %6d %6d %6d", ti[i].ID,ti[i].BePlace,ti[i].EnPlace,ti[i].data, ti[i].price,ti[i].max,ti[i].num); scanf("%d",&n); /*要输入的记录个数*/ printf("\n请输入数据\n\n"); for(i=0;i
}
void order() /*排序模块(按平均成绩)*/
{
}
void search_time()
{
int i,m=0; struct plane s; system( "cls" ); printf("\n\nEnter the time:"); scanf("%s",s.data); /*输入出发的时间*/ int i,j; struct plane s; system( "cls" ); for(i=0;i0) {s=ti[i]; ti[j]=s;} puts("\n--------------------------------------------------------------------"); printf("\n\t航班代号 起飞地点 降落地点 起飞时间 for(i=0;i
}
void serch_end()
{
int i,m=0; struct plane s; system( "cls" ); printf("\n\nEnter the end Place:"); scanf("%s",s.EnPlace); /*输入要到达的地方*/ puts("\n--------------------------------------------------------------------"); printf("\n\t航班代号 起飞地点 降落地点 起飞时间 票价 最大乘客 已售票数\n"); for(i=0;i
m++; if((m!=0)&&(m%10==0)) /*目的是分屏显示*/ { printf("\n\nPress any key to contiune . . ."); getchar(); puts("\n\n"); printf("\n\t航班代号 起飞地点 降落地点 起飞时间 for(i=0;i
}
void menu1()
{
int n,w1;
do
{
system( "cls" ); /*清屏*/
puts("\t\t\t\t 飞机售票操作!\n\n");
puts("\t\t*********************MENU*********************\n\n"); puts("\t\t\t\t1.按照时间排序");
puts("\t\t\t\t2.按照时间查找航班");
puts("\t\t\t\t3.按照地点查找航班");
puts("\t\t\t\t4.返回主菜单");
puts("\n\n\t\t**********************************************\n"); printf("Choice your number(1-4): [ ]\b\b");
scanf("%d",&n);
if(n4) /*对选择的数字作判断*/
{
w1=1;
printf("your choice is not between 1 and 4,Please input again:"); getchar();
getchar();
}
else w1=0;
} while(w1==1);
/*选择功能*/
switch(n)
{
case 1:order();break;
case 2:search_time();break;
case 3:serch_end();break;
case 4:menu();break;
} } puts("\n--------------------------------------------------------------------"); getchar(); /*按任意健*/ getchar(); menu1(); } /*调用显示一个记录的函数*/
int search() /*查找模块*/ {
}
void book()
{
int i;
system( "cls" ); printf("欢迎进入售票窗口!\n"); if(i!=-1) { if(ti[i].num>=ti[i].max) { printf("\n该趟航班票已售完!"); } if(k==-1) { } else return k; printf("\n\nNO exist!"); return -1; if(strcmp(s.BePlace,ti[i].BePlace)==0&&strcmp(s.EnPlace,ti[i].EnPlace)==0&k=i; /*找到要修改的记录*/ printf_one(k); break; /*调用显示一个记录的函数*/ strcmp(s.data,ti[i].data)==0) for(i=0;i
}
void back() {
} if(k==-1) { } else { printf("\n退票成功!\n"); } getchar(); /*按任意健*/ getchar(); /*按任意健*/ menu(); printf("\n\nNO exist!"); if(strcmp(s.ID,ti[i].ID)==0) { } k=i; /*找到要修改的记录*/ printf_one(k); break; /*调用显示一个记录的函数*/ int i,k=-1; struct plane s; system( "cls" ); printf("欢迎进入退票窗口!\n"); printf("\n\n输入航班代号:"); scanf("%s",s.ID); /*输入要到达的地方*/ for(i=0;i
void save() {
}
void load() {
FILE *fp; int i,w; w=1; system( "cls" ); if((fp=fopen("ticket.txt","rb"))==NULL) /*以输出打开方式, { } n=0; for(i=0;!feof(fp);i++) { printf("\nCannot open file\n"); w=0; 在此前的记录被覆盖*/ int w=1; FILE *fp; int i; system( "cls" ); if((fp=fopen("ticket.txt","wb"))==NULL) /*以输出打开方式, { } if(fwrite(&ti[i],sizeof(struct plane),1,fp)!=1) { printf("file write error\n"); } if(w==1) { printf("file save ok!\n"); } fclose(fp); getchar(); getchar(); menu(); w=0; printf("\nCannot open file\n"); return ; 在此前的记录被覆盖*/ for(i=0;i
}
void menu()
{
int n,w1;
do
{
system( "cls" ); /*清屏*/ /*清屏*/
puts("\t\t\t\t 飞机售票管理系统!\n\n");
puts("\t\t*********************MENU*********************\n\n");
puts("\t\t\t\t1.输入新航班");
puts("\t\t\t\t2.浏览 ");
puts("\t\t\t\t3.航班操作");
puts("\t\t\t\t4.订票");
puts("\t\t\t\t5.退票");
puts("\t\t\t\t6.保存");
puts("\t\t\t\t7.载入");
puts("\t\t\t\t8.退出");
puts("\n\n\t\t**********************************************\n");
printf("Choice your number(1-8): [ ]\b\b");
scanf("%d",&n);
if(n8) /*对选择的数字作判断*/
{
w1=1;
printf("your choice is not between 1 and 8,Please input enter to choice again:"); getchar();
getchar();
}
else w1=0;
} while(w1==1);
/*选择功能*/
switch(n)
{
case 1:enter();break; /*输入模块*/
case 2:browse();break; /*浏览模块*/ } n=n-1; fclose(fp); if(w==1) printf("Load file ok!"); getchar(); getchar(); menu(); fread(&ti[i],sizeof(struct plane),1,fp); n++;
case 3:menu1();break; /*查找模块*/ case 4:book();break; /*订票模块*/ case 5:back();break; /*退票模块*/ case 6:save();break; /*保存模块*/ case 7:load();break; /*加载模块*/ case 8:exit(0);
}
}
void main()
{
menu();
}
*******************
实践教学
*******************
兰州理工大学
计算机与通信学院
2014年春季学期
题 目: 航班信息管理系统 专业班级:姓 名: 学 号: 指导教师:成 绩:
今年来随着人们生活水平的提高,外出旅行的人越来越多,而飞机以其舒适,便捷的优点开始成为越来越多旅客的选择,随着乘机人员的越来越多,一个好的机场信息管理系统变得越来越重要。
航班管理系统是一个数据应用系统,航班中的所有信息都是保存在数据库中。在数据库系统的应用开发过程中,数据库设计是一个非常重要的问题。数据库结构设计的好坏将直接对应用系统的效率以及实现的效果产生影响。好的数据库结构的设计会减少数据库的存储量,数据的完整性和一致性会比较高,系统具有较快的反应速度,简化基于数据库的应用程序的实现等等。
本文将介绍的是我设计的一种机场航班信息管理系统,可以为高效有序的管理组织机场的生产与服务,有效提高机场服务的运营效率及服务质量,提高机场的盈利与竞争水平,以保证为旅客,航空公司以及机场自身的业务发展管理提供一致,及时,准确,系统,完整的信息服务功能。
近些年来,我国民航事业取得了飞速的发展,与此同时计算机软件技术、数据库技术、信息技术也取得到了长足的发展与广泛的应用。技术的进步一方面提高了机场信息化的要求、另外一方面也使得企业信息化的环境日益复杂。一个好的航班管理系统必须能够合理的规划航班信息,为高效有序地管理组织机场的生产与服务, 有效提高机场的运营效率及服务质量, 提高机场的赢利与竞争水平, 以保证为旅客、航空公司以及机场自身的业务管理提供一致、及时、准确、系统、完整的信息服务功能。
本次我的软件工程作业就是应对于机场信息化要求,探讨了在机场复杂的信息化环境下的航班信息管理系统的方法与过程。一个机场的航班信息,就是这个机场运营的所有航班的实时信息,包括值机信息、登机信息、到港信息、离港信息、行李转盘信息等等,它们为旅客登机转机、亲友接机和各类人员工作提供了必不可少的服务。而我设计的机场航班管理系统就是用于管理机场航班信息的。
关键词:航班、信息、管理、软件工程
目录
一、需求分析 . .................................................................................................................................. 1 二 、总体设计 . ................................................................................................................................ 1
2. 1程序的总体设计 . ............................................................................................................ 1 2. 2数据结构 . ........................................................................................................................ 2 三、 详细设计 . ................................................................................................................................ 3
3.1主控模块设计 . .................................................................................................................... 3 3.2 航班信息录入模块 ................................................................ 4
3.2.1 Input函数流程图 . ............................................................................................... 5 3.3航班信息浏览模块 . ............................................................................................................ 6 3.4航班操作模块 . .................................................................................................................... 7 3.5订票系统模块 . .................................................................................................................... 8 3.6退票系统模块 . .................................................................................................................... 9 3.7航班信息保存模块 . .......................................................................................................... 10 四、主要函数功能描述 . ................................................................................................................ 11
4.1 航班信息录入函数enter() ............................................................................................. 11 4.2航班信息浏览函数browse() . .......................................................................................... 11 4.3 订票函数book() ............................................................................................................. 12 4.4 保存函数save() . ............................................................................................................. 13 五、 测试与调试 . .......................................................................................................................... 13
5.1输入航班测试 . ................................................................................................................. 13 5.2浏览航班测试 . ................................................................................................................. 16 5.3航班操作测试 . ................................................................................................................. 16 5.4订票测试 . ......................................................................................................................... 18 5.5退票测试 . ......................................................................................................................... 18 设计总结......................................................................................................................................... 19 参考文献......................................................................................................................................... 19 附录 源代码 . ................................................................................................................................ 19
一、需求分析
(1)问题
根据需求,该系统所应包含的信息有以下一些:
航班起飞地点,起飞时间,降落地点,票价,最大乘客数,已售票数 根据需求,该系统所应实现的功能有以下一些: 菜单选择功能;
航班信息的录入功能; 航班信息的浏览功能; 订票功能; 退票功能。 (2)系统
采用C 语言实现,开发环境为VC ,可以运行在操作系统windows98及以上皆可。
(3)运行要求
能不受限制的录入通讯录信息
界面友好,操作方便,例如删除前需要提示用户是否删除 容错性强,例如数据导出时,如果文件不存在需要提示用户。
二 、总体设计
2. 1程序的总体设计
图1 航班管理系统功能模块图
根据需求描述,本人按照结构化程序设计的原则将整个系统划分若干个功能模块。 系统各子模块的设计如下: (1)输入记录模块
输入记录模块主要功能描述 (2)更新记录模块
更新记录模块主要功能描述 (3)查询记录模块
模块主要功能描述
(4)输出记录模块
模块主要功能描述
2. 2数据结构
typedef struct plane {
char ID[10]; /*航班代号*/ char BePlace[10]; /*飞机起飞地点*/ char EnPlace[10]; /*飞机降落终点*/ char data[15]; /*飞机起飞时间*/ int max; /*飞机最大乘客人数*/ int price; /*飞机票价*/
int num; /*飞机已售票数*/ }
三、 详细设计
3.1主控模块设计
控制整个程序的运行,通过主函数模块分别调用各个模块,实现各项功能,流程如图2所示。
注释:选择1~7不同的数字进入不同的功能模块,其中1表示输入新航班,2表示航班浏览,3表示航班操作,4表示订票,5表示退票,6表示保存,7表示载入,8表示退出系统。
3.2 航班信息录入模块
录入新的航班信息程序流程图如图3
图3 航班信息录入流程图
3.2.1 Input函数流程图
图4 input函数流程图
注释:input 函数是航班信息录入模块需要调用的函数
3.3航班信息浏览模块
航班信息浏览模块程序图如图4
图5 航班信息浏览流程图
3.4航班操作模块 航班操作模块流程图如图5
订票函数流程图如图7
图7 订票系统函数流程图
3.7航班信息保存模块
四、主要函数功能描述
4.1 航班信息录入函数enter()
函数原型void enter()
功能描述:先输入需要录入的航班数,再调用输入函数input (),逐一录入每一次航班的所有信息,录入完毕则返回功能主菜单。 函数流程图如图3 所示 主要代码为:
void enter() { int i;
system( "cls" );
printf("请输入航班的数目(0-%d)?:",N); scanf("%d",&n); /*要输入的记录个数*/ printf("\n请输入数据\n\n"); for(i=0;i
void printf_one(int i) /*显示一个记录的函数*/ { printf("%11s %6s %10s %6s %6d %6d %6d", ti[i].ID,ti[i].BePlace,ti[i].EnPlace,ti[i].data, ti[i].price,ti[i].max,ti[i].num); }
4.2航班信息浏览函数browse()
函数原型:void browse()
功能描述:选择航班信息浏览选项2,进入航班信息浏览界面,所有航班的信息则会显示在主界面,每一次航班信息包括:航班代号,起飞地点,降落地点,起飞时间,票价,最大乘客,已售票数。 函数流程图如图5所示 主要代码为:
void browse() { int i; system( "cls" ); puts("\n--------------------------------------------------------------------"); printf("\n\t航班代号 起飞地点 降落地点 起飞时间 票价 最大乘客 已售票数\n"); for(i=0;i
4.3 订票函数book()
函数原型:void book()
功能描述:选择选项4进入订票系统界面,输入航班信息则订票成功 函数流程图如图7所示 主要代码为:
void book() {
int i; system( "cls" ); printf("欢迎进入售票窗口!\n"); i=search(); if(i!=-1) { if(ti[i].num>=ti[i].max) { printf("\n该趟航班票已售完!"); } else { ti[i].num++; printf("\n订票成功!\n"); } } else printf("该航班不存在!\n"); getchar();
}
getchar(); /*按任意健*/ menu();
4.4 保存函数save()
函数原型:void save()
功能描述:先打开ticket.txt 文档,把航班状态信息写入该文档里,保存好后关闭文档。
函数流程图如图9所示 主要代码为:
void save() { int w=1; FILE *fp; int i; system( "cls" ); if((fp=fopen("ticket.txt","wb"))==NULL) /*以输出打开方式, 在此前的记录被覆盖*/ { printf("\nCannot open file\n"); return ; }
for(i=0;i
五、 测试与调试
5.1输入航班测试
系统菜单选择界面如下:
图10
选择1
进入
图11
输入2跳转到输入航班信息
第1条航班输入:航班代号:MU2065,起飞地点:兰州,降落地点:南京,起飞时间:2014年7月20日12:30,最大载客人数:300,航班票价:800;
第2条航班输入:航班代号:HU2780,起飞地点:兰州,降落地点:上海,起飞时间:2014年7月21日21:54,最大载客人数:350,航班票价:946; 则显示如下:
图
12
图13
5.2浏览航班测试
航班信息输入结束则返回菜单主界面如图10
选择2进入航班浏览界面
图14
5.3航班操作测试
选择3进入航班操作
图15
选择1按时间排序如图
16
图16
选择3按地点查找航班如图
17
图17
5.4订票测试
选择4进入主菜单后选择4进入订票如图18所示
输入起飞地点:兰州,降落地点:南京,起飞时间:
12:30
图18
5.5退票测试
选择5进入退票系统如图19
输入航班代号:
MU2065
图19
选择8后退出测试
设计总结
通过这次课程设计,我对复杂程序的开发有了一个深刻的认识,使我进一步明白了模块化思想在程序开发中的重要性。也是我明白了在平时的学习生活中一定要努力才能在真正用到时运用自如。
这次课程设计中还深入学习了优化算法的各种思想,加深了对指针概念的理解,也较好的掌握了指针的使用方法。通过这次课程设计学会了在实践中运用所学的知识,并通过翻阅资料增加了自己的知识面,对C 语言调用其他可执行文件和图形界面的设计有了新的识和了解,并运用在这次课程设计中,使我受到了锻炼,受益匪浅,同时也深入学习了算法的思想,指针的使用方法,为我以后的应用打下了坚实的基础,相信有因为这次课程设计,会使我对C 语言有更深入的认知,以及能较好的掌握它,在以后的实践中能运用自如。在这次课程设计中学会了贯通运用所学的知识,通过翻阅大量资料学习了新的知识。在这次课程设计中对C 语言中调用其他可执行文件和图形界面的设计思路有了新的认识和了解,并运用在其中,发现C 语言作用的强大。
参考文献
[1] 严蔚敏, 吴伟民. 数据结构(C 语言版). 北京:清华大学出版社,2007
[2] 张长海.C 语言程设计[M].北京:高等教育出版社,2006
[3] 陈建新, 李志敏. 数据结构实验指导与课程设计教程. 北京:科学出版社,2010
[4] 吴玉蓉, 李劲. 数据结构(C 语言版). 北京:中国水利水电出版社,2008
[5] 谭浩强 .C语言程设计. 北京:清华大学出版社,2005
[6]王为青, 刘变红. C语言高级编程及实例剖析. 北京:人民邮电出版社,2007
附录 源代码
#include
#include
#include
#define N 1000
typedef struct plane
{
char ID[10]; /*航班代号*/
char BePlace[10];/*飞机起飞地点*/
char EnPlace[10];/*飞机降落终点*/
char data[15];/*飞机起飞时间*/
int max;/*飞机最大乘客人数*/
int price;/*飞机票价*/
int num;/*飞机已售票数*/
}PLANE;
PLANE ti[N];
int n;/*当前的航班数目*/
void menu();
void menu1();
void input(int i)
{
}
void enter()
{
int i;
system( "cls" );
printf("请输入航班的数目(0-%d)?:",N);
}
void printf_one(int i) /*显示一个记录的函数*/
{
}
void browse()
{
int i; printf("%11s %6s %10s %6s %6d %6d %6d", ti[i].ID,ti[i].BePlace,ti[i].EnPlace,ti[i].data, ti[i].price,ti[i].max,ti[i].num); scanf("%d",&n); /*要输入的记录个数*/ printf("\n请输入数据\n\n"); for(i=0;i
}
void order() /*排序模块(按平均成绩)*/
{
}
void search_time()
{
int i,m=0; struct plane s; system( "cls" ); printf("\n\nEnter the time:"); scanf("%s",s.data); /*输入出发的时间*/ int i,j; struct plane s; system( "cls" ); for(i=0;i0) {s=ti[i]; ti[j]=s;} puts("\n--------------------------------------------------------------------"); printf("\n\t航班代号 起飞地点 降落地点 起飞时间 for(i=0;i
}
void serch_end()
{
int i,m=0; struct plane s; system( "cls" ); printf("\n\nEnter the end Place:"); scanf("%s",s.EnPlace); /*输入要到达的地方*/ puts("\n--------------------------------------------------------------------"); printf("\n\t航班代号 起飞地点 降落地点 起飞时间 票价 最大乘客 已售票数\n"); for(i=0;i
m++; if((m!=0)&&(m%10==0)) /*目的是分屏显示*/ { printf("\n\nPress any key to contiune . . ."); getchar(); puts("\n\n"); printf("\n\t航班代号 起飞地点 降落地点 起飞时间 for(i=0;i
}
void menu1()
{
int n,w1;
do
{
system( "cls" ); /*清屏*/
puts("\t\t\t\t 飞机售票操作!\n\n");
puts("\t\t*********************MENU*********************\n\n"); puts("\t\t\t\t1.按照时间排序");
puts("\t\t\t\t2.按照时间查找航班");
puts("\t\t\t\t3.按照地点查找航班");
puts("\t\t\t\t4.返回主菜单");
puts("\n\n\t\t**********************************************\n"); printf("Choice your number(1-4): [ ]\b\b");
scanf("%d",&n);
if(n4) /*对选择的数字作判断*/
{
w1=1;
printf("your choice is not between 1 and 4,Please input again:"); getchar();
getchar();
}
else w1=0;
} while(w1==1);
/*选择功能*/
switch(n)
{
case 1:order();break;
case 2:search_time();break;
case 3:serch_end();break;
case 4:menu();break;
} } puts("\n--------------------------------------------------------------------"); getchar(); /*按任意健*/ getchar(); menu1(); } /*调用显示一个记录的函数*/
int search() /*查找模块*/ {
}
void book()
{
int i;
system( "cls" ); printf("欢迎进入售票窗口!\n"); if(i!=-1) { if(ti[i].num>=ti[i].max) { printf("\n该趟航班票已售完!"); } if(k==-1) { } else return k; printf("\n\nNO exist!"); return -1; if(strcmp(s.BePlace,ti[i].BePlace)==0&&strcmp(s.EnPlace,ti[i].EnPlace)==0&k=i; /*找到要修改的记录*/ printf_one(k); break; /*调用显示一个记录的函数*/ strcmp(s.data,ti[i].data)==0) for(i=0;i
}
void back() {
} if(k==-1) { } else { printf("\n退票成功!\n"); } getchar(); /*按任意健*/ getchar(); /*按任意健*/ menu(); printf("\n\nNO exist!"); if(strcmp(s.ID,ti[i].ID)==0) { } k=i; /*找到要修改的记录*/ printf_one(k); break; /*调用显示一个记录的函数*/ int i,k=-1; struct plane s; system( "cls" ); printf("欢迎进入退票窗口!\n"); printf("\n\n输入航班代号:"); scanf("%s",s.ID); /*输入要到达的地方*/ for(i=0;i
void save() {
}
void load() {
FILE *fp; int i,w; w=1; system( "cls" ); if((fp=fopen("ticket.txt","rb"))==NULL) /*以输出打开方式, { } n=0; for(i=0;!feof(fp);i++) { printf("\nCannot open file\n"); w=0; 在此前的记录被覆盖*/ int w=1; FILE *fp; int i; system( "cls" ); if((fp=fopen("ticket.txt","wb"))==NULL) /*以输出打开方式, { } if(fwrite(&ti[i],sizeof(struct plane),1,fp)!=1) { printf("file write error\n"); } if(w==1) { printf("file save ok!\n"); } fclose(fp); getchar(); getchar(); menu(); w=0; printf("\nCannot open file\n"); return ; 在此前的记录被覆盖*/ for(i=0;i
}
void menu()
{
int n,w1;
do
{
system( "cls" ); /*清屏*/ /*清屏*/
puts("\t\t\t\t 飞机售票管理系统!\n\n");
puts("\t\t*********************MENU*********************\n\n");
puts("\t\t\t\t1.输入新航班");
puts("\t\t\t\t2.浏览 ");
puts("\t\t\t\t3.航班操作");
puts("\t\t\t\t4.订票");
puts("\t\t\t\t5.退票");
puts("\t\t\t\t6.保存");
puts("\t\t\t\t7.载入");
puts("\t\t\t\t8.退出");
puts("\n\n\t\t**********************************************\n");
printf("Choice your number(1-8): [ ]\b\b");
scanf("%d",&n);
if(n8) /*对选择的数字作判断*/
{
w1=1;
printf("your choice is not between 1 and 8,Please input enter to choice again:"); getchar();
getchar();
}
else w1=0;
} while(w1==1);
/*选择功能*/
switch(n)
{
case 1:enter();break; /*输入模块*/
case 2:browse();break; /*浏览模块*/ } n=n-1; fclose(fp); if(w==1) printf("Load file ok!"); getchar(); getchar(); menu(); fread(&ti[i],sizeof(struct plane),1,fp); n++;
case 3:menu1();break; /*查找模块*/ case 4:book();break; /*订票模块*/ case 5:back();break; /*退票模块*/ case 6:save();break; /*保存模块*/ case 7:load();break; /*加载模块*/ case 8:exit(0);
}
}
void main()
{
menu();
}