毕业设计论文基于JSP的网上订餐系统设计.doc

上传人:sccc 文档编号:4864948 上传时间:2023-05-20 格式:DOC 页数:24 大小:992.52KB
返回 下载 相关 举报
毕业设计论文基于JSP的网上订餐系统设计.doc_第1页
第1页 / 共24页
毕业设计论文基于JSP的网上订餐系统设计.doc_第2页
第2页 / 共24页
毕业设计论文基于JSP的网上订餐系统设计.doc_第3页
第3页 / 共24页
毕业设计论文基于JSP的网上订餐系统设计.doc_第4页
第4页 / 共24页
毕业设计论文基于JSP的网上订餐系统设计.doc_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《毕业设计论文基于JSP的网上订餐系统设计.doc》由会员分享,可在线阅读,更多相关《毕业设计论文基于JSP的网上订餐系统设计.doc(24页珍藏版)》请在三一办公上搜索。

1、 毕业论文(设计) 题目: 网上订餐系统 学院/系 计算机科学与工程系 专 业 学 号 姓 名 指导教师 2011年 05月 14日目 录1、开发环境12、系统分析12.1、需求分析12.2、可行性分析13、系统设计23.1、模块设计23.2、功能模块图23.3、数据库设计概述43.4、数据库设计周期43.5、E-R图设计53.7、数据库设计74、详细设计94.1、主页面模块94.2、用户注册模块104.3、用户登录模块104.4、菜品浏览模块114.5、订餐车模块124.6、订单确认模块134.7、订单提交模块144.8、后台管理员登陆144.9、 后台主界面164.10、菜品类别管理164

2、.11、菜品管理174.12、订单管理185、系统调试与测试185.1、程序调试185.2、程序的测试185.2.1、测试的重要性及目的185.2.2、测试的步骤195.2.3、测试的主要内容196、结 论20致 谢211、开发环境开发工具:MyEclipse 开发环境:windows XP开发语言:jsp数据库: SQL Server 20002、系统分析2.1、需求分析“民以食为天”,随着人民生活水平的提高,餐饮业在服务行业中占有越来越重要的地位。努力在当前餐饮行业日趋激烈的竞争中脱颖而出,已成为每位餐饮业经营者 所追求的目标。网络订餐实现了小店面大作为的成本效益,解决了因为店面小的限制而

3、无法提高营业额的难题,是一个小投入大成效的经营新模式。在网上参观订餐的人相对网下人来说还是比较少,一个是对网上餐馆的信用度持疑虑态度;另一个是网上订餐只可以看到物品的说明简介和外观,没有看到实体于细节处,无法通过快速浏览确定是不是自己想要的菜品。而这正是传统的实体餐馆优于网上餐馆的地方。而在网上订餐的人都是一般都是对电脑比较熟练的人,也就就是比较年青化的消费群体。就是白领、大学生、高中生和对计算机操作相对比较熟的人。因为这些人工作都比较忙,而且对计算机也比较熟,思想也比较超前,对于在网上订餐能够接受,并经常上网订餐。2.2、可行性分析经济可行性研究是对组织的经济现状和投资能力进行分析,对系统建

4、设运行和维护费用进行估算,对系统建成后可能取得的社会和经济效益进行估计。技术可行性要考虑现有的技术条件是否能够顺利完成开发工作,软硬件配置是否满足开发的需求等。订餐管理系统用的是JSP开发语言,调试相对简单,当前的计算机硬件配置也完全能满足开发的需求。软件方面:由于目前单机模式相对发展成熟,故软件的开发平台成熟可行,它们速度快、容量大、可靠性能高、价格低,完全能满足系统的需求。运行可行性对新系统运行后给现行系统带来的影响(包括组织机构、管理方式、工作环境等)和后果进行估计和评价。同时还应考虑现有管理人员的培训、补充,分析在给定时间里能否完成预定的系统开发任务等。3、系统设计3.1、模块设计(a

5、)用户注册(b)用户登录(c)菜品浏览(d)菜品订购(e)菜品查询(f)订单修改(g)修改密码(h)修改个人信息(i)管理员3.2、功能模块图前台功能图(如图3-1)主要包括客户进入网站后进行的相应操作。首先,客户需要注册会员登录,如果不注册会员则不能进行订餐的下一步操作。其次,会员注册成功后,以会员身份登录网站,则可以进行会员信息修改,订单信息查询修改,网上订餐以及网站留言等功能。用户注册信息修改在线订餐注册用户功能模块定单查询、删除及修改菜单搜索图3-1前台功能图系统用户管理前台会员管理后台管理功能模块菜品类别设置订单管理菜品信息管理图3-2后台功能图后台功能图(如图3-2)主要介绍系统管

