Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

火车售票系统

这是我大二上学期《数据结构》课程设计写的一个 C 语言控制台项目,主题是火车售票系统。

当时主要想把链表、结构体、文件读写这些知识点放到一个稍微完整一点的场景里练一遍,所以项目没有做图形界面,也没有接数据库,整体就是一个在控制台里运行的小系统。现在整理出来上传到 GitHub,一方面留个记录,另一方面也方便以后回头看自己当时的代码和设计思路。

项目功能

目前实现的功能主要有:

  • 用户注册
  • 用户登录
  • 密码找回
  • 车次信息录入
  • 按车次编号查询车次
  • 按终点站查询车次
  • 登录用户订票
  • 登录用户退票
  • 用户信息本地保存

系统里的用户、车次、站点、订单都用了结构体来表示,多个对象之间通过链表组织起来。用户信息会保存到 users.txt,下次启动程序时会自动读取。

用到的数据结构

这个项目的重点不是界面,而是数据组织方式:

  • 用户信息使用链表存储
  • 车次信息使用链表存储
  • 每个车次下面的站点也使用链表存储
  • 每个用户下面的订单使用链表存储

整体结构比较直观,适合作为数据结构课程设计里的练习项目。虽然现在回头看还有不少可以改进的地方,但它基本覆盖了链表增删查改、结构体嵌套、文件持久化等内容。

项目结构

.
├── main.c       # 程序源码
├── ex3.cbp      # Code::Blocks 项目文件
├── .gitignore   # Git 忽略规则
└── README.md    # 项目说明

下面这些文件是编译或 IDE 自动生成的,不需要提交到 GitHub:

  • bin/
  • obj/
  • *.exe
  • *.o
  • *.depend
  • *.layout

users.txt 是程序运行时生成的本地数据文件,也已经加入 .gitignore。如果你只是看代码或重新编译项目,不需要提前准备这个文件。

编译和运行

使用 Code::Blocks

这是当时写课程设计时主要使用的方式:

  1. 打开 Code::Blocks。
  2. 选择 File -> Open,打开 ex3.cbp。
  3. 选择 Debug 或 Release。
  4. 点击 Build and Run。

使用 GCC

如果本机已经配置好 GCC,也可以直接在项目根目录编译:

gcc main.c -o ex3

Windows PowerShell 下运行:

.\ex3.exe

Linux/macOS 下运行:

./ex3

运行说明

程序启动后会进入主菜单,可以根据提示选择对应功能。订票和退票需要先登录用户;车次信息需要先手动录入,之后才能查询或订票。

当前版本只会持久化保存用户信息,车次信息和订单信息还没有写入文件,所以程序退出后这些数据会丢失。这一点是后续可以继续完善的地方。

已知不足

这个项目是课程设计阶段写的,整体偏练习性质,所以还有一些明显可以改进的地方:

  • 输入校验还不够完整,比如菜单输入非数字时处理不够友好。
  • 车次和订单没有持久化保存。
  • 密码是明文保存的,只适合课程练习,不适合真实项目。
  • 界面依赖 system("cls"),更适合在 Windows 控制台运行。
  • 代码都放在 main.c 中,后续可以按用户、车次、订单等模块拆分文件。

这些问题没有刻意隐藏,因为它们本身也是学习过程的一部分。课程设计的重点是把核心逻辑跑通,并尽量把数据结构用清楚。

后续想法

如果以后继续完善,可以考虑:

  • 增加车次信息和订单信息的文件保存
  • 拆分 .h 和 .c 文件,让项目结构更清晰
  • 增加更严格的输入检查
  • 加一个管理员和普通用户的权限区分
  • 优化订票逻辑,比如检查起点站和终点站顺序

说明

这个仓库主要用于记录我的课程设计代码。项目规模不大,但对当时的我来说,是一次把 C 语言基础和数据结构知识串起来的练习。

About

C language data structure course design: console-based train ticket booking system.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages