首页 > 其他分享 >❀third Summary❀

❀third Summary❀

时间:2023-06-23 14:55:28浏览次数:50  
标签:third 正则表达式 代码 Summary 课程 使用 排序 可以

最前面:

完结撒花!想放假想放假想放假!各位美女bb还有彭于晏,不要恶意低分捏,我辛辛苦苦一个个字敲的哎,假期快来了,一切会好起来的。

我不包括前前言是3200字奥,够了的,真的,你可以自己复制粘贴看看,可能看起来短了点,没有题干和多余代码奥。

是真的懒得贴图了,没有放类图,因为老师上课讲过了,就不再放了,很多地方只贴了关键性的,而且没有复制代码过来。

 

(1)前言:

第一次实验

总计一道题(课程成绩统计程序-1)

有了上次实验的经验,这次上手难度就看起来简单了许多,设计学生成绩管理系统嘛毕竟,涉及的知识点就很多了,例如中英文的排序,这又穿插了(*【0-9】正则表达式的运用什么的),按照类图设计代码(会让代码的构造简单很多),类关系的设计与实现,正则表达式的使用,HashMap,HashSet等容器的使用,使用Iterator迭代器遍历容器元素,使用Collator进行中文字符的比较,类的抽象与子类的继承(继承可以通过 `extends` 关键字来实现。在继承的过程中,子类可以通过覆盖或重写方法来改变父类的行为),等等。

本次主要是考察类的设计与构造,以及平均分的计算,但由于要用到hashmap,hashset等容器类计算平均分时要使用迭代器进行迭代,代码量还是偏大。

难度上面讲,相较于上次,就简单了许多。

第二次实验总计四道题,

前两道考察hashmap的基本应用,

第三道(课程成绩统计程序-2)

是延续第一次实验的内容,知识点有实验类的设计与添加,实验考核方式类的设计与添加。,正则表达式下多次重复内容的处理与判读,使用迭代器累加实验课单次成绩并计算总成绩

而第四题是考察implement的使用。接口可以通过 `interface` 关键字来定义,实现类可以通过 `implements` 关键字来实现接口。

本次统计程序实际上是第1次程序的迭代,添加实验课类即可,题量不高,代码量不高较易实现。

总而言之难度适中。

第三次实验

总计五道题,第一道考察容器-ArrayList-排序,第二道是学生成绩排序系统的继续延伸,知识点大概是继承关系修改为组合关系的使用,将平时成绩以及期末成绩的特定权重改为可修改式权重,正则表达式的处理与判断,使用迭代器进行数据的累加处理,权重的总和判断,不符合数据的输出,double类型数据和整形数据的比较处理

之后依次是jmu-Java-02基本语法-03-身份证排序jmu-Java-04面向对象进阶-03-接口-自定义接口ArrayIntegerStackjmu-Java-03面向对象基础-05-覆盖

本次统计程序将前两次中的权重进行了可修化的迭代,题量总体来说并不大。

 

 

 

 

 

课程成绩统计程序-1


(2)设计与分析:

 

 

 通过图片我们可以看出Statements为11,Branches为0.0,calls为0,Comments为0.0,class为1,Method为3,Lines为12。代码不简单,下次再编写代码应该重视圈复杂度这个问题,看看如何让代码更简洁一点

 

 

 

 string类输出这是,然后再调用方法就好啦

 

(3)采坑心得:

为了实现课程的正确顺序的输出,我编写了treemap类型的按照字母排序的方式,但是经过不断的测试我 发现当输入的课程是有中文有英文的时候使用treemap没有办法将中英文混合的课程信息实现正确的排序,因为这其中混入了关于字典的排序,所以很有几个测试点没有办法过。

 

接口使用

 

后来找别人帮忙后,我使用了适配kecheng中的key课程名的String类型的list来二次存入课程名称,并使用Collection的sort排序方法配合着list和改写的排序方法进行中英文混合排序,通过for循环利用list适配hashmap课程中相同课程名的课程。实现排序输出。当然也是自然的就过啦。

还使用了接口,可以通过 `interface` ,实现类可以通过 `implements` 关键字来实现接口,让代码简洁了很多咱就是说

 

(4)   改进建议:

 

 自己写的检索函数,其实后来发现hashmap会更简单一点

这次作业主要是发生了因为输入格式复杂,导致的错误,需要对每条输入进行解析和处理,容易出现格式错误和异常情况,需要同时考虑多种情况,如权重默认值这个下面例子有详细写,因为排版问题写在2里面了、考核方式、课程性质等,容易出现逻辑错误和漏洞,输出结果需要排序和处理异常情况,容易出现输出错误和不完整的结果然后导致报错,显示答案错误倒是没有非0返回。

 

 

课程成绩统计程序-2

 

(2)设计与分析:

通过图片我们可以看出Statements为28,Branches为3.6,calls为10,Comments为16.3,class为1,Method为10,Lines为43。

主方法上:我这次将主要的运行代码放在了新建的Play类中,所以我的main方法只有一个Play的运行方法。在Play中,我创建了String类型的s去接收输入的每一行信息。这样可以减少主函数里面的负担

 

 

一点代码震撼给到你,就是非常老式但是好用(特别好用)的格式检索,自己定义字符串然后匹配,看起来挺麻烦但是其实比正则还是简单一点。

 

(3)采坑心得:

 一个自动生成的方法存根,写成方法会降低复杂度啦

相较于第一次。对于成绩类的结构进行了修改,由原来的继承结构变成了组合结构,将grade里的成绩变成ArrayList容器,可复用程度较高,相对于继承关系来说组合关系的关联程度也较低。然后这样改动的动作也没有小一点耶。

测试点如上,其实三次作业不见得有多难,就是精度问题次次都是跌跟头的地方,这里也是要进行强制转换。

  

(4)改进建议:

我要啥改进意见?100个人眼中100个哈利波特,大家都是好样的,当然圈复杂度也挺低,我的建议是没有建议。

正经,下次可以重视一些小地方,像精准度这个地方不大但是你不认真对待它就会让你扣很多分。

 

课程成绩统计程序-3


(2)设计与分析:

通过图片我们可以看出Statements为28,Branches为3.6,calls为10,Comments为16.3,class为1,Method为10,Lines为43。

  代码还是不够简单

 

(3)采坑心得:

 

 

 

在parseinput类里进行权重总值的判断需要将权重总值为1,在parseinput类中解析单条数据时解析的先后顺序问题,也可能会造成相关的错误(会报错单条),例如在判断课程数据是否正确时应该先判断课程类型和考核方式,而不是根据考核方式再来判断课程类型。都是细节的问题哩

还是精度问题,真的很讨厌,可以使用强制类型转化转化为int进行比较或作将二者相减小于一特定精度值。我是在一开始没有注意到数字精度对数据结果的影响,在后面将double改成float,把1改成0.99-1.01之间,测试点就过了。

 

   

主函数相对简单,但是没有统一的用一个play,而是分开三个模块,这样子遵循自己的逻辑,在写代码的时候直接对应找过去就行了

 

4)改进建议:

我在原先的基础上增加了新的属性,ArrayList<Float> FloatArrayList ,用来存入课程录入时适配于课程的权重,方便在后续计算总成绩进行计算。

 

 

(5)总结:

虽然我的编写依旧处于从慢到快的艰难过程,至少在结构编写上我有了更加清晰的思路去编写,在分析需求上和功能要求上比以前更加的准确和自然。

通过本类型的大作业深化了容器类的使用,以及正则表达式的使用,在完成问题中类设计的相关的概念逐渐完善,类之间的关系逐渐清晰,意识到本课程中类图设计的重要性,一个好的设计可以给后期写代码和修改代码带来巨大的方便。

自身对于java的学习的感觉呢,就像是黄金矿工,你不挖永远也不知道不幸和黄金哪个先到(我肯定是黄金啦),遇到石头呢,里面可能裹的就是黄金,要靠查阅解决将其刨开,打磨,收获新的知识,许多的知识都是需要自行发现的。如果你发先自己在某方面出碰了壁,在代码中想要实现某功能却不知所措,那就会去挖矿趴,去学习新的编程知识,总会有新发现的。

我学习了java语法中的List泛型和Hash类型的方法。我可以通过List泛型消除强制类型转换,同时可以消除源代码中的许多强制类型转换,这样可以使代码具有可读性,并减少出错的机会(因为不冗杂)。使用hashset方法检索,可以用来去除集合中的重复元素当然也可以判断元素是否存在,使用contains() 方法来判断集合中是否包含某个元素(也是检索)。HashSet还能用来维护能维护一个无序的集合, 具有较快的查找速度。它还可以进行元素的快速查找,因为它使用的是散列表,可以在常数时间内查找元素,还可以其次发现自己对于一些容器类的使用不是很熟练,这些类的特点以及相关的方法还不熟悉,今后在这方面还得深入学习。

