基于C语言数据结构的航班查询系统

合集下载

数据结构课程设计(C语言版)模拟飞机订票系统文档说明

数据结构课程设计(C语言版)模拟飞机订票系统文档说明

数据结构课程设计(C语言版)模拟飞机订票系统文档说明一、问题描述:试设计一个系统完成对航班的录入,查询,修改,订票,退票操作,航班与客户信息以文件的形式保存。

二、需求分析:通过此系统可以实现如下功能:1)录入:可以录入航班情况(数据可以存储在一个数据文件中)。

2)查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;3)订票:(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班;4)退票:可退票,退票后修改相关数据文件;客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。

5)修改航班信息:当航班信息改变可以修改航班数据文件要求:根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能。

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

客户结构体成员包括客户姓名、证件号码、订票航班号、订票数额。

三、具体模块划分:根据需求分析,该程序可分为粗略以下七个模块:四、代码设计:该部分包括对数据结构定义的分析,各个主函数的定义分析,关键函数算法的分析。

1、数据结构的定义分析:struct Flight//定义航班结构体{char ID_flight[20]; //航班号char City_started[20]; //航班起飞城市char City_landed[20]; //航班抵达城市char Time_started[10]; //航班起飞时间char Time_landed[10]; //航班抵达时间char Price[10]; //航班票价char Discount[10]; //航班折扣int flight_num; //航班票额}airp[n];struct Guest//定义客户结构体{char name[20]; //客户姓名char ID_guest[20]; //客户证件号char flight_booking[20]; //客户所定航班int booking_sv; //客户订单号int num_booking; //客户所定机票额}gt[n];该部分定义了两个结构体数组分别用于存放航班信息、客户信息。

数据结构课程设计航班查询系统实验报告

数据结构课程设计航班查询系统实验报告

目录一、概述 0二、系统分析 (1)1.航班信息的查询与检索 (1)2.航班信息查询与检索数据结构理论 (1)三、概要设计 (2)1.系统的功能 (2)2.系统模块分析及其流程图 (3)四、详细设计 (6)1.各函数说明 (6)2.定义相关数据类型 (8)3. 航班信息的查询 (9)五、运行由于测试 (12)六、总结与心得 (16)参考文献 (16)附录 (16)一、概述随着信息产业的飞速发展,信息化管理及查询已经进入并应用到各行各业,影响着人们的价值观念和生活方式。

因此,要提高企业信息化建设,利用先进的办公自动化系统来实现企业内部信息管理、共享及交流,从而提高企业综合实力。

本次设计是针对航班的查询系统,该设计要求对飞机航班信息进行排序和查询。

可按航班的航班号、起点站、终点站等信息进行航班信息的查询。

二、系统分析1.航班信息的查询与检索进入系统后,首先提示输入航班的信息,包括:航班号、起点站、终点站、班期、起飞时间、到达时间、飞机型号及票价等,票价为整型,其他为字符型。

当输入完一个信息后会提示是否继续输入,重复以上步骤输入全部的信息。

进入主菜单后会给出用户操作的界面,根据提示进行航班信息的查询。

2.航班信息查询与检索数据结构理论针对在本该类系统中的数据的处理情况,本系统采用二分查找法、基数排序法、最高位优先法。

二分查找法也称为折半查找法,它充分利用了元素间的次序关系,采用分治策略,可在最坏的情况下用O(log n)完成搜索任务。

它的基本思想是,将n 个元素分成个数大致相同的两半,取a[n/2]与欲查找的x作比较,如果x=a[n/2]则找到x,算法终止。

如果x<a[n/2],则我们只要在数组a的左半部继续搜索x(这里假设数组元素呈升序排列)。

如果x>a[n/2],则我们只要在数组a的右半部继续搜索x。

对航班号的排序是采用的基数排序法。

基数排序法又称“桶子法”(bucket sort)或bin sort,顾名思义,它是透过键值的部份资讯,将要排序的元素分配至某些“桶”中,藉以达到排序的作用,基数排序法是属于稳定性的排序,其时间复杂度为O (nlog(r)m),其中r为所采取的基数,而m为堆数,在某些时候,基数排序法的效率高于其它的比较性排序法。

数据结构课程设计(C语言版)飞机订票系统

数据结构课程设计(C语言版)飞机订票系统

———C语言版课题:飞机订票系统和图的遍历的动态演示姓名:学号:班级:指导教师:订票系统1.需求分析任务:通过此系统可以实现如下功能:录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;订票:(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班;退票:可退票,退票后修改相关数据文件;客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。

修改航班信息:当航班信息改变可以修改航班数据文件要求:根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能;2:主要设计思路:1)算法构造流程图:A:主菜单:B:各分块模板的构造流程图:3:功能函数设计:(1):订票系统主菜单函数menu_select()本函数主要构造系统的主菜单,系统需要实现很多功能,并且各个功能需要各自的函数支持,所以通过主菜单可以轻松的进入各个函数下实现各自的功能,故主菜单显得尤为重要。

其实就是通过键盘输入选择项,然后通过scanf接受,在通过swtich判断进入各个选择项。

(2):工作人员管理函数enter()&change()系统需要各个航班的详细信息,所以需要工作人员把信息输入系统里,以供乘客查询订票。

enter()函数的构造就是为了解决这个问题。

而有可能航班线路更改或由于天气等原因飞机的起飞时间发生了更改,故工作人员需要及时更改信息,所以需要构造change()函数。

(3):列出航班信息的函数list()乘客需要查询各个航班的信息,所以通过系统要能调出上面工作人员已经录入好的航班信息,所以构造本函数来实现这个功能。

(4)乘客具体查询函数search()本函数分两个分函数:search1()和search2(),它们分别实现乘客的按航班查询和按出发及抵达城市的两种查询方案。

C语言课程设计-航班信息管理系统

C语言课程设计-航班信息管理系统

课程设计课程名称C语言课程设计题目名称航班信息管理系统学生学院物理与光电工程学院专业班级电子科学与技术(4)班学号学生姓名指导教师2015 年10 月23 日目录一设计目的.............................................................................................................................. - 2 - 二课程设计的内容.................................................................................................................. - 2 - 三课程设计的要求与数据...................................................................................................... - 2 - 四课程设计应完成的工作...................................................................................................... - 3 - 五总体设计.............................................................................................................................. - 3 - 六详细设计.............................................................................................................................. - 3 - 七调试分析.............................................................................................................................. - 9 -7.1 源程序及注释............................................................................................................... - 9 -7.2 调试与测试................................................................................................................. - 30 -7.2.1 算法调试过程中出现的问题及解决方法:.................................................. - 30 -7.2.2 主要程序运行结果.......................................................................................... - 32 - 八总结.................................................................................................................................... - 35 - 九参考文献............................................................................................................................ - 36 -一设计目的进一步加深、巩固所学专业课程(《C语言程序设计》)的基本理论知识,理论联系实际,进一步培养自己综合分析问题和解决问题的能力。

c语言航班系统课程设计

c语言航班系统课程设计

c语言航班系统课程设计一、课程目标知识目标:1. 理解C语言的基本语法和编程结构,掌握函数、数组、指针等基本概念;2. 学会使用C语言进行数据输入、处理和输出;3. 掌握航班系统的基本功能需求,如航班查询、预订、取消等;4. 了解文件操作,实现航班信息的存储和读取。

技能目标:1. 能够运用C语言编写简单的航班系统程序;2. 学会分析问题,设计合理的程序结构,培养编程解决问题的能力;3. 掌握调试和优化程序的方法,提高程序质量和效率;4. 学会团队协作,与他人共同完成项目任务。

情感态度价值观目标:1. 培养学生对编程的兴趣,激发学习热情,提高自主学习能力;2. 培养学生的逻辑思维和创新能力,提高分析问题和解决问题的能力;3. 培养学生的团队协作精神,学会与他人沟通、分享和合作;4. 引导学生关注实际应用,认识到编程知识在现实生活中的重要性。

课程性质:本课程为实践性较强的课程,旨在让学生通过设计航班系统,将所学的C语言知识应用于实际项目中。

学生特点:学生具备一定的C语言基础,对编程感兴趣,具备一定的逻辑思维能力。

教学要求:教师需引导学生自主学习,注重理论与实践相结合,鼓励学生思考、创新,提高编程能力和团队协作能力。

通过课程学习,使学生达到上述课程目标,并能够将所学知识应用于实际项目中。

后续教学设计和评估将围绕这些具体的学习成果展开。

二、教学内容1. C语言基础语法回顾:变量、数据类型、运算符、表达式、控制结构(条件语句、循环语句);2. 函数与模块化编程:函数定义、调用、参数传递、作用域、递归;3. 数组与字符串:一维数组、二维数组、字符串处理;4. 指针与动态内存管理:指针概念、指针运算、指针与数组、动态内存分配;5. 结构体与文件操作:结构体定义、结构体数组、文件读写、文件存储;6. 航班系统功能模块设计:航班查询、预订、取消、航班信息管理;7. 程序调试与优化:调试技巧、性能优化、代码规范。

教学内容安排与进度:1. 第一周:C语言基础语法回顾;2. 第二周:函数与模块化编程;3. 第三周:数组与字符串;4. 第四周:指针与动态内存管理;5. 第五周:结构体与文件操作;6. 第六周:航班系统功能模块设计;7. 第七周:程序调试与优化。

C语言课程设计报告_航班管理系统方案

C语言课程设计报告_航班管理系统方案

C程序课程设计报告题目:航班管理系统班级:学号::指导教师:年月日一、问题描述 (3)二、设计及实验要点 (3)1功能分析 (3)2、总体设计 (5)(一)、功能模块设计 (5)1.航班管理系统的功能主流程 (5)2.管理系统的查询功能 (5)3.顾客进行订票的功能模块 (5)4.退票的功能模块 (5)5.续票的功能模块 (6)6.在订票续票功能完成之后,对顾客订票信息的查询功能模块 (6)7.退出系统的功能模块 (6)(二)、数据结构设计 (6)(三)、函数功能描述 (7)三、源程序(见附录) (9)四、程序实现 (9)(一)源码分析 (9)1.程序预处理 (9)2.主函数main() (9)3管理系统的查询功能 (9)4.顾客订票的功能模块 (11)5.顾客退票的功能模块 (11)5.顾客续票的功能模块 (12)(二)运行结果 (14)五、不足之处 (14)六、参考文献 (14)航班管理系统一、问题描述航班售票是民航业务管理的一项最基本业务。

表面上看,他只是民航业务的一个简单部分,但是她涉及的业务量大、客户多,还涉及资金管理与客户服务等多方面,因此这项业务并不像看上去那么简单。

过去传统的售票方式已不能满足现代航空业务流量剧增的客户要求,本次设计便是利用目前先进的开发工具Delphi7.0以及SQL server 2000开发一个航班售票管理系统,她能方便快捷的运用在民航业务的营运之中。

本系统是对民航飞机售票业务的一种模拟。

此次的开发系统主要是完成航班售票管理的各种自动化服务,通过计算机的运行完成各项事务,设计一个航班售票管理的数据管理系统。

通过开发此系统,可稳定简便地通过计算机来执行一系列操作,减少人工劳动强度,达到省时省力的目的,容包括乘客信息添加、修改、删除、查询;航班的售票订票的添加、修改、删除、查询;航空公司的航班时刻表的查询等。

在此次课程设计的实验中,便是利用C语言和数据结构的一些知识模拟航班管理系统。

c语言航班信息查询系统实验报告

c语言航班信息查询系统实验报告

软件学院大作业任务书题目:航班信息查询系统专业:班级:姓名:学号:完成人数:起讫日期:任课教师:职称:讲师部分管主任:完成时间:说明1.本任务书由任课教师填写后,下达到学生。

2.任务完成后,任课教师需填写小结表。

3.任务书、学生成绩与学生完成后的大作业(纸质和电子两种)一并报送各教学研究部审核后转教务办。

4.另附一份全班大作业总结NANCHANG UNIVERSITY高级语言程序设计课程设计题目: 航班信息查询系统学院:专业:班级:完成人数:成员:起讫日期:任课教师:完成时间:填表日期:目录一、需求分析............................................................. - 1 -1.1 项目介绍....................................................... - 1 -1.2 功能需求....................................................... - 1 -二、系统分析............................................................. - 1 -2.1 本程序需解决的关键技术问题..................................... - 1 -2.2 程序流程....................................................... - 1 -三、程序设计与实现....................................................... - 2 -3.1 程序设计....................................................... - 2 -3.2 程序实现........................................... 错误!未定义书签。

航空信息管理和检索系统--数据结构课程设计(C语言版)

航空信息管理和检索系统--数据结构课程设计(C语言版)

#include<stdio.h>#include<malloc.h>#include<stdlib.h>#include<string.h>typedef struct node{char username[20];char userlock[20];struct node *next;}user;typedef struct tnode{char number[20];char airstart[20];char airend[20];char startime[20];char arrivetime[20];struct tnode* next;}airplane,*plane;void administerlogin();void userlogin();void administerlogin();void administer();void save(void *head1) //save information{ airplane* head=(airplane*)(head1);airplane *p;FILE *f;p=head;if(p!=NULL){f=fopen("data.txt","w+");do{fprintf(f,"%-21.21s%-11.11s%-21.21s%-21s%-21s\n",p->number,p->airstart,p->airend,p->startime ,p->arrivetime);p=p->next;}while(p!=NULL);fclose(f);}}void save1(void *head1) //save information{ user* head=(user*)(head1);user *p;FILE*f;p=head;if(p!=NULL){f=fopen("user.txt","w+");do{fprintf(f,"%-21.21s%-21s\n",p->username,p->userlock);p=p->next;}while(p!=NULL);fclose(f);}}void print(airplane *head) //pinrt information{airplane *f;f=head;printf("\n\n");if(f!=NULL){do{printf("|%6s |%10s | %10s | %10s | %10s |\n",f->number,f->airstart,f->airend,f->startime,f->arrivetime);f=f->next;}while(f!=NULL);}}void userprint(user *head) //pinrt information{user *f;f=head;printf("\n\n");if(f!=NULL){do{printf("|%10s | %10s | \n",f->username,f->userlock);f=f->next;}while(f!=NULL);}}void inlist() //create information file{airplane *p,*q;airplane *head;int n=0;char ch;printf("是否添加新信息:");getchar();scanf("%c",&ch);printf("请输入航班号起点站终点站出发时间到达时间:\n");p=q=(airplane*)malloc(sizeof(airplane));scanf("%s%s%s%s%s",p->number,p->airstart,p->airend,p->startime,p->arrivetime);head=NULL;while(1){n=n+1;if(n==1)head=p;elseq->next=p;q=p;printf("是否继续添加新信息:");getchar();scanf("%c",&ch);if(ch=='n')break;printf("请输入航班号起点站终点站出发时间到达时间:\n");p=(airplane*)malloc(sizeof(airplane));scanf("%s%s%s%s%s",p->number,p->airstart,p->airend,p->startime,p->arrivetime);q->next=NULL;save(head);}void adinsertNode(airplane *head,airplane *newNode) // insert new node {airplane *f;f=head;while(f->next!=NULL){f=f->next;}f->next=newNode;newNode->next=NULL;}void insertNode(user *head,user *newNode) // insert new node{user *f;f=head;while(f->next!=NULL){f=f->next;}f->next=newNode;newNode->next=NULL;}void *administeread() //read information from file{FILE *fp;airplane *f,*head=NULL;char str[128];fp=fopen("data.txt","r+");fgets( str , sizeof(str) , fp );head=(airplane*)malloc(sizeof(airplane));if(head==NULL){printf("分配内存失败!\n");fclose(fp);exit(0);}head->next=NULL;sscanf(str,"%s %s %s %s %s",head->number,head->airstart,head->airend,head->startime,head->ar rivetime) ;while (fgets( str , sizeof(str) , fp ) != NULL){f=(airplane*)malloc(sizeof(airplane));f->next=NULL;sscanf(str,"%s %s %s %s %s",f->number,f->airstart,f->airend,f->startime,f->arrivetime) ;adinsertNode(head,f);}fclose(fp);return head;}user *useread(){FILE *fp;user *f,*head=NULL;char str[128];fp=fopen("user.txt","r+");fgets( str , sizeof(str) , fp );head=(user*)malloc(sizeof(user));if(head==NULL){printf("分配内存失败!\n");fclose(fp);exit(0);}head->next=NULL;sscanf(str,"%s%s",head->username,head->userlock) ;while (fgets( str , sizeof(str) , fp ) != NULL){f=(user*)malloc(sizeof(user));f->next=NULL;sscanf(str,"%s%s",f->username,f->userlock) ;insertNode(head,f);}fclose(fp);return head;}void manageflight(airplane *head){char numbers[20];char ch;airplane * p=head,*q;printf("请输入航班号: ");scanf("%s",numbers);//printf("error1");while(!strcmp(p->next->number,numbers)||p->next==NULL)p=p->next;// printf("error2");q=p;p=p->next;printf("A 删除该航班 B 修改该航班\n");getchar();scanf("%c",&ch);if(ch=='a'||ch=='A'){q->next=p->next;free(p);}else if(ch=='b'||ch=='B'){printf("|%6s |%10s | %10s | %10s | %10s |\n",p->number,p->airstart,p->airend,p->startime,p->arrivetime);printf("请输入新的航班信息航班号起点站终点站出发时间到达时间:\n");scanf("%s%s%s%s%s",p->number,p->airstart,p->airend,p->startime,p->arrivetime);}save(head);}void inquire(int n,char str[])//查找{//航班号//起点站//终点站//起飞时间//到达时间airplane *p;airplane *head=(airplane*)administeread();p=head;switch(n)case 1:while(!strcmp(p->number,str)){p=p->next;}printf("|%6s |%10s | %10s | %10s | %10s |\n",p->number,p->airstart,p->airend,p->startime,p->arrivetime);break;case 2:while(!strcmp(p->airstart,str)){p=p->next;}printf("|%6s |%10s | %10s | %10s | %10s |\n",p->number,p->airstart,p->airend,p->startime,p->arrivetime);break;case 3:while(!strcmp(p->airend,str)){p=p->next;}printf("|%6s |%10s | %10s | %10s | %10s |\n",p->number,p->airstart,p->airend,p->startime,p->arrivetime);break;case 4:while(!strcmp(p->startime,str)){p=p->next;}printf("|%6s |%10s | %10s | %10s | %10s |\n",p->number,p->airstart,p->airend,p->startime,p->arrivetime);break;case 5:while(!strcmp(p->arrivetime,str)){p=p->next;}printf("|%6s |%10s | %10s | %10s | %10s |\n",p->number,p->airstart,p->airend,p->startime,p->arrivetime);break;}}int main() //主函数{char str;printf("A 管理员登陆:\nB 用户登录:\n");scanf("%c",&str);system("cls");if(str=='a'||str=='A')administerlogin();//管理员登陆else if(str=='b'||str=='B')userlogin();//用户登陆return 0;}void sort(airplane *head){airplane *endpt; //控制循环比较airplane *p; //临时指针变量airplane *p1,*p2;p1 = (airplane *) malloc (sizeof(airplane));p1->next = head; //注意理解:我们增加一个节点,放在第一个节点的前面,主要是为了便于比较。

c语言课程设计航班管理系统

c语言课程设计航班管理系统

c语言课程设计航班管理系统一、教学目标本课程旨在通过学习航班管理系统的设计与实现,使学生掌握C语言编程的基本语法、数据结构、算法和软件工程方法。

具体目标如下:1.理解C语言的基本语法和编程规范。

2.掌握常用的数据结构和算法。

3.了解软件工程的基本方法和流程。

4.能够使用C语言编写简单的程序。

5.能够设计和实现一个简单的航班管理系统。

6.能够运用软件工程方法进行程序设计和测试。

情感态度价值观目标:1.培养学生的编程兴趣和自主学习能力。

2.培养学生解决问题的能力和团队合作精神。

3.培养学生的创新意识和软件工程意识。

二、教学内容本课程的教学内容主要包括C语言的基本语法、数据结构、算法和软件工程方法,以及航班管理系统的设计与实现。

具体安排如下:1.C语言的基本语法和编程规范。

2.常用的数据结构(如数组、链表、栈和队列等)和算法(如排序和查找等)。

3.软件工程的基本方法和流程(如需求分析、设计、编码和测试等)。

4.航班管理系统的设计和实现,包括飞机、航班、乘客等数据的定义和管理,以及航班预订、登机等功能的实现。

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

具体方法如下:1.讲授法:通过讲解和示例,使学生掌握C语言的基本语法和编程规范。

2.讨论法:通过小组讨论和问题解答,使学生深入理解数据结构和算法。

3.案例分析法:通过分析实际案例,使学生了解软件工程的方法和流程。

4.实验法:通过编写和测试程序,使学生掌握C语言的编程技巧和软件工程的方法。

四、教学资源本课程将使用教材《C语言程序设计》作为主要教学资源,同时提供以下辅助资源:1.参考书籍:提供相关数据结构和算法的参考书籍,以加深学生对该领域的理解。

2.多媒体资料:提供相关的视频教程和演示文稿,以帮助学生更好地理解课程内容。

3.实验设备:提供计算机和编程环境,以便学生进行编程实验和实践。

通过以上教学资源的支持,学生将能够更好地学习和实践C语言编程和软件工程方法,掌握航班管理系统的设计与实现。

C语言课程设计-航班订票系统

C语言课程设计-航班订票系统

C语言课程设计-航班订票系统C语言课程设计姓名:班级:学号:开始菜单0 1 4 3 2退出查询航班信息订票输入航班信息浏览航班信息输入航班数输出航班信输入需要订输入需要查息,航班数每票的航班号找的航班号碰到10的倍数,系统暂输入每个航停,按任意键班的航班从第一个航班开从第一个航班继续号,起始站,始,用strcmp语开始,用strcmp终点站,飞句进行对比语句进行对比行时间,预售票数找到相同未找到如果找未找到航班号,该航班到相同该航班在已售票号,输的航班号,输数目上加出,对号,输出,对上(需要j不起,出该航不起,订票的数没有该班信息没有该目) 航班航班输出,订票成功结束源程序#include<stdio.h>#include <stdlib.h>#include<string.h>#define N 50typedef struct flight{char flightNo[10]; //航班号char start[10]; //起始站char end[10]; //终点站float day; //飞行时间int totalTicket; //预售票总数int sellTicket; //已售票总数}Flight; //航班结构体int Index=0;Flight f[N];void input_flight_info( );void output_flight_info(int total); void search_flight_info();int revise_flight_info();void main() //编写菜单{int a;while(1){printf("============================================================ ========\n\n");printf("-------?-----?-----《欢迎进入飞机订票系统》?-----?-----?-------\n\n\n\n");printf("--------------------------*1.输入航班信息*--------------------------\n\n");printf("--------------------------*2.浏览航班信息*--------------------------\n\n");printf("--------------------------*3.查找航班信息*--------------------------\n\n");printf("--------------------------*4.订票*--------------------------\n\n");printf("--------------------------*0.退出订票系统*--------------------------\n\n");scanf("%d",&a);switch(a){case 1:input_flight_info(); //进入输入航班信息系统break;case 2:output_flight_info(Index); //进入浏览航班信息系统break;case 3:search_flight_info(); //进入查找航班信息系统break;case 4:revise_flight_info(); //进入订票系统break;case 0: //退出订票系统exit(0);}}}/*输入航班信息*/void input_flight_info( ) {int i,n;printf("输入航班数:"); //定义航班数scanf("%d",&n);Index=n;for(i=0;i<n;i++){printf("请输入航班号:\n");scanf("%s",f[i].flightNo); //输入航班号printf("请输入起始站:\n");scanf("%s",f[i].start); //输入起始站printf("请输入终点站:\n");scanf("%s",f[i].end); //输入终点站printf("请输入飞行时间:\n");scanf("%f",&f[i].day); //输入飞行时间printf("请输入预售票总数:\n");scanf("%d",&f[i].totalTicket); //输入预售票总数printf("请输入已售票总数:\n");scanf("%d",&f[i].sellTicket); //输入已售票总数}}/*浏览航班信息*/void output_flight_info(int total) {int i;for(i=1;i<total;i++){printf("航班号:%s\n",f[i].flightNo); //字符型printf("起始站:%s\n",f[i].start); //字符型printf("终点站:%s\n",f[i].end); //字符型printf("飞行时间:%f\n",f[i].day); //浮点型printf("预售票总数:%d\n",f[i].totalTicket); //整数型printf("已售票总数:%d\n",f[i].sellTicket); //整数型printf("\n");if(i%10==0&&i!=0)system("pause");}system("pause");}/*查找航班信息*/void search_flight_info(){int i;char temp[10];printf("请输入你要查询的航班号:\n");scanf("%s",&temp);for(i=0;i<50;i++) //查找相应的航班号{if(strcmp(f[i].flightNo,temp)==0)break;}if(i==50)printf("对不起,没有该航班\n");else{printf("航班号:%s\n",f[i].flightNo);printf("起始站:%s\n",f[i].start); //输出该航班的起始站printf("终点站:%s\n",f[i].end); //输出该航班的终点站printf("飞行时间:%f个小时\n",f[i].day); //输出该航班的飞行时间printf("预售票总数:%d\n",f[i].totalTicket); //输出该航班的预售票总数printf("已售票总数:%d\n",f[i].sellTicket); //输出该航班的已售票总数}}/*订票系统*/int revise_flight_info(){int i,j,k;char temp[10];printf("请输入的你要订票的航班号:\n");scanf("%s",&temp);for(i=0;i<50;i++) //查找相应的航班号{if(strcmp(f[i].flightNo,temp)==0){k=f[i].totalTicket-f[i].sellTicket; //剩余票数printf("请输入你想要的票数:\n");scanf("%d",&j);if(j>k)printf("对不起,剩余的票数只有%d\n",k);else{f[i].sellTicket=f[i].sellTicket+j; //在已售票的数目上加上刚销售的票数printf("订票成功\n");return f[i].sellTicket; //将售票的数目返回给原函数} break;}elseprintf("对不起,没有该航班\n");break;}}。

数据结构(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)。

数据结构课程设计——飞机航线查询系统

数据结构课程设计——飞机航线查询系统

题目:飞机航班信息系统功能:能够实现航班信息的查询、修改、退票等操作具体要求:1)界面简洁美观。

2)查询航班信息的至少两种方式:1、按航班号查询2、按照航线查询3)用户订票或者退票之后,与之对应的相关航班信息要跟着改变。

4)当没有乘客要乘坐的航班时,系统能够智能提示用户的其他路线选择。

