数据结构day06小项目

一、项目整体功能

这是一个基于 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. 通用功能

  • 退出系统:释放用户链表和航班链表的所有内存,避免内存泄漏。

五、关键技术点

  1. 双向链表:用户和航班都采用双向链表存储,支持尾插、删除、遍历操作,便于增删改查。
  2. 内存管理 :使用malloc创建节点,退出时用free释放所有节点,避免内存泄漏。
  3. 时间格式化time_Init函数将 10 位数字(如 2024050616)转为 "2024 年 05 月 06 日 16 时" 格式。
  4. 字符串处理 :用strcmp比较账号 / 姓名,strcpy/sprintf拼接字符串(如航班号、联系方式)。
  5. 合法性校验
    • 登录 / 注册时校验账号是否存在、密码格式(整数);
    • 购票 / 改签时校验是否为黑名单用户;
    • 所有链表操作前校验头节点是否为空。

六、使用注意事项

  1. 输入格式要求:
    • 时间需输入 10 位数字(年 4 + 月 2 + 日 2 + 小时 2,如 2024050616);
    • 密码、航班号为整数;
    • 姓名 / 账号为无空格的字符串。
  2. 管理员账号固定:账号vip,密码wsvip,仅管理员可操作黑名单、修改 / 添加航班。
  3. 黑名单影响:被加入黑名单的乘客,无法购票、改签,但可退票。
相关推荐
皮皮哎哟1 小时前
数据结构:嵌入式常用排序与查找算法精讲
数据结构·算法·排序算法·二分查找·快速排序
堕2742 小时前
java数据结构当中的《排序》(一 )
java·数据结构·排序算法
2302_813806223 小时前
【嵌入式修炼:数据结构篇】——数据结构总结
数据结构
Wei&Yan3 小时前
数据结构——顺序表(静/动态代码实现)
数据结构·c++·算法·visual studio code
long3164 小时前
Aho-Corasick 模式搜索算法
java·数据结构·spring boot·后端·算法·排序算法
张张努力变强6 小时前
C++ STL string 类:常用接口 + auto + 范围 for全攻略,字符串操作效率拉满
开发语言·数据结构·c++·算法·stl
wWYy.6 小时前
数组快排 链表归并
数据结构·链表
李斯啦果7 小时前
【PTA】L1-019 谁先倒
数据结构·算法
Mr Xu_1 天前
告别硬编码:前端项目中配置驱动的实战优化指南
前端·javascript·数据结构
czxyvX1 天前
017-AVL树(C++实现)
开发语言·数据结构·c++