6、理员登录网站后台进行的相应操作。首先,管理者需登录后台网站。其次,登录成功后,可进行系统用户管理、菜品类别设置、网站新闻发布、菜品信息管理等。订单及管理流程图(如图3-3)介绍了用户从开始订餐到网站后台管理者查看订单,实现送货,更改订单状态的整个过程,也是整个订餐系统的运作过程。下订单流程图: 订单管理流程图:开始选择菜品确定菜品信息确定用户信息提交定单开始处理定单修改定单状态派送菜品下订单结束前台用户登录后台用户登录验证信息结束图3-3订单及管理流程图3.3、数据库设计概述 数据库设计是指对于一个给定的应用环境,提供一个确定最优数据模型与处理模式的逻辑设计,以及一个确定数据库存储结构与存取方

7、法的物理设计,建立起既能反映现实世界信息和信息联系,满足用户数据要求和加工要求,又能被某个数据库管理系统所接受,同时能实现系统目标,并有效存取数据的数据库。 3.4、数据库设计周期 根据软件工程的思想,数据库设计的周期可以划分为六个阶段: 规划阶段:确定开发的总目标,给出计划开发的软件系统的功能、性能以及可靠性等方面的设想。 需求分析阶段:认真细致地了解用户对数据的加工要求,确定系统的功能与边界。 设计阶段:把需求分析阶段所确定的功能细化,主要工作是概念设计阶段、逻辑设计阶段、物理设计阶段,然后,对每个阶段内部设计详细的流程。 程序编制阶段:以一种或几种特定的程序设计语言表达上一阶段确定的各模

8、块控制流程。程序编制时应遵循结构化程序设计方法。 调试阶段:对已编好的程序进行单元调试(分调),整体调试(联调)和系统测试(验收)。 运行和维护阶段:是整个设计周期最长的阶段,其工作重点是收集和记录系统实际运行的数据。在运行中,必须保持数据库的完整性,必须有效地处理数据故障和进行数据库恢复。同时解决开发过程的遗留问题,改正错误进行功能完善。 在我们的数据库系统建设中,着重考虑了以下两个标准保证数据的一致性: 字段标准:字段标准不统一是造成数据库难以共享的一个主要原因,因为字段的设计处于数据库设计的最底层,或者可以说是最基本的一层,如果这一层都不能统一的话,会直接影响到数据库中数据的共享。 代码

9、标准:代码的引入为保持数据库中数据的一致性提供了一个重要手段。 此外本数据库设计主要遵循以下原则: 数据库文件的实用性,数据库文件的安全性,数据库文件的独立性,节省磁盘空间。数据库设计是要在一个给定的应用环境(DBMS)中,通过合理的逻辑设计和有效的物理设计,构造较优的数据库模式、子模式,建立数据库和设计应用程序,满足用户的各种信息需求。物理结构设计的原则如下:1.尽可能的减少数据冗余和重复。2.结构设计与操作设计相结合。3.数据结构具有相对的稳定性。基于以上设计原则,本系统设计了一个数据库,包含基本信息表(如员工类别、存货等)及几个实体联系建模后的表(如散件销售、整机销售等)。为了加快系统访

10、问的速度把这些表放在一个数据库中。3.5、E-R图设计用户注册信息用户登陆信息网络订餐系统 菜品浏览信息系 统用户信息修改信息用户订单修改信息(a)系统E-R图录入处理用户基本信息文件用户信息处理修改信息 修改密码(b)用户基本信息处理E-R图 订单信息文件添加处理订单处理修改处理删除处理(c)用户订单处理E-R图商品总览查询处理具体商品查询(d)菜品查询处理E-R图管理员信息文件删除定购商品信息添加商品管理员登陆删除商品删除用户(e)管理员ER图3.7、数据库设计本系统的数据库其中包括九个表,分别为菜品菜品表t_goods, 用户注册表t_user, 管理员表t_admin, 菜品类型表t_

11、catelog, 公告表t_gongao,定单表t_order,定单详细信息表t_orderItem。详情请见下面的数据库表1 菜品表2 菜品类别表3 订单表4 订单详细表5 公告表6 管理员表 7 注册用户表4、详细设计4.1、主页面模块 代码如下:Map request=(Map)ServletActionContext.getContext().get(request);String sql=from TGoods where goodsDel=no and goodsIsnottejia=yes order by goodsId desc;List goodsYesTejiaList=

