飞机订票系统(C语言代码及流程图)
- 格式:doc
- 大小:207.50 KB
- 文档页数:25
《程序设计》课程设计说明书课程名称《程序设计》设计题目飞机航班订票系统专业班级计算机应用技术201221学生姓名指导教师起止日期2013年6月8日至2013年6月14日福建林业职业技术学院自动化工程系目录1 设计内容、任务以及要求 (1)1.1设计题目的内容 (1)1.2要求 (1)2总体设计思路 (2)2.1系统基本功能 (2)2.2具体设计思想 (2)2.3系统的总体流程图 (3)3 .功能模块的详细设计 (5)3.1结构的定义 (5)3.2各个函数的设计具体设计思想和流程图 (5)4.功能模块的调试及测试 (27)4.1添加函数的测试 (27)4.2判断函数的测试 (28)4.3 删除函数的测试 (28)4.4统计函数的测试 (28)4.5 密码确认函数的测试 (14)4.6密码的修改函数 (31)4.7 主函函数的测试 (32)5 总结 (34)6致谢 (35)参考文献 (36)原程序代码: (21)1 设计内容、任务以及要求1.1设计题目的内容、任务主要利用c语言的文件操作能力设计开发一个小型的飞机订票系统,至少具有如下功能:信息读出,可以查看全部航班信息和查询一个航班信息。
可以进行添加(再添加过程中有重复显示提示信息)、删除、订票等基本操作。
操作界面要能使使用者看懂,以便使使用者正确使用。
具体内容如下:程序属于非数值计算型算法设计,学生需要设计出飞机订票系统所需要的基本功能,并设计简单的界面。
(1)通过提示菜单选择可以进行的操作。
(2)将航班的信息存入文件中,并命名为FlightInfo.txt。
(3)将订票情况信息存入文件中,并命名为SelectInfo.txt。
(4)在本系统中可以进行管理系统包含的基本操作,其中包括a)查看所有航班的信息b)输入一条航班的航班编号,从当前航班中进行查找,如果找到则显示该航班的相关信息,如果没有找到则给出提示信息c)添加一条航班的基本信息,通过输入航班编号,首先查找是否存在该航班编号的航班,如果存在则提示重新输入,否则将该航班按照顺序插入到相应位置d)删除一条航班的基本信息,通过输入航班编号,首先查找是否存在该航班编号的航班,如果存在则将该航班删除,否则给出提示信息,提示该航班不存在e)选择一条航班,需要给出学号和航班编号,如果航班编号不存在则重新输入,直到输入正确为止,并将学号和相应的航班编号存入SelectInfo.txt文件中(5)航班基本信息包括航班编号、起点、终点、飞行时间和订票额度这些简单信息。
一、设计内容与设计要求一、设计内容:飞机订票系统1.1问题描述:假设某航空公司只有M架N个座位的飞机,每架飞机每天飞行一趟。
通过该系统来实现机票的订购问题。
1.2功能要求:1)、本系统采用一个包含N个数据的结构体数组,每个数据的结构应当包括:起飞地、目的地航班号、座次号码、座次订出与否标记、订座者的姓名和订座者的身份证号码。
2)、本系统显示这样的菜单:(1)输入航班信息(2)输出航班信息(3)查找航班信息a.显示空座的数量b.显示空座的信息c.显示已订座的信息d.起飞时间(4)订票预约(5)删除定票预约(6)退出系统1、本系统成功执行菜单的每个信息,选项4)和5)将要求额外的输入,并且它们都允许用户收回其输入。
2、查找航班信息既可按线路查,也可按目的地查。
4、在两次运行之间,数据被保存于一个文件里,当本程序重新开始的时候,它首先从该文件读入数据1.3 算法提示:1、数据结构:结构体类型数组2、数据库结构:下表构成该系统的基本数据库。
1.4测试数据:每架飞机的座位N=12,M=51.5 其它:对该系统有兴趣的同学可以在实现系统基本功能后,完善系统的其它功能。
二、设计要求1).设计正确,方案合理。
2).界面友好,使用方便。
3).程序精炼,结构清晰。
4).设计报告5000字以上,含程序设计说明,用户使用说明,源程序清单及程序框图。
5).上机演示。
二、进度安排第 18 周星期一上午课题讲解查阅资料星期一下午系统需求分析模块设计星期二上午算法、数据结构设计主程序设计星期二下午各功能模块程序设计修改完善程序星期五下午各功能模块程序设计修改完善程序第 19 周时间待定星期五下午答辩目录一、需求分析 (4)1、程序的功能 (4)2、输入输出的要求 (6)二、概要设计 (9)三、详细设计 (11)1、数据类型 (11)2、模块分析 (12)3、函数的调用关系 (12)四、调试分析以及设计体会 (13)1、测试数据 (13)2、调试分析 (13)3、心得体会 (14)五、使用说明 (15)六、附录 (17)1、参考书目 (17)2、源程序清单(带注释) (17)七、计算机科学与技术系课程设计评分表 (40)一、需求分析1.1 系统功能需求1.1.1程序的功能1.系统管理员功能:1)录入和修改航班和机票的信息:输入航班号,输入起飞港,途径港,到达港,录入起飞时间,到达时间,飞行总共用时,可随时修改航班信息2)输出航班的信息:输入航班号便可输出之前输入的航班信息2.客户需要的功能:1)查找航班信息:a.显示空座的数量b.显示空座的信息c.显示已订座的信息d.起飞时间2)订票预约:查询航班信息后,提前订票预约需要的飞机票,3)删除定票预约4)退出系统1.1.2 主要模块流程图1.1.3 功能描述1.1.4各功能模块的功能描述(1)显示菜单函数:FLIGHT fltlist[5]; PASSENGER psglist[5][12]; ReadFlight(fltlist);PASSENGER* k;k=(PASSENGER*) psglist; ReadPassenger(k);用户可以根据菜单提示,选择相关菜单。
C++实现飞机订票系统本⽂实例为⼤家分享了C++实现飞机订票系统的具体代码,供⼤家参考,具体内容如下// 飞机订票系统.cpp : 定义控制台应⽤程序的⼊⼝点。
//#include "stdafx.h"#include <stdio.h>#include <string.h>#include<stdlib.h>#include<conio.h>#define N 2typedef struct plane{char ID[10];char Start_Place[10];char End_Place[10];float price;int Buy_num;int Max_num;char time[20];}PLANE;PLANE p[N];void menu();void menu1();void count(){char a[10];int i, num = 0;printf("请您输⼊要统计的飞机⽬的地:");scanf("%s", a);printf("航班代号起始地点⽬的地票价已售乘客容量时间/n");for (i = 0; i<N; i++){if (strcmp(a, p[i].End_Place) == 0){num++;printf("%s %s %s %7.2f %d %d %d/n", p[i].ID, p[i].Start_Place, p[i].End_Place, p[i].price, p[i].Buy_num, p[i].Max_num, p[i].time); }}printf("/n您想统计的航班有%d条!/n", num);getchar();menu1();}void browse(){int i;system("cls");printf("浏览航班信息:/n");printf("航班代号起始地点⽬的地票价已售乘客容量时间/n");for (i = 0; i<N; i++){printf("%s %s %s %7.2f %d %d %s/n", p[i].ID, p[i].Start_Place, p[i].End_Place, p[i].price, p[i].Buy_num, p[i].Max_num, p[i].time); }getchar();menu();}void order(){int i, j;PLANE temp;for (i = 0; i<N; i++){for (j = i; j<N; j++){if (strcmp(p[i].time, p[j].time)>0){temp = p[i];p[i] = p[j];p[j] = temp;}}}browse();}void enter(){int i;system("cls");printf("请您输⼊航班信息:");for (i = 0; i<N; i++){printf("航班代号:");scanf("%s", p[i].ID);printf("起飞地点:");scanf("%s", p[i].Start_Place);printf("⽬的地点:");scanf("%s", p[i].End_Place);printf("票价:");scanf("%f", &p[i].price);p[i].Buy_num = 0;printf("乘客容量:");scanf("%d", &p[i].Max_num);printf("起飞时间:");scanf("%s", p[i].time);}getchar();menu();}void buy(){char t[20], place[20];int i, w = 0, num;printf("时间");scanf("%s", t);printf("mudidi");scanf("%s", place);for (i = 0; i<N; i++){if (strcmp(t, p[i].time) == 0 && strcmp(place, p[i].End_Place) == 0){w = 1;printf("%s %s %s %7.2f %d %d %s/n", p[i].ID, p[i].Start_Place, p[i].End_Place, p[i].price, p[i].Buy_num, p[i].Max_num, p[i].time); printf("买⼏张票!");scanf("%d", &num);if (p[i].Buy_num + num>p[i].Max_num){printf("当前余票不⾜,只剩%d张", p[i].Max_num - p[i].Buy_num);}else{p[i].Buy_num = p[i].Buy_num + num;printf("购票成功!");}}}if (w == 0)printf("没有您要得票!");getchar();menu1();}void back(){char id[20];int i, w = 0;printf("id:");scanf("%s", id);for (i = 0; i<N; i++){if (strcmp(id, p[i].ID) == 0){p[i].Buy_num--;printf("退票成功");w = 1;}}if (w == 0)printf("退票失败");getchar();menu1();}void bowse_time(){char a[20];int i, w = 0;printf("请您输⼊要查询的飞机起飞时间:");scanf("%s", a);printf("航班代号起始地点⽬的地票价已售乘客容量时间/n");for (i = 0; i<N; i++){if (strcmp(a, p[i].time) == 0){w = 1;printf("%s %s %s %7.2f %d %d %s/n", p[i].ID, p[i].Start_Place, p[i].End_Place, p[i].price, p[i].Buy_num, p[i].Max_num, p[i].time); }}if (w == 0)printf("没有您想查询的航班!/n");getchar();menu1();}void bowse_palce(){char a[10];int i, w = 0;printf("请您输⼊要查询的飞机⽬的地:");scanf("%s", a);printf("航班代号起始地点⽬的地票价已售乘客容量时间/n");for (i = 0; i<N; i++){if (strcmp(a, p[i].End_Place) == 0){w = 1;printf("%s %s %s %7.2f %d %d %d/n", p[i].ID, p[i].Start_Place, p[i].End_Place, p[i].price, p[i].Buy_num, p[i].Max_num, p[i].time); }}if (w == 0)printf("没有您想查询的航班!/n");getchar();menu1();}void bowse_ID(){char a[10];int i, w = 0;printf("请您输⼊要查询的飞机航班号:");scanf("%s", a);printf("航班代号起始地点⽬的地票价已售乘客容量时间/n");for (i = 0; i<N; i++){if (strcmp(a, p[i].ID) == 0){w = 1;printf("%s %s %s %7.2f %d %d %d/n", p[i].ID, p[i].Start_Place, p[i].End_Place, p[i].price, p[i].Buy_num, p[i].Max_num, p[i].time); }}if (w == 0)printf("没有您想查询的航班!/n");getchar();menu1();}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.Buy ticket");puts("/t/t/t/t2.return ticket");puts("/t/t/t/t3.bowse by time");puts("/t/t/t/t4.bowse by end palce");puts("/t/t/t/t5.bowse by plane ID");puts("/t/t/t/t6.return to menu");puts("/n/n/t/t**********************************************/n");printf("Choice your number(1-6): [ ]/b/b");scanf("%d", &n);if (n<0 || n>6){w1 = 1;printf("your choice is not between 1 and 4,Please input again:"); getchar();}else w1 = 0;} while (w1 == 1);switch (n){case 1:buy(); break;case 2:back(); break;case 3:bowse_time(); break;case 4:bowse_palce(); break;case 5:bowse_ID(); break;case 6:menu();}}int save(){int w = 1;FILE *fp;int i;system("cls");if ((fp = fopen("c://ticket.txt", "wb")) == NULL){printf("/nCannot open file/n");return NULL;}for (i = 0; i<N; i++)if (fwrite(&p[i], sizeof(struct plane), 1, fp) != 1){printf("file write error/n");w = 0;}if (w == 1){printf("file save ok!/n");}fclose(fp);getchar();menu();}int load(){FILE *fp;int i, w;w = 1;system("cls");if ((fp = fopen("c://ticket.txt", "rb")) == NULL){printf("/nCannot open file/n");w = 0;return NULL;}for (i = 0; !feof(fp); i++){fread(&p[i], sizeof(struct plane), 1, fp);}fclose(fp);if (w == 1)printf("Load file ok!");getchar();menu();}void main(){menu();}void menu(){int n, w1;do{system("cls");puts(" 飞机售票系统 ");puts("*************************MENU*************************");puts(" 1. Enter new plane");puts(" 2. Browse all");puts(" 3. opreration");puts(" 4. Save file");puts(" 5. Load file");puts(" 6. Exit");puts("******************************************************");printf("Choice your number(1-6): ");scanf("%d", &n);if (n<0 || n>6){w1 = 1;printf("your choice is not between 1 and 6,Please input again:");getchar();}else w1 = 0;} while (w1 == 1);switch (n){case 1: enter(); break;case 2: browse(); break;case 3: menu1(); break;case 4: save(); break;case 5: load(); break;case 6: exit(0);}}以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
⼤⼀C语⾔课程设计--飞机订票系统#include#include#includestruct airplane{int num;char begin[20];char end[20];char time[20];double fee;int count;}plane[2014];void home();void input();void del();void scan();void book();void change();void quit();void sou();void save();void read();void home(){int a,i,j;printf("\n\n *****************************欢迎进⼊飞机票务系统*****************************\n\n");printf("==========您好,现在要确认您的⾝份!票务⼈员请按 1 ,旅客请按 0 ===========");scanf("%d",&a);if(a==1)do{printf("\n\t\t^o^o^o^o^o^o^o^o^ 1.输⼊航班信息 ^o^o^o^o^o^o^o^o^\n");printf("\t\t^o^o^o^o^o^o^o^o^ 2.删除航班信息 ^o^o^o^o^o^o^o^o^\n");printf("\t\t^o^o^o^o^o^o^o^o^ 3.浏览航班信息 ^o^o^o^o^o^o^o^o^\n");printf("\t\t^o^o^o^o^o^o^o^o^ 0.退出 ^o^o^o^o^o^o^o^o^\n\n");printf("请在0~3之间选择您要进⾏的操作 ");scanf("%d",&i);if(i>=0&&i<=3)switch(i){case 0: break;case 1:input(); break;case 2: del(); break;case 3:scan(); break;}else{printf("\n输⼊错误!!\n\n\n");continue;}printf("\n\n **************************以⾼度负责的态度做好春运⼯作**************************\n\n");} while(i!=0);if(a==0)do{printf("\n\t\t<><><><><><><><><><> 1.订票 <><><><><><><><><><>\n");printf("\t\t<><><><><><><><><><> 2.改签 <><><><><><><><><><>\n");printf("\t\t<><><><><><><><><><> 3.退票 <><><><><><><><><><>\n");printf("\t\t<><><><><><><><><><> 4.浏览航班信息 <><><><><><>\n");printf("\t\t<><><><><><><><><><> 5.查询 <><><><><><><><><><>\n");printf("\t\t<><><><><><><><><><> 0.退出 <><><><><><><><><><>\n\n");printf("请在0~5之间选择您要进⾏的操作");scanf("%d\n\n",&j);if(j>=0&&j<=5)switch(j){case 0: break;case 1:book(); break;case 2:change(); break;case 3:quit(); break;case 4:scan(); break;}else{printf("\n输⼊错误!!\n\n\n");continue;}printf("\n\n *******************春节即将到来,提前祝您春节快乐,出⾏平安********************\n\n"); } while(j!=0);}void input() // 输⼊航班{char sysm[]="jim007";char youm[20];int i,m;printf("请输⼊密码: ");scanf("%s",youm);if(strcmp(sysm,youm)!=0){printf("输⼊密码错误!请确认您是否是票务⼈员,如不是,请按任意键返回菜单重新选择" ); getchar();getchar();home();}else{system("cls");printf("请问要输⼊⼏个航班信息: ");scanf("%d",&m);printf("\n\n******************************************************************\n\n");for(i=0;i{printf("请输⼊航班号:\n");scanf("%d",&plane[i].num);printf("请输⼊起飞地点:\n");scanf("%s",plane[i].begin);printf("请输⼊降落地点:\n");scanf("%s",plane[i].end);printf("请输⼊起飞时间:\n");scanf("%s",plane[i].time);printf("请输⼊票价:\n");scanf("%lf",&plane[i].fee);printf("请输⼊机票数:\n");scanf("%d",&plane[i].count);}getchar();home();}}void del() //删除模块{char be[20];char en[20];char sysm[]="jim007";char youm[20];int i,w,p,q,k=0;printf("请输⼊密码: ");scanf("%s",youm) ;if(strcmp(sysm,youm)!=0){printf("输⼊密码错误!请确认您是否是票务⼈员,如不是,请按任意键返回菜单重新选择" );getchar();getchar();home();}elseprintf("1.按航班号删除 \n");printf("2.按航线删除 \n");printf("请在1-2中选择删除⽅式: ");scanf("%d",&q);switch(q){case 1:printf("请输⼊航班号: ");scanf("%d",&p);break;case 2:printf("请输⼊起飞地点: ");scanf("%s",be);printf("请输⼊降落地点: ");scanf("%s",en);break;}printf("\n\n航班号\t起飞地点\t降落地点\t起飞时间\t票价\t机票数 \n\n");for(i=0;i{if(q==1&&plane[i].num==p){k++;printf("\n\n%d\t%s\t%s\t%s\t%lf\t%d\n",plane[i].num,plane[i].begin,plane[i].end,plane[i].time,plane[i].fee,plane[i].count); }if(q==2&&strcmp(plane[i].begin,be)==0&&strcmp(plane[i].end,en)==0){k++;printf("\n\n%d\t%s\t%s\t%s\t%lf\t%d\n",plane[i].num,plane[i].begin,plane[i].end,plane[i].time,plane[i].fee,plane[i].count); }}if(k=0)printf("没有找到此航班,⽆法删除!");elseprintf("确定删除请按 1 否则请按 0:\n\n");scanf("%d",&w);if(w==1)for(i=0;i{plane[i].num=0;strcpy(plane[i].begin,"0");strcpy(plane[i].end,"0");strcpy(plane[i].time,"0");plane[i].fee=0;plane[i].count=0;}getchar();getchar();home();}void scan() //浏览{if(m==0)printf("\n\n⽆航班信息\n\n");else{printf("\n\n航班号\t起飞地点\t降落地点\t起飞时间\t票价\t机票数 \n\n");for(i=0;iprintf("\n\n%d\t%s\t%s\t%s\t%lf\t%d\n",plane[i].num,plane[i].begin,plane[i].end,plane[i].time,plane[i].fee,plane[i].count); }getchar();home();}void book() //订票模块{int i,a;struct airplane d;system( "cls" );do{sou();printf("请输⼊您要订的航班号: ");scanf("%d",&d.num);printf("请输⼊您要订的机票数: ");scanf("%d",&d.count);for(i=0;iif(result[i].num==d.num){if(result[i].count!=0&&result[i].count>= d.count){result[i].count=result[i].count- d.count;printf("恭喜您订票成功!祝您旅途愉快!\n");break;}if(result[i].count{printf("此航班只剩下%d张票,订票失败",result [i].count);break;}}printf("\n\n继续订票请按 1 ,退出请按 0 ");scanf("%d",&a);}while(a==1);void change() //改签模块{int i,num1,num2;system( "cls" );do{sou();printf("请输⼊您改签前的航班号: ");scanf("%d",&num1);printf("请输⼊您改签后的航班号: ");scanf("%d",&num2);for(i=0;iif(result[i].num==num1)result[i].count=result[i].count+1;for(i=0;iif(result[i].num==num2)result[i].count=result[i].count-1;printf("恭喜您改签成功!祝您旅途愉快!\n");break;printf("\n\n继续改签请按 1 ,退出请按 0 ");scanf("%d",&a);}while(a==1);void quit() //退票模块{int i,a;struct airplane f;system( "cls" );do{sou();printf("请输⼊您要退订的航班号: ");scanf("%d",&f.num);printf("请输⼊您要退订的机票数: ");scanf("%d",&f.count);if(d.count<0){printf("您输⼊的票数有误,请重新输⼊\n");break;}for(i=0;iif(result[i].num==f.num){result[i].count=result[i].count+ f.count;printf("恭喜您退票成功! \n");break;}elseprintf("抱歉,您输⼊的航班号有误!");printf("\n\n继续订票请按 1 ,退出请按 0 ");scanf("%d",&a);}while(a==1);}void sou() //查询模块{int i,c,d,e,t,j=0;struct airplane a;struct airplane result[20];system( "cls" );printf("\n\n请输⼊起飞时间:");scanf("%s",a.time);printf("\n\n请输⼊起飞地点:");scanf("%s",a.begin);printf("\n\n请输⼊降落地点:");scanf("%s",a.end);printf("请选择排序⽅式( 1:按航班号升序;2:按票价升序)")scanf("%d",&c);printf("\n\n航班号\t起飞地点\t降落地点\t起飞时间\t票价\t机票数 \n\n");for(i=0;i{if(plane[i].time==a.time&&strcmp(plane[i].begin,a.begin)==0&&strcmp(plane[i].end,a.end)==0) result[j]=plane[i]j++;}if(j==0)printf("抱歉,暂时没有该条件的航班!");if(j>0&&c==1){for(d=0;dfor(e=d+1;eif(result[e].num{t= result[e];result[e]= result[e-1];result[e-1]=t;}}if(j>0&&c==0){for(d=0;dfor(e=d+1;eif(result[e].fee{t= result[e];result[e]= result[e-1];result[e-1]=t;}}for(i=0;iprintf("\n\n%d\t%s\t%s\t%s\t%lf\t%d\n", result[i].num, result[i].begin, result [i].end, result[i].time, result[i].fee, result[i].count); }void save() //保存模块{FILE *fp;int i,w=1;system( "cls" );if((fp=fopen("C:\\Users\\Administrator\\Desktop\\plane.txt","w"))==NULL){printf("打开⽂件错误\n");exit(0);}for(i=0;iif(fwrite(fp,sizeof(struct airplane),1, &plane[i])==0){printf("⽂件保存错误!\n");exit(0);w=0;}if(w==1)printf("⽂件保存成功!\n");fclose(fp);getchar();getchar();home();}void read() //读取模块{int i;FILE *fp;if(fp=fopen("C:\\Users\\Administrator\\Desktop\\plane.txt","r")==NULL){printf("⽂件打开失败\n");exit(0);}else{while(!feof(fp))for(i=0;ifread(plane[i],sizeof(struct airplane),1,fp)}getchar();getchar();home();}。
一、设计内容与设计要求一、设计内容:飞机订票系统1.1问题描述:假设某航空公司只有M架N个座位的飞机,每架飞机每天飞行一趟。
通过该系统来实现机票的订购问题。
1.2功能要求:1)、本系统采用一个包含N个数据的结构体数组,每个数据的结构应当包括:起飞地、目的地航班号、座次号码、座次订出与否标记、订座者的姓名和订座者的身份证号码。
2)、本系统显示这样的菜单:(1)输入航班信息(2)输出航班信息(3)查找航班信息a.显示空座的数量b.显示空座的信息c.显示已订座的信息d.起飞时间(4)订票预约(5)删除定票预约(6)退出系统1、本系统成功执行菜单的每个信息,选项4)和5)将要求额外的输入,并且它们都允许用户收回其输入。
2、查找航班信息既可按线路查,也可按目的地查。
4、在两次运行之间,数据被保存于一个文件里,当本程序重新开始的时候,它首先从该文件读入数据1.3 算法提示:1、数据结构:结构体类型数组2、数据库结构:下表构成该系统的基本数据库。
1.4测试数据:每架飞机的座位N=12,M=51.5 其它:对该系统有兴趣的同学可以在实现系统基本功能后,完善系统的其它功能。
二、设计要求1).设计正确,方案合理。
2).界面友好,使用方便。
3).程序精炼,结构清晰。
4).设计报告5000字以上,含程序设计说明,用户使用说明,源程序清单及程序框图。
5).上机演示。
二、进度安排第 18 周星期一上午课题讲解查阅资料星期一下午系统需求分析模块设计星期二上午算法、数据结构设计主程序设计星期二下午各功能模块程序设计修改完善程序星期五下午各功能模块程序设计修改完善程序第 19 周时间待定星期五下午答辩目录一、需求分析 (4)1、程序的功能 (4)2、输入输出的要求 (6)二、概要设计 (9)三、详细设计 (11)1、数据类型 (11)2、模块分析 (12)3、函数的调用关系 (12)四、调试分析以及设计体会 (13)1、测试数据 (13)2、调试分析 (13)3、心得体会 (14)五、使用说明 (15)六、附录 (17)1、参考书目 (17)2、源程序清单(带注释) (17)七、计算机科学与技术系课程设计评分表 (40)一、需求分析1.1 系统功能需求1.1.1程序的功能1.系统管理员功能:1)录入和修改航班和机票的信息:输入航班号,输入起飞港,途径港,到达港,录入起飞时间,到达时间,飞行总共用时,可随时修改航班信息2)输出航班的信息:输入航班号便可输出之前输入的航班信息2.客户需要的功能:1)查找航班信息:a.显示空座的数量b.显示空座的信息c.显示已订座的信息d.起飞时间2)订票预约:查询航班信息后,提前订票预约需要的飞机票,3)删除定票预约4)退出系统1.1.2 主要模块流程图1.1.3 功能描述1.1.4各功能模块的功能描述(1)显示菜单函数:FLIGHT fltlist[5]; PASSENGER psglist[5][12]; ReadFlight(fltlist);PASSENGER* k;k=(PASSENGER*) psglist; ReadPassenger(k);用户可以根据菜单提示,选择相关菜单。
C语言课程设计-航班订票系统C语言课程设计姓名:班级:学号:开始菜单0 1 4 3 2退出查询航班信息订票输入航班信息浏览航班信息输入航班数输出航班信输入需要订输入需要查息,航班数每票的航班号找的航班号碰到10的倍数,系统暂输入每个航停,按任意键班的航班从第一个航班开从第一个航班继续号,起始站,始,用strcmp语开始,用strcmp终点站,飞句进行对比语句进行对比行时间,预售票数找到相同未找到如果找未找到航班号,该航班到相同该航班在已售票号,输的航班号,输数目上加出,对号,输出,对上(需要j不起,出该航不起,订票的数没有该班信息没有该目) 航班航班输出,订票成功结束源程序#include<stdio.h>#include <stdlib.h>#include<string.h>#define N 50typedef struct flight{char flightNo[10]; //航班号char start[10]; //起始站char end[10]; //终点站float day; //飞行时间int totalTicket; //预售票总数int sellTicket; //已售票总数}Flight; //航班结构体int Index=0;Flight f[N];void input_flight_info( );void output_flight_info(int total); void search_flight_info();int revise_flight_info();void main() //编写菜单{int a;while(1){printf("============================================================ ========\n\n");printf("-------?-----?-----《欢迎进入飞机订票系统》?-----?-----?-------\n\n\n\n");printf("--------------------------*1.输入航班信息*--------------------------\n\n");printf("--------------------------*2.浏览航班信息*--------------------------\n\n");printf("--------------------------*3.查找航班信息*--------------------------\n\n");printf("--------------------------*4.订票*--------------------------\n\n");printf("--------------------------*0.退出订票系统*--------------------------\n\n");scanf("%d",&a);switch(a){case 1:input_flight_info(); //进入输入航班信息系统break;case 2:output_flight_info(Index); //进入浏览航班信息系统break;case 3:search_flight_info(); //进入查找航班信息系统break;case 4:revise_flight_info(); //进入订票系统break;case 0: //退出订票系统exit(0);}}}/*输入航班信息*/void input_flight_info( ) {int i,n;printf("输入航班数:"); //定义航班数scanf("%d",&n);Index=n;for(i=0;i<n;i++){printf("请输入航班号:\n");scanf("%s",f[i].flightNo); //输入航班号printf("请输入起始站:\n");scanf("%s",f[i].start); //输入起始站printf("请输入终点站:\n");scanf("%s",f[i].end); //输入终点站printf("请输入飞行时间:\n");scanf("%f",&f[i].day); //输入飞行时间printf("请输入预售票总数:\n");scanf("%d",&f[i].totalTicket); //输入预售票总数printf("请输入已售票总数:\n");scanf("%d",&f[i].sellTicket); //输入已售票总数}}/*浏览航班信息*/void output_flight_info(int total) {int i;for(i=1;i<total;i++){printf("航班号:%s\n",f[i].flightNo); //字符型printf("起始站:%s\n",f[i].start); //字符型printf("终点站:%s\n",f[i].end); //字符型printf("飞行时间:%f\n",f[i].day); //浮点型printf("预售票总数:%d\n",f[i].totalTicket); //整数型printf("已售票总数:%d\n",f[i].sellTicket); //整数型printf("\n");if(i%10==0&&i!=0)system("pause");}system("pause");}/*查找航班信息*/void search_flight_info(){int i;char temp[10];printf("请输入你要查询的航班号:\n");scanf("%s",&temp);for(i=0;i<50;i++) //查找相应的航班号{if(strcmp(f[i].flightNo,temp)==0)break;}if(i==50)printf("对不起,没有该航班\n");else{printf("航班号:%s\n",f[i].flightNo);printf("起始站:%s\n",f[i].start); //输出该航班的起始站printf("终点站:%s\n",f[i].end); //输出该航班的终点站printf("飞行时间:%f个小时\n",f[i].day); //输出该航班的飞行时间printf("预售票总数:%d\n",f[i].totalTicket); //输出该航班的预售票总数printf("已售票总数:%d\n",f[i].sellTicket); //输出该航班的已售票总数}}/*订票系统*/int revise_flight_info(){int i,j,k;char temp[10];printf("请输入的你要订票的航班号:\n");scanf("%s",&temp);for(i=0;i<50;i++) //查找相应的航班号{if(strcmp(f[i].flightNo,temp)==0){k=f[i].totalTicket-f[i].sellTicket; //剩余票数printf("请输入你想要的票数:\n");scanf("%d",&j);if(j>k)printf("对不起,剩余的票数只有%d\n",k);else{f[i].sellTicket=f[i].sellTicket+j; //在已售票的数目上加上刚销售的票数printf("订票成功\n");return f[i].sellTicket; //将售票的数目返回给原函数} break;}elseprintf("对不起,没有该航班\n");break;}}。
#include<stdio.h> //标准输入、输出头文件#include<string.h> //包含字符串函数处理头文件#include<process.h> //包含access函数的头文件#define N 9999 //定义最多的航班数#define PRINT "%d\t\t%s\t\t%s\t\t星期%s\t\t%d\n ",s[i].num,s[i].start,s[i].over,s[i].time,s[i].count //宏定义输出格式struct air //定义结构体数组{int num; //定义航班号char start[20]; //航班起始站char over[20]; //终点站char time[10]; //飞行时间int count; //机票数量}s[N];int i,m=0; //定义全局变量char ii[10];void add(); //函数声明增加航班信息函数void print(); //显示航班信息void search(); //查找航班信息void dingpiao(); //订票业务void tuipiao(); //退票void read(); //读取文件void save(); //保存文件void output(); //输出格式void paixu(); //航班排序void chushihua(); //系统初始化void build(); //建立数据文件void paixu1(); //按航班号从小到大排序void paixu2(); //从大到小void main() //主函数{int j;chushihua(); //系统初始化判断是否存在原始数据文件printf(" 欢迎使用飞机订票系统\n"); //打印出系统主界面do{printf("============================================================ ==================== ");printf("1.增加航班信息\n""\t2.浏览航班信息\n""\t\t3.查找航班信息(按航班号)\t\t╮(╯_╰)╭\n""\t\t\t4.航班排序(按航班号)\n""\t\t\t\t5.订票业务\n""\to(︶︿︶)o\t\t\t6.退票业务\n""\t\t\t\t\t\t0.退出\n");printf("======================================================== ======================== ");printf("请在0-6中选择以回车键结束:");scanf("%d",&j);switch(j){case 1: add(); //调用增加航班函数break;case 2:print(); //调用显示模块break;case 3:search(); //调用查找模块break;case 4:paixu(); //调用排序函数break;case 5:dingpiao(); //调用订票模块break;case 6:tuipiao(); //调用退票模块break;case 0: //退出系统save();printf("谢谢使用,再见!");break;}}while(j!=0); //判断是否调用其他函数}void chushihua() //定义系统初始化函数{if(access("hangban.dat",0)){build();}elseread();}void build() //定义建立数据文件函数{FILE *fp; //定义文件指针if((fp=fopen("hangban.dat","wb"))==NULL) //打开文件并判定是否出错{printf("创建文件失败! "); //打印出错提示getchar();return;}printf("请依次输入航班信息(以回车键结束):\n"); //打印提示信息printf("-------------------------------------------------------------------------- \n");for(i=0;i<N;i++){printf("请输入航班号: ");scanf("%d",&s[i].num); //输入航班号printf("请输入起始站: ");scanf("%s",s[i].start); //输入起始站printf("请输入终点站: ");scanf("%s",s[i].over); //输入终点站printf("请输入时间(星期几): ");scanf("%s",s[i].time); //输入时间printf("请输入机票数: ");scanf("%d",&s[i].count); //输入机票数fwrite(&s[i],sizeof(struct air),1,fp);m++;printf("添加完毕,是否继续添加?请键入y或n以回车键结束:");scanf("%s",ii);if(strcmp(ii,"y")!=0) //判断是否继续添加航班信息{fclose(fp); //关闭文件return;}}}void read() //定义读取文件函数{FILE *fp;if((fp=fopen("hangban.dat","r"))==NULL){printf("创建文件失败! ");getchar();return;}i=0;while(!feof(fp)){fread(&s[i],sizeof(struct air),1,fp); //逐块读取数据i++;m++; //计算存在航班数}m--;fclose(fp);}void save() //定义保存函数{FILE *fp;if((fp=fopen("hangban.dat","wb"))==NULL){printf("创建文件失败! ");getchar();return;}for(i=0;i<m;i++) //逐块保存数据fwrite(&s[i],sizeof(struct air),1,fp);fclose(fp);}void add() //定义增加航班信息函数{do{printf("请依次输入您要增加的航班信息(以回车键结束): \n"); //打印提示信息printf("-------------------------------------------------------------------------- \n");printf("请输入航班号: ");scanf("%d",&s[m].num); //读取航班号printf("请输入起始站: ");scanf("%s",s[m].start); //读取起始站printf("请输入终点站: ");scanf("%s",s[m].over); //读取终点站printf("请输入时间: ");scanf("%s",s[m].time); //读取时间printf("请输入机票数: ");scanf("%d",&s[m].count); //读取机票数m++;printf("添加完毕,是否继续添加?请键入y或n以回车键结束:");scanf("%s",ii);}while(!strcmp(ii,"y")); //判断是否继续添加}void output() //定义输出格式函数{printf("航班号\t\t起始站\t\t终点站\t\t时间\t\t机票数\n"); //信息标题for(i=0;i<m;i++)printf(PRINT);//打印出信息}void print() //定义显示航班信息函数{printf("\n目前我们有如下航班:\n");output(); //调用输出格式函数printf("\n请按回车键返回上层菜单");getchar();getchar();}void search() //定义查询函数{int n;do{printf("\n请输入航班号:");scanf("%d",&n); //输入查询的航班号for(i=0;i<m;i++){if(s[i].num==n) //按航班号判定输出条件{printf("\n您所查找的航班信息为:\n ");printf("航班号\t\t起始站\t\t终点站\t\t时间\t\t机票数\n\n");printf(PRINT); //显示信息printf("\n查询完毕,按回车键继续");getchar();getchar();return;}}printf("\n对不起,没有您需要的信息!\n ");printf("是否重新查找?请键入y或n以回车键结束");scanf("%s",ii);}while(!strcmp(ii,"y"));//判定是否重新查找}void dingpiao() //定义订票业务函数{int n;char a[10]="y";do{search(); //调用查询模块if(!strcmp(ii,"n")){printf("对不起!没有找到您所需要的航班,所以不能订票。
数据结构课程设计--飞机订票系统摘要随着时代的进步社会分工的不断细化,各个行业联系的不断密切,人们出行越来越多,出行的方式也是百花齐放,作为空中重要的交通工具,飞机航空系统也在不断地得到优化,其中重要的一项就是航空飞机订票系统,因此好的订票系统关系着人们的日常出行方便与否,设计并编制出符合人们需要的航空订票系统是一项繁重而艰巨的任务。
本文Microsoft Visual C 6.0作为程序代码的实现软件,进行飞机订票系统的数据结构课程设计。
首先,根据课程设计内容进行需求分析,确定主要的功能模块,。
然后进行数据结构、各功能模块算法以及它们之间的调用关系的概要设计,做出各信息模块的数据结构表,并给出所用的结构体和结点类型。
在此基础上,进行各功能模块的详细算法设计,做出各算法的流程图。
最后,对系统进行测试,分为合法数据测试和非法数据测试,并对测试结果截图保存。
本系统包含录入航班信息、订票、退票、查询航班信息、查询订票信息、修改航班信息和退出系统7个基本功能,经测试后健壮性良好。
关键词飞机订票系统;数据结构;C语言;单链表i3需求分析3.1 用户需求分析用户使用此程序所要完成的工作主要为:录入和查询所有航线信息、查看已订票客户信息、查询航线、办理订票业务、办理退票业务。
通过此系统可以方便的进行上述工作。
每条航线所涉及的信息有:终点站名、航班号、飞行时间、票价、乘员定额、余票量。
已订票的客户名单信息包括姓名、订票量、舱位等级(1,2或3)。
等候替补的客户名单信息包括姓名、所需票量。
查询航线功能可以根据旅客提出的终点站名输出航班号、飞行时间、票价、乘员定额、余票量。
订票业务功能根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若尚有余票,则为客户办理订票手续,输出座位号;若已满员或余票额少于定票额,则需重新询问客户要求。
若需要,可登记排队候补购票。
退票业务功能根据客户提供的情况(航班号、姓名)为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其他排队候补的客户。
飞机订票管理系统-C语言课程设计设计报告题目:飞机订票管理系统学院:工商管理学院专业:信息管理与信息系统专业班级:050507姓名:赵伟宏指导教师:张守伟设计日期:2006年12月14日——12月17日题目:飞机订票管理系统一、选题背景:问题提出:在以往的机订票系统过程中~由于订票系统过于复杂~往往给订票工作人员带来了很多的不便~工作人员要知道是否还有多余的空座以及航班都十分困难~依次也给乘客带来了很多的麻烦~飞机订票系统提供的功能过于烦琐~而且有些程序并不提供订票的功能。
为此,这里用C语言编制了几个函数,用于程序中时,可达到让工作人员准确订票的目的.二、设计思路:飞机订票系统是对中国民航订票系统的管理~即对为的方便乘客~对工作人员输入和删除航班信息~乘客浏览和查找航班信息以及订票和退票的系统管理。
本程序是通过简单的C语言的基本函数来管理运行的~来实现飞机订票系统管理的基本功能。
在实现过程中~应用循环来判断运行相应的函数~即可达到方便查找和管理的功能。
三:设计分析:应用技术点及主要解决问题阐述通过飞机订票系统管理函数~来实现对飞机订票的管理~通过调用输入模块~调用打印模块~调用修改模块~调用查找模块~调用删除模块~调用订票模块~调用退票模块~来输出飞机订票系统的程序~从而来是工作人员和乘客方便的打印和查询飞机航班的系统。
技术关键飞机订票系统管理主要运用了调用函数~其中包括输入函数,void input()),输出函数,void print()),保存函数,void save()),读取函数,void read()),查找函数,voidsearch()),删除函数,void shanchu()),订票函数,void dingpiao()),退票函数~void tuipiao(),修改(void xiugai())。
四:程序流程图主函数输入函数修改函数函数函数函数函数输出查找订票删除void input() void print() xiugai() search() dingpiao() shuanch() (( ()shanchu()voidshanchu()退票函数 tuipiao()开始dowhile输出管理的程序(1-7)关于调用函数I输入j的计算值选择j=7 j=5 j=6 j=1 j=2 j=3 j=4dingpiao() input() print() xiugai() search() Shunchu() dingpiao() tuipiao()dingpiao() break break break break break break break五、程序清单:一,二(#include<stdio.h> /*标准输入、输出头文件*/ #include<string.h> /*包含字符串函数处理头文件*/ #include<stdlib.h> /*包含动态存储与释放函数头文件*/#define N 1000struct air /*定义结构体数组*/ {int num;char start[20];char over[20];char time[10];int count;}s[N];int i;int m=0;#define PRINT "%-d%12s%12s%10s%12d\n",s[i].num,s[i].start,s[i].over,s[i].time,s[i].count /*定义输出格式*/void input(); /*输入航班信息*/void print(); /*输出航班信息*/void save(); /*保存航班信息*/void read(); /*读取航班信息*/void search(); /*查找航班信息*/void shanchu(); /*删除航班信息*/void dingpiao(); /*订票信息*/void tuipiao(); /*退票信息*/void xiugai(); /*修改信息*/void main(){int j;printf(" ?---您好,欢迎进入中国民航管理系统~---?\n");printf("============================================================ ====================\n");do{printf(" -------- ? 1.输入航班信息 ?-------- \n\n"" -------- ? 2.浏览航班信息 ?-------- \n\n"" -------- ? 3.修改航班信息 ?-------- \n\n"" -------- ? 4.查找航班信息 ?-------- \n\n"" -------- ? 5.删除航班信息 ?-------- \n\n"" -------- ? 6.订票信息 ?-------- \n\n"" -------- ? 7.退票信息 ?-------- \n\n"" -------- ? 0.退出 ?-------- \n\n");printf("============================================================ ====================\n");printf("请在0-7中选择以回车键结束:\n\n");scanf("%d",&j);switch(j){case 1: input();/*调用输入模块*/ break;case 2:print();/*调用打印模块*/ break;case 3:xiugai();/*调用修改模块*/ break;case 4:search();/*调用查找模块*/ break;case 5:shanchu(); /*调用删除模块*/ break;case 6:dingpiao();/*调用订票模块*/ break;case 7:tuipiao();/*调用退票模块*/ break;case 0:;break;}}while(j!=0); /*判断结束*/printf("谢谢使用,再见~\n");}/*主函数结束*/void input()/*打印模块程序*/{char f[]="2008china"; /*设置密码*/int y;printf("请输入密码并以回车键结束:\n\n");scanf("%s",f); /*读取密码*/if(strcmp(f,"2008china")==0){printf("请依次输入航班信息(机票数位0结束输入):\n\n""完成输入信息请键入w以回车键结束\n\n"); /*打印提示信息*/printf("--------------------------------------------------------------------------\n");for(i=0;i<N;i++){printf("请输入航班号:\n");scanf("%d",&s[i].num); /*读取航班号*/printf("请输入起始站:\n");scanf("%s",s[i].start);/*读取起始站*/printf("请输入终点站:\n");scanf("%s",s[i].over);/*读取终点站*/printf("请输入时间:\n");scanf("%s",s[i].time);/*读取时间*/printf("请输入机票数(机票数为0结束输入):\n",m);scanf("%d",&s[i].count);/*读取机票数*/m++;printf("第%d个信息已经输完是否继续?按任意键继续,按 0结束",m);scanf("%d",&y);if(y==0){save();/*将结构体信息存盘*/print();/*输出输入的航班信息*/break;}}}elseprintf("输入密码错误!请检查您的密码是否正确!谢谢!再见!\n\n"); }void save()/*保存模块程序*/{FILE *fp,*fp1;/*定义文件指针*/if((fp=fopen("chen.dat","wb"))==NULL)/*打开文件并判断是否出错*/ {printf("创建文件失败!\n\n");/*打印出错提示*/getchar();return;}if((fp1=fopen("hao.dat","wb"))==NULL)/*打开文件并判断是否出错*/ {printf("创建文件失败!\n\n");/*打印出错提示*/getchar();return;}for(i=0;i<m;i++)if(fwrite(&s[i],sizeof(struct air),1,fp)==0)/*向文件写入数据,并判断是否出错*/printf("向文件输入数据失败!\n\n");fprintf(fp1,"%d",m);fclose(fp);/*关闭文件*/fclose(fp1);/*关闭文件*/}void read()/*从文件读取信息模块*/{FILE *fp,*fp1;/*定义文件指针*/if((fp=fopen("chen.dat","rb"))==NULL)/*打开文件,并判断是否出错*/ {printf("出错,请检查文件是否存在,按任意键返回住菜单");/*打印出错提示*/getchar();}if((fp1=fopen("hao.dat","rb"))==NULL)/*打开文件并判断是否出错*/ {printf("创建文件失败!\n\n");/*打印出错提示*/getchar();return;}fscanf(fp1,"%d",&m);fclose(fp1);/*关闭文件*/for(i=0;i<m;i++){fread(&s[i],sizeof('air'),1,fp);/*从文件中读取信息*/ }fclose(fp);/*关闭文件*/}void print()/*打印模块*/{char w[10];read();/*调用读取文件函数*/printf("航班号起始站终点站时间机票数\n");for(i=0;i<m;i++){printf(PRINT);/*打印信息*/}printf("请按任意键回车键结束返回上层菜单以:\n"); scanf("%s",w); }void search()/*查询模块*/{char name1[20];char name2[20];char ii[10];int n,no;do{printf("请选择查找方式:\n\n");/*打印查询方式菜单*/ printf("1.按航班号查找\n\n""2.按终点站查找\n\n""3.按航线查找\n\n""0.返回\n\n");printf("请在0-3中选择:\n\n""按其他键以回车键结束返回主菜单:\n\n");scanf("%d",&n);/*读取查找方式*/if(n==0)break;switch(n){case 1:printf("请输入航班号:\n");scanf("%d",&no);/*航班号*/break;case 2:printf("请输入终点站名称:\n");scanf("%s",name2);/*读取终点站*/break;case 3:printf("请输入起始站名称:\n");scanf("%s",name1);/*读取起始站*/printf("请输入终点站名称:\n");scanf("%s",name2);/*终点站*/break;}read();/*用读取函数*/for(i=0;i<m;i++){if(strcmp(s[i].over,name1)==0||strcmp(s[i].over,name2)==0)/*终点站起始站判断输出条件*/{printf("\n查找航班信息成功!\n");printf("航班号起始站终点站时间机票数\n");printf(PRINT);/*印信息*/break;}if(s[i].num==no)/*按航班号判断输出条件*/{printf("\n查找航班信息成功!\n");printf("航班号起始站终点站时间机票数\n");printf(PRINT);/*打印信息*/break;}}no=0;/*将航班号赋值为0*/printf("没有您需要的信息或查找完毕:\n\n""是否继续查找?请键入yes或no以回车键结束\n");scanf("%s",ii); }while(strcmp(ii,"yes")==0);/*判断结束*/ } void shanchu()/*删除模块*/{char name1[20];char name2[20];char ii[10];char f[]="2008china";/*设置密码*/int no,n;printf("请输入密码并以回车键结束:\n\n");scanf("%s",f);/*读取密码*/if(strcmp(f,"2008china")==0) /*判断密码是否正确*/{do{printf("请选择删除以方式回车键结束:\n\n");/*打印删除方式菜单*/ printf("*1.按航班号删除\n\n""*2.按航线删除\n\n""*0.返回\n\n");printf("请在0-2中选择以回车键结束:\n");scanf("%d",&n);/*读取删除方式*/if(n==0)break; /*跳出循环*/switch(n){case 1:printf("请输入航班号:\n");scanf("%d",&no);/*读取航班号*/read();/*调用读取函数*/break;/*跳出循环*/case 2:printf("请输入起始站名称:\n");scanf("%s",name1);/*读取起始站*/printf("请输入终点站名称:\n");scanf("%s",name2);/*读取终点站*/read();/*调用读取函数*/break;/*跳出循环*/}for(i=0;i<m;i++){if(s[i].num==no||strcmp(s[i].start,name1)==0&&strcmp(s[i].over,name2 )==0)/*判断输入信息是否存在*/{s[i]=s[m-1];m--;}}printf("查找完毕或没有这个信息\n\n");printf("是否继续删除\n");printf("请键入yes或no以回车键结束\n");scanf("%s",ii); /*读取是否继续信息*/save(); /*调用读取函数*/if(!strcmp(ii,"yes")) /*判断是否继续删除*/printf("请按任意键以回车键结束返回上层菜单:\n");break;}while(n!=1&&n!=2&&n!=3&&n!=4&&n!=0); /*判断结束*/}elseprintf("对不起密码错误!您不是管理员,不能使用此项功能!谢谢!再见!\n\n");}void dingpiao()/*订票模块*/{int n;char a[10];do{search();/*调用查询模块*/printf("请输入您要订的机票数以回车键结束:\n");scanf("%d",&n);/*读取所订机票数*/if(n<0){printf("请输入有效的机票数~\n");/*判断机票数是否出错*/break;}if(s[i].count!=0&&s[i].count>=n)/*判断是否出错*/{s[i].count=s[i].count-n;save();/*调用保存函数*/printf("订票成功!\n\n");break;}if(s[i].count<n)/*判断是否出错*/{printf("请输入有效的机票数:\n");break;}printf("是否继续, 请输入yes或no以回车键结束:\n");/*判断是否继续订票*/scanf("%s",a);}while(!strcmp(a,"yes"));/*判断结束*/}void tuipiao()/*退票模块*/{int n;char a[10];do{search();/*调用查询模块*/printf("请输入您要退的机票数目:\n");scanf("%d",&n);/*输入所退票数*/if(n<0) /*判断票数是否有效*/printf("请输入有效的机票数~\n");s[i].count=s[i].count+n;save(); /*调用保存模块*/printf("退票成功!\n\n");printf("是否继续, 请键入yes或no以回车键结束:\n\n");/*判断是否继续退票*/scanf("%s",a);}while(!strcmp(a,"yes"));/*判断并跳出循环*/getchar();}void xiugai() /*修改模块*/{struct xiu /*定义结构体* /{int no;char name1[20];char name2[20];char time[20];int count;}x[1];char j[10];char f[]="2008china";/*设置密码*/int n;printf("请输入密码并以回车键结束:\n\n"); scanf("%s",f);/*读取密码*/if(strcmp(f,"2008china")==0)/*判断是否出错*/ {read();/*调用读取模块*/do{printf( "请选择修改方式:\n\n""*1,按航班号修改:\n\n""*2,按航线修改: \n\n");printf("请在1---2中修改以回车键结束:\n\n"); scanf("%d",&n);/ *读取修改方式*/switch(n){case 1:printf("请输入航班号:\n");scanf("%d",&x[0].no);/*读取航班号*/break;case 2:printf("请输入起始站:\n");scanf("%s",x[0].name1);/*读取起始站*/printf("请输入终点站:\n");scanf("%s",x[0].name2);/*读取终点站* /break;}for(i=0;i<m;i++){if(strcmp(s[i].over,x[0].name1)==0&&strcmp(s[i].over,x[0].name2)==0) /*判断输出条件*/{printf("航班号起始站终点站时间机票数\n");printf(PRINT);break;}if(s[i].num==x[0].no)/*判断输出条件*/{printf("航班号起始站终点站时间机票数\n");printf(PRINT);break;}}x[0].no=0; /*将结构体中的号为零*/printf("请输入新航班号、起始站、终点站、时间(星期几)、机票数:\n");scanf("%d%s%s%s%d",&x[0].no,x[0].name1,x[0].name2,x[0].time,&x[0].co unt);/*定义输入格式*/s[i].num=x[0].no;/*替换航班号*/strcpy(s[i].start,x[0].name1);/*替换其始站*/strcpy(s[i].over,x[0].name2);/*替换终点站*/strcpy(s[i].time,x[0].time);/*替换时间*/s[i].count=x[0].count;/*替换机票数*/save();/*调用保存模块*/printf("是否继续,请键入yes或no以回车键结束:\n\n");scanf("%s",j);}while(strcmp(j,"yes")==0); /*判断结束*/}elseprintf("对不起密码错误!您不是管理员,不能使用此项功能!谢谢!再见!\n\n"); }六、设计自评:1~设计优点:该程序的最大特点是设计思路简单~语言简练、通俗易懂。
C语言程序设计--飞机订票设计题目:飞机订票设计。
功能:本飞机共有80个座位,分为20排,每排4个位子。
编号为A,B,C,D。
如10D表示10排D座。
A和D靠窗,19到20排为吸烟区。
本系统可以让乘客自己选座号和区域,直到乘客满意为止,无法满足的话,只能改乘另一个航班。
订上票的乘客需要... 题目:飞机订票设计。
功能:本飞机共有80个座位,分为20排,每排4个位子。
编号为A,B,C,D。
如10D表示10排D座。
A和D靠窗,19到20排为吸烟区。
本系统可以让乘客自己选座号和区域,直到乘客满意为止,无法满足的话,只能改乘另一个航班。
订上票的乘客需要给出姓名和身份证号,最后要打印出乘客清单。
分布实施:1、初步完成总体设计,搭好框架,确定人机对话的界面,确定两个函数;2、完成最低要求:建立一个小系统,包括5排座位,两个区域,能供乘客选择;3、进一步要求:完成全部功能的系统。
要求:1、用C语言实现程序设计;2、利用结构体数组实现信息的数据结构设计;3、系统的各个功能模块要求用函数的形式实现;4、界面友好(良好的人机交互),程序加必要的注释。
课程设计试验报告要求:1、预习报告:题目、课程设计任务、数据结构、程序的总体设计(算法)、模块划分。
2、实验总结报告:流程图、主要源程序代码(需打印)、测试情况及调试中问题与解决方案、小结等。
--------------------------------------------------------//#include <stdafx.h>#include < conio.h>#include<stdio.h>#include<string.h>#include<stdlib.h>#define OK 1#define TRUE 1#define FALSE 0#define ERROR 0#define OVERFLOW -2#define PR printftypedef int status;typedef struct airlinechar line_num[8];//航班号char plane_num[8];//飞机号char end_place[20];//目的的int total;//座位总数int left;//剩余座位struct airline *next;//下一个结点}airline;typedef struct customer{char name[9];//顾客名char line_num[8];//航班号int seat_num;//座位号struct customer *next;//下一个结点}customer;airline *init_airline(){ //初始化链表airline *l;l=(airline*)malloc(sizeof(airline)); if(l==NULL){ exit(0);}return l;}customer * init_customer(){//初始化链表customer *l;l=(customer*)malloc(sizeof(customer));if(l==NULL){exit(0);}l->next=NULL;return l;}status insert_airline(airline **p,char *line_num,char *plane_num,char *end_place,int total,int left){//airline链表插入操作airline *q;q=(airline*)malloc(sizeof(airline));strcpy(q->line_num , line_num);strcpy(q->plane_num , plane_num);strcpy(q->end_place , end_place);q->total =total;q->left =left;q->next=NULL;(*p)=(*p)->next;// PR("insert %d ,%dis succssed!\n",e,bl);return OK;}status insert_customer(customer **p,char *name,char *line_num,int seat){//customer链表插入操作customer *q;q=(customer*)malloc(sizeof(customer));/* { PR("内存分配失败\n");return OVERFLOW; }*/strcpy(q->name , name);strcpy(q->line_num , line_num);q->seat_num =seat;q->next=NULL;(*p)->next=q;(*p)=(*p)->next;// PR("insert %d ,%dis succssed!\n",e,bl);return OK;}airline *modefy_airline(airline *l,char *line_num)//修改airline链表中的数据{ airline *p;for(;p!=NULL;p=p->next ){ if(strcmp(line_num,p->line_num )==0){ p->left ++;// PR("modefy %s\n",p->line_num );return l;}}PR("没有这个航班,无法完成修改任务!\n");return 0;}status delete_airline(airline *h,char *line_num)//删除航班{ airline *p,*pr;pr=h;p=pr->next ;while(p!=NULL){ if(strcmp(line_num,p->line_num )==0){ pr->next =p->next ;PR("删除%s 航班\n",p->line_num );return OK;}pr=pr->next ;}PR("无此航班,无法删除!\n");return ERROR;}status delete_customer(customer *h,char *line_num)//删除顾客{ customer *p,*pr;pr=h;p=pr->next ;while(p!=NULL){ if(strcmp(line_num,p->line_num )==0){ pr->next =p->next ;}pr=pr->next ;p=pr->next ;}// PR("无此航班,无法删除!\n");return OK;}status delete_cus(customer *h,airline *l,char *name)//顾客退票{ customer *p,*pr;char line_num[8];// qr=h;pr=h;p=pr->next ;// PR("开始删除\n");while(p!=NULL){ if(strcmp(name,p->name )==0){ strcpy(line_num,p->line_num );l=modefy_airline(l,line_num);pr->next =p->next ;PR("顾客%s 退票成功!\n",p->name ); return OK;}pr=pr->next ;p=pr->next ;}PR("无此顾客,无法退票!\n");return ERROR;}status save_airline(airline *l)//保存airline.dat { FILE *fp_airline;char ch='#';airline *p=l->next ;char filename[]="c:\\airline.dat";if((fp_airline=fopen(filename,"wb"))==NULL){ printf("can not open file to write:%s\n",filename);return ERROR;}for(;p!=NULL;p=p->next ){ //printf("%s,%s,%s,%d,%d\n",p->line_num ,p->plane_num ,p->end_place ,p->total ,p->left );fprintf(fp_airline,"%s,%s,%s,%d,%d%c\n",p->line_num ,p->plane_num ,p ->end_place ,p->total ,p->left ,ch);}fclose(fp_airline);return OK;}status save_customer(customer *l)//保存顾客信息customer.dat{ FILE *fp_customer;char ch='#';customer *p=l->next ;char filename[]="c:\\customer.dat";if((fp_customer=fopen(filename,"wb"))==NULL){ printf("can not open file to write:%s\n",filename);return ERROR;}for(;p!=NULL;p=p->next ){ // PR("%s,%s,%d\n",p->name ,p->line_num ,p->seat_num );fprintf(fp_customer,"%s,%s,%d%c",p->name ,p->line_num ,p->seat_nu m ,ch);}fclose(fp_customer);return OK;}int changStrInt(char *ch)//把字符串转化为整型{ int a=1,b=0,c=0,i;for (i=strlen(ch)-1;i>=0;i--){ if (ch[i]<58&&ch[i]>47){ b=a*(ch[i]-48);a=a*10;c=c+b;}else{ PR("%c 不合法,无法将此字符串转化为整形!\n",ch[i]);return 0;}// printf("the c is %d\n",c);}return c;}status insert_air(airline *l,char *line_num,char *plane_num,char *end_place,int total,int left){//airline链表插入操作airline *q;q=(airline*)malloc(sizeof(airline));strcpy(q->line_num , line_num);strcpy(q->plane_num , plane_num);strcpy(q->end_place , end_place);q->total =total;q->left =left;q->next=l->next ;l->next=q;// PR("insert %d ,%dis succssed!\n",e,bl);return OK;}status insert_cus(customer *l,char *name,char *line_num,int seat){//customer链表插入操作customer *q;q=(customer*)malloc(sizeof(customer)); strcpy(q->name , name);strcpy(q->line_num , line_num);q->seat_num =seat;q->next=l->next ;l->next=q;return OK;}status load_airline(airline *l){ FILE *fp_airline;int flag=0,i=0;char ch;char line_num[8];//航班号char plane_num[8];//飞机号char end_place[20];//目的的char total_str[5];char left_str[5];int total;//座位总数int left;//剩余座位// airline *p=l;char filename[]="c:\\airline.dat";if((fp_airline=fopen(filename,"rb"))==NULL){ printf("can not open file to load:%s\n",filename); return ERROR;}while(!feof(fp_airline)){ ch=fgetc(fp_airline);if(ch!='#'){ if(flag==0&&ch!=','){ line_num[i]=ch;i++;}else if(flag==1&&ch!=','){ plane_num[i]=ch;i++;}else if(flag==2&&ch!=','){ end_place[i]=ch;i++;}else if(flag==3&&ch!=','){ total_str[i]=ch;i++;}else if(flag==4&&ch!=','){ left_str[i]=ch;i++;}else if (ch==','){ flag++;i=0;}/* else{ PR("错误\n");return ERROR;}*/}else{ flag=0;i=0;total=changStrInt(total_str);left=changStrInt(left_str);PR("%8s%8s%8s%9d%9d\n",line_num ,plane_num ,end_place ,total ,left ); insert_air(l,line_num,plane_num,end_place,total,left);}}fclose(fp_airline);return OK;}status load_customer(customer *l){ FILE *fp_customer;int flag=0,i=0;char ch;char name[9];char line_num[8];//航班号char seat_num_str[5];int seat_num;//座位// customer *p=*l;char filename[50]="c:\\customer.dat";if((fp_customer=fopen(filename,"rb"))==NULL) { printf("can not open file to load:%s\n",filename); return ERROR;}while(!feof(fp_customer)){ ch=fgetc(fp_customer);printf("%c\n",ch);if(ch!='#'){ if(flag==0&&ch!=','){ name[i]=ch;i++;}else if(flag==1&&ch!=',') { line_num[i]=ch;i++;}else if(flag==2&&ch!=',') { seat_num_str[i]=ch;i++;}else if (ch==','){ flag++;i=0;}else{ PR("错误\n");return ERROR;}}else{ flag=0;seat_num=changStrInt(seat_num_str);PR("%10s %10s %d\n",name ,line_num ,seat_num );insert_cus(l,name,line_num,seat_num);// p=p->next ;}}fclose(fp_customer);return OK;}status creat_airline(airline **l)//创建airline单链表{ airline *p=*l;int i=0;char *line_num[3]={"bjnc01","bjsh02","shgz03"};char *plane_num[3]={"plane1","plane2","plane3"};char *end_place[3]={"nc","sh","gz"};int total[3]={100,100,100};int left[3]={51,50,78};for (i=0;i<3;i++){insert_airline(&p,line_num[i],plane_num[i],end_place[i],total[i],left[i]); }return OK;}status creat_customer(customer **l)////创建customer单链表{ customer *p=*l;int i=0;char *name[3]={"ouyangj0","yhl","fs"};char *line_num[3]={"bjnc01","bjsh02","shgz03"};int seat_num[3]={1,5,10};for (i=0;i<3;i++){insert_customer(&p,name[i],line_num[i],seat_num[i]);}return OK;}status increase_air(airline *l,char *line_num,char *plane_num,char*end_place,int total)//增加航线{ airline *p=l->next ;for(;p->next !=NULL;p=p->next){}insert_airline(&p,line_num,plane_num,end_place,total,total);PR("增加航班%s 成功!\n",line_num);return OK;}status book(airline *l,char *line_num,customer *c,char *name)//订票函数{ airline *p=l;customer *q=c->next ;p=l->next ;for(;q->next !=NULL;q=q->next){}// PR("%s\n",q->name );for(;p!=NULL;p=p->next ){ if(strcmp(line_num,p->line_num )==0){ if(p->left >0){ PR("恭喜您!订票成功!\n");PR("你的座位号是: %d\n",(p->total -p->left +1));insert_customer(&q,name,line_num,p->total -p->left +1); p->left --;return OK;}else PR("对不起,座位已满!\n");return 0;}}PR("对不起,没有这个航班号!\n");return ERROR;}status print_airline(airline *l)//打印航线信息{ airline *p=l->next ;for(;p!=NULL;p=p->next ){ PR("%8s%8s%8s%9d%9d\n",p->line_num ,p->plane_num ,p->end_pla ce ,p->total ,p->left );}return OK;}status print_customer(customer *l)//打印顾客信息{customer *p=l->next ;for(;p!=NULL;p=p->next ){ PR("%10s %10s %d\n",p->name ,p->line_num ,p->seat_num );}return OK;}status inputpassword(char cc[9])//隐藏密码为*号的函数-------------------楼主,注意这里!{char c;int i;for(i=0;c=getch();i++){if(c==13) break; /*13是回车的ascii码,用'\n'不行,不知怎么回事*/else{cc[i]=c;printf("*");}}cc[i]='\0';//printf("\n");//printf("%s",cc);//getchar();return strlen(cc);}void main(){ charchoice,choice2,name[9],line_num[8],password[9],plane_num[8],end_plac e[9];char pass[9]="19851102",re_pass_1[9],re_pass_2[9];int t=1,tt=1,total;airline *air=init_airline();customer *cus=init_customer();PR(" 计算机0541课程设计(一)\n");PR(" 航空订票系统\n");PR(" 成员:晏凯\n");creat_airline(&air);creat_customer(&cus);// save_airline(air);// save_customer(cus);while(t==1){ PR("*----------------------------*\n"); PR("*--航空订票系统选择菜单------*\n"); PR("* 订票-------0 *\n");PR("* 退票-------1 *\n");PR("* 查询-------2 *\n");PR("* 修改航线---3 *\n");PR("* 读入文件---4 *\n");PR("* 退出-------5 *\n");PR("*----------------------------*\n"); PR("请选择: ");choice = getch();PR("%c\n",choice);if(choice=='0'){ PR("请输入你要订的航班号: ");scanf( "%s",line_num);PR("请输入你的姓名: ");scanf( "%s",name);book(air,line_num,cus,name);save_airline(air);save_customer(cus);}else if(choice=='1'){ PR("\n请输入你的姓名: ");scanf( "%s",name);delete_cus(cus,air,name);save_airline(air);save_customer(cus);}else if(choice=='2'){ PR("\n 航班号飞机号目的地总票数余票数\n");print_airline(air);PR(" 姓名航班号座位号\n");print_customer(cus);}else if(choice=='3'){ tt=1;PR("请输入密码: ");//scanf("%s",password);inputpassword(password);-----------------楼主,注意这里!我改了!if(strcmp(password,pass)==0){ while (tt==1){PR("\n*------------------------------*\n"); PR("*-------航线信息修改:----------*\n"); PR("* 增加航班号-----'0' *\n");PR("* 删除航班号-----'1' *\n");PR("* 修改密码-------'2' *\n");PR("* 查询航线信息---'3' *\n");PR("* 退出航线修改---'4' *\n");PR("*------------------------------*\n"); PR("请选择: ");choice2=getch();PR("%c\n",choice2);if(choice2=='0'){ PR("请输入你要增加的航班号: ");scanf("%s",line_num);PR("请输入飞机号: ");scanf("%s",plane_num);PR("请输入目的地: ");scanf("%s",end_place);PR("请输入座位总数: ");scanf("%d",&total);increase_air(air,line_num,plane_num,end_place,total); save_airline(air);save_customer(cus);}else if (choice2=='1'){ PR("请输入你要删除的航班号: ");scanf("%s",line_num);delete_airline(air,line_num);delete_customer(cus,line_num);save_airline(air);save_customer(cus);}else if(choice2=='2'){ PR("注意:密码不能超过8位!\n");PR("请输入新密码:");scanf("%s",re_pass_1);PR("请再输入一次: ");scanf("%s",re_pass_2);if(strcmp(re_pass_1,re_pass_2)==0){ strcpy(pass,re_pass_1);PR("密码修改成功!请记住.\n");}else { PR("你两次输入的密码不一致!\n");}}else if(choice2=='3'){ PR("\n 航班号飞机号目的地总票数余票数\n"); print_airline(air);}else if(choice2=='4'){ tt=0;}else {PR("你的输入有误\n");tt=0;}}//end while}//end ifelse {PR("对不起!你输入的密码不正确!\n");}}//end else if 修改else if(choice=='4') { load_airline(air); load_customer(cus); }else if(choice=='5') { PR("再见!");t=0;}else{ PR("你的输入有误\n"); }}getch();}。
.. 目录目录 (i)1课程设计的目的 (1)2需求分析 (1)2.1设计一个飞机订票系统,完成以下功能 (1)2.2该系统中用到的数据结构 (1)3概要设计 (2)3.1总体功能模块 (2)3.1.1 基本设计 (2)3.1.2开发平台 (2)3.1.3系统功能图 (2)3.2详细设计 (3)3.2.1主函数的实现 (3)3.2.2打印模块程序 (4)3.2.3保存模块程序 (5)3.2.4从文件读取信息模块 (6)3.2.5打印模块 (7)3.2.8订票模块 (11)3.2.9退票模块 (13)3.2.10修改模块 (13)3.2.11头文件及结构体数组 (16)4 调试与测试结果分析 (17)4.1系统主界面 (17)4.2输入航班信息界面 (18)4.3浏览航班信息界面 (19)4.4修改航班信息界面 (19)4.5查找航班信息界面 (21)4.6删除航班信息界面 (22)4.7订票信息界面 (23)4.8退票信息界面 (24)4.9退出系统 (25)5 使用说明 (26)6总结 (26)参考文献 (28)附录 (29)飞机票预订系统的设计与实现1课程设计的目的(1)学会怎样用c语言做一个完整的系统。
(2)掌握c语言的编辑,链接,运行等环节。
(3)掌握c语言中链表的建立,插入,删除,保存节点。
熟练掌握for while 、do-while 循环语句的使用。
(4)通过程序设计的课程设计,掌握并熟悉一个简单项目的开发过程,本项目利用程序设计中最基础和最重要的部分:单链表。
(5)在整个开发设计过程中掌握程序设计的思想,以及各种操作和实际应用。
并可以将其运用于具体问题的解决之中。
加深对程序设计课程中理论和实践相结合的认识。
(6)掌握并熟练单链表的创建、插入、删除、查找等各种常用算法。
最终设计完成《飞机票预订及查询系统》,将各种算法综合运用于具体的设计任务中。
(7)C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。
软件工程专业14级《数据结构》课程设计报告设计题目:飞机订票系统班级:软件14 姓名:指导教师:2015年 11月20日目录一、设计任务与要求 (1)1.1 总体目标与任务要求 (1)1.2 题目选择与目的意义 (1)1.3 所选题目的主要工作 (1)二、需求分析 (2)2.1 用户需求分析 (2)2.2 功能需求分析 (2)2.3 系统需求分析 (2)三、概要设计 (3)3.1 各模块的算法设计说明 (3)3.2 存储结构设计说明 (8)四、详细设计 (10)五、源代码 (11)六、运行结果分析 (21)七、收获与体会 (28)八、主要参考资料 (28)一、设计任务与要求1.1 总体目标与任务要求制作一个订票系统,通过此系统可以实现如下功能:1)录入可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)。
2)查询可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓)可以输入起飞抵达城市,查询飞机航班情况。
3)订票可以订票,如果该航班已经无票,可以提供相关可选择的航班(订票情况可以存在一个数据文件中,结构自己设定)。
4)退票可退票,退票后修改相关数据文件;客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。
5)修改航班信息当航班信息改变可以修改航班数据文件。
根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能。
1.2 题目选择与目的意义选择这个题目的原因是,订票系统在现实生活中应用很广泛,通过这个系统可以使订票、退票等变得简便。
与传统的人工用纸、笔来记录办理订票、退票等相比,使用这个系统也会增加工作效率。
这个题目做出来的系统还是比较实用的,所以我选择了订票系统这个题目。
完成此系统,需要综合运用数据结构课程中学到的几种典型数据结构,以及程序设计语言(C语言),自行实现一个较为完整的应用系统的设计与开发。
通过课程设计,自己通过系统分析、系统设计、编程调试,写实验报告等环节,进一步掌握应用系统设计的方法和步骤,灵活运用并深刻理解典型数据结构在软件开发中的应用。
目录第一部分源程序---------------------------------------------------3第二部分函数流程图--------------------------------------------11 menu()-----------------------------------------------------12 enter()-----------------------------------------------------13 input()-----------------------------------------------------14 browse()---------------------------------------------------15 menu1()---------------------------------------------------16 order()-----------------------------------------------------17 search_time()---------------------------------------------18 search_end()----------------------------------------------19 search()----------------------------------------------------20 book()------------------------------------------------------21 back()------------------------------------------------------22 save()------------------------------------------------------23 load()------------------------------------------------------24 第三部分心得体会------------------------------------------------25第一部分:源程序#include <stdio.h>#include <string.h>#include <stdlib.h>#define N 1000typedef 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){printf("请输入航班代号:\n");scanf("%s",ti[i].ID);printf("请输入起飞地点:\n");scanf("%s",ti[i].BePlace);printf("请输入降落地点:\n");scanf("%s",ti[i].EnPlace);printf("请输入起飞时间:\n");scanf("%s",ti[i].data);printf("请输入航班的最大载客人数:\n");scanf("%d",&ti[i].max);printf("请输入航班的票价:\n");scanf("%d",&ti[i].price);ti[i].num=0;}void enter(){int i;system( "cls" );printf("请输入航班的数目(0-%d)?:",N);scanf("%d",&n); /*要输入的记录个数*/printf("\n请输入数据\n\n");for(i=0;i<n;i++){printf("\n请输入第%d 航班记录.\n",i+1);input(i); /*调用输入函数*/}getchar();menu();}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);}void browse(){int i;system( "cls" );puts("\n--------------------------------------------------------------------");printf("\n\t航班代号起飞地点降落地点起飞时间票价最大乘客已售票数\n");for(i=0;i<n;i++){printf_one(i);printf("\n");}getchar();getchar();menu();}void order() /*排序模块(按平均成绩)*/{int i,j;struct plane s;system( "cls" );for(i=0;i<n;i++) /*冒泡法排序*/{for(j=i+1;j<n;j++)if(strcmp(ti[i].data,ti[j].data)>0){s=ti[i];ti[i]=ti[j];ti[j]=s;}}browse();}void search_time(){int i,m=0;struct plane s;system( "cls" );printf("\n\nEnter the time:");scanf("%s",s.data); /*输入出发的时间*/puts("\n--------------------------------------------------------------------");printf("\n\t航班代号起飞地点降落地点起飞时间票价最大乘客已售票数\n");for(i=0;i<n;i++){if(strcmp(s.data,ti[i].data)==0){m++;if((m!=0)&&(m%10==0)) /*目的是分屏显示*/{printf("\n\nPress any key to contiune . . .");getchar();puts("\n\n");}printf_one(i);printf("\n");/*调用显示一个记录的函数*/}}puts("\n--------------------------------------------------------------------");getchar(); /*按任意健*/getchar();menu1();}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<n;i++){if(strcmp(ti[i].EnPlace,s.EnPlace)==0){m++;if((m!=0)&&(m%10==0)) /*目的是分屏显示*/{printf("\n\nPress any key to contiune . . .");getchar();puts("\n\n");}printf_one(i);printf("\n");/*调用显示一个记录的函数*/}}puts("\n--------------------------------------------------------------------");getchar(); /*按任意健*/getchar();menu1();}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(n<1||n>4) /*对选择的数字作判断*/{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;}}int search() /*查找模块*/{int i,k;struct plane s;k=-1;system( "cls" );printf("\n\n请输入要订票的起飞地点:");scanf("%s",s.BePlace); /*输入要到达的地方*/printf("\n\n请输入要订票的降落地点:");scanf("%s",s.EnPlace);printf("\n\n请输入要订票的起飞时间:");scanf("%s",s.data); /*输入出发的时间*/for(i=0;i<n;i++) /*查找要修改的数据*/{if(strcmp(s.BePlace,ti[i].BePlace)==0&&strcmp(s.EnPlace,ti[i].EnPlace)==0&&strcmp(s.dat a,ti[i].data)==0){k=i; /*找到要修改的记录*/printf_one(k);break; /*调用显示一个记录的函数*/}}if(k==-1){printf("\n\nNO exist!");return -1;}elsereturn k;}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");}}elseprintf("该航班不存在!\n");getchar();getchar(); /*按任意健*/menu();}void back(){int i,k=-1;struct plane s;system( "cls" );printf("欢迎进入退票窗口!\n");printf("\n\n输入航班代号:");scanf("%s",s.ID); /*输入要到达的地方*/for(i=0;i<n;i++) /*查找要修改的数据*/{if(strcmp(s.ID,ti[i].ID)==0){k=i; /*找到要修改的记录*/printf_one(k);break; /*调用显示一个记录的函数*/}}if(k==-1){printf("\n\nNO exist!");}else{ti[i].num--;printf("\n退票成功!\n");}getchar(); /*按任意健*/getchar(); /*按任意健*/menu();}void save(){int w=1;FILE *fp;int i;system( "cls" );if((fp=fopen("D:\\我的文档\\桌面\\ticket.txt","wt"))==NULL) /*以输出打开方式,在此前的记录被覆盖*/{printf("\nCannot open file\n");return ;}for(i=0;i<n;i++)if(fwrite(&ti[i],sizeof(struct plane),1,fp)!=1){printf("file write error\n");w=0;}if(w==1){printf("file save ok!\n");}fclose(fp);getchar();getchar();menu();}void load(){FILE *fp;int i,w;w=1;system( "cls" );if((fp=fopen("D:\\我的文档\\桌面\\ticket.txt","rt"))==NULL){printf("\nCan not open file\n");w=0;return;}n=0;for(i=0;!feof(fp);i++){fread(&ti[i],sizeof(struct plane),1,fp);n++;}n=n-1;fclose(fp);if(w==1)printf("Load file ok!");getchar();getchar();menu();}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(n<1||n>8) /*对选择的数字作判断*/{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; /*浏览模块*/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();}第二部分:函数流程图(2)enter函数流程图第三部分:心得体会(1)开始对c语言只是一种零散的认识,作为一个c语言的初学者对编程没有明确的概念,只是对语句的格式与编程规定有了一个初步了解。