这是我大一上学期完成的 C 语言课程设计项目,主题是 图书馆管理系统。项目最初使用 Code::Blocks 编写,后来我将其迁移到 VS Code 中进行查看、运行和整理,并上传到 GitHub 作为学习记录。
本项目使用 C 语言实现了一个基础的图书馆管理系统,主要通过控制台菜单进行交互。程序使用结构体数组保存用户信息和图书信息,并通过文件读写实现基础的数据保存。
项目主要涉及以下 C 语言知识点:
- 结构体
struct - 数组与字符串
- 函数封装
- 条件判断与循环
- 文件读写
- 控制台菜单交互
- 简单的用户与图书信息管理
本项目大致包含以下功能:
- 用户注册与登录
- 管理员与普通用户区分
- 图书信息添加
- 图书信息查询
- 图书借阅
- 图书归还
- 图书数据保存
- 用户数据保存
| 文件 / 文件夹 | 说明 |
|---|---|
main.c |
项目核心源代码 |
library.cbp |
Code::Blocks 项目配置文件 |
books.dat |
程序运行时生成的图书数据文件 |
users.dat |
程序运行时生成的用户数据文件 |
bin/ |
Code::Blocks 编译生成目录 |
obj/ |
Code::Blocks 编译中间文件目录 |
main.exe |
编译生成的可执行文件 |
main.o |
编译生成的目标文件 |
其中,真正需要重点学习和修改的是:
main.c
.exe、.o、bin/、obj/ 等文件属于编译生成文件,不是手写源码,通常不需要上传到 GitHub。
由于本项目是 C 语言控制台项目,可以直接使用 gcc 编译运行。
如果当前终端已经进入项目目录,可以使用:
gcc main.c -o main.exe
.\main.exe如果出现中文乱码,可以根据终端编码情况使用下面的命令:
chcp 936
gcc -finput-charset=UTF-8 -fexec-charset=GBK main.c -o main.exe
.\main.exe其中:
chcp 936表示将 Windows 终端切换到 GBK / 简体中文代码页-finput-charset=UTF-8表示源代码文件使用 UTF-8 编码-fexec-charset=GBK表示程序运行时字符串按 GBK 输出
这个项目最初来自 Code::Blocks,属于比较典型的老式中文 C 语言课程设计项目。迁移到 VS Code 时,我遇到了中文乱码问题。
通过排查,我理解到乱码通常分为两类:
-
代码编辑区乱码
这是因为 VS Code 使用了错误的编码方式打开文件。 解决方式是:
右下角编码 → Reopen with Encoding → 选择 UTF-8 或 GBK -
终端运行输出乱码
这是因为程序输出的字符串编码和 Windows 终端显示编码不一致。 可以通过
chcp和gcc的编码参数解决。
这次整理让我理解了:
源代码编码
→ 编译器处理编码
→ 终端显示编码
这三者需要匹配,否则中文就可能出现乱码。
⭐⭐⭐本次上传过程中曾遇到 VS Code 与 GitHub 网络握手失败的问题,排查后发现主要与 VPN / 代理连接不稳定有关。⭐⭐⭐
这次整理项目的重点不只是上传代码,而是学习如何把以前写过的课程设计项目重新整理成一个可以放到 GitHub 上的项目。
我主要完成了以下过程:
- 使用 VS Code 打开原 Code::Blocks 项目文件夹
- 区分源码文件、数据文件、项目配置文件和编译生成文件
- 识别
main.c是项目核心源代码 - 理解
books.dat和users.dat是程序运行时的数据文件 - 理解
main.exe、main.o、bin/、obj/是编译生成文件 - 处理 VS Code 中的中文编码问题
- 使用
gcc在终端中编译运行项目 - 编写
.gitignore,避免上传无意义的编译产物 - 编写 README,记录项目功能和学习过程
- 使用 Git 将项目上传到 GitHub
这个项目是我大一上学期学习 C 语言时完成的课程设计。现在重新整理它,一方面是为了保存自己的学习成果,另一方面也是为了练习如何使用 VS Code、Git 和 GitHub 管理自己的代码。
通过这个项目,我不仅复习了 C 语言基础,也开始理解一个项目中不同文件的作用,以及如何把本地项目规范地上传到 GitHub。
后续如果继续完善,可以考虑:
- 拆分多个
.c和.h文件 - 优化菜单交互
- 增加输入合法性检查
- 改进文件保存格式
- 添加更清晰的用户权限管理
- 将控制台程序升级为图形界面程序