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

合集下载

飞机订票系统c语言课程设计

飞机订票系统c语言课程设计

飞机订票系统c语言课程设计一、课程目标知识目标:1. 学生能理解飞机订票系统的基本功能需求,掌握C语言实现此类系统的基本知识结构。

2. 学生能掌握结构体、数组、函数等C语言基础语法在飞机订票系统中的应用。

3. 学生了解并掌握文件操作在飞机订票系统中的重要性,并能实现数据存储与读取。

技能目标:1. 学生具备运用C语言设计并实现一个简单的飞机订票系统的能力。

2. 学生能通过分析问题,设计合理的程序结构,编写出清晰、高效的代码。

3. 学生能够利用所学知识进行程序调试和优化,解决实际问题。

情感态度价值观目标:1. 学生培养对编程的兴趣,激发探究精神,形成积极的学习态度。

2. 学生在课程实践中体会团队合作的重要性,培养沟通与协作能力。

3. 学生通过学习,认识到计算机编程在现实生活中的应用价值,增强社会责任感。

课程性质:本课程为高年级C语言程序设计课程的实践应用环节,旨在巩固学生的基础知识,提高实际编程能力。

学生特点:学生已经具备一定的C语言基础,具有较强的逻辑思维能力和问题解决能力。

教学要求:结合学生特点和课程性质,课程目标应具体、可衡量,注重培养学生的实践能力和团队协作精神。

通过分解课程目标为具体的学习成果,使学生在实践中掌握知识,提高技能,培养情感态度价值观。

后续教学设计和评估将围绕这些具体目标进行。

二、教学内容1. 系统需求分析:介绍飞机订票系统的基本功能,如用户登录、航班查询、座位选择、订票、退票等。

- 教材章节:第五章“结构体与链表”的应用,第十章“文件操作”。

2. C语言基础知识回顾:结构体、数组、函数、指针、文件操作等。

- 教材章节:第一至第四章基础语法,第五章结构体与链表,第六章数组,第七章函数,第八章指针,第十章文件操作。

3. 程序设计:根据需求分析,设计系统框架,编写代码实现各功能模块。

- 教材章节:第三章“程序控制结构”,第四章“函数与程序结构”,第五章“结构体与链表”,第七章“函数”。

c课程设计飞机订票系统

c课程设计飞机订票系统

c课程设计飞机订票系统一、课程目标知识目标:1. 学生能理解飞机订票系统的基本原理,掌握其功能模块和使用方法。

2. 学生能运用所学编程语言,设计并实现一个简单的飞机订票系统。

3. 学生了解数据库的基本操作,能运用数据库管理飞机票务信息。

技能目标:1. 学生掌握编程语言的基本语法,能运用条件语句、循环语句等编写程序。

2. 学生具备一定的系统设计能力,能根据需求分析,设计出合理的系统模块。

3. 学生能够运用数据库技术,实现数据的增、删、改、查等操作。

情感态度价值观目标:1. 学生培养对计算机编程的兴趣,激发学习主动性和创新能力。

2. 学生树立团队合作意识,学会与他人共同解决问题,提高沟通与协作能力。

3. 学生通过课程学习,认识到信息技术的应用价值,增强对信息社会的责任感。

课程性质分析:本课程为信息技术学科,旨在培养学生掌握编程语言和数据库技术,通过设计飞机订票系统,提高学生的实际操作能力和解决实际问题的能力。

学生特点分析:本课程针对初中年级学生,他们对计算机有一定的兴趣,具备一定的逻辑思维能力,但编程基础和实际操作能力有限。

教学要求:1. 教学内容与课本紧密结合,注重理论与实践相结合,提高学生的实际操作能力。

2. 教学过程中,关注学生的个体差异,给予个性化指导,确保每个学生都能掌握课程内容。

3. 通过小组合作、讨论等形式,培养学生的团队协作能力和沟通能力。

二、教学内容1. 理论知识:- 了解飞机订票系统的基本概念和功能。

- 学习编程语言的基本语法,如变量、数据类型、运算符、条件语句和循环语句等。

- 掌握数据库的基本概念,如表、字段、记录等。

2. 实践操作:- 设计飞机订票系统的功能模块,如用户注册、登录、航班查询、购票、退票等。

- 编写程序代码,实现飞机订票系统的各个功能。

- 学习数据库的创建和操作,管理飞机票务信息。

3. 教学大纲:- 第一周:飞机订票系统概述,学习编程语言基本语法。

- 第二周:设计系统功能模块,学习条件语句和循环语句。

c语言航空订票系统课程设计

c语言航空订票系统课程设计

c语言航空订票系统课程设计一、课程目标知识目标:1. 让学生掌握C语言中结构体、数组、函数等基本知识点的综合应用。

2. 让学生了解并掌握航空订票系统的基本功能模块及其实现方法。

3. 帮助学生理解文件操作在C语言中的应用,学会读写航班信息。

技能目标:1. 培养学生运用C语言进行问题分析、程序设计和调试的能力。

2. 培养学生独立完成一个小型项目的能力,包括需求分析、功能设计、编码实现和测试。

3. 提高学生团队协作能力,学会在项目中分工合作、共同解决问题。

情感态度价值观目标:1. 培养学生对编程的兴趣,激发学习热情,增强自信心。

2. 培养学生良好的编程习惯,注重代码规范,提高代码质量。

3. 引导学生关注实际问题,培养解决实际问题的能力,增强社会责任感。

本课程针对高中年级学生,课程性质为实践性较强的项目课程。

结合学生特点,课程目标注重培养学生的动手能力和团队协作能力。

在教学过程中,要求教师引导学生掌握C语言相关知识,关注实际问题的解决,以实现课程目标。

通过本课程的学习,学生将能够独立完成一个航空订票系统,达到预期的学习成果。

二、教学内容1. C语言基础回顾:结构体、数组、函数、指针、文件操作等。

2. 航空订票系统需求分析:介绍系统功能模块,包括航班查询、预订、取消预订、显示航班信息等。

3. 功能模块设计:- 航班信息结构体设计- 航班信息文件读写操作- 航班查询功能实现- 航班预订与取消预订功能实现- 航班信息显示功能实现4. 编程规范与调试技巧:代码规范、调试方法、性能优化等。

5. 团队协作与项目管理:任务分配、进度控制、代码合并与冲突解决等。

教学内容依据教材相关章节进行组织,确保科学性和系统性。

教学大纲安排如下:第一周:C语言基础回顾,航空订票系统需求分析。

第二周:航班信息结构体设计,文件读写操作。

第三周:航班查询功能实现,编程规范与调试技巧。

第四周:航班预订与取消预订功能实现,团队协作与项目管理。

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

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

C语言课程设计报告飞机订票系统摘要本文是关于C语言课程设计报告飞机订票系统,它具有灵活的菜单,可以让用户轻松查看有关航班信息的详细信息,并用于购买操作。

本文旨在概述程序的全部运行流程,运用相关编程技术来实现订票系统。

关键词:C 语言课程设计,飞机订票系统,编程技术1 引言随着科技的不断发展,传统的人工订票系统已经不能满足人们的复杂需求,订票系统需要采用新技术来改进,以适应现代用户的需求。

为了建立一个高效的订票系统,我们开发了一个飞机订票系统。

它具有基于菜单式界面的灵活性,可以有效地实现飞机航班信息的查询,购票和航班信息的管理。

本报告着重介绍了构筑飞机订票系统的过程,旨在介绍编程技术以及每个模块的函数、功能实现,并概述程序的全部运行流程。

2 技术框架编写本程序的主要语言是C,采用层次功能模块结构设计,分为用户界面,数据管理,查询服务,支付服务和关系维护四个主要模块。

(1)用户界面用户界面模块主要实现功能是提供用户访问的菜单界面,用户可以在输入信息后,访问系统并根据输入信息获取反馈,进行下一步操作。

(2)数据管理数据管理包含数据结构和文件管理模块,它用来存储和管理航班信息、乘客信息等有关数据,数据在使用后可以及时写入文件。

(3)查询服务查询服务模块提供用户查询航班信息所必需的功能,根据用户输入的查询条件,提供精确的查询结果。

(4)支付服务支付服务模块用来实现订票系统和外围支付系统或服务的接口,以进行订票支付操作,以保证系统订票的安全性。

(5)关系维护关系维护模块主要负责订票系统的关系维护,保证数据的一致性,以及相联的航班和乘客信息之间的一致性。

3 设计实现(1)用户界面模块用户界面模块主要是用户与系统的交互界面,用C语言的标准输入输出实现,通过“while-switch”语句实现对不同功能的跳转。

(2)数据管理模块数据管理模块采用数组和二维字符串实现,能够有效地存储和进行订票,查询,修改和删除数据。

飞机订票系统c语言课程设计

飞机订票系统c语言课程设计

飞机订票系统 c语言课程设计一、教学目标本课程的学习目标主要包括知识目标、技能目标和情感态度价值观目标。

知识目标要求学生掌握飞机订票系统的功能、结构及其相关原理;技能目标要求学生能够运用C语言独立完成飞机订票系统的开发;情感态度价值观目标要求学生培养团队协作意识,增强对计算机编程的兴趣。

通过对课程性质、学生特点和教学要求的分析,我们将目标分解为具体的学习成果。

首先,学生需要理解飞机订票系统的业务流程,掌握C语言的基本语法和编程技巧;其次,学生能够运用所学的知识独立完成飞机订票系统的开发,提高实际操作能力;最后,学生在团队协作过程中培养沟通与协作能力,增强对计算机编程的兴趣和自信心。

二、教学内容本课程的教学内容主要包括飞机订票系统的功能介绍、C语言基础知识、飞机订票系统的模块划分和编程实现。

首先,介绍飞机订票系统的功能,包括用户注册、登录、航班查询、机票预订、支付结算等模块。

其次,讲解C语言的基本语法、数据类型、运算符、控制结构等基础知识。

接着,对飞机订票系统进行模块划分,引导学生了解各模块之间的关系和功能实现。

最后,分别针对各个模块,引导学生运用C语言进行编程实现,完成飞机订票系统的开发。

三、教学方法为了激发学生的学习兴趣和主动性,本课程将采用多种教学方法。

包括讲授法、讨论法、案例分析法和实验法等。

首先,通过讲授法向学生传授飞机订票系统的相关知识和C语言的基本语法。

其次,采用讨论法引导学生针对飞机订票系统的功能和模块划分进行深入探讨,提高团队协作能力。

然后,运用案例分析法分析实际开发过程中遇到的问题,培养学生解决问题的能力。

最后,通过实验法让学生动手实践,独立完成飞机订票系统的开发,提高实际操作能力。

四、教学资源本课程所需的教学资源包括教材、参考书、多媒体资料和实验设备。

教材方面,我们将选用《C语言程序设计》作为主教材,辅以《飞机订票系统设计与实现》等相关参考书。

多媒体资料包括教学PPT、视频教程等,以丰富教学手段,提高学生的学习兴趣。

c语言飞机订票系统课程设计

c语言飞机订票系统课程设计

c语言飞机订票系统课程设计一、课程目标知识目标:1. 让学生掌握C语言的基本语法和程序结构,特别是数组、结构体和函数的应用。

2. 使学生了解飞机订票系统的基本原理和功能需求,掌握相关数据结构和算法。

3. 帮助学生理解文件操作在飞机订票系统中的应用,学会读写数据文件。

技能目标:1. 培养学生运用C语言设计小型系统的能力,特别是模块化编程和代码组织能力。

2. 提高学生分析问题、解决问题的能力,学会运用所学知识解决实际订票问题。

3. 培养学生的团队协作能力,通过分组合作完成课程设计。

情感态度价值观目标:1. 激发学生对编程的兴趣,培养计算机编程的思维习惯。

2. 培养学生认真负责、严谨细致的学习态度,注重代码规范和程序调试。

3. 使学生认识到计算机技术在生活中的应用,增强对信息技术的认识和尊重。

课程性质:本课程设计属于实践性课程,以项目为导向,注重培养学生的实际操作能力和团队协作能力。

学生特点:学生已具备C语言基础知识,有一定的编程基础,但缺乏实际项目经验。

教学要求:教师需引导学生掌握飞机订票系统的基本原理,注重培养学生的编程实践能力,关注学生在课程设计过程中的情感态度变化,及时给予指导和鼓励。

在教学过程中,将课程目标分解为具体的学习成果,便于后续的教学设计和评估。

二、教学内容1. C语言基础回顾:复习数组、结构体、函数等基本概念和用法,确保学生具备扎实的编程基础。

相关教材章节:第3章 数组,第4章 结构体和联合,第6章 函数。

2. 飞机订票系统需求分析:讲解飞机订票系统的基本功能需求,如用户注册、航班查询、订票、退票等。

相关教材章节:第12章 项目设计。

3. 数据结构和算法设计:介绍飞机订票系统中涉及的数据结构(如链表、树等)和算法(如排序、查找等)。

相关教材章节:第7章 数据结构,第8章 算法。

4. C语言编程实践:指导学生运用所学知识编写飞机订票系统的各个功能模块。

相关教材章节:第9章 指针,第10章 文件操作。

C语言程序设计报告--飞机订票设计

C语言程序设计报告--飞机订票设计

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();}。

大一C语言课程设计--飞机订票系统

大一C语言课程设计--飞机订票系统

⼤⼀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();}。

飞机订票系统c语言课程设计

飞机订票系统c语言课程设计

飞机订票系统 c语言课程设计一、课程目标知识目标:1. 理解C语言在开发飞机订票系统中的应用,掌握相关数据结构(如结构体、数组、链表)的使用;2. 学会使用C语言进行文件操作,实现数据的存储和读取;3. 掌握C语言中的模块化编程思想,将系统功能划分为多个函数并实现协同工作。

技能目标:1. 能够运用所学知识,独立设计和实现一个飞机订票系统,包括用户注册、查询航班、预订机票、取消预订等功能;2. 提高问题分析能力,针对实际需求,运用C语言编写合适的算法和程序;3. 培养良好的编程习惯,编写规范、易读、高效的代码。

情感态度价值观目标:1. 培养学生面对复杂问题时,保持积极、主动、合作的态度,勇于克服困难;2. 增强学生的团队协作意识,学会在团队中发挥个人优势,共同完成任务;3. 通过课程学习,让学生认识到编程在实际生活中的应用价值,激发对计算机科学的兴趣。

本课程针对高年级学生,课程性质为实践性较强的课程设计。

在教学过程中,要求学生具备一定的C语言基础,能独立完成程序编写和调试。

课程目标的设定旨在让学生在掌握C语言知识的基础上,进一步提高编程实践能力,培养实际项目开发中的团队协作和问题解决能力。

通过课程学习,使学生能够将所学知识应用于实际项目中,达到学以致用的目的。

二、教学内容1. C语言基础知识复习:数据类型、运算符、控制语句、函数等基本概念;教材章节:第一章至第四章。

2. 数据结构:结构体、数组、链表等;教材章节:第六章、第七章。

3. 文件操作:文件打开、读取、写入、关闭等;教材章节:第十章。

4. 模块化编程:函数定义、调用、参数传递、作用域等;教材章节:第五章、第八章。

