首页 > 编程语言 >面向对象程序编程PTA题目集4、5以及期中考试的总结性Blog

面向对象程序编程PTA题目集4、5以及期中考试的总结性Blog

时间:2023-06-29 15:56:27浏览次数:64  
标签:总结性 菜单 题目 String int 代码 PTA Blog

1.对之前发布的PTA题目集4、5以及期中考试的总结性Blog,内容要求如下:

(1)前言:总结之前所涉及到的知识点、题量、难度等情况

期中考试作业:

知识点:主要就是考了对类的使用,和不同类间的相互配合使用,还有对于一个程序的不断循环使用(相比之前更加灵活,可以自定义输入的个数),正则表达(可用可不用,这里可以用正则表达式来区别对正方形和圆型的输入,但是没必要,没有什么合法性判断,直接用If就可以平替)

题量与难度:这次期中考试的题量就三题,算是较少了,而且难度相对于之前写的菜单作业真的是一个天上一个地下,相比之下,真的是非常简单了,而且一下子就可以写完,熟练一点,估计也就30分钟作业的题量

PTA第四次题目集作业:

知识点:

难度与题量:更麻烦。因为多了个考点,对代码运行时间的把控,对代码占内存的把控。难了很多,花了很多时间,两天时间一天到晚都在写,最后只拿了个64分。最难点的地方就在对代码运行时间和内存的把控(这个坑,我放到踩坑心得细讲),我前几次提交基本所有测试点都超时了,写是写对了,但是超时了,一分也没有,难就难在不仅要更新,还需要把此前的代码每个地方都要换成运行更快的代码,比如加强循环改成迭代器,少用循环等等

PTA第五次题目集作业:

知识点:此次PTA题目仅只有这一个题目,在菜单三的基础上新增了口味选项,特色菜的相关选项,主要考的内容就是对类的使用(类似现实,对有关联的各个数据合并在一起,便于一起使用),运用正则表达式(比较苦难使用,要记住那些符号对应那些匹配,而且匹配的机制非常严格,常常想要达到预期的匹配效果需要经过很多次的调试,常用于对输入数据的合法性判断,难用,但是也非常实用),数组列表,对数组列表的接口类Comparable(在对数组列表中的内容的排序非常方便,而且内部的CompareTo可以自行定义升序降序或者其他的排序方法,常用好用),还有对字符串的分割(sqilt),对字符串的部分截取(subString),对输入的数据 的解析(根据输入的一行数据,来判断这行数据大体要干嘛,然后调用特定的方法来对这串字符串进行解析),比较字符串(equals,这个与==的比较方法就完全不同,==可以用来比较基本类型的值,也可以用来比较引用类型的地址值;equals则不能用来比较基本类型的值,可以比较引用类型的地址值,相对的可以在需要的类中重写equals方法,使得可以比较对象中的特定内容,例如String类就可以比较不同类中的字符串内容了),控制输出的格式(String.format("%d",12345);和与c语言格式化输出大同小异的system.out.printf(""),这个主要是用于控制一些小数的精确程度),对实际问题的合法性判断(在PTA里这个要先判断,不行要立即return,不能用if-else放到后边else里判断,不然测试点是通过不了的,其他的放到踩坑心得里说)

难度与题量:对代码运行时间的把控,对代码占内存的把控。

(2)设计与分析:重点对题目的提交源码进行分析,可参考SourceMonitor的生成报表内容以及PowerDesigner的相应类图,要有相应的解释和心得(做到有图有真相),本次Blog主要分析PTA中的菜单计价系列的题目以及期中考试的三道题目

第四次PTA题目:

7-1 菜单计价程序-4:

设计与解释:大体的思路

根据需求,与菜单三的相似但不完全相同,除了Main类外还设计4个类:Dish(菜)类:保存菜信息,Menu(菜单)类:用于保存多个菜谱信息和查找有无此菜,Record(点菜记录)类:记录一次点菜中的菜信息和份额和个数和序号,Order(点单)类;保存此客户的所有订单信息并算出总价。Dish类有:name 姓名,unit_price单价,getPrice(int portion)计算此份额的价格。Menu类有:dishes多个菜品, searchDish(String dishName)查找菜单中有无此菜,addDish(String dishName, int unit_price)添加菜到菜单。Record类有:dish记录这个菜,portion记录这个菜的份额,ordernum记录订单序号,getPrice()计算此菜的价格。Order类有:records 保存用户的所有点菜记录,addARecord(String dishName, int portion)添加订单,getTotalPrice()计算总价格,find(int ordernum) 根据序号查找一条记录,delet(int ordernum) 根据序号删除一条记录,在以上框架写完后,再补充进去此次菜单四需要的更多异常数据的判断

 

第五次PTA题目集:

设计与解释:大体的思路

根据需求,本题和菜单计价程序-4同属菜单计价程序-3的两个不同迭代分支。菜单三的基础上新增了口味选项,特色菜的相关选项

与菜单四的相似但不完全相同,除了Main类外还设计4个类:Dish(菜)类:保存菜信息,Menu(菜单)类:用于保存多个菜谱信息和查找有无此菜,Record(点菜记录)类:记录一次点菜中的菜信息和份额和个数和序号,Order(点单)类;保存此客户的所有订单信息并算出总价。Dish类有:name 姓名,unit_price单价,getPrice(int portion)计算此份额的价格。Menu类有:dishes多个菜品, searchDish(String dishName)查找菜单中有无此菜,addDish(String dishName, int unit_price)添加菜到菜单。Record类有:dish记录这个菜,portion记录这个菜的份额,ordernum记录订单序号,getPrice()计算此菜的价格。Order类有:records 保存用户的所有点菜记录,addARecord(String dishName, int portion)添加订单,getTotalPrice()计算总价格,find(int ordernum) 根据序号查找一条记录,delet(int ordernum) 根据序号删除一条记录,在以上框架写完后,再补充进去在菜单三的基础上新增了口味选项,特色菜的相关选项

 

期中考试题目集:

 

 

(3)采坑心得:对源码的提交过程中出现的问题及心得进行总结,务必做到详实,拿数据、源码及测试结果说话,切忌假大空

1.对于实际问题的合法性判断:这个是我在PTA遇到的第一个百思不得其解的坑,也是偶然中发现的,先单纯说在作业上:对于有关于合法性判断的测试点,必须得将合法性判断置于代码的最上边位置,不合格则立即return退出程序或者跳过一段程序。如果将合法判断置于后面,比如if-else放在else后面,即使最后运行结果一样,但是这个测试点就是不通过。总结就是在运行某段代码前,先判断是否合法,合法则执行这段代码,不合法则不执行这段代码直接跳过。然后在代码上的理解:我认为这样的好处是可以使代码运行的更快,因为当不合格时便不会读取其他多余的代码。

2.对代码运行时间和内存的把控:在PTA里面写这种系列更新题目的后期最大难题,你会是会写,但是你不会要会写,你还要智写,不能随便叠代码来完成,得用一些更高级的代码来替代那些简单代码以来减少运行时间。不仅是这次成绩管理系统,包括上次的菜单系统,越更新到后面,就越容易测试点超时。不能总是用循环来干事,得多换成迭代器,多用继承和组合加强代码复用

3.排序:先对长度排序,再在同长里面调用compareToIgnoreCase()方法。因为compareToIgnoreCase()函数在队不同长度的单词进行排序时会出现排不准的情况。还有也不能用compareTo()方法,这个方法会考虑单词的大小写,让排序不准确,题目准确写了忽略大小写,故用compareToIgnoreCase()才是最优解,可以忽略单词的大小写进行比较。

4.快读快写:用快读快写时,一定要记得在方法标签后面+throws IOException,不然是运行不了的。而且在创建对象时的代码是很长的,不好记而且容易打错,所以建议把创建对象的代码复制到一个常用代码文档里,要用的时候就不用再打一遍了。

 

(4)改进建议:对相应题目的编码改进给出自己的见解,做到可持续改进

1.写代码的时的细节问题和全局思想问题:写代码时总是会遗漏;{}等小细节问题,导致很多时候一运行报错了,到处找错误找不到,费了一番功夫才发现原来是某个小细节问题,同时也归咎于没有养成在报错的时候仔细看Idea给的报错可能,因为是英文所以老是懒得看。全局思想是常常遇到题目就开始写,并没有构思一下

 2.数据的重复与排序:有关重复数据和排序的,当时还不知道哈希表,就只能一股脑的用循环嵌套去解决,十分的麻烦,而且经常会测试点超时。比如的数据就可以直接全部add入哈希表中,然后再将删除重复数据的哈希表内个数与原个数比较就行。同理,最后遍历输出就行,可以极大的简化代码。

 

(5)总结:对本阶段(6-9周)综合性总结,学到了什么,哪些地方需要进一步学习及研究,对教师、课程、作业、实验、课上及课下组织方式等方面的改进建议及意见。

2.在截止时间之前将发布的Blog正文网址链接(非编辑网址链接)直接发到超星系统即可

知识上:学到了队类的使用,封装,String类,日期类,包装类中的一些方法,哈希表,数组列表,equals与==的不同等

思路上:学到了基本的解题步骤,需求分析,不断分解成子问题,由下向上逐步解决,阶段性调试测试,先构建出基本框架,写出基本功能,检查Bug,最后再来对整体的优化(比如让界面更简洁啊,简化一些代码啊等等)

当然还有很多没有弄明白的方面,还在学习正则表达式和javaFX动画驱动的内容

 

标签:总结性,菜单,题目,String,int,代码,PTA,Blog
From: https://www.cnblogs.com/nchkdx/p/17514415.html

相关文章

  • BLOG-2
    前言:本篇blog主要分析PTA4和PTA5的两道菜单计价程序和期中考试题目。实现菜单计价程序是一个常见的编程练习,可以帮助学习者巩固Java语言的基础知识和面向对象编程的概念。下面将介绍涉及的知识点和难度。1.知识点:-类和对象:程序需要设计菜单类和菜品类,通过创建对象来表示不......
  • 对之前发布的PTA题目集4、5以及期中考试的总结性
    一、前言:总结之前所涉及到的知识点、题量、难度等情况知识点:输入和输出:根据输入的菜单和订单信息,计算每桌的总价,并按顺序输出每一桌的总价。字符串处理和分割:需要将输入的字符串进行适当的处理和分割,提取所需的信息。条件判断和计算:根据不同的情况进行条件判断和计算,......
  • java第二次blog
    1.前言:4~6次pta题目集难度上升,代码量增加,考察了对类的设计以及如何实现类间关系等。难度较大。涉及到了去重排序循环遍历等。还有API接口,JAVA自带的实现类,包装类,成员方法等,涉及的知识面更广更难。 2.设计分析: 7-1菜单计价程序-3:设计点菜计价程序,根据输入的信息,计算......
  • 题目集6-8的总结性Blog
    一、前言第6-8次的pta没有延续之前的菜单计价程序,主要是围绕课程成绩统计程序进行的。第六次大作业就是成绩统计程序,第七次大作业则增加了对HashMap和多态的一个考察,第八次大作业则是增加了对Arraylist部分知识点的考察。这三次作业不再是菜单的设计,而是改为学生成绩的统计,但还是......
  • Blog PTA 6-9总结
    关于成绩统计程序类的结构理解(老师提供的结构代码)这里以课程成绩统计程序-3为代表,本质上三个题目的差别度不大,核心思想都没用太大处。尤其和前面的点菜系统有很强的相似性。输入结构课程名字性质考核方式权重的个数(1,2,4-9不等)考试两个成绩,两个权重考察一个成绩一个权......
  • PTA 6-8
    一、作业总结PTAdibaci总共进行了三次题目集的练习,无论是题目量,题目难度还是知识点,都是逐步递增的,并且越进行到后面的题目,运用到的技术也越来越多,在一周内(并且还有其他的课业的情况下)完成还是颇具难度的。第一次题目集总体难度并不大,主要考察的是最基本的运用第二次题目集相比与......
  • pta题目集6-8
    1.前言:这次pta较之前的点菜程序难度有所减小,但是有更多需要注意的细节,并且有很多测试点非常的极限。题目集6:7-1课程成绩统计程序-1分数 100全屏浏览题目切换布局作者 蔡轲单位 南昌航空大学某高校课程从性质上分为:必修课、选修课,从考核方式上......
  • PTA6-8总结报告
    前言:题目集六涉及的知识点有:1.利用Arrays.sort()方法根据某些标准对对象进行排序。2.异常处理(NumberFormatException)和条件语句来检查不正确的输入格式。3.类和对象:代码中使用了Class、Student和Lesson等类来表示班级、学生和课程。4.数组:代码使用了不同类型的数组,如班级、学生和......
  • blog-6-8次PTA题目集(成绩计算系列)
    (1)前言:第6次题目集课程成绩统计程序-1在规范性输入时涉及到了正则表达式,数组列表及其相关方法的使用,if-else,for,foreach循环的使用,以及字符串中的substring()方法,equals()方法的使用,Integer.toString等相关类型之间转化的方式,数据域的封装,Comparable接口的实现,Collections.sort......
  • Blog3
    PTA题目集6,7,8总结Blog一、前言大一下学期开始,我们开始学习Java这门编程语言。Java具有大多数编程语言共有的特性,是专门设计用于互联网分布式环境的。它的形式和感觉类似于C++,但相比C++更易于使用,并且完全采用了面向对象的编程方式。到目前为止,我们已经完成了八次Pta作业。除了......