1.项目设计原则简介

某市食品批发系统概要设计平台融合了主流电商交易平台的特点,同时网上交易系统的的独特性,方便日常食材的交易,提高了其效率。 在整个系统设计的过程中遵循以下的设计原则:

1.1实用性

实用性是系统的主要设计原则,系统设计必须最大可能地满足用户的需求,做到操作方便、界面友好、可即时更新,能适应不同层次用户的需求。

1.2先进性

信息技术发展迅速,系统设计尽可能采用先进的技术标准和技术方
法。

1.3以用户为中心的处理

个性化服务充分体现了这一点,根据用户当前展业重点,配置页面功能布局及展现内容,贴合用户操作。

1.4使用便捷

系统要有设计良好的人机交互界面,即使系统的操作界面简单易用,又能具有较强的适用性,满足不同计算机使用水平的用户使用。

1.5灵活、易维护

本系统采用开放的体系架构,基于开放源代码的技术框架和数据库系统,使用高效率的开源和免费开发工具,具备完整的文档说明。在维护方面,主要考虑两个层面,一是对于开发人员来讲,系统编码容易调整,可适应需求的变化和调整;二是对于系统管理维护人员来说,能够对系统进行便捷的维护和管理。

1.6 安全可靠

选择安全可靠的软硬件运行平台,并在系统设计和实现的时候关注系统的安全控制和执行效率,提供相应的安全防护功能,保证系统具有较高的安全性和可靠性。安全性方面,要考虑系统的安全、数据管理的安全、网络安全。保证用户权限、数据安全和系统的稳定性。

1.7单一职责原则

我们系统在面向对象设计部分采取单一职责原则,其核心思想为:一个类,最好只做一件事,只有一个引起它的变化。单一职责原则可以看做是低耦合、高内聚在面向对象原则上的引申,将职责定义为引起变化的原因,以提高内聚性来减少引起变化的原因。从而最终提高我们系统的可修改性和可维护性。
本概要设计涵盖了体系结构设计、模块设计、数据库设计等。

2.体系结构设计

食品批发系统本着软件开发的设计原则,采用浏览器/服务器(B/S)的体系结构。为了满足系统响应快速、便于操作、易于维护的要求,在软件架构上,采用五层体系结构:表现层、控制层、业务逻辑层、数据持久层和域模型层;在设计实现上,我们采用 MVC 的设计模式:Model 模型层、View 视图层、Controller控制层;在体系架构上,SPM 网络课堂系统选择用 SSH 架构。
SSH是指Struts+Spring+Hibernate的一个集成框架,是目前较流行的一种Web应用程序开源框架。SPM 网络教学平台集成的 SSH 框架的系统从分为五层:表现层、控制层、业务逻辑层、数据持久层和域模型层,以帮助开发人员在短期内搭建结构清晰、可复用性好、维护方便的 Web 应用程序。其中使用 Struts 作为系统的整体基础架构,负责 MVC 的分离,在 Struts 框架的模型部分,控制业务跳转,利用 Hibernate 框架对持久层提供支持,Spring 做管理,管理 Struts 和Hibernate。
具体做法是:用面向对象的分析方法根据需求提出一些模型,将这些模型实现为基本的 Java 对象,然后编写基本的 DAO(Data Access Objects)接口,并给出Hibernate 的 DAO 实现,采用 Hibernate 架构实现的 DAO 类来实现 Java 类与数据库之间的转换和访问,最后由 Spring 做管理,管理 Struts 和 Hibernate。
网络结构图如图3-1所示,用户(用户和信息管理员)可以通过网络登录到网站,进行相应的操作,应用服务器接收到相应操作反映之后对数据库进行相应操作,并返回进行展示。

图2-1 系统分层结构图
系统技术架构统如图2-2所示。

图2-2 系统分层结构图

2.1表现层

结合用户身份判定,用于展示系统的业务信息以及接受用户输入信息。将来自用户的信息发送到对应的业务层进行处理,并接受后台处理的结果,并结合用户身份将其返回到前端进行展示,实现系统与用户的动态交互。

