飞机订票系统设计_第1页
飞机订票系统设计_第2页
飞机订票系统设计_第3页
飞机订票系统设计_第4页
飞机订票系统设计_第5页
免费预览已结束,剩余10页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C语言课程设计报告班级: 055071 11姓名:陈彬学号:;20071001454指导老师:刘文中C语言课程设计报告C 语言课程设计的目的C 语言的教学是学生根据课堂讲授内容, 学生做相应的自主练习, 消化课堂所讲 解的内容;通过调试典型例题或习题积累调试C 程序的经验;通过完成辅导教材中的编程题,逐渐培养学生的编程能力、用计算机解决实际问题的能力。具体来说: 1 进一步掌握和利用 C语言进行程设计的能力;2、进一步理解和运用结构化程设计的思想和方法;3、初步掌握开发一个小型实用系统的基本方法;4、学会调试一个较长程序的基本方法;5、学会利用流程图或 N-S 图表示算法;6、掌握书写程设计开

2、发文档的能力(书写课程设计报告);、课程设计报告正文1)课程设计题目的原文;假定民航机场共有 n 个航班:航班号、起始站、终点站、飞机号、飞机时间、乘员定额、余票量。试设计一民航订票系统,使之能提供下列服务:航班信息录入功能(文件保存)完成航班信息浏览功能;查询航线(至少一种查询方式) 。2)题目的分析(需求分析) ;任务:通过此系统可以实现如下功能:录入: 可以录入航班情况(数据可以存储在一个数据文件中)浏览:航班信息浏览功能需要提供显示操作; 查询:可提供按照航班号、起点站、终点站、飞行时间、查询,可以查询某个航 线的情况(如,输入航班号,起飞抵达城市,确定航班是否满仓) ;另外 要提供键

3、盘式选择菜单以实现功能选择。要求: 根据以上功能说明, 设计航班信息, 订票信息的存储结构, 设计程序完成功能。可以建立航班结构体,结构体成员包括航班号、起点站、终点站、飞行时间、 预售票总数、已售票数。3)整体设计与模块划分;欢迎下载15根据需求分析,该程序可分为以下四大模块:飞机订票系统输入模块显示模块查询模块退出模块4)代码设计 ;包括各功能模块的流程图;重要模块中关键部分的代码分析;关键函数的算法设计和分析;等等;(一)主函数( 1)分析 : 主函数的功能比较简单,形式比较简洁,主要功能为:在系统 中没有程序所要的文件时,为程序建立一个所许的文件;调用菜单函数。 程序中的各模块都要用到

4、同一个文件,如果该文件不存在,则该程序就无 法正常运行,增加第一个功能就是保证文件的可用切可打开!本来只要在 主函数里调用各功能模块就行了,但是为了让程序能够方便的回到主函数 里,所以就建立了一个菜单函数。菜单函数的功能是替主函数调用个功能模块函数,因而设计的基本思路很 简单,即:用一个输入来接受用户的选择,加以个循环来让输入错误的用 户继续输入,直到输入正确为止;用一个 switch 语句来选择用户所要用到 的函数。( 2 )程序:void menu()int n,w;doputs("ttMENU*nn");puts("tttt 1.enter new data

5、");puts("tttt 2.Browse all");puts("tttt 3.Search");puts("tttt 4.exit");*n");puts("nnttprintf("Choice your number(1-4): bb"); 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:Bro

6、wse();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_ticketn&q

7、uot;);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 filen");exit(0);else fwrite(&t,sizeof(struct flight),1,fp);fclose(fp);2、

8、输出一个 航班信息函数void printf_oneflight(int i)printf("n%5d%20s%20s%10s%4d%4dn",flyi.flight_no,flyi.startstatio n,flyi.endstation,flyi.flytime,flyi.plan_ticket,flyi.sell_ticket)3、输出文件内容结构函数void printf_face()printf("ntNO. startstation endstation flytime plan_ticket sell_ticketn");4、载入函数实现

9、文件内容载入程序,并返回飞机航班数值。int load()FILE *fp;int i;if(fp=fopen("flydata.txt","rb")=NULL)printf("nCan not open filen");exit(0); for(i=0;!feof(fp);i+)fread(&flyi,sizeof(struct flight),1,fp);fclose(fp);return(i-1);5、返回退出函数实现程序退出、返回。void printf_back()int w;printf("nntSucc

10、essful._nn");printf("What do you want to do?nnt1).Browse all nowt2).back:bb"); scanf("%d",&w);if(w=1) Browse();else menu();(三) 航班基本信息输入模块航班信息录入函数:( 1)分析: 航班的基本信息,对它们输入后,要存进原文件,采用fwrite 函数就可以实现。但是,用该函数存进文件的数据都是以二进制的形式存在的,不是通 常所采用的形式,可以改用 fprintf 函数来实现该功能。不过本程序采用的是 fwrite

