第二次作业总结

一·前言

本次总结包含两次作业,题目难度随着作业的次数而不断增加,在经过了三个星期的作业训练后,进行了期中考试,成绩不是很优秀,写出了以下总结:

1.第一次作业:

7-1 菜单计价程序-4

在原有的菜单上进行改进和增加,增加了难度与新知识;没有完全掌握,么有满分4.0

2.第二次作业:

7-1 菜单计价程序-5

在原有的菜单上进行改进和增加,增加了难度与新知识;没有完全掌握。没有满分5.0,

3.第三次:

期中考试:

通过之前的菜单练习和小题基础练习以及上课的讲解和课堂作业,在经过了几个月之后的综合考试,

顺带一提:通知的太突然,五一完全没有心思复习,也是没考好的一部分原因。球球下次有考试早点通知TAT。

二·设计

1.第一次作业:

7-1 菜单计价程序-4

思路:

首先定义一个boolean的变量flag为true,用作While循环的条件通过While循环,进行使用Scanner进行循环输入每一行的数据,每输入一行都进行判断是否输入的是end,如果不是则添加到事先定义的字符串集合种,如果是end的话将flag的值赋值为false,终止While循环。

循环结束获得每一行输入的数据,遍历字符串数据集合进行操作,对每一行的字符串使用split分割成字符串数组,判断字符串数组的长度是否大于3;不大于3为菜谱信息,对菜谱信息进行处理,判断菜品信息格式是否符合规则不符合则将对应的错误信息添加到信息集合种,符合规则的话就生成菜品对象,添加到菜谱种。大于3表示为点单信息时则退出循环记录下标进行下一步操作。

再次对数据字符串集合进行遍历,从上一步的下标开始,对接下去的每一行进行split分割,判断分割出来的字符串数组中的第一个字符串,判断是否为t开头,为t开头表示是桌号标识,将该下标存入下标集合中。

遍历下标集合,在遍历里中在次对数据字符串集合进行遍历,遍历开始的下标为第一层循环下标+1,第二层的遍历是对点单记录的处理,是属于第一层遍历的桌号的。首先对桌号信息进行判断,是否符合规则,符合的在进行下一层的遍历,不符合的话将上一桌的对象取出,接下来遍历的点单信息都归属该桌对象。对一条数据的处理都会进行记录,无误则不添加信息,出错则添加到信息集合中,点菜记录的处理一样。在处理点菜记录的时候判断数组长度是否等于5,等于5表示为代点菜,进行代点菜处理。

处理完所有记录后,输出信息集合,然后在遍历桌号对象,对桌号对象进行排序,在次遍历对每一桌的价格进行计算然后输出。

类图如下:

2.第二次作业:

7-1 菜单计价程序-5

思路:

在菜单计价程序4的基础上,添加一个客户类用于记录客户的信息,对菜品添加一个是否为特价的属性,是否为三种菜的标识已经每一种菜的度量。

首先定义一个boolean的变量flag为true,用作While循环的条件通过While循环,进行使用Scanner进行循环输入每一行的数据,每输入一行都进行判断是否输入的是end,如果不是则添加到事先定义的字符串集合种,如果是end的话将flag的值赋值为false,终止While循环。

循环结束获得每一行输入的数据,遍历字符串数据集合进行操作,对每一行的字符串使用split分割成字符串数组,判断字符串数组的长度是否大于4;不大于4为菜谱信息,对菜谱信息进行处理,判断菜品信息格式是否符合规则不符合则将对应的错误信息添加到信息集合种,符合规则的话就生成菜品对象,添加到菜谱种。大于4表示为点单信息时则退出循环记录下标进行下一步操作。

再次对数据字符串集合进行遍历,从上一步的下标开始,对接下去的每一行进行split分割,判断分割出来的字符串数组中的第一个字符串,判断是否为t开头,为t开头表示是桌号标识,将该下标存入下标集合中。

遍历下标集合,在遍历里中在次对数据字符串集合进行遍历,遍历开始的下标为第一层循环下标+1,第二层的遍历是对点单记录的处理,是属于第一层遍历的桌号的。首先对桌号信息进行判断,是否符合规则,符合的在进行下一层的遍历,不符合的话将上一桌的对象取出,接下来遍历的点单信息都归属该桌对象。处理时需要对客户的信息进行存储,对一条数据的处理都会进行记录,无误则不添加信息,出错则添加到信息集合中,点菜记录的处理一样。在处理点菜记录的时候判断数组长度是否等于6,等于6表示为代点菜,进行代点菜处理。

