第一次BLOG

前言:
第一次题目集主要是类和对象的使用,类,数组的基本运用和关联,题量适中,难度适中;
第二次题目集主要是查找和排序,主要也是类和对象的使用,题量适中,难度适中;
第三次题目集主要是封装与继承,以及类的基本使用,题量适中,最后一道答题判题程序难度较大;
三次题目集的最后一道答题判题程序难度较大;
设计与分析:
第一次:
Question、ExamPaper和AnswerSheet,分别表示问题、考试试卷和答题卡。
Question类包含问题的编号、内容和标准答案,并提供了获取问题编号、内容、标准答案以及判断答案是否正确的方法。
ExamPaper类包含了试卷的问题列表和问题数量,提供了添加问题、获取问题数量、根据问题编号获取问题和判断答案是否正确的方法。
AnswerSheet类包含了关联的考试试卷对象、学生的答案列表和判断结果列表,提供了添加答案、判断答案、打印指定问题和答案以及打印判断结果的方法。
在AnswerSheet类中,通过遍历题目数量,依次判断学生的答案是否正确,并将判断结果添加到结果列表中。同时,提供了打印问题和答案、打印判断结果的方法,以便输出学生的答题情况和判断结果。
整体上,这段代码实现了一个简单的考试系统,包括了问题、试卷和答题卡的管理和操作。通过这些类的设计和方法的实现,可以方便地对学生的答题情况进行判断和输出,为考试评分提供了基础功能。

第二次:

Question类:
Question类表示一个问题,包含问题的编号、内容和答案。提供了获取问题编号、内容和答案的方法。
这个类主要用于表示一个问题的信息,包含了问题的基本属性和获取属性的方法。
TestPaper类:
TestPaper类表示一张试卷,包含试卷编号和每道题目的分数映射。提供了添加题目分数、计算总分和获取试卷信息的方法。
这个类用于表示一张试卷的信息,包含了试卷的基本属性和方法来管理试卷的题目分数和总分。
AnswerSheet类:
AnswerSheet类表示一个答题卡,包含答题卡编号和学生的答案列表。提供了添加答案和获取答题卡信息的方法。
这个类用于表示一个学生的答题卡信息,包含了答题卡的基本属性和方法来管理学生的答案。
Main类:
Main类包含了主程序,通过读取输入来构建问题、试卷和答题卡,并对学生的答题情况进行评分输出。
在主程序中,首先读取输入,构建问题、试卷和答题卡的列表,然后对每张试卷进行评分和输出。
在评分过程中,对于每道题目,根据学生的答案和正确答案判断是否回答正确,如果回答正确则加上相应的分数。最后输出每道题目的得分和总分。
总体来说,这段代码实现了一个简单的考试系统,通过对问题、试卷和答题卡的管理和评分,可以对学生的答题情况进行评估和反馈。代码结构清晰,功能模块化,易于理解和扩展。通过这个系统,可以方便地进行考试评分和结果输出。
第三次:

首先定义了TestPaper类和Student类,分别表示考试试卷和学生。在TestPaper类中,包含了试卷的编号和问题的映射关系,通过questions字段使用Map<Integer, String>来存储问题的编号和内容。同时,提供了添加问题、获取问题内容和移除问题的方法,以便对试卷进行操作。
Student类用于表示学生,包含了学生的ID、姓名和学生的答题情况映射。通过answers字段使用Map<Integer, String>来存储问题的编号和学生的答案。提供了添加答案、获取答案内容、获取学生ID和姓名以及获取所有答题情况的方法。
在Main类中,包含了程序的入口main方法,通过读取用户输入的命令来操作试卷和学生对象。当输入类似S: 001: 1: A的命令时,表示学生ID为001的学生回答了第1题为A,将该答案添加到对应的学生对象中。当输入end时,程序将打印每位学生的姓名、ID以及每道题目的问题和答案。
整个程序的逻辑清晰,使用了合适的数据结构和方法来实现试卷和学生对象的管理和操作。通过对代码进行分析并生成类图,可以更加直观地展示类之间的关系和结构,有助于理解代码的设计思路和实现方式。
通过这样的详细分析和类图生成,可以更深入地了解面向对象编程的相关概念和实践,提升对代码的理解和分析能力。同时,也能更好地掌握代码设计和结构化编程的方法,为日后的软件开发和设计提供参考和借鉴。
踩坑心得:

数据解析错误:在读取输入时,没有考虑到输入数据格式可能不符合预期,导致在解析数据时出现错误。为了避免这种情况,需要在读取和解析数据时进行严格的验证和处理。
对象引用问题:在处理学生答案时,由于没有正确管理对象之间的引用关系,导致有时无法正确将学生的答案与对应的问题匹配。在处理对象之间的关系时,需要确保引用关系的正确性。
循环逻辑错误:在输出学生答案时,循环逻辑不够清晰,导致有时输出结果不符合预期。在编写循环逻辑时,需要确保逻辑清晰,避免出现错误。
代码结构混乱:部分代码结构较为混乱,缺乏清晰的模块划分和逻辑组织,导致阅读和理解代码时较为困难。在编写代码时,应该注重代码结构的清晰性和模块化。
测试不全面:在提交代码前没有进行充分的测试,只是简单地运行了一些场景,导致在实际运行中出现了一些问题。在编写代码时,应该养成良好的测试习惯,覆盖各种可能的情况。

改进建议:
使用更具有表现力的数据结构:考虑使用自定义的Question类来表示问题,而不仅仅是一个String。这样可以更好地封装问题的相关信息,例如题目内容、答案选项、正确答案等。
异常处理:在代码中添加异常处理机制,例如对输入的格式进行验证,以避免程序在输入不符合预期格式时出现异常。
优化代码结构:可以将一些重复的代码提取成方法,提高代码的重用性和可读性。例如,将输出学生答题情况的部分提取成一个方法。
添加日志记录:考虑添加日志记录功能,以便在程序运行时记录重要信息,便于调试和追踪问题。
单元测试:编写单元测试来验证各个类的方法是否按预期工作,以确保代码的质量和稳定性。

总结:
面向对象编程:通过题目集的练习,我加深了对面向对象编程的理解,学会了如何设计和实现类、对象、继承、多态等概念。
文件读写操作:通过处理文件输入输出的题目,我学会了如何使用Java中的文件读写操作,以及如何处理不同格式的文件数据。
异常处理:在题目中涉及到了异常处理的情况,我学会了如何捕获和处理异常,以保证程序的稳定性。
需要进一步学习和研究的地方包括:
设计模式:深入学习和理解常用的设计模式,如工厂模式、单例模式、观察者模式等,以提高代码的灵活性和可维护性。
数据结构与算法:进一步学习和掌握常用的数据结构和算法,能够更好地解决实际问题,并优化程序性能。

对教师、课程、作业、实验、课上及课下组织方式的改进建议及意见如下:
教师:建议教师在课堂上注重理论与实践相结合,引导学生通过实际练习来巩固所学知识,并及时给予反馈和指导。
课程:建议课程设置更多的实际案例和项目练习,让学生能够将所学知识应用到实际中,加深理解。
作业:作业可以设计更多与实际场景相关的编程任务,让学生在解决问题的过程中提升编程能力。

posted @   小鱼yyy  阅读(13)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
点击右上角即可分享
微信分享提示