5. 飞机订票系统功能设计:- 用户注册、登录功能;- 航班查询、预订、取消预订功能;- 数据存储与读取功能;教材章节:综合应用实例。

6. 编程规范与调试技巧:代码风格、调试方法、性能优化等;教材章节:第十二章。

教学内容安排与进度:第一周:C语言基础知识复习;第二周:数据结构学习;第三周:文件操作学习;第四周:模块化编程;第五周:飞机订票系统功能设计与实现;第六周:编程规范与调试技巧,项目完善与优化。

c语言飞机订票系统课程设计

c语言飞机订票系统课程设计

c 语言飞机订票系统课程设计一、课程目标知识目标:1. 学生理解C语言中结构体、数组、函数等基本概念,并能运用这些知识设计飞机订票系统。

2. 学生掌握C语言文件操作,实现对飞机票数据的存储和读取。

3. 学生了解C语言中字符串处理函数,并能够运用字符串操作进行信息输入和输出。

技能目标:1. 学生能够运用结构体和数组创建和管理飞机票数据,实现票务信息的增删改查功能。

2. 学生能够编写C语言程序,实现用户界面交互,包括用户登录、航班查询、购票、退票等功能。

3. 学生能够利用文件操作保存和加载飞机订票系统数据,保证数据的持久性。

情感态度价值观目标:1. 学生培养编程的兴趣,激发学习C语言的积极性,形成自主学习的习惯。

2. 学生通过合作完成课程设计,培养团队协作能力和沟通能力,增强集体荣誉感。

3. 学生了解飞机订票系统的实际应用,认识到编程知识在解决实际问题中的价值,增强学以致用的意识。

课程性质:本课程设计为实践性课程,旨在让学生将所学的C语言知识应用于实际项目中,提高编程能力和解决实际问题的能力。

学生特点:学生已具备C语言基础知识,具有一定的编程能力,但对实际项目的开发尚缺乏经验。

教学要求:教师需引导学生复习相关知识点,提供必要的技术支持,鼓励学生自主探究和团队协作,注重培养学生的实践能力和创新能力。

在教学过程中,关注学生的个体差异,给予个性化指导,确保每位学生都能在课程中取得进步。

通过课程设计,使学生将理论知识与实践相结合,提高综合运用C语言知识解决实际问题的能力。

二、教学内容1. 复习C语言基础知识:结构体、数组、函数、指针、文件操作、字符串处理函数等。

相关教材章节:第一章至第六章- 结构体与数组:理解结构体的定义和用法,掌握结构体数组的操作。

- 函数:掌握函数的定义、调用和参数传递。

- 指针:理解指针的概念和操作,掌握指针在数组、函数中的应用。

- 文件操作:掌握文件的打开、读写、关闭操作。

- 字符串处理函数:熟悉常用的字符串处理函数,如strcpy、strcat等。

数据结构(C语言)实验报告_飞机订票系统

数据结构(C语言)实验报告_飞机订票系统

《数据结构》课程设计报告一、订票系统【需求分析】本订票系统要能够实现航班情况的录入功能、航班的查询功能、订票功能、退票功能以及管理本系统的功能即能够修改航班信息。

具体分析如下:1、录入功能可以录入航班信息,如录入航班号,到达城市,起飞时间,飞机票数,票价。

2、查询功能可以查询航班的各项信息,如可以查询起降时间,起飞抵达城市,航班票价,确定航班是否满仓,航班号。

3、订票功能可以订票并且记录下乘客的相关信息如记录下乘客,,所订航班的航班号以及所订的票数。

4、退票功能可以退票并且记录乘客的相关信息以及退票信息。

5、修改功能可以根据需要由管理员对航班信息进行修改更正。

【概要设计】1、算法设计:每个模块的算法设计说明如下:(1)录入模块:查找单链表的链尾,在链尾插入一个“航班信息”的新结点。

(2)查询模块:提供两种查方式:按航号和按航线查询,1代表按航号查询,2代表按航线查询。

0则表示退出查询。

顺着单链表查找,如果与航班号(航线)一致,输出相关信息,否则,查询不成功。

(3)订票模块:查找乘客要订的航班号,判断此航班是否有空位,有则输入乘客有关信息,订票成功,否则失败。

(4)退票模块:输入要退票的乘客以及证件,查找乘客资料的链表中是否有这位乘客,有则删去此结点,并在空位加上1,无则退票失败。

(5)修改模块:输入密码,确认是否有权限对航班信息进行修改,有则在航班信息链表中查找要修改的结点,进行修改,否则不能修改。

2.存储结构设计:(1)航班的信息:为了便于查找和修改,航班的情况存储结构采用单链表,每个元素表示一个航班的情况,包括航班号、起飞达到的时间、空座和目的的、票价以及限座七个数据项:typedef struct flightnode{char air_num[10]; /*航班号*/char start_time[15]; /*起飞时间*/char end_time[15]; /*到达时间*/char end_place[30]; /*目的地*/int total; /*限座*/int left; /*空座*/int price; /*票价*/struct flightnode *next; /*指向个结点*/}flightnode;(2)旅客的资料:为了便于插入、删除和修改,其采用单链表存储结构,每个数据元素typedef struct passengernode{ /*定义乘客资料结点*/char name[20];char ID_num[20];char air_num[20];int seat_num;struct passengernode *next;}passengernode;【详细设计】本系统源程序如下:#include<stdio.h>#include<stdlib.h>#define OK 1#define ERROR 0typedef struct flightnode{ /*定义航班信息结点*/char air_num[10];char start_time[15];char end_time[15];char end_place[30];int total;int left;int price;struct flightnode *next;}flightnode;typedef struct passengernode{ /*定义乘客资料结点*/char name[20];char ID_num[20];char air_num[20];int seat_num;struct passengernode *next;}passengernode;flightnode *head_flight(); /*生成航班信息的头结点*/passengernode *head_passenger(); /*生成乘客资料的头结点*/int CreatFlight(flightnode **l); /*生成航班信息链表*/int CreatPassenger(passengernode **l); /*生成乘客资料链表*/int InsertFlight(flightnode **p,char *air_num,char *start_time,char *end_place,int total,int left,int price); /*插入航班信息的结点*/int InsertPassenger(passengernode **p,char *name,char *ID_num,char *air_num,int seat_num); /*插入乘客资料的结点*/flightnode *modefy_airline(flightnode *l,char *air_num); /*修改航班信息的函数*/int BookTicket(flightnode*a,char *air_num,passengernode *c,char *name,char *ID_num); /*订票函数*/int CancelTicket(passengernode *c,flightnode*l,char *name,char *ID_num); /*退票函数*/ int SearchFlight(flightnode*head); /*查询航班信息函数*/int SearchPassenger(passengernode *head); /*查询乘客信息函数*/void main() /*主函数*/{int p=2; /*p==1时进入主菜单,p==0时退出系统*/passengernode *cus=head_passenger();flightnode *air=head_flight();char name[20],air_num[20],ID_num[30],mima[20],ch;char t[20]="zhengjianze"; /*管理员密码*/clrscr();CreatFlight(&air);CreatPassenger(&cus);while(p==2){printf("\n welcome to the airline system!\n\n please choose the serves below and press the number:\n\n");printf("================================================================\n\n");printf(" 1 -> Book Ticket \n");printf(" 2 -> Cancel Ticket \n");printf(" 3 -> Search Information \n");printf(" 4 -> Exit \n\n");printf("================================================================\n");switch(ch=getch()){case '1':{printf("\n *-------------Booking Ticket-------------*\n"); /*进入订票功能*/ printf("Please input a airline number and press enter for OK:");scanf("%s",air_num);printf("Please input your name and press enter for OK:");scanf("%s",name);printf("Please input your ID number and press enter for OK:");scanf("%s",ID_num);BookTicket(air,air_num,cus,name,ID_num);getch();};break;case '2':{printf(" *-----------------------Canceling Ticket--------------------*\n"); /*进入退票功能*/printf("Please input the cancel name for booking ticket:");scanf("%s",name);printf("Please input the ID for booking ticket:");scanf("%s",ID_num); CancelTicket(cus,air,name,ID_num);};break;case '3':{printf("*---------------Search Information---------------------*\n"); /*进入信息查询功能*/printf(" 1 -> flight information \n" );printf(" 2 -> passenger information\n ");printf(" other -> exit \n");printf("*------------------------------------------------------*\n");if((ch=getch())=='1') /*航班信息查询*/{printf("*------------------ flight information -----------------*\n");SearchFlight(air);}else if(ch=='2'){ /*乘客资料查询*/printf("\n please input the key:");scanf("%s",mima); /*输入管理员密码*/if(strcmp(mima,t)==0){printf("\n*---------------passenger information ---------------*\n\n"); SearchPassenger(cus);}else printf("sorry,the key is wrong");getch();}}break;case '4':{getch(); /*退出系统*/p=0;}break;}}}flightnode *head_flight(){flightnode *a;a=(flightnode *)malloc(sizeof(flightnode));if(a==NULL)a->next=NULL;return a;}passengernode *head_passenger(){passengernode *c;c=(passengernode*)malloc(sizeof(passengernode));if(c==NULL)c->next=NULL;return c;}int CreatFlight(flightnode **l){flightnode *p=*l;int i=0;char *air_num[3]={"flight01","flight02","flight03"};char *start_time[3]={" 08:00"," 12:00"," 16:30"};char *end_place[3]={"Guangzhou","Shenzhen","Shantou"}; /*初始化航班信息*/int total[3]={100,100,100};int price[3]={300,200,250};int left[3]={23,54,76};for(i=0;i<3;i++)InsertFlight(&p,air_num[i],start_time[i],end_place[i],total[i],left[i],price[i]); /*插入航班信息*/return OK;}int CreatPassenger(passengernode **l){passengernode *p=*l;int i=0;char *name[3]={"liming","Ximing","Chongliang"};char *ID_num[3]={"3105006052","3105006054","3105006051"}; /*初始化乘客资料*/ char *air_num[3]={"flight01","flight02","flight03"};int seat_num[3]={12,5,8};for(i=0;i<3;i++)InsertPassenger(&p,name[i],ID_num[i],air_num[i],seat_num[i]); /*插入乘客资料*/ return OK;}int InsertFlight(flightnode **p,char *air_num,char *start_time,char *end_place,int total,int left,int price){flightnode *q;q=(flightnode*)malloc(sizeof(flightnode));strcpy(q->air_num,air_num);strcpy(q->start_time,start_time);strcpy(q->end_place,end_place);q->total=total;q->left=left;q->price=price;q->next=NULL;(*p)->next=q;(*p)=(*p)->next; /*航班信息链的尾插法*/return OK;}int InsertPassenger(passengernode **p,char *name,char *ID_num,char *air_num,int seat_num){passengernode *q;q=(passengernode*)malloc(sizeof(passengernode));strcpy(q->name,name);strcpy(q->ID_num,ID_num);strcpy(q->air_num,air_num);q->seat_num=seat_num;q->next=NULL;(*p)->next=q;(*p)=(*p)->next; /*乘客资料链表的尾插法*/return OK;}flightnode *modefy_airline(flightnode *l,char *air_num)flightnode *p;p=l->next;for(;p!=NULL;p=p->next){if(strcmp(air_num,p->air_num)==0){p->left++;return l;}printf("NO the airline!");return 0;}}int BookTicket(flightnode *a,char *air_num,passengernode *c,char *name,char *ID_num){flightnode *p=a;passengernode *q=c->next;p=a->next;for(;q->next!=NULL;q=q->next);for(;p!=NULL;p=p->next){if(strcmp(p->air_num,air_num)==0){if(p->left>0){printf(" \nSuccessful for Booking ticket.\n\n Y our flight: %s\n Your seat number : %d ",p->air_num,(p->total-p->left+1));printf("\n *-----------------------------------------*");InsertPassenger(&q,name,ID_num,air_num,p->total-p->left+1);p->left--; return OK;}else{printf("seat is full");return 0;}}/*if(strcmp)*/ }printf("Sorry,there isn't the plane,please check the airline number!");printf("\n *-----------------------------------------*");}int CancelTicket(passengernode *c,flightnode *l,char *name,char *ID_num){passengernode *p,*pr;char air_num[20];pr=c;p=pr->next;while(p!=NULL)if(strcmp(p->name,name)==0&&strcmp(p->ID_num,ID_num)==0){strcpy(air_num,p->air_num);l=modefy_airline(l,air_num);pr->next=p->next;p=pr->next;printf("successful for canceling ticket.");printf("\n *-----------------------------------------------------------------*");return OK;}pr=pr->next;p=pr->next;}printf("Sorry,there isn't the customer!");printf("\n *--------------------------------------------------------*");return ERROR;}int SearchFlight(flightnode *head){flightnode *p=head->next;printf(" Flight Start_time Arrival_place Price T otal Left_seat\n\n");for(;p!=NULL;p=p->next){printf(" %s %-10s %-9s %-7d%-6d %-6d\n",p->air_num,p->start_time,p->end_plac e,p->price,p->total,p->left);printf("\n");}printf(" *----------------------------------------------------------*\n\n");return OK;}int SearchPassenger(passengernode *head){struct passengernode *q=head->next;printf(" Name ID Flight Seat_number\n\n");for(;q!=NULL;q=q->next){printf("%-12s %-8s %-5s %d\n",q->name,q->ID_num,q->air_num,q->seat_num);print f("\n");}printf("\n *----------------------------------------------------------*");return OK;}【调试分析】1、调试结果:(1)系统主菜单界面:(2)进入订票的界面:(3)查询信息的界面:选择1,查询航班信息的界面:选择2,输入密码,查询乘客的信息的界面:新增乘客,查询乘客信息:密码错误时:(4)进入退票的界面:名字或者证件错误时:2、时间复杂度分析:本程序运行所耗费的时间主要在于循环语句,for和while语句,其时间复杂度应该为O(n)。

