nchu-software-oop-1-3总结

(1)前言:在面向对象程序设计这门课程的学习过程开始后的一段时间,完成了三次相关的练习,现将这三次练习中遇到的一些问题,收获的经验等等总结如下。

第一次练习题目总结:
7-1 身体质量指数(BMI)测算 (10 分)
体重是反映和衡量一个人健康状况的重要标志之一,过胖和过瘦都不利于健康,BMI(身体质量指数)计算方法:体重(以千克为单位)除以身高(以米为单位)的平方。中国成人正常的BMI应在18.5-24之间,如果小于18.5为体重不足,如果大于等于24为超重,大于等于28为肥胖。请编写程序,测算身体状态。
难度为易,考察了double类型的输入if else判断条件的设计,数学函数的使用等知识点。
7-2 长度质量计量单位换算 (5 分)
 长度、质量的计量有多重不同的计算体系,有标准的国际单位制:千克与米,也有各个国家自己的计量方法如:磅、英寸;1磅等于0.45359237千克,1英寸等于0.0254米,请编写程序实现国际单位制与英制之间的换算。
难度为中,知识点考察同上。
7-3 奇数求和 (9 分)
 计算一个数列中所有奇数的和。
难度为易,考察了用java遍历的算法的设计,数组的使用的知识点。
7-4 房产税费计算2022 (12 分)
房屋交易在日常生活中非常常见的事情,房屋交易时要额外支付各种税费,按2022年房产交易新政策的规定买房人应缴纳税费包括:

1、契税:首次购房评估额90平(含)内1%、90平-144平(含)内1.5%,超过144平或非首 次3%,买方缴纳。2、印花税:房款的0.05%。3、交易费:3元/平方米。4、测绘费:1.36元/平方米。5、权属登记费及取证费:一般情况是在200元内。

难度为中,考察了if else判断语句的使用,对题目判断条件的分析,数学函数的使用以及如何正确输出格式。
7-5 游戏角色选择 (14 分)
 一款网游中包括4个种族:人类、精灵、兽人、暗精灵,每个种族包含三种角色:战士、法师、射手。玩家新建人物时需要选择种族和角色。请编写角色选择程序。
难度为易。考察了java中switch语句的使用,println的使用。
7-6 学号识别 (10 分)
 学校的学号由8位数字组成,前两位是入学年份(省略了20);第3、4位是学院编号,01代表材料学院,02代表机械学院,03代表外语学院,20代表软件学院;第5、6位是学院内部班级编号,最后两位是班级内部学号。如:18011103,入学年份是2018年,材料学院,11班,03号
难度为中,考察了字符串类型的一些提取子串,查找子串方法的使用,以及利用这些方法对字符串格式进行判断,正确输出格式等方面的知识。
7-8 巴比伦法求平方根近似值 (10 分)
 巴比伦法求n的近似值可以用以下公式:nextGuess = (lastGuess+n/lastGuess)/2

程序初始运行时lastGuess可赋予一个最初的猜测值。当由公式求得的nextGuess和lastGuess相差较大时,把nextGuess的值赋给lastGuess,继续以上过程,直至nextGuess和lastGuess几乎相同,此时lastGuess或者nextGuess就是平方根的近似值。
本题要求:nextGuess和lastGuess的差值小于0.00001时认为两者几乎相同

难度为中,考察了java中对于给定的公式和判断条件进行算法设计的知识以及对数值的正确判断。

7-9 二进制数值提取 (10 分)
 在一个字符串中提取出其中的二进制数值序列,。
难度为中,考察了对于字符串判断子串格式,内容,以及算法设计方面的知识。
7-7 判断三角形类型 (20 分)
 输入三角形三条边,判断该三角形为什么类型的三角形。
难度为中,考察了对输入的数据类型,数据是否符合要求的范围,等的判断,以及设计合理的if else语句进行筛查方面的知识。
第一次练习整体难度为中下,题量合理。
 