11、函数。再用户输入完成后,程序会询问是否继续输入,这个功能更具人性 化,可以省去返回到主函数在进入这个函数的麻烦!【流程图输入信息( 2 )程序:void enter()int i,n;printf("How many flights do you want input? : bb"); scanf("%d",&n);printf("n Enter data nownn");for(i=0;i<n;i+)printf("n Input %dth float record.n",i+1); input(i

12、);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("nn");puts("nn");printf_oneflight(i);printf("tThere are %d record.n",n);printf("nPress an

13、y 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=flyi.fli

14、ght_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&

15、quot;,"ab"); 我在写时 丢了 fopen 结果一直错误,并且发现不了,后来请老师才解决问题。还有写程序中我 经常忘记头文件包含命令,以及函数声明,导致调试中出现警告。这让我体会到只有 耐心的一行一行的改错误才能把程序调试好。运行中遇到问题 : 例如,对数据的写文件操作中,我把存在 flyN 中的数据以 fwrite(&flyN,sizeof(struct flight),1,fp) 写入文件,结果发现文件中总是不能 出现数据。以至程序不能运行后面部分。后来才发现取得地址错了应改成 fwrite(&t,sizeof(struct flight),1

16、,fp)。在机票显示阶段就是这问题让程序出现错误。不能正确读出输入的飞机航班信息。三、总结程序整体上运行与题目要求很吻合, 算法大多比较通用, 各个函数模块的正确性、 完备性、对输入的容错能力以及算法的进一步改进在设计中都有表述,这道题使我熟 悉了文件的输入输出操作,真切的感受到了 fprintf 和 fwrite 函数的区别! 回顾起此次课程设计,至今我仍感慨颇多,从理论到实践,在整整半个月的日 子里,我学到很多很多的东西,不仅巩固了以前所学过的知识,而且学到了很多在书 本上所没有学到过的内容。通过这次课程设计使我懂得了理论与实际相结合是很重要 的,只有理论知识是远远不够的,只有把所学的理论

17、知识与实践相结合起来,从理论 中得出结论,才是真正的知识,才能提高自己的实际动手能力和独立思考的能力。在 设计的过程遇到了各种各样的问题,同时在设计的过程中发现了自己的不足之处,对 以前所学过的知识理解得不够深刻,掌握得不够牢固,通过这次课程设计,把以前所 学过的知识重新温故,巩固了所学的知识。头文件包含命令 */四、程序代码:#include<stdio.h> /*#include<stdlib.h>#define N 50struct flight/* 结构体存放航班信息的结构 */int flight_no;char startstation20;char end

18、station20;char flytime10;int plan_ticket;int sell_ticket;flyN;/* 定义结构体变量 */FILE* fp;void Browse();void printf_oneflight(int i);void menu();void input(i) /* 把航班信息输入到文件 */ struct flight t; printf("nflight_no startstation endstation flytime sell_ticketn");scanf("%d%s%s%s%d%d",&t

19、.flight_no,t.startstation,t.endstation,t.flytime,&t .plan_ticket,&t.sell_ticket);fp=fopen("flydata.txt","ab");if(!fp)printf("can not open this filen");exit(0); else fwrite(&t,sizeof(struct flight),1,fp); fclose(fp);void printf_oneflight(int i) /* 输出一个 航班信息 *

20、/ printf("n%5d%20s%20s%10s%4d%4dn",flyi.flight_no,flyi.startstation,flyi.endstation,flyi.flytime,flyi.plan_ticket,flyi.sell_ticket);void printf_face() /* 输出文件内容结构 */printf("ntNO. startstation endstation flytime sell_ticketn");plan_ticketplan_ticketint load()/*载入函数实现文件内容载入程序,并返回飞机

21、航班数值 */FILE *fp;int i;if(fp=fopen("flydata.txt","rb")=NULL)printf("nCan not open filen");exit(0);for(i=0;!feof(fp);i+)fread(&flyi,sizeof(struct flight),1,fp);fclose(fp);return(i-1);void printf_back() /* 返回退出函数实现程序退出、返回 */ int w; printf("nntSuccessful._nn")

22、;printf("What do you want to do?nnt1).Browse all nowt2).back:bb"); scanf("%d",&w);if(w=1) Browse();else menu();void enter()/* 航班信息录入 */int i,n; printf("How many flights do you want input? : bb"); scanf("%d",&n);printf("n Enter data nownn");fo

23、r(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("nn");puts("nn");printf_oneflight(i);printf("tThere are %d record.n",n); printf("nPress any key to back .n"); getchar(); /* 没有返回植 */ menu();void Search()/* 查询 */int m,i,fli

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论