第三次习题集总结

OO第三次作业总结

在第三次的总体作业的当中主要就是对于Java进阶性的学习总结,对于接触Java语言由于段时间的我们来水,更好的锻炼我们的编程能力,是我们的编程能力大有提升,所作的题目的难度也更加大,使用的知识也是更加的后面知识也是越来越有趣。

在本次作业中,主要事几个较为具有代表性的练习题目,更加的较为有效的训练我们的掌握类的继承、多态性使用方法以及接口的应用.对于继承,多态,接口时未来在开发中最为常用的开发手段,这时代码项目跑起来很重要的编程基础。

在这次是要涉及到习题7的两个卡片游戏,这两个游戏看上去十分相似,但在具体的细节处十分有讲究,细节决定成败,相比之后之后的第二个卡片游戏显然时更加的完美的,编程的风范也是更加的研究,代码的之间的耦合度简单,扩张能力变强,符合开闭原则

而在题目集8,和题目集9中就涉及到对于银行系统中的atm取款存款查询余额这一项目进行了改进。设计一个atm系统,着很好的更加的使封装继承多态的使用更加尤为的突出中重点。

主要只是点有:到了这里不仅是有前面所学的知识使用,对于java面向对象中三大特点:封装、继承、多态的使用,这是非常重要的一点。因为再将来的开发当中就是围绕这三个特别的重要的知识无限的使用。练习类的构造方法、方法的调用、参数传递、对象的构造与使用、练习循环结构、控制结构、练习数据的输入与输出;学习编写结构清晰、逻辑正确、功能完善的java代码、对于java当中的基础语法知识点进行错误探查,从而达到掌握好知识的水平

 本次作业分为以下部分,三次作业实现介绍(包括调度方法), 总结作业。

三次作业的实现

 

题目集7:

习题7-1 图形卡片排序游戏 (40 分)

题目详细:

 

 

 

 

        知识点:这一道题目主要使用的知识就是对于大量的集合数据信息进行处理,而这一点再未来开发中也是极为重要的,原因:不管是在现实社会中还是再任何地方都是具有大量数据的,而且基本是类型的数据处理,在不同的输入数据的形式,就有不同的方式区队数据进行处理,而在对数据进行处理的时候就要知道这些数据是代表什么意思,是以什么形式存在是以什么反射光hi进行储存,数据之间有什么联系,有什么规律。在第一道题目中,就体现了这一点,需要使用集合来对域数据的分门别类进行存储,在整理完数据之后就要进行特定的数据处理,处理之后要进特定的形式输出。主要设计到:集合对数据的整理储存的应用、条件语句的判断。

   详细分析题解:本题是用户输入何种图形卡片已经图片对应的参数信息,而我们就要对于数据的整理与处理,然后输出对应的结果返回给用户,在整理数据的时候要分门别类的整理对应的数据,处理数据的时候要按照不同卡牌的形态来处理数据。

踩坑心得:本次对于数据的整理中对于数据的分门别类没有使用很好的容器进行整理,导致之后的对于结果的运算结构有着很大的偏差,而在这里之后使用到了集合的储存就大大的方便了数据的整理处理,分门别类。

改进建议:在对于题目之前要分析号编码的过程,在具体的实践中要整理好自己要涉及的知识点,使用更加便利进行编码,在编码中要设计号数据的储存方式。

运行结果:

输入:

 

输出:

 

输入:

 

输出:

 

 

输入:

输出:

 

习题7-2 图形卡片分组游戏 (60 分)

题目详细:

           知识点:这里与上面的分析基本一致,毕竟是统一到题目。

           题目详细分析:同上,主要进行改进的地方,就是对于数据输出的处理有着不一样的形式。对于数据的处理们这里运用到了在集合中排序,也就是说对于数据的处理有着并不一样的形式,这里使用到了比较器的办法,去处理数据,这个是知识点很重要,对于之后学习数据结构与算法对于数据的处理会常用到。

运行结果:

输入:

 

输出:

 

输入:

 

输出:

 

输入:

输出:

 

输入:

 

输出

 

 

 

 

习题8:ATM机类结构设计(一) (100 分)题目详细:

 

 

 

 

题目详细分析:本题中就详细的模拟了在银行的atm机器的取款的过程,对于用户需要持有合法的银行卡号与对应的密码方可在atm上进行取款,本题中为涉及到比较复杂的情况在,仅仅是设计一个程序完成在现有的银行系统中合法用户持有合法的证件号、密码方可以在本银行中进行取款的、存款、查询余额的操作,那么这样就简单了,在本次题目中就要很好的对于银行这个取款操作系统进行类设计了,将功能去确定好了之后就要进行详细的设计。

   首先:确定设计的类,银行类、atm机器类、账户类、。并且atm类继承了银行是银行的一个子类,详细的类设计在这里就不多说明,每个人有每个人的风格对于类设计的形式有着不同的见解,但是都是满足一定的模式进行设计,大同小异。

   其次:在类设计完之后就要确认类中有什么属性,有什么方法来完成对应的功能,各种的方分模块的设计完成就要想想,在个个方法之间要如何进行调度来完成整个功能,模拟出atm取款的全部过程。

   最后就是测似:先准备好数据,所有的用户信息应该是存储在对应的银行当中的,如果设计到了银联,那么所有的用户信息应该在银联中生成,在银联当中统一调度,在这里就没有设计,而在第二类atm题目当中就满足了这个设计,之后:用户在atm机器之前输入自己的银行卡号与密码进行登入验证的操作,成功之后就可以做出相关的操作(取款、存款、查询余额)的操作,而在这里就有不同的行为方式【这里就设计到了具体的类设计、方法规范的问题】,在这里我进行设计的是,所有的功能都归于银行系统,atm机器上只是一个简单的操作页面,具体是在银行系统的后台就进行数据的调度与修改,其实这里如果在atm机器上直接进行相应的数据调用也是关系的【这里主要考虑到不同的设计方式有不同的操作行为】,处理数据结束返回用户所需要的信息与结果。

