Blog(3)
作者:互联网
一、前言:
随着学期尾声的不断接近,作业的难度也逐渐回落,但电信收费系统的难度有点让人无从下手,感觉java的残酷在这个系列题上尽数体现了。最近的几次作业,所涉及的知识点仍然包含正则表达式、继承与多态还有抽象类与接口、集合框架等等。从题量上来说不是很大,每次以两三道为主,但是难度比较大。有时候花几个小时做不出一道题目。
1.PTA题目集
电信系统涉及到了继承、多态、抽象类、集合框架等知识点,较为分散,题量少难度大,此次blog主要分析。
题目集8第一题移动业务资费难度较大,因为题目给出的类图是分开的,要吃透题目给出的类图,掌握类与类之间的所有关系。其中还包括许多的抽象类,因此编码所需时间很长。
题目集9中第一题关于移动业务资费难度较大,加入了手机套餐,还需要考虑手机的所在地和手机的接听收费,计费规则需要添加很多,编码所需时间较长。
题目集10中第一题短信计费难度小了很多,因为本题只需考虑短信的计费一个问题,较前两题简单,但正则表达式很磨人,需要一些课外知识。
2.农夫过河
实验中还需要用到List和Map,这让我再次熟悉了List与Map相关类的使用方法,同时也对接口的使用有了更加深刻的了解,题目本身难度适中,但也需要花一定心思,通过指导书提供的类图编写代码让我收获很多。
3.期末考试
两题难度循序渐进,知识点考察囊括抽象类与接口、集合框架等,代码之间可以层层迭代,难易适中。
二、设计与分析:
电信计费:
实现南昌市电信分公司的计费程序,假设该公司针对手机和座机用户分别采取了两种计费方案,分别如下:
1、针对市内座机用户采用的计费方式(与电信计费系列1内容相同):
月租20元,接电话免费,市内拨打电话0.1元/分钟,省内长途0.3元/分钟,国内长途拨打0.6元/分钟。不足一分钟按一分钟计。
假设本市的区号:0791,江西省内各地市区号包括:0790~0799以及0701。
2、针对手机用户采用实时计费方式:
月租15元,市内省内接电话均免费,市内拨打市内电话0.1元/分钟,市内拨打省内电话0.2元/分钟,市内拨打省外电话0.3元/分钟,省内漫游打电话0.3元/分钟,省外漫游接听0.3元/分钟,省外漫游拨打0.6元/分钟;
注:被叫电话属于市内、省内还是国内由被叫电话的接听地点区号决定,比如以下案例中,南昌市手机用户13307912264在区号为020的广州接听了电话,主叫号码应被计算为拨打了一个省外长途,同时,手机用户13307912264也要被计算省外接听漫游费:
u-13307912264 1
t-079186330022 13307912264 020 2022.1.3 10:00:25 2022.1.3 10:05:11
输入:
输入信息包括两种类型
1、逐行输入南昌市用户开户的信息,每行一个用户,含手机和座机用户
格式:u-号码 计费类型 (计费类型包括:0-座机 1-手机实时计费 2-手机A套餐)
例如:u-079186300001 0
座机号码由区号和电话号码拼接而成,电话号码包含7-8位数字,区号最高位是0。
手机号码由11位数字构成,最高位是1。
本题在电信计费系列1基础上增加类型1-手机实时计费。
手机设置0或者座机设置成1,此种错误可不做判断。
2、逐行输入本月某些用户的通讯信息,通讯信息格式:
座机呼叫座机:t-主叫号码 接听号码 起始时间 结束时间
t-079186330022 058686330022 2022.1.3 10:00:25 2022.1.3 10:05:11
以上四项内容之间以一个英文空格分隔,
时间必须符合"yyyy.MM.dd HH:mm:ss"格式。提示:使用SimpleDateFormat类。
输入格式增加手机接打电话以及收发短信的格式,手机接打电话的信息除了号码之外需要额外记录拨打/接听的地点的区号,比如:
座机打手机:
t-主叫号码 接听号码 接听地点区号 起始时间 结束时间
t-079186330022 13305862264 020 2022.1.3 10:00:25 2022.1.3 10:05:11
手机互打:
t-主叫号码 拨号地点 接听号码 接听地点区号 起始时间 结束时间
t-18907910010 0791 13305862264 0371 2022.1.3 10:00:25 2022.1.3 10:05:11
注意:以上两类信息,先输入所有开户信息,再输入所有通讯信息,最后一行以“end”结束。
输出:
根据输入的详细通讯信息,计算所有已开户的用户的当月费用(精确到小数点后2位,单位元)。假设每个用户初始余额是100元。
每条通讯、短信信息均单独计费后累加,不是将所有信息累计后统一计费。
格式:号码+英文空格符+总的话费+英文空格符+余额
每个用户一行,用户之间按号码字符从小到大排序。
类图:
解题心得:
首先进行开户:利用正则表达式匹配正确字符串,然后按空格分开并存入数组中再将分别截取座机号码进行开户,存入treeMap中。其次解析电话的拨打字符串:先按空格分开并存入数组,截取出区号用于判断座机地理位置,时间,借助于计算事件的公式计算差值即为通话时间。最后存入callRecord。进行计费主要用到同城与同省、同国的计费规则算出calcost,固定话费100-calcost-月租就是最后所剩的话费。
- 农夫过河
1、 请修改实验四农夫过河游戏的代码,将用户界面改为图形界面,界面效果自行设计。
2、 请画出修改后的类图,并说明在界面中使用了哪些技巧以达到较好的界面效果。
解题心得:
这次只有一个任务:给之前的代码框架设计图形界面,看起来简单但实际上很难。通过这次实验,我了解了JavaFX的基本原理和基本组件;能够熟练应用JavaFX组件进行界面设计,学习和掌握了Java的事件驱动机制、lambda表达式和shape形状类的使用,大大锻炼巩固了我们的编码知识。
三、踩坑心得:
问题:写代码拖沓,等到最后一天才完成全部代码,也不在过程中进行调试,惨死于ddl前夕
总结:尽量时不时的进行调试改错,不等到代码完成再进行调试(可能在代码完成后ddl已经过了或自己思路已经乱了),这样可以减少惨死ddl和不知道错在哪里、怎么改错的情况,提高编码效率。
四、 改进建议:
我认为这几次作业的一个坑点就是需要严格通过类图去设计方法,好好运用继承的特点,减少重复的代码,提高代码的效率,在后期维护或者说修改代码的时候也可以方便很多。然后在类多了以后要清楚各个类的对象是否通用,不然会出错,还有这个成员变量是否通用,要清楚父类与子类的关系。分析题目时先思考有哪些需要构建的类和对象,再分析这些类和对象应该具有的属性和方法,最后分析类和类之间的关系。
五、总结:
1.在这几次题目集中加深了对于正则表达式的运用和理解,明白了自己对于正则表达式的运用还不够熟练,字符串一复杂起来就不知道该如何运用正则表达式进行处理,在正则表达式的运用上还需要加强学习。
2.理解了Java中的继承和多态关系,理解了多态在面向对象中的优点。
3.学习了Java中子类如何重写父类的方法,以及为什么子类要重写父类的方法。
4.理解了多态性,以及多态和方法重写的意义。
5.对于类之间的聚合关系理解还不足,在后续的学习中还需要加强对于类的聚合关系的理解。
6.对题目分工要求必须明确,各个类实现各个相应的功能,使代码可读性增强,对继承与多态的理解尚且不够,还需努力.
经过这三周的学习,我基本实现了对Java这门语言的深入认识。基本掌握了数据类型种类与字符串类中的各种方法,认识到面向对象的语言自然必须掌握类与对象的关系。自学了正则表达式用于精确处理数据(虽然很烂)。但当像电信计费一样需求多、类图繁复、方法繁多的题目时,很难顾及到每一个层面,难以沉着对待,冷静分析数据。
标签:接听,题目,10,座机,Blog,计费,2022.1 来源: https://www.cnblogs.com/21201216lej/p/16387638.html