首页 > 其他分享 >第二次blog

第二次blog

时间:2024-06-06 21:55:57浏览次数:16  
标签:题目 重写 列表 blog 第二次 方法 ID 构造函数

一.前言
1.题目集4~6的知识点:
(1)这几个题目都使用了面向对象编程原理,根据题目给出的信息和题目的复杂程度,建立了对应的类,并在类中添加了方法。通过使用Java自带的类库,如Scanner类中的方法用于接收用户输入,regex.Matcher类中的方法用于正则表达式匹配,regex.Pattern类中的方法用于编译正则表达式。正则表达式被用于对题目给出的输入内容进行判断,从而分离出每道题目的文本和答案,并加入到自己创建的类中。
(2)循环语句和条件语句被使用来控制程序的逻辑性,例如循环遍历题目列表和学生答案列表,以及条件判断学生答案的正确与否。
(3)异常情况的处理也得到了关注,通过将题目输入的大块字符串分割成一段一段的字符串进行逐个处理,并对异常情况进行输出,保证程序的稳定性。
(4)按照题目要求输出相关结果,包括判断每道题的正误情况、批改每张卷子的总分,并检查每张卷子的总分是否等于一百等。这些结果被格式化输出,使用了System.out.println等方法来呈现学生的得分情况以及每道题的正确情况。
(5)第四次题目集加入了继承和多态,通过继承的使用,我们可以避免重复编写相似的代码,提高了代码的重用性。同时,当需要对某一类题目进行特定操作时,我们只需要针对该类的子类进行处理,而不必修改基础类的代码,从而提高了代码的灵活性和可维护性。
(6)第五次与第六次关于电路的题目涵盖了电路理论的基本概念,如欧姆定律、电阻并联与串联,以电路为例提高了编程技能,为未来的学习和工作奠定良好的基础。
2.题量
(1)在第三次大作业中,有大量的设计需要完成,因此需要投入相当多的时间和精力。
(2)第四次大作业的题量适中,完成起来需要一定的时间和努力。
(3)而在第五次大作业中,设计虽然也很多,但与第三次相比,它需要更多的时间来完成整个作业,因为其中的每个知识点都更加复杂,需要更深入的思考和分析。
3.难度
(1)第三次大作业的难度:较高。由于有大量的设计需要完成,并且需要花费大量的时间和精力,因此这个作业的难度较高。
(2)第四次大作业的难度:适中。题量在中等水平,需要一定的时间和努力,但相对于第三次大作业来说,难度稍低一些。
(3)第五次大作业的难度:较高。虽然设计思路也很多,但难度与第三次大作业相当,需要投入大量的时间和精力来完成。
二.设计与分析
1.第三次大作业
(1)设计与分析
Student 类:
包含了两个私有属性:studentID 和 name。
有一个构造函数用来初始化这两个属性,以及一个默认构造函数。
提供了获取学生ID和姓名的方法 getStudentID() 和 getName()。
Topic 类:
包含了三个保护属性:topicID、topicContent 和 standardAnswer,以及一个 exist 属性。
有一个构造函数用来初始化这些属性,以及一个默认构造函数。
提供了获取题目存在状态、正确题目的方法 correctTopic(),以及获取题目ID、题目内容和标准答案的方法。
有一个方法 deleteTopic() 用来标记题目不存在。
calculationTopic、multipleChoiceTopic 和 clozeTopic 类:
这三个类都继承自 Topic 类,并且都重写了 correctTopic() 方法。
calculationTopic 类表示计算题,它的 correctTopic() 方法比较答案与标准答案是否相等。
multipleChoiceTopic 类表示多项选择题,它的 correctTopic() 方法比较答案与标准答案中的选项是否一致。
clozeTopic 类表示填空题,它的 correctTopic() 方法比较答案是否包含在标准答案中。
Answer类:
属性:
answerID: 答案ID,用于标识每个学生答题记录的唯一标识。
studentID: 学生ID,用于关联答题记录和学生信息。
student: 表示学生对象,通过学生ID关联学生信息。
exam: 表示考试对象,通过答案ID关联考试信息。
answerList: 存储学生的答案列表。
answerIDList: 存储答案对应的题目ID列表。
topicPointList: 存储每个题目的得分情况。
构造函数:
接受答案ID、学生ID、答案ID列表和答案列表作为参数,并进行初始化。
初始化了 student、exam 和 topicPointList。
方法:
setStudent(ArrayList students): 根据提供的学生列表设置学生对象。
compareTo(Answer other): 实现 Comparable 接口,用于比较答题记录的顺序。
setExam(ArrayList exams): 根据提供的考试列表设置考试对象。
correctExam(): 对考试进行批改,计算每个题目的得分并输出总分。
在 correctExam() 方法中,代码进行了一系列操作:
遍历考试题目,检查答案是否存在,如果存在则进行批改,否则输出相应的提示信息。
调用 correctTopic() 方法对答案进行批改,根据批改结果计算得分。
输出每个题目的得分情况以及总分。
Exam 类:
属性包括考试ID examID、题目列表 topics、题目分值列表 points 和题目ID列表 topicIDs。
构造函数接受考试ID、题目ID列表和分值列表,并初始化相应属性。
chooseTopics(ArrayList topics) 方法根据题目ID列表选择对应的题目,如果找不到题目则添加空的题目对象。
judgePoint() 方法用于检查考试总分是否为100分,如果不是则输出警告信息。
JudgeFormat 类:
属性为一个字符串 line,表示待检查的字符串。
构造函数接受一个字符串,并初始化 line 属性。
judgement() 方法用于检查字符串的格式是否符合预期,通过正则表达式进行匹配。
主函数用来读取输入信息分类处理。
(2)心得

