飞机订票系统课程设计报告指导老师:班级:学生姓名:学号:完成日期:计算机科学与技术系飞机订票系统课程设计报告一、系统分析。
1.1根据飞机订票系统的设计目的,设计内容和设计要求。
本团队对飞机订票系统这一基础管理系统的业务进行了细致的分析讨论。
最终我们决定将整个系统分成7个主要模块。
采用结构体这一数据结构来存放教师的信息。
首先是信息录入模块,接下来输出模块,即浏览,查询,排序信息三个模块,最后是订票,退票模块。
为降低操作难度,以及出错率,决定使用全局数组及变量进行操作。
1.2飞机订票系统简易图二、系统设计2.1总体设计(主要功能)本程序包含六大主要模块①添加信息模块;②浏览信息模块;③信息查询模块;④信息排序模块;⑤订票模块;⑥退票模块。
整体程序采用全局数组fj(飞机)进行存储,全局变量pd(判断)作为标识变量。
宏定义输出格式。
采用Y,N的方式进行操作回退或继续操作的选择。
航班信息包括:航班号,起点,终点,票价,数量及订票标志量(隐藏信息)。
输入模块,使用分条输入,以减少错误率并方便操作。
浏览,查询及排序模块,组合成输出模块。
多方式输出更便于观察并方便记录,同时为后续模块的执行提供操作基础。
订,退票模块调用查询模块实现其功能。
2.2 软件、硬件环境软件环境 VC2009硬件环境处理器Intel(R)Core(TM)******************* 2.50GHz;显卡 GTX650。
内存 4.0GB操作系统 Windows 72.3主要数据结构和程序的关系说明主要数据结构是结构体struct hbxx //定义结构体数组,航班信息{int hbh; //定义航班号char qd[20]; //起点站char zd[20]; //终点站float pj; //票价int sl; //机票数量int dcp; //订票标志量}fj[N];2.4界面设计本程序开始运行的界面,共7个选项,简洁而大方。
接下来是添加信息的界面。
采用分条添加,清晰而明朗。
浏览信息的界面,将所有航班信息显示在屏幕上。
查询航班信息界面,根据用户输入的航班号,显示其航班信息。
便于用户使用,查找。
航班排序界面,将所有航班根据航班号进行排序,可由用户选择是由大到小,还是由小到大。
订票界面,由用户输入需要订票的航班号,在进行订票操作。
退票界面。
2.5函数模块设计(函数功能说明和入口参数的说明)void xxtj(); //信息添加的函数void xianshi(); //显示航班信息void chazhao(); //查找航班信息void dingpiao(); //订票业务void tuipiao(); //退票业务void duqu(); //读取文件void baocun(); //保存文件void scgs(); //输出格式函数void paixu(); //航班排序void chushihua(); //系统初始化void jianli(); //建立数据文件void paixu1(); //按航班号从小到大排void paixu2(); //从大到小三、系统实现主要代码//飞机订票系统//头文件#include<stdio.h> //标准输入,输出函数#include<string.h> //包含字符串处理的头文件#include<process.h> //包含access的头文件,用于系统初始化#define N 9999 //定义最大航班数#define PRINT "%d\t\t%s\t\t%s\t\t%.2f\t\t%d\n",fj[i].hbh,fj[i].qd,fj[i].zd,fj[i].pj ,fj[i].sl//宏定义输出格式▲struct hbxx //定义结构体数组,航班信息{int hbh; //定义航班号char qd[20]; //起点站char zd[20]; //终点站float pj; //票价int sl; //机票数量int dcp; //订票标志量}fj[N];int i,m=0; //定义全局变量char pd[10]="y";//函数声明void xxtj(); //信息添加的函数——芦杰void xianshi(); //显示航班信息——祁海鹏void chazhao(); //查找航班信息——祁海鹏void dingpiao(); //订票业务——李平void tuipiao(); //退票业务——李平void duqu(); //读取文件——蔡晓宏void baocun(); //保存文件——蔡晓宏void scgs(); //输出格式函数——祁海鹏void paixu(); //航班排序——李平void chushihua(); //系统初始化——芦杰void jianli(); //建立数据文件——芦杰void paixu1(); //按航班号从小到大排——蔡晓宏void paixu2(); //从大到小——蔡晓宏//主函数void main() //主函数———李平{int j;chushihua(); //系统初始化判断是否存在原始的数据文件printf(" 欢迎使用飞机订票系统\n");//打印出系统主界面do{printf("========================================================= ====================\n""\t\t\t1.添加航班信息。
\n""\t\t\t2.浏览航班信息。
\n""\t\t\t3.查询航班信息。
\n""\t\t\t4.航班信息排序。
\n""\t\t\t5.订票业务。
\n""\t\t\t6.退票业务。
\n""\t\t\t0.退出。
\n""================================================================ ===============\n");printf("请在0-6中选择以回车键结束:");scanf("%d",&j);switch(j){case 1:xxtj();break; //调用信息添加函数case 2:xianshi();break; //调用显示模块case 3:chazhao();break; //调用查找模块case 4:paixu();break; //调用排序函数case 5:dingpiao();break;//调用订票模块case 6:tuipiao();break; //调用退票模块case 0:{baocun();printf("谢谢使用,再见!\n");}break;default:printf("输入有误!\n");break;}}while(j!=0); //判断是否调用其他函数}void chushihua() //定义系统初始化函数——卢杰{if(access("fjdpxt.dat",0)){jianli();}else{duqu();}}void jianli() //定义建立数据文件函数——卢杰{FILE *fp;if((fp=fopen("fjdpxt.dat","wb"))==NULL) //打印文件判断是否出错{printf("创建文件失败!"); //打印出错提示getchar();return;}printf("请依次输出航班信息(以回车键结束):\n"); //打印提示信息printf("-----------------------------------------------------------------------------\n");for(i=0;i<N;i++){printf("请输入航班号:");scanf("%d",&fj[i].hbh);printf("请输入起始站:");scanf("%s",fj[i].qd);printf("请输入终点站:");scanf("%s",fj[i].zd);printf("请输入票价:");scanf("%f",&fj[i].pj);printf("请输入机票数:");scanf("%d",&fj[i].sl);fwrite(&fj[i],sizeof(struct hbxx),1,fp);m++;printf("添加完毕,是否继续添加?请键入y或n以回车键结束:");scanf("%s",pd);if(strcmp(pd,"y")!=0) //判断是否继续添加航班信息{fclose(fp); //关闭文件return;}}}void duqu() //定义读取文件函数——蔡晓宏{FILE *fp;if((fp=fopen("fjdpxt.dat","r"))==NULL){printf("创建文件失败!");getchar();return;}i=0;while(!feof(fp)) //判断是否遇到文件结束,fread(&fj[i],sizeof(struct hbxx),1,fp); //逐块读取数据i++;m++; //计算存在的航班数}m--;fclose(fp);}void baocun() //定义保存函数——蔡晓宏{FILE *fp;if((fp=fopen("fjdpxt.dat","wb"))==NULL){printf("创建文件失败!");getchar();return;}for(i=0;i<m;i++) //逐块保存数据fwrite(&fj[i],sizeof(struct hbxx),1,fp);fclose(fp);}void xxtj() //定义添加航班信息函数——卢杰{do{printf("请依次输入您要添加的航班信息(以回车键结束):\n");//打印提示信息printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n ");printf("请输入航班号:");scanf("%d",&fj[m].hbh);printf("请输入起点站:");scanf("%s",fj[m].qd);printf("请输入终点站:");scanf("%s",fj[m].zd);printf("请输入票价:");scanf("%f",&fj[m].pj);printf("请输入机票数:");scanf("%d",&fj[m].sl);m++;printf("添加完毕,是否继续添加?请键入y或者n以回车键结束:");scanf("%s",pd);}while(!strcmp(pd,"y")); //判断是否继续添加}void scgs() //定义输出格式——祁海鹏{printf("航班号\t\t起始站\t\t终点站\t\t价格\t\t机票数\n"); //信息标题for(i=0;i<m;i++)printf(PRINT);//打印出信息}void xianshi() //定义显示航班信息函数——祁海鹏{printf("\n目前我们有如下航班:\n");scgs(); //调用输出格式函数printf("\n请按回车键返回上层菜单");getchar();getchar();}void chazhao() //定义查询函数——祁海鹏{int n;do{printf("\n请输入航班号:");scanf("%d",&n); //输入查询的航班号for(i=0;i<m;i++){if(fj[i].hbh==n) //按航班号判定输出条件{printf("\n您所查找的航班信息为:\n");printf("航班号\t\t起始站\t\t终点站\t\t票价\t\t机票数\n\n");printf(PRINT); //显示信息strcpy(pd,"y");printf("\n查询完毕,按回车键继续");getchar();getchar();return;}}printf("\n对不起,没有您需要的信息!\n");printf("是否重新查找?请键入y或n以回车键结束:");scanf("%s",pd);}while(!strcmp(pd,"y")); //判断是否重新查找}void dingpiao() //定义订票业务函数——李平{char a[10]="y";do{chazhao(); //调用查询模块if(strcmp(pd,"y")){printf("对不起!没有找到您所需要的航班,所以不能订票。