北京工业大学 网络编程基础课设 报告
更新时间:2023-08-27 15:56:01 阅读量: 教育文库 文档下载
- 北京工业大学推荐度:
- 相关推荐
北京工业大学(北工大) 计算机学院 计算机科学与技术 实验/课程设计 报告/心得/总结/预习报告
实 验 报 告
计 算 机 学 院
课程名称: 网络程序设计 实验人学号:110703xx 姓名:xxx 实验完成日期:2014年5月31日 报告完成日期:2014年5月31日
北京工业大学(北工大) 计算机学院 计算机科学与技术 实验/课程设计 报告/心得/总结/预习报告
目录
一、
需求说明 ................................................................................................................ 3 1、基本需求 ............................................................................................................................. 3 2、辅助需求 ............................................................................................................................. 3 3、数据分析 ............................................................................................................................. 3 二、
1、
应用程序详细设计 ................................................................................................. 4 实现技术 ....................................................................................................................... 4
2、页面转移关系设计 ............................................................................................................. 4 3、人机界面设计 ..................................................................................................................... 5
3.1、index.jsp ................................................................................................................... 5
3.2、Directory.jsp ............................................................................................................. 5 3.3、Cart.jsp ..................................................................................................................... 6 3.4 Order.jsp...................................................................................................................... 6 4、对象模型设计 ..................................................................................................................... 7
4.1、界面对象 .................................................................................................................. 7
4.2、控制器 ...................................................................................................................... 7 4.3、业务模型 .................................................................................................................. 7 5、数据设计 ............................................................................................................................. 7
5.1、图书信息(数据库表、查询结果) ...................................................................... 7 5.2、购物车信息 .............................................................................................................. 7 5.3、共享数据 .................................................................................................................. 8 6、动态模型: ......................................................................................................................... 8 7、EJB接口设计: .................................................................................................................. 8
7.1、BookinfoFacade管理图书信息(封装数据库) ................................................... 8 7.2、CartBean管理购物车信息(本次会话有效)............................................................ 9 8、控制器(CtrlServlet)的输入信息: ........................................................................... 10 8.1、来自查询页 ............................................................................................................ 10 8.2、来自图书目录页 .................................................................................................... 10 8.3、来自购物车页 ........................................................................................................ 10 9、控制器算法概要: ........................................................................................................... 10
9.1、模糊查询search .................................................................................................... 10 9.2、查看购物车 ............................................................................................................ 11 9.3、结算 ........................................................................................................................ 11 9.4、继续选书 ................................................................................................................ 12 9.4、再次查询 ................................................................................................................ 12 10、异常控制及处理 ............................................................................................................. 12
北京工业大学(北工大) 计算机学院 计算机科学与技术 实验/课程设计 报告/心得/总结/预习报告
10.1、index.jsp->Directory.jsp查无此书的处理 .......................................................... 12 10.2、Directory.jsp页面未勾选任何商品的处理 ........................................................ 13 10.3、Cart.jsp->Order.jsp页面商品数量输入不是int的处理 .................................... 14 10.4、Cart.jsp页面address未填写的处理 .................................................................. 14 10.5、Cart.jsp页面商品数量未输入或输入为0的处理 ............................................ 15 10.6、Directory.jsp->Cart.jsp多次添加同一件商品的处理 ......................................... 16
三、
1、
用户使用说明 ....................................................................................................... 17 使用步骤: ................................................................................................................. 17
一、 需求说明
1、基本需求
a) 提供基于关键字的查询功能,关键字可以包含在书名、作者或出版社的任意一条内;
b) 提供购物车,保存选中的图书信息以及提供数量输入; c) 提供图书订单,包含选购的图书信息、总价以及配送地址;
2、辅助需求
a) 支持反复查询、图书选择和订单浏览; b) 提供浏览器界面;
3、数据分析
a) 图书信息->数据库;
b) 购物车->本次会话有效,置于session中。
北京工业大学(北工大) 计算机学院 计算机科学与技术 实验/课程设计 报告/心得/总结/预习报告
二、 应用程序详细设计
1、 实现技术
1.1、采用MVC模式 JSP实现View;
Servlet实现Control; EJB实现model。 1.2、交互关系:
JSP表单动作(form)->CtrlServlet; Servlet转发->JSP页面; 1.3、数据传输:
Servlet调用EJB对象获得数据;
Servlet通过session参数传递给JSP页面。
2、页面转移关系设计
北京工业大学(北工大) 计算机学院 计算机科学与技术 实验/课程设计 报告/心得/总结/预习报告
3、人机界面设计
3.1、index.jsp
3.2、Directory.jsp
北京工业大学(北工大) 计算机学院 计算机科学与技术 实验/课程设计 报告/心得/总结/预习报告
3.3、Cart.jsp
3.4 Order.jsp
北京工业大学(北工大) 计算机学院 计算机科学与技术 实验/课程设计 报告/心得/总结/预习报告
4、对象模型设计
4.1、界面对象
查询页index.jsp;
图书目录页 Directory.jsp; 购物车页 Cart.jsp; 定单页 Order.js;
4.2、控制器
CtrlServlet 负责响应输入命令
包括:模糊查询key、查看购物车cart、结算order 、继续选书continue、再次查询search
4.3、业务模型
图书信息:Bookinfo 实体类的会话Bean 购物车信息:CartBean 会话Bean
5、数据设计
5.1、图书信息(数据库表、查询结果)
书号ISBN 书名Title 作者Author 出版社Press 价格Price
char[24] 主键 char[64] char[32] char[32] double
5.1.1、数据展示
5.2、购物车信息
书号ISBN 书名Title
char[24] char[64]
北京工业大学(北工大) 计算机学院 计算机科学与技术 实验/课程设计 报告/心得/总结/预习报告
价格Price 数量Number double Integer
5.3、共享数据
查询结果和选中的图书信息 作为 session参数
6、动态模型:
7、EJB接口设计:
7.1、BookinfoFacade管理图书信息(封装数据库)
7.1.1、search(String key)
描述:根据关键字从数据库中查找图书信息记录(数组); 条件:书名、作者或出版社中包含关键字; 具体实现: @Override
public ArrayList<Bookinfo> search(String key) { List<Bookinfo> all = this.findAll(); if(all.isEmpty()) { return null; }
北京工业大学(北工大) 计算机学院 计算机科学与技术 实验/课程设计 报告/心得/总结/预习报告
ArrayList<Bookinfo> result=new ArrayList<Bookinfo>() ; for(Bookinfo current : all) {
if(current.getTitle().toLowerCase().contains(key)||current.getAuthor().toLowerCase().contains(key)||current.getPress().toLowerCase().contains(key)) { result.add(current); } }
return result; }
7.1.2、find(String isbn)
描述:根据书号(主键),找出图书信息记录; 具体实现:由系统自动生成。
7.2、CartBean管理购物车信息(本次会话有效)
7.2.1、add(String isbn) 添加记录
描述:向购物车添加一条记录 具体实现: @Override
public void add(String isbn, String title, double price, int number) { cartList.add(new CartBean(isbn, title, price, number)); }
7.2.2、gets() 获得购物车的全部记录
具体实现: @Override
public ArrayList<CartBean> gets() {
ArrayList<CartBean> result = new ArrayList<CartBean>(); for (CartBean current : cartList) {
result.add(new CartBean(current.getIsbn(), current.getTitle(), current.getPrice(), current.getNumber())); }
return result;
} 7.2.3、set(String isbn, int num) 设置购买数量 具体实现: @Override
public void set(String isbn, int number) { for (CartBean current : cartList) {
if (current.getIsbn().equals(isbn)) { current.setNumber(number);
北京工业大学(北工大) 计算机学院 计算机科学与技术 实验/课程设计 报告/心得/总结/预习报告
}
}
7.2.4、exists(String isbn) 查询购物车中是否已经存在此种商品 具体实现:
@Override
public boolean exists(String isbn) { for (CartBean current : cartList) {
if (current.getIsbn().equals(isbn)) { return true; } }
return false;
}
8、控制器(CtrlServlet)的输入信息: 8.1、来自查询页
page=”search”&key=关键字
8.2、来自图书目录页
page=”directory”&submit=”cart”&choose=书号拼接字符串 page=”directory”&submit=”search”
8.3、来自购物车页
page=”cart”&submit=”order” page=”cart”&submit=”continue” page=”cart”&submit=”search”
9、控制器算法概要:
9.1、模糊查询search
描述:按照key从Bookinfo查找图书,将查询结果命名为directory保存在session中,并重定向到Directory.jsp中。 具体实现:
//index->Directory,根据关键字构造查询结果
if (request.getParameter("page").equals("index")) { key = request.getParameter("key");
//将根据关键字查询到的结果存到session中 request.getSession().setAttribute("directory", bookinfoFacade.search(key.toLowerCase()));
response.sendRedirect("Directory.jsp");
北京工业大学(北工大) 计算机学院 计算机科学与技术 实验/课程设计 报告/心得/总结/预习报告
9.2、查看购物车
描述:根据选定的图书对应的checkbox的选定情况构造chooses书号拼接字符串,然后在CtrlServlet中根据空格分割,调用cartBean.exists(String isbn)方法检测购物车中是否已存在次图书。在购物车中不存在此商品的情况下根据isbn号调用bookinfoFacade.find(String isbn)找到对应的图书信息存入CartBean,并重定向到Cart.jsp中。 具体实现:
//Directory->Cart将所选的书籍添加到购物车中
else if (request.getParameter("page").equals("Directory")
&& request.getParameter("submit").equals("cart")) { String choose = request.getParameter("chooses"); String[] chooses = choose.split(" "); for (int i = 0; i < chooses.length; i++) { if (!cartBean.exists(chooses[i])) {
cartBean.add(chooses[i], bookinfoFacade.find(chooses[i]).getTitle(), bookinfoFacade.find(chooses[i]).getPrice(), 1); } }
request.getSession().setAttribute("cart", cartBean.gets()); response.sendRedirect("Cart.jsp"); }
9.3、结算
描述:根据用户输入的图书数量更新CartBean中对应的图书的数量信息,并将address信息以address为名存储到session中,重定向到Order.jsp页面。 具体实现:
//Cart->Order,购物车生成订单
else if (request.getParameter("page").equals("Cart")
&& request.getParameter("submit").equals("order")) { Enumeration names = request.getParameterNames(); while (names.hasMoreElements()) {
String name = (String) names.nextElement(); if (!name.equals("page") && !name.equals("submit") && !name.equals("address")) {
for (int i = 0; i < request.getParameter(name).length(); i++) {
if (!Character.isDigit(request.getParameter(name).charAt(i))) { response.sendRedirect("Cart.jsp");
//这里必须终止处理请求,否则会出错TODO:Why? return; } }
this.cartBean.set(name, Integer.valueOf(request.getParameter(name))); }
北京工业大学(北工大) 计算机学院 计算机科学与技术 实验/课程设计 报告/心得/总结/预习报告
}
request.getSession().setAttribute("cart", this.cartBean.gets()); request.getSession().setAttribute("address", request.getParameter("address"));
response.sendRedirect("Order.jsp"); }
9.4、继续选书
描述:返回图书目录页(session中的cart信息不会丢失) 具体实现:
//Cart->Directory,调整选购的商品,继续利用之前的查询结果 else if (request.getParameter("page").equals("Cart")
&& request.getParameter("submit").equals("continue")) { response.sendRedirect("Directory.jsp"); }
9.4、再次查询
描述:重定向到index.jsp页面进行重新查询(session中的信息并不会丢失),这里分两种情况,分别是Directory->index、 Cart->index。 具体实现:
//Directory->index,重新查询
else if (request.getParameter("page").equals("Directory")
&& request.getParameter("submit").equals("search")) { response.sendRedirect("index.jsp"); }
//Cart->index,重新查询
else if (request.getParameter("page").equals("Cart")
&& request.getParameter("submit").equals("search")) { response.sendRedirect("index.jsp"); }
10、异常控制及处理
10.1、index.jsp->Directory.jsp查无此书的处理
描述:BookinfoFacade的search(String key)方法会返回一个null的结果,在Directory.jsp页面首先判断session中的directory是否为空,为空则显示如下,并提示提供重新查询的选项。
北京工业大学(北工大) 计算机学院 计算机科学与技术 实验/课程设计 报告/心得/总结/预习报告
具体实现:
<% ArrayList<Bookinfo> result = (ArrayList<Bookinfo>) session.getAttribute("directory"); //result = null 是由于数据库没有记录,result为空是由于没能和关键字匹配 if (result == null || result.isEmpty()) {%>
<font color="blue"><h1>未查询到指定关键字!请返回重新查询</h1></font><p> <form name="search" action="CtrlServlet">
<input type="hidden" name="page" value="Directory" /> <input type="submit" name="submit" value="search" /> </form> <% }
10.2、Directory.jsp页面未勾选任何商品的处理
描述:提交到CtrlServlet的表单的提交条件设置为OnSubmit ="return Checker();",Checker()方法中会检查checkbox数组是否至少有一件商品被选中,如果没有,则返回false,不允许表单进行提交,并弹窗提示” 请至少选择一本书籍~ “。
具体实现:
<script language="JavaScript" type="text/javascript">
北京工业大学(北工大) 计算机学院 计算机科学与技术 实验/课程设计 报告/心得/总结/预习报告
function Checker() {
var form1 = document.getElementById("form1"); form1.chooses.value = ""; if (!form1.choose.length) { if (form1.choose.checked)
form1.chooses.value += form1.choose.value; } else {
for (i = 0; i < form1.choose.length; i++) {
if (form1.choose[i].checked) // 复选框中有选中的框 {
form1.chooses.value += form1.choose[i].value; form1.chooses.value += " "; //用空格做分割符 } } }
if (form1.chooses.value === "") { alert("请至少选择一本书籍~"); return false; }
return true; }
</script>
10.3、Cart.jsp->Order.jsp页面商品数量输入不是int的处理
描述:在Cart的表单提交到CtrlServlet后,对所有数量输入框的提交字符串进行逐位数字检测,只要有任意数量输入的任意字符不为int,则重定向回Cart.jsp重新输入。 具体实现:
for (int i = 0; i < request.getParameter(name).length(); i++) {
if (!Character.isDigit(request.getParameter(name).charAt(i))) { response.sendRedirect("Cart.jsp");
//这里必须return,否则会出错TODO:Why? return; } }
10.4、Cart.jsp页面address未填写的处理
描述:提交到CtrlServlet的表单的提交条件设置为OnSubmit ="return Checker();",Checker()方法中会检查address.value是否为空,为空则返回false不允许提交,并弹窗提醒” 地址不能为空,请输入!”。
北京工业大学(北工大) 计算机学院 计算机科学与技术 实验/课程设计 报告/心得/总结/预习报告
10.5、Cart.jsp页面商品数量未输入或输入为0的处理
描述:提交到CtrlServlet的表单的提交条件设置为OnSubmit ="return Checker();",Checker()方法中会检查每个数量输入是否为空,并检查其是否为0,匹配则返回false不允许提交,并弹窗提醒” 每件商品至少选购一件!”。
具体实现:
北京工业大学(北工大) 计算机学院 计算机科学与技术 实验/课程设计 报告/心得/总结/预习报告
function Checker() {
var address = document.getElementById("address");
var number = document.getElementsByClassName("number"); if (!number.length) {
if (number.value === "" || number.value === "0") { alert("每件商品至少选购一件!"); return false; } } else {
for (i = 0; i < number.length; i++) {
if (number[i].value === "" || number[i].value === "0") { alert("每件商品至少选购一件!"); return false; } } }
if (address.value === "") {
alert("地址不能为空,请输入!"); return false; }
return true; } </script>
10.6、Directory.jsp->Cart.jsp多次添加同一件商品的处理
描述:在一次购物过程中可能从Cart.jsp返回到Directory.jsp或通过其他途径回退更改商品,此时就可能出现两次或多次选择同一商品的情况,针对这种情况在CtrlServlet中商品入购物车之前先调用cartBean.exists(String isbn)判断是否购物车中已存在此商品,存在的话则不加入。
具体实现:
if (!cartBean.exists(chooses[i])) {
cartBean.add(chooses[i], bookinfoFacade.find(chooses[i]).getTitle(), bookinfoFacade.find(chooses[i]).getPrice(), 1); }
北京工业大学(北工大) 计算机学院 计算机科学与技术 实验/课程设计 报告/心得/总结/预习报告
三、 用户使用说明
1、 使用步骤:
打开浏览器后,首先进入的是index.jsp,在此页您可以进行图书查询;
当查询有结果时,您将会看到根据您之前输入的关键字的匹配图书清单,否则您需要重
新进行查询。如果您对查询的结果不满意,也可以点击search按钮返回查询页面进行重新查询;
北京工业大学(北工大) 计算机学院 计算机科学与技术 实验/课程设计 报告/心得/总结/预习报告
您可以通过勾选想选购的图书并点击cart将其加入购物车。
当进入购物车页面时,您可以看到之前勾选过的商品,此时您可以点击order按钮进行
下单,如果您还有想买的商品未加入购物车,可以通过点击continue按钮返回查询结果页面进行继续选购,或者可以通过点击search的方式重新查询想要的商品。
北京工业大学(北工大) 计算机学院 计算机科学与技术 实验/课程设计 报告/心得/总结/预习报告
如果您对选购的商品满意,请输入您想购买的数量并填写送货地址,并点击order下单。
正在阅读:
北京工业大学 网络编程基础课设 报告08-27
Java实验五 简单银行账户应用程序(输入输出处理) - 504-02
初中综合实践活动实施方案01-12
150万吨焦炉烟气回收项目经济可研分析及锅炉开车操作规程03-19
机器人创新设计作品说明材料07-01
义务教育教科书英语(Go for it!)七年级上册tapescripts06-14
广东省高明实验中学高中语文粤教版选修传记选读学案:在哈金森工厂 精品10-06
毕节职卫台帐(空表)05-05
听爸爸讲家族孝道传承作文07-13
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 北京工业大学
- 基础课
- 网络编程
- 报告