表现层功能包括:

  • 根据用户身份信息进行识别登录,显示不同界面。
  • 根据用户身份信息进行识别实用系统,进行不同的数据和逻辑交互,满足用户需求 。
  • 采用 Struts 标签库以及 JSTL 标签库开发 JSP 页面。
  • 通过页面控件,完成统一风格的页面部署,形成较好的页面风格。
  • 采用多种展现形式,html 页面,excel 等,图片,PDF,视频播放插件等等。
  • 对前端提交数据进行合规性校验,如登入时账号密码长度,类型,格式等等。
  • 将页面请求发送到验证层,并接受验证层返回,将结果在前端展示。
  • 提供过滤器,进行请求预处理。
  • 提供文件上传功能

表现层主要由下面组件构成:

2.1.1 分发器与拦截器组件:

该组件统一处理分发来自页面的请求,通常将所有的请求分发情况都配置到 Struts 的配置文件中。分发器与拦截器包结构见表 2-1。
表 2-1 视图层包结构表

2.2.2 网页视图组件:

该组件根据业务逻辑层的处理数据进行页面的展示。网页视图部分样例表
表 2-2 网页视图部分样例表

2.2 控制层

根据不同的请求触发点,接收从表现层传输的用户请求信息,并将封装好的实体对象发送到对应的业务处理单元,同时接收业务逻辑层处理结果,指定相应的表现层 jsp 页面展现需求数据,实现页面跳转与信息现实。

控制层功能包括:

  • 接收并处理从表现层传入的各种输入以及输出各种异常提示信息或
    处理结果信息。
  • 对于输入的数据进行数据校验,过滤非法数据。
  • 向业务控制层发送处理请求。
  • 接收业务逻辑层请求处理结果。
  • 返回状态符,实现页面跳转。
    控制层主要用下面组件构成:

2.2.1.控制器组件:

执行由分发器发过来的请求。该模块还继承自 Struts2 的ActionSupport 实现了一些扩展,这个扩展提供了一些公用操作,比如获取
Request、Session 对象等操作。所有业务模块的 Action 都可以继承该类。控制层包部分结构见表 2-3。
表 2-3 控制层包部分结构

2.3 业务逻辑层

业务逻辑层为系统的核心层,提供了大量业务服务组件,负责处理控制层发送过来的业务数据,系统总绝大部分业务处理都在该层实现。该层实现了各种逻辑判断,即业务逻辑的封装,实现各种需求功能,并将处理后的数据传输给控制层,再由控制层进行简单处理。如果需要进行数据库操作,则调用数据持久层进行数据库相关操作。
业务逻辑层功能包含:

  • 实现各种业务处理逻辑或处理算法,比如业务信息查询、物流信息查询等等。
  • 向控制层返回处理数据信息。
  • 向持久层发送数据操作的请求,进行对数据信息的增删改查操作。
  • 作为控制层的服务层,提供接口供周边系统调用。

业务逻辑层主要包含下面的组件:
1.业务逻辑处理:负责处理各类业务逻辑的 service 组成,有关页面的跳转可以从 struts 的配置文件中看到,由于系统业务逻辑层的实现类较多,此处列举一些核心的实现类,如表 2-4 所示。

表 2-4 业务逻辑层包部分结构

2.4 数据持久层

在该批发交易平台系统中,数据持久层负责数据的持久操作,例如和数据库交互与数据库进行连接交互。该层抽象和封装了所有对持久化存储介质的访问。数据持久层可以访问任何的数据,除了数据库,还包括缓存存数据等。在该项目框架的搭建中,是通过封装 Hibernate 来访问数据库。

数据持久层包含功能:

  • 对数据库中的用户信息数据进行增、删、改、查操作。
  • 对数据库中的交易信息、物流信息等信息数据自动进行增、删、改、查操作。
  • 实现事务处理,保证数据读写正常。
  • 实现意外错误操作的数据恢复。

数据持久层包结构如表 2-5 所示。
表 2-5 数据持久层部分结构表


2.5 域模型层

在 J2EE 应用中,利用 Hibernate 在域模型基础之上来实现对数据的增、删、改、查。
域模型层包含功能:
为数据库中的表与数据实现一种数据载体,是数据库中表中数据到 Java 对象的一种映射。域模型层见表 3-6。

表 3-6 域模型层列表

2.6 接口设计

内部接口
Spring 接管 Struts2 配置

  1. 在 struts.xml,通过配置 struts.objectFactory 属性,将 struts2 交给 Spring管理,也就是由 Spring 容器来管理 Bean,包括 struts2 的 Action。具体见图2-3。

    图 2-3 struts.xml
    2.在 web.xml,添加配置 applicationContent.xml,需要添加一个标签指明添加 applicationContent.xml 文件,具体见图3-4。(图中显示的是由模式匹配的方式查找符合要求的文件)


图 2-4 web.xml
3.Spring 接管 Hibernate 配置
向 applicationContent.xml 配置文件添加名为 sessionFactory 的 bean,如图 3-5,2-6的信息。


图 2-5 配置Hibernate的sessionFactory

图 2-6 配置Hibernate 的其他信息

3.功能模块设计

3.1 功能模块设计总述

本系统为软件项目管理交易平台,主要包括的模块为两部分:FInS客户端子系统功能模块图、SPM 管理端子系统功能模块图,如图 4-1 所示。其中,图 4-2 是 FInS 客户端子系统功能模块图,图 4-3 是 FInS管理端子系统功能模块图

图 4-1 FInS主要模块图


图 4-2 FInS 客户端子系统功能模块图

图 4-3 FInS管理端子系统功能模块图

3.2 客户端子系统模块

3.2.1 模块 SCM1:静态页面

编号:SCM1
模块名称:静态页面
功能简介:本模块为系统的静态页面模块。
输入:鼠标点击事件
输出:调用的页面

3.2.2 模块 SCM2:系统登录

编号:SCM2
模块名称:系统登录
功能简介:本模块为系统登录模块,即用户登录系统的入口。在此模块中,用户输入自己的用户名和密码,在此用户名为店名或者编号,系统在后台数据库进行查询操作后,返回布尔值,表示该输入是否正确,输入正确则进入系统,错误则对用户进行相应提示。
输入:用户名,密码
输出:用户是否登录成功

3.2.3 模块 SCM3:注册模块

编号:SCM3
模块名称:系统注册
功能简介:本模块为系统注册模块。用户首次进入系统时。可通过本模块进行注册。在此模块中,系统显示注册界面,用户输入相关必要的身份信息,单击确定。若注册成功,系统将以学生学号作为账号,用户设定密码作为密码存入后台数据库。注册完成后,用户可使用注册成功的账号和密码登录系统。
输入:用户名,密码
输出:用户是否注册成功
备注:对于未登录系统的游客用户,系统将自动限制一部分功能的显示

3.2.4 模块 SCM4:交易模块

编号:SCM4
模块名称:交易
功能简介:本模块为交易模块。注册的用户进入系统后。可通过本模块进行交易。在此模块中,系统显示交易的物品、规格和数目,选择后。系统会进行确认是否本人操作,确认后,将显示价格与输入支付手段的界面供客户选择,用选择完成后,将输入交易密码。输入交易密码后,在账户余额不足时,再次弹出支付手段框供用户选择,当密码错误时,提示密码错误,并显示密码框供输入。其他失败情况下,系统会回滚至交易之前的情况,并显示交易失败。若无以上异常,系统将显示交易成功。
输入:鼠标点击事件、交易的物品、交易物品的规格、交易物品数目、支付手段、交易密码
输出:用户是否交易成功
备注:对于未登录系统的游客用户,该模块不可使用

3.2.5 模块 SCM5:物流查询模块

编号:SCM5
模块名称:物流查询
功能简介:本模块为物流查询模块。有订单的用户进入系统后。可通过本模块进行交易。在此模块中,系统显示提示用户输入订单号,输入后,系统将显示订单信息、源地址、目的地址、当前所在的中途点以及目标的到达时间信息。
输入:鼠标点击事件、订单号
输出:订单信息、源地址、目的地址、当前所在的中途点、预定到达时间
4.2.6 模块SCM6:网上审批模块
编号:SCM6
模块名称:网上审批
功能简介:本模块为物流查询模块。用户进入系统后。可通过本模块进行网上审批申请。
输入:鼠标点击事件
输出:跳转至当地工商局的审批申请页面

3.3 管理端子系统模块

3.3.1 模块DAM1:用户管理