c语言课程设计--飞机订票系统

c语言课程设计--飞机订票系统

c语言课程设计–飞机订票系统一、教学目标本课程的教学目标是使学生掌握C语言编程的基本知识,能够使用C语言设计并实现一个简单的飞机订票系统。

具体分为以下三个部分:1.知识目标:学生需要掌握C语言的基本语法、数据类型、运算符、控制结构、函数等编程基础。

2.技能目标:学生能够运用C语言进行程序设计,解决实际问题,如设计飞机订票系统的各个功能模块。

3.情感态度价值观目标:培养学生对计算机科学的兴趣,提高学生解决问题的能力,培养学生的团队合作精神。

二、教学内容教学内容主要包括C语言的基本语法、数据类型、运算符、控制结构、函数等编程基础,以及如何使用C语言设计并实现一个简单的飞机订票系统。

具体安排如下:1.C语言基本语法和数据类型2.C语言运算符和控制结构3.C语言函数和数组4.C语言指针和字符串5.飞机订票系统的设计和实现三、教学方法为了达到课程目标,我们将采用以下教学方法:1.讲授法:用于讲解C语言的基本语法、数据类型、运算符、控制结构、函数等编程基础。

2.案例分析法:通过分析实际案例,让学生了解如何使用C语言设计并实现飞机订票系统。

3.实验法:让学生动手编写代码,实现飞机订票系统的各个功能模块。

