ATMdemo项目观后感

原创,申请前不得转载。

整个项目的作用是:

      实现了能根据操作人员的权限不同,ATM系统前后台操作权限不同,前台的操作有开户、存取款、转账和销户,后台的操作有对客户、账户、操作人员的增删改查和账户异动,还能切换操作人员;

项目的整体结构:

     一、对包的整理总结:

          1、放入口方法的类单独放一个包;

          2、后台操作放一类包:

          (1)、xxxmgr.business.ebo的包用来放  xxxEbo  类,具体作用还不明白

          (2)、xxxmgr.ui的包用来放 对应对象的增删改查(在控制台中让人员自己操作) 类

          (3)、xxxmgr.vo的包用来放 这个类的属性、对应的get、set方法、改写的hashcode、equals、toString 方法   类

          3、前台操作放另外两个包:

            (1)、.customeruse.depositmgr  存取款

            (2)、.customeruse.accountmgr  开户、销户

            (3)、.util存放引用类型MySet、创建日期的类

     二、放主方法的App类的思维结构

           1、主方法

               (1)、启动服务

               (2)、显示登录页面

           2、登录方法showLogin()

                (1)、监听;

              (2)、判断登录的账号密码是否输入正确,如果正确,根据权限显示菜单,否则重复输入账号密码;

            3、显示主菜单信息方法showMainMenuInfo(OperModel om)

                根据权限判断对一些信息的输出

            4、显示主菜单方法showMainMenu(OperModel om)

                 (1)、调用showMainMenuInfo(OperModel om)方法

                 (2)、监听switch判断输入走哪一个功能

                 (3)、如果输入的是切换操作人员,清空原来登录人员并登录判断

            5、显示前台目录信息方法showFrontMenuInfo()

                 显示前台有的所有操作的文字输出

            6、显示前台目录方法showFrontMenu(String operId)

               (1)、调用showFrontMenuInfo()方法

               (2)、监听,switch判断输入走哪一个功能    

            7、显示后台目录信息方法showBankMenuInfo()

                 显示后台有的所有操作的文字输出

            8、显示前台目录方法showBankMenu(String operId)

               (1)、调用showBankMenuInfo()方法

               (2)、监听,switch判断输入走哪一个功能

            9、后面账户、客户、操作员都是一样的模式

      操作员的类分析,账户、客户

       三、放OperEbo类的方法和为什么设置这么一个类

             登录、增加、查询、修改的实际方法

       四、放Add类的方法和为什么设置这么一个类

             增加操作员的类,addOper()方法用来输出提示文字,创建对象,调用OperEbo()类的add()方法实际操作增加成员并判断是否增加成功

       五、放Delete类的方法和为什么设置这么一个类

             增加操作员的类,deleteOperr()方法用来输出提示文字,创建对象,调用OperEbo()类的delete()方法实际操作增加成员并判断是否删除成功

       六、放OperListo类的方法和为什么设置这么一个类

             4个方法,放输出表头表尾分别是什么,显示所有元素和根据ID查找元素

             分别使用OperEbo()类中的getAll()方法和getById()方法;

       七、放Update类的方法和为什么设置这么一个类

             输出文字,创建对象,调用OperEbo()类中的update()方法;

       八、放OperModel类的方法和为什么设置这么一个类

            属性、对应的get、set方法、改写的hashcode、equals、toString 方法

       九、是如何划分类的

            对象属性、get、set方法、重写的equals、toString方法划分一个类

            实际的操作方法写一个类存起来

            操作时需要用到的输出、创建的对象、调用到实际方法的写成一个类,类似的方法放到一个包里

 

细化的对每个类的具体理解:

1、OperEbo类

login方法:

输入:用户名和密码

输入:比较是否符合,符合登录成功;否则登陆失败

具体:如果MySet 类集合set中有OperModel类的元素的Id和Psw和传进来的用户名密码相等,则返回true,否则返回false

        set是得到所有的工作人员中心信息,

学习:for-each循环遍历集合的时候,每个元素的位置写的是Object

getById方法:

输入:id号

输入:一个人员OperModel类

功能:判断输入的id在operDB这个MySet中,则把这个成员返回,否则返回空

2、MySet类

其实是一个Object数组

里面有方法:包含方法、增加、删除方法,得到长度,得到所有元素

3、OperModel类

作用:代表了一个人的基本信息

重写了equals、hashcode、toString 方法

重写的equals方法:比较id,工作人员的id是唯一的

重写的hashcode方法返回1:

重写的toString方法:把id、name、等基本内容打印出来

4、ServiceEbo类

作用:一开始启动服务,给工作人员赋初始值,外部不能修改这个类

