网上花店系统的设计与实现
2.3.1 系统数据流图分析
数据流图(Data Flow Diagram):简称DFD,是结构化系统分析方法的主要表达工具及用于表示软件模型的一种图示方法,它以图形的方式描绘数据在系统中流动和处理的过程,是描绘信息流和数据从输入移动到输出的过程中所经受的变换。 数据流程图包括:
(1)指明数据存在的数据符号,这些数据符号也可指明该数据所使用的媒体; (2)指明对数据执行的处理符号,这些符号也可指明该处理所用到的机器功能; (3)指明几个处理和(或)数据媒体之间的数据流的流线符号; (4)便于读、写数据流程图的特殊符号。
在本文中,通过对系统基本功能的数据流动进行分析,得到系统的顶层数据流图如图2-1所示:
订单表订单信息用户商品购买网上花店系统商品信息后台管理员 图2-1 系统顶层数据流图
系统第一层数据流图如图2-2所示:
后台管理员用户名或密码错误后台管理员管理员信息管理员信息比对维护商品信息商品信息管理显示后台管理员订单信息管理员表商品信息表订单信息管理显示后台管理员管理员表
图2-2 系统第一层数据流图
5
网上花店系统的设计与实现
2.3.2 系统E-R图
对于一个大型的复杂的数据库系统,为描述和理清数据之间的关系采用E-R图,在此基础上通过规范化得到关系模型。根据对网上花店系统的分析,该系统E-R关系图如图2-3所示:
图2-3 E-R关系图
通过图2-3可以看到:用户信息实体与网友评论实体是一对多的关系,因为一个用户可以发表多条评论,用户信息实体与定单实体也是一对多的关系,一个用户可以下多个定单,当然也可以查询多个产品。定单和定单明细也是一对多的关系。
3 系统设计 3.1 系统基本结构
由于B/S结构具有较好的独立性、可伸缩性和安全性,所以本系统采用B/S进行开发。
利用IIS架构Web服务器,用于连接客户端和数据库服务器。对于客户端发出的需要对数据库进行访问的请求,Web服务器负责客户端与数据库服务器的网络通信,并将相关数据嵌入返回给客户端的Web页面;对于客户端发出的不需要对数据库进行访问的请求,Web服务器将直接处理这些请求,并将最终生成的Web页面发往客户端浏览器。
6
网上花店系统的设计与实现
3.2 系统体系结构设计
对网上花店系统进行分析后,确定该系统分为两个主要功能模块:前台管理模块和后台管理模块。前台管理模块的主要功能包括用户注册,用户登录,购物车,定单查询,花的分类搜索等几个模块。后台主要包括用户账号管理、商品信息管理、商品分类管理,订单管理,系统信息管理等几个部分。系统功能模块图如图3-1所示:
图3-1 系统功能模块图
前台显示的主要模块介绍如下:
(1)商品显示:用于显示本网站所有的花的商品,供用户选择。
(2)购物车:购物车用于保存当前登录用户在该网站保存的商品,以便用户结账。 (3)商品定单:管理员根据用户订单的信息向用户发货。 (4)商品搜索:通过输入用户名,快速查找所需要的产品。
(5)用户注册:该模块提供用户管理个人信息以及为后续操作提供便利入口。 后台管理主要模块介绍如下:
(1)用户管理:对用户的信息进行管理。
(2)商品信息管理:对商品的详细信息提供不定时的维护。 (3)用户管理:包括对用户的管理和管理员自身的信息管理。
(4)订单管理:对用户下的订单进行管理,根据订单信息给用户发货。 (5)系统信息管理:对系统的信息进行维护。
为了更具体说明系统整个实现过程的细节,可以使用流程图作以补充。本文给出了用户完成一次购物交易的整个流程如图3-2所示:
7
网上花店系统的设计与实现
开始 用户登录进入花店主页否浏览商品是是否加入购物车是离开否是否购买是支付
图3-2 网上花店系统购物流程图
3.3 系统数据库设计
数据库设计与实现是系统开发中的一个重要的环节,一个结构合理的数据库可以提高系统的整体的运作效率,同时可以缩短系统的开发时间。 3.3.1 数据库的设计原则
在数据库的设计中,本系统按照以下原则进行设计,以尽量满足系统的要求。 (1)数据库中数据的可操作性
数据库设计时注意保证在整个系统运行和业务操作过程中,数据库都能便于访问和查询,同时还需要考虑到要尽量节省数据库操作时的响应时间,尽可能的提高数据库对程序和业务请求的响应速度。
(2)数据库设计的准确性和完整性
数据库中数据的设计要满足程序设计的要求,对于程序中使用的数据和存储的数据内容,都有严格的数据和准确的数据类型与之对应,同时在数据库设计时要对关键数据进行详细的说明,以方便系统设计人员的开发工作。
(3)数据库冗余性
过多的冗余数据会大大增加数据库的工作量,降低数据库的响应时间和准确性。因此改善数据库性能的一个非常重要的方面就是减少或消除数据库中的冗余信息,要通过
8
网上花店系统的设计与实现
规范化处理使冗余数据减少。 3.3.2 数据库连接设计
为了方便连接数据库,并且对数据库进行很好的管理,在设计数据库是采用了数据库连接池技术,在数据库连接中创建一个链接。创建的数据库连接池封装成一个JavaBean类DBPoolUtil.java,部分代码如下:
private static String dbJdbc = \
private static String dbUser = \private static String dbPwd = \@SuppressWarnings(\private static Class driverClass = null;
private static ObjectPool connectionPool = null;
public DBPoolUtil() {
} /**
* 初始化数据源 */
private static synchronized void initDataSource() {
// 驱动数据源
if (driverClass == null) {
try {
driverClass = Class.forName(\
}
}
} catch (ClassNotFoundException e) { }
e.printStackTrace();
创建完数据库之后,需要在Java中创建一个数据库连接类才能和数据库进行连接,如下所示:
public static Connection getConnection() throws SQLException{ try {
Class.forName(\
} catch (ClassNotFoundException e) { }
DBPoolUtil db= new DBPoolUtil();
9
e.printStackTrace();