除此之外,我深入学习了对判断语句非常有用的正则表达式。类似于string类的matches()方法,我都有拿正则表达式与这条匹配语句进行对比,再给出判断的结果返回boolean值。(真的很好用)。熟练的运用正则表达式,在规范格式方面上,匹配纯文本上的格式上真的是谁用谁知道,嘎嘎好用,我为正则表达式代言。

正如老师教导的,一个类所具有的功能不应该繁琐的。当我进一步的了解了关于JAVA中类,方法,属性之间的关系,在行文中运用三者时,有种打太极的感觉,和为大同,相互制约相互联系共同构成大同, 这次java实验让我在短期内学到了很多编程的知识和技能,同时也让我认识到了编程的乐趣和挑战。我相信,通过不断的实践和学习,我可以更好地掌握java编程的知识和技能,成为一名优秀的欧皇(代码掌控概率,概率决定欧非,我学会了代码我就是欧皇了)。

标签:third,正则表达式,代码,Summary,课程,使用,排序,可以
From: https://www.cnblogs.com/cyzcxhm/p/17499162.html

相关文章

  • python-summary
    转载请注明来源:http://www.eword.name/Author:ewordEmail:[email protected]学习笔记专题目录首页Python学习笔记MacBook搭建python开发环境【必须】安装Python【必须】安装pip【必须】virtualenv的安装和使用【推荐】安装PyCharm【推荐】Pycharm虚拟环境......
  • Side by Side 1, Third Edition [Longman] + AUDIO
    SidebySide1,ThirdEdition[Longman]+AUDIOLevel:BeginnerA1Описание:SidebySide,ThirdEdition,byStevenJ.MolinskyandBillBliss,isadynamic,all-skillsprogramthatintegratesconversationpractice,reading,writing,andlistening—al......
  • 项目访问的端口是8018,但是真实接口地址是19080,导致访问这个地址http://9.6.237.104:80
    这个问题是由于您的前端页面与后端应用程序的接口地址不在同一个域名下所引起的跨域请求。在浏览器中,出于安全考虑,通常不允许JavaScript从一个域名下访问另一个不同域名下的资源,这种行为被称为跨域请求(Cross-OriginResourceSharing,CORS)。有一些方法可以解决跨域问题,下面是......
  • Summary - 分治
    本文旨在总结数种分治算法。1.区间分治:当需要对所有区间统计答案时,可以考虑这种分治。具体来说,在处理\([l,r]\)内的所有区间时,分三类考虑:跨过\(mid\)的,完全在\(mid\)左边的,完全在\(mid\)右边的。如果可以\(O(m)\)或\(O(m\logm)\)处理第一类情形(\(m=r-l+1\)),然后用分治处理另外两......
  • 使用details和summary元素实现树形展示
    1.先看效果2.默认是关闭的,并且父级关闭后,子级的开关状态会被保留,再次展开时,可恢复;3.需要对details元素增加一个padding-left或margin-left,否则展开后,子级和父级是左对齐的,视觉效果不好;4.一般是details元素套一个summary元素和一个展开后要展示的内容,如果details中没有sum......
  • cpp future,get,sleep_for,third variable
    #include<chrono>#include<condition_variable>#include<ctime>#include<fstream>#include<future>#include<iomanip>#include<iostream>#include<map>#include<mutex>#include<random>#inc......
  • CF1699A The Third Three Number Problem
    题意简述构造出一个三元组a,b,c使得(a⊕b)+(a⊕c)+(b⊕c)=n,若无解输出-1。符号⊕的意思为异或个人分析首先要了解异或符号的性质:1,x⊕0=x2,x⊕x=x根据异或符号的性质可以得到一下构造:a=b=0,c=n/2c=0,a=b=n/2通过上述可以发现答案都是偶数所以若n为奇则无解......
  • XI Samara Regional Intercollegiate Programming Contest Problem C. Third-Party
    Pavelisdevelopingagame.Todothat,heneedsfunctionsavailableinathird-partylibrarytoofamoustobecalled.Itisknownthatthefunctionifirstappearedinversionaiandexisteduntilversionbi,andstartingfromtheversionbi+1,it......
  • work summary
    清除浮动.new_main.ul::after{content:"";display:block;clear:both;}文本超出隐藏overflow:hidden;text-overflow:ellipsis;//结尾用...display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;//文字显示行数轮播图$('.slide_pic').slick({......
  • Magento: 获取产品评论 get all reviews with review summary
    1.根据产品id获取该产品评论$productId=1234;$product=Mage::getModel('catalog/product')->load($productId);$storeId=Mage::app()->getStore()->getId();Mage......