}
return rs; }
//数据库更新操作
public int executeUpdate(String sql) { int result = 0; try {
conn = getConnection();
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); result = stmt.executeUpdate(sql); }
catch (SQLException ex) { result = 0; } try {
stmt.close(); }
catch (SQLException ex1) { }
return result; }
public int executeUpdate_id(String sql) { int result = 0; try {
conn = getConnection();
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); result = stmt.executeUpdate(sql);
String ID = \ rs = stmt.executeQuery(ID); if (rs.next()) {
int autoID = rs.getInt(\ result = autoID; } }
catch (SQLException ex) { result = 0; }
return result; }
//关闭数据库的连接 public void close() { try {
if (rs != null) { rs.close();
} }
catch (Exception e) {
e.printStackTrace(System.err); } try {
if (stmt != null) { stmt.close(); } }
catch (Exception e) {
e.printStackTrace(System.err); } try {
if (conn != null) { conn.close(); } }
catch (Exception e) {
e.printStackTrace(System.err); } } }
3.3 网上书店的详细设计与实现
1.系统设计特点
(1)页面模块化
本系统在界面设计上采用了模块化的思想,把很多页面共有部分单独集成一个模块,例如页面的头、尾等,在开发系统时,遇到这些相同的页面部分就不需要重复编写,而只要在相应位置上加上<%@include file=\即可,大大提高了开发效率。
(2)三层结构设计
本系统采用三层结构设计,即程序逻辑结构分为用户界面层、业务逻辑层和数据存储层。由于网上书店系统的功能较强,相应的代码设计比较复杂,JSP 网页文本也会变得庞大,需要大量的嵌入 Java 代码和 HTML语句,其中,Java 代码为逻辑代码,即这些代码用来完成所需要的功能。嵌入 Java 代码、HTML 语句、JavaScript 语句,使编写和维护 JSP 网页变得很困难。使用 JavaBean 可以很好地解决这一问题。将 JSP 和 JavaBean结合起来,业务逻辑处理层采用 JavaBean 实现,然后在 JSP 网页中调用,而 JSP 文本着重是网页界面设计,这会使 JSP 网页变得清晰,可以节省软件开发时间,系统的安全性、可维护性、重用性和可扩展性都大大提高。
(3)面向对象程序设计
在本系统中将图书、用户、订单等都封装成相应的类,同时每个类又都有与其对应的操作类,从而再次提高了对数据库操作的安全性和程序的可扩展性。
(4)人性化设计
本系统导航清晰,操作方便、简单,不管用户位于本“书店”的任何地方,都不会迷路。
2.类的设计
在本系统中,为了实现前台显示和业务逻辑的分离,使系统更加健壮和灵活,将网上书店中的实体都封装在类中,这些类分别是图书类、图书分类类、订单类、订单明细类、用户类、购物车类。根据实体类建立了相应的管理类,实现对实体的管理操作,这些类分别是图书管理类、图书分类管理类、用户管理类、订单和购物车管理类、登录管理类。
(1)图书类的设计
图书类是对图书实体的抽象,它包含了图书实体的所有属性及图书对象的初始化构造的方法。其部分定义如下:
package commerce; public class goods { private long Id; //序列号
private String GoodsName; //书名 ??
//图书实体的其它属性 public book() { Id = 0;
GoodsName = \?? }
public void setId(long newId) {
this.Id = newId; }
public long getId() {
return Id; } ??
//用同样方法设置和获得实体的其他属性值。 }
(2)图书管理类的设计
由于图书实体的存在,需要对图书进行查询、添加等管理操作,为了使用上的方便,将这些方法封装到图书管理类中。 该类的主要方法如下:
book_search( ):完成图书查询 delete( ):负责图书删除 insert( ):负责图书的添加 update( ):负责图书的修改
(3)购物车类的设计
这个类是对购物车实体的抽象,它包含了购物车实体的所有属性及购物车对象的初始化构造方法。主要实现订单和购物车管理。其主要方法如下: addnew( ):负责向购物车中添加图书。
modishopernum( ):负责修改购物车中图书的购买数量。 delshoper( ):负责删除购物车中图书。
shopperwrite( ):负责将购物车数据写入订单和订单明细表。 deleteorder( ):负责删除订单。 searchallorder( ):负责查询订单。
update( ):当用户付款后,负责更新订单明细表中信息。
(4)用户管理类的设计
该类主要实现用户管理。其主要方法如下: add( ):负责添加用户。
delete( ):负责删除指定 ID 的用户。 update( ):负责用户资料的修改。
getalluser( ):负责取出书店的所有用户信息。 getuserinfo( ):负责取得指定用户的详细信息 其他实体类的定义与图书类定义相似。
3.前台用户页面设计
(1)主页面 index.jsp 的设计
主页文件名是 index.jsp,页面主要的 JSP 代码如下: <%@include file=\
|