四、教学资源为了支持教学内容和教学方法的实施,我们将准备以下教学资源:1.教材:《C程序设计语言》或《C语言程序设计》2.参考书:《C Primer Plus》或《C和指针》3.多媒体资料:教学PPT、视频教程4.实验设备:计算机、网络环境五、教学评估为了全面、客观地评估学生的学习成果,我们将采用以下评估方式:1.平时表现:通过课堂参与、提问、小组讨论等环节,评估学生的学习态度和积极性。

2.作业:布置课后编程作业,评估学生对C语言知识的掌握程度及编程能力。

3.考试:期末进行闭卷考试,评估学生对C语言编程基础知识的掌握情况。

4.项目实践:要求学生分组设计并实现一个简单的飞机订票系统,评估学生的实际编程能力和团队协作能力。

C语言课程设计报告(附程序代码--飞机订票系统)

C语言课程设计报告(附程序代码--飞机订票系统)

C语言课程设计报告(附程序代码--飞机订票系统) 12/21/2011 第1页xxxx大学xx学院C语言课程设计题目:飞机订票系统专业: 计算机科学与技术班级:姓名:完成时间:12/21/2011 第2页第一部分:源程序(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页) 12/21/2011 第3页第一部分:源程序#include <stdio.h>#include <string.h> #include <stdlib.h> #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;}12/21/2011 第4页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();12/21/2011 第5页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 . . .");12/21/2011 第6页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");/*调用显示一个记录的函数*/}}12/21/2011 第7页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;}}12/21/2011 第8页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].EnPl ace)==0&&strcmp(s.data,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");12/21/2011 第9页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!");12/21/2011 第10页}else{ti[i].num--;printf("\n退票成功!\n");}getchar(); /*按任意健*/getchar(); /*按任意健*/menu();}void save(){int w=1;FILE *fp;int i;system( "cls" );if((fp=fopen("\\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()12/21/2011 第11页{FILE*fp;int i,w;w=1;system( "cls" );if((fp=fopen("\\ticket.txt","rt"))==NULL) {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("\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.退票");12/21/2011 第12页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 choiceagain:");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();}12/21/2011 第13页第二部分:函数流程图(1)menu()函数结束NY 退出 n=8 Y Y 开始NY载入 Y n=7 int n,w1YNY保存 Y 清屏(cls) n=6YNY输出目录退票 Y n=5YN输出n Y订票 Y n=4YNNif n<1||n>8 Y航班操作 Y Y n=3 YY NY w1=1 w1=0 Y浏览 Y n=2 YNN Y输入新航班 While(w==1) n=1 Y Y YYY 输出n(1-8)12/21/2011 第14页开始 (2)enter函数int i清屏(cls)请输入航班的数目n请输入数据mi=0N i<nY请输入第n次航班记录调用input()函数i++返回menu()结束12/21/2011 第15页(3)Order函数开始int i,j清屏(cls)i=0N 调用browse() i<n YYY j=i+1结束N i++ j<n YYYNstrcmp(ti[i].data, ti[j].data)>0YYY s=ti[i];ti[i]=ti[j]ti[j]=sj++12/21/2011 第16页开始 (4)input函数请输入航班代号请输入起飞地点请输入降落地点请输入起飞时间请输入航班的最大载客人数请输入航班的票价返回menu()结束12/21/2011 第17页(5)browse函数开始int i清屏(cls)i=0Ni<n i++Y调用printf_one(i)输出返回menu() 结束开始12/21/2011 第18页int i,m (6)Search_time函数清屏(cls)输入时间i=0N 返回menu1() i<nYYN i++ S==ti[i] YYY 结束m++(m!=0)&&(m%10==0)按任意键继续进行回车换行调用函数printf_one()开始12/21/2011 第19页int i,m (7) Search_end函数清屏(cls)输入要到达的地方i=0返回menu () i<nYYN i++ S==ti[i] Y结束Ym++(m!=0)&&(m%10==0)按任意键继续进行回车换行调用函数printf_one(i)12/21/2011 第20页(8)search函数开始int i,kk=-1清屏(cls)输入起飞,降落地点和时间i=0N Y k==-1i<nY Y i++输出“NO exist!”strcmp(s.BePlace,ti[i].BePlN ace)==0&&strcmp(s.EnPlace,ti[i].EnPlace)==0&&strc返回search()=k 返回search()=-1 mp(s.data,ti[i].data)==0Yk=i结束调用printf_one(k)跳出(break)12/21/2011 第21页(9)void menu1函数开始结束int n,w1清屏(cls)Ymenu() n=4Y 输出目录2NY Y n=3 () serch_end 输出n(1-4)Y NNY Ysearch_time() if n<1||n>4 n=2 Y Y YN Y w1=1 w1=0 Y Yorder() n=1 YYN输出n while(w1==1)Y Y12/21/2011 第22页(10)book函数开始int i清屏(cls)输出“欢迎进入售票窗口”i=search()N i!=-1YN ti[i].num>=ti[i].maxY ti[i].num++输出“该航班输出“该趟航不存在!” 班票已售完”输出“订票成功”返回menu()结束12/21/2011 第23页开始 (11)back函数int i,k=-1清屏(cls) 结束输入 menu()“欢迎进入退票窗口”输入输出“退票成功!”“输入航班代号”i=0 ti[i].num--NNk==-1 i<n i++Y Y输出N strcmp(s.ID,ti[i].“NOexist!” ID)==0 Y调用k=iprintf_one(k)12/21/2011 第24页开始(12)save函数结束 int w=1, FILE*fp,i清屏(cls) 输出“Cannotopen file”返回menu()Y (fp=fopen("\\ticket.txt","wt"))==NULLN调用fclose(fp)i=0NN i<n w==1i++Y YN 输出“file save fwrite(&ti[i],sizeof(struct ok!” plane),1,fp)!=1plane),1,fp)!=1Y输出“file writeerror”w=012/21/2011 第25页开始load函数n++(13)FILE*fp int i,w=1fread(&ti[i],sizeof( struct i++ plane),1,fp)Y清屏(cls) N !feof(fp)FILE*fp int i,w i=0n=0 (fp=fopen("\\ticket.txNt","rt"))==NULLY输出“Cannotopen n=n-1 file”(fp=fopen("\\ticket.txt","rtfclose(fp) "))==NULLw=0 N w==1Y返回输出“Load fileok!”返回menu() 结束12/21/2011 第26页第三部分,心得体会通过对C语言课程设计的学习,自己有很大的收获,将<<C语言>>应用得到了实践,将所学的各种语句紧密的联系起来,得到了融汇和贯通,使我对C语言有了更深一步的学习和认识。

