表3-7 订单信息表(My_Order)
字段名 OrderID memberID pay carry orderDate enforce description 字段类型 bigint Varchar(20) Varchar(20) Varchar(20) datetime int Varchar(200) 可否为空 Not Null Not Null Not Null Not Null Not Null Not Null Null 解释 订单ID 订单下达者(即:会员;外键) 付款方式 送货方式 订单生成日期 执行状态(0:未执行;1:已执行。默认值:0) 备注信息 7. 订单详细信息数据表(My_Order_Details):该表中存放在系统中每个订单对应的商品及所有者等信息,该表字段及其类型定义如表3-8所示。
表3-8 订单详细信息表(My_Order_Details)
字段名 ID orderID goodsID price number 字段类型 bigint bigint bigint float int 可否为空 Not Null Not Null Not Null Not Null Not Null 解释 订单详细信息ID 所属的订单ID(外键) 对应的商品ID(外键) 对应的商品单价 商品数量 9. 新闻信息数据表(My_BBS):该表中存放在系统销售模块中动态新闻的所有信息,该表字段及其类型定义如表3-10所示。
表3-10 新闻信息表(My_BBS)
字段名 ID title content INTime 字段类型 int Varchar(100) Varchar(4000) datetime 可否为空 Not Null Not Null Not Null Not Null 解释 新闻信息ID 新闻标题 新闻内容 新闻录入时间(默认值为当前时间) 第17 页
第4章 系统实现
总体设计阶段完成了软件的结构设计,划分了模块,并规定了各个模块的功能及他们之间的联系。在此之后,按软件开发工程化的观点,应进入系统的详细设计阶段,即系统实现。该阶段的根本目标是确定应该怎样实现所要求的系统,给出软件模块结构中各个模块的内部过程描述。本章将分模块对系统的实现给予介绍。
4.1 系统公共类的实现
本节介绍系统使用的公共类,如数据库访问通用类(用于返回数据集、
对象、受影响行数等)、用于完成购物功能的类等。编写公共类可以在其他页面中直接调用公共类的方法、属性,避免重复代码的编写,有利于系统代码的维护和日后系统的升级。 4.1.1 数据库操作类的实现
数据库操作类用于根据系统功能的要求返回一个数据集、一个object
对象(即:返回首行首列)、受影响行数(适合于对数据库的增删改操作)、PreparedStatement等。实现这些功能的是四个静态函数,其中每个静态函数又根据是否传入参数进行了重载。由于它们都是静态函数,而静态函数成员不能作用于具体的实例,所以在调用这些方法的时候可以直接用类名加函数名即可。下面仅列出返回数据集方法的实现算法,其他方法的实现逻辑大致相同:
第18 页
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\
第19 页
}
// 预编译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) {
第20 页
// 在控制台将SQLException打印出来方便调试
ex.printStackTrace();
} finally { // 在完成整段代码的工作后必须将JDBC连接关闭 try { if (ps != null) { ps.close(); con.close();
}
// 注意这里还要关闭ResultSet的接口变量 if (rs != null) { rs.close();
}
} catch (SQLException e) { e.printStackTrace();
throw
RuntimeException(\ }
}
// 返回list
第21 页
new