目录

一、项目结构总览

二、使用分层模式的好处

1. 首先,谈一下什么是三层架构?

2. 这种三层结构有什么优势呢?

三、各层功能实现分析汇总

1.View层

2.Main层

3.Dao层


一、项目结构总览

二、使用分层模式的好处

1. 首先,谈一下什么是三层架构?

所谓的三层开发就是将整个业务应用划分为表示层-业务逻辑层―数据访问层-数据库等,有的还要细一些,明确地将客户端的表示层、业务逻辑访问、和数据访问及数据库访问划分出来,十分有利于系统的开发,维护、部署和扩展。

软件要分层,其实总结一句话,是为了实现“高内聚、低耦合”。采用“分而治之”的思想,把问题划分开来各个解决,易于控制,易于延展,易于分配资源。

2. 这种三层结构有什么优势呢?

①通过将整个系统分为不同的逻辑块,大大降低了应用系统开发和维护的成本。 

三层结构将表示部分和业务逻辑部分按照客户层和应用服务器相分离,客户端和应用服务器、应用服务器和数据库服务器之间的通信以及异构平台之间的数据交换等都可以通过中间件或者相关程序来实

现。当数据库或者应用服务器的业务逻辑改变时,客户端并不需要改变,反之亦然,从而大大提高了系统模块的复用性,缩短了开发周期,降低了维护费用。

②将数据访问和逻辑操作都集中到组件中,增强了系统的复用性。 

如:将数据访问集中到数据访问层的组件中,从而减少了应用程序中的重复代码,每个需要访问数据库、表的窗体都使用相同的组件。

如:一些共性的逻辑操作都集中封装在逻辑层的组件中,每一个使用该方法的操作,可以共享来访问该组件。

③系统的扩展性大大增强。 

模块化使得系统很容易在纵向和水平两个方向拓展:一方面可以将系统升级为更大、更有力的平台,同时也可以适当增加规模来增强系统的网络应用。由于摆脱了系统同构性的限制,使得分布数据处理成

为可能。在扩充或修改功能时,基本不会破坏原有结构的稳定性。

三层结构在营造企业竞争优势中的作用主要体现在模块化设计使得用户在现有结构的基础上实现了系统扩展,从而提高企业信息化的速度和业务水平;同时三层结构中中间件的出现使得用户可以直接从市

场上选择合适的产品来构建系统,大大降低了开发周期和开发费用。

但分层结构也有缺点也不是越多越好,那样管理很多层会比较麻烦,运行效率可能比较低。所以,一个具备良好层次结构的系统,其层的数目要恰到好处才行。

三、各层功能实现分析汇总

1.View层

Views 视图层类
void welcome() 输出欢迎信息
void bye() 输出再见信息
int menu()
  • 显示菜单
  • 用户选择身份(1-快递员/2-普通用户/0-退出)
  • 返回选择结果
int cMenu()
  • 显示快递员菜单
  • 快递员输入要进行的操作序号(1快递录入 2快递删除 3快递修改 4查看所有快递 0退出)
  • 返回选择结果
int uMenu()
  • 显示普通用户菜单
  • 普通用户输入取件码
  • 返回取件码
快递录入流程 View 输入快递信息并返回快递对象 ->Dao存入快递
Express insert()
  • 提示快递员输入要存储的快递基本信息(快递单号,快递公司)
  • 返回要录入的快递对象
快递修改流程
Views findByName输入快递单号->调度逻辑Dao查找快递->View printExpress打印快递信息
->View update输入修改后的快递信息->Dao存入快递柜

我们在视图层要实现的方法有三个:

String findByNumber()
  • 提示用户输入快递单号(很多地方用到所以单独封装方法)
  • 返回输入的快递单号
void printExpress(Express e) 显示快递信息
void update(Express e)
  • 提示快递员输入新的快递信息(快递单号,快递公司)
  • 修改快递e的信息(修改了引用)
