《网站设计与开发》实验报告设计题目:网上书城管理系统专业班级:物流管理 13-2 班学号: 2013218418姓名:李金远指导老师:程浩、许君2016年12月03日目录1系统分析 (2)1.1需求分析 (2)1.2数据流图 (3)1.3功能分析 (5)2数据库设计 (5)2.1.ER图 (5)2.2数据库逻辑结构设计 (6)3系统设计 (9)3.1搜索商品,订单生成,会员管理订单和管理员管理订单模块 (10)3.2商品管理模块 (14)3.3缺货管理及仓库管理模块 (16)3.4其他模块 (18)3.5数据库的连接 (20)4 系统实现 (21)4.1登陆模块 (21)4.2购物车以及订单模块 (23)4.3缺货登记模块 (30)4.4其他模块 (32)5总结及展望 (33)1.系统分析1-1需求分析网上书城系统主要是实现网上选书、购书、产生订单等功能的系统。
一个典型的网上商城一般都需要实现商品信息的动态提示、购物车管理、客户信息注册登录管理、订单处理等模块。
根据网上书店的基本需求,本系统需要完成的具体任务如下:A.书图查询: 当客户进入网上书店时,应该在主页面中分类显示最新的书目信息以及热卖的图书信息以供客户选择所需图书,同时也应该提供按照图书名称,或者类别查询所需书目信息的功能。
B.购物车管理:当客户选择购买某图书产品时,应该能够将对应图书信息,如:价格、数量记录到对应的购物车中,并允许客户返回书目查询页面,选择其他商品,并添加到购物车中,当对应的购物订单付款成功后生成后,应该能够自动清除以生成订单的购物车中的信息。
C.订单处理:对应客户购买图书商品信息的需求,在确定了所购图书商品的价格、数量等信息后,提示用户选择对应的送货方式及付款方式,最终生成对应的订单记录,并通过后续的订单是否执行来进行后续的出货、送货的处理。
D.会员注册:为了能够实现图书商品的购买,需要管理客户相关的联系方式、送货地点等相关的信息。
E.留言回复:会员能给商城留言,商城的管理员能对未回复的留言进行回复,同时对于回复的内容相应的会员可以查看。
F.公告管理:管理员能够修改公告,并在首页可见G.商品管理:管理员能够管理商品的上下架以及对商品的基本信息进行修改。
H.仓库管理:管理员对已经付款的订单进行发货处理,并在仓库管理中对发货商品进行出库,同时也能够对缺货的商品进行出货。
I.缺货登记:会员在给相应缺货的商品登记后,管理员可以查看各个缺货信息,相应的货物入库后管理员能告知会员商品已经到货。
J.物流管理:管理员选择相应的物流公司进行配送,也可以更改对物流公司的选择。
若单笔订单的价格超过了50元,可以免去物流配送费。
1-2数据流图1-2-1顶层:1-2-2第一层:1-2-3处理订单细化1-2-6物流管理细化1-2-7库存管理细化1-2-7缺货登记细化1-2-8处理留言细化1-2-9留言回复细化1-3功能分析1-3-1前台部分1-3-1后台部分2.数据库设计2-1 ER图2-1-1 总ER图2-1-2 分ER图顾客,物流,留言,回复订单,订单详细商品,缺货商品2-2数据库逻辑结构设计3.系统设计总体设计图用户表示层(视图)控制处理层(控制器)业务逻辑层(模型)jsp ActionForm Action DAO VO3-1搜索商品,订单生成,会员管理订单和管理员管理订单模块3-1-1流程图3-1-2系统调用图 购物模块个人订单和后台订单模块3-1-3用到的视图,重要的类及控制器说明3-1-4视图页面的详细说明搜索出的商品bookshow.jsp页面详细功能及描述●获取搜索的关键字●分页显示符合关键字并且在发布中的商品●商品缺货(数量不足)则提供用户缺货登记的超级链接●提供将选中的商品加入购物车的超级链接●点击商品图标可以详细查看商品本界面显示了搜索出符合关键字的并且在发布中的商品,您可以点击加入购物车将该商品直接加入购物车,也可以点击图标进行商品信息的详细查看,如果该商品数量不足,可以使用“缺货登记’的超级链接进行缺货登记。
首先需要登录才能完成。
显示购物车信息cart.jsp页面详细功能及描述●获取该用户购物车信息的集合●提交更新数量的表单●循环显示每一条购物信息●设置购买数量的文本框●显示总价●显示每本图书的书名,数量,单价●对在购物车中的图书删除●提交更新的按钮●提交继续购买的超级链接●提交生成订单的超级链接本界面是用户选择购买某种图书后,想对购物车进行查看访问的界面,界面提供了现有的购买记录,也能对数量进行修改和对相应的物品进行删除。
单击“更新”按钮后,将提交给“cart.do?method = update”请求,进行更新处理,也可以单击“继续购书”,提交给“bookSearch.do”请求返回主页面继续购书。
同时,单击“生成订单”进行订单的生成操作。
填写订单信息order.jsp页面的详细功及描述●获取用户登录用户名●填写收件人姓名,地址,联系电话,邮编●提交给订单生成的超级链接本界面是用户在购物车点击生成订单的超级链接后进入的页面,首先对登录的该用户进行用户名读取和Email的读取,同时,由于收件人可能课注册人不一样,所以需要重新对收件人姓名,地址,联系电话,邮编进行输入,当点击确认后,将提交给“order.do”进行订单号的获取以及对订单表及订单条目表进行数据插入。
订单信息确认ordercomfirm.jsp页面的详细功及描述●订单信息及商品信息的输出●返回继续购书的超级链接●确认付款的超级链接本界面是刚才进行订单填写的订单的输出,能够显示出订单的信息及购买商品的信息,特别能输出订单号,由于涉及免运费,则提供继续返回购书的超级链接,当点击“确认付款”的超级链接后,系统将数据库中订单表中的执行状态置为“已执行”。
然后自动返回首页。
个人订单信息查看memorder.jsp页面的详细功及描述●不同的用户根据登陆的用户名查看个人的订单信息●订单号显示为超级链接,点击进入相应的订单详情查看●未付款的超级链接,点击进行付款操作●已经付款的订单可以显示是否发货本界面是不同的用户查看自己订单信息,初步显示订单号,收件人姓名,订单价格以及订单执行状态,每个订单号是超级链接,点击进入查看订单详情及相应的商品购买信息。
在“订单状态”,未付款为超级链接,点击即可进行付款。
若已经付款的订单,可以看见是否发货后台订单信息管理bgordermange.jsp页面的详细功及描述●显示所有的订单信息●已经付款的订单若未发货可以直接发货●点击相应的订单号查看订单详细信息●未付款的订单可以直接删除3-2商品管理模块3-2-1流程图3-2-2系统调用图3-1-3用到的视图,重要的类及控制器说明3-2-4视图页面的详细说明商品发布页面addbook.jsp详细功能及描述●提供一些基本信息的文本框进行商品基本信息的输入本界面提供了商品的基本信息的输入,将输入的基本信息传给控制器“addbook.do”,调用相应的类插入数据库,商品ID号是自动生成的。
商品管理页面bookmang.jsp详细功能及描述●显示所有商品的基本信息●点击对应的商品ID可以查看详细的信息●提供商品的状态,并可以根据超级链接进行相应的商品上下架的操作●可以删除指定的商品本界面通过先调用”bookmang.do”中的show控制器从数据库中读取所有商品的信息。
在该界面中,点击对应的ID号可以查看商品的全部信息。
后面的商品状态时看商品是否在架上,商品STATE字段如果是1,显示已发布,点击对应的超链接则下架,同理STATE字段是0,则未发布,点击上架。
最后面有商品的删除超级链接,可以删除指定的商品。
商品类别管理页面bgbooktype.jsp详细功能及描述●在这页显示所有的大类●点击进入对应的大类显示的小类页面●提供添加小类的文本框本界面首先调用”bgtype.do”的“show”显示所有的大类,并在其后跟上超级练级,点击对应的超级链接则调用”bgtype.do”的“subshow”显示相应的小类,提供了添加小类的文本框,输入则小类添加成功,调用”bgtype.do”的“update”传入数据库插入。
3-3缺货管理及仓库管理模块3-3-1流程图3-3-2系统调用图3-3-3用到的视图,重要的类及控制器说明3-3-4视图页面的详细说明个人缺货查看页面memlack.jsp详细功能及描述●提供了个人已经登记的缺货信息显示,●显示商家是否回复本界面首先调用”bglack.do”中的”membershow”显示个人已经登记的缺货信息,并且能看到商家对缺货信息是否回复。
后台缺货管理页面bglack.jsp详细功能及描述●显示所有登记了缺货的用户及对应商品的信息●能够对没有回复用户的缺货信息进行缺货回复本界面首先调用”bglack.do”中的”show”显示所有缺货信息,并且对没有回复的信息进行回复(回复即代表对应的商品到货).后台库存管理页面stock.jsp详细功能及描述●显示所有商品的库存量●手动设置出库●手动设置入库本界面首先调用”stock.do”中的” show”显示所有商品的库存量,并且设置了相应的出库,入库的超级链接,点击则进入相应的页面进行出入可的操作。
3-4其他模块由于其他模快功能性与前面大部分一致,故在此略述,给出相应的系统调用图,相应的类和控制器通过系统调用图给出,对重要的类做说明。
3-4-1留言回复模块系统调用图重要的类:NoteVO 封装留言的类ReplyVO 封装回复的类memReplyDAO 管理员回复3-4-2会员管理模块系统调用图重要的类:MemVO 封装会员信息的类 memsateDAO 对会员的状态进行改变,冻结/解冻3-4-3登陆注册模块 3-4-4物流模块 系统调用图重要的类:WLVO 封装物流的类3-5数据库的链接本次实验依然采用了JDBCODBC 桥的方式进行数据库的链接,但是链接过程用类名为Db 的JA V ABEAN 封装,返回一个返回值是Connection 的方法,以后的DAO 需要进行数据库的链接操作时,只要调用该方法即可。
4.系统实现4-1登陆模块效果图:(效果图借鉴互联网)首先输入用户名和密码,若其中有一为空值则返回提示,返回重新输入(图一),将不为空的用户名和密码传给LoginAction,首先根据保存在session变量中的login值进行判断,是从订单转过来的登陆还是正常的登陆,login!=null,则为订单传递过来的登陆,否则为正常的登陆,调用LoginDAO对传入的值进行判断,返回不同的返回值对对应用户,管理员,密码为错,账户冻结四种情况,(图二,三,四,五)。
图二图三图四图五关键代码:LoginActionString password = request.getParameter("password");String username = request.getParameter("username");if(username==""||password==""){request.setAttribute("info", "d");return mapping.findForward("info");}String login = (String)session.getAttribute("login");username=Chinese.convert(username);int i = 0;if (login!=null) /////////////////////////////由订单页面转来的登陆{LoginDAO logindao = new LoginDAO();i = logindao.loginselect(username,password);if (i==1){ request.setAttribute("login","4"); //////////////////////////跳转到订单生成session.setAttribute("username", username);return mapping.findForward("show");}else{request.setAttribute("login","3");return mapping.findForward("show");}}else//////////////////正常的登陆{if(username.equals("weizenan")&&(password.equals("123456"))) { request.setAttribute("login","1");return mapping.findForward("show");}else{LoginDAO dao = new LoginDAO();i = dao.loginselect(username,password);if (i==1){ request.setAttribute("login","2")///////////登陆成功,返回首页session.setAttribute("username", username);return mapping.findForward("show");}if (i==2){ request.setAttribute("login","5"); /////////////账户冻结中return mapping.findForward("show");}else{request.setAttribute("login","3"); /////////////用户名或密码错误return mapping.findForward("show");}LoginDAOsql = "select * from member where username=? ";pre = con.prepareStatement(sql);pre.setString(1,username);ResultSet rs = pre.executeQuery();while (rs.next()){String pw = rs.getString("password");int state= rs.getInt("state");if (password.equals(pw)&&state!=0)return 1; 用户名密码符合if (password.equals(pw)&&state==0)return 2; 账户冻结………………….return 0; 用户名或密码错误4-2购物车以及订单模块4-2-1购物车:效果图:搜索图详情查看购物车图搜索采用分页搜索,将搜索出的商品可以加入购物车,也可以点击书名进行详情查看。