Java实验报告网上订餐.docx
《Java实验报告网上订餐.docx》由会员分享,可在线阅读,更多相关《Java实验报告网上订餐.docx(59页珍藏版)》请在冰豆网上搜索。
Java实验报告网上订餐
Java实训外卖管理系统
班级:
本计科132班
组长:
成员:
2015年12月20日
1.概述
1.1主要思想
随着网络的迅速发展,,Internet的应用使用范围越来越广泛。
人类社会的发展与知识的传递有着一种必然的联系,教育是人类传递知识的最直接最有效的方式。
在21世纪这个信息高度发达,并且高速流通的时代,计算机的普及以及计算机网络技术的应用,让大量普通人能够有机会接触到比以往更多的知识。
在这个日新月异的时代,不会使用网络与他人沟通,就意味着落后,被社会淘汰。
同时随着身边的各种外卖的兴起,因此我们决定运用所学的Java、jsp、JDBC等知识的结合建立一个订餐精品网站。
1.2主要内容
本次课程设计是运用JSP和数据的相结合,建立一个以网上订餐雏形的商业网站。
这个网上购物系统所需要的功能从用户角度进行划分,可以分为前台用户功能和后台管理功能。
用户功能主要提供给购物的用户使用,包括用户的注册、登录,购物车,查看订单等;后台管理功能主要提供给系统的管理人员使用,包括对用户、餐品、订单的管理。
用户注册后,登陆网站的用户可以在线查看、订购产品,并可在论坛中与其他用户进行交流及提出意见等。
这些部分用JSP设计页面及连接,使用数据库来建立相关的表,以便于对其进行查看、修改或删除。
在网站设计中,管理员完成对网站的维护与管理的工作。
使用数据库中权限的功能对管理员设置权限,管理员可以对餐品信息进行新增,修改及删除,也可以对订单信息进行处理,同时管理员也可以对用户信息进行管理
1.3主要目的
本次课程设计通过对JSP电子商务网站的设计与实现的研究,检查我们所学习的JSP、JDBC等在知识理解、在实际运用的熟练度的不足。
1.帮助我们加深对JSP的理解,我们在课堂上学的都是基础理论知识,对于如何用程序语言来描述所学知识还是有一定难度。
通过课程设计,我们可以真正理解其内涵。
2.锻炼我们的逻辑思维,程序设计能直接有效地训练我们的创新思维、培养分析问题、解决问题能力。
即使是一个简单的程序,依然需要我们有条不理的构思。
3.培养我们严谨认真的学习态度,在程序设计过程里,当我们输入程序代码的时候,如果不够认真或细心,那么可能就导致语法错误,从而无法得出运行结果。
那么,这个我们反复调试,反复修改的过程,其实也是对我们认真严谨治学的一个锻炼。
1.4开发环境
工具:
NetBeansIDE8.0.1
数据库:
SQLserver2005
Web应用服务器:
Glassfish4.1
1.5运行环境
硬件:
处理器:
400MHz以上
内存:
128M以上
显卡:
8Mb以上
硬盘空间:
4GB以上
软件:
window系统
NetBeansIDE8.0.1,
SQLserver2005,
Java
IE浏览器、360浏览器等
2.需求分析
商务系统随着中国经济的高速发展发生了巨大的变化。
专做营销的中小型企业随着百姓个人消费水平的增长迅速成长起来,但同时也带来了这一行业激烈的竞争。
2.1可行性分析
可行性分析是在全面调查基础上,针对新系统的开发是否具备必要性和可能性,对新系统的开发从技术、经济、运行的方面进行分析和研究,以避免投资失误,保证新系统开发成功。
可行性研究的目的就是用最小的代价在尽可能短的时间内确定问题是否能够解决。
这部分将从以下四个方面进行研究:
技术可行性、经济可行性、操作可行性和调度可行性。
(1)技术可行性
因为计算机硬件的发展已经越来越快,现在计算机的性能已经可以胜任普通网站的web服务器。
购买一台计算机作为订餐网站对于我们来说并不是问题。
JSP是Java在Internet/IntranetWeb上的重要应用技术,可以和各种Java技术完好的结合在一起从而实现非常复杂的应用。
因此得到了广泛的支持和承认,成为一种非常流行的网站开发技术。
利用JSP技术可以建立先进、安全和跨平台的动态网站。
鉴于JSP技术的成熟与广泛的使用,加以指导老师的帮助可以得到很多的技术支持。
由于在学习数据库时一直以SQLServer作为例子,所以采用MicrosoftSQLServer2005作为数据库的后台。
(2)经济可行性
对于我们来说这经济的可行性没有问题的。
(3)操作可行性
如今,计算机与网络已经非常地普及。
特别是在企业信息化高需求与快速发展的时代,计算机应用已经成为企业员工必备的技能。
由于这个课题是以PC机作为服务器的网站,营销商可以自己对网站进行操作和管理。
2.2业务需求分析
网站的制作已经不单单是把企业想要表达的内容摆放在网站上那么简单,当今的网站设计包含了更多的设计元素,给予浏览者更多的视觉享受。
现在企业营销商需要用一些更新颖更有效的方式增强竞争力。
建设一个宣传自身餐品形象的电子商务营销模式的网站是一种有效的方法。
另外,通过电子商务网站,广阔自己的营销方式和市场,能够帮助企业营销商从鱼龙混杂的市场中脱颖而出,完善企业销售与服务的环节,最终提升企业的价值与经济效益。
2.3用户需求分析
这个网站以上面的业务需求为基础,进一步提出网站需要完成的以下任务:
网站需要让供应商、客户以及浏览者能看到商城的信息及动态,另一个重要的内容就是能够显示出该商城现有的各类型餐品及其详细信息;由于消费者的需求在增长和变化,商城在面对面销售的基础上也要随之发展出相应的服务,如在线订购等技术。
另外,企业营销商除了能与普通客户一样浏览网站之外,还需要对网站进行管理。
企业需要定期更新现有餐品的详细信息和商城动态,必要时还要对企业的介绍做更改。
对于消费者通过网站提交的各种订单能够进行处理以方便销售。
2.4功能需求分析
根据上面的需求分析,需要设计出网站的前台与后台。
用户在前台所浏览的内容,网站的后台需要能相应的做出更新或修改。
根据以上的想法,设计出网站的功能:
前台用户相关功能主要包括:
1)用户注册、登录;
2)餐品展示
3)购物车;
4)订单查询;
5)订单删除;
后台管理相关功能主要包括:
1)添加餐品;
2)处理订单;
3)查询用户信息;
4)删除餐品;
5)浏览管理员信息
6)浏览餐品信息
将以上这些功能制作成网页以后,在其中分别互相建立连接,基本完成商城及用户对网站的要求。
2.4业务流程分析
将上面的需求分析进行归纳。
得出网站的两个业务主角,即用户与管理员。
然后制定他们的相关活动。
对应网站的功能可以确定,用户活动对应网站前台业务流程;管理员活动对应网站的后台业务流程。
在对业务流程分析中,尽量把业务主角的活动考虑全面,使系统的功能尽量完整。
2.4.1前台业务流程分析
前台业务主要面向客户。
用户可以浏览网站主页、餐品的介绍和一些服务信息。
前台流程如图2.4.1所示。
图2.4.1前台业务流程图
2.4.2后台业务流程分析
在网站设计中,管理员完成对网站的维护与管理的工作。
使用数据库中权限的功能对管理员设置权限,管理员可以对商品及商品分类的信息进行新增,修改及删除,也可以对订单信息进行查看、撤销、发货、完成等处理,同时管理员也可以对用户信息进行管理。
后台流程图如图2.4.2所示
图2.4.2后台业务流程图
3.总体设计
设计采用现在比较流行的JSP网站开发技术,并考虑到网站所处理的数据的结构特点及所学到的知识,应用MicrosoftSQLServer2005数据库系统作为网站的后台数据库。
系统实现了网站的基本功能,包括客户的注册登录、浏览网站信息、信息查询、购物并填写订单以及管理员对于网站的维护与更新。
结合这次设计的意义对Internet在商业中的应用与发展做一下介绍;然后针对整个系统进行分析,其中包括可行性分析、需求分析、系统的业务流程分析、数据分析等;在此基础上确定网站的功能目标,将网站的功能逐次划分,并细分出子功能模块;接下来设计并实现各个模块,在每个模块都能完成其功能的结果下将其综合成一个完整的系统。
3.1流程图
3.1.1前台购物流程图如图3.1.1所示
图3.1.1前台购物流程图
用户在前台可以浏览餐品,看到自己喜欢的餐品可以选择餐品,然后订购餐品,这时需要进行判断,如果是没有注册的用户,那么要先到注册页面注册,如果是注册了没有登录的用户,则跳转到登录页面,已经登录的用户则跳转到购物车页面,然后去结帐,然后提交订单。
3.1.2用户登录流程图如图3.1.2所示
图3.1.2用户登录流程图
用户登录,首先要有一个提供用户登录的表单。
用户登录的表单应该嵌入整体的结构当中。
在实际的应用中,可以这样设计,如果用户没有登录,则在页面中显示用户登录的选项,用户登录后,则可隐藏用户登录的选项而代之以用户的基本信息。
首先,用户要有一个用户名和密码。
商务网站需要很高的稳定性和安全性,因此对用户名不允许使用恶意的代码作为用户名。
同时对密码也要求保密,将密码加密后再存入数据库。
另外,一个电子商务网站。
用户的真实姓名是必不可少的。
除此之外还需要用户的性别、E-MAIL、电话号码等。
3.1.3餐品管理流程如图3.1.3所示
图3.1.3餐品管理流程图
在该功能里管理员可以进行不需要的餐品的删除,在这里管理员当然也可以浏览到餐品的详细信息。
并且比普通用户在浏览餐品界面里所看到的餐品信息多一个该餐品在数据库中的ID。
3.1.4购物车流程如图3.1.4所示
图3.1.4购物车流程图
购物车具体的实现可采用这种形式:
定义一个购物车的类(Class)。
1.列出餐品的列表,使用户能够自由选择所需要的餐品。
2.当用户在点击“添加到购物车”的链接时,执行如下功能:
检查用户购物车类是否存在。
如不存在,则建立,并注册这Session变量;在有用户购物车类存在的情况下,检查该类中是否有该餐品。
如存在,则餐品数量相应加1;如没有该餐品,则将该餐品添加到该类中。
3.2功能模块图
3.2.1前台功能模块图如图3.2.1所示
图3.2.1前台功能模块图
3.2.2后台功能模块图如图3.2.2所示
图3.2.2后台功能模块图
3.3注意事项
由于我们能力有限,如遇到疑问或者不解的地方,请给于我们指出或者建议,我们表示感谢并修改不足之处。
4.详细设计
4.1网站首页
界面截图:
源代码如下:
<%@pageimport="java.util.ArrayList"%>
<%@pageimport="java.util.List"%>
<%@pageimport="com.restrant.bean.FoodBean"%>
<%@pageimport="com.restrant.DAO.DBConnection"%>
<%@pagelanguage="java"pageEncoding="gb2312"%>
<%@tagliburi="prefix="tag"%>
<%
//变量声明
java.sql.ConnectionsqlCon;//数据库连接对象
java.sql.StatementsqlStmt;//SQL语句对象
java.sql.ResultSetsqlRst;//结果集对象
java.lang.StringstrCon;//数据库连接字符串
java.lang.StringstrSQL;//SQL语句
intintPageSize;//一页显示的记录数
intintRowCount;//记录总数
intintPageCount;//总页数
intintPage;//待显示页码
java.lang.StringstrPage;
inti;//设置一页显示的记录数
intPageSize=8;//取得待显示页码
strPage=request.getParameter("page");
if(strPage==null){//表明在QueryString中没有page这一个参数,此时显示第一页数据
intPage=1;
}
else{//将字符串转换成整型
intPage=java.lang.Integer.parseInt(strPage);
if(intPage<1)
intPage=1;
}
//装载JDBC驱动程序
sqlCon=DBConnection.getConnction();
//创建一个可以滚动的只读的SQL语句对象
sqlStmt=sqlCon.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY);
//准备SQL语句
strSQL="selectfromfoods";
//执行SQL语句并获取结果集
sqlRst=sqlStmt.executeQuery(strSQL);
//获取记录总数
sqlRst.last();
intRowCount=sqlRst.getRow();
//记算总页数
intPageCount=(intRowCount+intPageSize-1)
intPageSize;
//调整待显示的页码
if(intPage>intPageCount)intPage=intPageCount;
ListfoodsList=newArrayList();
%>
餐品展示
includepage="BodyTop.jsp"/>
include
page="BodyLeft.jsp"/>
includepage="BodyInnerTop.jsp"/>
bgColor=#c0c0c0border=0>
target="blank">
border=0>
<% if(intPageCount>0){ //将记录指针定位到待显示页的第一条记录上 sqlRst.absolute((intPage-1)*intPageSize+1); //显示数据 i=0; while(isqlRst.isAfterLast()){ FoodBeanfood=newFoodBean(); food.setFoodID(sqlRst.getString("foodID")); food.setFoodName(sqlRst.getString("foodName")); food.setRemark(sqlRst.getString("remark")); food.setFoodPrice(sqlRst.getInt("foodPrice")); food.setDescription(sqlRst.getString("description")); food.setFoodImage(sqlRst.getString("foodImage")); foodsList.add(food); sqlRst.next(); i++; } session.setAttribute("foods",foodsList); } %> forEachvar="currentFood"items="${sessionScope.foods}" varStatus="status"> --页面中每排显示两个餐品-Begin--> iftest="${status.index%2==0}"> if>
| href="details2.jsp? foodID=${currentFood.foodID}" target=_blank>src="images/${currentFood.foodImage}"width=80border=0>
border=0> href="details2.jsp? foodID=${currentFood.foodID}" target=_blank>${currentFood.foodName} | 现价: 人民币${currentFood.foodPrice}元
${currentFood.remark}! |
编号: ${currentFood.foodID}
| href="details2.jsp? foodID=${currentFood.foodID}" target=_blank>
|
| forEach> |
第<%=intPage%>页 共<%=intPageCount%>页 <%if(intPagepage=<%=intPage+1%>">下一页<%}%> <%if(intPage>1){%>page=<%=intPage-1%>">上一页<%}%>
includepage="BodyFoot.jsp"/>