具体的代码实现:#include"stdio.h"#include"stdlib.h"#include<string.h> //包含字符串函数处理头文件#define N 50#define M 50struct air//定义结构体数组{char number[10];char start[10];char end[10];char time1[8];char time2[8];int price;int count;int num;}s[N];int m;struct{char name[20];char ID[7];int t;int co;}c[M];void save()//保存模块程序{ int i;FILE *fp;//定义文件指针if((fp=fopen("info.txt","wb"))==0)//打开文件并判断是否出错{printf("创建文件失败!\n");//打印出错提示exit (0);}for(i=0;i<m;i++)if(fwrite(&s[i],sizeof(struct air),1,fp)==0)//向文件写入数据,并判断是否出错printf("向文件输入数据失败!\n\n");fclose(fp);//关闭文件}void read()//从文件读取信息模块{int i;FILE *fp;//定义文件指针if((fp=fopen("info.txt","rb"))==0)//打开文件,并判断是否出错{printf("出错,请检查文件是否存在\n");//打印出错提示exit (0);}for(i=0;i<m;i++){fread(&s[i],sizeof(struct air),1,fp);//从文件中读取信息}fclose(fp);//关闭文件}void menu(){printf(" ★---您好,欢迎进入中国民航管理系统!---★\n");printf("============================================================\ n");printf(" -------- ☆ 1.输入航班信息☆-------- \n");printf(" -------- ☆ 2.浏览航班信息☆-------- \n");printf(" -------- ☆ 3.修改航班信息☆-------- \n");printf(" -------- ☆ 4.查找航班信息☆-------- \n");printf(" -------- ☆ 5.删除航班信息☆-------- \n");printf(" -------- ☆ 6.订票信息☆-------- \n");printf(" -------- ☆ 7.退票信息☆-------- \n");printf(" -------- ☆ 0.退出☆-------- \n");printf("============================================================\ n");}void Input(){int i;printf("你需要输入多少个航班信息?\n");scanf("%d",&m);printf("请依次输入航班信息:\n") ;printf("航班号起点站终点站起飞时间抵达时间票价折扣总票数\n");for(i=0;i<m;i++){scanf("%s",s[i].number); //读取航班号scanf("%s",s[i].start);//读取起始站scanf("%s",s[i].end);//读取终点站scanf("%s",s[i].time1);//读取时间scanf("%s",s[i].time2);scanf("%d",&s[i].price);scanf("%d",&s[i].count);//读取机票数scanf("%d",&s[i].num);}save();printf("输入后的航班信息如下\n");read();printf("|航班号| 起点站| 终点站| 起飞时间| 抵达时间| 票价| 折扣| 剩余票数\n"); for(i=0;i<m;i++){printf("%3s ",s[i].number);printf("%8s ",s[i].start);printf(" %8s",s[i].end);printf(" %8s ",s[i].time1);printf("%8s ",s[i].time2);printf("%8d",s[i].price);printf("%7d折",s[i].count);printf("%8d",s[i].num);printf("\n");}}void Display(int m){ int i;read();printf("*********************** 【航班信息】**********************************\n");printf("|航班号| 起点站| 终点站| 起飞时间| 抵达时间| 票价| 折扣| 剩余票数\n"); printf("************************************************************************* *\n");for(i=0;i<m;i++){printf("%3s ",s[i].number);printf("%8s ",s[i].start);printf("%8s",s[i].end);printf("%8s ",s[i].time1);printf("%8s ",s[i].time2);printf("%8d",s[i].price);printf("%8d",s[i].count);printf("%8d",s[i].num);printf("\n");}printf("********************************************************************* *****\n");}void Print(int i){printf("%-6s %8s %8s %8s %8s %6d %6d %6d \n",s[i].number,s[i].start,s[i].end,s[i].time1,s[i].time2,s[i].price,s[i].count,s[i].num);printf("--------------------------------------------------------------------\n");}void search()//查询模块{char name1[10];char name2[10];char code[10];int i,k;read();printf("请选择查找方式:\n");//打印查询方式菜单printf("1.按航班号查找\n");printf("2.按航线查找\n");printf("0.返回\n");printf("请在0-2中选择:\n");scanf("%d",&k);//读取查找方式if(k>0){switch(k){case 1: printf("请输入航班号:\n");scanf("%s",code);break;case 2: printf("请输入起始站名称:\n");scanf("%s",name1);//读取起始站printf("请输入终点站名称:\n");scanf("%s",name2);break;}}read();//调用读取函数for(i=0;i<m;i++){ if(strcmp(s[i].number,code)==0){ printf("查找航班信息成功");Print(i);break;}if(strcmp(s[i].start,name1)==0&&strcmp(s[i].end,name2)==0)//按终点站起始站判断输出条件{ printf("查找航班信息成功!\n");Print(i);break;}else if(strcmp(s[i].start,name1)==0||strcmp(s[i].end,name2)==0){ printf("查找信息失败!没有您要查询的航线,您还可以考虑乘坐以下航班\n");Print(i);}}}void Modify() //修改模块{struct //定义结构体{char ch[10];char name1[10];char name2[10];char time1[8];char time2[8];int price;int count;int num;}mo;char a;int i,n;read();//调用读取模块//Display(m);do{printf("请选择修改方式:\n");printf("*1,按航班号修改:\n");printf("*2,按航线修改: \n");printf("请选择1或2,按回车键确认:\n");scanf("%d",&n);//读取修改方式switch(n){case 1:printf("请输入航班号:\n");scanf("%s",mo.ch);//读取航班号break;case 2:printf("请输入起始站:\n");scanf("%s",1);//读取起始站printf("请输入终点站:\n");scanf("%s",2);//读取终点站break;}for(i=0;i<m;i++){if(strcmp(s[i].start,1)==0&&strcmp(s[i].end,2)==0)//判断输出条件{Print(i);break;}if(strcmp(s[i].number,mo.ch)==0)//判断输出条件{Print(i);break;}}printf("请输入新航班号、起始站、终点站、起飞时间、抵达时间、价格、折扣、机票数:\n"); scanf("%s",mo.ch); //读取航班号scanf("%s",1);//读取起始站scanf("%s",2);//读取终点站scanf("%s",mo.time1);//读取时间scanf("%s",mo.time2);scanf("%d",&mo.price);scanf("%d",&mo.count);//读取机票数scanf("%d",&mo.num);strcpy(s[i].number,mo.ch);strcpy(s[i].start,1);//替换其始站strcpy(s[i].end,2);//替换终点站strcpy(s[i].time1,mo.time1);//替换时间strcpy(s[i].time2,mo.time2);s[i].price=mo.price;s[i].count=mo.count;//替换机票数s[i].num=mo.num;save();//调用保存模块printf("修改信息成功!\n");read();printf("修改后的航班信息为\n");printf("|航班号| 起点站| 终点站| 起飞时间| 抵达时间| 票价| 折扣| 剩余票数\n");for(i=0;i<m;i++)Print(i);printf("是否继续?请键入Y或N以回车键结束:\n");scanf(" %c",&a);}while(a=='Y'); //判断结束}void Book() //实现用户订票功能{ char ch[10];int d,i=0,t;Display(m);printf("请输入您要订的航班号码\n");scanf("%s",ch);while(i<m&&(strcmp(s[i].number,ch)!=0))i++;if(i>m){printf("没有找到您所要订的航班!请重新输入\n");scanf("%s",ch);}else if(strcmp(s[i].number,ch)==0)t=i;printf("请输入你要订的票数\n");scanf("%d",&d);if(d<0){printf("请输入有效的机票数!\n");//判断机票数是否出错scanf("%d",&d);}H:i=0;do{if(s[i].num!=0&&s[i].num>=d)//判断是否出错{ s[i].num=s[i].num-d;c[i].t=d;c[i].co=t;printf("请输入您的姓名:");scanf("%s",c[i].name);printf("请输入您的证件号码(6位数字)\n");scanf("%s",c[i].ID);system("cls");//save();//调用保存函数printf("订票成功!\n\n");break;}if(s[i].count<d)//判断是否出错{printf("对不起,您所订的航班剩余机票不够,请重新输入机票数量:\n");scanf("%d",&d);goto H;}i++;}while(i<m);//read();printf("下面是已订机票的顾客的相关信息:\n");printf("--------------------------------------------------------------------\n");printf("姓名证件号码订票数量订单编号\n");printf("--------------------------------------------------------------------\n");printf("%-6s %6s %6d %6d\n",c[i].name,c[i].ID,c[i].t,c[i].co);Print(c[i].co);}void Back()//退票模块{char p[10];int n,i=0;read();//调用查询模块printf("请输入您要退订的航班号\n");scanf("%s",p);while(i<m&&strcmp(s[i].number,p)!=0)i++;if(i<m){printf("请输入您要退的机票数目:\n");scanf("%d",&n);//输入所退票数}if(n<0) //判断票数是否有效{printf("请输入有效的机票数:");scanf("%d",&n);}s[i].num=s[i].num+n;printf("退票成功!\n");//save(); //调用保存模块}void Delet(int &m)//删除模块{char a;char city1[20],city2[20],no[10];int k,i,j;read();do{printf("请选择删除以方式回车键结束:\n");//打印删除方式菜单printf("*1.按航班号删除\n" );printf("*2.按航线删除\n" );printf("*0.返回\n" );printf("请输入您的选项(0-2):\n");scanf("%d",&k);//读取删除方式switch(k){case 1: printf("请输入您要删除的航班号:\n");scanf("%s",no);//读取航班号for(i=0;i<m;i++)if(strcmp(s[i].number,no)==0){ for(j=i;j<m;j++)s[j]=s[j+1];m--;save();//调用读取函数printf("删除信息成功,剩余航班信息如下\n");read();printf("************************************************************************* *\n");printf("|航班号| 起点站| 终点站| 起飞时间| 抵达时间| 票价| 折扣| 剩余票数(张)\n");printf("************************************************************************* *\n");for(i=0;i<m;i++)Print(i);printf("**************************************************************************\n");}break;//跳出循环case 2: printf("请输入要删除的航班起始站名称:\n");scanf("%s",city1);//读取起始站printf("请输入要删除的航班终点站名称:\n");scanf("%s",city2);//读取终点站for(i=0;i<m;i++)if(strcmp(s[i].start,city1)==0&&strcmp(s[i].end,city2)==0){for(j=i;j<m;j++)s[j]=s[j+1];m--;save();//调用读取函数printf("删除信息成功,剩余航班信息如下\n");read();printf("********************************************************************* *****\n");printf("|航班号| 起点站| 终点站| 起飞时间| 抵达时间| 票价| 折扣| 剩余票数(张)\n");printf("************************************************************************* *\n");for(i=0;i<m;i++)Print(i);printf("********************************************************************* *****\n");break;}break;//跳出循环case 0:break;}printf("是否继续删除?(Y or N):\n");scanf(" %c",&a);}while(a=='Y');}void main(){int j;menu();printf("请在0-7中选择以回车键结束:\n\n");scanf("%d",&j);switch(j){case 1:system("cls");Input();//调用输入模块break;case 2:system("cls");Display(m);//调用打印模块break;case 3:system("cls");Modify();//调用修改模块break;case 4:system("cls");search();//调用查找模块break;case 5:Delet(m); //调用删除模块break;case 6:system("cls");Book();//调用订票模块break;case 7:system("cls");Back();//调用退票模块break;case 0: break;}}11。

