(必修)创新训练课 B
课程介绍(摘自教学大纲)
本课程设计是在学生完成高级语言程序设计课程学习后进行的。 学生通过本课程的实践,能进一步掌握高级语言程序设计基本概念,掌握基本的程序设计方法; 通过设计一个完整的小型程序,给学生提供独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。 提高学生适应实际,实践编程的能力。 初步掌握开发软件所需的需求定义能力、功能分解能力和程序设计能力、代码调试技能;为未来的软件编程及其他课程的学习打下良好的基础。
翻译: 自己动手制作一个程序。
选题从课程给出的几个中选择一个,或者提交你自己的选题。
夏季学期结束时需提交开题报告;成果最后在大一立项结题的同时验收,需提交结题报告。
2022 级给出的选题有:
- 学院职工管理信息管理系统
- 学院学生信息管理系统
- 模拟地铁自动售票系统
- 贪吃蛇小游戏
- 跳棋游戏
- 简易三国杀游戏
授课教师
- 本课程与教师基本无关。结题答辩时的老师也是任意分配的。
攻略
文 / @Maxwell Jay, 2023.12
这应该是自动化学生为数不多的参与软件开发的机会。
选题
图省事的话推荐贪吃蛇之类的小游戏,借助 AI 不到 1 天就能速通,但是你需要想想答辩的时候能说些什么。
如果想多积累一点敲代码经验,可以选择客户端类型的软件(信息管理系统、售票系统),体验一下前、后端的开发思想,尤其是 GUI 该怎么设计才能中看又中用。
组队
课程要求 1-2 人一个小组。
如果选择组队,并且不摆烂的话,那么你和队友就必须启用 git 这种版本控制系统。 协作开发是一门大学问,后续我们会尝试更新一篇相关的博客(如果你对协作开发有有益的见解,欢迎投稿你的分享!)。
如果对团队协作没有信心,或者对你的队友没有信心,一个人组队会轻松很多。
挑选一个开发框架
课程要求项目必须使用 C/C++
。
然而 C/C++
本身是没有办法制作 GUI 的 (你一定要用控制台?TUI 了解一下) ,因此我们需要使用第三方库。
现代的桌面应用程序已经几乎不使用 C/C++
开发,但是为了降低学习成本,C/C++
仍是多数学生的唯一选择。
好在目前有不少基于 C/C++
的 GUI 开发框架可供选择,学习起来也不困难。
以下是教学大纲中提到的 4 个。
- EasyX:一个基于
GDI+
的图形库,比较古老了,使用简单,但是功能有限。 - Qt:跨平台的 GUI 开发框架,功能强大,几乎可以做任何事情。并且你校学生证可以申请到 Qt 的教育许可证,解锁完整特性。
- MFC(Microsoft Foundation Classes):一组封装了 C++ 类库的 Windows 编程框架,优点是兼容从 Win95 至今的所有 Windows 操作系统,且运行效率非常高;缺点是开发效率低,并且只能在 Windows 上运行。
- C#:微软推出的一种面向对象的编程语言,语法类似于
C/C++
,但是更加简洁,配合 UWP 或 WPF 可以开发出非常现代化的桌面应用程序。 但是课程规定C#
仅限在实现图形界面的时候使用,代码逻辑仍需使用C/C++
。
个人推荐前 2 个。
IDE
由于整个项目将会是一个大型工程,因此可以使用 Visual Studio 作为你的 IDE。 Visual Studio 也是 MFC 或 C# 的最佳选择。
Qt 有自己的 IDE Qt Creator,适合学习和实操 Qt 时使用。 除此之外,Visual Studio 上有 Qt Visual Studio Tools 插件,方便在 VS 上编辑 Qt 工程。
项目收集
这里有一些往年的项目,仅供参考。同时欢迎同学通过 PR 到本仓库分享自己的项目!
MaxwellJay256/MetroTicketingSystem
模拟地铁售票系统,有二进制成品和 demo。
chenxijun/KingdomCard
三国杀游戏。项目整体采用 C/S 架构,能实现局域网内联机。 前端使用 Qt6 作为 UI 框架,后端采用 Modern C++ 进行编写。
novemberinnorth/Simulate_Shenzhen_Subway_Ticketing_System
使用 C++ Qt6 实现图形化的模拟深圳地铁自动售票系统。
Sieroy/Musnake
使用 SDL2 实现图形界面的、融合轻量音游玩法的贪吃蛇游戏。使用 C++ 编写,编写时代码水平比较弱,望见谅。附有可玩 demo,试运行前建议设置显卡全局 FPS 限制以降低消耗。
资料下载
如果你是校内学生,可移步至 open.osa.moe 查看本门课程的电子书、课件和实验软件等。
参与
《HITSZ 自动化课程攻略共享计划》是所有同学都可以参与编写的,如果你有好的笔记或者资料,欢迎前往我们的 GitHub 进行参与,也可以发邮件至 📮[email protected] 联系我们,我们会在收到的第一时间进行答复。