ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

第10-16周BLOG总结

2022-06-18 09:02:30  阅读:151  来源: 互联网

标签:10 过河 知识点 通话记录 16 用户 BLOG 计费 本题


第10-16周BLOG总结

 

一、 前言:

本学期第10-16周,我主要完成了两项工程量较大的题目,一项为PTA上的电信计费,另一项为实验oop中的农夫过河游戏。电信计费共分为座机计费、手机+座机计费和短信计费三个模块,农夫过河实验已进行近一学期,并于近期达到最为完善的程度。

故此,我将从知识点、题量、难度等方面对两次题目进行总结。

 

1、 知识点

电信计费考察到了SimpleDateFormat类、正则表达式、继承、多态、抽象类,除此之外,我还运用了TreeMap及ArrayList等语法储存用户基本信息以及用户通话记录等内容,以此实现数据的增加与查找。

农夫过河所考察的知识点则较为广泛,其不仅考查到了继承、多态、抽象类、接口,还考察了接口与继承的结合以及JavaFX的基本用法,利用JavaFX实现游戏界面的设计,完善游戏使用体验。

 

2、题量

两次题目的题量都较大,其中所包含的类较多,有的类作为父类或者抽象类,有的类作为子类,每个类负责不同的功能,故两次题目的结构都较为复杂,导致其工程量较大。农夫过河实验完成所需时间较长,故其题量相对来说较易于接受,未对实验完成造成较大压力。

 

3、 难度

电信计费难度较大,该题不仅涉及到的知识点较多,而且还有较多的计算,当输入用户通话记录时,需找出该通话记录符合的计费方法,而后依据其特定的计算方法得出该通话记录所对应的金额。首先将通话记录提取出来并找出其对应的计费方式为一大难点,与此同时,检验所输入的用户通话记录格式是否正确为另一技术难点,除此之外,计算费用为一技术在数学方面的难点。

农夫过河难度相对较小,大体分为五个阶段完成该实验,不同阶段难度循序渐进,知识点考察由浅入深,依据我们当时所学知识点考察。但仍具有一定的挑战性,因当我刚学习一个新知识点时,尚不可完全掌握其用法,故当农夫过河实验用到该知识点时,其对于我来说仍有一定难度。

总而言之,两次题目难度相较于其他实验来说都较大,尤其是电信计费,两个题目都将本学期所学的所用的大部分知识点串联到了一起,利用多个知识点相互结合实现了程序的设计与使用。

 

二、 设计与分析

1、 电信计费

类图:

 

解释:

本题所涉及到的类较多,所有类之间的联系较为复杂,结构多元。

本题中我运用到了treemap类储存用户信息(用户号码、市内通话记录、省内通话记录以及省外通话记录),利用treemap的自动排序功能将用户信息按照用户号码顺序进行从小到大排序,以便于后续输出,以及防止了同一个号码多次注册的问题,增加了功能的使用性。

使用了正则表达式验证输入的用户信息的格式是否正确,如正确则将其通过treemap计入用户信息中,如格式错误,则自动忽略该行输入。此般操作不仅能保证输入数据的准确性,也提高了判断输入正确与否的简便性。

不仅如此,我还使用了SimpleDateFormat类计算时间,以及验证时间格式是否正确。SimpleDateFormat可以控制时间格式的统一性,使时间必须符合"yyyy.MM.dd HH:mm:ss"格式,还可以精确地计算时间,以便于后续根据时间对于通话所产生的费用进行计算。

 

心得:

本题较为复杂,使用了多个类,运用了多个Java知识点,并将多个知识点进行串联,做到了一个题目对于多个知识点的考察,通过本题,我发现了我多个知识点存在缺漏,而后我从各方查找资料,将不能理解的部分重新学习。通过本题,我还接触到了些之前没有接触到的知识点,拓宽了我的知识面,当我遇到问题时,我开始寻找简便方法去解决我所面临的问题,使我的代码更加简洁。

 

2、 农夫过河

类图:

 

解释:

由图可见,本题使用了多个类,多个方法体,其中有三个抽象类,多个子类继承三个抽象类,将抽象类中的抽象方法具体化,当主类调用时只需调用抽象类即可。

本题中,我提取出了 AbstractGame 抽象游戏类,该类控制游戏主程序的进行。

还提取出了 AbstractRule 抽象规则类,该类主要写了游戏规则,如游戏继续的规则,判断是否已经过河的规则,以及判断该物品是否存活的规则,当用户输入带过河的物品后调用该类,对于农夫是否能将其带过河、带过之后河两岸的物品是否还能存活,以及带过河后该有是否胜利或失败,进行逐一判断,以保证游戏的可用性。

以及 MaterialObject 抽象物品类,该类定义了所有物品的基本属性以及方法,在主类中调用所有物品时只需声明该类即可。所有物品(船、人、动物和植物)继承了该类,并将该类中的抽象方法具体化。

 

心得:

本题相较于上一题较为简单,结构较为清晰,无多个类相互调用的复杂情况,考察知识点较为基础,更易于我对于基础知识的查缺补漏,做起来相较于电信计费更加得心应手,且农夫过河游戏做完后还可自己使用,具有趣味性,只可惜当前正处于期末周,故JavaFX做出的界面于我而言并非十分满意,今后会依据兴趣将该程序继续完善。

 

三、 踩坑心得

1、 电信计费

首先一大问题为正则表达式,因该程序涉及多种输入情况,故我写了多个正则表达式分别与不同情况相对应。不仅如此,用户在一行中输入的信息较为丰富,且不同信息对应的形式也不同,尤其是时间,需考虑到不可超过十二个月,不同的月份不可超过该月份对应的日期,不可超过二十四小时,不可超过六十分,六十秒,此项工作极为繁琐,故于我而言这里为一大难点,下次可更仔细地研究正则表达式,寻找出更适合题目要求的方法。

其次一大问题为计算用户通话所产生的费用,因用户通话包含市内、省内、省外,且接电话与打电话费用不同,不同用户类型所产生的费用不同,除此之外,还要考虑到手机发送短信的情况。故我需要先将用户通讯记录提取出来,再根据该记录找出其对应的计费方式,调用计费方法,统计出该月产生的费用。

最后一大难点为理解程序结构的难点,在刚开始做该程序时,仅看部分类图以及大篇文字,我并不能完全理解该程序的结构,而后我开始请教同学,并结合自己理解,最终摸清了本题中不同类之间的关系,最终才完成了本题程序的编写。

 

2、 农夫过河

本题并无很大困难,相较于电信计费而言,本题更多的是阶段性的困难。

首先第一阶段的困难是未能完全知晓本题的结构,导致所有数据随意传来传去,无条理性。

而后,增加了一种游戏方式,刚开始未能了解新玩法的规则。之后,明确了新规则,便开始考虑如何才能让代码变得简洁明了,减少代码的重复性,故我使用了if判断用户选择的是哪一种玩法,仅修改两种玩法的区别之处。

之后,增加了继承与多态,所有代码均需重新书写,这对于刚学习继承与多态的我而言还是有一定的难度,但是当我再一次仔细研究后,我发现了其中的简便之处,最终得以将程序完成。

最后,便是JavaFX的运用,之前从未运用过,导致上手有些许困难,最终界面做得并非十分完整。

 

四、 改进建议

1、 电信计费

第一次作业完成得十分不理想,未按照所给类图进行设计,可以后期继续改进。正则表达式将用户输入类型限定得过于刻板,可以根据题目要求适当将正则表达式变得宽松一些,对于时间输入格式的检验可以用data类进行验证可更加准确。

 

2、 农夫过河

这一个实验的JavaFX的界面做得很不好,我可以在原有基础上插入图画使界面变得生动有趣,而且过河的画面也可做成动态的,如此也会增加该实验的趣味性。当一局游戏结束后还可增加一个选项,使游戏重新开始,增加此功能可以使用户体验更加完整。

 

 五、 总结

这两次的题目不仅考察了我们的数学思维,有利于我们总多方面认真思考问题,还由浅入深地考察了继承、多态以及接口的相关知识。这些知识点作为Java中最基本也是较为难懂的部分,十分值得我们进行深入学习。还有JavaFX也有极大作用,亦十分值得我们认真学习。通过这两次的题目,我知道了自己知识中的盲点在何处,明确了今后的学习方向,受益匪浅。

标签:10,过河,知识点,通话记录,16,用户,BLOG,计费,本题
来源: https://www.cnblogs.com/zhongxia10/p/16385281.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有