2022年网上书店系统课程设计文档 .pdf

上传人:H****o 文档编号:32547202 上传时间:2022-08-09 格式:PDF 页数:31 大小:889.08KB
返回 下载 相关 举报
2022年网上书店系统课程设计文档 .pdf_第1页
第1页 / 共31页
2022年网上书店系统课程设计文档 .pdf_第2页
第2页 / 共31页
点击查看更多>>
资源描述

《2022年网上书店系统课程设计文档 .pdf》由会员分享,可在线阅读,更多相关《2022年网上书店系统课程设计文档 .pdf(31页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、网上书店系统设计文档李璐祎 06043123 1 网络编程基础课程设计文档网上书店系统姓名李璐祎学号06043123 班级060706 指导教师廖湖声名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 31 页 - - - - - - - - - 网上书店系统设计文档李璐祎 06043123 2 目录网络编程基础课程设计文档. 1网上书店系统 . 1一、功能需求. 3二、整体架构设计. 3三、具体实现与算法设计. 5四、网上书店系统全部实现代码. 10五、测试及结果. 26名

2、师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 31 页 - - - - - - - - - 网上书店系统设计文档李璐祎 06043123 3 一、功能需求1、提供基于关键字的查询功能。2、提供购物车,保存选中的图书和数量。3、提供图书定单。4、支持反复查询、图书选择和定单浏览。5、提供浏览器界面。6、图书信息从JDBC 数据库中读取。7、购物车本次会话有效。二、整体架构设计1、架构思想:基于J2EE 体系结构(1)表示逻辑层:JSP (2)控制逻辑层:Servlet +

3、JavaBean + 会话 Bean (3)数据表示层:实体Bean 2、页面转移关系设计:查询页search.jsp购物车页cart.jsp图书目录页directoty.jsp模糊查询再次查询查看购物车再次查询继续选书定单页order.jsp结算3、实现技术(1)采用MVC 模式名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 31 页 - - - - - - - - - 网上书店系统设计文档李璐祎 06043123 4 JSP 实现页面视图View Servlet 实现

4、控制Control EJB 实现业务模型Model (2)交互关系JSP 表单动作( form )提交给 CtrlServlet 控制Servlet 转发调用JSP 页面(3)数据传输Servlet 调用EJB 对象获得数据Servlet 通过session 参数传递给JSP 页面4、对象模型设计(1)界面对象:查询页search.jsp,图书目录页directory.jsp ,购物车页cart.jsp,定单页order.jsp (2)控制器: CtrlServlet 负责响应输入命令包括:模糊查询key、查看购物车cart、结算 order 、继续选书continue、再次查询search

5、(3)业务模型图书信息: BookBean 实体类的会话Bean 购物车信息: CartBean 会话 Bean 5、动态转移关系图search.jspdirectory.jspcart.jspBookStoreBeanCartBeanorder.jspCtrlServletkeycartsearchordercontinuesearchaddgetssetfindget名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 31 页 - - - - - - - - - 网上书店

6、系统设计文档李璐祎 06043123 5 三、具体实现与算法设计1、数据设计:(1)图书信息(数据库表、查询结果)书号 ISBN char24 主键书名 Title char64 作者 Author char32 出版社 Press char32 价格 Price double (2)购物车信息书号 ISBN char24 数量 Number integer (3)共享数据a.查询结果和选中的图书信息b.作为session参数在 NetBeans6.5 版本中建立内置的JDBC 数据库 BookStore,建立表 BookStore,输入的测试数据如下:2、EJB接口设计(1)Bookstor

7、eFacade 管理图书信息(封装数据库)search(String key):根据关键字从数据库中查找出图书信息记录(数组 );条件:书名、作者、出版社名中包含关键字;根据书号,找出图书信息记录具体算法如下:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 31 页 - - - - - - - - - 网上书店系统设计文档李璐祎 06043123 6 public ArrayList search(String key) List all = this.findAll()

8、; if(all.isEmpty() return null; ArrayList result=new ArrayList() ; for(Bookstore current : all) if(current.getTitle().toLowerCase().contains(key)|current.getAuthor().toLowerCase().contains(key)|current.getPress().toLowerCase().contains(key) result.add(current); return result; (2)CartBeanBean 管理购物车信息

9、(本次会话有效)add(String isbn, String title, double price ) 添加记录代码如下:private ArrayList record; public void add(String isbn, String title, double price) record.add(new Cart(isbn, title, price, 1); public ArrayList get() 获得记录数组实现代码如下:public ArrayList get() ArrayList result = new ArrayList(); for (Cart curre

10、nt : record) result.add(new Cart(current.getIsbn(), current.getTitle(), current.getPrice(), current.getNumber(); return result; set(String isbn, int number) 设置购买数量public void set(String isbn, int number) for (Cart current : record) if (current.getIsbn().equals(isbn) current.setNumber(number); 名师资料总结

11、 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 31 页 - - - - - - - - - 网上书店系统设计文档李璐祎 06043123 7 3、控制器( CtrlServlet )的输入信息(1)来自查询页 search.jsp page=“ search” &key= 关键字(2)来自图书目录页directory.jsp page=“ directory ”(3)来自购物车页cart.jsp page=“ cart”(4)控制器( CtrlServlet)的实现代码packag

12、e bookstore; import BookStore.BookstoreFacadeRemote; import BookStore.CartBeanRemote; import java.io.IOException; import java.io.PrintWriter; import java.util.Enumeration; import javax.ejb.EJB; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.Ht

13、tpServletRequest; import javax.servlet.http.HttpServletResponse; /* * * author liluyi */ public class CtrlServlet extends HttpServlet EJB private CartBeanRemote cartBeanBean; EJB private BookstoreFacadeRemote bookstoreFacade; protected void processRequest(HttpServletRequest request, HttpServletRespo

14、nse response) throws ServletException, IOException response.setContentType(text/html;charset=UTF-8); PrintWriter out = response.getWriter(); request.setCharacterEncoding(UTF-8); try 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 31 页 - - - - - - - - - 网上书店系统设计文

15、档李璐祎 06043123 8 if (request.getParameter(page).equals(search) / 从search.jsp定 向 到directory.jsp String keyword = request.getParameter(key); request.getSession().setAttribute(query, keyword); request.getSession().setAttribute(directory, bookstoreFacade.search(keyword.toLowerCase(); response.sendRedirec

16、t(directory.jsp); if (request.getParameter(page).equals(directory) / 从directory.jsp定向到cart.jsp if (!cartBeanBean.initialed() cartBeanBean.create(); Enumeration names = request.getParameterNames(); while (names.hasMoreElements() String name = (String) names.nextElement(); if (!name.equals(page) & !na

17、me.equals(submit) if (!cartBeanBean.exist(request.getParameter(name) cartBeanBean.add(request.getParameter(name), bookstoreFacade.find(request.getParameter(name).getTitle(), bookstoreFacade.find(request.getParameter(name).getPrice(); request.getSession().setAttribute(cart, cartBeanBean.get(); respon

18、se.sendRedirect(cart.jsp); if (request.getParameter(page).equals(cart) /从 cart.jsp 定向到 order.jsp double sum = 0; Enumeration names = request.getParameterNames(); while (names.hasMoreElements() String name = (String) names.nextElement(); if (!name.equals(page) & !name.equals(submit) & !name.equals(ad

19、dress) cartBeanBean.set(name, Integer.parseInt(request.getParameter(name); sum += bookstoreFacade.find(name).getPrice() * Integer.parseInt(request.getParameter(name); request.getSession().setAttribute(cart, cartBeanBean.get(); request.getSession().setAttribute(fee, sum); request.getSession().setAttr

20、ibute(address, request.getParameter(address); response.sendRedirect(order.jsp); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 31 页 - - - - - - - - - 网上书店系统设计文档李璐祎 06043123 9 finally out.close(); / /* * Handles the HTTP GET method. * param request servlet reque

21、st * param response servlet response * throws ServletException if a servlet-specific error occurs * throws IOException if an I/O error occurs */ Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException processRequest(request, respon

22、se); /* * Handles the HTTP POST method. * param request servlet request * param response servlet response * throws ServletException if a servlet-specific error occurs * throws IOException if an I/O error occurs */ Override protected void doPost(HttpServletRequest request, HttpServletResponse respons

23、e) throws ServletException, IOException processRequest(request, response); /* * Returns a short description of the servlet. * return a String containing servlet description */ Override public String getServletInfo() return Short description; / 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - -

24、 名师精心整理 - - - - - - - 第 9 页,共 31 页 - - - - - - - - - 网上书店系统设计文档李璐祎 06043123 10 四、网上书店系统全部实现代码在 NetBeans6.5 中先建立数据库BookStore,并且输入测试数据。单击“文件 /新建项目 /Java EE/企业应用程序” , 输入项目名称BookStore,确定后会建立J2EE项目 BookStore。在 BookStore-war 节点单击右键,新建JSP文件。1、图书查询页 search.jsp 代码: 网上书店 -查询页 欢迎光临网上书店! 请输入您要查询的图书的关键字(书名、作者或出版

25、社) 2、图书目录页 directory.jsp代码: 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 31 页 - - - - - - - - - 网上书店系统设计文档李璐祎 06043123 11 网上书店 -查询结果页 查询结果 % ArrayList result = (ArrayList) session.getAttribute(directory); if (result = null) % 抱歉,目前没有您需要的图书 符合查询关键字的图书如下 书名 作者

26、 出版社 价格 input type=checkbox name= value= / 如果您还需要更多的图书, 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 31 页 - - - - - - - - - 网上书店系统设计文档李璐祎 06043123 12 3、购物车页面 cart.jsp 代码:a 网上书店 -购物车 % ArrayList result = (ArrayList) session.getAttribute(cart); if (result = nu

27、ll | result.isEmpty() % 您还没有将任何图书收藏到购物车 您的购物车中暂存着如下图书,请输入您要购买的图书数量 书名 价格 数量 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 31 页 - - - - - - - - - 网上书店系统设计文档李璐祎 06043123 13 input type=text name= value= / 请 输 入 您 的 地 址: 4、订单页 order.jsp 代码: 网上书店 -订单确定页 名师资料总结 - -

28、 -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 31 页 - - - - - - - - - 网上书店系统设计文档李璐祎 06043123 14 % ArrayList result = (ArrayList) session.getAttribute(cart); if (result = null | result.isEmpty() % 系统错误,请稍候重新选购 请确认您的订单 图书名称 订购数量 您的订单总额为 元 图 书 将 会 于 近 日 送 往 以 下 地 址 , 请 您 注

29、 意 查 收 5、在 BookStore-war节点单击右键,新建Servlet ,键入名称 CtrlServlet ,并建立包 bookstore ,代码如下:package bookstore; import BookStore.BookstoreFacadeRemote; import BookStore.CartBeanRemote; import java.io.IOException; import java.io.PrintWriter; import java.util.Enumeration; import javax.ejb.EJB; import javax.servle

30、t.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 31 页 - - - - - - - - - 网上书店系统设计文档李璐祎 06043123 15 /* * * autho

31、r liluyi */ public class CtrlServlet extends HttpServlet EJB private CartBeanRemote cartBeanBean; EJB private BookstoreFacadeRemote bookstoreFacade; /* * Processes requests for both HTTP GET and POST methods. * param request servlet request * param response servlet response * throws ServletException

32、 if a servlet-specific error occurs * throws IOException if an I/O error occurs */ protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException response.setContentType(text/html;charset=UTF-8); PrintWriter out = response.getWriter(); re

33、quest.setCharacterEncoding(UTF-8); try if (request.getParameter(page).equals(search) / 从search.jsp定 向 到directory.jsp String keyword = request.getParameter(key); request.getSession().setAttribute(query, keyword); request.getSession().setAttribute(directory, bookstoreFacade.search(keyword.toLowerCase(

34、); response.sendRedirect(directory.jsp); if (request.getParameter(page).equals(directory) / 从directory.jsp定向到cart.jsp if (!cartBeanBean.initialed() cartBeanBean.create(); Enumeration names = request.getParameterNames(); while (names.hasMoreElements() String name = (String) names.nextElement(); if (!

35、name.equals(page) & !name.equals(submit) if (!cartBeanBean.exist(request.getParameter(name) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 31 页 - - - - - - - - - 网上书店系统设计文档李璐祎 06043123 16 cartBeanBean.add(request.getParameter(name), bookstoreFacade.find(reques

36、t.getParameter(name).getTitle(), bookstoreFacade.find(request.getParameter(name).getPrice(); request.getSession().setAttribute(cart, cartBeanBean.get(); response.sendRedirect(cart.jsp); /*if (request.getParameter(page).equals(directory) & request.getParameter(submit).equals(search) / 从 directory.jsp

37、 定向到 search.jsp response.sendRedirect(search.jsp); */ if (request.getParameter(page).equals(cart) /从 cart.jsp 定向到 order.jsp double sum = 0; Enumeration names = request.getParameterNames(); while (names.hasMoreElements() String name = (String) names.nextElement(); if (!name.equals(page) & !name.equal

38、s(submit) & !name.equals(address) cartBeanBean.set(name, Integer.parseInt(request.getParameter(name); sum += bookstoreFacade.find(name).getPrice() * Integer.parseInt(request.getParameter(name); request.getSession().setAttribute(cart, cartBeanBean.get(); request.getSession().setAttribute(fee, sum); r

39、equest.getSession().setAttribute(address, request.getParameter(address); response.sendRedirect(order.jsp); /*if (request.getParameter(page).equals(cart) & request.getParameter(submit).equals(continue) / 从 cart.jsp 定向到 directory.jsp response.sendRedirect(directory.jsp); if (request.getParameter(page)

40、.equals(cart) & request.getParameter(submit).equals(search) / 从 cart.jsp 定向到 search.jsp response.sendRedirect(search.jsp); */ finally out.close(); /* 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 16 页,共 31 页 - - - - - - - - - 网上书店系统设计文档李璐祎 06043123 17 * Handles the

41、HTTP GET method. * param request servlet request * param response servlet response * throws ServletException if a servlet-specific error occurs * throws IOException if an I/O error occurs */ Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletExcepti

42、on, IOException processRequest(request, response); /* * Handles the HTTP POST method. * param request servlet request * param response servlet response * throws ServletException if a servlet-specific error occurs * throws IOException if an I/O error occurs */ Override protected void doPost(HttpServl

43、etRequest request, HttpServletResponse response) throws ServletException, IOException processRequest(request, response); /* * Returns a short description of the servlet. * return a String containing servlet description */ Override public String getServletInfo() return Short description; / 6、在 BookSt

44、ore-ejb节点单击右键,新建“通过数据库生成实体类”,选择数据源 “新建数据源”, 将 BookStore 数据库添加到数据源中, 选择表源 BookStore ,点击下一步即可根据前面建立的数据库BookStore创建实体类,创建包BookStore ,将实体类命名为Bookstore 。会自动生成实体类Bookstore.java ,代码如下:package BookStore; import java.io.Serializable; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - -

45、 - 第 17 页,共 31 页 - - - - - - - - - 网上书店系统设计文档李璐祎 06043123 18 import javax.persistence.Basic; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.NamedQueries; import javax.persistence.NamedQuery; import javax.persistence.Table; /* *

46、 * author liluyi */ Entity Table(name = BOOKSTORE) NamedQueries(NamedQuery(name = Bookstore.findAll, query = SELECT b FROM Bookstore b),NamedQuery(name = Bookstore.findByIsbn, query = SELECT b FROM Bookstore b WHERE b.isbn = :isbn), NamedQuery(name = Bookstore.findByTitle, query = SELECT b FROM Book

47、store b WHERE b.title = :title), NamedQuery(name = Bookstore.findByAuthor, query = SELECT b FROM Bookstore b WHERE b.author = :author), NamedQuery(name = Bookstore.findByPress, query = SELECT b FROM Bookstore b WHERE b.press = :press), NamedQuery(name = Bookstore.findByPrice, query = SELECT b FROM B

48、ookstore b WHERE b.price = :price) public class Bookstore implements Serializable private static final long serialVersionUID = 1L; Id Basic(optional = false) Column(name = ISBN) private String isbn; Column(name = TITLE) private String title; Column(name = AUTHOR) private String author; Column(name =

49、 PRESS) private String press; Column(name = PRICE) private Double price; public Bookstore() public Bookstore(String isbn) this.isbn = isbn; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 18 页,共 31 页 - - - - - - - - - 网上书店系统设计文档李璐祎 06043123 19 public String getIsbn()

50、return isbn; public void setIsbn(String isbn) this.isbn = isbn; public String getTitle() return title; public void setTitle(String title) this.title = title; public String getAuthor() return author; public void setAuthor(String author) this.author = author; public String getPress() return press; pub

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 技术总结

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com