第一次提交没考虑多张试卷多个学生的信息,没有在类中加入比较接口。后来仔细查看代码发现该问题,加入比较接口后获得满分。
2.第五次大作业
(1)设计与分析
CircuitEquipment 类:
属性包括设备编号 deviceNumber、设备类型 deviceType、两个引脚 pin1 和 pin2、使用状态 useState 和电压 voltage。
实现了 Comparable 接口,通过 compareTo 方法按照设备类型和设备编号进行比较。
提供了构造函数和一些基本的 getter 和 setter 方法。
包含了一个抽象方法 endVoltage,用于计算设备终端的电压。
包含了一个 display 方法用于显示设备信息,以及一个 usable 方法用于判断设备是否可用。
Switch 类:
继承自 CircuitEquipment 类,表示开关设备。
属性包括开关状态 state。
构造函数初始化开关状态,并设置设备类型。
重写了 endVoltage 方法,根据开关状态返回电压值。
提供了 setState 方法用于改变开关状态。
重写了 display 方法用于显示开关状态。
BinningGovernor 类:
继承自 CircuitEquipment 类,表示分档调速器设备。
属性包括档位 binningGears。
构造函数初始化档位,并设置设备类型。
重写了 usable 方法,根据引脚连接情况判断设备是否可用。
重写了 endVoltage 方法,根据档位和可用性返回电压值。
提供了 shiftUp 和 shiftDown 方法用于调节档位。
重写了 display 方法用于显示档位信息。
ContinuousGovernor 类:
继承自 CircuitEquipment 类,表示连续调速器设备。
属性包括连续档位 continuousGears。
构造函数初始化连续档位,并设置设备类型。
重写了 usable 方法,根据引脚连接情况判断设备是否可用。
重写了 endVoltage 方法,根据连续档位和可用性返回电压值。
重写了 display 方法用于显示连续档位信息。
IncandescentLamp 类:
继承自 CircuitEquipment 类,表示白炽灯设备。
属性包括白炽灯亮度 incandescentLampBrightness。
构造函数初始化白炽灯类型。
重写了 endVoltage 方法,根据电压计算白炽灯的亮度。
重写了 display 方法用于显示白炽灯亮度。
FluorescentLamp 类:
继承自 CircuitEquipment 类,表示日光灯设备。
属性包括日光灯亮度 fluorescentLampBrightness。
构造函数初始化日光灯类型。
重写了 endVoltage 方法,根据电压计算日光灯的亮度。
重写了 display 方法用于显示日光灯亮度。
CeilingFan 类:
继承自 CircuitEquipment 类,表示吊扇设备。
属性包括吊扇转速 rotateSpeed。
构造函数初始化吊扇类型。
重写了 endVoltage 方法,根据电压计算吊扇的转速。
重写了 display 方法用于显示吊扇转速。
SeriesCircuits 类:
用于管理一组电路设备的集合。
属性包括 circuitEquipments,存储 CircuitEquipment 对象的 ArrayList。
构造函数初始化 circuitEquipments。
提供了 displayAll 方法用于显示所有电路设备的信息。
提供了 setVoltage 方法用于设置电路中的电压,并根据电压计算每个设备的状态。
(2)心得