编号:DAM1
模块名称:用户管理
功能简介:管理员进入“用户管理”模块
管理员选择查看系统中已经存在的用户信息。系统显示全部用户信息,并提供删除,修改,查询操作。用户选择相应的用户进行删除,修改,并确认操作。系统更新用户列表。用户输入部分关键字,选择查询操作。系统显示所有符合的用户,并提供删除,修改操作。用户选择处理用户注册申请确认的功能。系统显示所有需要进行确认的用户的注册申请,并提供确认和删除操作。用户选择确认操作。系统将该用户的相关信息根据是食品作坊/食品供销商的选择分别加入到食品作坊/食品供销商列表中。用户选择删除操作。系统自动向该用户发送请求失败的邮件。
输入:鼠标点击事件
输出:无

3.3.2 模块DAM2:网上审批

编号:DAM2
模块名称:网上审批
功能简介:管理员设置网上审批快捷通道
管理员在设置用户页面上设置网上审批快捷通道,让用户可以直接通过该路径去到工商局进行审批
输入:鼠标点击事件
输出:无

4.数据库设计

4.1数据库种类及特点

本项目采用了MySQL 8.0.17的数据库。MySQL是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL具有以下几个特性:
(1) MySQL为多种编程语言提供了 API。这些编程语言包括 C、C++、Python、
Java、Perl、PHP、Eiffel、Ruby,.NET和 Tcl 等。
(2) 优化的 SQL查询算法,有效地提高查询速度。
(3) 提供多语言支持,常见的编码如中文的 GB 2312、BIG5,日文的 Shift_JIS
等都可以用作数据表名和数据列名。
(4) 提供 TCP/IP、ODBC 和 JDBC等多种数据库连接途径。
(5) 提供用于管理、检查、优化数据库操作的管理工具。
(6) 支持大型的数据库。可以处理拥有上千万条记录的大型数据库。
(7) MySQL 使用标准的 SQL数据语言形式。

4.2数据库逻辑结构

经过充分的调研和分析,我们将“软件项目管理课程平台”的数据中设计了5个实体,其中包括管理员表、供销商信息表、食品商信息表、物流信息表、食材信息表。针对每个实体,又有其对应的属性。他们之间的关系主要包括以下几项:

  • 管理员表、供销商信息表、食品商信息表、物流信息表是独立存在的,管理员负责管理供销商信息和食品商信息。因此管理员与供销商和食品商是一对多关系。
  • 供销商负责食材加工和销售,任何一类食材可能被多个供销商供应,任一供销商也可以销售多种食材,所以供销商和食材是多对多关系。
  • 食品商只负责购入食材,但是食品商既可以买任意多种食材,每种食材可用于多个食品商,所以食品商和食材是多对多关系。
  • 食品商只负责购入食材,但是食品商从多个供销商处购买,每个供销商可以向多个食品商销售,所以食品商和食材是多对多关系。
  • 一份物流订单可唯一确定供销商和食品商,但是反过来不行,所以物流与供销商、食品商均为一对多关系。
    综上分析,软件项目管理批发平台的实体关系图(概念数据模型)如下图所示。


图 4-1 实体关系图

4.3物理结构设计

根据上面的实体关系,设计数据库表即根据物理数据模型图5-1可知,系统一共应有5张表。

4.3.1 Supplier表

4.3.2 Owner表

4.3.3 Material表

4.3.4 Logistic表

4.3.5 Trade表

