网上书店管理系统附程序源代码Word文档下载推荐.docx
《网上书店管理系统附程序源代码Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《网上书店管理系统附程序源代码Word文档下载推荐.docx(15页珍藏版)》请在冰豆网上搜索。
用户登陆网站浏览图书。
用户在主页或我的帐户中注册成为网站的会员。
只有网站的会员才能在网站购买图书。
用户可以通过分类浏览,书目推荐,新书推荐,书目查询的方式选择喜爱的图书。
用户选择图书提交订单完成订购。
2)后台管理子系统为书店管理员提供了管理网络书店的平台。
属于后台管理部分的设计。
注册会员的管理,并通过会员的消费记录更改的会员的等级,不同等级的会员享受不同的购书折扣待遇。
图书类别的管理,图书的管理。
通过添加,修改,删除对图书类别进行管理。
在类别下添加图书记录,对图书的名称,出版单位,媒体推荐,内容简介等详细信息进行添加,修改等管理。
订单的管理,查询会员提交的订单并处理。
处理已经送货的订单使之对书店的图书销售记录书店库存信息实时修改。
书店公告信息的管理添加书店的公告信息使消费者及时了解书店的最新动态。
对于数据库应用系统而言,设计数据库是十分重要的,也是首要的工作。
一般先设计系统数据库,然后才开始设计应用程序。
1.实体E_R图
以下是购物车实体E-R图:
图1
购物车E-R图
以下是留言信息实体E-R图
图2
留言信息E-R图
2.数据库设计
数据库在一个信息管理系统中占有非常重要的地位,数据库结构设计的好坏将直接对应用系统的效率,以及实现的效果产生影响。
合理的数据库结构设计可以提高数据存储的效率,保证数据的完整和一致。
用户的需求具体体现在各种信息的提供,保存,更新和查询,这就要求数据库结构能充分满足各种信息的输出和输入.收集基本数据,数据结构以及数据处理的流程。
通过上述系统功能分析,针对一般在线书店的需求,总结出如下需求信息。
1)用户分一般用户和管理员。
2)订单分单张详细订单和总订单。
3)每一本图书都从属一种类型。
4)一个用户可以购买多本图书。
5)一个用户对应一张定单列表。
根据上面的设计规划出的实体有:
管理员信息实体、用户信息实体、图书实体、图书分类实体、订单实体、订单列表实体。
数据库存储过程的设计和调用:
使用存储过程增加了数据库的安全性,在页面调用也十分方便。
数据库MY_book表查询原代码如下:
CREATEPROCEDUREshow//创建存储过程SHOW,查询数据库的表
AS//MY_book的数据
select*fromMy_Book
GO
调用存储过程代码如下:
con=pool.getConnection();
//前台调用存储过程
Statementstmt=con.createStatement();
ResultSetrs=stmt.executeQuery("
show"
);
数据库表数据删除存储过程代码:
CREATEPROCEDUREdel_u@idint
AS
deletefrommy_userswhereId=@id
Statementstmt=con.createStatement();
intvalue=stmt.executeUpdate("
del_u@id="
+id);
3数据库表结构
购物车表
字段名
数据类型
长度
是否主键
描述
BookClass
char
10
否
书类别
BookName
varchar
50
书名
BookPub
出版社
BookPrice
float
8
价格
BookAmout
int
4
数量
Orderingstate
订购状态
表1购物车表
留言信息表
id
是
用户ID
username
用户名
context
16
留言内容
times
留言时间
表2留言信息表
四、系统功能需求分析;
4.1、系统功能模块图
以下部分是网上书店系统的前台模块图:
图3系统功能模块图
以下是网上书店后台管理的模块图:
包括图书馆里、会员管理、订单管理、支付宝管理、数据库管理和留言板管理。
图4后台管理模块图
4.2、系统简单的流程图;
首先假定一个合法的用户已经登录到这个系统。
当客户选择订购货物时,业务流程开始。
客户输入想要购买书的名字、出版社或作者。
或通过点击图书分类进行查询。
对于每一个输入的信息,网站会给出该书的基本信息,用户通过订单按钮将该书添加到购物车,形成订单表。
该系统可以保存连续的已经订购的商品清单。
用户点击支付的按钮,系统会转到支付信息页面。
系统检验输入的信息,把该订单作为未完成的交易保存,同时向记帐系统发支付信息。
如果客户提交的信息不正确,系统将提示客户修改。
当支付确认后,订单被标记上已经确认,同时返回给客户一个订单ID,业务流程也就结束了。
另外,如果支付没有被确认,系统将提示客户改正支付信息或者取消。
本网站主要业务流程描述如下:
图5系统流程图
用powerdesigner画出CDM图;
用powerdesigner画出PDM图;
4.3、系统的结构;
1、系统主要分为前后台两部分:
前台是不需要认证的,是供网站的访问者访问的,我完成的是前台部分、购物车模块和留言板,前台主要完成了以下功能:
下图所示的界面是网上书店系统的前台首页。
图6电子商务系统前台首页
购买商品
登陆之后,单击商品的类别选项,即可查看相应的商品信息。
单击任意一种商品下方的【添加到购物车】按钮,页面会转到【我的购物车】页面,在购物车中会显示该用户的订单信息,分为已定购,未订购,已购买三个标单信息。
图7购物车界面
购物车模块说明:
如果同一种商品要购买多个,只需在数量文本框中修改数量即可。
如果要删除购物车中的商品,只需单击“X”按钮,商品即被删除,如果继续购物,
单击“继续购买”按钮,即返回首页,继续购物。
点击全部支付,系统会检查你在本站的余额是否足够,足够则购买成功。
留言板
图8留言板图
说明单击“给我们留言”按钮可到留言板中进行留言操作。
在这里你可以发表你对本网站的一些意见和评论。
五、总结;
经过2个星期的努力,网上书店基本开发完毕。
其功能基本符合企业需求。
对于数据的输入、修改、查询等问题通过程序进行了有效的解决。
并且能对数据库进行权限管理。
但某些功能,由于自己知识的欠缺和时间不足造成一些细微的功能未能实现,主要是,某些算法不够简练,这些需要在以后的工作中改进,锤炼。
在这段时间的设计中,我感觉自己学了很多的以前没有深入了解的知识和从未接触过的知识。
比如JSP和SQL数据库以及网站设计方面的知识。
在以前的学习中也学习了JSP和SQL,但那只是停留在了解的阶段。
而此次毕业设计却带给我更进一步了解和应用这些知识的机会。
做课程设计的过程中,熟悉了数据库的应用和开发,对许多软件的安装原理有了较深刻的认识;
对软件的开发过程、软件工程理论都有了进一步的了解,大大丰富了软件开发经验;
并且对以前学习过程中所学到的相关知识有了更加深的了解,并进一步把它应用到课程设计中。
但是由于毕业设计时间较短和本人知识有限,所以该网站还有许多不尽人意的地方,网站还存在以下一些问题:
(1)系统在安全性方面还有一些问题;
(2)系统的某些功能还不能够很好的实现,同时本系统还某些方面没有考虑到;
(3)系统在跨平台运行方面有一些不足。
这些都有待进一步的改善。
因此,以后还应加强这几个方面的工作和学习:
对网站的安全管理方面的学习和加强;
对一些常用的应用软件还要多熟悉;
更多地加强对关于网络功能数据库知识的学习。
六、参考资料;
1.叶核亚JAVA程序设计使用教程(第三版)电子工业出版社2005-03
2.张月玲《管理信息系统》(第二版)清华大学出版社2001
3.周绪.《SQLserver2000入门与提高》.清华大学出版社,2006
4.李萍.《SQLServer2000应用开发教程》.电子工业出版社,2004
5.XX资料
七、附录;
程序源代码
前台模块代码
<
%@pagelanguage="
java"
import="
java.utill.*,java.text.*"
%>
%@pagecontentType="
text/html;
charset=gb2312"
%>
styletype="
text/css"
>
.sec_menu{
BORDER-RIGHT:
white1pxsolid;
BACKGROUND:
#d6dff7;
OVERFLOW:
hidden;
BORDER-LEFT:
BORDER-BOTTOM:
white1pxsolid
.menu_titleSPANFONT-WEIGHT:
bold;
LEFT:
10px;
COLOR:
#215dc6;
POSITION:
relative;
TOP:
2px
.menu_title2FONT-WEIGHT:
#428eff;
2px
}
/style>
/head>
BODY>
script>
varhe=document.body.clientHeight-105
document.write("
divid=ttstyle=height:
"
+he+"
;
overflow:
hidden>
)
/script>
tablecellspacing="
0"
cellpadding="
width="
158"
align="
center"
tr>
tdid="
imgmenu20"
class="
menu_title"
onMouseOver="
this.className='
menu_title2'
onClick="
showsubmenu(20);
loadThreadFollow()"
onMouseOut="
menu_title'
style="
cursor:
hand"
background=../my/images/menudown.gifheight="
25"
span>
经济管理<
/span>
/a>
/td>
/tr>
tdid="
submenu20"
style="
display:
none"
did="
imgmenu5"
class="
showsubmenu(5)"
<
/table>
/div>
functionaa(Dir)
{tt.doScroll(Dir);
Timer=setTimeout('
aa("
'
+Dir+'
)'
100)}
functionStopScroll(){if(Timer!
=null)clearTimeout(Timer)}
functioninitIt(){
divColl=document.all.tags("
DIV"
for(i=0;
i<
divColl.length;
i++){
whichEl=divColl(i);
if(whichEl.className=="
child"
)whichEl.style.display="
functionexpands(el){
whichEl1=eval(el+"
Child"
if(whichEl1.style.display=="
){
initIt();
whichEl1.style.display="
block"
}else{whichEl1.style.display="
vartree=0;
functionloadThreadFollow(){
if(tree==0){
document.frames["
hiddenframe"
].location.replace("
LeftTree.asp"
eval("
submenu"
+sid+"
.style.display=\"
\"
imgmenu.background="
images/menuup.gif"
else{
none\"
images/menudown.gif"
functionloadingmenu(id){
varloadmenu=eval("
menu"
+id);
if(loadmenu.innerText=="
Loading..."
LeftTree.asp?
menu=menu&
id="
+id+"
}}
top.document.title="
/BODY>
/HTML>
留言代码版模块代码:
%@pageimport="
java.sql.*,bean.book.*"
jsp:
useBeanid="
db"
bean.ConnectDB"
scope="
page"
/>
%
Statementstmt=db.getStatement();
Stringsql="
select*fromliuyan"
try{
ResultSetrs=stmt.executeQuery(sql);
intintPageSize;
//一页显示的记录数
intintRowCount;
//记录总数
intintPageCount;
//总页数
intintPage;
//待显示页码
StringstrPage;
dt>
divalign="
left"
%=rs.getString("
username"
)%>
&
nbsp;
spanclass="
STYLE4"
在<
times"
发表关于该网站的评论<
:
/dt>
br/>
dd>
context"
/dd>
/dl>
hr>
right"
%if(intPage<
2){%>
catch(Exceptione){
out.println(e.getMessage());
divid="
postBox"
formname="
theForm"
method="
post"
action="
ly.do"
tableborder="
100%"
tdcolspan="
2"
在此填写提交你对网站的新评论<
tdwidth="
60"
height="
40"
用户:
640"
%usersu=(users)session.getAttribute("
us"
if(us==null){%>
inputtype="
text"
name="
value="
游客"
readonly="
/>
%}else{%>
inputtype="
name="
value="
%=u.getUserName()%>
%}%>
内容:
textarearows="
10"
cols="
45"
/textarea>
intnum=0;
Statementst=db.getStatement();
Stringsql1="
try{
ResultSetrr=st.executeQuery(sql1);
rr.last();
num=rr.getRow();
catch(Exceptione){}
br>
hidden"
id"
%=num+1%>
submit"
发表"
reset"
重写"
/form>