C课程设计说明书
- 格式:doc
- 大小:71.00 KB
- 文档页数:24
软件学院c 课程设计一、课程目标知识目标:1. 让学生掌握软件工程的基本原理,理解软件开发流程和项目管理方法;2. 培养学生运用面向对象设计思想进行软件设计和分析的能力;3. 使学生了解软件测试的基本方法和策略,并能运用到实际项目中。
技能目标:1. 培养学生运用UML图进行软件设计和分析的能力,提高学生的团队合作与沟通能力;2. 让学生掌握至少一种编程语言,能够运用所学知识完成小型软件项目的开发;3. 培养学生运用软件测试方法对软件进行质量保证的能力。
情感态度价值观目标:1. 培养学生热爱软件事业,树立正确的专业观念;2. 培养学生具备良好的职业道德和团队协作精神,尊重他人的知识产权;3. 培养学生具备问题解决意识,面对困难和挑战时保持积极态度,勇于克服困难。
分析课程性质、学生特点和教学要求,本课程将目标分解为以下具体学习成果:1. 学生能够独立完成软件需求分析、设计、编码和测试等环节;2. 学生能够运用所学知识解决实际问题,具备一定的软件项目开发经验;3. 学生能够在团队合作中发挥积极作用,与他人共同完成项目任务;4. 学生能够认识到软件工程在现代社会的重要性,具备持续学习的热情和动力。
二、教学内容根据课程目标,教学内容主要包括以下几部分:1. 软件工程基本原理:讲解软件工程的概念、软件开发流程、项目管理方法等,对应教材第一章。
2. 面向对象设计:介绍面向对象的基本概念、UML图、设计模式等,对应教材第二章。
3. 编程语言:以Java或C++为例,讲解编程基础、面向对象编程、异常处理等,对应教材第三章。
4. 软件测试:介绍软件测试的基本方法、策略、自动化测试等,对应教材第四章。
5. 软件项目实践:结合实际案例,让学生参与软件需求分析、设计、编码、测试等环节,培养实际操作能力。
教学内容安排如下:第一周:软件工程基本原理第二周:面向对象设计第三周:编程语言基础第四周:面向对象编程第五周:软件测试第六周:项目实践与总结在教学过程中,将结合教材章节内容,确保教学内容的科学性和系统性。
课程设计说明一、评分原则《C语言课程设计》单独考核,最后评分分为五档:优、良、中、及格、不及格。
总评的成绩由以下三个方面综合决定:1、五天课程设计时间,没有特殊情况的不许迟到、早退或缺席。
2、课程设计的考核实行逐个考核。
考核内容包括:运行程序和接受教师提问。
基本要求是:代码的行数须200行以上,程序能够无错误无警告地运行,并用“课程设计报告”解释说明程序。
3、考核验收时,每个同学都要上交自已的课程设计报告和代码文件。
课程设计报告的格式,请参考另一个文件(课程设计报告格式.DOC文件,主要是介绍你所编写的代码的结构和每一块的功能等。
由于本课程设计全部要求在Turboc C下进行,因此代码文件是后缀为.c 的文件。
上交方式:新建一个文件夹,以“班级+姓名”命名,例如“本机032班陈俊杰”,文件夹存放“课程设计报告”和“代码文件”两个文件。
如果“课程设计报告”和“代码文件”明显不一致的,总评为不及格!所以请同学们一定要根据自已所编写的程序,编写“课程设计报告”!如有雷同,复制者和被复制者的总评都为不及格!因此,希望同学们自觉主动地独立完成课程设计。
二、供选题目及要求本次课程设计的供选题目主要有以下三个类型:管理系统、设计动画,也可以根据自已的爱好选题。
各类型题目的要求如下:(一、管理系统1、学生成绩管理系统要求:(1采用模块化程序设计方法设计一个功能完善的系统,要有封面最好设计一个小动画,配背景音乐、有功能菜单(至少设计一个简单的选择式菜单或下拉式菜单。
(2本系统应具有:成绩录入、修改、删除、查询、排序、统计、输出等项功能。
(3本系统要具有通用性、界面美观、操作方便。
要考试系统安全问题。
2、通讯录管理系统具体题目可以是“机械041班通讯录”、“计算机032班通讯录”、“我所有朋友的通讯录”等,每个记录至少包含以下信息:姓名、学号、班级、性别、移动电话、宿舍电话、电子邮箱、QQ号、现在的联系地址、家庭联系地址。
C语言课程设计-猜数游戏(说明书)班级:20111461学号:2011146111姓名:完成日期:2012年6月20日目录:1.题目要求(设计任务)2.设计思路3.设计流程4.设计小结5.参考文献6.附录(源程序)1.题目要求(设计任务)猜数游戏(掌握程序结构及随机函数应用)程序说明及要求:游戏的开始由机器产生一个随机数(1~100之间,用库函数random(),用法见后面的说明),然后游戏者在程序的提示下猜数,若输入的数比这个数大,程序提示:Your answer is HIGH,try again. ,否则,程序提示:Your answer is LOW,try again.,直到猜对为止。
程序可实现连续猜数,直到游戏者退出。
程序输出要求:累计游戏者猜对一个数所需次数n,当n<=7时,给出“Congratulation”字样;当7<n<15时,给出“I can bet you can do it better.”;当n>=15时,用exit(0)库函数退出程序。
附:随机数发生器函数 random()用法函数原型: int random(int num);程序例:#include <stdlib.h> /*包含库函数random()的头文件*/#include <stdio.h>/* prints a random number in the range 0 to 99 */int main(void){ int n;randomize(); /*初始化随机数发生器*/n= random (100); /*产生一个0-100的随机数。
*/printf("Random number in the 0-99 range: %d\n",n);2.设计思路1.利用所学知识,百度及学长帮助收集足够多的资料2.根据老师要求的线索加上自身因素将程序分为几块,逐个解决3.步骤:主程序-封面-登陆界面-主菜单-小程序4.主要利用所学的for,switch,if等循环3.设计流程1. 封面设计2.登陆界面设计3.主菜单设计4.主游戏介绍5.游戏介绍6.游戏帮助7.关于游戏4.设计小结本次课题为:猜数游戏。
一问题描述与分析假定有n门课程,每门课程有课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开学学期等信息,学生可按要求(如总学分不得少于60)自由选课。
试设计学生选修课程系统,使之能提供以下功能:1.课程信息录入功能(课程信息用文件保存)2.课程信息浏览功能3.排序:按总学时排序4.查询功能:按开学学期查询5.课程修改,删除(可选项)二总体设计根据题目要求,定义结构体类型如下:struct subjects{char no[10];char name[20];char kind[20];int stime; /*总学时*/int ttime; /*授课学时*/int etime; /*实验或上机学时*/float score;int term;}sub[N];三详细设计1)存储结构的选择在这个程序中,我们选择用结构体数组来存储课程,即顺序存储结构Struct subjects sub[N]2)系统初始化这个模块的主要功能是得到初始的课程。
为了实现“一次输入,多次使用”,我们用文件来保存课程。
第一次运行本程序需从键盘输入所有课程并保存到文件中,以后运行就可以从文件中读取数据,直接使用了。
这样既可以减少输入的麻烦,更重要的是使本程序可以连续运行,每次运行都可以使用上一次保存的结果。
void newfile(){int i;FILE *fp;if((fp=fopen("sub.dat","wb"))==NULL){printf("文件建立失败!请重新运行程序。
\n");exit(0);}printf("请输入课程门数");scanf("%d",&num);for(i=0;i<num;i++){printf("请输入第%d门课程的编号:",i+1);getchar();gets(sub[i].no);printf("课程名称:");gets(sub[i].name);printf("课程性质:");gets(sub[i].kind);printf("总学时:");scanf("%d",&sub[i].stime);printf("授课学时:");scanf("%d",&sub[i].ttime);printf("实验或上机学时:");scanf("%d",&sub[i].etime);printf("学分:");scanf("%f",&sub[i].score);printf("开学学期:");scanf("%d",&sub[i].term);printf("\n");fwrite(&sub[i],1,sizeof(struct subjects),fp);}fclose(fp);printf("你刚才输入的数据共有%d门课程,详情数据为:\n",num);output();}3)课程浏览功能按课程编号进行浏览void read1(){FILE *fp;num=0;fp=fopen("sub.dat","r");if(fp==NULL){printf("文件打开失败!请重新运行程序。
1面向过程程序设计(C 语言)课程设计设计说明书学生宿舍管理系统起止日期: 2010 年 01 月 10 日 至 2010 年 01 月 17 日学生姓名 黄庆清 班级 计本091班 学号 09408100103 成绩指导教师(签字)计算机与通信学院2010年 01 月 20日学生宿舍管理系统一、程序设计要求综合运用C语言程序设计课程的主要知识,设计一个用于学生宿舍管理的程序,设计指标由程序的功能要求和技术要求具体说明。
1.功能要求学生宿舍管理程序至少具有以下功能:1)显示功能:能显示宿舍学生的全部记录,在显示时能提供下列5种显示方式:①按记录创建(学生入住)的顺序显示。
②按姓名升序显示。
将字符串(姓名)从小到大排列后输出。
③按学号升序显示。
将字符串(学号)从小到大排列后输出。
④按房号升序显示。
将字符串(房号)从小到大排列后输出。
⑤班按级号升序显示。
将字符串(班级号)从小到大排列后输出。
注:“显示顺序”栏的信息不属于记录的信息,它是连续的自然数,若记录个数不变,则“显示顺序”栏的信息不变。
2)修改功能:能修改学生记录除创建顺序以外的信息。
让用户输入需要修改的旧记录,再检查该记录是否存在,若存在则用户可对记录进行修改。
3)查询功能:能查询宿舍学生的记录。
提供以下5种查询方式。
①按姓名查询。
用户输入学生姓名,系统则检索记录,找到含有该姓名的全部记录,显示到屏幕上,并计算、显示找到的记录个数。
若找不到,则提醒用户:该记录不存在。
②按学号查询。
原理同上所述。
③按房号查询。
原理同上所述。
④按班级号查询。
原理同上所述。
⑤综合查询。
用户输入学生的姓名、学号、房号和班级号,系统自动检索,若找到和和用户输入的信息完全一致的记录,则显示到屏幕上。
该记录若存在,则是唯一的,这是由入住(新建)功能决定的。
4)删除功能:能以某些方式删除宿舍学生的信息。
删除时以记录为单位,既能一次删除一条记录,也能一次删除多条记录。
该程序提供以下7种删除方式:①按姓名删除。
《C语言程序设计课设》课程设计指导书一、课程设计的目的(1)加深对讲授内容的理解,尤其是一些语法规则。
(2)熟悉C语言程序设计的结构化编程的思想,掌握数据的基本类型、自定义类型、函数、文件和指针等知识,能运用这些知识进行综合编程,熟练应用。
(3)能够综合运用所学知识,编程解决实际问题。
(4)培养团队分工合作的意识,最终使学生提高编程技能和解决实际问题的能力。
二、课程设计基本要求2.1.组织管理1.由院、系指派经验丰富的专业教师担任指导教师。
2.课程设计实行课程负责人与指导教师共同负责制。
3.课程负责人主要进行课设的命题、指导教师的考核、技术把关和全面管理。
4.指导教师全面负责所承担班级的课程设计指导、管理和考核评定工作。
2.2设计要求1.自选题目、小组管理、团队合作、小组评测。
2.模块化程序设计。
3.锯齿型书写格式。
4.必须上机调试通过。
三、选题要求:每个题目限定1-2人,每人必须负责一部分功能,并独立完成,推举出一个组长,负责任务分工,汇总到班长处,然后交给指导教师。
四、设计报告格式及要求:1、题目2、设计目的3、总体设计(程序设计组成框图、流程图)4、详细设计(模块功能说明(如函数功能、入口及出口参数说明,函数调用关系描述等)5、运行结果及分析6、调试与测试:调试方法,测试结果的分析与讨论,测试过程中遇到的主要问题及采取的解决措施7、课程设计心得及体会8、源程序清单和执行结果:清单中应有足够的注释五、课程设计成绩评定5.1基本要求:(1)每个人必须有程序运行结果;(2)每个人必须交《C语言课程设计》报告5.2、成绩评定和打分标准由指导教师对学生在课程设计期间的表现,所完成的设计报告的质量、设计结果的验收和答辩情况进行综合考核。
具体评定标准如下:(1)上机考勤:注重平时上机考勤与遵守纪律情况20%(2)结果验收:学生能运行、讲述或调试自己的程序,回答教师提问,每个人必须有程序运行结果40%(3)小组自评成绩结果10%(4)设计报告:每个人必须交《C语言课程设计》报告和《C语言课程设计》日志30%以上四项缺一不可,否则不能到得相应学分依据上述考核内容,最后采用优(>90分)、良(80~89分)、中(70~79分)及格(60~69分)、不及格(<60分)五级记分制评定学生课程设计成绩。
江苏大学编程及软件应用实践课程设计说明书五子棋游戏学生姓名:黄小宝学号: 3070302019年级专业:2007级测控技术与仪器班级:测控 0701 班指导老师:张世庆学院:机械工程学院江苏·镇江提交日期:2009年7月五子棋游戏黄小宝(江苏大学,中国,镇江212013)摘要:该游戏软件在Windows系统为玩家提供传统五子棋游戏的基本功能,在这简单的五子棋中,玩家通过鼠标进行两个人的游戏。
游戏中包含姓名输入、开始/重新开始、悔棋、是否同意和回放等功能,游戏的主战场为15行15列的棋盘。
游戏结束,如果有输赢,则输出谁胜,否则,输出平局的信息框。
关键词:五子棋;视窗操作系统;游戏;MFCThe Game of GobangXiaobao Huang(Jiangsu University, China, Zhenjiang 212013)Abstract:To provide a traditional Gobang game, this game software in the Windows system, is for players with the basic functions in this simple Gobang, the audiences through a mouse for a two-person game.You can enter your names included in the game, it has a start / restart, Hui Qi, agree or not and playback functions, the main battlefield of the game for 15 to 15 of the chessboard. The end of the game, if a win or lose, who wins and output, or output tie the information box.Keywords: Gobang; Windows System; Game;MFC目录课程设计任务书 (1)一、课程设计题目:五子棋游戏 (1)二、目的与要求: (1)1、目的: (1)2、基本要求: (1)3、创新要求: (1)4、写出设计说明书 (1)三、设计方法和基本原理: (1)四、设计中涉及到的重要内容: (1)五、程序设计和调试: (2)六、答辩与评分标准: (2)1 前言 (3)2 需求分析 (3)系统概述 (3)概述 (3)系统运行环境 (3)运行环境 (3)功能需求描述 (3)功能需求 (3)3 总体设计 (4)开发与设计的总体思想 (4)屏幕的组成 (4)形状的组成 (4)形状的统一 (4)4 概要设计 (5)系统流程图 (5)4.2 系统功能模块 (5)5 详细设计 (6)5.1.界面的设计 (6)游戏中棋盘的形成 (6)游戏下子功能代码 (8)判断功能代码 (9)设置项目中的功能代码 (11)悔棋功能代码 (12)回放功能代码 (13)6 测试分析 (15)7 心得体会 (15)参考文献 (15)致谢 (16)课程设计任务书一、课程设计题目:五子棋游戏二、目的与要求:1、目的:(1)要求学生达到熟练掌握C++语言的基本知识和C++调试技能;(2)基本掌握面向对象程序设计的基本思路和方法;(3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。
苏州市职业大学课程设计说明书名称计算机语言C课程设计——职工信息管理系统设计院系 .班级 .姓名 .学号 106302202 .系主任 .教研室主任 .指导教师 .目录一、课程设计的目的与要求 (3)1.1目的 (3)1.2 要求 (3)二、题目说明 (4)2.1程序开发背景 (4)2.2开发工具介绍 (4)三、总体设计 (5)3.1总体思想 (5)3.2软件模块结构图 (5)3.3系统流程图 (6)3.3.1主函数 (6)3.3.2显示函数 (7)3.3.3录入函数 (7)3.3.4查询函数 (8)3.3.5删除函数 (9)3.3.6排序函数 (10)四、详细设计和系统实施 (11)4.1数据结构设计 (11)4.1.1定义数组 (11)4.1.2定义结构体 (11)4.1.3函数功能描述 (11)4.2界面设计 (12)4.2.1用户登录界面 (12)4.2.2 主界面 (13)4.2.3显示界面 (15)4.2.4录入界面 (16)4.2.5信息查询界面 (17)4.2.6删除界面 (19)五、遇到的问题及解决办法 (20)六、课程设计总结 (21)七、参考文献 (22)附录(源程序代码) (23)一、课程设计的目的与要求1.1目的1.掌握C语言编程的基础知识较熟练的编写C语言应用程序。
2.能够利用所学的基本知识和技能,解决简单的程序设计问题,增强独立完成工作的能力。
3.通过设计主要使学生有一个独立编写程序的过程,对理论学习及动手能力都有一个很大的提高,进一步培养学生热爱专业的思想,同时对本专业综合素质的提高起一个积极的推动作用。
1.2 要求1.要求利用C语言面向过程的编程思想来完成系统的设计;2.突出C语言的函数特征,以多个函数实现每一个子功能;3.画出功能模块图;4. 进行简单界面设计,能够实现友好的交互;5. 具有清晰的程序流程图和数据结构的详细定义;6. 熟练掌握C语言对文件的各种操作。
中北大学数据结构课程设计说明书一、设计目的假定民航机场共有n个航班,每个航班有一航班号,确定的航线(起始站、终点站)、确定的飞行时间(星期几)和一定的成员定额,设计一民航订票系统,使之能提供下列服务:1:航班信息录入功能(航班信息用文件保存)2:航班信息浏览功能3:查询航班(至少一种查询方式):a:按航班号查询 b:按起点站查询 c:按终点站查询 d:按飞行时间查询提示:(1)需求分析:航班信息用文件保存;航班信息浏览功能需要提供显示操作;要查询航线需要提供查找功能,可提供按上述四种方式查询;另外要提供键盘式选择菜单以实现功能选择。
(2)建立航班结构体,结构体成员包括航班号、起始站、终点站、飞行时间(星期几)、预售票总数、已售票数。
2.设计内容和要求要求:假定民航机场共有n个航班,每个航班有一航班号,确定的航线(起始站、终点站)、确定的飞行时间(星期几)和一定的成员定额,设计一民航订票系统,使之能提供下列服务:1:航班信息录入功能(航班信息用文件保存)2:航班信息浏览功能3:查询航班(至少一种查询方式):a:按航班号查询 b:按起点站查询 c:按终点站查询 d:按飞行时间查询3. 本设计所采用的数据结构根据题目要求和提示,首先是建立航班结构体,结构体名称为flight_type,由于航班的数目不止一个,所以要将变量名定义成数组,为flight[N],然后定义结构体成员: char flight_num[20]; /*航班号*/char start_add[20]; /*起始站*/char end_add[20]; /*终点站*/int week_day; /*飞行时间*/int All_amount; /*预售票数*/int Free_amount; /*已售票数*/下面是各个函数的数据结构:第一个是input函数。
由于要设置密码保护,所以定义一个字符数组并初始化, 内容由用户自己设定,作为密码;再预设一个长度为20个字符的字符数组,供用户录入密码。
经判断,密码正确程序才继续运行;否则提示用户继续还是退出。
定义三个整型变量,一个用来控制循环,,第二个的作用是当用户输入的星期超出范围时控制内嵌do—while循环让用户重新输入,第三个用来供用户输入选择继续运行程序还是退出。
第二个是save函数,首先定义一个整型变量控制循环,然后定义文件指针(FILE *fp),最后创建文件message保存录入的航班信息即可。
第三个是scan函数,定义两个整型变量,一个用来控制输出循环,第二个的作用是在完成此项功能后供用户选择接下来要做什么时输入。
由于要浏览文件message中的信息,所以要定义文件指针*fp。
最后是打开文件,把文件里包含的所有信息显示到屏幕上面。
下一个是search函数,由于用户要选择查询方式,所以要设计一个菜单供用户选择。
定义三个整型变量,第一个是供用户选择查询方式时输入,第二个是当用户输入的数字超出范围时控制一个do—while循环让用户重新输入,第三个的作用是在完成此项功能后供用户选择接下来要做什么时输入。
下面四个函数(flight_search函数(即按航班号查询函数)、start函数(即按起始站查询函数)、end函数(即按终点站查询函数)、time函数(即按飞行时间查询函数))的数据结构基本相同。
定义两个整型变量,一个用来控制输出循环,另一个的作用是完成此项功能后供用户选择接下来要做什么时输入。
还要定义两个数组,一个是长度为20的字符数组,供用户查询信息的时候输入航班号;另外一个数组的作用是在浏览航班信息时将其赋值。
如果信息库中有用户所需要的航班信息,则在读文件时,读到与用户所需要的信息不相符的时候就将此数组的那一个元素赋值为0。
如果是客户所需要的信息,则不赋值。
这样,读完信息以后,将此数组中所有元素的值相加,如果为0,则说明信息库中没有用户所需要的信息,就输出“对不起,无此航班!”。
所以还要多定义一个整型变量,以便将数组中元素的和赋给它。
所以共定义了三个整型变量。
另外还要定义文件指针*fp,然后打开文件,如果文件里面有用户需要的信息,则将其显示到屏幕上面;如果没有则显示无此信息,然后让用户选择接下来要做什么。
其中的time函数有两点不同,第一个就是当用户输入的星期超出范围时,要让用户重新输入,所以需要多定义一个整型变量,控制一个do—while循环让用户重新输入。
第二个就是time函数里面不需要定义数组,因为它的输入是星期几,所以只需要再多定义一个整型变量。
下面一个是menu函数,menu函数的作用就是为显示一个菜单供用户选择自己需要的功能,所以定义两个整型变量,一个是供用户输入选择功能,另一个是在用户输入的数字超出范围时控制一个do—while循环让用户重新输入。
最后一个是main函数。
这个函数比较简单,直接调用menu函数即可,所以不需要定义任何数据类型。
这就是整个程序的数据结构设计。
4.功能模块详细设计4.1 详细设计思想实际上,在上面设计算法和数据结构时模块设计就包括在里面了。
整个程序大体上分为以下几个模块。
第一个是信息录入模块。
此模块包含了两个函数,一个是input函数,供用户录入信息;第二个是save函数,用来保存用户录入的信息。
第二个是信息浏览模块。
此模块比较简单,只有一个scan函数。
第三个是信息查询模块。
此模块包含了五个函数:search函数、flight_search函数、start函数、end函数和time函数. search函数提供选择菜单供用户选择查询方式,后面四个函数分别提供了四种不同的信息查询方式。
第四个模块是设计菜单模块。
这个模块也只有一个函数,即menu函数。
第五个模块是程序中不可缺少的,即main函数。
这个模块最简单,是直接调用menu 函数。
4.2 核心代码#include"stdio.h"如有帮助,欢迎下载支持#include "string.h"#define N 4void save();void search();void input();void scan();void flight_search();void start();void end();void time();int menu();struct flight_type /*建立航班结构体*/ {char flight_num[20]; /*航班号*/char start_add[20]; /*起始站*/char end_add[20]; /*终点站*/int week_day; /*飞行时间*/int All_amount; /*预售票数*/int Free_amount; /*已售票数*/}flight[N];void input() /*录入航班信息函数*/{int a,j,w;char b[10];char u[10]={"liuyf"};printf("请输入密码:");scanf("%s",b);if(strcmp(b,u)==0){for(j=0;j<N;j++){printf("请输入航班号:");scanf("%s",flight[j].flight_num);printf("请输入起始站(如:beijing):");scanf("%s",flight[j].start_add);printf("请输入终点站(如:wuhan):");scanf("%s",flight[j].end_add);printf("请输入飞行时间(1~~7):");do{scanf("%d",&flight[j].week_day);if(flight[j].week_day<1||flight[j].week_day>7){w=1;p rintf("\n对不起!您输入的飞行时间超出范围,请重新输入!\n\n"); p rintf("注意范围(1~~7之间):");}else w=0;}while(w == 1);printf("请输入预售票数:");scanf("%d",&flight[j].All_amount);printf("请输入已售票数:");scanf("%d",&flight[j].Free_amount);save(); /*调用保存航班信息函数*/ printf("\n\n信息已录入并保存!\n\n\n现在您想做什么?\n1:退出\n2:返回主菜单\n");printf("\n请输入:");scanf("%d",&a);if(a==1)exit(0);else menu(); /*调用选择菜单函数*/ }else printf("\n对不起,您无权使用此功能!\n\n\n");printf("现在您想做什么?\n\n1:退出\n\n2:返回主菜单\n\n");printf("请输入:");scanf("%d",&a);if(a==1){printf("\n谢谢使用!\n");exit(0);}else menu(); /*调用选择菜单函数*/ }void save() /*保存航班信息函数*/{FILE *fp;int i;if((fp=fopen("message","wb"))==NULL){printf("无法打开文件!\n");return;for(i=0;i<N;i++)if(fwrite(&flight[i],sizeof(struct flight_type),1,fp)!=1)printf("文件打开出错!\n");fclose(fp);}void scan() /*浏览航班信息函数*/ {int a,c;FILE *fp;if((fp=fopen("message","rb"))==NULL){printf("无法打开文件!\n");menu();}printf("\n航班号起始站终点站飞行时间预售票数已售票数\n\n");for(c=0;c<N;c++){fread(&flight[c],sizeof(struct flight_type),1,fp);printf("\n");printf("%-5s %-8s %-8s %-d %-3d %-3d\n\n",flight[c].fli ght_num,flight[c].start_add,flight[c].end_add,flight[c].week_day,flight[c].All_ amount,flight[c].Free_amount); 注意:原程序中此处是一行}fclose(fp);printf("\n\n信息库中所有航班信息已输出!\n\n\n现在您想做什么?\n\n 1:退出\n\n 2:返回主菜单\n\n");printf("\n请输入:");scanf("%d",&a);if(a==1){printf("\n谢谢使用!\n");exit(0);}else menu();}void search() /*查询航班信息函数*/ {int d,w;printf(" *****************************查询方式****************************** \n");注意:原程序中此处是一行 printf(" 1:按航班号查询\n");printf(" 2:按起始站查询\n");printf(" 3:按终点站查询\n");printf(" 4:按飞行时间查询\n\n");printf("******************************************************************* \n");注意:原程序中此处是一行printf("\n请选择(1~~4):");do{scanf("%d",&d);if(d<1||d>4){w=1;printf("\n对不起!您的输入超出范围,请重新输入!\n");p rintf("\n注意范围(1~~4):");}else w=0;}while(w == 1);switch(d){case 1:flight_search();break; /*调用按航班号查询函数*/case 2:start(); break; /*调用按起始站查询函数*/case 3:end(); break; /*调用按终点站查询函数*/case 4:time();break; /*调用按飞行时间查询函数*/ }}void flight_search() /*按航班号查询航班信息函数*/ {FILE *fp;int a,f,A[N],m=0;char e[20];printf("请输入您要查询的航班号(如CA1826):");scanf("%s",e);if((fp=fopen("message","rb"))==NULL){printf("无法打开文件!\n");menu();}for(f=0;f<N;f++){fread(&flight[f],sizeof(struct flight_type),1,fp);if(strcmp(flight[f].flight_num,e)!=0)A[f]=0;else A[f]=1;}for(f=0;f<N;f++)m+=A[f];if(m==0)printf("\n\n对不起!无此航班!\n");else{printf("\n航班号起始站终点站飞行时间预售票数已售票数\n\n");for(f=0;f<N;f++){fread(&flight[f],sizeof(struct flight_type),1,fp);if(strcmp(flight[f].flight_num,e)==0)printf("%-5s %-8s %-8s %-d %-3d %-3d\n\n",flight[f].fli ght_num,flight[f].start_add,flight[f].end_add,flight[f].week_day,flight[f].All_ amount,flight[f].Free_amount); 注意:原程序中此处是一行}}fclose(fp);printf("\n\n现在您想做什么?\n\n 1:退出\n\n 2:返回查询菜单\n\n 3:返回主菜单\n\n");printf("请输入:");scanf("%d",&a);if(a==1){printf("\n谢谢使用!\n");exit(0);}if(a==2)search();else menu();}void start() /*按起点站查询航班信息函数*/ {int a,h,B[N],x=0;char g[8];FILE *fp;printf("请输入起始城市(城市的全拼):");scanf("%s",g);if((fp=fopen("message","rb"))==NULL){printf("无法打开文件!\n");menu();}for(h=0;h<N;h++){fread(&flight[h],sizeof(struct flight_type),1,fp);if(strcmp(flight[h].start_add,g)!=0)B[h]=0;else B[h]=1;}for(h=0;h<N;h++)x+=B[h];if(x==0)printf("\n\n对不起!无此航班!\n");else{printf("\n航班号起始站终点站飞行时间预售票数已售票数\n\n");for(h=0;h<N;h++){fread(&flight[h],sizeof(struct flight_type),1,fp);if(strcmp(flight[h].start_add,g)==0)printf("%-5s %-8s %-8s %-d %-3d %-3d\n\n",flight[h].fli ght_num,flight[h].start_add,flight[h].end_add,flight[h].week_day,flight[h].All_ amount,flight[h].Free_amount); 注意:原程序中此处是一行}}fclose(fp);printf("\n\n现在您想做什么?\n\n 1:退出\n\n 2:返回查询菜单\n\n 3:返回主菜单\n\n");printf("请输入:");scanf("%d",&a);if(a==1){printf("\n谢谢使用!\n");exit(0);}if(a==2)search();else menu();}void end() /*按终点站查询航班信息函数*/ {int a,n,C[N],y=0;char m[8];FILE *fp;printf("请输入终点城市(城市的全拼):");scanf("%s",m);if((fp=fopen("message","rb"))==NULL){printf("无法打开文件!\n");menu();}for(n=0;n<N;n++){fread(&flight[n],sizeof(struct flight_type),1,fp);if(strcmp(flight[n].end_add,m)!=0)C[n]=0;else C[n]=1;}for(n=0;n<N;n++)y+=C[n];if(y==0)printf("\n\n对不起!无此航班!\n");else{printf("\n航班号起始站终点站飞行时间预售票数已售票数\n\n");for(n=0;n<N;n++){fread(&flight[n],sizeof(struct flight_type),1,fp);if(strcmp(flight[n].end_add,m)==0)printf("%-5s %-8s %-8s %-d %-3d %-3d\n\n",flight[n].fli ght_num,flight[n].start_add,flight[n].end_add,flight[n].week_day,flight[n].All_ amount,flight[n].Free_amount); 注意:原程序中此处是一行}}fclose(fp);printf("\n\n现在您想做什么?\n\n 1:退出\n\n 2:返回查询菜单\n\n 3:返回主菜单\n\n");printf("请输入:");scanf("%d",&a);if(a==1){printf("\n谢谢使用!\n");exit(0);}if(a==2)search();else menu();}void time() /*按飞行时间查询航班信息函数*/ {int s,t,w,a,D[N],z=0;FILE *fp;printf("请输入日期(星期几)(1~~7之间)!\n");printf("星期");do{scanf("%d",&s);if(s<1||s>7){w=1;printf("\n对不起!您输入的飞行时间超出范围,请重新输入!\n");printf("\n注意范围(1~~7之间):");}else w=0;}while(w==1);if((fp=fopen("message","rb"))==NULL){printf("无法打开文件!\n");menu();}for(t=0;t<N;t++){fread(&flight[t],sizeof(struct flight_type),1,fp);if(s!=flight[t].week_day)D[t]=0;else D[t]=1;}for(t=0;t<N;t++)z+=D[t];if(z==0)printf("\n\n对不起!无此航班!\n");else{printf("\n航班号起始站终点站飞行时间预售票数已售票数\n\n");for(t=0;t<N;t++){fread(&flight[t],sizeof(struct flight_type),1,fp);if(s==flight[t].week_day)printf("%-5s %-8s %-8s %-d %-3d %-3d\n\n",flight[t].fli ght_num,flight[t].start_add,flight[t].end_add,flight[t].week_day,flight[t].All_ amount,flight[t].Free_amount); 注意:原程序中此处是一行}}fclose(fp);printf("\n\n现在您想做什么?\n\n 1:退出\n\n 2:返回查询菜单\n\n 3:返回主菜单\n\n");printf("请输入:");scanf("%d",&a);if(a==1){printf("\n谢谢使用!\n");exit(0);}if(a==2)search();else menu();}int menu() /*键盘式选择菜单*/{int k,w;do{printf("\n\n");printf("*******************************MENU******************************** \n"); 注意:原程序中此处是一行!printf(" 1.录入航班信息!\n");printf(" 2.浏览航班信息!\n");printf(" 3.查询航班信息!\n");printf(" 4.退出!\n\n");printf("******************************************************************* \n");注意:原程序中此处是一行printf("请选择(1~4):");scanf("%d", &k);if(k<1||k>4){w=1;printf("\n对不起!您的输入超出范围,请重新输入!\n");p rintf("\n注意范围(1~~4):");}else w=0;}while(w==1);switch(k){c ase 1:input();break; /*调用录入函数*/c ase 2:scan(); break; /*调用浏览函数*/c ase 3:search(); break; /*调用查询函数*/c ase 4:exit(0); /*退出*/}return 0;}main() /*主函数*/{menu(); /*调用选择菜单函数*/}六:结果分析设计时我预先设定只录入四个航班信息。