picture reg_time
int datetime
4 8
yes yes
封面 入库时间
表3.2用户信息表shop_user
字段名 ID username password Names Sex Addr Phone Post
Email Retime RegIpAddr
数据类型 int varchar varchar int varchar varchar varchar varchar
varchar datetime varchar
50 25 25 25 8 20
长度 4 4 100 4 50
允许空 no no yes yes yes yes yes yes yes yes
说明 自动编号,会员编号
用户名 密码 会员级别 名字 地址 电话 邮编 邮箱 注册时间 注册ip
表3.3订单信息表orders
字段名 ID order_id user_id quantity submit_time consignmentTime
totalprice content isPayoff isSale
数据类型 int int int int datetime datetime float varchar int int
8 8 20 11 11 4
4 4 4 8 长度
允许空 yes yes yes yes yes yes yes yes yes yes
说明
自动编号,订单编号
会员编号 图书编号 订购数量 提交订单时间 交货时间 总价 备注 是否付款 是否发货
表3.4 订单列表allorder
字段名 ID orderID BookNo Amount
数据类型 int int int int
长度 4 11 11 11
yes yes yes 允许空
说明
自动编号,卡类型编号
订单号 书号 数量
表3.5 管理员信息表bookadmin
字段名 AdminUser AdminPass
数据类型 varchar varchar
长度 20 50
允许空 yes
说明 管理员用户名 管理员密码
表3.6 图书分类表 bookclass
字段名 ID Classname
数据类型 int varchar
长度 4 30
yes 允许空
说明
自动编号,卡类型编号
图书类别
第四章 详细设计
(一)实现bookshop.run包
1.
login.java
这是一个以客户为中心的交易平台,只有成为了系统的合法用户才能够使用这个系统,因此需要检验每个用户的合法性,管理用户登录的login.java正是要完成这样的功能。
类中定义了个private属性和他们对应的setX()/getX()方法和默认构造函数和execute() getSql() 操作。 private属性分别是:
private String username; private String passwd; private boolean isadmin; private long userid=0; 重要操作:主要介绍execute() execute()操作
功能:从数据库中查询用户信息。
返回值:boolean型,如果取值成功返回true,否则,返回false。
设计思路:获得数据库连接对象Connection 对象,ResultSet对象和Statement对象 ――》调用getSql()方法获得sql语句――》执行sql语句。
程序主干部分代码:
public boolean execute() throws Exception { ………
try{ con=DataBase.getConnection();
//登录用户名 //登录密码 //是否管理员登录 //用户ID号
stmt=con.createStatement(); rs = stmt.executeQuery(getSql()); }catch(Exception e){
e.printStackTrace(); } while (rs.next()){ if (!isadmin)
{userid = rs.getLong(\ flag = true; } ………} 2. op_book.java
该类主要负责图书的管理,包括图书的修改,查询,删除和添加等。 op_book类有以下属性:
private book abooks = new book(); //新的图书类 private javax.servlet.http.HttpServletRequest request; //建立页面请求
否正确
private Vector booklist; private int page = 1; private int pageSize=5;
//显示图书列表向量数组 //显示的页码 //每页显示的图书数
//页面总数
//查询的记录总
private boolean sqlflag = true ;
//对接收到的数据是
private int pageCount =0; 数
public String sqlStr=\
private long recordCount =0;
op_book类有以下方法(省去了属性对应的getX()/setX()方法):
book_search();完成图书查询,包括分类,关键字查询。 delete();负责图书的删除。
getOnebook();主要完成图书的单本查询,用于支持页面的“查看详细信息”。
insert();负责图书的添加。
to_String();把字符串以“ISO 8859-1”编码形式输出,使页面正常显示。
update();负责修改图书信息。
getRequest();负责接受页面传递过来的参数,分解并将参数存放到abooks对象中。
重要操作:主要介绍getRequest()方法
功能:负责从页面接受表单数据并分解,设置abooks对象相应属性。 参数设计:页面传递的Request对象,其中包括表单数据。 返回值:boolean型,true表示成功,否则返回false。
设计思想:获取页面传递的Request对象—》分解Request对象—》获取表单参数值—》把参数值设置成图书对象abooks相对应的属性值。 程序主干代码:
public boolean getRequest(javax.servlet.http.HttpServletRequest newrequest) { ……… request = newrequest;
String BookName = request.getParameter(\ abooks.setBookName(to_String(BookName)); String author = request.getParameter(\ abooks.setAuthor(to_String(author));
String publish = request.getParameter(\ abooks.setPublish(to_String(publish));
String bookclass = request.getParameter(\ abooks.setBookClass(bc);
String bookno = request.getParameter(\ abooks.setBookNo(to_String(bookno));
String picture = request.getParameter(\ abooks.setPicture(to_String(picture));
price =new Float(request.getParameter(\ abooks.setPrice(price);
amount = new Integer(request.getParameter(\ abooks.setAmount(amount);
String Content = request.getParameter(\ abooks.setContent(to_String(Content)); …….. } 3:op_user.java:
为了使用上的方便,我们把对用户的管理,包括用户的添加,删除,修改,
查询等集合成一个管理类。 该类具有以下属性:
private user user = new user(); //新的用户对象
private javax.servlet.http.HttpServletRequest request; //建立页面请求 private Vector userlist; private int page = 1;
private int pageSize=8;
//显示用户列表向量数组
//显示的页码 //每页显示的图书数 //页面总数 //查询的记录总数 //出错信息提示 //注册后返回的用户名
private int pageCount =0; private long recordCount =0; private String message = \private long userid = 0; add():负责用户的添加。
private String username = \
//注册后返回的用户ID
该类具有的主要方法(省去了属性相关的getX()/setX()操作): delete():负责删除指定ID的用户。 get_alluser():取出书店所有用户的信息。 getGbk():返回指定字符串的GBK编码。 getUserinfo():负责取得用户的详细信息。 update():负责修改用户资料。
getRequest():获取表单数据,并分解存储。 4:op_buy.java
我们把业务逻辑和对订单以及和订单列表的管理集成到了该类当中。 该类具有以下属性:
private javax.servlet.http.HttpServletRequest request; //建立页面请求
private HttpSession session; //页面的session;
private boolean sqlflag = true; //对接收到的数据是否正确 private Vector purchaselist; //显示图书列表向量数组 private Vector allorder; //订购单列表 private Vector order_list; //订单清单列表 private int booknumber = 0; //购书总数量 private float all_price = 0; //购书总价钱
private boolean isEmpty = false; //库中的书数量是否够购买的数 private int leaveBook = 0; //库存数量