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

第二次Blog

时间:2024-06-08 22:22:35浏览次数:7  
标签:作业 信息 Blog 开关 答案 设计 第二次 输入

一.前言
第四次大作业是第三次大作业的迭代,增加了题目的类型,即题目可以有选择题和填空题,其中选择题也可能有多选题,存在多个答案。以此增加了对继承和多态的使用,同时也考验了正则表达式的匹配,输入时的情况与第三次改变较大。接下来五到六次大作业则改变为对电路的设计,总体也是考察对继承和多态的理解和使用,同时也考察了抽象以及接口的使用(使用到抽象或接口会使得题目更加简单)。总体来说题量正常,难度并不算太大。
二.设计与分析
由于第四次与第五次和第六次大作业属于不同的系统迭代,这里分作两部分分析
1.答题判别系统--第四次大作业
以下为我设计的类图:

第四次大作业属于是第三次大作业的迭代,而这次新增加了题目的类型,最适合的做法即设置之前的题目类为父类,填空题和选择题分开(因为答案格式不一样),如此可以解决更改后的信息问题,同时也要修改正则表达式来实现对信息更新后的匹配(第四次大作业与第三次大作业改变较大)。

由于输入信息的类别依据于信息前#+字母中的字母决定,因此设计如上正则表达式来匹配各种不同信息再分别进行存储。与第三次大作业的匹配是大致相同的,只需要重点考察填空题和选择题的判别以及答案的输入。同时也要注意因为题目类型的改变导致答案的改变,答卷类存储答案时也需做出相应的调整。争对填空题,答案一般为中文,多个答案时一般以或为间隔,将答案分隔开,因此个人认为可以在正则表达式匹配到之后进行信息输入时,便对字符串依据或分割(一个答案时也可以进行),就需要使用到sqrt函数以及正则表达式的配合。之后将获取的答案放到一个数组中,将数组传入到对应的hashmap中,便完成了答案的获取。由于选择题也存在多个答案的情况,但格式与填空类并不相同,字母(选项)之间使用空格分隔,此时便不能使用大作业三对信息获取的常用套路————对数据依据空格分隔开(因为存在错误格式输入的情况,继续依照大作业三的获取方式会使得错误格式判别更加复杂),因此对选择题输入需要做别养的设计。同时还要更改答卷信息的输入,由于题目都可能存在多个答案,答案一般使用数组储存,再依靠hashmap查找存储数据的数组,因此答卷类只需要判别输入的答案并将它们分隔开,以适应之前存入答案的格式,之后进行一一判别,这种做法也同时更利于对半对情况的判断。最后则是学生信息的更改,这次大作业中一个学生可以拥有多张答卷,这就需要对答卷信息的存储进行相应的更改,将学生类与答卷类进行关联,这里使用hashmap依据答卷序号进行的匹配就能很好的解决问题,其他设计与第三次大作业大致相同,无过多更改。
2.强电路模拟系统--第五次大作业和第六次大作业
由于第六次大作业是第五次大作业的迭代,其中包括大部分第五次大作业的设计,只是新加了并联类以及一个设备,还有对输入信息的更改,此处主要对第六次大作业进行分析
此为对应第六次大作业的设计类图

再对类的主要关系进行分析时,我们可以主要对第五次大作业进行分析。第五次大作业给出了两个大类,一个是控制设备类,包括开关,调速器等,同时对调速器设置了相应限制,及只能第一个连在电源上,可以省去很多情况的考虑。一个是受控设备类,包括风扇,日光灯等家具,主要依据电压差进行不同档次的工作,即输出的工作信息随电压改变而改变。这也提供了我们设计两个父类的思路,同时利用抽象和接口设置子类均可使用的方法,能更好完成这个程序。由于第五次大作业只有串联,考虑的情况大多与开关有关,同时没有错误信息的输入,因此输入的信息并不难进行分割并分开存储。第六次大作业加入了并联,也算加入了电路类这一大类,串联类和并联类为其子类,同时输入信息格式与答题判题程序输入的信息有一个共同点,便是信息前面有#+字母以便区分,因此使用到的正则表达式进行获取与答题判题程序大致相同。需要注意的只是对控制设备状态的改变。不过我们可以开局设置一个电压为V。输入信息的同时算出对应电阻,在所有信息输入完成后再进行电压的计算,能够方便很多。同时也需要对开关重点关照,因为开关没有调速器的限制,可以放在任何地方,且开关的状态决定着一条电路的情况。因此我设计了输入类,输出类和计算类来辅助对各种情况的判别。
三.踩坑心得
此处我也对第四次大作业和第五次第六次大作业分开进行分析
1.答题判题程序
踩的坑主要有三个。由于hashmap中不存在对象时再去引用,则会出现非零返回和报错,而我依据题目设计对错误信息判别式,错误的信息会被忽略掉而不会创建对象,因此这里踩了第一个坑————没有对引用对象进行是否为空的判断,导致出了非零返回

