当前位置:文档之家› C语言课程设计报告—飞机订票系统

C语言课程设计报告—飞机订票系统

C语言课程设计报告指导老师:C语言课程设计报告一、 C语言课程设计的目的C语言的教学是学生根据课堂讲授内容,学生做相应的自主练习,消化课堂所讲解的内容;通过调试典型例题或习题积累调试C程序的经验;通过完成辅导教材中的编程题,逐渐培养学生的编程能力、用计算机解决实际问题的能力。

具体来说:1.进一步掌握和利用C语言进行程设计的能力;2、进一步理解和运用结构化程设计的思想和方法;3、初步掌握开发一个小型实用系统的基本方法;4、学会调试一个较长程序的基本方法;5、学会利用流程图或N-S图表示算法;6、掌握书写程设计开发文档的能力(书写课程设计报告);二、课程设计报告正文(1)课程设计题目的原文;假定民航机场共有n个航班:航班号、起始站、终点站、飞机号、飞机时间、乘员定额、余票量。

试设计一民航订票系统,使之能提供下列服务:航班信息录入功能(文件保存)完成航班信息浏览功能;查询航线(至少一种查询方式)。

(2)题目的分析(需求分析);任务:通过此系统可以实现如下功能:录入:可以录入航班情况(数据可以存储在一个数据文件中)浏览:航班信息浏览功能需要提供显示操作;查询:可提供按照航班号、起点站、终点站、飞行时间、查询,可以查询某个航线的情况(如,输入航班号,起飞抵达城市,确定航班是否满仓);另外要提供键盘式选择菜单以实现功能选择。

要求:根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能。

可以建立航班结构体,结构体成员包括航班号、起点站、终点站、飞行时间、预售票总数、已售票数。

(3)整体设计与模块划分;根据需求分析,该程序可分为以下四大模块:(4)代码设计;包括——各功能模块的流程图;重要模块中关键部分的代码分析;关键函数的算法设计和分析;等等;(一)主函数(1)分析:主函数的功能比较简单,形式比较简洁,主要功能为:在系统中没有程序所要的文件时,为程序建立一个所需的文件;调用菜单函数。

程序中的各模块都要用到同一个文件,如果该文件不存在,则该程序就无法正常运行,增加第一个功能就是保证文件的可用切可打开!本来只要在主函数里调用各功能模块就行了,但是为了让程序能够方便的回到主函数里,所以就建立了一个菜单函数。

菜单函数的功能是替主函数调用个功能模块函数,因而设计的基本思路很简单,即:用一个输入来接受用户的选择,加以个循环来让输入错误的用户继续输入,直到输入正确为止;用一个switch语句来选择用户所要用到的函数。

(2)程序:void menu(){int n,w;do{puts("\t\t***********************MENU***************************\n\n");puts("\t\t\t\t 1.enter new data");puts("\t\t\t\t 2.Browse all");puts("\t\t\t\t 3.Search");puts("\t\t\t\t 4.exit");puts("\n\n\t\t ***************************************************\n");printf("Choice your number(1-4): [ ]\b\b");scanf("%d",&n);if(n<1||n>4){w=1;getchar();}else w=0;}while(w==1);switch(n){case 1:enter();break;case 2:Browse();break;case 3:Search();break;case 4:exit(0);}}/**********************主函数*********************/main(){ menu();}(二)公共函数(1)分析:各功能模块中的分程序中的交错的较多,因而,本程序的公共函有5个,这使得各功能模块函数显得简洁,这是程序的一个特点。

此处的公共函数的功能较为简单,但他很实用。

(2)程序:1、把航班信息输入到文件中的函数。

void input(i){struct flight t;printf("\nflight_no startstation endstation flytime plan_ticket sell_ticket\n");scanf("%d%s%s%s%d%d",&t.flight_no,t.startstation,t.endstation,t.flytim e,&t.plan_ticket,&t.sell_ticket);fp=fopen("flydata.txt","ab");if(!fp){printf("can not open this file\n");exit(0);} else fwrite(&t,sizeof(struct flight),1,fp);fclose(fp);}2、输出一个航班信息函数void printf_oneflight(int i){printf("\n%5d%20s%20s%10s%4d%4d\n",fly[i].flight_no,fly[i].startstatio n,fly[i].endstation,fly[i].flytime,fly[i].plan_ticket,fly[i].sell_ticket);}3、输出文件内容结构函数void printf_face(){printf("\n\tNO. startstation endstation flytime plan_ticket sell_ticket\n");}4、载入函数实现文件内容载入程序,并返回飞机航班数值。

int load(){FILE *fp;int i;if((fp=fopen("flydata.txt","rb"))==NULL){printf("\nCan not open file\n");exit(0);}for(i=0;!feof(fp);i++)fread(&fly[i],sizeof(struct flight),1,fp);fclose(fp);return(i-1);}5、返回退出函数实现程序退出、返回。

void printf_back(){int w;printf("\n\n\tSuccessful.^_^\n\n");printf("What do you want to do?\n\n\t1).Browse all now\t2).back:[]\b\b");scanf("%d",&w);if(w==1) Browse();else menu();}(三)航班基本信息输入模块航班信息录入函数:(1)分析:航班的基本信息,对它们输入后,要存进原文件,采用fwrite函数就可以实现。

但是,用该函数存进文件的数据都是以二进制的形式存在的,不是通常所采用的形式,可以改用fprintf函数来实现该功能。

不过本程序采用的是fwrite函数。

再用户输入完成后,程序会询问是否继续输入,这个功能更具人性化,可以省去返回到主函数在进入这个函数的麻烦!【流程图]输入信息(2)程序:void enter(){int i,n;printf("How many flights do you want input? :[ ]\b\b");scanf("%d",&n);printf("\n Enter data now\n\n");for(i=0;i<n;i++){printf("\n Input %dth float record.\n",i+1);input(i);}printf_back();}航班信息浏览函数:[流程图]显示信息显示航班信息:void Browse(){int i,n;n=load();printf_face();for(i=0;i<n;i++){if(i%10==0){printf("\nPress any key to contiune ...");getchar();puts("\n\n");}puts("\n\n");printf_oneflight(i);}printf("\tThere are %d record.\n",n);printf("\nPress any key to back ...\n");getchar();menu();}查询模块:分析:基本信息的查询按查询可供选择的方式比较丰富,可按航班号查询。

在查询小模块中采用了直接查找的方法。

本模块可以通过多种查询方式进行完善。

这是本程序没有做的地方。

[流程图]程序:void Search(){int m,i,flight_no,flag=0;printf("Please input flight_no:\n");scanf("%d",&flight_no);m=load();for(i=0;i<m;i++){if(flight_no==fly[i].flight_no){flag=1;printf("\nThe flight message is:\n");printf_oneflight(i);}}if(flag==1)printf("Found!");elseprintf("Not Found!");printf_back();}(5)运行与测试报告:在第一步编程过程中很顺利的编写好了各模块,最后整合成了一个完整的程序,但在调试过程中遇到了许多问题。

如一些由于粗心导致分号,括号,字母输错的例子很多。

但都很快改正。

还有函数调用错误fp=fopen("flydata.txt","ab");我在写时丢了fopen结果一直错误,并且发现不了,后来请老师才解决问题。

相关主题