这是我大一下学期《面向对象程序设计》课程设计完成的一个 C++ 控制台程序。项目主题是“网吧管理系统”,主要练习类和对象、菜单交互、文件读写、输入判断以及简单业务逻辑。
程序主要包含以下功能:
- 查看电脑总览,包括电脑总数、空闲数量和使用中数量
- 给用户开机,记录电脑编号、用户 ID 和使用时长
- 用户下机,计算上机费用
- 管理电脑,包括添加、修改单价和删除电脑
- 管理会员,包括添加会员、会员充值和查询余额
- 保存数据,下次运行时可以继续读取
.
├── main.cpp
├── include/
│ └── InternetCafeSystem.h
├── src/
│ └── InternetCafeSystem.cpp
├── .vscode/
│ ├── settings.json
│ └── tasks.json
├── .gitignore
├── README.md
└── 西理网吧管理系统.cbp
文件作用:
main.cpp:程序入口,负责主菜单选择InternetCafeSystem.h:类的声明InternetCafeSystem.cpp:功能的具体实现.vscode/:VS Code 编译运行配置.gitignore:设置哪些文件不上传 GitHubREADME.md:项目说明文档
在项目根目录打开终端,执行:
g++ -std=c++17 -Wall -Iinclude main.cpp src\InternetCafeSystem.cpp -o main.exe运行程序:
.\main.exe注意:不能只编译 main.cpp,因为项目还用到了 include/InternetCafeSystem.h 和 src/InternetCafeSystem.cpp。
这次完善项目时,我主要修改了以下内容:
-
修复中文乱码
原来的菜单和提示语有很多乱码,现在已经改成正常中文,程序界面更容易看懂。 -
修复头文件找不到的问题
VS Code 默认只编译main.cpp,会提示找不到InternetCafeSystem.h。现在增加了.vscode配置,并且编译命令里加入了-Iinclude。 -
修复文件保存方式
原来直接把带有string的对象保存到.dat文件里,这样不安全。现在改成一项一项保存数据,更稳定。 -
增加输入判断
对电脑编号、价格、余额、上机时长等输入做了判断,避免输入负数或错误内容导致程序异常。 -
增加
.gitignore
编译生成的exe、bin、obj和运行数据文件不适合上传 GitHub,所以用.gitignore忽略它们。 -
补充 README
README 用来说明项目功能、运行方法、修改内容和学习心得,方便别人看懂项目。
上传 GitHub 时,应该上传源码和说明文件,不应该上传编译产物。
建议上传:
main.cpp
include/InternetCafeSystem.h
src/InternetCafeSystem.cpp
.vscode/settings.json
.vscode/tasks.json
.gitignore
README.md
西理网吧管理系统.cbp
不建议上传:
main.exe
bin/
obj/
users.dat
computers.dat
*.layout
*.depend
原因很简单:源码是别人需要看的内容,编译产物和运行数据是每个人电脑上都可以重新生成的内容。
如果是第一次上传,可以写:
完成网吧管理系统课程设计初版
如果是这次修改后上传,可以写:
完善网吧管理系统并补充README
如果想写得更具体一点,可以写:
修复编译配置和数据保存问题,完善项目说明
我更推荐第二个:
完善网吧管理系统并补充README
这句话简洁,也能说明这次提交做了什么。
通过这次修改,我学到了几个比较重要的点:
-
一个 C++ 项目不一定只有一个
.cpp文件
如果代码分成了头文件和源文件,编译时就要把相关文件一起编译。 -
头文件路径要告诉编译器
InternetCafeSystem.h放在include文件夹里,所以编译时要加-Iinclude。 -
GitHub 不是什么都要传
源码、说明文档、配置文件应该上传;exe、临时文件、运行数据一般不上传。 -
README 很重要
README 就像项目说明书。别人打开项目后,先看的通常不是代码,而是 README。 -
写程序不只是能运行
一个更完整的程序,还要考虑输入错误、数据保存、文件结构和别人能不能看懂。
这个项目让我对面向对象程序设计有了更具体的理解。User 类表示会员,Computer 类表示电脑,InternetCafeSystem 类负责整体管理。相比把所有代码都写在 main.cpp 里,这样的结构更清楚,也更容易修改和维护。
这次完善之后,项目更适合上传 GitHub,也更像一个完整的课程设计作品。