C
语
言
课
程
设
计
题目:飞机订票系统
专业: 计算机科学与技术
班级:
姓名:
完成时间:
目录
第一部分:源程序(3-12页)
第二部分:函数流程图(13-25页)
(1)menu函数流程图(第13页)
(2)enter函数流程图(第14页)
(3)Order函数流程图(第15页)
(4)input函数流程图(第16页)
(5)browse函数流程图(第17页)
(6)Search_time函数流程图(第18页)
(7)Search_end函数流程图(第19页)
(8)search函数流程图(第20页)
(9)void menu1函数流程图(第21页)
(10)book函数流程图(第22页)
(11)back函数流程图(第23页)
(12)save函数流程图(第24页)
(13)load 函数流程图(第25页)
第三部分:心得体会(第26-27页)
第一部分:源程序
#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) { 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 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\航班代号 起飞地点 降落地点 起飞时间 票价 最大乘客 已售票数\n"); for(i=0;i printf_one(i); printf("\\n"); } getchar(); getchar(); menu(); } void order() /*排序模块(按平均成绩)*/ { int i,j; struct plane s; system( "cls" ); for(i=0;i for(j=i+1;j { 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\航班代号 起飞地点 降落地点 起飞时间 票价 最大乘客 已售票数\n"); for(i=0;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\航班代号 起飞地点 降落地点 起飞时间 票价 最大乘客 已售票数\n"); for(i=0;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("\\\\ 飞机售票操作!\\n\\n"); puts("\\*********************MENU*********************\\n\\n"); puts("\\\\1.按照时间排序"); puts("\\\\2.按照时间查找航班"); puts("\\\\3.按照地点查找航班"); puts("\\\\4.返回主菜单"); puts("\\n\\n\\**********************************************\\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 if(strcmp(s.BePlace,ti[i].BePlace)==0&&strcmp(s.EnPlace,ti[i].EnPlace)==0&&strcmp(s.data,ti[i].data)==0) { k=i; /*找到要修改的记录*/ printf_one(k); break; /*调用显示一个记录的函数*/ } } if(k==-1) { printf("\\n\\nNO exist!"); return -1; } else return 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"); } } else printf("该航班不存在!\\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 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("\\\icket.txt以输出打开方式,在此前的记录被覆盖*/ { printf("\\nCannot open file\\n"); return ; } for(i=0;i { 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("\\\icket.txt { printf("\\nCannotopen 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("\\\\ 飞机售票管理系统!\\n\\n"); puts("\\*********************MENU*********************\\n\\n"); puts("\\\\1.输入新航班"); puts("\\\\2.浏览 "); puts("\\\\3.航班操作"); puts("\\\\4.订票"); puts("\\\\5.退票"); puts("\\\\6.保存"); puts("\\\\7.载入"); puts("\\\\8.退出"); puts("\\n\\n\\**********************************************\\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(); } 第二部分:函数流程图 结束 (1)menu()函数 N Y Y Y 退出 n=8 N Y w1=1 w1=0 输入新航班 浏览 航班操作 订票 退票 保存 载入 清屏(cls) int n,w1 N Y n=3 n=7 n=5 n=6 n=4 n=2 n=1 输出n(1-8) N Y Y Y While(w==1) Y Y Y Y Y Y Y Y Y Y Y Y Y Y N Y N Y N Y N Y N Y N Y Y Y if n<1||n>8 输出n 输出目录 开始 (2)enterY i 函数 int i 清屏(cls) 请输入航班的数目n 请输入数据m i=0 N 请输入第n次航班记录 调用input()函数 i++ 返回menu() 结束 开始 (3)Order函数 int i,j 清屏(cls) i=0 N Y i Y Y j=i+1 结束 N Y j Y Y strcmp(ti[i].data,ti[j].data)>0 N Y Y Y s=ti[i]; ti[i]=ti[j] ti[j]=s j++ 开始 返回menu() 结束 请输入航班的票价 请输入航班的最大载客人数 请输入起飞时间 请输入降落地点 请输入起飞地点 请输入航班代号 (4)input函数 (5)browse函数 开始 int i 清屏(cls) i=0 i++ Y N i 返回menu() 输出 结束 int i,m 开始 Y (6)Search_timeY 函数 清屏(cls) 输入时间 i=0 返回menu1() N i N S==ti[i] i++ Y 结束 m++ (m!=0)&&(m%10==0) 按任意键继续进行 回车换行 调用函数printf_one() int i,m 开始 Y (7) Search_end函数 清屏(cls) 输入要到达的地方 i=0 返回menu () i N S==ti[i] i++ 结束 Y m++ (m!=0)&&(m%10==0) 按任意键继续进行 回车换行 调用函数printf_one(i) 开始 (8)search函数 int i,k k=-1 i 清屏(cls) i=0 Y k==-1 N i++ Y Y 输出“NO exist!” strcmp(s.BePlace,ti[i].BePlace)==0&&strcmp(s.EnPlace,ti[i].EnPlace)==0&&strcmp(s.data,ti[i].data)==0 N 返回search()=-1 返回search()=k 跳出(break) 调用printf_one(k) k=i 结束 Y (9)void menu1函数 结束 menu() serch_end() search_time() order() w1=0 w1=1 清屏(cls) int n,w1 N Y N Y N Y Y Y Y Y Y Y Y Y n=4 n=3 n=2 n=1 输出n N Y Y Y while(w1==1) N Y Y Y 输出n(1-4) 输出目录2 if n<1||n>4 开始 (10)book函数 开始 返回menu() i=search() 清屏(cls) int i N Y N Y 结束 ti[i].num>=ti[i].max i!=-1 输出“欢迎进入售票窗口” ti[i].num++ 输出“该航班不存在!” 输出“该趟航班票已售完” 输出 “订票成功” 开始 (11)back函数 int i,k=-1 输出 “NOexist!” 输出 “退票成功!” 清屏(cls) ti[i].num-- 结束 menu() k=i i=0 N Y N Y N Y strcmp(s.ID,ti[i].ID)==0 输入 “输入航班代号” 输入 “欢迎进入退票窗口” k==-1 i 调用printf_one(k) 开始 (12)save函数 结束 int w=1, FILE*fp,i 输出“Cannot open file” 清屏(cls) 返回menu() (fp=fopen("\\\icket.txt Y N 输出“file write error” 输出“file save ok!” N Y Y N 调用fclose(fp) Y w==1 N i++ w=0 fwrite(&ti[i],sizeof(struct plane),1,fp)!=1plane),1,fp)!=1 i loadn++ 开始 函数 (13) FILE*fp int i,w=1 i++ fread(&ti[i],sizeof( struct plane),1,fp) Y N !feof(fp) 清屏(cls) N n=n-1 fclose(fp) Y w==1 输出“Load file ok!” 输出“Cannotopen file” N i=0 n=0 Y 结束 返回 w=0 (fp=fopen("\\\icket.txt (fp=fopen("\\\icket.txt FILE*fp int i,w 返回menu() 第三部分:心得体会 通过对C语言课程设计的学习,自己有很大的收获,将< C语言课程设计更能明显的体现出我们对C语言学习掌握的熟练程度。因为我们只有在读懂程序的情况下才能更好的做出流程图。经过一个多星期的上机实践学习,我觉得要想学好它则重在实践,要通过不断地上机操作才能更好的掌握理解。在学习的同时,也发现了自己学习的许多不足之处,比如,对读程序还不够熟练,对有些语句还没有掌握,再者,自己在指法上还不行,打字过慢而直接影响阅读速度,特别是在运行程序时所出现的错误很难顺利的去找出来并加以纠正,等等。这些通过学习也有所改进。 通过实践的学习,我认识到学好计算机要重视实践操作,不仅是学习C语言,还是其他语言,以及其他的计算机方面的知识都要重在实践。所以以后在学习过程中,我会更加注重实践操作,以更好的学习好专业课。 通过对《飞机订票系统》的学习设计,全面系统的理解了编译原理程序构造的一般原理和基本实现方法,把死板的课本知识变得生动有趣,激发了我们学习的积极性。经过自己设计的流程图将知识表示出来,再加上老师精心的讲解和辅导,加深了我们对理论知识的理解。课程设计中程序比较复杂,在调试时必须仔细认真,这是最深的感受!对我们更是一种锻炼! 课程设计的学习,在找出各自不懂和不足积累经验的同时,为我们以后的学习提出了更明确目的和要求:不仅要读懂程序,而且更重要的是能会熟练地编写程序进而去设计程序。