一、项目整体功能
这是一个基于 C 语言实现的简易航班管理系统,支持普通用户 和管理员两种角色操作,核心实现用户管理、航班购票 / 退票 / 改签、航班信息管理、黑名单管控等功能。
二、核心文件说明
| 文件名 | 作用 |
|---|---|
| yonhu.h/.c | 定义用户信息结构体、用户链表操作(初始化 / 创建节点 / 尾插)、登录 / 注册校验 |
| hangban.h/.c | 定义航班信息结构体、航班链表操作、黑名单管理、航班改签 / 修改 / 查询等功能 |
| 6. 航班管理系统.c | 主函数入口,提供菜单交互,整合用户和航班的所有功能逻辑 |
三、核心数据结构
1. 用户信息结构体(yonhuxingxi)
c
运行
struct yonhuxingxi {
char zhang_hao[50]; // 账号
int mi_ma; // 密码(整数)
struct yonhuxingxi *next; // 双向链表下一个节点
struct yonhuxingxi *prev; // 双向链表上一个节点
};
- 采用双向链表存储,支持用户注册、登录校验。
2. 航班信息结构体(hangbanxingxi)
c
运行
struct hangbanxingxi {
char qi_fai_time[50]; // 起飞时间(格式化后)
char dao_da_time[50]; // 到达时间(格式化后)
char gong_si_name[30]; // 航空公司名称
char hang_ban_hao[30]; // 航班号(如"航班号123456")
char myname[30]; // 乘客姓名
char dian_hua[30]; // 联系方式(如"联系方式15013117629")
int is_black; // 黑名单标记:0=正常,1=黑名单
struct hangbanxingxi *next; // 双向链表下一个节点
struct hangbanxingxi *prev; // 双向链表上一个节点
};
- 核心扩展:
is_black字段实现黑名单管控,黑名单用户禁止购票、改签。
四、核心功能模块(简单易懂版)
1. 普通用户功能(需先登录)
| 功能 | 操作说明 |
|---|---|
| 注册 | 输入账号 + 整数密码,校验账号不重复则创建用户节点,插入用户链表 |
| 登录 | 输入账号 + 密码,校验账号存在且密码正确,登录成功后才能操作航班相关功能 |
| 查询航班 | 输入姓名,查询该乘客的所有航班信息(含状态:正常 / 黑名单) |
| 买票 | 输入起飞 / 到达时间、手机号、姓名、航班号,支付 50 元;黑名单用户禁止购票 |
| 退票 | 输入姓名,删除该乘客的所有航班信息 |
| 改签 | 输入姓名 + 新航班号 + 新起降时间,黑名单用户禁止改签 |
2. 管理员功能(需登录管理员账号:vip / 密码 wsvip)
| 功能 | 操作说明 |
|---|---|
| 查询所有航班 | 展示系统中所有航班信息,含乘客黑名单状态 |
| 修改航班 | 支持修改航班号、修改起降时间(按旧时间匹配航班) |
| 添加航班 | 输入航班信息(起降时间、手机号、姓名、航班号),新增航班节点到链表 |
| 黑名单管理 | 1. 设置黑名单(标记乘客为黑名单);2. 解除黑名单;3. 查看黑名单列表 |
3. 通用功能
- 退出系统:释放用户链表和航班链表的所有内存,避免内存泄漏。
五、关键技术点
- 双向链表:用户和航班都采用双向链表存储,支持尾插、删除、遍历操作,便于增删改查。
- 内存管理 :使用
malloc创建节点,退出时用free释放所有节点,避免内存泄漏。 - 时间格式化 :
time_Init函数将 10 位数字(如 2024050616)转为 "2024 年 05 月 06 日 16 时" 格式。 - 字符串处理 :用
strcmp比较账号 / 姓名,strcpy/sprintf拼接字符串(如航班号、联系方式)。 - 合法性校验 :
- 登录 / 注册时校验账号是否存在、密码格式(整数);
- 购票 / 改签时校验是否为黑名单用户;
- 所有链表操作前校验头节点是否为空。
六、使用注意事项
- 输入格式要求:
- 时间需输入 10 位数字(年 4 + 月 2 + 日 2 + 小时 2,如 2024050616);
- 密码、航班号为整数;
- 姓名 / 账号为无空格的字符串。
- 管理员账号固定:账号
vip,密码wsvip,仅管理员可操作黑名单、修改 / 添加航班。 - 黑名单影响:被加入黑名单的乘客,无法购票、改签,但可退票。