c语言课程设计——飞机订票系统

c语言课程设计——飞机订票系统

信息科学与技术学院程序设计基础课程设计报告题目名称:飞机订票系统学生姓名:学号:专业班级:计科2班指导教师:20 年 6 月25 日目录1 课程设计题目与要求.................................................................... -2 - 1.1设计题目:............................................................................... - 2 -1.2设计要求:............................................................................... - 2 -2 总体设计........................................................................................... -3 -3 详细设计........................................................................................... -4 - 3.1结构体设计............................................................................... - 4 -3.2主模块设计............................................................................... - 4 -4 运行结果........................................................................................... - 7 -5 课程设计总结................................................................................ - 10 -1 课程设计题目与要求1.1设计题目:飞机订票系统1.2设计要求:假定民航机场共有n个航班,每个航班有一航班号、确定的航线(起始站、终点站)、确定的飞行时间(星期几)和一定的成员订额。

c语言课程设计报告_航空订票系统

c语言课程设计报告_航空订票系统

西安郵電學院C语言课程设计报告题目:航空订票系统院系名称:运算机学院专业名称:运算机科学与技术设计起止时刻:2013年06月17日~2013年06月20日一.设计目的对所学知识进行体系化、系统化的整理;进行模块化的训练,将大的程序转化为一个个小的函数一次解决问题;统筹计划,在设计之前有一个大的构思,以此为基础进行发散设计;关注细节,幸免在设计程序中因为一个小小的bug致使程序崩溃代码健壮性,考虑一些错误的操作可能带来的阻碍。

二. 设计内容航空订票系统三.概要设计1.功能模块图;2.各个模块详细的功能描述。

<一> 游客登岸:一、信息查询a.航班号查询(依据输入的航班号来找到对应的航班信息)b.起降地查询(依据输入的起飞地和目的地来找到对应航班信息)c.时刻查询(依据输入的时刻找到对应航班信息时刻可慢慢具体)二、订票系统依照输入的起飞地与目的地显示出所有走此航线的航班信息,然后根据显示的信息输入想要订购航班的航班号,确认购票后系统自动付款将此航班加入登岸用户的定单信息中。

3、退票系统进入后第一显示出当前登岸者已有的航班定单,输入需要退票的航班的航班号,退票成功。

4、定单详情显示出当前登岸者已有的航班定单信息,并依照时刻前后顺序显示。

<二> 治理员登岸:一、增加航班确信增加新航班后依据提示以此输入航班号、起飞地、目的地、起飞时刻、抵达时刻、票价;以后选择是不是继续输入,假设选Y继续适才的循环,不然退出增加航班。

二、删除航班输入需要删除航班的航班号,回车后该航班即被删除。

3、修改航班信息输入需要修改航班的航班号,显示出该航班的航班信息,选项选择修改航班信息的哪一项,选择后即可对该项信息进行修改。

4、信息查询a.时刻查找(与游客登岸中的时刻查询一样)b.起始地查询(输入起始地,显示出由此地起飞的所有航班信息)c.目的地查询(输入目的地,显示飞往此地的所有航班信息)d.起降地查询(与游客登岸中起降地查询一致)e.航班号查询(与游客登岸中航班号查询一致)f.所有航班(显示出当前已录入的所有航班航班信息)五、账号治理a.密码修改(针对遗忘密码的用户能够进行密码的重置)b.所有效户(显示出所有已注册用户的用户名)<三> 帐号申请:依照提示输入用户名,假设该用户名已有那么显示“该用户已存在”,假设用户名可用,那么继续输入密码,两次密码一致那么注册成功,可利用该用户以游客身份登岸。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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结果一直错误,并且发现不了,后来请老师才解决问题。

相关文档
最新文档