# 项目 **Repository Path**: wxx2024/program ## Basic Information - **Project Name**: 项目 - **Description**: 小试牛刀写的小项目!记得点赞加关注喔! - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2024-03-12 - **Last Updated**: 2024-11-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 航班管理系统 #### 介绍 编写一个基于航班信息管理系统的文本应用程序。 #### 软件架构 1. LINUX 操作系统。 2. 编码工具:vscode gedit vim等。 3. 开发语言:C语言。 #### 项目背景概述 某机场每天有n个航班,每个航班具有唯一的班次号(1、2、3…n),并且具有固定的起飞时间、固定的路线(起始站、终点站),也包含大致的飞行时间,以及固定的载客量。本系统需要设计相应的数据结构,实现对该机场航班的管理功能,需要包含添加班次、浏览班次信息、查询航班路线、购票与退票功能,其中的购票与退票操作仅可以提前十天进行。系统的数据需要在文件中进行保存,考虑到数据的维护代价、扩展性以及存取代价,本系统采用双向循环链表保存系统数据,每条航班信息通过结构体进行存储。 #### 项目功能要求 1. 单用户登录功能:登录界面,用户名,密码。(管理员账户,单链表,所有功能单用户即可。)用户信息可用文件存储。 2. 增加航班信息功能:该功能实现了增加详细航班信息后,添加该信息到系统中。 3. 浏览航班信息功能:该功能实现了将系统中所有的航班信息全部输出到屏幕上的功能。 4. 查询航班路线功能:该功能包含两种选择,一是根据用户选择的班次信息输出对应的航班信息;二是根据用户输入的终点站,输出所有到达该站点的航班信息。(根据部分信息查询全部信息) 5. 修改航班信息功能:该功能可以修改指定航班的某项信息,以实时更新航班信息。 6. 删除航班信息功能:该功能实现了可以删除某项航班信息的功能。 7. 排序航班信息功能:该功能实现了根据起飞时间进行排序功能。 8. 购票功能:该功能实现了当用户指定日期与班次信息时,相应地为该航班增加售出记录,但是如果该航班已经起飞或者该航班的机票已经售空,用户将购买失败,系统会给予用户相应的提示。 9. 退票功能:退票功能类似与购票功能,当用户指定日期与班次以后,将减少该班次的售出记录,同样的如果该班次已经起飞或者没有售出记录,则退票操作失败,系统会给予用户相应的提示。 10. 系统所有航班信息存储在文件中功能。 11. 其他自定义功能。 #### 概要设计 根据上述内容,确定主程序的流程、各模块之间的层次(调用)关系,说明程序中关键部分所采用的抽象数据类型、数据结构、数据库表结构以及尽可能高效的算法设计方案(尤其在数据量很大时)。画出主程序流程图、模块层次关系或调用图、数据库表结构等。 ##### 1. 数据结构 ###### 1.1 航班信息 根据航班信息日期不同,构建日期单链表,包含日期、数据域、指针域。数据域指向双向循环链表,内容包含航班数据结构体、指针域。 ```c typedef struct flight_t { int id; // 航班班次 char flightName[MAX]; // 航班代号 char flightType[MAX]; // 飞机机型 char startCity[MAX]; // 航班起点站 char startTime[MAX]; // 起飞时间 时:分 char arriveCity[MAX]; // 航班终点站 char arriveTime[MAX]; // 到达时间 时:分 char flyTime[MAX]; // 飞行时间 int value; // 票价 int maxNum; // 额定载客量, int leftTable; // 剩余座位数量 char isFly; // 是否起飞 ‘y’ ‘n’ } flight_t; typedef struct fNode { flight_t data; // 航班数据 char time[MAX]; struct fNode *before; struct fNode *after; } fNode, *fList; // 存储航班信息 typedef struct dNode { int n; // 每天的航班数 char time[MAX]; // 日期 fList fl; // 这一天的航班信息 struct dNode *next; // 下一天的航班信息 } dNode, *dList; typedef struct ticket // 票结构体 { char time[MAX]; int id; } ticket; typedef struct record // 购票记录结构体 { ticket tickets[MAX]; // 票的标识信息 int num; // 票数 } record; ``` ###### 1.2 用户登录信息 构建用户登录单链表,有数据域、指针域;数据域指向用户数据结构体。 ```c typedef struct user { char name[MAX]; // 用户名 char pwd[MAX]; // 用户密码 } user; // 用户数据节点 - 单链表 typedef struct unode { user data; struct unode *next; } unode, *ulist; ``` ##### 2. 主程序结构图 ![image-20240415095301256](./img/image-20240415095301256.png) ##### 3. 看懂结构图其他的就自然懂了