《面向对象程序设计》大作业要求

2023 秋季学期《面向对象程序设计》大作业要求

同学们记得填写如下两个文档哦~ 🥹

一、选题与内容要求

1. 选题参考

以下选题仅供参考,选题和需求均不作限制,欢迎与助教和老师讨论。

多线程与网络编程

例如在线聊天室(实现跨机聊天功能,利用 WebSocket 等实时更新消息)、天气软件(调用接口获取数据)、备忘录/笔记软件(可能需要一个小型的后端和数据库)等。

实用小工具

实用代码编辑器

需求参考如下:

  • 单一语言即可。可以不实现实时错误检测等复杂功能,但最好实现一个现代代码编辑器最基本的功能
  • 实现多文件打开、新建保存另存为重命名等文件相关功能。最好能支持一些快捷键。
  • 实现复制剪切粘贴、撤回重做等编辑相关功能。最好能支持一些快捷键。
  • 实现关键字高亮、显示/关闭行数统计等编程实用功能。
  • 实现字体字号设置、颜色主题自定义等美观方面的功能。
  • 最好能连接上本机的终端,以便直接命令行运行代码。

画图工具、图像编辑工具

需求参考如下:

  • 实现画图、修改图像风格、添加滤镜等功能,并能导出作品。
  • 这类工具的功能非常多,你可以任意选择其中的一个子集,但是要确保该子集功能的全面。例如,你可以只针对一种特定的图片格式,但保证该格式图片的打开编辑导出功能齐全;你可以只选择画图这个功能,但应该做到随机线条、几何图形等都能绘制,缩放旋转扭曲、颜色选择、线条粗细设置等功能都支持。

支持复杂运算功能的科学计算工具

需求参考如下:

  • 可以执行各种复杂的数学和科学运算,包括但不限于基本的算术运算、代数方程、微积分、线性代数、概率统计、离散数学等。该工具还应该支持单位转换、复数运算、函数图像绘制等高级数学功能。
  • 用户应该能够保存和加载他们的计算,以便将来继续工作。
  • 提供一个直观的用户界面,让用户能够轻松输入复杂的数学表达式,查看计算结果的同时支持数学符号的美观显示,方便用户理解。
  • 支持用户定义函数和变量,以及快速的函数查找和调用功能。

支持识别磁盘文件并提供预览功能的文件管理器

需求参考如下:

  • 提供一个直观的用户界面,让用户能够轻松地浏览文件系统、切换目录及查看文件和文件夹的详细信息,包括文件大小、创建日期、修改日期等。
  • 实现文件检索功能。
  • 提供预览功能,用户可以在不打开文件的情况下预览文件的内容。例如,显示文本文件的前几行文字,显示图像文件的缩略图,不用打开即可播放音频文件,显示视频文件的第一帧截图等。
  • 支持文件的压缩和解压缩功能。

游戏相关

题材不限,也可以为特定的游戏添加 AI。

其他选项

例如实现⼀个动画库、安卓开发、为某产品定制 SDK,或基于产品与开源项目编写插件等。

2. 选题限制

  1. 接受使用 Spring Boot 等 Java 后端框架实现的交付物,但这类作品的所有框架代码和前端部分的 html、css、JavaScript 代码将不计入工作量统计

  2. **不接受任何与以往学期项目雷同的项目作为大作业的交付物。**选择 Web 开发的,选题不应与软工、软分和后续小学期的选题相同(如音乐播放平台、视频播放平台、团队协作平台、学术成果分享平台等)。该限制仅限于网页,纯 Java 应用仍可以是相关选题。

  3. 不接受编译课的课设作为交付物,即 C 语言子集的编译器。

3. 说明与注意事项

  1. 限定主要开发语言为 Java。

  2. **小组人数 3~4 人,可跨班组队。**需要选出一位同学当组长。

  3. 代码需要经过测试,至少不应在正常使用中出现错误。

  4. 代码需要遵循 JavaDoc 标准编写代码注释,本条作为给分的重要依据之一。

  5. 允许合理使用第三方库。

