《动态网站设计》
实训报告
实训题目: 网上书店
专 业: 计算机机网络
班 级: 10计网(1)班
姓 名: 朱芳兵
指导教师: 梁兴波
二0一二年 六 月 13 日
目 录
1.实训目的. 1
2.实训题目描述和要求. 2
3.实训报告内容. 3
3.1 需求分析. 3
3.2 概要设计. 4
3.3 详细设计. 5
3.4 代码实现. 14
3.5 程序测试. 18
4.总结. 20
实训指导教师评语. 22
1.实训目的
本课程属于实践环节,教学的主要任务是从应用和实践的角度出发,使学生通过实践操作掌握本课程所讲述的理论知识,为提高学生的动手能力,开发动态网站与系统打下基础。
它要求学生掌握JSP+JavaBean与MVC的设计模式、SQLServer 2005数据库设计等。
对我们JSP学习前一段的总结,掌握一定的JSP语句,由此可以看到自己的不足之处,在今后的学习中能站到一定的高度对待我们所学的内容。
掌握JSP程序设计方法;理论联系实际,进一步提高学生制作网页的基础;培养学生分析、解决问题的能力;提高学生实训报告撰写能力。
通过JSP的学习,可以独立的编写留言板、上传规格、考试系统、连接SQLserver数据库、以及怎么样配置运行jsp服务器
实习要求:懂得什么是JSP,运行原理,它的基本语法,内置对象,服务端的输出缓冲区,文件流的读取,jsp数据库如:jdbc、odbc、mysql、(转载自第一范文网http://www.diyifanwen.com,请保留此标记。)oracle等,jsp与javaBeans,java Servlet等
JSP是Java Server Pages的缩写,是由Sun公司倡导、许多公司参与,于1999年推出的一种动态网页技术标准。JSP是一个建立安全的、夸平台的先进动态网页技术。
2.实训题目描述和要求
本课程属于实践环节,教学的主要任务是从应用和实践的角度出发,使我们通过实践操作掌握本课程所讲述的理论知识,提高我们的动手能力,开发动态网站与系统打下基础。
它要求我们掌握JSP+JavaBean与MVC的设计模式、SQLServer 2005数据库设计等。
根据教学要求,本课程共设50学时,最终制作出一个电子商务网站—网上书站,要求具备用户注册功能、购物车功能、购买清单查询功能、添加、修改、删除书目功能等。由于计算机技术不断发展,尤其是网页制作的发展,使得JSP的使用已渗透到各行各业,因此社会对JSP开发人才的需求不断增大。整个实训课程教学内容从应用的角度出发,在理论和实践上掌握JSP运用,使学生能独立设计制作网页的整个过程和步骤。
3.实训报告内容
3.1 需求分析
本系统的网上书店分为前后台两个管理系统:客户管理系统是在 Internet 上接受来自全国各地的客户访问的网上书店前台销售管理系统(网站):管理员 管理系统是在 Internet 内部用于书店的管理员管理的网上书店后台管理系统。
本系统的客户管理系统:A. 当客户进入网上书店时,应该在主页面分类显示评分排行图书信息,以供客户选择评分最高的图书,同时也应该提供按照阅读排行图书,或者作者信息快速查询所需信息的功能。 B. 当客户选择购买某图书产品时,,如果是没有登录的话就转入登录界面,如果该客户还不是注册的会员时就转入注册界面,当客户登录以后或者注册成功以后就自动。当会员选择购买某一图书时应该要将相应的图书信息,例如:价格.数量.图书编号记录到对应购物车中,并允许会员返回书目查询页面,继续选择其他的商品,并一起添加到购物车中, C. 订单处理:对应的会员购买图书商品信息的需求,在确定了所购买图书的所有信息后,最终生成对应的订单记录,以便于网站配货人员依据订单信息进行后续的出货.送货的处理。
根据实训要求,最终制作出一个电子商务网站—网上书站,要求具备用户注册功能、购物车功能、购买清单查询功能、添加、修改、删除书目功能等。
3.2 概要设计
1)图书查询:当客户进入网上书店时,应该在主页面中分类显示评分排行的书目信息,以供客户选择所需图书,同时也应该提供按照图书名称,或者作者信息快速查询所需书目信息的功能。
2)购物车管理:当客户选择购买某图书产品时,应该能够将对应图书信息,例如:价格、数量记录到对应购物车中,并允许客户返回书目查询页面,选择其它商品,并添加到购物车中,当对应购物订单生成后,应该能够自动清除以生成订单的购物车中的信息。
3)订单处理:对应客户购买图书商品信息的需求,在确定了所购图书商品的价格、数量等信息后,最终生成对应的订单记录,以便于网站配货人员依据订单信息进行后续的出货、送货的处理。
4)会员注册:为了能够实现图书商品的购买,需要管理客户相关的联系方式。
流程图:
3.3 详细设计
Index.jsp
<%@ page contentType="text/html;charset=utf-8" %>
<%@ include file="incoming/common.jsp"%>
<html>
<head>
<title>网上书店</title>
<link href="incoming/style.css" rel="stylesheet" type="text/css">
<script language="javascript">
functioncheckform() {
if (form1.userid.value.length<1 || form1.userid.value.length>15){
alert("请输入正确的用户名!");
form1.userid.focus();
returnfalse;
}
if (form1.password.value.length<1 || form1.password.value.length>15){
alert("请输入正确的密码!");
form1.password.focus();
returnfalse;
}
returntrue;
}
</script>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body>
<%@ include file="incoming/header.jsp"%>
<tablewidth="904"border="0"align="center">
<tr>
<td width="244" height="437" valign="top"><table width="238" border="0">
<tr>
<td width="238" height="45" align="center" valign="middle" bgcolor="#E2DFEA">用户登录
</div>
<form name="form1" method="post" action="chklogin.jsp">
<table width="100%" border="1" cellpadding="0" cellspacing="0" bordercolor="#CCCCCC">
<tr>
<td width="45%" height="25" align="right">用户名:</td>
<td width="55%">
<input name="userid" type="text" id="userid2" size="8" maxlength="25">
</td>
</tr>
<tr>
<td height="27" align="right">密码</td>
<td>
<input name="password" type="password" id="password" size="8" maxlength="20">
</td>
</tr>
<tr>
<td height="34" colspan="2" align="center">
<input type="submit" name="Submit" value="登录"
onclick="javascript:return(checkform());">
<input type="reset" name="Submit2" value="取消">
</td>
</tr>
<tr>
<td height="36" colspan="2"><div align="center"> 若不是本站会员,请在此 <a href="register.jsp">注册 </a></div></td>
</tr>
</table>
</form>
<table width="244" height="216" border="0" bgcolor="#80A8DB">
<tr>
<td width="238" height="212" align="center"><img src="images/dong.gif" width="226" height="197" align="absmiddle" /></td>
</tr>
</table></td>
<td width="644" height="437" align="center" valign="top"><table width="643" border="0">
<tr>
<td height="20" align="center" bgcolor="#D3D2E2">精品书集</td>
</tr>
</table>
<table width="647" height="420" border="1" cellpadding="0"
cellspacing="0" background="image/bei1.jpg">
<tr>
<td width="165" rowspan="6" align="left" valign="top" background="images/CSS.jpg"><img src="images/CSS.jpg" width="163" height="209" /></td>
<td width="476" height="42" align="left" bgcolor="#BBC3E8"> 书名: 图灵程序设计《CSS基础教程》中文版
编程实战训练丛书</td>
</tr>
<tr>
<td height="34" align="left" bgcolor="#BBC3E8"> 作者:朱芳兵</td>
</tr>
<tr>
<td height="30" align="left" bgcolor="#BBC3E8"> 出版社:人民邮电出版社; 第1版 (20##年9月1日) </td>
</tr>
<tr>
<td height="31" align="left" bgcolor="#BBC3E8"> 出版日期:20##-6-1</td>
</tr>
<tr>
<td height="39" align="left" bgcolor="#BBC3E8"> 条型码 :9787115164629 </td>
</tr>
<tr>
<td height="28" align="left" bgcolor="#BBC3E8"> 价格:45元 </td>
</tr>
<tr valign="top">
<td height="207" colspan="2" align="left" bgcolor="#CACAE2"><p align="center" class="STYLE1">内容简介: </p>
<p>
《CSS 基础教程》是优秀的CSS 入门书,重点讲述了如何使用CSS 实现基于Web 标准的网站开发,实现网站内容和表现相分离。《CSS 基础教程》包括两部分。第一部分介绍了CSS 的基础知识和基本概念,再利用CSS 分别对网页创建中的一些基本元素加上样式,包括:文本、图像、列表、链接、表格、表单等。第二部分主要讨论了基于CSS 来实现网页基本布局的相关概念与技术,包括浮动、流体布局等。《CSS 基础教程》最后还给出了一个真实的案例,将《CSS 基础教程》的所有内容进行了综合讨论。</p>
<p> 《CSS 基础教程》适合于各层次Web 开发人员、设计人员和测试人员学习参考。</p></td>
</tr>
</table></td>
</tr>
</table>
<%@ include file="incoming/footer.jsp"%>
</body>
</html>
<%@ page contentType="text/html;charset=utf-8" %>
<%@ include file="incoming/common.jsp"%>
<%@ include file="incoming/check.jsp"%>
<html>
<head>
<title>网上书店</title>
<link href="incoming/style.css" rel="stylesheet" type="text/css">
</head>
<body>
<%@ include file="incoming/header.jsp"%>
<br><a class="title">在线购书</a><br>
<%
DBSQLManager dbsm = new DBSQLManager();
String sql="SELECT * FROM bookinfo ";
dbsm.setSqlStr(sql);
dbsm.executeQuery();
ResultSet rs=dbsm.getRs();
%>
<table width="700" border="1" cellpadding="0" cellspacing="0">
<tr>
<td width="43%" height="26"><div align="center">书名</div></td>
<td width="17%"><div align="center">作者</div></td>
<td width="17%"><div align="center">出版社</div></td>
<td width="5%"><div align="center">价格</div></td>
<td width="9%"><div align="center">操作</div></td>
</tr>
<% while(rs.next())
{
%>
<tr>
<td height="32"><div align="center"><%=rs.getString("TITLE")%></div></td>
<td><div align="center"><%=rs.getString("AUTHOR")%></div></td>
<td><div align="center"><%=rs.getString("PUBLISHER")%></div></td>
<td><div align="center"><%=rs.getFloat("PRICE")%></div></td>
<td><div align="center"><a href="bookdetail.jsp?isbn=<%=rs.getString("ISBN")%>"><img src="images/buy.gif" width="45" height="16" border="0""></a></div></td>
</tr>
<%}%>
</table>
<p> </p>
<%@ include file="incoming/footer.jsp"%>
</body>
</html>
<%@ page contentType="text/html;charset=utf-8" %>
<%@ include file="incoming/common.jsp"%>
<%@ include file="incoming/check.jsp"%>
<%
String isbn = new String(request.getParameter("isbn").trim().getBytes("ISO-8859-1"));
String buynum = new String(request.getParameter("buynum").trim().getBytes("ISO-8859-1"));
Vector buylist = (Vector)session.getValue("shopcar");
int ismatch = 0;
Book book = new Book(isbn, Integer.parseInt(buynum));
if (buylist == null)
{
buylist = newVector();
buylist.addElement(book);
}
else
{
for(int i=0; i<buylist.size(); i++)
{
Book _book =(Book)buylist.elementAt(i);
if(_book.getIsbn().equals(book.getIsbn()))
{
_book.setBuynum(_book.getBuynum()+book.getBuynum());
buylist.setElementAt(_book,i);
ismatch = 1;
}
}
if(ismatch==0)
buylist.addElement(book);
}
session.putValue("shopcar", buylist);
response.sendRedirect("shopcar.jsp");
%>
<%@page contentType="text/html;charset=utf-8"%>
<%@ include file="incoming/common.jsp"%>
<%
String userid = new String(request.getParameter("userid").trim().getBytes("ISO-8859-1"));
String password = new String(request.getParameter("password").trim().getBytes("ISO-8859-1"));
String sql = "SELECT * FROM userpassword WHERE USER_ID='"+userid+"' AND USER_PASSWORD='"+password+"'";
DBSQLManager dbsm = new DBSQLManager();
dbsm.setSqlStr(sql);
dbsm.executeQuery();
ResultSet rs = dbsm.getRs();
if (!rs.next())
{
String errmsg="error1";
response.sendRedirect("login.jsp?errmsg="+errmsg);
return;
}
request.getSession(true);
String chk="true";
session.putValue("Enter",chk);
session.putValue("userid",userid);
response.sendRedirect("booklist.jsp");
%>
3.4 代码实现
首页,如图:
注册用户:
在线购书:
我的购物车:
我的订单:
网络管理员登录:
管理图书:
添加图书:
修改图书:
3.5 程序测试
注册成功:
用户登陆
购买成功
删除:
添加图书:
修改图书
查看个人信息
4.总结
JSP是一门新技术,他基于Java Servlet以及整个java体系的Web开发技术。从网上得知Java的中文问题历史悠久,连绵不绝,至今也没有完全解决,但是上有政策下有对策,我们总是有办法搞定它的。跟Java相关的中文问题主要有两类,一类是编程的问题,涉及到I/O,内码转换等。第二类是Java运行环境的配置,涉及字体,属性配置等。觉得很有必要给自己写个备忘录之类的。
学习了JSP,感触很深,这一技术是需要有一定基础、而且动手能力强的学科。书上也强调一点是:要想真正地掌握JSP技术,必须有较好的java语言基础,以及HTML语言方面的知识。想想的确对啊。
通过一周的实习JSP,这个实习,使我初步掌握和了解了JSP的基本运行原理、各个对象的结构和功能、怎样连接数据库、能自己手动写code开发一些小网页。并且,自己能够组建一台JSP服务器,而且还了解了安装过程中,所要注意的事项。对于一些简单的小问题,能够自己动手排除。
在这次实训,面对一道陌生的题目和要求,首先应该想到课本上的知识与其相结合,虽然,这次的实训是做一个网上书店的这个网站,但是,如果不去认真课的话,我想,一定会出现很多的错误,就像一个小小的符号,这都无不考量着我们的细心和严谨,所以学习JSP,不仅对我们以后学习其他语言有很大的好处,而且让我们知道了和理解了作为一个编程人员要具有良好的心理素质,那就是冷静思考和专心致志。
这次实训,我们更多学到的是不懂就问和自己应该尽自己的全力去尝试,哪怕失败,只要自己尽自己的全力,和身边同学一起探讨而不是抄袭,团结合作,互相帮助,顺利完成老师这次实训的要求,那样才是真正完成这次的实训的目的。
参考书目:(小四号,宋体加粗)
[1] 作者名1,作者名2,作者名3.《书名》.地点:出版社.出版时间
[2] 王诚君.《电脑组装与维护新编教程》.北京:清华大学出版社.2007.11
(要求:小四号字,宋体,单倍行距。按作者、书名、地点、出版社、出版时间格式逐一列出,中间用全角状态的实心小圆点”.”格开。如作者有多名,作者名之间用逗号隔开。出版社地点与出版社之间用:连接。)
江西工业职业技术学院电子与信息工程分院
实训指导教师评语
班级:计网(一)班 学生姓名:朱芳兵 学号:20101772
指导教师评语(包括工作态度,遵守纪律;基本理论、知识、技能;独立工作能力和分析解决问题的能力;完成任务情况及水平):
学生成绩(五级分制)
指导教师签名: 年 月 日