第一次提交得分少,发现是题意没看清,开关的状态输入与题目相反,修改结果:

观察测试点给的提示发现出错的测试点全部与分档调速器有关,仔细查看题目信息与设计的分档调速器类发现分档调速器不能超过三档与不能低于0档的隐藏条件,加入限制规则后获得满分。
3.第六次大作业
(1)设计与分析
在第五次大作业的基础上进行迭代,在相关电器设备加入了电阻属性,重新设计了串联电路类的各种方法,并且加入了落地扇类和并联电路类
SeriesCircuits 类:
代表串联电路。
属性包括一个存储 CircuitEquipment 对象的列表 circuitEquipments。
构造函数接受设备数量和一个 ArrayList,用于初始化 circuitEquipments。
重写了 display 方法,以按顺序显示串联电路中的设备。
实现了 setResult 方法来计算串联电路中每个设备的结果(电压)。
包括 calculateTotalResistance 方法用于计算总电阻,以及 seriesCircuitsState 方法来检查串联电路中设备的状态。
提供了 getCircuitEquipments 方法来获取串联电路中的设备列表。
ParallelCircuit 类:
代表并联电路。
属性包括一个存储 SeriesCircuits 对象的列表 seriesCircuits。
构造函数接受设备数量,初始化 seriesCircuits 列表。
重写了 getResistance 方法来计算并联电路的总电阻。
包括 getCircuitEquipments 方法来获取并联电路中的设备列表。
实现了 setResult 方法来设置并联电路中的每个串联电路的结果(电压)。
(2)心得

第一次提交发现还有错误,仔细分析题目与设计各类测试点发现没有考虑主线路开关断开的电压情况,在串联电路类加上限制条件使开关闭合时线路电压设置为0,加入限制后获得满分。
三.总结
通过本次的三次大作业,我掌握了面向对象编程的基本原理。这包括了类、对象、封装等概念,以及如何在编程中应用这些原理。通过学习具体的编程语言,我掌握了其语法和特性,并了解了如何使用该语言进行面向对象编程。在完成作业和实验的过程中,我提升了编程实践能力,学会了解决实际问题的方法和技巧。未来,在学习中我会将相似的功能封装成方法或者类,以提高代码的复用性和可维护性。同时,我也认识到了代码的可读性的重要性,因此在编写代码时,我会注重给变量和方法起一个有意义的名字,并添加注释来解释代码的作用和逻辑。这样可以让其他人更容易理解代码,也方便自己日后的维护和修改。通过这次编程作业,我还学会了正则表达式的应用。正则表达式是一种强大的文本匹配工具,可以用来检查、提取和替换字符串。在编程中,我学会了如何使用正则表达式来处理文本数据,例如搜索特定模式的字符串、验证输入的格式是否符合要求等。这为我解决实际问题提供了一种更加灵活和高效的方法。在今后的学习和工作中,我会继续深入学习和应用正则表达式,以提高自己的编程水平和解决问题的能力。深入理解了继承的概念和作用。在编程实践中,我学会了如何创建一个子类,并且利用继承机制来扩展其功能。这种方法可以使得代码更加模块化和可扩展,同时也减少了代码的重复编写。在今后的学习和工作中,我将继续应用继承的原理,设计和实现更加灵活、可维护的代码结构,以满足不同项目的需求。

标签:题目,重写,列表,blog,第二次,方法,ID,构造函数
From: https://www.cnblogs.com/a2320122/p/18236104

相关文章

  • 第二次blog总结
    一、前言:第四次pta作业:1.知识点:考察类的继承,抽象类的使用。2.题量:3道简单题,1道迭代难题。3.难度:这次最后一道题在上次的基础上添加了题目的种类(eg:选择题、填空题)等,难度增加的还行,不算太难也不算太容易。第五次pta作业:1.知识点:考察类实现Comparable接口,重写compareTo......
  • 题目集4~6的总结性Blog
    4~6次大作业总结前言在题目的开始设计好类和结构真的很重要,之前一直上来就开始写,后来就变得吃力,这样不能很好的一次性完成代码,发现应该先设计,在着手编写代码之前,可以先绘制类图,明确每个类的属性和方法,以及它们之间的关系。这有助于构建清晰的代码结构和逻辑,避免在编码过程中陷入......
  • 第二次博客总结
    《第二次博客》一.答题判题程序-4前言:1>.代码主要功能:主函数的输入部分:解析输入:使用Scanner对象从控制台读取输入,并解析以特定格式开头的文本行。创建题目:解析题目相关信息(题号、内容、答案),并将其存储在Question对象中,然后添加到题目列表中。创建试卷:解析试卷相关......
  • Centos7下安装weblogic
    一、Weblogic安装包下载Weblogic下载地址:https://www.oracle.com/cn/middleware/technologies/fusionmiddleware-downloads.html 二、安装JDKWeblogic需要依赖于JDK#解压jdk压缩包,将文件夹重命名为jdk1.8tarzxfjdk-8-linux-x64.tar.gz-C/opt/cd/optmvjdk1.8......
  • weblogic使用过程中的部分报错与解决方案
     引用:https://www.cnblogs.com/jeff-z-blog/p/9534591.html报错一:vim中E212:无法打开并写入文件编写配置文件时,常常忘记切换到root用户,导致文件编辑完毕,敲入:wq退出保存时,出现E212:无法打开并写入文件的错误提示。这是由于在该目录下当前用户没有写权限导致,修改该文件的权限即......
  • blog2 4--6周PTA训练总结
    一.前言经过了第二轮4-6周的面向对象程序设计的学习,我对于这门课程的理解又更进一步。如同老师所说的,这门课程学下来,你会发现真正困难的从来不是敲代码的部分,而应当时设计的部分。在看到一道题之后第一时间想到不再是直接写代码,而是认真的反复查阅,构思一幅逻辑完整且正确的类图,它......
  • 题目集4-6的总结性Blog
    一.前言:在这几周,我们又进行了3次pta的题目训练。首先是答题程序的最后一次迭代,答题程序-4,接着就是新的迭代,家居电路模拟程序。经过一段时间的学习,我对面向对象设计的理解进一步加深,这三次题集写起来也没有之前那么困难了,虽然还有不足,我仍在一次次答题中学到了很多。以下是我的初......
  • OOP课程第二次博客
    目录1.前言2.设计与分析1.第四次pta作业2.第五次pta作业3.第六次pta作业3.踩坑心得4.改进建议5.总结1.前言第四次题目集是在第三次题目集的基础上新增了多选题和填空题,一方面考察了我对继承的理解和运用,另一方面也考察了我对接口comparable以及collection中sort的用法。第五,六次......
  • OOP第二次blog
    I.第四次答题判断:在前三次答题判断的基础之上添加了多选题,填空题,同时要求多张试卷并排序。1.输入选择题题目信息:题目信息为独行输入,一行为一道题,多道题可分多行输入。格式:"#Z:"+题目编号+""+"#Q:"+题目内容+""#A:"+标准答案格式基本的约束与一般的题目输入信息一致。新增......
  • 第2次总结性Blog-题目集4~6
    目录前言设计与分析采坑心得改进建议总结关于java&面向对象  在经过这几个月的系统性的java学习中,我始终牢记着一句话:面对对象程序设计最重要的是设计,而不是代码。设计即要遵守单一职责原则,简单来说就是什么该做,什么不该做。设计的越好,复用性就越高,需要修改代码的量就......