不相同与上学期的C语言,java在面向对象与面向过程,安全性与垃圾回收,跨平台性,速度与效率,应用领域,语法特性等方面存在显著的差异,而且java也是我们软件工程以后所使用的基础,接下来我分享第一次作业的总结。
本次作业分为以下部分:
(1)总结三次题目集的知识点、题量、难度等情况。
(2)设计与分析:重点对题目的提交源码进行分析。
(3)采坑心得:对源码的提交过程中出现的问题及心得进行总结。
(4)改进建议:对相应题目的编码改进给出自己的见解,做到可持续改进。
(5)总结:对本阶段三次题目集的综合性总结,学到了什么,哪些地方需要进一步学习及研究。
1.三次作业的内容:
第一次作业的要求模拟场景:
1)单张试卷的信息处理
2)详细内容:输入试卷中试题的信息(编号、题目、标准答案)
输出试题每一题的答题信息以及最后每一题的判题结果。
第二次的作业要求模拟场景:
1)多张试卷、多张答卷的信息处理
2)详细内容:
输入试题的信息(编号、题目、标准答案)、试卷引用信息(试卷号、引用的题目
号-分值)、答卷信息(试卷号、答案)
输出试题每一题的答题、判题信息以及最后每一题的判分结果、总分
第三次的作业的要求模拟场景:
1)多张试卷、多张答卷的信息处理,
新增:学生信息、删除题目信息以及多种异常输入的监测,如答案为空字符、仅
有学生信息没有答案内容的空白卷、试卷引用、试题引用错误等。
2)详细内容:
输入试题的信息(编号、题目、标准答案)、试卷引用信息(试卷号、引用的题目
号-分值)、答卷信息(试卷号、答案)、学生信息(学号、姓名)、删除题目信息(题
号)
输出试题每一题的答题、判题信息以及最后每一题的判分结果、总分。输入中出现
各类错误时输出对应错误信息
2.三次作业的设计与分析:
第一次作业:
1)题目类(Question):用于保存一道题目的信息以及处理的方法。
题目类(用于封装单个题目的信息):
属性:题目编号、题目内容、标准答案-standardAnswer
方法:数据读写set\get方法、
判题方法(答案-answer):判断答案-answer是否符合标准答案-standardAnswer
2)试卷类(TestPaper):保存和处理一张试卷的信息以及处理的方法。
试卷类(用于封装整套题目的信息)
属性:题目列表(题目类的对象集合)、题目数量
方法:判题方法(题号-num、答案-answer):判断答案-answer是否符合对应题号的题目标准答案-standardAnswer
保存题目(题号-num、题目-question):将题目保存到题目列表中,保存位置与num要能对应
3)答卷类(AnswerPaper):保存和处理一张答卷的信息以及处理的方法。
答卷类(用于封装答题信息)
属性:试卷(试卷类的对象)、答案列表(保存每一题的答案)、判题列表(保存每一题的判题结果true/false)
方法:判题方法(题号-num):判断答案列表中第num题的结果是否符合试卷中对应题号的题目标准答案
输出方法(题号-num):按照题目的格式要求,输出题号为num的题目的内容和答题结果。
保存一个答案(题号-num,答案-answer):保存题号为num的题目的答题结果answer。
第一次的思路比较简单,在类中加入了输入,输出以及存储和判断的方法,然后在主函数中是从键盘中获取题目信息,再保存相关信息,最后根据条件按不同方式输出结果就行了。
第二次作业:
1)题目类(Question):用于保存一道题目的信息以及处理的方法。
题目类(用于封装单个题目的信息):
属性:题目编号、题目内容、标准答案-standardAnswer
方法:数据读写set\get方法、
判题方法(答案-answer):判断答案-answer是否符合标准答案-standardAnswer
2)试卷类(TestPaper):保存和处理一张试卷的信息以及处理的方法。
试卷类(用于封装整套题目的信息)
属性:题目列表(题目类的对象集合)、题目数量,题目总分,试卷题号列表
方法:判题方法(题号-num、答案-answer):判断答案-answer是否符合对应题号的题目标准答案-standardAnswer
保存题目(题号-num、题目-question):将题目保存到题目列表中,保存位置与num要能对应;HashMap接口,key为题目编号,value为题目分值;题目总分值的计算。;获得总分。
3)答卷类(AnswerPaper):保存和处理一张答卷的信息以及处理的方法。
答卷类(用于封装答题信息)
属性:试卷(试卷类的对象)、答案列表(保存每一题的答案)
方法:判题方法(题号-num):判断答案列表中第num题的结果是否符合试卷中对应题号的题目标准答案,判断答案顺序是否与试卷答案相同。
输出方法(题号-num):按照题目的格式要求,输出题号为num的题目的内容和答题结果。
保存一个答案(题号-num,答案-answer):保存题号为num的题目的答题结果answer。
第二次作业在第一次的基础上之上新增了判断总分信息,判分结果,题目答案信息是否少于试卷标题数量,试卷号是否错误。并且我需要逐个逐个的分析输入信息,然后处理该字符串,并存储。然后再根据题目的判断要求来输出信息。输出较于第一次作业的话就是多了个总分判断。
第三次作业:
1)题目类(Question):用于保存一道题目的信息以及处理的方法。(与系列 1 相同,无变化)
题目类(用于封装单个题目的信息):
属性:题目编号、题目内容、标准答案-standardAnswer,题目对应的答案列表
方法:数据读写set\get方法、
判题方法(答案-answer):判断答案-answer是否符合标准答案-standardAnswer;判断是否为有效题目
2)试卷类(TestPaper):保存和处理一张试卷的信息以及处理的方法。
试卷类(用于封装整套题目的信息)
属性:题目列表(题目类的对象集合)、题目数量,题目总分,试卷题号列表
方法:判题方法(题号-num、答案-answer):判断答案-answer是否符合对应题号的题目标准答案-standardAnswer
保存题目(题号-num、题目-question):将题目保存到题目列表中,保存位置与num要能对应;HashMap接口,key为题目编号,value为题目分值;题目总分值的计算。;获得总分。
3)答卷类(AnswerPaper):保存和处理一张答卷的信息以及处理的方法。
答卷类(用于封装答题信息)
属性:试卷(试卷类的对象)、答案列表(保存每一题的答案),学生学号,答卷的试卷列表
方法:判题方法(题号-num):判断答案列表中第num题的结果是否符合试卷中对应题号的题目标准答案,判断答案顺序是否与试卷答案相同。
输出方法(题号-num):按照题目的格式要求,输出题号为num的题目的内容和答题结果。
保存一个答案(题号-num,答案-answer):保存题号为num的题目的答题结果answer。
4)学生类(Student):保存和处理一个学生的信息
学生类(用与封装学生信息)
属性:学生姓名,学生学号
方法:sette/getter方法
5)删除类(Delete):保存和处理一个删除题目的信息
删除类(用于封装删除题目信息)
属性:删除题目号
方法:setter/getter方法
6)试卷题目类(Question_Paper):用于保存试卷中的题目信息。由于试卷中的题目序号与题
目本身的题号不一致。且题目在不同试卷中的分值可能不一样,因此,设计试卷题目类。
试卷类(用于封装试卷题目信息)
属性:题目顺序号,题目(题目类的对象),题目分值
方法:判断题目是否得分。
7)答案类(Answer):用于保存答卷中一道答案的信息。
答案类(用于封装答案信息)
属性:试卷题目(试卷题目类的对象),答案
方法:判断每一道题的正确性,判断每一道题的得分,计算总分,判断答案对应的题目是否失效
8)合法类(Valid):用于判断输入是否合法
合法类:(用于封装输入信息)
属性:字符串
方法:用正则表达式判断输入的信息是否合法。
第三次作业因为没有严格按照单一职责原则,只设置了题目类,试卷类,答案类,学生类,删除类,导致在主函数中的判断方法有很多,进行判断时还要重新一个个的去调用方法,导致一个判断里面有好多括号,很长,自己有时候也会看花眼,等下次作业重新设计,严格遵循单一职责原则。
3.踩坑心得:
1.在处理字符串时下标值没有处理好,导致运行时出现一开始没有仔细去解读题目信息,没有严格按照题目信息输出,导致一开始的结构设计出现了问题,然后后面写完之后又要重新回去修改,浪费了很多时间。
2.在处理字符串时下标值没有处理好,导致运行时出现索引越界
3.类设计要合理,这样可以避免代码的不断地复用。尽量实现一个类一个功能。
4.改进建议:
不能只设置简单的几个类,而是要根据题目信息按照单一职责原则来设计,不能在全部一股脑的放进主函数中,而是要在类设计中就有处理方法和判断方法。
5.总结:
从这三次作业中我学习到了类与类之间的关系,java里的单一职责原则,开闭原则,迪米特法则,也认识到了大学该如何去学,不能再和之前一样想要等老师慢慢领着走。
这三次的作业我完成的都不是很好,因为之前没有接触过这门语言,然后很多知识点都要自己通过网络去自主学习,但是之前的学习经历都是跟着老师按部就班地走,所有很多知识点学了之后不知道该如何运用到实践中去,自己也练习的不够,一看到作业就怕,就像老师上课讲的鸵鸟一样,去逃避,而不是去想办法去克服和解决。前面没有完成好,没学扎实,但是后面的题目又是在之前的基础上扩展,这就导致后面越学就越困难,这是个恶性循环啊,吐了。
作业模式和上课感觉都挺好的,老师讲的也还不错,不会像一些老师一样上课很枯燥,没学好的原因主要还是自己的问题,没有去踏实的解决问题。下次一定要把完成度提上来,做得更好。