c语言课程设计机场航班系统

c语言课程设计机场航班系统

c语言课程设计机场航班系统一、教学目标本课程的目标是使学生掌握C语言编程基础,能够运用C语言实现简单的机场航班系统。

通过本课程的学习,学生将能够理解C语言的基本语法、数据类型、运算符、控制结构等知识,具备基本的编程能力,能够运用C语言进行程序设计,实现机场航班系统的功能。

具体的学习目标包括:1.知识目标:学生将掌握C语言的基本语法、数据类型、运算符、控制结构等知识。

2.技能目标:学生将能够运用C语言进行程序设计,实现机场航班系统的功能。

3.情感态度价值观目标:通过本课程的学习,学生将培养对计算机编程的兴趣和热情,提高自我学习和解决问题的能力。

二、教学内容本课程的教学内容主要包括C语言的基本语法、数据类型、运算符、控制结构等知识,以及机场航班系统的程序设计。

具体的教学内容安排如下:1.第一章:C语言概述,介绍C语言的基本概念和特点。

2.第二章:数据类型和变量,介绍C语言的数据类型和变量的使用。

3.第三章:运算符和表达式,介绍C语言的运算符和表达式的使用。

4.第四章:控制结构,介绍C语言的控制结构,包括条件语句和循环语句。

5.第五章:函数,介绍C语言的函数的定义和调用。

6.第六章:机场航班系统的设计与实现,介绍如何运用C语言实现机场航班系统的功能。

三、教学方法本课程的教学方法主要包括讲授法、案例分析法和实验法。

1.讲授法:通过教师的讲解,使学生掌握C语言的基本语法、数据类型、运算符、控制结构等知识。

2.案例分析法:通过分析实际案例,使学生了解如何运用C语言进行程序设计,实现机场航班系统的功能。

3.实验法:通过学生的动手实验,使学生巩固所学的知识,提高编程能力。

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

1.教材:选用合适的C语言教材,为学生提供系统的知识学习。

2.参考书:提供相关的参考书籍,为学生提供更多的学习资源。

3.多媒体资料:制作多媒体课件,为学生提供直观的学习材料。

数据结构课程设计--航班信息查询与检索系统

数据结构课程设计--航班信息查询与检索系统

数据结构课程设计--航班信息查询与检索系统《数据结构》课程设计报告题⽬:航班信息查询与检索专业:班级:学号:姓名:任课⽼师:2010年12⽉26⽇⽬录⼀、设计题⽬ (1)⼆、设计要求 (2)三、概要设计 (2)1.设计思路 (2)2.流程图 (2)四、详细设计 (3)1.定义数据类型 (3)2.算法实现 (3)五、测试数据 (6)1.录⼊航班信息 (6)2.航班信息查询 (7)六、收获与体会 (8)⼀、设计题⽬设计⼀个航班信息查询与检索系统。

可按航班的航班号、起点站、终点站、起飞时间以及到达时间等信息进⾏查询。

⼆、设计要求1、每个航班记录包括⼋项:航班号、起始站、终点站、班期、起飞时间、到达时间、飞机型号、票价。

如下表所⽰:航班信息表航班号起点站终点站航班期起飞时机到达时间机型票价CA1544 合肥北京 1.2.5 1055 1240 733 9602、要有输⼊模块。

3、对航班信息进⾏排序与查找。

三、概要设计1、设计思路根据题⽬所要求,程序必须实现航班信息的录⼊和查询。

程序⾸先定义了⼀个⽤于储存航班信息的数据类型,再由⽤户录⼊航班数据,在录⼊的同时并对数据进⾏排序,最后执⾏数据查询和检索。