处理完所有记录后,输出信息集合,然后在遍历桌号对象计算每一桌的价格然后进行输出,遍历客户类集合,对重复的桌号进行相加,计算总金额,在对客户类遍历排序后输出。

类图如下:

思路:

 

 

 

3.第三次:

期中考试:

圆类设计

思路:点义一个圆类,属性有半径,然后有着计算面积的方法,方法返回Math.PI*半径的平方。使用Scanner输入半径,对半径进行判断是否大于0小于Double的最大值,不符合输出错误信息。符合生成圆类对象,将半径赋值,调用计算面积的方法输出圆类的面积。

 

类结构设计

思路:设计一个矩形类和坐标类,矩形类有两个属性分别为左上角坐标类对象和右下角坐标类对象。坐标类对象有两个属性为x和y均为double类型。为矩形类设计一个计算面积的方法,在方法中对两个坐标进行计算出矩形的长和宽,然后相乘并输出。使用Scanner对输入四个坐标的信息,使用split进行分割开,并生成对应的坐标类对象,然后在生成矩形类对象,使用矩形类对象的计算面积方法输出面积。

 

继承和多态

思路:将圆类和矩形类都继承与一个Shape的父类,使用Scanner输入选择圆和矩形的数字,使用switch进行分支处理,在圆类分支中输入半径生成圆类对象,调用方法输出面积,在矩形类分支中,输入四次坐标点的位置,生成坐标类对象然后在生成矩形类对象调用方法输出面积。

 

抽象类和接口

思路:使用Scanner输入choice,1为圆,2为矩形,0则退出,使用While循环输入,条件为choice不等于0,等于0则退出,在循环中使用继承和多态的代码将输出面积改成将面积添加到集合中。循环结束后,遍历集合进行正向排序,然后在遍历集合输出所有面积。

错因总结:

从一开始的菜单程序出现到现在的菜单程序五,从来就没有一次得到过满分,也不愿意在截止时间过后对题目再进行研究,根本不知道不清楚上一次作业的短板和问题:

在后面的测试点开放之后,虽然对改进代码有一定的帮助,但是仍然无法做到完全改正,100这个数字不进不远但是写的我焦头烂额;

期中考试这个题主要是分析占用时间,第二题无论怎么改都是非零返回,考试的时候心态炸裂,到最后也没把它改明白,这分还是没有。

 

四·踩坑心得

 

1.在写这个菜单的时候总是很迷,没有搞清楚到底是哪里的问题,而且我后来一问,别人写的代码比我少好多还是满分,写代码的思路还是需要改进。

 

2.在写一些代码之前,为了让他不出错并且正确运行,会有部分需要在public前加上import,比如输入:import java.util.Scanner,但是在自主学习查阅的时候我总会忽略import的重要性,导致编译出错。

 

3.格式错误,因为输出时的观察导致第一道菜单问题截至提交时间时还是有格式错误

 

五·所需改进以及期待

改进:

1.勤于练习,不能只看这一次的作业,自己也要从别的方向吸收知识和习题,菜单的程序尽量写到满分。

2.充分利用时间,主动积极学习,对上课和自学的知识反复琢磨。

3.反复理解作业,将作业中的重点知识理解清楚。

4.上课认真听讲充分理解,课堂作业能写还是积极交作业。

期待:随着题目越来越难,希望有时间自己多加练习,能够避免一些本不该出现的愚蠢问题,

多利用碎片化时间进行学习,拒绝摆烂。

六·收获

通过学习java的这半个学期,我深刻明白一点:代码是滚雪球一步一步滚出来的,而不是应该与之相反的。

从一开始的简单语法到菜单加语法到最后的一个大作业只有菜单一道题,题的数量在逐渐变少 ,但是难度却越来越大。大部分的人都没有达到满分的成绩包括我在内。我从一开始的菜单一的时间分配到后来就算是加了时间也这不出满分的菜单,我没有一个是在时间截止之后继续研究的,这也导致我的漏洞一直就没有填补过来,和滚雪球一样。终于这一次期中考试也是,明明我的思路没问题,但是写到最后一直都是非零返回,这个问题困扰了我大量考试时间,这就是没有研究清楚的代价,我会吸取这次的教训,从头开始寻找漏洞进行弥补,希望下次作业以及考试不再有遗憾。

 

posted @ 2023-05-14 21:53  초심.(´..)  阅读(103)  评论(0)    收藏  举报