第二次练习题目总结:
7-1 字母-数字转换 (11 分)
 输入一个由英文字母组成的字符串(大小写均可),将所有英文字母转换成它们在字母表中的序号,例如:“AbbcD”转换为“12234”。
难度为中,首先考察了对字符串子串,单个字符格式,范围方面进行判断方面的知识。然后,可利用ascii值遍历字符串,强制转换字符类型为整型便可以正确输出结果。
7-2 串口字符解析 (40 分)
 RS232是串口常用的通信协议,在异步通信模式下,串口可以一次发送5~8位数据,收发双方之间没有数据发送时线路维持高电平,相当于接收方持续收到数据“1”(称为空闲位),发送方有数据发送时,会在有效数据(5~8位,具体位数由通信双方提前设置)前加上1位起始位“0”,在有效数据之后加上1位可选的奇偶校验位和1位结束位“1”。请编写程序,模拟串口接收处理程序,注:假定有效数据是8位,奇偶校验位采用奇校验。
难度为中上,考察了对于算法设计,字符串子串分割方面的知识。
7-3 String的格式判断与内容提取 (10 分)
 学校学生学号格式定义如下:

2位年级号+2位学院号+2位班级号+2位序号,如19041103,
编写程序处理用全院学生学号连接起来的长字符串,学院编号为20,包括17、18、19、20四个年级,请从字符串中提取特定两个班级202017班、202061班同学的学号后四位输出,输出编号之间用空格分隔,不换行。
注意:需要排除非法输入。

难度中上,仍然是考察字符串子串,单个字符是否规范的判断方面的知识。

第二次练习题目整体难度为中,题量合理。

 
第三次练习题目总结:
7-1 点线形系列1-计算两点之间的距离 (10 分)
 输入连个点的坐标,计算两点之间的距离
难度中上,因为这次要求不能只有一个类,必须分开职责,因此还考察了如何建立类与类之间的联系方面的知识。另考察了对字符串格式方面的判断,提取分离子串并转换成double类型。
7-2 点线形系列2-线的计算 (42 分)
 用户输入一组选项和数据,进行与直线有关的计算。选项包括:

1:输入两点坐标,计算斜率,若线条垂直于X轴,输出"Slope does not exist"。
2:输入三个点坐标,输出第一个点与另外两点连线的垂直距离。
3:输入三个点坐标,判断三个点是否在一条线上,输出true或者false。
4:输入四个点坐标,判断前两个点所构成的直线与后两点构成的直线是否平行,输出true或者false.
5:输入四个点坐标,计算输出前两个点所构成的直线与后两点构成的直线的交点坐标,x、y坐标之间以英文分隔",",并输出交叉点是否在两条线段之内(不含四个端点)的判断结果(true/false),判断结果与坐标之间以一个英文空格分隔。若两条线平行,没有交叉点,则输出"is parallel lines,have no intersection point"。

难度为难,继承了上一题的格式判断,同时格式判断更加繁琐,算法设计,类的设计更加复杂。
7-3 点线形系列3-三角形的计算 (48 分)
 用户输入一组选项和数据,进行与三角形有关的计算。选项包括:

1:输入三个点坐标,判断是否是等腰三角形、等边三角形,判断结果输出true/false,两个结果之间以一个英文空格符分隔。
2:输入三个点坐标,输出周长、面积、重心坐标,三个参数之间以一个英文空格分隔,坐标之间以英文","分隔。
3:输入三个点坐标,输出是钝角、直角还是锐角三角形,依次输出三个判断结果(true/false),以一个英文空格分隔,
4:输入五个点坐标,输出前两个点所在的直线与三个点所构成的三角形相交的交点数量,如果交点有两个,则按面积大小依次输出三角形被直线分割成两部分的面积。若直线与三角形一条线重合,输出"The point is on the edge of the triangle"
5:输入四个点坐标,输出第一个是否在后三个点所构成的三角形的内部(输出in the triangle/outof triangle)。
必须使用射线法,原理:由第一个点往任一方向做一射线,射线与三角形的边的交点(不含点本身)数量如果为1,则在三角形内部。如果交点有两个或0个,则在三角形之外。若点在三角形的某条边上,输出"on the triangle"