快递删除流程
View findByName输入快递单号->调度逻辑Dao查找快递->View printExpress打印快递信息
->View delete询问是否确认删除->Dao从快递柜删除快递

我们在试图层要实现三个方法:(其中前两个已经在上面实现)

int delete()
  • 询问用户是否确认删除
  • 返回用户选择结果
显示全部快递流程 Dao获取全部快递信息(存储在二维数组里)->View遍历显示所有快递信息
void printAll(Express[][] es)() 遍历es显示所有快递信息

2.Main层

Main 逻辑层类
private static Views v = new Views();
private static ExpressDao dao = new ExpressDao();
持有视图层和数据层的操作对象
public static void main(String[] args )
程序入口:

  • 欢迎用户
  • 调用View层显示主界面菜单选项,获取用户在View层的输入
  • 根据输入结果对不同身份用户进行逻辑处理
  • 用户输入结果为退出时再见
private static void cClient()

处理与快递员交互的逻辑:

  1. 显示快递员的菜单(在View层),获取View层返回的选择结果
  2. 快递录入:①View层用户输入快递信息,获取View层返回的快递对象 ②Dao层判断此快递是否被存储过 ③Dao层存储快递,View层显示快递信息
  3. 快递删除:①View层用户输入快递单号 ②Dao层判断快递是否存在 ③View层显示快递信息,询问用户是否确认删除 ④Dao层删除快递 ⑤View层显示操作成功
  4. 快递修改:①View层用户输入快递单号 ②Dao层判断快递是否存在 ③View层显示快递信息,View层用户输入新的快递信息 ④获取View层返回的新的快递对象 ⑤Dao层修改快递信息  ⑥View层打印快递信息
  5. 查看所有数据:①Dao层回去所有快递信息 ②获取从Dao层返回的快递信息,View层显示快递信息
private static void uClient()

处理与普通用户交互的逻辑:

  1. View层获取取件码
  2. 获取从View层返回的取件码,Dao层查询该取件码对应的快递
  3. View层显示快递信息
  4. Dao层删除快递
  5. View层显示操作成功

3.Dao层 

ExpressDao 数据层类
属性  
private Express[][] data = new Express[10][];
用二维数组存储快递,其中下标表示快递柜位置
int size;
保存快递柜的目前快递数目
{for(int i=0;i<10;i++){data[i] = new Express[10];}size = 0;
}
构造快开辟二维空间,以及初始化size变量
Random random
用于生成随机数
方法  
boolean add(Express e)

录入快递:

  • 判断快递柜是否满了
  • 随机生成快递柜子的位置(x,y),不能是已经有快递的柜子
  • 随机生成取件码,不能是已经被分配的取件码
  • 录入快递
  • 返回录入的结果
int randomCode()
  • 生成随机的取件码(6位),不能是已被分配的取件码
  • 返回生成的取件码
Express findByCode(int code)
  • 通过取件码查询快递,遍历二维数组比较即可
  • 返回查询到的快递对象
Express findByNumber(String number)
  • 通过快递单号查询快递,便利二维数组比较即可(用equals比较)
  • 返回查询到的快递对象
void update(Express oldExpress, Express newExpress)
  • 删除原来的快递
  • 加入新的快递
void delete(Express e)
  • 遍历二维数组,比较快递是否相同(equals)
  • 删除找到的快递
 Express[][] findAll()

返回所有快递信息,即返回二维数组引用

