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 配置
- 在 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张表。