12、goodsDAO.getHibernateTemplate().find(sql);if(goodsYesTejiaList.size()4)goodsYesTejiaList=goodsYesTejiaList.subList(0, 4);request.put(goodsYesTejiaList, goodsYesTejiaList);sql=from TGoods where goodsDel=no and goodsIsnottejia=no order by goodsId desc;List goodsNoTejiaList=goodsDAO.getHibernateTemplat

13、e().find(sql);if(goodsNoTejiaList.size()4)goodsNoTejiaList=goodsNoTejiaList.subList(0, 4);request.put(goodsNoTejiaList, goodsNoTejiaList);4.2、用户注册模块用户注册是为第一次登录网站的用户所设计的。在用户成为本站用户之前一定要注册才可以访问我网站的其它网页。用户注册包括:登录名称,真实姓名,设置密码,电子邮件等。注册成功后,才可以访问本站的其他页面。代码如下TUser user=new TUser();user.setUserName(userName);

14、user.setUserPw(userPw);user.setUserAddress(userAddress);user.setUserTel(userTel);user.setUserRealname(userRealname);user.setUserEmail(userEmail);user.setUserSex(userSex);user.setUserQq(userQq);user.setUserDel(no);userDAO.save(user);Map session= ServletActionContext.getContext().getSession();session.

15、put(user, user);return successAdd;4.3、用户登录模块用户登录包括:登录名称,输入密码。当用户登录后由管理员核对该用户的名称和密码是否正确,如果无误的话用户可以通过检查直接进入网站的其它页面进行浏览和订购。代码如下:String sql=from TUser where userName=? and userPw=?;Object con=userName,userPw;List userList=userDAO.getHibernateTemplate().find(sql,con);if(userList.size()=0)this.setMessage(

16、用户名或密码错误);this.setPath(qiantai/default.jsp);else Map session= ServletActionContext.getContext().getSession(); TUser user=(TUser)userList.get(0); session.put(user, user); Cart cart=new Cart(); session.put(cart, cart); this.setMessage(成功登录); this.setPath(qiantai/default.jsp);return succeed;4.4、菜品浏览模块菜

