飞机订票系统实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计
课程名称:数据结构
实验项目:飞机订票系统
姓名:
专业:
班级:
学号:
计算机科学与技术学院
年月日
实验项目名称:飞机订票系统
一、实验目的:
1. 了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;
2. 初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技
能;
3. 提高综合运用所学的理论知识和方法独立分析和解决问题的能力;
二、实验内容
(1)本系统实现航班订票的功能。要求具有录入、订票、退票等功能。
(2)航班信息存放在一个结构体中,分别有航班号、起飞时间、降落时间、票价等信息。(3)程序完成航班信息的录入和乘客订票功能。
(4)客户能通过航班号或抵达城市查询航班信息,并且能订票。当座位无剩余时提示客户并提示相关航线。
三.概要设计
程序包含函数:
主控模块包含子模块为:
四.详细设计
算法流程图
a) 系统以菜单方式工作;
b) 航班订票功能
c) 航班退票功能
d) 查询航线:(至少一种查询方式)--算法;
e) 修改航线
(1) 增加航班号
(2) 删除航班号
(3) 修改密码
(4) 查询航班信息
f) 按终点站查询。
程序截图菜单
增加航线信息
订票
退票查询
五.源代码
#include
#include
#include
#include
#define OK 1
#define TRUE 1
#define FALSE 0
#define ERROR 0
#define OVERFLOW -2
#define PR printf
typedef int status;
typedef struct airline
{
char 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);
}
l->next=NULL;
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)->next=q;
(*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;
p=l->next ;
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\t\t没有这个航班,无法完成修改任务!");