计算机
c base
c++ 基础 作用域及生命周期
c++ template
c++ 内存视角
c++ 函数指针
c++ 基础 基础语法
c++ 多线程
c++ 性能
c++ 类 基础
c++ 类 对象模型 类析构
c++ 类 设计模式
cmake
CMAKE环境搭建 windows
创建第一个cmakelists.txt
构建稍复杂的项目
动态链接库
EX1
EX1 START
EX1 ANSWER
EX2
EX2 START
EX2 ANSWER
EX3
EX3 START
EX3 ANSWER
变量
控制流程
函数和宏
查找和使用外部库
生成器表达式
qt 开发环境
qt c++
理解QObject 1
理解QObject 4
qt index
qt qml quick
qt ui
qt 多线程
数据结构 数组
PC问题监控及排查
PC程序性能优化
OS
TOOL
C++ STL
编程漫谈
C++实战-生产者 消费者流水线
C++实战 IO
本站点使用 MrDoc 构建
-
+
EX3
# 练习 3: 创建包含多个源文件的项目 ## 练习目标 通过本练习,你将学会: - 管理包含多个源文件的项目 - 组织代码到多个模块 - 使用变量管理源文件列表 - 理解编译单元和链接的概念 ## 任务描述 创建一个简单的学生成绩管理系统,包含多个模块:学生信息管理、成绩计算和报告生成。 ### 功能要求 1. **学生信息模块(student.cpp/h)** - 存储学生姓名和 ID - 提供获取和设置函数 2. **成绩计算模块(grade.cpp/h)** - 计算平均分 - 判断是否及格(60分及格) - 获取等级(A: 90+, B: 80-89, C: 70-79, D: 60-69, F: <60) 3. **报告生成模块(report.cpp/h)** - 生成学生成绩报告 - 格式化输出 4. **主程序(main.cpp)** - 创建学生对象 - 输入成绩 - 显示报告 ### 技术要求 - 使用 CMake 3.15 或更高版本 - 可执行文件名称为 `grademanager` - 使用 C++17 标准 - 所有头文件放在 `include/` 目录 - 所有实现文件放在 `src/` 目录 ## 项目结构 ``` exercise-03/ ├── CMakeLists.txt ├── include/ │ ├── student.h │ ├── grade.h │ └── report.h ├── src/ │ ├── student.cpp │ ├── grade.cpp │ └── report.cpp └── main.cpp ``` ## 验收标准 - [ ] 项目包含有效的 CMakeLists.txt 文件 - [ ] 正确管理多个源文件 - [ ] 所有模块正确编译和链接 - [ ] 程序能够正确计算和显示成绩 - [ ] 代码组织清晰,模块职责明确 ## 提示 1. 管理多个源文件: ```cmake add_executable(grademanager main.cpp src/student.cpp src/grade.cpp src/report.cpp ) ``` 2. 或使用变量: ```cmake set(SOURCES src/student.cpp src/grade.cpp src/report.cpp ) add_executable(grademanager main.cpp ${SOURCES}) ``` 3. 设置包含目录: ```cmake target_include_directories(grademanager PRIVATE include/) ``` 4. 简单的学生类结构: ```cpp class Student { private: std::string name; int id; public: Student(const std::string& name, int id); std::string getName() const; int getId() const; }; ``` ## 预计完成时间 60-75 分钟 ## 构建和测试 ```bash # 配置 cmake -S . -B build # 构建 cmake --build build # 运行 ./build/grademanager # Linux/macOS build\Debug\grademanager.exe # Windows ``` ## 示例运行 ``` Student Grade Manager ===================== Enter student name: Alice Enter student ID: 12345 Enter grades (enter -1 to finish): Grade 1: 85 Grade 2: 92 Grade 3: 78 Grade 4: 88 Grade 5: -1 Student Report ============== Name: Alice ID: 12345 Number of grades: 4 Average: 85.75 Status: PASS Letter Grade: B ``` ## 扩展挑战(可选) 1. 添加多个学生支持(使用 vector 存储) 2. 实现成绩排序功能 3. 添加数据持久化(保存到文件) 4. 实现成绩统计(最高分、最低分、中位数) 5. 添加输入验证和错误处理 ## 相关资源 - [基本命令](../../tutorials/03-basic-commands.md) - [linking-libraries 示例](../../examples/linking-libraries/) - [simple-library 示例](../../examples/simple-library/) ## 下一步 完成后,查看 [参考解决方案](solution/) 并阅读 [EXPLANATION.md](solution/EXPLANATION.md) 了解多文件项目的组织方式。
peipeo
2026年5月16日 08:52
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
PDF文档(打印)
分享
链接
类型
密码
更新密码