系统概要设计阶段2019/10/22软件工程相关推荐

  1. 【每日早报】2019/10/22

    ✦ 荣耀首款5G手机V30将于11月发布,可同时支持NSA和SA ✦ 银联发布全新智能支付产品"刷脸付",采用刷脸+支付口令交易验证方式 ✦ 平头哥宣布开源MCU芯片平台,成国内首 ...

  2. 《惢客创业日记》2019.10.22(周二)5G仅仅是速度快吗?(二)

    昨天,我在日记中分享了5G的第一个特性,就是网速快.并且,也提醒大家不要把思考角度集中下.载视.频或大.片上,而是,从直播的角度来畅想尽可能多的场景.也通过杰伦演唱会和足球比赛直播的例子来增加大家对5 ...

  3. ASP.NET典型三层架构企业级医药行业ERP系统实战(8大模块22个子系统,价值3000万)...

    课程讲师:Tiger     课程分类:.net         适合人群:高级       课时数量:192课时       更新程度:完毕 我这里有一套课程和大家分享,我的qq是205905533 ...

  4. ASP.NET典型三层架构企业级医药行业ERP系统实战(8大模块22个子系统,价值3000万)

    ASP.NET典型三层架构企业级医药行业ERP系统实战(8大模块22个子系统,价值3000万) 课程讲师:Tiger     课程分类:.net         适合人群:高级       课时数量: ...

  5. 【软件设计师10】软件工程

    软件工程 1. 瀑布模型SDLC - 结构化 优点:结构化方法模型,每个阶段分工明确:出现问题可以向上层回溯 缺点:需求阶段难以把控,在项目初期,软件的需求几乎是不明确的,等开发完用户往往再提出问题, ...

  6. 计导 第 10 章 软件工程

    目录 软件生命周期 开发过程 开发模型 瀑布模型 增量模型 分析阶段 面向过程分析 面向对象分析 设计阶段 面向过程设计 面向对象设计 实现阶段 语言选择 软件质量 测试阶段 白盒测试 黑盒测试 文档 ...

  7. java-net-php-python-jspm高校食堂点餐系统演示录像2019计算机毕业设计程序

    java-net-php-python-jspm高校食堂点餐系统演示录像2019计算机毕业设计程序 java-net-php-python-jspm高校食堂点餐系统演示录像2019计算机毕业设计程序 ...

  8. 谷歌首提Android11,谷歌官方首次提及Android 11系统 谷歌推动安卓10.0系统下载

    10月11日消息,谷歌此前全力推动Android 10 的采用,2019年Android开发者峰会将于本月晚些时候正式拉开帷幕.有趣的是, 在会议日程中谷歌官方首次提到了Android 11,谷歌下一 ...

  9. 3、绘制E-R图:数据库概要设计阶段

    需求分析阶段过后,就进入了概要设计阶段. 在概要设计阶段,我们需要和项目团队中的其他成员及客户进行沟通,讨论数据库的设计是否满足客户的业务和数据处理需求. 数据库设计和机械.建筑等行业一样,机械行业需 ...

  10. 野鸡NOI.AC模拟赛【2019.10.26】

    前言 截止至2019.10.2614:222019.10.26\ \ \ \ 14:222019.10.26    14:22 成绩 正题 T1:NOI.AC−T1:NOI.AC-T1:NOI.AC− ...

最新文章

  1. p1164 小A点菜 题解——背包初步
  2. (0079)iOS开发之安全策略之HTTPS(1)
  3. VS调试js学习总结
  4. JAVA SPI机制及SPI机制在Tomcat中的应用
  5. python six库_six库 解决python2的项目如何能够完全迁移到python3
  6. HALCON示例程序autobahn高速公路车道识别程序剖析
  7. random()模块随机函数的用法总结
  8. 【新手入门篇】新浪微博应用开发之Java入门篇
  9. MscTeX警告Package fontspec Warning: Font “Songti SC Light“ does not contain requested(fontspec)的解决
  10. Mac下 javac java 进行编译和运行含有包路径及引入jar包的类
  11. spring boot 事务_Redis 事务在 SpringBoot 中的应用
  12. Mac、移动硬盘中拷贝后文件夹和文件都为灰色解决办法
  13. 时区转换问题java编码,Java UTC ZonedDateTime转换成指定时区时间方法及使用示例代码...
  14. java 逃逸分析_JVM之逃逸分析
  15. work-stealing调度算法
  16. 解决poi导出Excel异常org.openxmlformats.schemas.spreadshe
  17. Docker参数 -i -t 的作用
  18. Centos 7 根目录存储容量调整大小
  19. 《2018区块链技术应用白皮书》完整版查看
  20. python求15的因数_python学习第15期

热门文章

  1. 云服务器怎么安装声音驱动_GPU云服务器如何安装NVIDIA Tesla驱动
  2. 三维引擎导入obj模型全黑总结
  3. XJOI一级二段题解(g++,即C++),也可视作C++算法竞赛教程
  4. react 加粗_css字体如何加粗?
  5. 数据治理之——数据标准体系建设示例
  6. 优化设计-混合惩罚函数法-MATLAB编程
  7. html符号大全 五角星,星星符号_星星符号大全花样符号
  8. 下载网页或者微信公众号中视频的方法详细介绍
  9. 话费充值哪里便宜?这样充帮我省了不少钱,推荐给您
  10. 腾讯 游戏测试体验工程师 一面