17、品浏览:成功登陆后的用户可以分页浏览菜品菜品,并将想要的菜品提交到填写订单页面。代码如下:String sql=from TGoods where goodsDel=no and goodsIsnottejia=no order by goodsCatelogId;List goodsList=goodsDAO.getHibernateTemplate().find(sql);for(int i=0;igoodsList.size();i+)TGoods goods=(TGoods)goodsList.get(i);System.out.println(goods.getGoodsCatelo

18、gId();goods.setGoodsCatelogName(catelogDAO.findById(goods.getGoodsCatelogId().getCatelogName();Map request=(Map)ServletActionContext.getContext().get(request);request.put(goodsList, goodsList);return ActionSupport.SUCCESS;4.5、订餐车模块代码如下:TGoods goods=goodsDAO.findById(goodsId);TOrderItem orderItem=new

19、 TOrderItem();orderItem.setGoods(goods);orderItem.setGoodsQuantity(quantity);Map session= ServletActionContext.getContext().getSession();Cart cart = (Cart)session.get(cart);cart.addGoods(goodsId, orderItem);session.put(cart,cart);/this.setMessage();this.setPath(myCart.action);4.6、订单确认模块代码如下:Map sess

20、ion= ServletActionContext.getContext().getSession();Cart cart = (Cart)session.get(cart);TUser user=(TUser)session.get(user);TOrder order=new TOrder();order.setOrderBianhao(new SimpleDateFormat(yyyyMMddhhmmss).format(new Date();order.setOrderDate(new SimpleDateFormat(yyyy-MM-dd hh:mm:ss).format(new D

21、ate();order.setOrderZhuangtai(no);/未受理order.setOrderUserId(user.getUserId();order.setOrderJine(cart.getTotalPrice();System.out.println(odderFukuangfangshi+%);order.setOdderFukuangfangshi(odderFukuangfangshi);order.setOdderSonghuodizhi(odderSonghuodizhi);4.7、订单提交模块代码如下:for (Iterator it = cart.getItem

22、s().values().iterator(); it.hasNext();)TOrderItem orderItem = (TOrderItem) it.next();orderItem.setOrderId(order.getOrderId();orderItem.setGoodsId(orderItem.getGoods().getGoodsId();orderItemDAO.save(orderItem);cart.getItems().clear();session.put(cart, cart);Map request=(Map)ServletActionContext.getCo

23、ntext().get(request);request.put(order, order);4.8、后台管理员登陆 这是进入系统时的身份验证,用户首先要从软件开发者那里申请用户名和密码,才可以进入。该过程的流程图如图4-2所示:输入姓名及口令记录在口令表吗中进入主界面继续吗结束开始提示信息NYN 代码如下:String sql=from TAdmin where userName=? and userPw=?;Object con=userName,userPw;List adminList=adminDAO.getHibernateTemplate().find(sql,con);if(a

24、dminList.size()=0) result=no;else WebContext ctx = WebContextFactory.get(); HttpSession session=ctx.getSession(); TAdmin admin=(TAdmin)adminList.get(0); session.setAttribute(userType, 0); session.setAttribute(admin, admin); result=yes;4.9、 后台主界面代码如下:FRAME name=topFrame src=/admin/top.jsp noResize sc

25、rolling=no FRAME name=BoardMenu marginWidth=0 marginHeight=0 src=/admin/menu.jsp noResize scrolling=no target=main FRAME name=main marginWidth=0 marginHeight=0 src=/admin/index/sysPro.jsp noResize 4.10、菜品类别管理代码如下:String sql=from TCatelog where catelogDel=no;List cateLogList=catelogDAO.getHibernateTe

26、mplate().find(sql);Map request=(Map)ServletActionContext.getContext().get(request);request.put(cateLogList, cateLogList);return ActionSupport.SUCCESS;4.11、菜品管理代码如下:String sql=from TGoods where goodsDel=no and goodsIsnottejia=no order by goodsCatelogId;List goodsList=goodsDAO.getHibernateTemplate().f

27、ind(sql);for(int i=0;igoodsList.size();i+)TGoods goods=(TGoods)goodsList.get(i);System.out.println(goods.getGoodsCatelogId();goods.setGoodsCatelogName(catelogDAO.findById(goods.getGoodsCatelogId().getCatelogName();Map request=(Map)ServletActionContext.getContext().get(request);request.put(goodsList,

28、 goodsList);return ActionSupport.SUCCESS;4.12、订单管理TOrder order=orderDAO.findById(orderId);order.setOrderZhuangtai(yes);/已经受理订单orderDAO.attachDirty(order);this.setMessage(受理订单成功);this.setPath(orderMana.action);return succeed;5、系统调试与测试5.1、程序调试在设计系统的过程中,存在一些错误是必然的。对于语句的语法错误,在程序运行时自动提示,并请求立即纠正,因此,这类错误比较

29、容易发现和纠正。但另一类错误是在程序执行时由于不正确的操作或对某些数据的计算公式的逻辑错误导致的错误结果。这类错误隐蔽性强,有时会出现,有时又不出现,因此,对这一类动态发生的错误的排查是耗时费力的。5.2、程序的测试5.2.1、测试的重要性及目的测试的重要性:软件的测试在软件生命周期中占据重要的地位。近来,软件工程界趋向于一种新的观点,即认为软件生命周期每一阶段中都应包含测试,从而检验本阶段的成果是否接近预期的目标,尽可能早的发现错误并加以修正,如果不在早期阶段进行测试,错误的延时扩散常常会导致最后成品测试的巨大困难。 测试的目的:如果测试的目的是为了尽可能多地找出错误,那么测试就应该直接针对

30、软件比较复杂的部分或是以前出错比较多的位置。 1.软件测试是为了发现错误而执行程序的过程; 2.测试是为了证明程序有错,而不是证明程序无错误; 3.一个好的测试用例是在于它能发现至今未发现的错误; 4.一个成功的测试是发现了至今未发现的错误的测试。 测试并不仅仅是为了要找出错误。通过分析错误产生的原因和错误的分布特征,可以帮助项目管理者发现当前所采用的软件过程的缺陷,以便改进。同时,这种分析也能帮助我们设计出有针对性地检测方法,改善测试的有效性。其次,没有发现错误的测试也是有价值的,完整的测试是评定测试质量的一种方法。5.2.2、测试的步骤与开发过程类似,测试过程也必须分步骤进行,每个步骤在逻

31、辑上是前一个步骤的继续。大型软件系统通常由若干个子系统组成,每个子系统又由若干个模块组成。因此,大型软件系统的测试基本上由下述几个步骤组成:1.模块测试 在这个测试步骤中所发现的往往是编码和详细设计的错误。2.系统测试 在这个测试步骤中发现的往往是软件设计中的错误,也可能发现需求说明中的错误。3.验收测试 在这个测试步骤中发现的往往是系统需求说明书中的错误。5.2.3、测试的主要内容为了保证测试的质量,将测试过程分成几个阶段,即:代码审查、单元测试、集成测试、确认测试和系统测试。 1.单元测试 单元测试集中在检查软件设计的最小单位模块上,通过测试发现实现该模块的实际功能与定义该模块的功能说明不

32、符合的情况,以及编码的错误。 2.集成测试 集成测试是将模块按照设计要求组装起来同时进行测试,主要目标是发现与接口有关的问题。如一个模块与另一个模块可能有由于疏忽的问题而造成有害影响;把子功能组合起来可能不产生预期的主功能;个别看起来是可以接受的误差可能积累到不能接受的程度;全程数据结构可能有错误等。 3.确认测试 确认测试的目的是向未来的用户表明系统能够像预定要求那样工作。经集成测试后,已经按照设计把所有的模块组装成一个完整的软件系统,接口错误也已经基本排除了,接着就应该进一步验证软件的有效性,这就是确认测试的任务,即软件的功能和性能如同用户所合理期待的那样。 4.系统测试 软件开发完成以后

33、,最终还要与系统中其他部分配套运行,进行系统测试。包括恢复测试、安全测试、强度测试和性能测试等。6、结 论几个月来忙碌紧张而又有条不紊的毕业设计,使我有机会对本专业的基本理论、专业知识和基本技术有了更深入的了解和体会。在系统开发之前,必须了解该系统的特点、适用范围以及使用者需要一个什么样的系统,以此作为基础为开发系统准确定位,然后对使用者所需实现的功能进行分析总结,根据使用者的实际要求来给系统设计一个初步方案。系统的开发不仅是要实现对数据处理的及时与正确,而且要考虑系统是否具有控制功能,及时将数据反馈给操作者,以进行监测和协调,保证系统的正常运行;也要考虑是否具有预测功能,运用一定的数学方法利

34、用历史的数据对未来进行预测的工作。设计实践上的体会 在设计的过程中,我掌握了很多JSP的编程知识,并对这种成熟并广泛应用的技术进行了深入的学习。设计的过程也是一个再学习的过程,在遇到问题的时候我尽量自己想办法解决,这在很大程度上激发了我们的自学能力;在没有办法解决的情况下,认真的向老师请教,从老师那里我学到了很多的知识,老师对我的指导起到了画龙点睛的作用。程序设计中的体会 在我的程序设计过程中,我充分的体会到了“实践出真知”这一点,书本上的知识是不够的,只有把理论与实践相结合才能够真正的学到知识。一个管理信息系统的设计,不可能一步到位,还需要不断的完善和补充。编程前的深思熟虑是减少程序调试工作

35、量的重要方法,只有进行充分考虑,才会减少调试过程中的工作量。虽然在开始写程序之前我们做了多的准备工作,但在真正的写程序时仍然发现许多问题,有些问题是分析时的疏漏,有些则是如果不做无论如何也想不到的。致 谢在本次毕业设计过程中,得到了指导老师的指导与支持。在此特别感谢XX老师的大力帮助。指导老师的悉心指导和大力支持,在总体结构、功能的把握上给予了非常大的帮助,同时根我们提供了非常优越的设计环境,并对我在编程、数据库设计等细节工作上给予了耐心的指导,对于我们小组顺利完成这次毕业设计起到了关键性的作用。另外和我同组同学大家始终团结协作,努力拼搏,增强了我的团队意识,并且我们接下了深厚的友谊,我们自始

36、至终在一种愉快的气氛中学习工作。此次毕业设计对提高我的编程技术、协调团队成员的关系等方面都由许多益处。在此我一并向他表示感谢。我还要感谢我的母校,以及在大学四年生活中给予我关心和帮助的老师和同学,是他们教会了我专业的知识和做人的道理。通过这次毕业设计我还明白了作为一名计算机专业的大学毕业生,我们要会的不仅仅是编写代码,更重要的是要有整体把握系统设计的能力。我会在以后的工作和学习中不断完善自己,为我最热爱的母校争光,为自己翻开辉煌的新篇章。转眼间,大学生活即将结束,回首过去四年的大学生活,真是有苦也有乐,然而更多的则是收获,感谢母校的各位老师不但无私地传授给我们知识,也教会了我们如何做人。管理信息系统专业的毕业设计任务繁重,但正是在这几个月紧张而充实的设计中,我感到自己的知识得到了一次升华,我相信:我的毕业设计会给我的四年大学画上一个圆满的句号。21世纪已经到来了,在新的世纪里,人们自然对未来有许多美好的愿望和设想。现代科学技术的飞速发展,改变了世界,也改变了世界的生活。作为新世纪的大学生,应当站在世界的发展前列,掌握现代科学技术知识,调整自己的知识结构和能力结构,以适应社会发展的要求。新世纪需要具有丰富现代科学知识、能够独立解决面临任务、有创新意识的新型人才。21

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号