在查询设计中,使⽤⼆分查找法对排好序的航班数据按2、流程图四、详细设计1 . 定义数据类型根据设计要求,设计中所⽤到的数据记录只有航班信息,因此要定义相关的数据类型:typedef struct {char start[6]; //起点站char end[6]; //终点站char sche[10]; //航班期char time1[5]; //起飞时间char time2[5]; //到达时间char model[4]; //机型int price; //票价}infotype; //航班记录类型typedef struct{keytype keys[keylen]; //关键字infotype others;int next;}slnode; //表结点typedef struct{slnode sl[maxspace]; //静态链表,s1[0]为头结点int keynum; //关键字长int length; //当前表长}sllist; //静态链表类型为了进⾏基数排序,需要定义在分配和收集操作时⽤到的指针数组:typedef int arrtype_n[10]; //⼗进制数字指针数组typedef int arrtype_c[26]; //26个字母指针数组2 . 算法实现(1)⼀趟分配算法void distribute(slnode *sl,int i,arrtype_n f,arrtype_n e){int j,p;for(j=0;j{f[j]=e[j]=0;for(p=sl[0].next;p;p=sl[p].next){j=sl[p].keys[i]%48; //将数字字符转化为对应的数值型数字if(!f[j])f[j]=p;elsesl[e[j]].next=p;e[j]=p; //将p指向的结点插⼊到第j个结点}}(2)⼀趟收集算法void collect(slnode *sl,int i,arrtype_n f,arrtype_n e){int j,t;for(j=0;!f[j];j++); //找第⼀个⾮空⼦表sl[0].next=f[j];t=e[j];while(j{for(j=j+1;jif(f[j]){sl[t].next=f[j];t=e[j];} //链接两个⾮空⼦表}sl[t].next=0;}(3)链式基数排序算法void radixsort(sllist &l){int i;arrtype_n fn,en;arrtype_c fc,ec;l.sl[i].next=i+1;l.sl[l.length].next=0; //将普通的线性表改为静态链表for(i=l.keynum-1;i>=2;i--) //按最低位优先依次对各关键字进⾏分配和收集{distribute(l.sl,i,fn,en);collect(l.sl,i,fn,en);}for(i=1;i>=0;i--){distribute_c(l.sl,i,fc,ec);collect_c(l.sl,i,fc,ec);}}void arrange(sllist &l) //按指针链表整理静态链表{int p,q,i;slnode temp;p=l.sl[0].next;for(i=1;i{while(pp=l.sl[p].next;q=l.sl[p].next;if(p!=i){temp=l.sl[p];l.sl[p]=l.sl[i];l.sl[i]=temp; //交换记录l.sl[i].next=p;}p=q;}}int binsearch(sllist l,keytype key[]){int low,high,mid;low=1;high=l.length;while(low<=high){mid=(low+high)/2;if(strcmp(key,l.sl[mid].keys)==0)return mid;else if(strcmp(key,l.sl[mid].keys)<0)high=mid-1;elselow=mid+1;}return 0;}五、测试数据1、录⼊航班信息编译后运⾏,显⽰:航班号起点站终点站航班期起飞时间到达时间机型录⼊:MU4594昆明西安 1.3.5.6 10151140 328 1160↙显⽰:继续输⼊吗?y/n:录⼊:y↙显⽰:航班号起点站终点站航班期起飞时间到达时间机型票价录⼊:SC7425青岛海⼝ 1.3.6 19202120 DH4 1630↙显⽰:继续输⼊吗?y/n:录⼊:n↙2、航班信息查询录⼊航班信息后,屏幕显⽰:********************* 航班信息查询系统********************** 1.航班号** 4.起飞时间** 5.到达时间** 0.退出系统*********************请选择(0-5):录⼊:1↙显⽰:输⼊要查询的航班号(字母要⼤写):录⼊:MU4594↙显⽰:航班号起点站终点站航班期起飞时间到达时间机型票价MU4594-昆明-西安-1.3.5.6 -1015 -1140 -328 -1160录⼊:2↙显⽰:输⼊要查询的航班起点站名:录⼊:青岛↙显⽰:航班号起点站终点站航班期起飞时间到达时间机型SC7425-青岛-海⼝-1.3.6 -1920-2120 -DH4 -1630↙录⼊:2↙显⽰:输⼊要查询的航班起点站名:录⼊:⼴州↙显⽰:* ⽆此航班信息,可能是输⼊错误!*六、收获与体会本设计的重点和难点是在于对航班数据的排序和查找,以链式基数排序为主线,⽤到了⼆分查找和顺序查找等知识,还有建⽴静态链表等。

航班查询系统C语言源程序

航班查询系统C语言源程序

航班查询系统C语言源程序As a person, we must have independent thoughts and personality.#include <>#include <>#include <>#define NOD struct plane_list struct plane{char number [10];char start[10];char arrive [10];char date[10];char starttime[10];char arrivingtime[10];char price[10];char model[10];};NOD{char number [10];char start[10];char arrive [10];char date[10];char starttime[10];char arrivingtime[10];char price[10];char model[10];NOD*next;};FILE *fp;/*由文件中的数据生成一个飞机航班的链表,如果文件不存在,则是一个空链表*/NOD *load(char planename[]){ NOD *p,*q,*head;struct plane per;p=(NOD *)malloc(sizeof(NOD));q=head=NULL;if((fp=fopen(planename,"rb"))==NULL)return head;else{ while(!feof(fp)){ if(fread(&per,sizeof(struct plane),1,fp)==1){p=(NOD *)malloc(sizeof(NOD));strcpy(p->number,;strcpy(p->start,;strcpy(p->arrive,;strcpy(p->date,;strcpy(p->starttime,;strcpy(p->arrivingtime,;strcpy(p->price,;strcpy(p->model,;head=p;p->next=q;q=head;}}}fclose(fp);return(head);}/*输入*/NOD *insert(NOD *head){ NOD *temp,*p;p=head;temp=(NOD *)malloc(sizeof(NOD)); printf("\n\t请输入航班号:");scanf("%s",temp->number);printf("\n\t请输入起点站:");scanf("%s",temp->start);printf("\n\t请输入终点站:");scanf("%s",temp->arrive);printf("\n\t请输入起飞时间:");scanf("%s",temp->starttime);printf("\n\t请输入到达时间:");scanf("%s",temp->arrivingtime);printf("\n\t请输入班期:");scanf("%s",temp->date);printf("\n\t请输入票价:");scanf("%s",temp->price);printf("\n\t请输入航班型号:");scanf("%s",temp->model);head=temp;temp->next=p;return head;}/*保存*/void save(NOD *head, char filename[]) {NOD*p;struct plane per;if((fp=fopen(filename,"wb"))==NULL) {printf(" 文件无法写入");exit(0);}else{ p=head;while(p!=NULL){ strcpy,p->number);strcpy,p->start);strcpy,p->arrive);strcpy,p->date);strcpy,p->starttime);strcpy,p->arrivingtime);strcpy,p->price);strcpy,p->model);if(fwrite(&per,sizeof(struct plane),1,fp)!=1){printf("文件不能写入数据,请检查后重新运行.\n");exit(0);}p=p->next;}fclose(fp);}}/*显示*/void display(NOD *head){ NOD *p;p=head;while(p!=NULL){ printf("航班号:%s\n",p->number);printf("起点站:%s\n",p->start);printf("终点站:%s\n",p->arrive);printf("班期:%s\n",p->date);printf("起飞时间:%s\n",p->starttime);printf("到达时间:%s\n",p->arrivingtime); printf("票价:%s\n",p->price);printf("飞机型号:%s\n",p->model);p=p->next;}}/*航班号查找*/void finda(NOD *head){ NOD *p;char number[10];printf("请输入查找航班的编号:");scanf("%s",number);p=head;while (p!=NULL){ if(strcmp(number,p->number)==0){ printf("航班号:%s\n",p->number);printf("起点站:%s\n",p->start);printf("终点站:%s\n",p->arrive);printf("班期:%s\n",p->date);printf("起飞时间:%s\n",p->starttime);printf("到达时间:%s\n",p->arrivingtime); printf("票价:%s\n",p->price);printf("飞机型号:%s\n",p->model);break;}elsep=p->next;}if(p==NULL)printf("\n\t查无此航班\n");}/*起点站查找*/void findb(NOD *head){ NOD *p;char start[10];printf("请输入查找航班的起点站:");scanf("%s",start);p=head;while (p!=NULL){ if(strcmp(start,p->start)==0){ printf("航班号:%s\n",p->number);printf("起点站:%s\n",p->start);printf("终点站:%s\n",p->arrive);printf("班期:%s\n",p->date);printf("起飞时间:%s\n",p->starttime);printf("到达时间:%s\n",p->arrivingtime); printf("票价:%s\n",p->price);printf("飞机型号:%s\n",p->model);break;}elsep=p->next;}if(p==NULL)printf("\n\t查无此航班\n");}/*终点站查找*/void findc(NOD *head){ NOD *p;char arrive[10];printf("请输入查找航班的终点站:");scanf("%s",arrive);p=head;while (p!=NULL){ if(strcmp(arrive,p->arrive)==0){ printf("航班号:%s\n",p->number);printf("起点站:%s\n",p->start);printf("终点站:%s\n",p->arrive);printf("班期:%s\n",p->date);printf("起飞时间:%s\n",p->starttime);printf("到达时间:%s\n",p->arrivingtime); printf("票价:%s\n",p->price);printf("飞机型号:%s\n",p->model);break;}elsep=p->next;if(p==NULL)printf("\n\t查无此航班\n");}/*起飞时间查找*/void findd(NOD *head){ NOD *p;char starttime[10];printf("请输入查找航班的起飞时间:");scanf("%s",starttime);p=head;while (p!=NULL){ if(strcmp(starttime,p->starttime)==0){ printf("航班号:%s\n",p->number);printf("起点站:%s\n",p->start);printf("终点站:%s\n",p->arrive);printf("班期:%s\n",p->date);printf("起飞时间:%s\n",p->starttime);printf("到达时间:%s\n",p->arrivingtime); printf("票价:%s\n",p->price);printf("飞机型号:%s\n",p->model);break;elsep=p->next;}if(p==NULL)printf("\n\t查无此航班\n");}/*到达时间查找*/void finde(NOD *head){ NOD *p;char arrivingtime[10];printf("请输入查找航班的到达时间:");scanf("%s",arrivingtime);p=head;while (p!=NULL){ if(strcmp(arrivingtime,p->arrivingtime)==0) { printf("航班号:%s\n",p->number);printf("起点站:%s\n",p->start);printf("终点站:%s\n",p->arrive);printf("班期:%s\n",p->date);printf("起飞时间:%s\n",p->starttime);printf("到达时间:%s\n",p->arrivingtime);printf("票价:%s\n",p->price);printf("飞机型号:%s\n",p->model);break;}elsep=p->next;}if(p==NULL)printf("\n\t查无此航班\n"); }/*删除*/NOD *dele(NOD *head){ NOD *p,*q;char number[5];printf(":请输入要删除的航班编号"); scanf("%s",number);p=q=head;while(p!=NULL){ if(strcmp(number,p->number)==0) {if(head==p)head=p->next;elseq->next=p->next;free(p);break;}else{q=p;p=p->next;}}if(p==NULL)printf("\n\t查无此航班\n"); return head;}/*主函数*/void main(){ NOD *head;char fnum[10];int choise;printf("\n\t欢迎光临航班查询系统:"); scanf("%s",fnum);head=load(fnum);while(1){ printf("\n\t\t 航班信息检索与查询\n");printf("\t\t********************************\n"); printf("\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 6.航班号删除\n");printf("\t\t 7.增加新航班\n");printf("\t\t 8.显示所有航班\n");printf("\t\t 9.存盘并退出\n");printf("\n\t请选择1-9:");scanf("%d",&choise);switch(choise){ case 1:finda(head);break;case 2:findb(head);break;case 3:findc(head);break;case 4:findd(head);break;case 5:finde(head);break;case 6:head=dele(head);break;case 7:head=insert(head);break;case 8:display(head);break;case 9:save(head,fnum); exit(0);default:printf("输入错误,重新输入\n");}}}。

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

printf("*** ------------------------------
***\n");
printf("*** * Flight inquires the system *
***\n");
printf("*** ------------------------------ ***\n");
}
void inquire_by_staddress(Node_list *L,char s[])//根据起飞地点查找并显示 {
int flag=0; L=L->next; while(L != NULL) {
***\n");
printf("*** A:Scan all flight information
***\n");
printf("*** B:By flight numble
***\n");
printf("*** C:By start address
***\n");
printf("*** D:By arrive address
inquire_by_araddress(L,a_addr);//根据降落地点查找并显示 printf("****Please input your choice here: "); continue; }
if('E' == choice) { printf("please input the flight take off date:"); scanf(" %s",date);
{ show_info(L);//浏览所有航班信息 printf("****Please input your choice here: "); continue; } if('B' == choice) { printf("please input the flight numble:"); scanf("%d",&num);
int main(void) {
Node_list *L; //定义存储链表 init_N(&L); //初始化链表 char ch; Data_type *E; //定义航班信息结构体
FILE *fp;//文件指针 fp=fopen("flight_input.txt","r");
E=(Data_type *)malloc(sizeof(Data_type));
/**************************************** ***简易航班查询系统 ****By liaoye928 1、 功能:
实现以下功能: 1) 信息录入 2) 信息显示(按照起飞时间先后顺序显示) 3) 信息查询(可根据不同的关键字进行查询) 2、 说明: 1) 使用链表对录入的信息进行存储 2) 对录入的信息进行排序(可按起飞时间进行排序) *******************************************/ #include"include.h"
else {
printf("malloc failed!\n"); return false; } }
bool init_D(Data_type **E)//航班信息结构体初始化 {
(*E)=(Data_type *)malloc(sizeof(Data_type)); if(NULL != (*E))
printf("TYPE statime arr_time value\n");
while(L->next != NULL)
{
L=L->next;
show_one(L);
}
}
void inquire_by_number(Node_list *L, int num )//查找航班号为用户所需,并显示到屏幕 {
while(8 ==fscanf(fp,"%d %s %s %s %s %s %s %d",&E->number, E->staddress,E->arraddress,E->DATE,E->TYPE, E->stime,E->atime,&E->value))//读取文件内容,对应结构体各元素
{ save_insert(L,E);//将其放入链表存储 E=(Data_type *)malloc(sizeof(Data_type));//开辟结构体指针
printf("****************************************************\n");
printf("*** Please chioce the way to inquires : ***\n");
printf("*** -----------------------------------
L->info->DATE,L->info->TYPE,L->info->stime,L->info->atime,
L->info->value);
}
void show_info(Node_list *L)//显示当前链表的所有信息
{
char a[80];
printf("f_number
path
DATE ");
L=L->next; int flag=0; while(L != NULL) {
if(num == L->info->number) { show_one(L); flag=1; break; } L=L->next; } if( flag == 0)
printf("sorry! Not found this flight!\n");
return true; else
{ printf("malloc failed!\n"); return false; }
}
bool save_insert(Node_list *L,Data_type *E)//插入链表存储 {
Node_list *new_node; init_N(&new_node); new_node->info=E;
inquire_by_data(L,date);//根据航班日期浏览,并根据起飞时间排序 printf("****Please input your choice here: "); continue; }
if('F' == choice) { printf("goodbye!!\n"); exit(1);//退出系统 }
char choice; //读取用户选择 int num; char s_addr[10]; char a_addr[10]; char date[10];
printf("****Please input your choice here: "); while(1 == scanf(" %c",&choice)) { if('A' == choice)
#endif
#include"include.h"
bool init_N(Node_list **L)//用于存储的链表初始化 {
(*L)=(Node_list *)malloc(sizeof(Node_list)); if(NULL != (*L)) {
(*L)->next=NULL; return true; }
inquire_by_number(L,num);//根据航班号查找 printf("****Please input your choice here: "); continue; } if('C' == choice) { printf("please input the flight take off address:"); scanf(" %s",s_addr);
}Data_type;
typedef struct node //定义存储航班信息结构体链表 {
Data_type *info; struct node *next; }Node_list; /*各函数的定义*/ bool init_N(Node_list **); bool init_D(Data_type **); bool save_insert(Node_list *,Data_type *); bool Bubsort_number(Node_list *); bool Bubsort_statime(Node_list *);
#include<stdio.h> #include<stdbool.h> #include<stdlib.h> #include<string.h>
typedef struct flight //定义航班信息结构体类型
{ int number; char staddress[10]; char arraddress[10]; char DATE[10]; char TYPE[4]; char stime[10]; char atime[10]; int value;
void show_info(Node_list *); void inquire_by_number(Node_list *,int); void inquire_by_staddress(Node_list *,char *); void inquire_by_araddress(Node_list *,char *); void inquire_by_data(Node_list *,char *);
相关文档
最新文档