Oracle9i数据库系统课程设计网上书店系统Word文档格式.docx
《Oracle9i数据库系统课程设计网上书店系统Word文档格式.docx》由会员分享,可在线阅读,更多相关《Oracle9i数据库系统课程设计网上书店系统Word文档格式.docx(30页珍藏版)》请在冰点文库上搜索。
![Oracle9i数据库系统课程设计网上书店系统Word文档格式.docx](https://file1.bingdoc.com/fileroot1/2023-5/2/c709a047-99c1-4474-8ec5-044bdd40b181/c709a047-99c1-4474-8ec5-044bdd40b1811.gif)
3.1系统设计目标
对于典型的数据库管理系统,尤其是对像电子商务这样的数据流量特别大的网络管理系统,必须要满足使用方便、操作灵活等设计要求。
本系统在设计时应该满足以下几个目标:
●采用人机对话的操作方式,界面设计美观友好、信息查询灵活、方便、快捷、准确、数据存储安全可靠。
●全面展示书店内所有的图书,并可展示最新图书及特价图书。
●为顾客提供一个方便、快捷的图书信息查询功能。
采用模糊查询查询数据。
●实现网上购物。
●商品销售排行,以方便顾客了解本商城内的热销商品及帮助企业领导者做出相应的决策。
●查看商城内的公告信息。
●用户随时都可以查看自己的订单。
●对用户输入的数据,系统进行严格的数据检验,尽可能排除人为的错误。
●系统最大限度地实现了易维护性和易操作性。
●系统运行稳定、安全可靠。
3.2系统基本功能
1)图书信息查询
该模块实现图书信息的分类显示,提供最新商品的推荐显示以及销售显示,便于引导购物取向。
此外,还提供依据图书名称或是编号等包含关键字实现快速搜索的功能并显示图书的有关详细信息。
2)购物车管理
用于对每一个进入系统的用户所对应的购物车进行管理。
将用户所选购的图书信息,包括价格、数量等信息记录到对应的购物车上,便于到收银台进行结帐处理。
同时在此模块中,用户还可以方便的实现修改购物图书、清空购物车等操作。
3)会员信息管理
实现系统相关用户信息的注册及身份验证,同时也提供对应的用户资料的更新。
该系统可以收集用户相关的联系方式、通讯地址等信息。
4)订单处理
根据购物车中的信息,以及用户所选择的送货方式和付款方式,和用户对应的个人信息生成订单,便于后续工作的处理。
在该模块中,用户可以随时查阅自己的订单,并对其进行取消等处理操作。
3.3数据库需求分析
以下是数据库需求信息:
◆一个用户可以购买多本图书。
◆一个用户对应一张订单。
◆一个列表对应多张订单。
◆用户,包括数据项:
用户ID、用户名、密码。
◆图书,包括数据项:
图书编号、图书名、价格、出版社、图书介绍。
◆订单列表,包括数据项:
订单编号、图书编号、购书数量。
◆订单,包括数据项:
订单编号、用户编号、下单时间。
3.4数据库设计
数据库在一个信息管理系统中占有非常重要的地位,数据库结构设计的好坏将直接对应用系统的效率,以及实现的效果产生影响。
合理的数据库结构设计可以提高数据存储的效率,保证数据的完整和一致。
3.5数据库需求分析
针对网上图书销售系统的需求分析,得出如下需求信息。
订单分为单张详细订单和总订单。
▪一个用户可以购买多本图书。
▪一个用户对应一张订单。
▪一个列表对应多张订单。
针对本系统功能分析,总结出如下的需求信息。
▪用户,包括数据项:
▪图书,包括数据项:
图书编号、图书名、价格、图书介绍。
▪订单列表,包括数据项:
▪订单,包括数据项:
3.6数据库概念结构设计
从本系统中规划出的实体有:
用户信息实体、管理员信息实体、图书实体、图书分类实体、订单实体、订单列表实体。
实体之间关系的E-R图如图4.5所示。
M
N
图3.6.1实体之间的E-R图
管理员实体的E-R图,如图3.6.2所示。
图书分类实体的E-R图,如图3.6.3所示。
用户信息实体的E-R图,如图3.6.4所示。
图书实体的E-R图,如图3.6.5所示。
订单实体的E-R图,如图3.6.6所示。
订单列表实体的E-R图,如图3.6.7所示。
图3.6.2管理员实体的E-R图图3.6.3图书分类实体E-R图
图3.6.4用户实体E-R图
图3.6.5图书实体E-R图
图3.6.6订单实体E-R图
图3.6.7订单列表实体的E-R图
3.7数据库逻辑结构设计
主要数据表的结构
◆表3.7.1为图书信息列表,记录书店现有的图书信息。
表3.7.1 Book表
列名
数据类型
长度
允许空
注释
bookISBN
varchar
50
否
图书编号
bookName
图书名称
bookAuthor
作者
publisher
Varchar
是
出版社
Price
价格
Introduce
150
简介
◆表3.7.2为书店管理员信息表,记录管理员的帐号和密码。
表3.7.2BookAdmin表
Adminname
20
管理员
AdminPassword
管理员密码
◆表3.7.3为用户信息表,记录用户的基本信息。
表3.7.3用户表
memberID
Varchar
用户编号
membername
用户名
logintime
Int
登陆次数
pwd
密码
phoneCode
电话
zipcode
邮编
address
地址
email
电子邮件地址
◆表3.7.4为订单表,记录但张订单的具体信息。
表3.7.4订单表
orderID
4
订单ID
userID
会员ID
receiverName
接收者姓名
receiverAddress
接收者地址
receiverZip
接收者邮编
orderRem
备注
orderPrice
300
Orderdate
Date
Handled
◆表3.7.5为图书分类表,记录书店现有图书的分类。
表3.7.5订单信息表
30
订单号
bookISBM
书号
Bookcount
数量
3.8系统部分代码
1)连接oracle的部分代码如下所示:
packageJDBC;
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.Statement;
publicclassDB{
/*publicstaticStringURL="
jdbc:
sqlserver:
//218.192.101.146:
1433;
DatabaseName=client"
;
publicstaticStringDIR="
com.microsoft.sqlserver.jdbc.SQLServerDriver"
publicstaticStringUSE="
sa"
publicstaticStringPAS="
123"
/**/
publicstaticStringURL="
oracle:
thin:
@218.192.101.152:
1521:
orcl"
oracle.jdbc.driver.OracleDriver"
abc"
publicstaticvoidmain(String[]args)throwsException{
Class.forName(DIR);
Connectionconn=DriverManager.getConnection(URL,USE,PAS);
Statementstmt=conn.createStatement();
StringstrSql="
Select*frombuyerInfo"
System.out.println(stmt.executeUpdate("
select*fromcat"
));
System.out.println(strSql+stmt.executeUpdate(strSql));
//rs=stmt.executeQuery(strSql);
}
}
2)BuyerBean.Java代码如下所示
/**BuyerBean.Java1.10.2001
*Copyright?
2000,2001bycuugllp.
*本Bean中有两个set方法和两个get方法:
*setMemberID()—对BuyerBean中的memberID属性进行赋值;
*setPwd()—对BuyerBean中的pwd属性进行赋值;
*getLogontimes()—取该会员登录的次数
*getMenberName()获得该会员的真实姓名,用于显示欢迎信息。
*main()方法用于将BEAN作为一个Application进行测试时使用,正式发布时可以删除。
**/
packagecuug;
importjava.sql.*;
importJDBC.DB;
publicclassBuyerBeanextendsDB{
privateStringmemberID=null;
//会员ID
privateStringmemberName=null;
//会员姓名
privateStringpwd=null;
//密码
privateintlogontimes=-1;
//登录的次数
privateConnectionconn=null;
//连接
privateResultSetrs=null;
//结果集
publicBuyerBean(){
//加载JDBC-ODBC驱动
try{
Class.forName(DIR);
}
catch(Exceptione){
//获得登录次数,登录的会员的名字也在该方法调用时获得
publicintgetLogontimes(){
StringstrSql=null;
try{
Stringuri=URL;
//建立与数据库的连接
conn=DriverManager.getConnection(uri,USE,PAS);
Statementstmt=conn.createStatement();
strSql="
SelectloginTimes,membernamefrombuyerInfowherememberID='
"
+memberID+"
'
andpwd='
+pwd+"
System.out.println(strSql);
rs=stmt.executeQuery(strSql);
while(rs.next()){
//登录的次数
logontimes=rs.getInt("
loginTimes"
);
//会员姓名
memberName=rs.getString("
membername"
}
rs.close();
//如果是合法会员则将其登录次数加1
if(logontimes!
=-1){
strSql="
UpdatebuyerInfosetloginTimes=loginTimes+1wherememberID='
stmt.executeUpdate(strSql);
}
stmt.close();
conn.close();
//捕获异常
catch(SQLExceptione){
System.err.println("
BuyerBean.getLogontimes():
+e.getMessage());
returnlogontimes;
//设置memberID属性;
publicvoidsetMemberID(StringID){
this.memberID=ID;
//设置pwd属性
publicvoidsetPwd(Stringpassword){
this.pwd=password;
//获得该会员的真实姓名,必须在取该会员登录的次数之后才能被赋予正确的值
publicStringgetMemberName(){
returnmemberName;
//测试Bean中的各个方法是否能够正常工作
publicstaticvoidmain(Stringargs[]){
BuyerBeanbuyer=newBuyerBean();
buyer.setMemberID("
abcd"
buyer.setPwd("
1234"
System.out.println(buyer.getLogontimes());
System.out.println(buyer.getMemberName());
}
3)default.html代码如下所示:
<
contentType=”text/html;
charset=gb2312”>
HTML>
!
--
Copyright?
1999cuug,liu.
-->
HEAD>
TITLE>
CUUGONLINEBOOKSTORE–MEMBERLOGIN<
/TITLE>
/HEAD>
BODYbgcolor=”white”>
fontsize=5color="
green"
>
p>
AHREF="
addClient.jsp"
用户注册<
/A>
/p>
login.jsp"
管理员登录<
/font>
H1align="
center"
CUUG网上书店<
/H1>
H2align="
会员登录页<
/H2>
CENTER>
FORMMETHOD=POSTACTION="
checklogon.jsp"
BR>
请输入会员代号和密码:
<
br>
会员代码:
inputTYPE="
text"
name=memberID>
密&
nbsp;
&
码:
password"
name=pwd>
INPUTTYPE=submitname=submitValue="
登录"
/FORM>
/CENTER>
/BODY>
/HTML>
在本例中提供了一个文本框供用户输入会员代号和登录密码,其运行结果如图所示,当会员输入其代码和密码后调用checklogon.jsp来验证该网络用户是否是合法会员。
会员登录页
在checklogon.jsp中接收从default.htm中由用户所填的会员代码和密码,把它传给BuyerBean,由BuyerBean判断该用户的会员代码和密码的正确性,若正确显示欢迎信息;
若不正确,则提供一个重新登录的链接。
在本页面还可以跳转到用户注册和管理员登录。
4)Checklogon.jsp的代码如下所示:
DOCTYPEHTMLPUBLIC"
-//W3C//DTDHTML4.0Transitional//EN"
%@pagelanguage="
Java"
contentType="
text/html;
charset=GB2312"
%>
jsp:
useBeanclass="
cuug.BuyerBean"
id="
buyer"
scope="
page"
/jsp:
useBean>
METAname="
CHECKLOGON"
>
CUUGONLINEBOOKSTORE�MEMBERLOGIN
BODYBGCOLOR="
#FFFFFF"
%
StringmemberID=request.getParameter("
memberID"
Stringpwd=request.getParameter("
pwd"
buyer.setMemberID(memberID);
buyer.setPwd(pwd);
%intlogonTimes=buyer.getLogontimes();
if(logonTimes>
0){
//session.putValue("
memberID);
session.setAttribute("
<
%=buyer.getMemberName()%>
欢迎你第
%=logonTimes+1%>
次来到CUUG网上书店<
Ahref="
booklist.jsp"
进入书店<
else{
对不起,<
%=memberID%>
你的用户名和密码不一致<
default.htm"
重新登录<
登录正确时的结果如图所示,错误时的结果如图所示。
用户登录正确(会员号2,密码是34)
用户登录错误
5)addcart.jsp代码如下所示:
%@pageimport="
java.util.HashMap"
/*Cookie信息处理*/
/*增加Cookie*/
if(request.getParameter("
isbn"
)!
=null)
{Cookiecookie=newCookie("
ISBN"
+request.getParameter("
),"
1"
cookie.setMaxAge(30*24*60*60);
//设定Cookie有效期限30日
response.addCookie(cookie);
{
HashMapbookCart=(HashMap)request.getSession().getAttribute("
bookCart"
);
if(bookCart==null)bookCart=newHashMap();
bo