难度为难,第三次练习题目的究极版本,较之第二题更为复杂,考察的内容同第二题。
 
第三次练习题目较为困难,需要花费大量时间,同时知识点考察更广泛。
 
(2)设计与分析
 
题目集二:
7-1 字母-数字转换 (11 分)
 输入一个由英文字母组成的字符串(大小写均可),将所有英文字母转换成它们在字母表中的序号,例如:“AbbcD”转换为“12234”。

使用ASCII值与强制类型转换可以较为简易的完成该题。

7-2 串口字符解析 (40 分)
 RS232是串口常用的通信协议,在异步通信模式下,串口可以一次发送5~8位数据,收发双方之间没有数据发送时线路维持高电平,相当于接收方持续收到数据“1”(称为空闲位),发送方有数据发送时,会在有效数据(5~8位,具体位数由通信双方提前设置)前加上1位起始位“0”,在有效数据之后加上1位可选的奇偶校验位和1位结束位“1”。请编写程序,模拟串口接收处理程序,注:假定有效数据是8位,奇偶校验位采用奇校验。

接收字符串,然后判断是否达到规定的最短长度,再依次判断奇偶性以及结束符,然后利用indexOf和charAt方法分割字符串,再输出。做完题目二后对分割字符串,判断字串内容有了更深刻的了解,利用indexOf和charAt方法可以较好的分割,判断字符串是否符合输入要求。

题目集三:

7-1 点线形系列1-计算两点之间的距离 (10 分)
 输入连个点的坐标,计算两点之间的距离

设计三个类,依次为Main,divede和check。check类检查输入的点是否符合个数要求,以及输入的点是否符合格式。divide类分割字符串,并且提取出4个double类型的浮点数,再将存有2个点的坐标的double类型的数组传回Main类,在Main类中进行计算并输出结果。

7-2 点线形系列2-线的计算 (42 分)
 用户输入一组选项和数据,进行与直线有关的计算。选项包括:

1:输入两点坐标,计算斜率,若线条垂直于X轴,输出"Slope does not exist"。
2:输入三个点坐标,输出第一个点与另外两点连线的垂直距离。
3:输入三个点坐标,判断三个点是否在一条线上,输出true或者false。
4:输入四个点坐标,判断前两个点所构成的直线与后两点构成的直线是否平行,输出true或者false.
5:输入四个点坐标,计算输出前两个点所构成的直线与后两点构成的直线的交点坐标,x、y坐标之间以英文分隔",",并输出交叉点是否在两条线段之内(不含四个端点)的判断结果(true/false),判断结果与坐标之间以一个英文空格分隔。若两条线平行,没有交叉点,则输出"is parallel lines,have no intersection point"。

 接收输入的字符串,并判断输入的格式是否符合题目的5个要求,如果符合,再判断点的个数是否符合对应编号的个数要求,如果不符合,输出对应的错误提示,如何符合,则进入对应的方法分割字符串并传入对应的坐标到double数组中,然后进入对应的方法计算并且根据不同的情况输出结果。

7-3 点线形系列3-三角形的计算 (48 分)
 用户输入一组选项和数据,进行与三角形有关的计算。选项包括:

