3.3 数据库设计
系统分析结束后进入设计阶段,抽象地分析数据,理解数据之间的关系,建立E-R模型,然后对数据库进行概念结构设计。由于SQL Server2005能够以极高的效率完成各种数据库查询,并能方便的使用存储过程,同时它的图形化用户界面,使系统管理和数据库管理更加直观、简单。另外由于对Web技术的支持,使用户能够很容易地将数据库中的数据发布到Web页面上。所以本系统采用了SQL Server2005进行数据库的存储管理与维护。 3.3.1 概念结构设计
将需求分析得到的用户需求抽象为信息结构即概念结构设计,这一步是数据库设计的关键。一般采用自底向上的方法进行数据抽象和结构设计。在本系统中涉及到的实体如下所示:
1. 管理员(管理员ID、登录账号、登录密码、权限级别)
2. 会员(会员ID、登录名、真实姓名、登录密码、所在城市、住址、邮政编码、证件号码、证件类型、电话号码、手机号码、邮箱、密码提示问题、问题答案)
3. 商品(商品ID,所属类别、商品名、商品介绍、单位,原价、现价、市场价格、购买次数、库存、图片、输入时间、最近更新时间、是否新品)
4. 订单(订单ID、订单下达者、付款方式、送货方式、订单下达日期、执行状态、订单描述)
5. 新闻(新闻ID、新闻标题、新闻内容、录入时间)
6. 在线调查(投票ID、投票标题、投票起止日期、A答案及其选票数)
7. 订单明细信息(订单详细信息ID,所属的订单号,对应的商品ID,对应商品价格、对应商品数量)
8. 商品大类信息(商品大类ID,商品大类名称)
9. 商品小类信息(商品小类ID,商品小类名称,所属商品大类ID) 在该系统中,各个实体的关系为:一个管理员可同时管理会员、商
第12 页
品、订单、新闻、在线调查、商品类别等多个实体对象,并且它们之间都是一对多的关系;一个会员实体可以下达多条订单信息实体,而一条订单信息又可对应多条订单明细信息实体;一条订单明细包括一个商品实体;一个商品大类信息拥有若干商品小类信息实体,而一个商品小类实体信息又拥有多个商品实体。
第4章 系统实现
总体设计阶段完成了软件的结构设计,划分了模块,并规定了各个模块的功能及他们之间的联系。在此之后,按软件开发工程化的观点,应进入系统的详细设计阶段,即系统实现。该阶段的根本目标是确定应该怎样实现所要求的系统,给出软件模块结构中各个模块的内部过程描述。本章将分模块对系统的实现给予介绍。
4.1 系统公共类的实现
本节介绍系统使用的公共类,如数据库访问通用类(用于返回数据集、
对象、受影响行数等)、用于完成购物功能的类等。编写公共类可以在其他页面中直接调用公共类的方法、属性,避免重复代码的编写,有利于系统代码的维护和日后系统的升级。 4.1.1 数据库操作类的实现
数据库操作类用于根据系统功能的要求返回一个数据集、一个object
对象(即:返回首行首列)、受影响行数(适合于对数据库的增删改操作)、PreparedStatement等。实现这些功能的是四个静态函数,其中每个静态函数又根据是否传入参数进行了重载。由于它们都是静态函数,而静态函数成员不能作用于具体的实例,所以在调用这些方法的时候可以直接用类名加函数名即可。下面仅列出返回数据集方法的实现算法,其他方法的实现逻辑大致相同:
第13 页
public Collection retrieveAllAttackSolution() {
// 提供一个创建预编译SQL 语句的变量 PreparedStatement ps = null;
// 提供一个返回SQL查询结果的ResultSet接口变量 // ResultSet带有游标可以指向返回结果中的某条记录 ResultSet rs = null;
// 实现Collection接口的ArrayList类,创建该类的实例作为本
方法的返回
ArrayList list = new ArrayList(); // SQL
语句“无条件查询
fw_attacksolution
表按
attack_event_code排序”
String sql = \ // JDBC连接 try {
// 取得JDBC连接
// 判断JDBC连接是否被关闭,若关闭则直接抛出一个
IllegalStateException
if (con.isClosed()) {
throw
new
IllegalStateException(\
CONNECTION ISCLOSED\
第14 页
}
// 预编译SQL 语句并执行 ps = con.prepareStatement(sql); rs = ps.executeQuery();
// 当返回结果集中有记录时进行处理 while (rs.next()) {
// 定义AttackSolution类型的变量并实例化
// 在这里不将其放在循环外进行实例化的原因请读者自
己考虑一下
}
// 捕捉SQLException
cloths cloth=new cloths();
cloth.setYf_Smallamge(rs.getString(\cloth.setYf_Id(rs.getInt(\
cloth.setYf_Band(rs.getString(\cloth.setYf_Price(rs.getDouble(\cloth.setYf_Num(rs.getInt(\
cloth.setYf_Describle(rs.getString(\list.add(cloth);
} catch (SQLException ex) {
第15 页
相关推荐: