声明:
在本文中,我将分享我和我的课题小组在大一时期完成的一个课题项目。项目使用了基本的C/C++语法,也正好是软件工程专业学生一般的起步语言。然而,我必须指出,作为一个第一次使用编程语言编写项目的学生团队,这份代码对于有过许多编程经验的程序员可能不会达到项目的标准,可能存在不足之处。因此,我希望读者仅将其视为学习的参考,而非优秀作品以摘抄。
同时,我欢迎任何形式的指导和建议,以帮助我在未来的项目中改进和成长。
关于代码的说明:本项目中的代码可能存在命名不规范、质量参差不齐、结构不够完整、注释不足或不清晰、存在冗余等问题。
关于数据存储:本项目仅仅使用txt格式存储数据,不涉及Mysql等数据库的使用
文章资源提供课题小组最后的汇报,以及基于控制台的用户界面设计。
本文章仅面向需要参考基本代码的编程小白组员,
以及可能需要设计项目课题总体结构的组长参考。
IDE:Visual Studio 2022
文件结构:
AdministratorMenu.h
关于火车票管理员操作的相关函数的声明,例如添加火车票信息,删除火车票信息等
AdministratorMenu.cpp:
关于火车票管理员操作的相关函数的具体实现,实现的操作如上述头文件所述
ChangeAccountInformation.h
变更用户信息相关函数的声明,例如修改密码,身份认证等。
ChangeAccountInformation.cpp
实现上述头文件相关函数。
Login.h/Login.cpp
与登录相关的函数的声明/实现,例如验证密码。
Registered.h/Registered.cpp
与注册相关的函数的声明/实现,例如注册用户名,比对一次输入和二次输入的密码。
StaticMethod.h/StaticMethod.cpp
静态函数。这些函数封装了输入,调用这些类可以正确保证输入的类型。例如车票数量是int型,为了防止输入报错,这个源文件提供了int getSelectDigit()函数保证捕获非数值输入时的异常。
UserMenu.h/UserMenu.cpp
用户菜单相关的函数的声明/实现,例如:购票、退票、改签都在这里。
HeaderFile.h/Main.cpp
头文件声明了程序入口函数,Main即为入口所在文件,包含程序的主界面,例如选择管理员身份进入程序或者选择用户身份进入程序。
CommonLib.h
这个头文件导入了本项目中所有需要的依赖头文件,包括但不限于输入输出流iostream,字符串string。
数据结构
本项目用到的数据结构
#include <vector>//动态数组
#include <string>//字符串
#include <forward_list>//单向链表
#include <unordered_map>//哈希表
不认识没关系,了解其概念及其特效即可通览全文!
其他标准头文件
#include <conio.h>//隐藏输入密码的核心头文件
#include <iostream>//输入输出流cout
#include <iomanip>//控制台清屏及暂停运行
#include <fstream>//读写文件
#include <sstream>//文本转换输入流
总体导入
注意,上述图片代码在CommonLib.h文件中
关于头文件如何导入:将名字对应的头文件导入对应的源文件即可。例如Login.cpp对应导入的头文件为Login.h。此外,每一个头文件都需要导入CommonLib.h。
存储文件结构
AcountLibrary.txt
账号数据存储文件。存储格式:用户名 密码 密保 身份登记。注意每一个值之间用空格隔开,下述一样。
PrimordialInformationBase.txt
(火车票)信息根文件。本文件存储所有火车票最原始的信息。存储格式:车次 始发地 目的地 发车时间 预计到站时间 车票数量
TheUserBuysTheLibrary.txt
用户购票存储文件。由用户购买的车票信息存储在此。存储格式:用户名 车次1 车次2 ....。用于查询用户本身已购车票。
TicketBuyersDatabase.txt
车票被购买存储文件。与上述文件相似。存储格式:车次 用户1 用户2 ... 。用于管理员查询获取车票被够数量与统计车票数量。
课题项目总体设计介绍完毕
项目代码因为没有使用高级API使得代码亮稍大,因此我将代码打包成VS(IDE)可读的项目,在github,需要者请自取- 项目地址:https://github.com/pythonver/TrainManagementSystem
仓库URL(使用git克隆):https://github.com/pythonver/TrainManagementSystem.git
如果github进不去,可以下载Watt Toolkit 加速github