《网上书店系统设计报告(共30页).doc》由会员分享,可在线阅读,更多相关《网上书店系统设计报告(共30页).doc(30页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上大理学院数学与计算机学院数据库系统设计课程设计报告班级: 2011级计算机科学与技术2班 学号: 姓名: 董卜菡 系统名称: 网上书店系统 总分: 目录2一、需求分析1.背景简介在如今互联网快速发展的时代,网络以其快捷高速的方式改变着我们的生活方式,越来越多的人开始意识到Internet所蕴含的无限商机和经济价值,并积极投身于电子商务。而网上书店就是这商业行为电子化的最典型例子。网上书店具有很多新的特性,例如:其经营成本要比传统书店低得多、不需要支付昂贵的店铺租金和装修费用、不需要大量的资金用于库存管理、同时可以实现24小时营业,不需要营业员,可以依靠数据库更人性化的
2、提供服务。网上书店在价格、时效性、品种、查询方式等方面的优势使用户只要使用鼠标点击浏览、查询下订单,就能送货上门。综上所述,网上书店已经成为互联网时代购书者的最佳选择,必将获得巨大的成功。2.功能需求对于网上书店系统中普通用户、会员和管理员的具体功能描述如下:(1)普通用户1)浏览图书、按类别查询图书、查看图书详细信息。2)注册为会员。普通用户用例图2-1(2)会员1)浏览图书、按类别查询图书、查看图书详细信息。2)加入购物车、修改购物车、订购图书、生成订单、查看订单等。3)查看、修改个人信息(登录密码,常用发货地址,发票抬头管理等)会员用例图2-2(3)管理员1)浏览图书、按类别查询图书、查
3、看图书详细信息。2)查看订单、处理订单进行发货处理等。3)查看、修改个人信息。4)更新图书信息,如增加、删除图书、更新库存量、商品名称、增加图书的属性列等。管理员用例图2-33.系统功能图从上述的功能分析可以得出,网上书店系统中需要有会员、图书、订单等信息。对于会员,需要有会员的账号、密码、姓名、邮箱、电话、联系地址等属性;对于图书,需要有书名、图书类别、出版社、作者、图书概况、定价、折扣、库存数量等属性;其中图书可以有折扣(如8折、7.5折等),实际售价由定价乘以折扣,再除以10计算得出;对于一个订单,需记录会员的订购日期、管理员进行发货的发货日期、订购总价等属性,其中订购总价是由多种图书实
4、际售价乘以订购数量,再进行累计计算得出的。网上书店系统中的图书销售基本规定如下:每个会员可以通过订购图书生成多个订单,每个订单仅属于一个会员,每个订单中可以包含多种图书商品,每种图书商品可以出现在多个订单中;在订单信息中,每种图书都有对应的订购数量。管理员在支付以后可以对其进行发货处理。网上书店系统流程图3-14.数据字典用户信息表4-1序号字段名类型长度字段描述1会员帐号varchar50记录用户的唯一标识2密码varchar8记录用户的登录密码3姓名varchar50记录用户的真实名字4邮箱varchar50记录用户的电子邮箱5电话varchar20记录用户的电话号码6联系地址varcha
5、r50记录用户的联系地址图书信息表4-2序号字段名类型长度字段描述1图书编号int4定义商品的唯一ID号2书名varchar50记录商品的名称3图书类别varchar50记录商品的类别4出版社varchar50记录商品的发行公司5作者varchar50记录商品的作者姓名6图书概况varchar50记录商品大致信息7定价money8记录商品的价格8折扣money8记录商品当前折扣9库存数量int4记录商品的数量订单信息表4-3序号字段名称类型长度字段描述1订单编号int4记录订购单的唯一ID号2书本名称varchar50记录购买书本的名称3订购数量int4记录购买图书的数量4订购总价money8
6、记录购买图书的总价5订购日期Datetime8记录购买图书的日期6发货日期Datetime8记录管理员发货日期管理员信息表4-4序号字段名称类型长度字段描述1管理员帐号varchar50记录管理员的唯一标识2密码varchar8记录管理员登录密码3姓名varchar50记录管理员的姓名4电话varchar20记录管理员的电话5联系地址varchar50记录管理员的联系地址二、数据库设计2.1 数据库概念设计 会员信息E-R图 图书信息E-R图 管理员信息E-R图姓名姓名电话密码会员 管理管理员 n 1. n 1订购数量订购日期 购买 管理发货处理订购总价 n 图书 m更新图书信息图书编号书名
7、实体之间的关系E-R图2.2数据库的逻辑设计用户信息表UserInfo字段名数据类型含义说明约束情况uaccountVarchar(50)会员帐号主关键字upasswordVarchar(8)会员密码不为空unameVarchar(50)会员姓名不为空uemailVarchar(50)会员邮箱不为空UnumberVarchar(20)会员电话不为空uaddressVarchar(50)会员联系地址不为空图书信息表BookInfo字段名数据类型含义说明约束情况bIDInt(4)图书编号主键bnameVarchar(50)图书名称不为空btypeVarchar(50)图书类别不为空bpressVa
8、rchar(50)图书出版社不为空bwriterVarchar(50)图书作者不为空bsummarizeVarchar(50)图书概况不为空bpriceInt(4)图书定价不为空bdiscountInt(4)图书当前折扣不为空bquantityInt(4)图书库存数量不为空管理员信息表ManagerInfo字段名数据类型含义说明约束情况maccountVarchar(50)管理员帐号主键mpasswordVarchar(8)管理员密码不为空mnameVarchar(50)管理员姓名不为空mnumberVarchar(20)管理员电话不为空maddressVarchar(50)管理员联系地址不为
9、空订单信息表OrderInfo字段名数据类型含义说明约束情况oIDInt(4)订单编号主键obooknameVarchar(50)书本名称不为空onumberVarchar(50)订购数量不为空opriceVarchar(50)订购总价不为空oorderdateDatetime订购日期不为空odeliverydateDatetime发货日期不为空三、系统实现3.1 数据库访问1) 数据访问类及实现代码package booksql;import java.sql.Connection;import java.sql.DriverManager;public class BOOKSQL /* *
10、 创建数据库的连接 * return */ public static Connection getconn() Connection conn=null; try Class.forName(com.microsoft.jdbc.sqlserver.SQLServerDriver); String url=jdbc:microsoft:sqlserver:/localhost:1433;databasename=bookstore;user=sa;password=; conn=DriverManager.getConnection(url); catch(Exception e) Syst
11、em.out.println(e.getMessage(); return conn; /* * 关闭数据库 * */ public static void CloseSQL(Connection conn) try if(conn!=null) if(conn.isClosed() conn.close(); catch(Exception e) System.out.println(e.getMessage(); 2) SQL语句 1.访问图书信息表package booksql;import java.sql.Connection;import java.sql.PreparedStat
12、ement;import java.sql.ResultSet;import bean.Bookinfo;public class Bookbiz /* *数据库的修改 * return */public Bookinfo SeachBookByID(int bID) Bookinfo bookInfo = new Bookinfo();Connection conn = BOOKSQL.getconn();try String sql = select * from BookInfo;PreparedStatement pstm = conn.prepareStatement(sql);ps
13、tm.setInt(1, bID);ResultSet rs = pstm.executeQuery();while (rs.next() bID = rs.getInt(1);String bname = rs.getString(2);String btype = rs.getString(3);String bpress = rs.getString(4);String bwriter = rs.getString(5);String bsummarize = rs.getString(6);int bprice = rs.getInt(7);int bdiscount = rs.get
14、Int(8);int bquantity= 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 (Ex
15、ception e) System.out.println(按书号查询图书时出现错误 + e.getMessage(); finally BOOKSQL.CloseSQL(conn);return bookInfo;2.访问用户信息表package booksql;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import bean.Userinfo;import booksql.BOOKSQL;public class UserBiz boolean flag=fa
16、lse;Connection conn=BOOKSQL.getconn();/* * 检查用户帐号是否可用 */public boolean checkuser(String account)tryString sql= select * from UserInfo where uaccount=?;PreparedStatement pstm=conn.prepareStatement(sql);pstm.setString(1, account);int hang=pstm.executeUpdate();System.out.println(操作返回的行数是+hang);if(hang0
17、)flag=false;catch(Exception e)System.out.println(检索用户帐号时出错+e.getMessage();return flag;/* * 用户登陆时调用的方法 */public Userinfo CheckUserLogin(String uaccount,String upassword) Userinfo userInfo =new Userinfo(); try String sql=select * from userinfo where uaccount=? and upassword=?; PreparedStatement pstm=c
18、onn.prepareStatement(sql); pstm.setString(1, uaccount); pstm.setString(2, upassword); ResultSet rs=pstm.executeQuery(); if(rs.next() String uaccount=rs.getString(1); String upassword=rs.getString(2); String uname=rs.getString(3); String unumber=rs.getString(4); String uemail=rs.getString(5); String
19、uaddress=rs.getString(6); userInfo.setUaccount(uaccount); userInfo.setUpassword(upassword); userInfo.setUname(uname); userInfo.setUnumber(unumber); userInfo.setUemail(uemail); userInfo.setUaddress(uaddress); catch(Exception e) System.out.println(登陆时数据库连接失败,原因是+e.getMessage(); finallyBOOKSQL.CloseSQL
20、(conn); return userInfo;/* * 用户注册方法 * 返回用户 * param user * return */public boolean RegUser(Userinfo user) try String sql=insert into UserInfo values (?,?,?,?,?,?); PreparedStatement pstm=conn.prepareStatement(sql); pstm.setString(1, user.getUaccount(); pstm.setString(2, user.getUpassword(); pstm.setS
21、tring(3, user.getUname(); pstm.setString(4, user.getUemail(); pstm.setString(5, user.getUnumber(); pstm.setString(6, user.getUaddress(); /判断执行结果 int hang=pstm.executeUpdate(); /判断返回结果 if(hang0) flag=true; catch(Exception e) System.out.println(注册失败+e.getMessage(); finally BOOKSQL.CloseSQL(conn); retu
22、rn flag; 3.访问订单信息表package booksql;import java.sql.Connection;import java.sql.PreparedStatement;import java.util.ArrayList;import bean.Orderinfo;public class OrderBiz public boolean Orderinfo(Orderinfo orderinfo)boolean flag=false;Connection conn=BOOKSQL.getconn();tryString sql=insert into Orderinfo
23、( oID,obookname,onumber,oprice,oorderdate,odeliverydate) value(?,?,?,?,?,?);PreparedStatement pstm = conn.prepareStatement(sql);pstm.setInt(1, orderinfo.getoID();pstm.setString(2, orderinfo.getObookname();pstm.setString(3, orderinfo.getOnumber();pstm.setString(4, orderinfo.getOprice();pstm.setString
24、(5, orderinfo.getOorderdate();pstm.setString(6, orderinfo.getOdeliverydate();int hang=pstm.executeUpdate();if(hang0)flag=true;catch(Exception e)System.out.println(生成详细定单信息时出错,原因是:+e.getMessage();finallyBOOKSQL.CloseSQL(conn);return flag;public boolean Jiesuan(String userAccount, String orderID,float
25、 orderAllTitle) / TODO Auto-generated method stubreturn false;public ArrayList SeachUserOrder(String userAccount) / TODO Auto-generated method stubreturn null;3.2 业务逻辑层类及代码部分代码创建网上书店系统数据库bookstorecreate database bookstoreon primary(name=bookstore_data,filename=d:bookstore_data.mdf,size=10mb,maxsize=
26、50mb,filegrowth=10%)log on(name=bookstore_log,filename=d:bookstore_log.ldf,size=2mb,maxsize=5mb,filegrowth=1mb)创建用户信息表UserInfouse bookstoregocreate table UserInfo(uaccount varchar(50) not null primary key,upassword varchar(8) not null,uname varchar(50) not null,uemail varchar(50) not null,unumber va
27、rchar(20) not null,uaddress varchar(40) not null)创建图书信息表BookInfouse bookstoregocreate table BookInfo(bID int not null primary key,bname varchar(50) not null,btype varchar(50) not null,bpress varchar(50) not null,bwriter varchar(50) not null,bsummarize varchar(50) not null,bprice int not null,bdiscou
28、nt int not null,bquantity int not null)创建管理员信息表ManagerInfouse bookstoregocreate table ManagerInfo(maccount varchar(50) not null primary key,mpassword varchar(8) not null,mname varchar(50) not null,mnumber varchar(20) not null,maddress varchar(40) not null)创建订单信息表OrderInfouse bookstoregocreate table
29、OrderInfo(oID int not null primary key,obookname varchar(50) not null,onumber varchar(50) not null,oprice varchar(50) not null,oorderdate datetime not null,odeliverydate datetime not null)新增图书信息到图书信息表use bookstorego insert into BookInfo values(1001,藏地密码,中国文学,人民文学出版社,何马,了解神秘的西藏,26,8,98)goinsert into
30、BookInfo values(2002,飞鸟集,外国文学,外文出版社,泰戈尔,最经典的泰戈尔诗集,32,8,75)goinsert into BookInfo values(1003,中文版Photoshop CS6完全自学教程,计算机技术,清华大学出版社,李金明等,photoshop完全攻略,54,7,47)goinsert into BookInfo values(4004,平凡的世界,中国文学,生活读书新知三联书店,路遥,你必须读过的一本书,29,8,34)go新增管理员信息到管理员信息表use bookstoregoinsert into ManagerInfo values(m,李
31、红,大理学院)go完整性约束:create table UO(uaccount varchar(50) not null, oID int not null, grade smallint, primary key(uaccount,oID), foreign key (uaccount) references UserInfo(uaccount), foreign key (oID) references OrderInfo(oID);创建视图create view BI2_view as select * from BookInfo3.3表示层 及其代码部分程序代码:1.封装图书信息表属性
32、package bean;/* * author 506 * */public class Bookinfo private int bID; private String bname; private String btype; private String bpress; private String bwriter; private String bsummarize; private int bprice; private int bdiscount; private int bquantity; public int getbID() return bID;public void s
33、etbID(int bID) this.bID = bID;public String getBname() return bname;public void setBname(String bname) this.bname = bname;public String getBtype() return btype;public void setBtype(String btype) this.btype = btype;public String getBpress() return bpress;public void setBpress(String bpress) this.bpre
34、ss = bpress;public String getBwriter() return bwriter;public void setBwriter(String bwriter) this.bwriter = bwriter;public String getBsummarize() return bsummarize;public void setBsummarize(String bsummarize) this.bsummarize = bsummarize;public int getBprice() return bprice;public void setBprice(int
35、 bprice) this.bprice = bprice;public int getBdiscount() return bdiscount;public void setBdiscount(int bdiscount) this.bdiscount = bdiscount;public int getBquantity() return bquantity;public void setBquantity(int bquantity) this.bquantity = bquantity;public void setBookCcun(Integer valueOf) / TODO Au
36、to-generated method stub 2.封装订单信息表属性package bean;public class Orderinfo private int oID;private String obookname;private String onumber;private String oprice;private String oorderdate;private String odeliverydate;public int getoID() return oID;public void setoID(int oID) this.oID = oID;public String
37、 getObookname() return obookname;public void setObookname(String obookname) this.obookname = obookname;public String getOnumber() return onumber;public void setOnumber(String onumber) this.onumber = onumber;public String getOprice() return oprice;public void setOprice(String oprice) this.oprice = oprice;public String getOorderdate() return oorderdate;public void setOorderdate(String oorderdate) this.oorderdate = oorde