1:输入三个点坐标,判断是否是等腰三角形、等边三角形,判断结果输出true/false,两个结果之间以一个英文空格符分隔。
2:输入三个点坐标,输出周长、面积、重心坐标,三个参数之间以一个英文空格分隔,坐标之间以英文","分隔。
3:输入三个点坐标,输出是钝角、直角还是锐角三角形,依次输出三个判断结果(true/false),以一个英文空格分隔,
4:输入五个点坐标,输出前两个点所在的直线与三个点所构成的三角形相交的交点数量,如果交点有两个,则按面积大小依次输出三角形被直线分割成两部分的面积。若直线与三角形一条线重合,输出"The point is on the edge of the triangle"
5:输入四个点坐标,输出第一个是否在后三个点所构成的三角形的内部(输出in the triangle/outof triangle)。
必须使用射线法,原理:由第一个点往任一方向做一射线,射线与三角形的边的交点(不含点本身)数量如果为1,则在三角形内部。如果交点有两个或0个,则在三角形之外。若点在三角形的某条边上,输出"on the triangle"

 

接收输入的字符串,并判断输入的格式是否符合题目的5个要求,如果符合,再判断点的个数是否符合对应编号的个数要求,如果不符合,输出对应的错误提示,如何符合,则进入对应的方法分割字符串并传入对应的坐标到double数组中,然后进入对应的方法计算并且根据不同的情况输出结果。

 做完第三次练习的三道题后,对于正则表达式的运用有了一个大致的掌握,同时对于分割字符串,将字符串转为double类型,设计不同的类,各司其职的方法,略有心得体会和收获。
 
 (3)采坑心得:
 
 第一次练习:
7-7 判断三角形类型 (20 分)
 输入三角形三条边,判断该三角形为什么类型的三角形。
 

如果将判断条件改为0,则会出错,因为java计算浮点数无法精确,只能以这种形式判断三角形的形状。

 
第二次联系: 
7-2 串口字符解析 (40 分)
 RS232是串口常用的通信协议,在异步通信模式下,串口可以一次发送5~8位数据,收发双方之间没有数据发送时线路维持高电平,相当于接收方持续收到数据“1”(称为空闲位),发送方有数据发送时,会在有效数据(5~8位,具体位数由通信双方提前设置)前加上1位起始位“0”,在有效数据之后加上1位可选的奇偶校验位和1位结束位“1”。请编写程序,模拟串口接收处理程序,注:假定有效数据是8位,奇偶校验位采用奇校验
 此题判断存在问题,奇偶判断不明确,测试点以及题干给出的奇偶判断存在矛盾。如图:
 

根据之前的测试数据以及题干信息可知,1才为奇偶判断正确,但是此样例以及某些测试点,0反而为奇偶判断正确,题干也未给出更详细的信息,不明觉厉。

 

第三次练习:

7-1 点线形系列1-计算两点之间的距离 (10 分)
 输入连个点的坐标,计算两点之间的距离

通过点与点之间格式的特点,判断,和空格的位置,借此取出每个点的x,y坐标并存入double数组中的对应位置。

 
 (4)改进建议:
第一次练习:
7-1 身体质量指数(BMI)测算 (10 分) 测试点的边界值判断与题干信息不符合,建议修改题干或测试点。
第二次练习:
7-2 串口字符解析 (40 分) 测试点中的奇偶性判断与题干所给出的信息不符合,题干明显是说1才是正确的奇偶判断,但是0在某些情况又反而对,不明觉厉。建议修改题干或测试点。
第三次练习:
7-1 点线形系列1-计算两点之间的距离 (10 分) 题干给的信息有点少,更多需要根据测试样例判断什么是正确的输入格式。建议可以在题干多给点信息。
 
(5)总结:
 
通过本阶段的三次题目集,以及之后的总结,更好了理解了java中类、方法的设计,以及java中自带的各种方法,对于面向对象程序设计的概念理解又加深了许多。
同时还存在许多不足之处,面向对象的过程还不甚熟练,很多时候还是保持着惯性思维,需要多加练习、学习以及研究。
老师,课程方面都很好,语言通俗易懂,概念深刻发人深省,作业虽然很难但是能让人学到东西,并且课后感触良多,令人感慨。
 
 
 
 
 
 
 
 
 
 
 
 
posted @ 2022-04-09 22:14  摩羯座的明  阅读(193)  评论(0)    收藏  举报