小型网上书店JSPJava BeanWord文件下载.docx
《小型网上书店JSPJava BeanWord文件下载.docx》由会员分享,可在线阅读,更多相关《小型网上书店JSPJava BeanWord文件下载.docx(18页珍藏版)》请在冰点文库上搜索。
2.Web服务器平台:
可以选用WindowsXP。
3.Web服务器:
Tomcat成为JavaWebServer的主流服务器是不可抵挡的趋势,它功能强大,性能稳定,完全可以做商业应用,所以采用Tomcat6.0。
4.开发工具:
Eclipse;
5.软件开发工具箱:
J2SDK。
6.程序开发辅助工具:
选用DreamweaverMX2004来开发界面,编写及调试程序在Editplus和JBuilder中进行。
7.系统平台:
WindowsXP+Tomcat+MicrosoftOfficeAccess+Eclipse.
4.系统数据流程分析
说明:
未注册用户通过注册后可以登录到前台进行购书,管理员通过登录可以进入后台进行管理。
1.顶层数据流图如下图
2.前台购书和后台管理
前台购书:
用户登录后进行书籍浏览和查询,对书籍信息有了一定了解后可根据自己的需求进行购书,购书后将所需书放入购物车,最终确定要购买的图书,提交定单,等待定单的处理结果。
前台购书如下图所示:
后台管理:
管理员可以登陆到后台,查看相关的定单信息,然后修改定单的信息,主要是审核定单的有效性。
系统第二层数据流图(后台管理)如下图
三.系统功能模块实现
1.用户登陆模块
这里介绍用户登陆的程序设计思路,数据库中存放有用户的基本信息,用户在网站中输入相关信息,通过匹配检测,便可以知道数据的有效性.
其中会员登录JavaBean
我们网上书店中的会员信息的库结构如图1所示:
图1会员信息库
其中memberID是主键,用于区分不同的会员,新会员注册时只能使用没有被使用的用户代码。
下面是登陆程序流程图如下图2所示:
图2登陆程序流程图
登陆模块中的主要程序介绍:
1.Java代码:
PackageBuyBook;
importJava.sql.*;
publicclassBuyerBean{
privateStringmemberID=null;
//会员ID
privateStringmemberName=null;
//会员姓名
privateStringpwd=null;
//密码
privateintlogontimes=-1;
//登录的次数
privatestaticStringstrDBDriver=“sun.jdbc.odbc.JdbcOdbcDriver”;
//JDBC驱动
privatestaticStringstrDBUrl=“jdbc:
odbc:
bookstore”;
//数据源,
privateConnectionconn=null;
//连接
privateResultSetrs=null;
//结果集
publicBuyerBean(){
//加载JDBC-ODBC驱动
try{
Class.forName(strDBDriver);
}
//捕获异常
catch(Java.lang.ClassNotFoundExceptione){
System.err.println(“BuyerBean():
”+e.getMessage());
}
}
//获得登录次数,登录的会员的名字也在该方法调用时获得
publicintgetLogontimes(){
StringstrSql=null;
try{
conn=DriverManager.getConnection(strDBUrl);
Statementstmt=conn.createStatement();
strSql=“SelectlogonTimes,membernamefrombuyerInfowherememberID=‘”+
memberID+“’andpwd=’”+pwd+“’”;
rs=stmt.executeQuery(strSql);
while(rs.next()){
//登录的次数
logontimes=rs.getInt(“logonTimes”);
//会员姓名
memberName=rs.getString(“membername”);
}
rs.close();
//如果是合法会员则将其登录次数加1
if(logontimes!
=-1){
strSql=“UpdatebuyerInfoset
logonTimes=logonTimes+1wherememberID=‘”+memberID+“’”;
stmt.executeUpdate(strSql);
}
stmt.close();
conn.close();
catch(SQLExceptione){
System.err.println(“BuyerBean.getLogontimes():
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());
}
}
2.会员登录htm与JSP
会员登录要由两个部分来完成,第一个页面用于会员输入其ID和密码。
清单default.htm
<
contentType=”text/html;
charset=gb2312”>
HTML>
!
—
Copyright©
1999cuug,liu.
HEAD>
TITLE>
CUUGONLINEBOOKSTORE–MEMBERLOGIN<
/TITLE>
/HEAD>
BODYbgcolor=”white”>
H1align=”center”>
CUUG网上书店<
/H1>
H2align=”center”>
会员登录页<
/H2>
P>
&
nbsp;
/P>
CENTER>
FORMMETHOD=POSTACTION=”checklogon.jsp”>
BR>
fontsize=5color=”green”>
请输入会员代号和密码:
<
br>
会员代码:
inputTYPE=”text”name=memberID>
密&
码:
inputTYPE=”password”name=pwd>
INPUTTYPE=submitname=submitValue=”登录”>
/font>
/FORM>
/CENTER>
/BODY>
/HTML>
下面只需要查看记录集是不是为空,如果为空,则说明登陆失败;
否则,登陆成功。
2.用户注册模块
注册模块,会出现在很多程序中,这里借鉴了其他注册程序的流程。
注册模块的核心思想是向数据库中输入数据,并且数据要不能重复,下面是注册模块的程序流程图如下图3所示。
图3注册程序流程图
Stringsql1;
sql1="
Insertinto
member(user_name,user_pass,user_adds,user_mail,user_tel,user_regip,user_postcode,user_namec,user_type)values('
"
+user_name+"
'
'
+user_pass+"
+user_adds+"
+user_mail+"
+user_tel+"
+request.getRemoteHost()+"
+user_postcode+"
+getStr(request.getParameter("
user_namec"
))+"
会员'
)"
;
mdb.executeInsert(sql1);
数据通过验证后,向数据库输入数据,数据库会保存相关的注册信息。
3.提交定单模块
4.定单处理模块
定单处理模块的设计思路:
用户提交定单后,管理员通过后台数据处理,可以查看全部的定单信息,由于定单编号是按照时间来命名的,管理员很容易查看到最新的定单信息。
同时,本模块还和其他两个系统有间接的关系,一个是付款系统,另外一个是物流系统。
定单的有效性和付款系统有直接关系,管理员处理的定单,通过审核的条件必须是付过书款的。
另外,如果是有效定单,必须通过物流给用户寄发图书。
定单处理程序流程图如下图4所示。
图4定单处理程序流程图
主要代码实现:
try
{
Class.forName(sDBDriver);
//处理异常
catch(java.lang.ClassNotFoundExceptione)
System.err.println("
数据库连接:
+e.getMessage());
}//数据库的连接
conn=DriverManager.getConnection(sConnStr);
stmt=conn.createStatement();
for(inti=0;
i<
id.length;
i++){
intmyUpdate=stmt.executeUpdate("
updatesubsetsub_check=truewheresub_number='
+id[i]+"
);
intmUpdate=stmt.executeUpdate("
updatebasketsetbasket_admincheck=truewheresub_number='
//对定单数据进行具体到更新操作,更新两张表中的信息。
本模块是系统的核心,主要负责定单的审查,是定单的流程最后一个环节,也是最重要的一个环节。
5.图书查询模块
大量的数据中找到用户需要的数据,这样的数据挖掘很有必要。
同样,系统中也提供这样的查询,在数据库的SQL中,查询实现很简单,本系统的查询也是根据SQL的查询语句实现的,通过模糊匹配,实现对图书信息的查询。
其具体实现是输入关键字,如果数据库中有记录,便会显示出查询的结果,没有记录则显示找不到与之对应的书。
这其中主要是在系统的数据库中进行查找。
查询界面如下图5所示。
图5查询页面图
主要的查询代码:
Stringhw_name,sort_id;
if(session.getAttribute("
sort_id"
)==null){
hw_name=getStr(request.getParameter("
hw_name"
));
sql="
select*fromhwwherehw_namelike'
%"
+hw_name+"
%'
orderbyhw_idDESC"
rs=mdb.executeQuery(sql);
else{
sort_id=request.getParameter("
select*fromhwwheresort_id='
+sort_id+"
andhw_namelike'
主要的程序设计思路是通过控件传递关键字给SQL语句,然后在数据库中进行查询操作。
6.图书信息维护模块
本模块主要是修改模块,对图书信息的修改。
管理员通过本模块可以查询到系统中现有的图书信息,然后选择相关的图书信息进行修改,程序主要是实现数据库中的更新SQL语句。
图书信息维护程序流程如下图6所示。
图6图书信息维护程序流程图
程序设计思路:
本模块主要是通过获得有效的修改信息,直接在数据库中执行SQL语句,SQL语句在数据库中执行完成对数据的更新。
四.系统测试
1.软件测试的目标和定义:
(1)测试是为了发现程序中的错误而执行程序的过程。
(2)好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案。
(3)成功的测试是发现了至今为止尚未发现的错误的测试。
在对本网络书店销售管理系统测试时,也正是基于上述观点来进行的,测试的目的不是证明系统是完美的,而是发现问题,更好的解决问题,使系统不断完善,满足客户的需求。
2.测试的准则
为了能设计出行之有效的测试方案,必须深入理解并正确运用指导软件测试的基本准则。
下面列举主要的测试准则:
(1)所有的测试都应该追溯到用户需求。
(2)应该在开始测试之前就制定出测试计划。
(3)把Pareto原理应用到软件测试中。
Pareto原理说明,测试发现的错误中80%很可能是由程序中的20%模块造成的。
(4)应该从“小模块”测试开始,并逐步进行“大模块”测试。
(5)穷举测试是不可能的。
(6)为了达到最佳的测试效果,应该由独立的第三方从事测试工作。
3.单元测试实例
测试一:
在管理员登陆时,用户名或密码有一项为空或者填写错误,系统是否出现预先设定的操作提示。
预期效果:
输入错误及时报错。
具体操作:
用户名、密码、任意一项为空或者填写有误。
结果:
都出现相应的错误原因的信息提示。
结论:
要求管理员必须填写正确的用户名和密码,才能进入管理页面,测试成功。
测试二:
修改本站的公告﹑返回前台,看其是否更新成功。
修改过后能及时更新内容。
通过信息管理页面中的修改公告功能修改公告的内容,看其是否修改成功。
公告内容更新为修改后的信息。
修改公告功能正常,测试成功。
测试三:
管理员删除一注册用户后,并让其登陆,看是否登陆成功。
该用户不能再进行登陆。
管理员删除一会员表中的用户后,该用户在前台登陆。
该用户无法登陆。
用户数据删除功能正常,测试成功。
测试四:
添加﹑删除一条书籍信息﹑返回前台,看其是否添加删除成功。
能立即更新添加或删除的内容。
在信息管理页面中添加﹑删除一条书籍信息。
显示新添加的书籍信息内容、被删除的书籍没有再显示。
书籍的添加删除功能正常,测试成功。
测试五:
管理员删除一图书的信息,在前台按关键字查询,看其是否能找到对应的信息。
用户不能再查找到该书。
在图书管理页面中的图书查看与修改页面中删除一图书的信息。
在前台搜索中,按关键字查询不到此书信息。
删除图书信息功能正常,测试成功。
4.系统的维护主要包括四个方面
(1)程序的维护:
修改部分或全部程序,这种维护往往是在条件发生变化或原系统的效率低的情况下进行的。
(2)数据文件的维护:
按照用户的要求对数据文件进行不定期的修改。
(3)代码的维护:
随着系统的发展和变化,可能会出现旧代码不能适应新要求的问题,因此,有必要变更代码,予以维护。
(4)硬件的维护:
对系统所使用的设备进行维护。
五.结论
经过近两个周的设计和开发,网络书店销售管理系统基本开发完毕。
其功能基本符合需求,对于数据的一致性的问题也通过程序进行了有效的解决。
在系统的开发过程中,主要作了以下工作:
1.比较了传统的书店销售管理模式与当代网络书店销售管理模式的优点和缺点。
2.深入学习了JSP和Eclipse以及Tomcat等开发工具,掌握了许多实用的开发技巧。
3.从撰写需求分析报告基本上对软件开发流程有了更加深刻的认识。
由于缺乏经验以及时间仓促,所以该系统还有许多不尽如人意的地方,比如用户界面不够美观,出错处理不够,无帮助文档等多方面问题,这些都有待进一步改善。
另外,本系统用于测试的时间较短,存在未知的错误也在所难免。
主要存在以下一些问题:
1.系统的某些设计的可扩展性并不十分理想,在以后的系统维护过程中,使用重构方法对系统进行重构,使系统的设计日益趋于更强的可扩展性。
2.多开发和使用用户控件,以提高代码的重复使用率和运行效率方面欠佳,有待进一步改善。
3.在功能实现方面,定单处理模块设计中还有不足,同时更新两张表中的信息,为保证数据的一致性,应该使用数据库中的事物处理机制,如果出现异常情况,数据库回滚到初始状态。
模块中的程序没有考虑到这种具体情况,有待改进。
4.在网上书店的设计过程中由于本人设计水平有限再加上时间比较仓促,网站的部分功能没有实现。
此外还有许多功能需要拓展,需要进一步完善和优化。
六.参考文献
[1]方逵主编;
许向阳等编写.JSP编程技术与应用.北京:
高等教育出版社2003,No.5:
10
[2]张晓雁,李朝葵.网上书店研究综述[J].图书馆学刊,2002,No.5:
41.
[3]孙海峰.促进我国电子商务发展的思考[A].经济师,2004,No.1:
138.
[4]JSP应用教程.石志国,薛为民,董洁编著.北京:
清华大学出版社,2004,No.3:
25
[5]DanielWybrow,PateCameron-MaccDonald.ManagementInformationSystems:
Dotheygivemanufacturingorganizationswhattheywant?
[J].JournalofMaterialsProcessingTechnology,1996,Vol3
(2):
61.
课程设计成绩评定表
学生姓名
徐广奇
专业班级
计本05.2
设计题目
小型网上书店课程设计(JSP)
指导教师评语及意见:
指导教师评阅成绩:
指导教师签字:
年月日