第二个坑则是因为题目所要求的输出信息的格式顺序,而我当时并没有注意到,因此导致输出结果的格式与答案的不一样,出现大量错误。第三个坑则是多学生多试卷乱序输入的问题

由于我没有考虑到乱序输入的情况,同时由于使用的是hashmap,并不会对学号进行自主排序,因此输出的信息与答案输出的信息也是不同的,才导致这些出错。后面我换成了treemap,利用treemap的自主排序,解决了大部分问题,但仍存在部分测试点未通过。
2.强电路模拟系统
第五次大作业较为简单,经过对开关的各种情况考虑,能够简单的通过所有的测试点,因此并没有踩到什么坑。而第六次大作业踩到的坑则主要也有三个。
第一点则是忽略了只有一条串联的考虑,即与第五次大作业输入的信息类似,整条电路为一条串联,没有并联,而我在设计时并没有考虑到这种情况,因此出现了大量错误。

经测试以上均为单串联的情况,因此只需加入对并联数量的是否为0的判断就能够很好的解决问题。
第二点则同样是对开关的考虑不全,由于并联中的开关可以有多个,也可能没有开关,在进行电压计算时情况不同,比如一个开关断开导致整个通路为串联,而我没有考虑到这个情况,依旧导致断的通路存在电压。
第三点则是对改变控制设备信息的输入。由于存在不对改变控制设备的情况,而我没有考虑到这一点,导致电压一直为220,输出的信息出错。
四.改进建议
1.答题判题程序
由于输入信息的多样,个人认为可以设计一个专门的输入类,来避免在主函数考虑到多种情况因此导致主函数过长,增加了函数修改所需要的时间和精力。同时争对输出信息的排序,个人认为可以设计一个专门的排序类来对输出信息进行排序,能够更好的解决hashmap输出信息不符合格式的情况。
2.强电路模拟系统
对于强电路模拟系统,个人认为对于输入类需要进行改进,以便适应之后错误信息的输入以及多种不存在的情况,减少非零返回次数。多设计一个专门针对开关的情况判别类,避免在计算类或者其他类中塞入大量开关情况的判别导致代码很难更改。同时对计算类也需要改进对电阻的计算,由于下次大作业迭代新增了互斥开关以及多个并联的情况,对电阻的计算对于电压的判断尤为重要,因此个人认为在输入信息之后电阻就需要计算完成存储在电路中,便如我设计的类中电路的属性电阻(之前大作业我并没有有增加这个,而是电阻直接计算)。同时可以增加一个计算接口用于替代设计类中大量格式相同的计算。
五.体会
对于这三次大作业,主要考察对于抽象类和接口的应用以及继承和多态的理解,而经过这三次锻炼,也让我对于继承的应用更加熟络,同时对于正则表达式的运用,动态数组以及hashmap的运用更为得心应手,同时也让我认识到对于接口的学习需要进一步加强,对于接口的运用也需要多加练习。并且改掉看到题目直接写代码的陋习有了一定进步,形成面向对象程序设计的核心素养以及设计思路,养成先设计类图在写代码的习惯。对于类的设计更需要系统化,对象化。在这几次大作业中也有许多获得优秀成绩的学生,说明这几次大作业并不算很难,对于我也算一种全方面的锻炼。

标签:作业,信息,Blog,开关,答案,设计,第二次,输入
From: https://www.cnblogs.com/nchk23201119/p/18236922

相关文章

  • 南昌航空大学软件学院23201823第二次blog
    一、前言:这是第二次的blog,接下来关于这最近三次的PTA大作业,只有第一次是上次答题判题程序的延续,接下来则是一个全新的关于电路的设计,最新的电路设计相较于之前的答题判题程序来说的话,难度确实有所下降。前两次中都含有三道题,而最后一次的PTA则是删去了其余两道题,让我们专心钻研新......
  • 23201405-pta的总结blog-二
    前言本次作业blog主要对于答题判题程序4、家具强电电路模拟1-2进行分析说明和总结。这三次题目集的题目量和难度不必多说,题不在多,而在精。题目主要是为了提高能力,区分层次而出,难度不小。知识点主要有,抽象类、输入输出的处理,正则表达等。更重要的是分析题目,设计程序并实现的能......
  • 第二次Blog
    题目集4~6总结性Blog一、前言在题目集4至6的完成过程中,我深入学习了多个编程知识点,并在实践中不断巩固和提升。针对7-1题目,我发现这三次题目集在知识点的考察上具有一定的连贯性和递进性,题量适中,难度逐渐上升。7-1题目通常作为每个题目集的压轴题,不仅考查了我们对基础知识的掌握......
  • 题目集4~6的总结性Blog
    前言这三次的PTA作业日粮不大,知识点覆盖也不广,主要是对于类方法的掌握,难度适中,是可以接受的程度。答题判断程序4是接着答题程序3的,虽然增加了功能和排序,但是因为有了之前的代码,并不难写;家居强电电路模拟程序1是一个新的程序,最开始感觉是无从下手的,对于电路的输入和控制设备状态......
  • 第二次blog总结
    目录一.前言二.设计与分析:三.踩坑心得四.改进建议五.总结一.前言第四次大作业:1.题量:这次的大作业有三道题,题量较少。2.难度:第四次大作业的核心题目答题判题程序-4是经过了三次对第一次答题判题程序为基础的迭代而成,难度毋庸置疑,而且因为第一次总结,这次大作业距离上一次大作业也......
  • PTA三次题目集总结-第二次blog
    以下内容是我对pta题目集4-6次大作业的总结nchu-software-oop-2024-上-4本次作业新增内容:1、输入选择题题目信息题目信息为独行输入,一行为一道题,多道题可分多行输入。格式:"#Z:"+题目编号+""+"#Q:"+题目内容+""#A:"+标准答案格式基本的约束与一般的题目输入信息一致。新......
  • 第二次Blog
    (1)前言:智能家居是在当下家庭中越来越流行的一种配置方案,它通过物联网技术将家中的各种设备(如音视频设备、照明系统、窗帘控制、空调控制、安防系统、数字影院系统、影音服务器、影柜系统、网络家电等)连接到一起,提供家电控制、照明控制、电话远程控制、室内外遥控、防盗报警、环境......
  • 第二次Bolg
    (1)前言:这几次的大作业的包含了String类的使用和各种String的处理方法,包括字符串按照正则表达式查找和切割。以及很多新知识点,包括类的封装,继承和多态,其中继承可以说是贯穿整个程序,继承可以让程序简单易读,好修改,而这个还要求进行一个复杂性很高的排序,所以还用到了TreeMap集合进......
  • 题目集4~6的总结性Blog
    目录一、前言:总结三次题目集的知识点、题量、难度等情况知识点题目及题量、难度nchu-software-oop-2024-上-4:nchu-software-oop-2024-上-5:nchu-software-oop-2024-上-6:二、第四次的答题判题程序分析设计与分析第四次的答题判题程序类图以及SourceMontor的生成报表内容:踩坑心得......
  • 第二次blog
    一.前言1.题目集4~6的知识点:(1)这几个题目都使用了面向对象编程原理,根据题目给出的信息和题目的复杂程度,建立了对应的类,并在类中添加了方法。通过使用Java自带的类库,如Scanner类中的方法用于接收用户输入,regex.Matcher类中的方法用于正则表达式匹配,regex.Pattern类中的方法用于编......