Java实现快递管理系统四(View+Main+Dao总结)相关推荐

  1. 基于JAVA校园快递管理系统计算机毕业设计源码+系统+mysql数据库+lw文档+部署

    基于JAVA校园快递管理系统计算机毕业设计源码+系统+mysql数据库+lw文档+部署 基于JAVA校园快递管理系统计算机毕业设计源码+系统+mysql数据库+lw文档+部署 本源码技术栈: 项目架构 ...

  2. [附源码]计算机毕业设计JAVA校园快递管理系统

    [附源码]计算机毕业设计JAVA校园快递管理系统 项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(Inte ...

  3. 基于Java的快递管理系统(LMS)设计与实现 毕业论文+项目源码及数据库文件

    资源下载地址:https://download.csdn.net/download/sheziqiong/85663408 资源下载地址:https://download.csdn.net/downl ...

  4. Java面向对象和MVC模式设计练习——快递管理系统

    快递管理系统 一.任务概述 二.MVC设计模式 1.定义 2.优点 a.低耦合 b.复用性强 三.思路梳理 1.MVC架构设计 a.Controller b.Model c.View 2.流程控制 3 ...

  5. [附源码]JAVA毕业设计校园快递管理系统(系统+LW)

    [附源码]JAVA毕业设计校园快递管理系统(系统+LW) 项目运行 环境项配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Eclispe ...

  6. [附源码]java毕业设计JavaWeb快递管理系统

    项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclis ...

  7. java计算机毕业设计校园快递管理系统源码+数据库+系统+lw文档+mybatis+运行部署

    java计算机毕业设计校园快递管理系统源码+数据库+系统+lw文档+mybatis+运行部署 java计算机毕业设计校园快递管理系统源码+数据库+系统+lw文档+mybatis+运行部署 本源码技术栈 ...

  8. 快递管理系统 java_快递管理基于java物流快递管理系统设计.doc

    快递管理基于java物流快递管理系统设计 快递管理系统 毕业设计论文 题 目 快递管理系统 姓 名 王敏雪 所 属 系 数学与计算机科学 专 业 计算机科学与技术 班 级 07级计科三班 指导教师 张 ...

  9. java计算机毕业设计高校四六级报名管理系统源程序+mysql+系统+lw文档+远程调试

    java计算机毕业设计高校四六级报名管理系统源程序+mysql+系统+lw文档+远程调试 java计算机毕业设计高校四六级报名管理系统源程序+mysql+系统+lw文档+远程调试 本源码技术栈: 项目 ...

最新文章

  1. python基础学习22----协程
  2. a high quality start up vc in uk
  3. 游戏社交崛起!四缺一,开黑吗?
  4. 南通工学院计算机97级,2021年南通理工学院录取结果查询网址入口及录取结果公布时间...
  5. JS 如何快速高效的将数组转换成树形结构
  6. .NET Framework 2.0 组件和非托管代码与交互操作详解(转)
  7. python中僵尸进程
  8. 使用WebStorm将项目部署到IIS
  9. linux sudoers_Linux –将用户添加到Sudoers列表
  10. iOS PNG和JPG的区别
  11. 大野耐一的十条管理训诫|优思学院
  12. idea工具推荐几款好用的代码theme主题颜色
  13. Shell编程(三)grep sed awk文本处理三剑客
  14. SQLServer按照每小时、半小时分组
  15. 演化博弈、复制动态方程与仿真
  16. TypeScript实现小游戏---贪吃蛇(超详细)
  17. dij算法堆优化_迪杰斯特拉算法(Dijkstra) (基础dij+堆优化) BY:优少(示例代码)...
  18. 设计 | 设计师常用的9大软件有哪些?看了顿时有方向了
  19. 电路b-3—06刘晏辰
  20. Quick--组件与基本元素

热门文章

  1. TPS63020DSJR(LDO)NCP51200MNTXG IC REG 稳压器参数
  2. 「自控元件及线路」1.1 直流电动机概述
  3. python:拼多多订单接口api
  4. ssh登陆失败,客户端吐出错误信息,是bash的锅?
  5. houdini之vex 数组
  6. 编写一个C语言程序,输出如下图形(鱼) (5 分)
  7. elment ui table 点击上下移动表格
  8. 对比学习系列(四)---BYOL
  9. 正则表达式-连续多位相同字符判断的正则表达式
  10. HIS系统多少钱?HIS怎么卖?