网上书店系统设计报告文档格式.doc
《网上书店系统设计报告文档格式.doc》由会员分享,可在线阅读,更多相关《网上书店系统设计报告文档格式.doc(30页珍藏版)》请在冰点文库上搜索。
1)浏览图书、按类别查询图书、查看图书详细信息。
2)注册为会员。
普通用户用例图2-1
(2)会员
2)加入购物车、修改购物车、订购图书、生成订单、查看订单等。
3)查看、修改个人信息(登录密码,常用发货地址,发票抬头管理等)
会员用例图2-2
(3)管理员
2)查看订单、处理订单进行发货处理等。
3)查看、修改个人信息。
4)更新图书信息,如增加、删除图书、更新库存量、商品名称、增加图书的属性列等。
管理员用例图2-3
3.系统功能图
从上述的功能分析可以得出,网上书店系统中需要有会员、图书、订单等信息。
对于会员,需要有会员的账号、密码、姓名、邮箱、电话、联系地址等属性;
对于图书,需要有书名、图书类别、出版社、作者、图书概况、定价、折扣、库存数量等属性;
其中图书可以有折扣(如8折、7.5折等),实际售价由定价乘以折扣,再除以10计算得出;
对于一个订单,需记录会员的订购日期、管理员进行发货的发货日期、订购总价等属性,其中订购总价是由多种图书实际售价乘以订购数量,再进行累计计算得出的。
网上书店系统中的图书销售基本规定如下:
每个会员可以通过订购图书生成多个订单,每个订单仅属于一个会员,每个订单中可以包含多种图书商品,每种图书商品可以出现在多个订单中;
在订单信息中,每种图书都有对应的订购数量。
管理员在支付以后可以对其进行发货处理。
网上书店系统流程图3-1
4.数据字典
用户信息表4-1
序号
字段名
类型
长度
字段描述
1
会员帐号
varchar
50
记录用户的唯一标识
2
密码
8
记录用户的登录密码
3
姓名
记录用户的真实名字
4
邮箱
记录用户的电子邮箱
5
电话
20
记录用户的电话号码
6
联系地址
记录用户的联系地址
图书信息表4-2
图书编号
int
定义商品的唯一ID号
书名
记录商品的名称
图书类别
记录商品的类别
出版社
记录商品的发行公司
作者
记录商品的作者姓名
图书概况
记录商品大致信息
7
定价
money
记录商品的价格
折扣
记录商品当前折扣
9
库存数量
记录商品的数量
订单信息表4-3
字段名称
订单编号
记录订购单的唯一ID号
书本名称
记录购买书本的名称
订购数量
记录购买图书的数量
订购总价
记录购买图书的总价
订购日期
Datetime
记录购买图书的日期
发货日期
记录管理员发货日期
管理员信息表4-4
管理员帐号
记录管理员的唯一标识
记录管理员登录密码
记录管理员的姓名
记录管理员的电话
记录管理员的联系地址
二、数据库设计
2.1数据库概念设计
会员信息E-R图
图书信息E-R图
管理员信息E-R图
会员
管理
管理员
n1
……
…….
n1
购买
发货处理
n
图书
m
更新图书信息
实体之间的关系E-R图
2.2数据库的逻辑设计
用户信息表UserInfo
数据类型
含义说明
约束情况
uaccount
Varchar(50)
主关键字
upassword
Varchar(8)
会员密码
不为空
uname
会员姓名
uemail
会员邮箱
Unumber
Varchar(20)
会员电话
uaddress
会员联系地址
图书信息表BookInfo
bID
Int(4)
主键
bname
图书名称
btype
bpress
图书出版社
bwriter
图书作者
bsummarize
bprice
图书定价
bdiscount
图书当前折扣
bquantity
图书库存数量
管理员信息表ManagerInfo
maccount
mpassword
管理员密码
mname
管理员姓名
mnumber
管理员电话
maddress
管理员联系地址
订单信息表OrderInfo
oID
obookname
onumber
oprice
oorderdate
odeliverydate
三、系统实现
3.1数据库访问
1)数据访问类及实现代码
packagebooksql;
importjava.sql.Connection;
importjava.sql.DriverManager;
publicclassBOOKSQL{
/**
*创建数据库的连接
*@return
*/
publicstaticConnectiongetconn()
{
Connectionconn=null;
try{
Class.forName("
com.microsoft.jdbc.sqlserver.SQLServerDriver"
);
Stringurl="
jdbc:
microsoft:
sqlserver:
//localhost:
1433;
databasename=bookstore;
user=sa;
password=123456"
;
conn=DriverManager.getConnection(url);
}catch(Exceptione)
{
System.out.println(e.getMessage());
}
returnconn;
}
/**
*关闭数据库
*
*/
publicstaticvoidCloseSQL(Connectionconn)
{
try{
if(conn!
=null)
{
if(conn.isClosed())
{
conn.close();
}
}
}catch(Exceptione)
{
System.out.println(e.getMessage());
}
}
}
2)SQL语句
1.访问图书信息表
importjava.sql.PreparedStatement;
importjava.sql.ResultSet;
importbean.Bookinfo;
publicclassBookbiz{
*数据库的修改
publicBookinfoSeachBookByID(intbID)
{
BookinfobookInfo=newBookinfo();
Connectionconn=BOOKSQL.getconn();
try{
Stringsql="
select*fromBookInfo"
PreparedStatementpstm=conn.prepareStatement(sql);
pstm.setInt(1,bID);
ResultSetrs=pstm.executeQuery();
while(rs.next()){
bID=rs.getInt
(1);
Stringbname=rs.getString
(2);
Stringbtype=rs.getString(3);
Stringbpress=rs.getString(4);
Stringbwriter=rs.getString(5);
Stringbsummarize=rs.getString(6);
intbprice=rs.getInt(7);
intbdiscount=rs.getInt(8);
intbquantity=rs.getInt(9);
bookInfo.setbID(bID);
bookInfo.setBname(bname);
bookInfo.setBtype(btype);
bookInfo.setBpress(bpress);
bookInfo.setBwriter(bwriter);
bookInfo.setBsummarize(bsummarize);
bookInfo.setBprice(bprice);
bookInfo.setBdiscount(bdiscount);
bookInfo.setBquantity(bquantity);
}
}catch(Exceptione){
System.out.println("
按书号查询图书时出现错误"
+e.getMessage());
}finally{
BOOKSQL.CloseSQL(conn);
}
returnbookInfo;
}
2.访问用户信息表
importbean.Userinfo;
importbooksql.BOOKSQL;
publicclassUserBiz{
booleanflag=false;
Connectionconn=BOOKSQL.getconn();
*检查用户帐号是否可用
publicbooleancheckuser(Stringaccount)
{
try{
Stringsql="
select*fromUserInfowhereuaccount=?
"
PreparedStatementpstm=conn.prepareStatement(sql);
pstm.setString(1,account);
inthang=pstm.executeUpdate();
操作返回的行数是"
+hang);
if(hang>
0)
{
flag=false;
}catch(Exceptione)
{
检索用户帐号时出错"
+e.getMessage());
returnflag;
*用户登陆时调用的方法
publicUserinfoCheckUserLogin(Stringuaccount,Stringupassword)
{UserinfouserInfo=newUserinfo();
try{
Stringsql="
select*fromuserinfowhereuaccount=?
andupassword=?
PreparedStatementpstm=conn.prepareStatement(sql);
pstm.setString(1,uaccount);
pstm.setString(2,upassword);
ResultSetrs=pstm.executeQuery();
if(rs.next())
{
Stringuaccount=rs.getString
(1);
Stringupassword=rs.getString
(2);
Stringuname=rs.getString(3);
Stringunumber=rs.getString(4);
Stringuemail=rs.getString(5);
Stringuaddress=rs.getString(6);
userInfo.setUaccount(uaccount);
userInfo.setUpassword(upassword);
userInfo.setUname(uname);
userInfo.setUnumber(unumber);
userInfo.setUemail(uemail);
userInfo.setUaddress(uaddress);
}
}catch(Exceptione)
{
System.out.println("
登陆时数据库连接失败,原因是"
}
finally{
returnuserInfo;
*用户注册方法
*返回用户
*@paramuser
publicbooleanRegUser(Userinfouser)
{
try{
Stringsql="
insertintoUserInfovalues(?
?
)"
PreparedStatementpstm=conn.prepareStatement(sql);
pstm.setString(1,user.getUaccount());
pstm.setString(2,user.getUpassword());
pstm.setString(3,user.getUname());
pstm.setString(4,user.getUemail());
pstm.setString(5,user.getUnumber());
pstm.setString(6,user.getUaddress());
//判断执行结果
inthang=pstm.executeUpdate();
//判断返回结果
if(hang>
{
flag=true;
}
}catch(Exceptione){
System.out.println("
注册失败"
}
finally{
BOOKSQL.CloseSQL(conn);
}
returnflag;
}
3.访问订单信息表
importjava.util.ArrayList;
importbean.Orderinfo;
publicclassOrderBiz{
publicbooleanOrderinfo(Orderinfoorderinfo)
booleanflag=false;
Connectionconn=BOOKSQL.getconn();
insertintoOrderinfo(oID,obookname,onumber,oprice,oorderdate,odeliverydate)value(?
pstm.setInt(1,orderinfo.getoID());
pstm.setString(2,orderinfo.getObookname());
pstm.setString(3,orderinfo.getOnumber());
pstm.setString(4,orderinfo.getOprice());
pstm.setString(5,orderinfo.getOorderdate());
pstm.setString(6,orderinfo.getOdeliverydate());
if(hang