踩坑心得:在这里用户输入的数据是很多的,一次进行多次的操作,但实际上是分开来的,一次操作结束后再进行第二次的操作,但这里用户输入的信息是很复杂的,所以这里就要对于数据进进行前期的处理,而我在这里就是用到了集合来分开用户来进行操作,将数据分割成每一个用户,然后讲这些数据封装成一个用户。然后对于集合是采用泛型的方式来完成储存用户,然后再遍历集合对每一个用户进行功能的操作与完成。再再刚开始没有想到要如何将这些大批量的数据进行处理,之后想到了最常用处理数据存储的手段,集合就是非长不错的形式,对于数据结构的理解更加的好用,使用不同的数据存储形式来对对于数据进行不同的处理。

改进建议:类设计其实可以更加的完整合理一点,但是由于经验尚浅所以

 

运行结果:

输入:

 

输出:

 

输入:

 

输出:

 

 

 

输入:

 

输出:

 

 

 

习题9:ATM机类结构设计(二) (100 分)

题目详细:

输入格式:

每一行输入一次业务操作,可以输入多行,最终以字符#终止。具体每种业务操作输入格式如下:

  • 取款功能输入数据格式: 卡号 密码 ATM机编号 金额(由一个或多个空格分隔)
  • 查询余额功能输入数据格式: 卡号

输出格式:

①输入错误处理

  • 如果输入卡号不存在,则输出Sorry,this card does not exist.
  • 如果输入ATM机编号不存在,则输出Sorry,the ATM's id is wrong.
  • 如果输入银行卡密码错误,则输出Sorry,your password is wrong.
  • 如果输入取款金额大于账户余额,则输出Sorry,your account balance is insufficient.

②取款业务输出

输出共两行,格式分别为:

业务:取款 [用户姓名][银行名称][ATM编号]上取款¥[金额]

当前余额为¥[金额]

其中,[]说明括起来的部分为输出属性或变量,金额均保留两位小数。

③查询余额业务输出

业务:查询余额 ¥[金额]

金额保留两位小数。

 

 

 

题目详细分析:本题中就详细的模拟了在银行的atm机器的取款的过程,对于用户需要持有合法的银行卡号与对应的密码方可在atm上进行取款,本题中为涉及到比较复杂的情况在,仅仅是设计一个程序完成在现有的银行系统中合法用户持有合法的证件号、密码方可以在本银行中进行取款的、存款、查询余额的操作,那么这样就简单了,在本次题目中就要很好的对于银行这个取款操作系统进行类设计了,将功能去确定好了之后就要进行详细的设计。再第二个实验中新增加了功能,更加完善了银行系统的取钱操作,对于不同银行之间是由区别的,增加了跨行取款的问题,以及信用卡透支的问题,那么这里就要对于方法判断的条件进行修改了,而这里对了实现检测到是不是跨行的操作就提供了银联类,有着更加完备的信息系统,进行条件判断也有不同的方式,检测用户是否存在,检测用户当前选择的atm机器是不是本银行的,检测用户是不是本银行的用户们提供对应把不同的取款规则,判断用户是什么卡类型,然后提供不同的取款规则。

 

    最后就是测似:先准备好数据,所有的用户信息应该是存储在对应的银行当中的,如果设计到了银联,那么所有的用户信息应该在银联中生成,在银联当中统一调度,在这里就没有设计,而在第二类atm题目当中就满足了这个设计,之后:用户在atm机器之前输入自己的银行卡号与密码进行登入验证的操作,成功之后就可以做出相关的操作(取款、存款、查询余额)的操作,而在这里就有不同的行为方式【这里就设计到了具体的类设计、方法规范的问题】,在这里我进行设计的是,所有的功能都归于银行系统,atm机器上只是一个简单的操作页面,具体是在银行系统的后台就进行数据的调度与修改,其实这里如果在atm机器上直接进行相应的数据调用也是关系的【这里主要考虑到不同的设计方式有不同的操作行为】,处理数据结束返回用户所需要的信息与结果。

踩坑心得:本次在修改上一次地方法时候加上了新的类,来提供更加完备地操作系统。用户根据自己的卡信息在不同地银行都可以进行相关地操作,但这里对于我们要判断的条件就更加的多了,出游不同银行的卡在不同的银行进行取款操作有着不同的跨行手续费用的问题,以及对于信用卡用户在透支的条件下又有着不一样的取款手续费用的问题,所以这里就又不同的规则所以加上的条件语句就很多,在这里我就根据不同的条件下的情况分门别类的整理用户类型与取款规则,然后在次调用不同的方法进行相应的取款服务,而并不是放在一个方法中进行一次性的取款操作,那样就会有很多的条件判断语句,而且这样的话对于编码的过程有着很严重的影响,耦合度就很高,在将来增加业务就需要修改很多的代码,代码的连动性就很高。

改进建议:使用开闭原则,增加方法,使用方法重载的机制,已经接口的调用,分好情况根据不同的类型来分配调用方法来完成功能。

运行结果:

输入:

 

输出:

 

 

输入:

 

输出:

 

 

 

 

输入:

 

输出:

 

 

输入:

 

输出:

 

 

 

 

 

posted @ 2021-06-17 15:23  小晨Yu呀!  阅读(57)  评论(0)    收藏  举报