5、主方法:

    先启动服务,为工作人员赋初始值

    然后要求登录,输入错误的用户名和密码登录失败,否则登录成功,

    登录成功后,把用户名赋值给NowOperId

    展示:有什么功能

    用type用户属性来区分人员可以操作前台或者后台数据

    flag判断输入的是什么操作

    changeOper 判断是否要切换操作人员,但是不懂NowOperId这个字段设置的意义

    后台操作:

    (1):客户资料维护

     客户的行为写在

         cn.banksystem.bankuse.customermgr.ui  这个包里

         (1):新增客户

               CustomerModel 是客户类,包含了客户的姓名、id、生成日期这些信息

               Add类包括一个增加方法,让用户输入用户名和密码,系统自动生成日期,如果客户MySet中没有这个Id,就新增客户

               DateHelper类中的getNowDate()方法用来得到当前日期,返回的是String类型

               java.text 包中有一个SimpleDateFormat 类,

               

 

               类CustomerEbo,有个add方法

               

             

         (2):修改客户

                修改客户原来是修改客户姓名

         (3):删除客户

         (4):查询全部客户

         (5):按ID查询客户

         (6):返回上一级

    (2):帐户资料维护

          

        (1):新增帐户
        (2):修改帐户

               修改账户原来是修改账户的余额
        (3):删除帐户
        (4):查询全部帐户
        (5):按ID查询帐户
        (6):按客户的ID查询帐户
        (7):返回上一级

    (3):帐户异动检查

           输出字样,并停留监听下一次输入

    (4):操作人员维护    

          (1):新增操作人员

                 操作人员的type:1:前后台、切换、退出,相当于最大权限

                 2:后台、切换、退出,相当于dr那样后台数据库操作人员

                 3:前台、切换、退出,相当于xx婷的前台操作人员

                 default:只能切换和退出,相当于登录错误了
          (2):修改操作人员

               

                 修改操作人员,操作人员的姓名、密码、类型都会被修改
          (3):删除操作人员

                 
          (4):查询全部操作人员
          (5):按ID查询操作人员
          (6):返回上一级

    (5):返回上一级

    前台操作:       

          (1):开户

                 开户 会开 客户、账户
          (2):存款

                  存款是找到账户就能存款(不需要填写密码?)
          (3):取款

                   取款只需要填写账户(不需要密码就能取款?)
          (4):转帐

                  
          (5):销户


          (6):返回上一级

可以改进的地方:

对客户的增删改查:

1、修改客户时,如果输入的id是不存在的没有做处理

2、选择功能的时候,如果不在被选择的选项中的时候没有提示报错

3、如果删除的客户编号不存在,也提示删除成功,没有正确提示

4、如果查询的客户编号不存在,没有提示报错,而是返回空的展示信息

对账户的增删改查:

1、账户所属客户需要核实吗?需要客户DB中有这个客户才能增加进去吗?还是说这里的所属客户是独立的,如果是独立的,容易引起歧义,如果不是独立的,客户的DB中没有这个客户也能增加账户,说明有错。

2、删除账户DB中没有的账户时也提示删除成功

3、如果查询的客户编号不存在,没有提示报错,而是返回空的展示信息

账户移动检查

1、账户移动检查的时候输出账户异动检查这个字样,但是没有再次输出让用户再次输入选择的序号

操作人员的增删改查

1、修改操作人员时输入不正确的操作人员编号会造成溢出

2、新增的操作人员所有数值为空的时候也能新增成功(尝试后台操作的时候,姓名编号为空的操作员能有什么权限)

3、操作人员的数据库中有编号和姓名都为空的操作人员,但是按照ID查询的时候没有把空行显示出来

4、按照ID查询的时候,输入不存在的id,也展示信息

前台操作

1、转账功能的时候转入账户如果不存在,没有报错,而是在输入转入金额了以后才出现溢出,转出同理

2、前台的开户操作,会把客户和账户开好了以后存储到customerDB和账户DB中,然后后台操作的时候查询客户和账户是能查询得到

3、销户的操作很有问题:如果销去的是系统中原来并没有的账户,没有报错处理,而是直接溢出

     如果销去的是系统中原来存在的账户,没有任何操作提示,最后我并不知道我是否销户成功了;

4、前台存款的时候,输入不存在的账户,没有提示报错,而是直接溢出;

问题:

1、setNowOperId的作用是什么?开始以为在showMainMenuInfo(OperModel om)判断的时候会用到,但是发现并没有用到

 总结:

     接触一个新的项目时,先运行玩两三遍,先有一个整体而感性的认识,知道这个程序是干什么的,遇到的bug可以记录下来,方便后续再次阅读时维护;

     然后看整体的代码框架,都是怎么封装的,主函数中在做什么,每一个类在做什么,每一个方法在做什么,这样清晰很多。

     

转载于:https://www.cnblogs.com/ailsalin/p/6366346.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值