二、提交要求

  1. 第 13 周将会进行一次中期检查,主要检查项目选题及开发进度,时间暂定为实验课。

  2. 提交 DDL 是 16 周周日晚(2023 年 12 月 24 日晚 23:59:59)。没有延期的余地,不交即 0 分。

  3. 以小组为单位提交,交到云平台,每组只需要组长提交。

  4. 交付物:zip 压缩包,命名为 组号-组名-作品名,其中应包含:

  • 项目的全部代码,命名为 组号-作品名-项目代码
  • 项目开发文档,命名为 组号-作品名-项目开发文档,格式为 PDF,内容包含:
    • 作品名称和小组名称。
    • 小组成员的姓名、学号、在项目中的任务职责、分工权重(限制 0.9~1.1,默认为 1)
    • 团队协作方式的描述,可以是你们怎样规划进度、怎样设计项目、怎样收集资料、怎样编码代码等,内容自由发挥。要求说明协同编码的方式,如微信发压缩包/在线同步编辑/代码托管平台(GitHub、Gitee、阿里云云效等),最好能提供截图。
    • 项目介绍/背景/目的。
    • 项目开发环境,例如硬件种类、JDK 版本、操作系统、IDE 等。
    • 项目运行环境,例如硬件种类、JDK 版本、操作系统、数据库(可选)、服务器(可选)等。
    • (可选)按点列明使用到的比较高级的算法或技术,以及其他任何你认为出彩的设计,如 UI 等。
    • (可选)如果使用了第三方库或参考了开源项目的,说明其来源以及你使用的原因。参考了开源项目的,需要说明你的改进与创新点。
    • (可选)对于作品中的各类素材(如音视频、插图等),如果是从网络上获取或者请第三方的个人或组织制作的,列出其来源。例如从某素材网站上下载的小图标、请非本团队的同学绘制的插画等。
  • 用户使用说明书,命名为 组号-作品名-用户使用说明书,格式为 PDF,内容包含:
    • 对于程序各部分、各功能使用方式的引导(文字 + 图片)。
    • 使用时可能发生的错误、错误原因与解决方案。
    • (可选)其他任何你认为应说明的问题。
  • 展示 ppt,命名为 组号-作品名-展示ppt
  • 由 IDE 生成的 JavaDoc,命名为 组号-作品名-JavaDoc,详情可参考:

三、评分依据

  1. 工作量(30%)

    根据小组人数粗略裁定,3 人组参考标准 2k~3k 行,4 人组参考标准 3k~4k 行。安卓开发及使用了框架的项目不适用此标准。框架代码、非 Java 代码均不计入统计

    不要刻意使用大量无意义空行、无关注释、冗余代码来凑行数。

  2. 答辩和展示效果(20%)

  3. 产品的使用体验、易用性、错误处理和反馈等(约 15%)

  4. 项目的技术水平(10%)

  5. 代码风格统一、命名缩进空格换行规范、按照 JavaDoc 标准写注释(10%)

  6. 文档内容完整(10%)

  7. 小组成员分工合理(5%)

四、建议

1. 功能实现

  • 项目作品应完整,不要有残缺功能(指的是留了功能按键,但实际功能还未实现等情况)。
  • 对用户友好,用户只根据界面的提示和说明书就能正常使用所有功能。细节也很重要,例如当应用的窗口关闭时,应确认关闭操作,或支持自动保存等。
  • 不要让用户猜测下一步该如何操作,也不要报出让用户摸不着头脑的错误。(可以把错误写进一个文件,如 error.log

2. 错误处理与测试

  • 对于各种常见情况,应该提供正确的错误处理(如新建文件、重新命名、超时重试等)。
  • 在任何情况下,程序不应该因为代码抛出 Exception 而爆炸(哪怕是反馈错误后强制退出也比莫名崩溃好)。
  • 开发命令行应用,可以不考虑 Ctrl+Z Ctrl+C 这种强制结束程序的操作;开发图形界面应用,可以不考虑任务管理器、kill 命令等强制结束程序的操作。

为了避免被点炒饭,同学们应当开展基础的测试,如各类边界情况、空输入、短时间大量输入大量网络请求等。我们不要求程序具备极强的健壮性,但至少不应该在正常使用中崩溃。

3. 美观

这是—个很主观的标准,因此不会有很多约束,但还是希望大家做的作品尽可能好看 ~ 😋


预祝同学们大作业开发顺利!🥳

Love,
T.A. 😉