在线订餐系统设计

本科毕业论文(设计)

题 目

学 生

指导教师

年 级

专 业

二级学院

在线订餐系统设计 2011级 电子信息工程 信息工程学院

信息工程学院

2015年5月

郑重声明

本人的毕业论文(设计)是在指导教师的指导下独立撰写完成的。如有剽窃、抄袭、造假等违反学术道德、学术规范和侵权的行为,本人愿意承担由此产生的各种后果,直至法律责任,并愿意通过网络接受公众的监督。特此郑重声明。

毕业论文(设计)作者(签名):

年 月 日

在线订餐系统的设计

摘 要

当今社会,生活节奏的加快,使的人们对就餐时间和方式有了更高的要求,21世纪来,互联网技术的快速发展,结合了餐饮业和计算机网络的网上订餐因运而生。不仅解决了人们对快捷要求的需求,也是电子商务的一种全新的体现。

本控制系统采用Java 代码来编写,分为前台和后台两个大的模块,前台是用户的订餐页面,包括登录、注册、选购、下单、和对订单的跟踪。后台为管理员和系统管理员两部分组成,系统管理员可以增加管理员的人数,管理员可以对后台物资进行,添加、删除、修改的操作,对订单物资进行倒表进行查看,对用户留言反馈处理。本系统功能齐全,页面清楚简单,用户可以方便的对相应的模块进行查看和下单,使的购餐方便快捷。

关键词:订餐系统 Java Web SSH

The Design Of The Online Reservation System

Hu Zhifang Directed by the lecturer Zhang Zhilai

ABSTRACT

In today's society, the accelerating rhythm of life, make people have a higher request for dinner time and way, to the 21st century, the rapid development of Internet technology, combinedwith catering and computer network online order for shipment.Not only solved thepeople demand for quick request, also is a kind of new electronic commerce.

This control system USES Java code to write, is divided into foreground and background two modules, front desk is the user's order page, including login, register, the choose and buy, order, and tracking on the order.Background for the administrator and system administrators in two parts, the system administrator can increase the number of administrator, the administrator can on the background material, add, delete, modify operations, order material for table view, on the user feedback message processing.The system fully functional, simple page is clear, the user can convenient to view and order of the corresponding module, make the order of convenient and quick.

KEY WORDS:Reservation System Java Web SSH

目 录

前言 . ....................................................................... 1

1 背景介绍 . ................................................................. 2

1.1 在线订餐系统的背景 . ................................................. 2

1.2 研究的目的及其意义 . ................................................. 2

2 需求分析 . ................................................................. 3

2.1 可行性分析 . ......................................................... 3

2.1.1 经济可行性 . ................................................... 3

2.1.2 技术可行性 . ................................................... 3

2.2 需求分析 . ........................................................... 4

2.2.1 功能性需求 . ................................................... 4

2.2.2 功能划分 . ..................................................... 4

2.2.3 非功能性需求 . ................................................. 4

3 系统设计 . ................................................................. 5

3.1 设计思路 . ........................................................... 5

3.1.1 系统的设计思路 . ............................................... 5

3.1.2 系统的设计步骤 . ............................................... 6

3.2 订餐用例图设计 . ..................................................... 6

3.3 数据库设计 . ......................................................... 7

3.3.1 概念模型设计 . ................................................. 7

3.3.2 数据库的逻辑设计 . ............................................. 7

3.3.3 数据表设计 . ................................................... 7

3.4 Struts2框架 ........................................................ 9

4 系统实现 . ................................................................ 10

4.1 系统首页 . .......................................................... 10

4.2 注册用户 . .......................................................... 11

4.3 登录 . .............................................................. 12

4.4 管理员用户操作 . .................................................... 13

4.4.1 添加物资类别 . ................................................ 13

4.4.2 显示物资类别 . ................................................ 14

4.4.3 增加物资 . .................................................... 14

4.4.4 显示物资 . .................................................... 15

4.5 会员和普通用户操作 . ................................................ 16

4.5.1 浏览商品 . .................................................... 16

4.5.2 查看物资明细 . ................................................ 16

4.5.3 购物车 . ...................................................... 17

5 系统测试和分析 . .......................................................... 17

5.1 测试环境 . .......................................................... 17

5.2 测试过程 . .......................................................... 18

5.3 系统分析 . .......................................................... 18

5.4 数据库分析 . ........................................................ 18

6 结论 . .................................................................... 19

参考文献 . .................................................................. 20

致谢 . ...................................................................... 21

附录 . ...................................................................... 22

前 言

二十一世纪是信息化、知识化的世纪,随着社会的进步、计算机应用迅猛的发展和网络应用的不断扩大,使的传统订餐的形式有了极大的扩充,人们订餐变得更加的便捷。基于Web 的网上订餐系统,就是一种基于计算机网络的网上订餐形式,它的出现,大大地扩展了现行订餐的方式,使餐饮摆脱了空间和时间上的束缚,任何人,只要会上网,都可以坐在电脑前面,方便地进行上网订餐,这可以说是对餐饮业的一次革命。相比传统的订餐方式,网上订餐系统使用起来非常方便,只要是能够上网的地方,人们都能够轻松使用系统的所有功能。而今网络技术的突飞猛进,发展迅速,新技术产生速度是以前的数十倍。网上订餐可以用声音、文字、图像等加以直观的展示出来,给顾客留下非常深刻的视觉印象,有利于增加潜在的订餐顾客。所以可以肯定的说,网上订餐的前景是非常广阔地,可扩展性非常的好。

因此,开发一个在线订餐系统是十分必要的,通过前台餐饮商品信息的展示,添加购物车,结算下单的模式形成餐饮企业的电子商务平台,通过后台的库存系统,整合餐饮企业的供应链,提高其在信息化环境下的管理水平,对现在激烈竞争的餐饮行业中求发展的餐饮企业来说,无疑是福音。我们对餐饮企业菜品和材料标准化地处理,大大减小了企业的库存成本,提高餐饮企业的经济效益。为人类饮食文明和对社会的发展起到一定的推动作用,也对以后自己工作带来有益的影响。

1 背景介绍

本部分主要介绍在线订餐系统的背景和研究的目的和意义。

1.1 在线订餐系统的背景

21世纪,全球网络化,科技在突飞猛进。我们的生活同网络通信息息相关。计算机已经普及到我们社会和经济生活中的各个领域中。人们进行信息交流的深度与广度不断在增加着,这使得我们的服务,管理也应该跟上时代步伐去前行。电子商务在此得到极大地普及与发展。

餐饮业在电子商务中还处于形成初期;传统饮食业中,大都是以实际门面的形式来进行宣传与交流的。作为网络普遍化的社会,这还缺少了一些更为现代化的元素。餐饮业是一种个性化、多样化的服务产业,而电子商务是最能体现个性化、多样化服务的商务方式。而且现在大部分电子商务都体现的像大企业服务,结合餐饮这个特殊行业,终将还发展为向小区域小店铺服务的模式。以最贴切的方式,最灵便的服务进入各个网络社区,进入人们的生活。

渐渐更多地人接受了电子商务这种简便、快速的网上交易形式,网上订餐系统的顺势而出很快受到了大家的欢迎。互联网的应用已经渐渐普及到千家万户, 这为网上订餐提供了良好的发展空间。同时,网上订餐系统服务的直观、有效、便捷等优点是传统电话订餐业务无法比拟地。通过调查数据显示,北京白领更乐于去选择网上订餐服务, 网上订餐将是白领一族捕获餐店信息、进行订餐的发展趋势。网络在线订餐系统随着互联网的成长会逐渐被人们所喜爱,正如几年前手机移动短信一样,为企业带来几百个亿的业务收入。在互联网世界里面,谁早一步在应用上创新,谁就掌握了未来的方向,品牌更是一炮打红,网上订餐,看到的希望是希望,看到的泡沫是泡沫。

1.2 研究的目的及其意义

网络订餐可充通过色彩、图片、说明、设置动画加强产品的宣传,达到了餐饮业的“色型”要求。而该系统实现商品管理方便,不用因为更改菜色而重新印刷。只要在后台鼠标轻轻一点,全线马上就会更新。采用B/S模式,订餐者无须去安装第三方软件,只要上网就能订餐,甚至可以利用手机上网订餐,使操作更加简便,订餐信息更加准确。避免口头传递信息的错误,优化服务。网络不会跟电话一样占线,在高峰期对订餐的处理更是游刃有余,只看着屏幕点打印即可,就可下厨房配菜配送。地址永远不会丢失,是一个永远存在的电子菜单,甚至还可以通过网上的推广而让更多的客人认识,不用派人去发宣传单,可以省去一笔宣传和人工费用。订餐途径有了更好的改善,网络订餐成为电话订餐又一有

力补充,扩大客流,从而整体提高业务量。倡导了一种时尚,餐店的定位更是网络化,时尚化,具备更为勃勃的生机。缓解了食堂的拥挤的困境,为食堂提供更为轻松的环境。有时间的提前性,方便统筹安排,集中处理。采用会员制度,设立积分换赠送,营销手段更是利用得淋漓尽致。可以设立团体会员制,利用赠品或优惠,扩大市场份额。利用网页技术,展示本公司的精品,增强吸引力。详细介绍每一个产品,展现公司周到、细微的服务。容易形成品牌和连锁经营,即使没有合适的店面,主要配送队伍健全,一个店面,就可以做全市生意。订餐者省电话费,实现双盈。提供了交流的平台,实现消费者可贵信息的反馈和交流。方便统计和查询,分析经营来得更直接,企业创新,跟得上市场的需要。

2 需求分析

本部分从经济可行性和技术可行性分析得出系统开发的可行性,从功能性需求和功能划分了解系统的实现功能,非功能性需求来介绍开发的工具。

2.1 可行性分析

2.1.1 经济可行性

本项目的特殊性,使其无需投入额外设备费用和人员培训的费用,所以在经济上本项目的开发是完全可行的。此外本项目对开发的需求以及软硬件要求都不是很高,所以在软硬件的支出上十分有限。因此,本系统在任何一台连接Internet 地机器上都可以运行操作,有很高的经济可行性。

按照上述两方面进行可行性分析、研究后,我认为本项目在技术上是可行的,在经济上也是没问题的,所以完全可以进行开发。

2.1.2 技术可行性

本系统选择JSP 作为页面开发语言,选择Oracle 作为后台数据库,采用B/S结构,使用JDBC 连接池来连接数据库。

而JSP 可以创建和运用动态、交互的WEB 服务器应用程序。同时,JSP 也具有向跨平台跨服务器的优点。Oracle 11g 是一个杰出成功的数据库平台,具有功能强大,安全可靠等特点,可用于大型联机的事务处理、数据仓库及电子商务等。所以在技术理论方面上是可行的

2.2 需求分析

2.2.1 功能性需求

该系统在性能功能应达到如下要求。

(1)操作简单,界面美观:空间式的页面布局,使得菜品、咨询等信息录入工作变得更简单;另外,跟踪出现的提示信息也让用户随时了解自己的操作情况。对常见类似的网站管理的各个方面:基本信息的录入、浏览、删除、修改、搜索等方面都大体实现,用户对餐品的预定以及支付方式。

(2)即使可见:对客户预定餐饮信息处理(包括录入、删除)将立即在首页对应的栏目显示出来,达到“即时发布,即时见效”的功能 。

(3)系统运行应该快速、稳定、高效、可靠。

(4)在结构上应该具有很好的可扩展性,便于将来功能扩展和维护。

2.2.2 功能划分

本系统的主要功能是以用户以及管理员扩展开来的,下面简单介绍下本系统的一些主要功能。

(1)对于普通用户,具有下列功能:

注册:可以注册成为会员,管理自己信息,对餐品进行下单。

浏览菜单:可以查看所有的餐品但是不能放入购物车和下单。

(2)对于会员用户,具有下列功能:

登录:用系统号登录,显示会员用户页面。

个人信息管理:可以查看、修改个人信息,修改密码。

留言反馈:可以对餐品提出个人看法,并且提交。

下单:会员可以购买餐品,进行下单。

(3)对于管理员,具有以下功能:

会员管理:对会员用户进行查看和查封操作。

物资管理:对餐品物资进行添加、删除、修改的操作。

订单管理:对会员订单进行导出报表查看。

留言管理:可以查看、审核用户的留言。

页面维护:对页面的显示商品进行选择。

2.2.3 非功能性需求

选择微软IE 平台作为主导,是考虑到当前大多数的企业在设计内部网络时,将微软

IE 平台作为首选方案;并且微软IE 平台上的应用在开发和软件的配置上都非常容易,具体如下。

(1)开发工具:MyEclipse 10。

(2)辅助开发工具: Dreamweaver CS3,notepad++,PLSQL Developer。 (3)数据库:Oracle10g 。 (4)服务器:Apache Tomcat6.0。

(5)运行环境:安装JDK1.6支持Java 运行。

(6)技术:前台页面的设计应用JSP 技术开发制作。采用Struts2框架响应用户业务逻辑的请求,并对用户的请求在Action 中处理理后将相应JSP 页面发送给客户,相应的数据库操作则是由Hibernate 来进行操作的。

3 系统设计

3.1 设计思路

该系统用户分为游客、会员和管理员,不同的用户会有不同的操作,然后由用户及其角色的功能操作来了解系统的运行过程,然后建立需求用例,设计数据表,整合框架,最后编写和调试代码。

3.1.1 系统的设计思路

俗话说的好,巧妇难为无米之炊,一个系统也是一样要想设计一个完整的系统,首先要构想出来这个系统的大体流程和功能模块,然后才能在此基础上建立需求,设计数据表等后续工作,下图便是在想订餐系统的系统设计构想运行图。

图3-1 系统设计构想运行图

3.1.2 系统的设计步骤

(1)建立需求用例图

先想好系统的大体框架,编写需求文档,在UML 软件中按照需求分析绘制出各个功能的用例图。

(2)设计数据表

按照用例图功能,建立对应的数据表,每个数据表设置一个状态字段,删除字段时只需改变状态就行,可以保留历史记录,每个表留着几个预留字段,防止以后需求变更造成数据表大幅度变化。数据表关联字段不用外键,数据表一多,或是删除一些数据表的字段时会造成大量的关联数据错误。

(3)整合SSH 框架

建立Database 数据连接,整合SSH 框架,然后将数据表反向生成Java 代码导入MyEclipse ,将代码层次化,建立DAO ,BIZ ,Action ,Utils ,VO ,Serviceiface ,Serviceimple 包来存放相应的代码,代码采用注释,使的代码明了化。运行Tomcat 看是否系统运行异常,有异常处理异常,使的系统运行正常。

(4)编写代码

按照用例图来编写功能模块的代码,模块采用MVC 模式,调用数据库采用Service 接口,数据库开放接口,BIZ 使用接口来实现功能。编写代码统一采用方法调用,变量采用方法注入,这样可以在需求变更,变量改变时只需变更少量代码便可实现。

(5)调试,实现功能要求

调试系统功能,修复DEBUG ,然后运行系统,在运行中有什么问题及时修改。

3.2 订餐用例图设计

用例图是反应各个角色和系统功能的动态视图。本系统中用例图采用UML 来进行绘画,而通过用例图的显示我们可以更方便、简单的获取需求,在后续的系统设计中起到很好的指导作用。下面就介绍游客和会员用户的用例图。

图3-2 游客时序图

游客:可以浏览订餐网站的所有商品,但是不能下单和加入购物车,执行非游客操作只能新注册用户,登录订餐网站。

图3-3 会员和普通用户时序图

会员和普通用户:可以执行游客的所有操作,除此之外,可以对商品进行购买和下单,对自己信息进行修改维护,密码丢失的情况可以联系管理员进行修改密码,对网站或是商品也可以提出自己意见对管理员进行留言。

3.3 数据库设计 3.3.1 概念模型设计

概念结构设计是将分析得到的用户需求抽象为信息结构(即概念模型)的过程,它是整个数据库设计的关键。

3.3.2 数据库的逻辑设计

数据库的逻辑设计分为三个阶段,分别是:用户要求、建立E-R 模型和数据库模式设计。

数据库逻辑设计中的第一阶段收集和分析用户的需求是按以下四步进行的:分析用户活动,确定系统范围,分析用户活动所涉及的数据和分析系统数据。逻辑设计第二阶段建立E-R 模型分两步,首先应进行局部E-R 模型设计,然后进行总体E-R 模型的设计。逻辑设计第三阶段在数据库模式设计阶段分两步进行,第一步初步设计,把E-R 图转换为关系模型,第二步优化设计,对模式进行调整和改善。

3.3.3 数据表设计

根据用例图来建立数据表,数据表是用于存放系统运行数据和筛选符合用户需求的数

据,数据表的建立可以使得系统有不必担心数据的丢失,也可以根据数据的存储时间对数据进行动态的跟踪和维护,所以数据表建立的完善程度直接影响了系统的完善程度,也对后期系统的维护的难易造成了影响。下面介绍三个相关联的数据表的结构。

(1)Ep_user(用户表)

用户表中存放的是游客注册用户的信息,用户登录的时候会从用户表中对用户的ID 和密码进行检测,匹配正确后才能登录首页。其中的状态字段是撤销用户或是删除用户的字段,0代表删除,1代表有效,这样可以更好的保留历史记录,其中表中的五个预留字段防止以后

表3-1 ep_user表的结构

(2)Ep_order(订单表)

订单表中存放的是会员和普通用户下单成功后存放的订单信息,用户可以在订单浏览中查看订单,管理员可以在后台对用户下的所有单子进行查看,按照订单的地址进行送货。

订单表中的状态字段也是采取0为无效订单,1为有效订单的处理方式来保留历史数据,表中也有五个预留字段来防止以后表结构的变更造成系统大幅度调整。

表3-2 ep_order表的结构

3.4 Struts2框架

Struts2框架是过滤器,拦截器,Struts 标签库等多个功能集一体的框架,不仅提供了servlet 的解耦合方法来获得jsp 页面的内置对象,还提供了Struts2的标签库,运用Struts2框架可以更好的用于数据的交互和页面的设计。而且其也是SSH 三大框架整合的基础框架。

本系统中用户提交请求经过Struts2的拦截器,过滤器最后请求到Action 中,Action 对其中的要求进行筛选,然后调用BIZ 控制层,BIZ 控制层调用Service 相应的接口,Service 接口调用数据库进行相应的操作并且封装,提供BIZ 调用的接口, BIZ 调用接口返回相应的

结果,BIZ 将相应的结果进行处理后回传到Action 中,Action 对返回的数据进行Request 和Session 的封装最后通过Result 定位到相应的页面。

Struts2框架,如图3-4所示:

图3-4 Struts 框架图

4 系统实现

本系统分为前台和后台两部分,管理员和会员用户登录页面相同,登录成功后会根据不同的角色进入相应的页面,管理员进入后台页面,对商品进行添加、删除、查看的操作。会员进去首页对商品进行查看,购买下单。

4.1 系统首页

商城首页采用分栏式布局,最上面一栏是用户的一些快捷功能,比如登录、注册查询订单,中间是搜索餐品的输入框,采用Ajax 输入及时匹对,下面是热卖商品的轮展效果,可以在后台管理员进行维护操作。

图4-1 商城首页图

4.2 注册用户

用户没有用户ID 和用户名时进行注册操作,系统号是系统自动匹配的,用户填写别的基本信息,只有按照信息填写完整后才能提交,如图4-2所示。

图4-2 注册用户

部分代码如下:

int user_result=this.userBIZ.addUser(epuser);

Map map=new HashMap(); if(user_result>0){

map.put("msg","添加成功"); map.put("flag","1");

}else{

map.put("msg","添加失败"); map.put("flag","0");}

result=JSONObject.fromObject(map).toString();

以上代码表示,epuser 是存放用户的注册信息,user_result是添加的结果,大于0代表添

加成功,会将结果封装到JSON 字符串中,返回到注册页面提醒用户注册成功或是失败。

4.3 登录

用户的登录采用弹出窗遮罩的效果来实现,如图4-3,用户在弹出框输入用户名、密码和验证码来进行登录,用户ID 和密码会在输入验证码的时候通过Ajax 及时后台数据验证并返回结果用红字显示错误信息。如果是会员用户登录后会进入商城首页,并显示登录人的信息,如果是管理员登录则会直接跳转到后台页面。

图4-3 登录图

部分实现代码如下:

List list=this.userBIZ.userLogin(Integer.parseInt(user_id),password); if(list.size()>0){

com.vo.User user=list.get(0);

this.getRequest().getSession().setAttribute("user", user); return "home";

以上代码表示,从数据库中对用户输入的系统ID 和密码进行检测,如果存在该用户并且ID 和密码相符,则将用户的信息用Request 页面内置对象将User 进行封装,然后返回首页。用户登录成功后会在右上角会显示该用户的用户名,用户可以点击旁边的退出进行注销操作。

4.4 管理员用户操作 4.4.1 添加物资类别

管理员进入后台可以对物资进行维护,添加物资类别实行Ajax 异步及时刷新的技术,如图4-4,用户商品大类不选直接添加商品种类则是添加物资大类,添加完后会直接在商品大类的下拉框显示出来,如果选择商品大类,则输入商品种类则是添加商品大类的子类,添加完后会在页面及时显示出来。商品种类的添加可以支持添加五种,但考虑到首页的显示问题和数据的维护问题,本系统只让添加两种类别。

图4-4 增加物资类别信息

部分代码如下: $.ajax({

url:"/footing/goods_cates_json/getGoodsCatesLists_json.action", type:"post", dataType:"json", data:{"value":val},

success:function(data){var jsonobj = eval("(" + data + ")");}});

以上代码表示,用户点击商品大类的时候,会调用Ajax 事件,type 类型post 代表异步请求,不会让程序一直处于等待回传的状态,dataType 是数据传送的类型,采用JSON 可以对数据进行很好的封装,data 是数据传送的参数,此程序选用的是物资大类的物资ID 对该商品大类的物资进行检测后台getGoodsCatesLists_json.action对数据进行处理,然后将结果用JSON 封装,页面采用eval("(" + data + ")");来对JSON 字符串进行解析。解析完结果后将结果字符串拼接到商品类别里面。

4.4.2 显示物资类别

管理员进入显示物资类别的窗口会显示添加的物资类别信息,如图4-8,该页面会显示商城的大类,划过物资大类名称时会显示出来该下的子类个数,可以点击进去查看子类的信息,如图4-9所示,用户可以删除物资的大类和子类的信息,删除子类不会有提示,删除大类时,如果有子类会提示是否删除大类,一经删除子类信息也将删除的提示。

图4-5 物资大类信息

4.4.3 增加物资

进入物资添加的页面如图4-6,填写物资信息时会有绿色的提示,如果数据信息为空会有红色的信息提示,数据信息符合要求填写时才会有红色对勾出现,选择物资类别时点击大类别会及时出现物资子类,管理员选择相应的子类,每个物资必须要选择一个小类,还有上传物资图片,所有信息填写完整后提交后会有提示是否查看添加的商品,如果要查看新添加的商品信息会进入查看页面,页面会显示出添加的商品详细信息,并且鼠标滑过图片时,图片会变大,为了能方便管理员清楚的查看图片。

图4-6 物资添加信息

部分代码如下: private File uploadImage;

private String uploadImageFileName; private String uploadImageContentType; int goodID=this.goodsBIZ.addGoods(epGoods);

int add_goods_flag=0; if(goodID>0){

this.imagesPath(uploadImage,path,uploadImageFileName); this.load_ImagesPath(uploadImage, uploadImageFileName); add_goods_flag=

this.goodsBIZ.addGoodsImages(goodID,this.commodityName,uploadImageFileName); }

以上代码uploadImage 是取的物资图片路径,

uploadImageFileName 是物资图片的名称,uploadImageFileName 是物资图片的类型,epGoods 里面存放的是新添加商品的信息,goodID 是添加物资返回的结果,结果大于0则代表添加成功,结果等于0代表添加失败,当物资添加成功后将物资图片存放到服务器上并拷贝到本地文件一份。最后将物资ID ,物资图片路径,物资图片名称存放到数据库中。

4.4.4 显示物资

进入显示物资的页面,如图4-7,按照物资编号从大到小排序的,显示物资类别编号,商品添加时图片存到服务器上,显示的图片是从服务上取出的,并且也有滑过图片也会变大,使的图片可以清楚点。商品会分页显示,每页显示10个物资,后期会添加一个搜索物资的功能用于搜索物资的信息。

图4-7 显示物资

4.5 会员和普通用户操作

会员和普通用户可以查看商品,添加购物车,购买下单。

4.5.1 浏览商品

用户点击餐品浏览可以浏览餐饮商品的物资,左边一栏显示的是物资的类别,右边是商品,左边商品为大类,右拉框中的为小类,选择大类和小类可以对商品进行及时的刷新。商品显示价格和物资名称,当鼠标放在物资名称上时会显示物资的描述。

图4-8 浏览商品

部分实现代码如下:

List list=this.goodsBIZ.showGoods();

List list_biggoods=this.goodsCatesBIZ.getBigGoodsCatesList(); if(list!=null&&list.size()>0){

this.getRequest().setAttribute("list", list);

this.getRequest().setAttribute("list_biggoods",list_biggoods); return "show_goods";}

return "error";

以上代码list 存放的是所有商品信息,list_biggoods存放的物资类别信息,然后将结果

用Request 封装返回到JSP 页面,如果数据异常或是没有物资,这跳入物资异常页面。

4.5.2 查看物资明细

用户点击商品物资后会进入物资明细页面如图4-9所示,会有相应的物资名称,描述和价格,用户可以选择立即购买和刚入申请车,购买和放入申请车用户必须登录否则会有请先登录的提示信息提醒。物资的图片采用鼠标滑过图片放大的处理模式。

图4-9 查看物资明细

4.5.3 购物车

用户选择商品后进入购物车如图4-16,购物车可以修改数量,也可以进行删除操作,确定没问题后,点击结算进行下单。

图4-16 购物车

5 系统测试和分析

在开发系统软件过程中,即使使用了许多保证软件质量的分析、设计,可还是会难免在工作中犯错误。所以,认真的进行软件测试是必须的。

系统测试是软件系统与硬件等其他因素结合在一起,在其中找出开发系统与用户需求不符或矛盾的地方,进行信息系统的各种组装测试、确认测试。下面介绍此系统的测试环境、过程及测试结果的分析。

5.1 测试环境

系统测试的软件环境:操作系统为Windows 7,开发工具为MyEclipse10,数据库Oracle10g ,Tomcat 6.0,JSP 等开发的在线订餐系统。

系统测试的硬件环境:普通个人计算机,CPU 主频2.3GHZ ,内存4G 。

数据库测试环境:操作系统为Windows7,数据库为Oracle10g ,链接数据库的工具室navicat 。

数据库测试的硬件环境:普通的个人计算机,CPU 主频2.3GHZ ,内存2G 。

5.2 测试过程

(1)系统测试过程:

运行程序,进入商城首页,输入用户名及密码返回首页或进入后台。管理员进入后台页面后,对商品模块,用户模块测试。测试通过后,用会员用户返回首页可以对页面查看商品,添加购物车,下单等进行测试。

测试各模块时,功能均实现了。但是当会员查看商品物资明细时会有物资图片加载失败的情况出现,调试找到的问题是由于服务器关闭后造成的图片丢失的情况,后来我在存图片是会备份一个到本地磁盘当中,这样当服务器娶不到图片时,就在本地读取。

(2)数据库测试过程:

打开Oracle Net Manager程序,配置链接数据库的用户名、密码以及ip ,然后用PL/SQL连接数据库,连接成功后对数据库相应表数据和结构进行查看和检查。检查时着重查看中文入库的数据,最初会出现中文乱码,现已解决。

5.3 系统分析

对本系统来说,可以稳定运行是主要目标,能实现一些常用的功能,能够方便快捷的进行相关功能的操作。经过测试得出它基本达到了要求,具有操作简单快捷,运行速度较快等特点。

5.4 数据库分析

本系统采用的是Oracle 数据库,可以更好的进行数据的查询和存储,经过测试数据完全达到标准,没有出现乱码问题和数据冗余。

6 结 论

本系统这次的项目,我们使用了MyEclipse 来进行项目的开发,在软件架构的方面,主要是根据MVC 思想,将模型、视图、控制层分离,然后应用SSH 框架来对代码进行具体实现,使用Struts 分离视图层和控制层,使用Spring 管理bean 对象,减少了从前new 一个对象就要创建一个内存空间的占用空间,使的程序运行能够有足够的内存空间去运行顺畅,直接的优化了代码,我自己也养成了接口编程的好习惯,service 开放调用数据库的接口,防止用户直接调用数据库,维护了程序的安全性,而使用接口编程还有一个很好的优点就是提高代码的重用率和可维护率,修改接口的功能只需要将接口参数和返回数据的变更便就可实现,使用Hibernate 来管理数据库,采用面向对象的思想,有效实现了与数据库之间的耦合。设置本系统我很认真的去找了很多资料来学习,努力汲取前人前辈的经验,就是希望能做出一个令自己满意的网上订餐系统。

通过设置本系统,我掌握了很多知识,也渐渐锻炼自己每写一个方法必有注释,数据库操作要编写接口实现方法调用,为防止直接操作数据造成的影响。通过设置本系统也渐渐发现自己有好多东西要学,以后还需继续努力学习技术才行。

参考文献

[1]孙卫琴, 李洪成. 《Java Web 开发技术详解》. 电子工业出版社, 2003年 [2]BruceEckel . 《Java 编程思想》. 机械工业出版社, 2003年 [3]FLANAGAN . 《Java 技术手册》. 中国电力出版社, 2002年 [4]孙一林, 彭波. 《Java 数据库编程实例》. 清华大学出版社, 2002年 [5]LEE ANNE PHILLIPS. 《巧学活用HTML4》. 电子工业出版社, 2004年 [6]飞思科技产品研发中心. 《JSP 应用开发详解》. 电子工业出版社, 2003年 [7]耿祥义, 张跃平. 《JSP 实用教程》. 清华大学出版社, 2003年 [8]孙涌. 《现代软件工程》. 北京希望电子出版社, 2003年 [9]萨师煊,王珊. 《数据库系统概论》. 高等教育出版社, 2002年

[10]Brown 等. 《JSP 编程指南(第二版)》. 电子工业出版社, 2003年 [11]清宏计算机工作室. 《JSP 编程技巧》. 机械工业出版社, 2004年 [12]朱红, 司光亚. 《JSP Web编程指南》. 电子工业出版社, 2001年 [13]赛奎春. 《JSP 工程应用与项目实践》. 机械工业出版社, 2002年 [14]刘中兵. 《Java Web核心框架 电子工业出版社》. 电子工业出版社, 2009年 [15]王嫚/杜秀川. 《JSP 网络编程 电子工业出版社》机械工业出版社, 2006年 [16]曲培新 .《Java 项目开发案例精粹》. 电子工业出版社, 2010年 [17]孙卫琴. 《精通struts [M]电子工业出版社》机械工业出版社. 2004年 [18]林上杰. 《林康司编著.JSP2.0技术手册》.电子工业出版社,2004年 [19]岑红旗. 《浅析网上购物在中国的现状》. 时代金融. 2007年

[20]胡崧编著. 《网站建设实例大制作》. 北京:中国青年出版社, 2007年 [21]唐远新. 靖固等. 《Oracle 数据库实用教程》. 北京:高等教育出版社,2005年 [22]林信良. 《Spring2.0技术手册》. 北京:电子工业出版社,2005年 [23]徐洁磐. 《现代数据库系统教程》. 北京希望电子出版社, 2011年

[24]黄浩文. 《JSP 核心技术和电子商务应用实例》. 北京:清华大学出版社, 2000年 [25]肖刚. 《Java Web服务器应用程序设计》. 北京:电子工业出版社, 2002年 [26]胡崧编著. 《网站建设实例大制作》. 北京:中国青年出版社, 2007年 [27]孙鑫. 《Java Web开发详解》. 北京:电子工业出版社,2008年

[28]王永红. 《使用JavaScript 增强网页的功能》. 福建:福建师范大学学报,2008年 [29]张龙祥等. 《数据库原理与设计》. 北京人民邮电出版社, 2009年

[30]Sanden , Bo . SYSTEMS PROGRAMMING WITH JSP [D]. EXAMPLE-A VDU CONTROLLER, Communications of the ACM,Vol28,No10,1985

[31]Zoya Ali. Designing Object Oriented Software Applications within the Context of Software Frameworks [D]. Ohio State University,2011

在论文完成之际,首先感谢我的指导导师老师。论文的修改、系统的维护工作都得到了孙老师的关心和帮助。在这几个月的的毕业设计中,孙老师经常在群里和我们交流,询问我们的进展情况,遇到问题耐心地辅导我们,并时常给我们提供大量的相关资料,解决了我在系统中遇到的许多问题,再此感谢不厌其烦的指导设计中的问题。

回想我学习的过程,从一个对Java web什么都不懂到如今自己可以自主的编写一个系统,真的谢谢教过我的老师们,是老师们的辛勤哺育才会有我的今天,乘凉莫忘种树人,我只能努力的学习来回报老师。遇到问题时我通常会烦躁、焦急,这时老师回过来跟我说,有问题出现很正常,我们就是要解决问题,如果没有问题出现那就不正常了,然后老师也会和我分享他那时候编程的经历,然后跟我说,静心才能凝神,想要解决问题首先要静心。这渐渐的成了我做事的座右铭。

同样感谢给予过我帮助的老师和同学们,是你们的帮助和支持使我学有所得。 最后,向百忙之中评阅拙文的各位专家、教授致以衷心的感谢,并诚挚地希望各位专家、教授给予批评指正!

再次向所有教导我、关心我、帮助我、鼓励我的老师、亲人和朋友致以深深的谢意!

程序部分关键代码: 代码1--Struts2.xml

/home.jsp

image/jpeg imageStream 2048

result

extends="json-default">

class="com.action.GoodsCatesAction">

result

result

class="com.action.GoodsAction">

/showGood.jsp /index.jsp

40960000 png,bmp,jpg

代码2--baseaction

//存放action 共同的一些配置和方法 package com.action.beans; import java.io.File;

import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream;

import java.io.UnsupportedEncodingException; import java.util.logging.Logger;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.ServletActionContext;

public class BaseAction {

public HttpServletRequest getRequest(){ }

private HttpServletRequest request;

try { }

return request;

if(request==null){

request.setCharacterEncoding("utf-8"); }

// TODO Auto-generated catch block e.printStackTrace(); return null;

request=ServletActionContext.getRequest();

} catch (UnsupportedEncodingException e) {

public String getPath(){

}

public void removeSession(){

}

public void imagesPath(File file,String path,String obj){

FileInputStream in=null; FileOutputStream out=null; path=path+"unload_images/"; try { } in=new FileInputStream(file); out=new FileOutputStream(path+obj); byte [] b=new byte[1024]; int len=0; while((len=in.read(b))!=-1){ } // TODO Auto-generated catch block e.printStackTrace(); try { } in.close(); out.close(); // TODO Auto-generated catch block e.printStackTrace(); out.write(b, 0, len); getRequest().getSession().removeAttribute("path"); getRequest().getSession().removeAttribute("msg"); String path=ServletActionContext.getRequest().getServletPath(); int num=path.lastIndexOf("/"); String p=path.substring(num); return p; } catch (Exception e) { }finally{ } catch (Exception e) {

}public void load_ImagesPath(File file,String obj){

}

} FileInputStream in=null; FileOutputStream out=null; String path="e:/footing_images/"; try { } in=new FileInputStream(file); out=new FileOutputStream(path+obj); byte [] b=new byte[1024]; int len=0; while((len=in.read(b))!=-1){ } // TODO Auto-generated catch block e.printStackTrace(); try { } in.close(); out.close(); // TODO Auto-generated catch block e.printStackTrace(); out.write(b, 0, len); } catch (Exception e) { }finally{ } catch (Exception e) {

代码3--securityimage 工具类

package com.units;

import java.awt.Color;

import java.awt.Font;

import java.awt.Graphics;

import java.awt.image.BufferedImage;

import java.io.ByteArrayInputStream;

import java.io.ByteArrayOutputStream;

import java.io.IOException;

import java.util.Random;

import com.sun.image.codec.jpeg.ImageFormatException;

import com.sun.image.codec.jpeg.JPEGCodec;

import com.sun.image.codec.jpeg.JPEGImageEncoder;

/**

16 * 工具类,生成验证码图片

17 * @version 1.0 2012/08/21

18 * @author dongliyang

19 *

20 */

public class SecurityImage {

/** * 生成验证码图片 * @param securityCode 验证码字符 * @return BufferedImage 图片 */ public static BufferedImage createImage(String securityCode){ //验证码长度 int codeLength=securityCode.length(); //字体大小 int fSize = 15; int fWidth = fSize + 1; //图片宽度 int width = codeLength * fWidth + 6 ; //图片高度 int height = fSize * 2 + 1; //图片 BufferedImage image=new BufferedImage(width, height, Graphics g=image.createGraphics(); //设置背景色 g.setColor(Color.WHITE); //填充背景 g.fillRect(0, 0, width, height); //设置边框颜色 g.setColor(Color.LIGHT_GRAY); //边框字体样式 g.setFont(new Font("Arial", Font.BOLD, height - 2));

BufferedImage.TYPE_INT_RGB);

g.drawRect(0, 0, width - 1, height -1); //绘制噪点 Random rand = new Random(); //设置噪点颜色 g.setColor(Color.LIGHT_GRAY); for(int i = 0;i

* @return ByteArrayInputStream 流 */ private static ByteArrayInputStream convertImageToStream(BufferedImage image){ ByteArrayInputStream inputStream = null; ByteArrayOutputStream bos = new ByteArrayOutputStream();

}

}

JPEGImageEncoder jpeg = JPEGCodec.createJPEGEncoder(bos); try { jpeg.encode(image); byte[] bts = bos.toByteArray(); inputStream = new ByteArrayInputStream(bts); } catch (ImageFormatException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return inputStream;

本科毕业论文(设计)

题 目

学 生

指导教师

年 级

专 业

二级学院

在线订餐系统设计 2011级 电子信息工程 信息工程学院

信息工程学院

2015年5月

郑重声明

本人的毕业论文(设计)是在指导教师的指导下独立撰写完成的。如有剽窃、抄袭、造假等违反学术道德、学术规范和侵权的行为,本人愿意承担由此产生的各种后果,直至法律责任,并愿意通过网络接受公众的监督。特此郑重声明。

毕业论文(设计)作者(签名):

年 月 日

在线订餐系统的设计

摘 要

当今社会,生活节奏的加快,使的人们对就餐时间和方式有了更高的要求,21世纪来,互联网技术的快速发展,结合了餐饮业和计算机网络的网上订餐因运而生。不仅解决了人们对快捷要求的需求,也是电子商务的一种全新的体现。

本控制系统采用Java 代码来编写,分为前台和后台两个大的模块,前台是用户的订餐页面,包括登录、注册、选购、下单、和对订单的跟踪。后台为管理员和系统管理员两部分组成,系统管理员可以增加管理员的人数,管理员可以对后台物资进行,添加、删除、修改的操作,对订单物资进行倒表进行查看,对用户留言反馈处理。本系统功能齐全,页面清楚简单,用户可以方便的对相应的模块进行查看和下单,使的购餐方便快捷。

关键词:订餐系统 Java Web SSH

The Design Of The Online Reservation System

Hu Zhifang Directed by the lecturer Zhang Zhilai

ABSTRACT

In today's society, the accelerating rhythm of life, make people have a higher request for dinner time and way, to the 21st century, the rapid development of Internet technology, combinedwith catering and computer network online order for shipment.Not only solved thepeople demand for quick request, also is a kind of new electronic commerce.

This control system USES Java code to write, is divided into foreground and background two modules, front desk is the user's order page, including login, register, the choose and buy, order, and tracking on the order.Background for the administrator and system administrators in two parts, the system administrator can increase the number of administrator, the administrator can on the background material, add, delete, modify operations, order material for table view, on the user feedback message processing.The system fully functional, simple page is clear, the user can convenient to view and order of the corresponding module, make the order of convenient and quick.

KEY WORDS:Reservation System Java Web SSH

目 录

前言 . ....................................................................... 1

1 背景介绍 . ................................................................. 2

1.1 在线订餐系统的背景 . ................................................. 2

1.2 研究的目的及其意义 . ................................................. 2

2 需求分析 . ................................................................. 3

2.1 可行性分析 . ......................................................... 3

2.1.1 经济可行性 . ................................................... 3

2.1.2 技术可行性 . ................................................... 3

2.2 需求分析 . ........................................................... 4

2.2.1 功能性需求 . ................................................... 4

2.2.2 功能划分 . ..................................................... 4

2.2.3 非功能性需求 . ................................................. 4

3 系统设计 . ................................................................. 5

3.1 设计思路 . ........................................................... 5

3.1.1 系统的设计思路 . ............................................... 5

3.1.2 系统的设计步骤 . ............................................... 6

3.2 订餐用例图设计 . ..................................................... 6

3.3 数据库设计 . ......................................................... 7

3.3.1 概念模型设计 . ................................................. 7

3.3.2 数据库的逻辑设计 . ............................................. 7

3.3.3 数据表设计 . ................................................... 7

3.4 Struts2框架 ........................................................ 9

4 系统实现 . ................................................................ 10

4.1 系统首页 . .......................................................... 10

4.2 注册用户 . .......................................................... 11

4.3 登录 . .............................................................. 12

4.4 管理员用户操作 . .................................................... 13

4.4.1 添加物资类别 . ................................................ 13

4.4.2 显示物资类别 . ................................................ 14

4.4.3 增加物资 . .................................................... 14

4.4.4 显示物资 . .................................................... 15

4.5 会员和普通用户操作 . ................................................ 16

4.5.1 浏览商品 . .................................................... 16

4.5.2 查看物资明细 . ................................................ 16

4.5.3 购物车 . ...................................................... 17

5 系统测试和分析 . .......................................................... 17

5.1 测试环境 . .......................................................... 17

5.2 测试过程 . .......................................................... 18

5.3 系统分析 . .......................................................... 18

5.4 数据库分析 . ........................................................ 18

6 结论 . .................................................................... 19

参考文献 . .................................................................. 20

致谢 . ...................................................................... 21

附录 . ...................................................................... 22

前 言

二十一世纪是信息化、知识化的世纪,随着社会的进步、计算机应用迅猛的发展和网络应用的不断扩大,使的传统订餐的形式有了极大的扩充,人们订餐变得更加的便捷。基于Web 的网上订餐系统,就是一种基于计算机网络的网上订餐形式,它的出现,大大地扩展了现行订餐的方式,使餐饮摆脱了空间和时间上的束缚,任何人,只要会上网,都可以坐在电脑前面,方便地进行上网订餐,这可以说是对餐饮业的一次革命。相比传统的订餐方式,网上订餐系统使用起来非常方便,只要是能够上网的地方,人们都能够轻松使用系统的所有功能。而今网络技术的突飞猛进,发展迅速,新技术产生速度是以前的数十倍。网上订餐可以用声音、文字、图像等加以直观的展示出来,给顾客留下非常深刻的视觉印象,有利于增加潜在的订餐顾客。所以可以肯定的说,网上订餐的前景是非常广阔地,可扩展性非常的好。

因此,开发一个在线订餐系统是十分必要的,通过前台餐饮商品信息的展示,添加购物车,结算下单的模式形成餐饮企业的电子商务平台,通过后台的库存系统,整合餐饮企业的供应链,提高其在信息化环境下的管理水平,对现在激烈竞争的餐饮行业中求发展的餐饮企业来说,无疑是福音。我们对餐饮企业菜品和材料标准化地处理,大大减小了企业的库存成本,提高餐饮企业的经济效益。为人类饮食文明和对社会的发展起到一定的推动作用,也对以后自己工作带来有益的影响。

1 背景介绍

本部分主要介绍在线订餐系统的背景和研究的目的和意义。

1.1 在线订餐系统的背景

21世纪,全球网络化,科技在突飞猛进。我们的生活同网络通信息息相关。计算机已经普及到我们社会和经济生活中的各个领域中。人们进行信息交流的深度与广度不断在增加着,这使得我们的服务,管理也应该跟上时代步伐去前行。电子商务在此得到极大地普及与发展。

餐饮业在电子商务中还处于形成初期;传统饮食业中,大都是以实际门面的形式来进行宣传与交流的。作为网络普遍化的社会,这还缺少了一些更为现代化的元素。餐饮业是一种个性化、多样化的服务产业,而电子商务是最能体现个性化、多样化服务的商务方式。而且现在大部分电子商务都体现的像大企业服务,结合餐饮这个特殊行业,终将还发展为向小区域小店铺服务的模式。以最贴切的方式,最灵便的服务进入各个网络社区,进入人们的生活。

渐渐更多地人接受了电子商务这种简便、快速的网上交易形式,网上订餐系统的顺势而出很快受到了大家的欢迎。互联网的应用已经渐渐普及到千家万户, 这为网上订餐提供了良好的发展空间。同时,网上订餐系统服务的直观、有效、便捷等优点是传统电话订餐业务无法比拟地。通过调查数据显示,北京白领更乐于去选择网上订餐服务, 网上订餐将是白领一族捕获餐店信息、进行订餐的发展趋势。网络在线订餐系统随着互联网的成长会逐渐被人们所喜爱,正如几年前手机移动短信一样,为企业带来几百个亿的业务收入。在互联网世界里面,谁早一步在应用上创新,谁就掌握了未来的方向,品牌更是一炮打红,网上订餐,看到的希望是希望,看到的泡沫是泡沫。

1.2 研究的目的及其意义

网络订餐可充通过色彩、图片、说明、设置动画加强产品的宣传,达到了餐饮业的“色型”要求。而该系统实现商品管理方便,不用因为更改菜色而重新印刷。只要在后台鼠标轻轻一点,全线马上就会更新。采用B/S模式,订餐者无须去安装第三方软件,只要上网就能订餐,甚至可以利用手机上网订餐,使操作更加简便,订餐信息更加准确。避免口头传递信息的错误,优化服务。网络不会跟电话一样占线,在高峰期对订餐的处理更是游刃有余,只看着屏幕点打印即可,就可下厨房配菜配送。地址永远不会丢失,是一个永远存在的电子菜单,甚至还可以通过网上的推广而让更多的客人认识,不用派人去发宣传单,可以省去一笔宣传和人工费用。订餐途径有了更好的改善,网络订餐成为电话订餐又一有

力补充,扩大客流,从而整体提高业务量。倡导了一种时尚,餐店的定位更是网络化,时尚化,具备更为勃勃的生机。缓解了食堂的拥挤的困境,为食堂提供更为轻松的环境。有时间的提前性,方便统筹安排,集中处理。采用会员制度,设立积分换赠送,营销手段更是利用得淋漓尽致。可以设立团体会员制,利用赠品或优惠,扩大市场份额。利用网页技术,展示本公司的精品,增强吸引力。详细介绍每一个产品,展现公司周到、细微的服务。容易形成品牌和连锁经营,即使没有合适的店面,主要配送队伍健全,一个店面,就可以做全市生意。订餐者省电话费,实现双盈。提供了交流的平台,实现消费者可贵信息的反馈和交流。方便统计和查询,分析经营来得更直接,企业创新,跟得上市场的需要。

2 需求分析

本部分从经济可行性和技术可行性分析得出系统开发的可行性,从功能性需求和功能划分了解系统的实现功能,非功能性需求来介绍开发的工具。

2.1 可行性分析

2.1.1 经济可行性

本项目的特殊性,使其无需投入额外设备费用和人员培训的费用,所以在经济上本项目的开发是完全可行的。此外本项目对开发的需求以及软硬件要求都不是很高,所以在软硬件的支出上十分有限。因此,本系统在任何一台连接Internet 地机器上都可以运行操作,有很高的经济可行性。

按照上述两方面进行可行性分析、研究后,我认为本项目在技术上是可行的,在经济上也是没问题的,所以完全可以进行开发。

2.1.2 技术可行性

本系统选择JSP 作为页面开发语言,选择Oracle 作为后台数据库,采用B/S结构,使用JDBC 连接池来连接数据库。

而JSP 可以创建和运用动态、交互的WEB 服务器应用程序。同时,JSP 也具有向跨平台跨服务器的优点。Oracle 11g 是一个杰出成功的数据库平台,具有功能强大,安全可靠等特点,可用于大型联机的事务处理、数据仓库及电子商务等。所以在技术理论方面上是可行的

2.2 需求分析

2.2.1 功能性需求

该系统在性能功能应达到如下要求。

(1)操作简单,界面美观:空间式的页面布局,使得菜品、咨询等信息录入工作变得更简单;另外,跟踪出现的提示信息也让用户随时了解自己的操作情况。对常见类似的网站管理的各个方面:基本信息的录入、浏览、删除、修改、搜索等方面都大体实现,用户对餐品的预定以及支付方式。

(2)即使可见:对客户预定餐饮信息处理(包括录入、删除)将立即在首页对应的栏目显示出来,达到“即时发布,即时见效”的功能 。

(3)系统运行应该快速、稳定、高效、可靠。

(4)在结构上应该具有很好的可扩展性,便于将来功能扩展和维护。

2.2.2 功能划分

本系统的主要功能是以用户以及管理员扩展开来的,下面简单介绍下本系统的一些主要功能。

(1)对于普通用户,具有下列功能:

注册:可以注册成为会员,管理自己信息,对餐品进行下单。

浏览菜单:可以查看所有的餐品但是不能放入购物车和下单。

(2)对于会员用户,具有下列功能:

登录:用系统号登录,显示会员用户页面。

个人信息管理:可以查看、修改个人信息,修改密码。

留言反馈:可以对餐品提出个人看法,并且提交。

下单:会员可以购买餐品,进行下单。

(3)对于管理员,具有以下功能:

会员管理:对会员用户进行查看和查封操作。

物资管理:对餐品物资进行添加、删除、修改的操作。

订单管理:对会员订单进行导出报表查看。

留言管理:可以查看、审核用户的留言。

页面维护:对页面的显示商品进行选择。

2.2.3 非功能性需求

选择微软IE 平台作为主导,是考虑到当前大多数的企业在设计内部网络时,将微软

IE 平台作为首选方案;并且微软IE 平台上的应用在开发和软件的配置上都非常容易,具体如下。

(1)开发工具:MyEclipse 10。

(2)辅助开发工具: Dreamweaver CS3,notepad++,PLSQL Developer。 (3)数据库:Oracle10g 。 (4)服务器:Apache Tomcat6.0。

(5)运行环境:安装JDK1.6支持Java 运行。

(6)技术:前台页面的设计应用JSP 技术开发制作。采用Struts2框架响应用户业务逻辑的请求,并对用户的请求在Action 中处理理后将相应JSP 页面发送给客户,相应的数据库操作则是由Hibernate 来进行操作的。

3 系统设计

3.1 设计思路

该系统用户分为游客、会员和管理员,不同的用户会有不同的操作,然后由用户及其角色的功能操作来了解系统的运行过程,然后建立需求用例,设计数据表,整合框架,最后编写和调试代码。

3.1.1 系统的设计思路

俗话说的好,巧妇难为无米之炊,一个系统也是一样要想设计一个完整的系统,首先要构想出来这个系统的大体流程和功能模块,然后才能在此基础上建立需求,设计数据表等后续工作,下图便是在想订餐系统的系统设计构想运行图。

图3-1 系统设计构想运行图

3.1.2 系统的设计步骤

(1)建立需求用例图

先想好系统的大体框架,编写需求文档,在UML 软件中按照需求分析绘制出各个功能的用例图。

(2)设计数据表

按照用例图功能,建立对应的数据表,每个数据表设置一个状态字段,删除字段时只需改变状态就行,可以保留历史记录,每个表留着几个预留字段,防止以后需求变更造成数据表大幅度变化。数据表关联字段不用外键,数据表一多,或是删除一些数据表的字段时会造成大量的关联数据错误。

(3)整合SSH 框架

建立Database 数据连接,整合SSH 框架,然后将数据表反向生成Java 代码导入MyEclipse ,将代码层次化,建立DAO ,BIZ ,Action ,Utils ,VO ,Serviceiface ,Serviceimple 包来存放相应的代码,代码采用注释,使的代码明了化。运行Tomcat 看是否系统运行异常,有异常处理异常,使的系统运行正常。

(4)编写代码

按照用例图来编写功能模块的代码,模块采用MVC 模式,调用数据库采用Service 接口,数据库开放接口,BIZ 使用接口来实现功能。编写代码统一采用方法调用,变量采用方法注入,这样可以在需求变更,变量改变时只需变更少量代码便可实现。

(5)调试,实现功能要求

调试系统功能,修复DEBUG ,然后运行系统,在运行中有什么问题及时修改。

3.2 订餐用例图设计

用例图是反应各个角色和系统功能的动态视图。本系统中用例图采用UML 来进行绘画,而通过用例图的显示我们可以更方便、简单的获取需求,在后续的系统设计中起到很好的指导作用。下面就介绍游客和会员用户的用例图。

图3-2 游客时序图

游客:可以浏览订餐网站的所有商品,但是不能下单和加入购物车,执行非游客操作只能新注册用户,登录订餐网站。

图3-3 会员和普通用户时序图

会员和普通用户:可以执行游客的所有操作,除此之外,可以对商品进行购买和下单,对自己信息进行修改维护,密码丢失的情况可以联系管理员进行修改密码,对网站或是商品也可以提出自己意见对管理员进行留言。

3.3 数据库设计 3.3.1 概念模型设计

概念结构设计是将分析得到的用户需求抽象为信息结构(即概念模型)的过程,它是整个数据库设计的关键。

3.3.2 数据库的逻辑设计

数据库的逻辑设计分为三个阶段,分别是:用户要求、建立E-R 模型和数据库模式设计。

数据库逻辑设计中的第一阶段收集和分析用户的需求是按以下四步进行的:分析用户活动,确定系统范围,分析用户活动所涉及的数据和分析系统数据。逻辑设计第二阶段建立E-R 模型分两步,首先应进行局部E-R 模型设计,然后进行总体E-R 模型的设计。逻辑设计第三阶段在数据库模式设计阶段分两步进行,第一步初步设计,把E-R 图转换为关系模型,第二步优化设计,对模式进行调整和改善。

3.3.3 数据表设计

根据用例图来建立数据表,数据表是用于存放系统运行数据和筛选符合用户需求的数

据,数据表的建立可以使得系统有不必担心数据的丢失,也可以根据数据的存储时间对数据进行动态的跟踪和维护,所以数据表建立的完善程度直接影响了系统的完善程度,也对后期系统的维护的难易造成了影响。下面介绍三个相关联的数据表的结构。

(1)Ep_user(用户表)

用户表中存放的是游客注册用户的信息,用户登录的时候会从用户表中对用户的ID 和密码进行检测,匹配正确后才能登录首页。其中的状态字段是撤销用户或是删除用户的字段,0代表删除,1代表有效,这样可以更好的保留历史记录,其中表中的五个预留字段防止以后

表3-1 ep_user表的结构

(2)Ep_order(订单表)

订单表中存放的是会员和普通用户下单成功后存放的订单信息,用户可以在订单浏览中查看订单,管理员可以在后台对用户下的所有单子进行查看,按照订单的地址进行送货。

订单表中的状态字段也是采取0为无效订单,1为有效订单的处理方式来保留历史数据,表中也有五个预留字段来防止以后表结构的变更造成系统大幅度调整。

表3-2 ep_order表的结构

3.4 Struts2框架

Struts2框架是过滤器,拦截器,Struts 标签库等多个功能集一体的框架,不仅提供了servlet 的解耦合方法来获得jsp 页面的内置对象,还提供了Struts2的标签库,运用Struts2框架可以更好的用于数据的交互和页面的设计。而且其也是SSH 三大框架整合的基础框架。

本系统中用户提交请求经过Struts2的拦截器,过滤器最后请求到Action 中,Action 对其中的要求进行筛选,然后调用BIZ 控制层,BIZ 控制层调用Service 相应的接口,Service 接口调用数据库进行相应的操作并且封装,提供BIZ 调用的接口, BIZ 调用接口返回相应的

结果,BIZ 将相应的结果进行处理后回传到Action 中,Action 对返回的数据进行Request 和Session 的封装最后通过Result 定位到相应的页面。

Struts2框架,如图3-4所示:

图3-4 Struts 框架图

4 系统实现

本系统分为前台和后台两部分,管理员和会员用户登录页面相同,登录成功后会根据不同的角色进入相应的页面,管理员进入后台页面,对商品进行添加、删除、查看的操作。会员进去首页对商品进行查看,购买下单。

4.1 系统首页

商城首页采用分栏式布局,最上面一栏是用户的一些快捷功能,比如登录、注册查询订单,中间是搜索餐品的输入框,采用Ajax 输入及时匹对,下面是热卖商品的轮展效果,可以在后台管理员进行维护操作。

图4-1 商城首页图

4.2 注册用户

用户没有用户ID 和用户名时进行注册操作,系统号是系统自动匹配的,用户填写别的基本信息,只有按照信息填写完整后才能提交,如图4-2所示。

图4-2 注册用户

部分代码如下:

int user_result=this.userBIZ.addUser(epuser);

Map map=new HashMap(); if(user_result>0){

map.put("msg","添加成功"); map.put("flag","1");

}else{

map.put("msg","添加失败"); map.put("flag","0");}

result=JSONObject.fromObject(map).toString();

以上代码表示,epuser 是存放用户的注册信息,user_result是添加的结果,大于0代表添

加成功,会将结果封装到JSON 字符串中,返回到注册页面提醒用户注册成功或是失败。

4.3 登录

用户的登录采用弹出窗遮罩的效果来实现,如图4-3,用户在弹出框输入用户名、密码和验证码来进行登录,用户ID 和密码会在输入验证码的时候通过Ajax 及时后台数据验证并返回结果用红字显示错误信息。如果是会员用户登录后会进入商城首页,并显示登录人的信息,如果是管理员登录则会直接跳转到后台页面。

图4-3 登录图

部分实现代码如下:

List list=this.userBIZ.userLogin(Integer.parseInt(user_id),password); if(list.size()>0){

com.vo.User user=list.get(0);

this.getRequest().getSession().setAttribute("user", user); return "home";

以上代码表示,从数据库中对用户输入的系统ID 和密码进行检测,如果存在该用户并且ID 和密码相符,则将用户的信息用Request 页面内置对象将User 进行封装,然后返回首页。用户登录成功后会在右上角会显示该用户的用户名,用户可以点击旁边的退出进行注销操作。

4.4 管理员用户操作 4.4.1 添加物资类别

管理员进入后台可以对物资进行维护,添加物资类别实行Ajax 异步及时刷新的技术,如图4-4,用户商品大类不选直接添加商品种类则是添加物资大类,添加完后会直接在商品大类的下拉框显示出来,如果选择商品大类,则输入商品种类则是添加商品大类的子类,添加完后会在页面及时显示出来。商品种类的添加可以支持添加五种,但考虑到首页的显示问题和数据的维护问题,本系统只让添加两种类别。

图4-4 增加物资类别信息

部分代码如下: $.ajax({

url:"/footing/goods_cates_json/getGoodsCatesLists_json.action", type:"post", dataType:"json", data:{"value":val},

success:function(data){var jsonobj = eval("(" + data + ")");}});

以上代码表示,用户点击商品大类的时候,会调用Ajax 事件,type 类型post 代表异步请求,不会让程序一直处于等待回传的状态,dataType 是数据传送的类型,采用JSON 可以对数据进行很好的封装,data 是数据传送的参数,此程序选用的是物资大类的物资ID 对该商品大类的物资进行检测后台getGoodsCatesLists_json.action对数据进行处理,然后将结果用JSON 封装,页面采用eval("(" + data + ")");来对JSON 字符串进行解析。解析完结果后将结果字符串拼接到商品类别里面。

4.4.2 显示物资类别

管理员进入显示物资类别的窗口会显示添加的物资类别信息,如图4-8,该页面会显示商城的大类,划过物资大类名称时会显示出来该下的子类个数,可以点击进去查看子类的信息,如图4-9所示,用户可以删除物资的大类和子类的信息,删除子类不会有提示,删除大类时,如果有子类会提示是否删除大类,一经删除子类信息也将删除的提示。

图4-5 物资大类信息

4.4.3 增加物资

进入物资添加的页面如图4-6,填写物资信息时会有绿色的提示,如果数据信息为空会有红色的信息提示,数据信息符合要求填写时才会有红色对勾出现,选择物资类别时点击大类别会及时出现物资子类,管理员选择相应的子类,每个物资必须要选择一个小类,还有上传物资图片,所有信息填写完整后提交后会有提示是否查看添加的商品,如果要查看新添加的商品信息会进入查看页面,页面会显示出添加的商品详细信息,并且鼠标滑过图片时,图片会变大,为了能方便管理员清楚的查看图片。

图4-6 物资添加信息

部分代码如下: private File uploadImage;

private String uploadImageFileName; private String uploadImageContentType; int goodID=this.goodsBIZ.addGoods(epGoods);

int add_goods_flag=0; if(goodID>0){

this.imagesPath(uploadImage,path,uploadImageFileName); this.load_ImagesPath(uploadImage, uploadImageFileName); add_goods_flag=

this.goodsBIZ.addGoodsImages(goodID,this.commodityName,uploadImageFileName); }

以上代码uploadImage 是取的物资图片路径,

uploadImageFileName 是物资图片的名称,uploadImageFileName 是物资图片的类型,epGoods 里面存放的是新添加商品的信息,goodID 是添加物资返回的结果,结果大于0则代表添加成功,结果等于0代表添加失败,当物资添加成功后将物资图片存放到服务器上并拷贝到本地文件一份。最后将物资ID ,物资图片路径,物资图片名称存放到数据库中。

4.4.4 显示物资

进入显示物资的页面,如图4-7,按照物资编号从大到小排序的,显示物资类别编号,商品添加时图片存到服务器上,显示的图片是从服务上取出的,并且也有滑过图片也会变大,使的图片可以清楚点。商品会分页显示,每页显示10个物资,后期会添加一个搜索物资的功能用于搜索物资的信息。

图4-7 显示物资

4.5 会员和普通用户操作

会员和普通用户可以查看商品,添加购物车,购买下单。

4.5.1 浏览商品

用户点击餐品浏览可以浏览餐饮商品的物资,左边一栏显示的是物资的类别,右边是商品,左边商品为大类,右拉框中的为小类,选择大类和小类可以对商品进行及时的刷新。商品显示价格和物资名称,当鼠标放在物资名称上时会显示物资的描述。

图4-8 浏览商品

部分实现代码如下:

List list=this.goodsBIZ.showGoods();

List list_biggoods=this.goodsCatesBIZ.getBigGoodsCatesList(); if(list!=null&&list.size()>0){

this.getRequest().setAttribute("list", list);

this.getRequest().setAttribute("list_biggoods",list_biggoods); return "show_goods";}

return "error";

以上代码list 存放的是所有商品信息,list_biggoods存放的物资类别信息,然后将结果

用Request 封装返回到JSP 页面,如果数据异常或是没有物资,这跳入物资异常页面。

4.5.2 查看物资明细

用户点击商品物资后会进入物资明细页面如图4-9所示,会有相应的物资名称,描述和价格,用户可以选择立即购买和刚入申请车,购买和放入申请车用户必须登录否则会有请先登录的提示信息提醒。物资的图片采用鼠标滑过图片放大的处理模式。

图4-9 查看物资明细

4.5.3 购物车

用户选择商品后进入购物车如图4-16,购物车可以修改数量,也可以进行删除操作,确定没问题后,点击结算进行下单。

图4-16 购物车

5 系统测试和分析

在开发系统软件过程中,即使使用了许多保证软件质量的分析、设计,可还是会难免在工作中犯错误。所以,认真的进行软件测试是必须的。

系统测试是软件系统与硬件等其他因素结合在一起,在其中找出开发系统与用户需求不符或矛盾的地方,进行信息系统的各种组装测试、确认测试。下面介绍此系统的测试环境、过程及测试结果的分析。

5.1 测试环境

系统测试的软件环境:操作系统为Windows 7,开发工具为MyEclipse10,数据库Oracle10g ,Tomcat 6.0,JSP 等开发的在线订餐系统。

系统测试的硬件环境:普通个人计算机,CPU 主频2.3GHZ ,内存4G 。

数据库测试环境:操作系统为Windows7,数据库为Oracle10g ,链接数据库的工具室navicat 。

数据库测试的硬件环境:普通的个人计算机,CPU 主频2.3GHZ ,内存2G 。

5.2 测试过程

(1)系统测试过程:

运行程序,进入商城首页,输入用户名及密码返回首页或进入后台。管理员进入后台页面后,对商品模块,用户模块测试。测试通过后,用会员用户返回首页可以对页面查看商品,添加购物车,下单等进行测试。

测试各模块时,功能均实现了。但是当会员查看商品物资明细时会有物资图片加载失败的情况出现,调试找到的问题是由于服务器关闭后造成的图片丢失的情况,后来我在存图片是会备份一个到本地磁盘当中,这样当服务器娶不到图片时,就在本地读取。

(2)数据库测试过程:

打开Oracle Net Manager程序,配置链接数据库的用户名、密码以及ip ,然后用PL/SQL连接数据库,连接成功后对数据库相应表数据和结构进行查看和检查。检查时着重查看中文入库的数据,最初会出现中文乱码,现已解决。

5.3 系统分析

对本系统来说,可以稳定运行是主要目标,能实现一些常用的功能,能够方便快捷的进行相关功能的操作。经过测试得出它基本达到了要求,具有操作简单快捷,运行速度较快等特点。

5.4 数据库分析

本系统采用的是Oracle 数据库,可以更好的进行数据的查询和存储,经过测试数据完全达到标准,没有出现乱码问题和数据冗余。

6 结 论

本系统这次的项目,我们使用了MyEclipse 来进行项目的开发,在软件架构的方面,主要是根据MVC 思想,将模型、视图、控制层分离,然后应用SSH 框架来对代码进行具体实现,使用Struts 分离视图层和控制层,使用Spring 管理bean 对象,减少了从前new 一个对象就要创建一个内存空间的占用空间,使的程序运行能够有足够的内存空间去运行顺畅,直接的优化了代码,我自己也养成了接口编程的好习惯,service 开放调用数据库的接口,防止用户直接调用数据库,维护了程序的安全性,而使用接口编程还有一个很好的优点就是提高代码的重用率和可维护率,修改接口的功能只需要将接口参数和返回数据的变更便就可实现,使用Hibernate 来管理数据库,采用面向对象的思想,有效实现了与数据库之间的耦合。设置本系统我很认真的去找了很多资料来学习,努力汲取前人前辈的经验,就是希望能做出一个令自己满意的网上订餐系统。

通过设置本系统,我掌握了很多知识,也渐渐锻炼自己每写一个方法必有注释,数据库操作要编写接口实现方法调用,为防止直接操作数据造成的影响。通过设置本系统也渐渐发现自己有好多东西要学,以后还需继续努力学习技术才行。

参考文献

[1]孙卫琴, 李洪成. 《Java Web 开发技术详解》. 电子工业出版社, 2003年 [2]BruceEckel . 《Java 编程思想》. 机械工业出版社, 2003年 [3]FLANAGAN . 《Java 技术手册》. 中国电力出版社, 2002年 [4]孙一林, 彭波. 《Java 数据库编程实例》. 清华大学出版社, 2002年 [5]LEE ANNE PHILLIPS. 《巧学活用HTML4》. 电子工业出版社, 2004年 [6]飞思科技产品研发中心. 《JSP 应用开发详解》. 电子工业出版社, 2003年 [7]耿祥义, 张跃平. 《JSP 实用教程》. 清华大学出版社, 2003年 [8]孙涌. 《现代软件工程》. 北京希望电子出版社, 2003年 [9]萨师煊,王珊. 《数据库系统概论》. 高等教育出版社, 2002年

[10]Brown 等. 《JSP 编程指南(第二版)》. 电子工业出版社, 2003年 [11]清宏计算机工作室. 《JSP 编程技巧》. 机械工业出版社, 2004年 [12]朱红, 司光亚. 《JSP Web编程指南》. 电子工业出版社, 2001年 [13]赛奎春. 《JSP 工程应用与项目实践》. 机械工业出版社, 2002年 [14]刘中兵. 《Java Web核心框架 电子工业出版社》. 电子工业出版社, 2009年 [15]王嫚/杜秀川. 《JSP 网络编程 电子工业出版社》机械工业出版社, 2006年 [16]曲培新 .《Java 项目开发案例精粹》. 电子工业出版社, 2010年 [17]孙卫琴. 《精通struts [M]电子工业出版社》机械工业出版社. 2004年 [18]林上杰. 《林康司编著.JSP2.0技术手册》.电子工业出版社,2004年 [19]岑红旗. 《浅析网上购物在中国的现状》. 时代金融. 2007年

[20]胡崧编著. 《网站建设实例大制作》. 北京:中国青年出版社, 2007年 [21]唐远新. 靖固等. 《Oracle 数据库实用教程》. 北京:高等教育出版社,2005年 [22]林信良. 《Spring2.0技术手册》. 北京:电子工业出版社,2005年 [23]徐洁磐. 《现代数据库系统教程》. 北京希望电子出版社, 2011年

[24]黄浩文. 《JSP 核心技术和电子商务应用实例》. 北京:清华大学出版社, 2000年 [25]肖刚. 《Java Web服务器应用程序设计》. 北京:电子工业出版社, 2002年 [26]胡崧编著. 《网站建设实例大制作》. 北京:中国青年出版社, 2007年 [27]孙鑫. 《Java Web开发详解》. 北京:电子工业出版社,2008年

[28]王永红. 《使用JavaScript 增强网页的功能》. 福建:福建师范大学学报,2008年 [29]张龙祥等. 《数据库原理与设计》. 北京人民邮电出版社, 2009年

[30]Sanden , Bo . SYSTEMS PROGRAMMING WITH JSP [D]. EXAMPLE-A VDU CONTROLLER, Communications of the ACM,Vol28,No10,1985

[31]Zoya Ali. Designing Object Oriented Software Applications within the Context of Software Frameworks [D]. Ohio State University,2011

在论文完成之际,首先感谢我的指导导师老师。论文的修改、系统的维护工作都得到了孙老师的关心和帮助。在这几个月的的毕业设计中,孙老师经常在群里和我们交流,询问我们的进展情况,遇到问题耐心地辅导我们,并时常给我们提供大量的相关资料,解决了我在系统中遇到的许多问题,再此感谢不厌其烦的指导设计中的问题。

回想我学习的过程,从一个对Java web什么都不懂到如今自己可以自主的编写一个系统,真的谢谢教过我的老师们,是老师们的辛勤哺育才会有我的今天,乘凉莫忘种树人,我只能努力的学习来回报老师。遇到问题时我通常会烦躁、焦急,这时老师回过来跟我说,有问题出现很正常,我们就是要解决问题,如果没有问题出现那就不正常了,然后老师也会和我分享他那时候编程的经历,然后跟我说,静心才能凝神,想要解决问题首先要静心。这渐渐的成了我做事的座右铭。

同样感谢给予过我帮助的老师和同学们,是你们的帮助和支持使我学有所得。 最后,向百忙之中评阅拙文的各位专家、教授致以衷心的感谢,并诚挚地希望各位专家、教授给予批评指正!

再次向所有教导我、关心我、帮助我、鼓励我的老师、亲人和朋友致以深深的谢意!

程序部分关键代码: 代码1--Struts2.xml

/home.jsp

image/jpeg imageStream 2048

result

extends="json-default">

class="com.action.GoodsCatesAction">

result

result

class="com.action.GoodsAction">

/showGood.jsp /index.jsp

40960000 png,bmp,jpg

代码2--baseaction

//存放action 共同的一些配置和方法 package com.action.beans; import java.io.File;

import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream;

import java.io.UnsupportedEncodingException; import java.util.logging.Logger;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.ServletActionContext;

public class BaseAction {

public HttpServletRequest getRequest(){ }

private HttpServletRequest request;

try { }

return request;

if(request==null){

request.setCharacterEncoding("utf-8"); }

// TODO Auto-generated catch block e.printStackTrace(); return null;

request=ServletActionContext.getRequest();

} catch (UnsupportedEncodingException e) {

public String getPath(){

}

public void removeSession(){

}

public void imagesPath(File file,String path,String obj){

FileInputStream in=null; FileOutputStream out=null; path=path+"unload_images/"; try { } in=new FileInputStream(file); out=new FileOutputStream(path+obj); byte [] b=new byte[1024]; int len=0; while((len=in.read(b))!=-1){ } // TODO Auto-generated catch block e.printStackTrace(); try { } in.close(); out.close(); // TODO Auto-generated catch block e.printStackTrace(); out.write(b, 0, len); getRequest().getSession().removeAttribute("path"); getRequest().getSession().removeAttribute("msg"); String path=ServletActionContext.getRequest().getServletPath(); int num=path.lastIndexOf("/"); String p=path.substring(num); return p; } catch (Exception e) { }finally{ } catch (Exception e) {

}public void load_ImagesPath(File file,String obj){

}

} FileInputStream in=null; FileOutputStream out=null; String path="e:/footing_images/"; try { } in=new FileInputStream(file); out=new FileOutputStream(path+obj); byte [] b=new byte[1024]; int len=0; while((len=in.read(b))!=-1){ } // TODO Auto-generated catch block e.printStackTrace(); try { } in.close(); out.close(); // TODO Auto-generated catch block e.printStackTrace(); out.write(b, 0, len); } catch (Exception e) { }finally{ } catch (Exception e) {

代码3--securityimage 工具类

package com.units;

import java.awt.Color;

import java.awt.Font;

import java.awt.Graphics;

import java.awt.image.BufferedImage;

import java.io.ByteArrayInputStream;

import java.io.ByteArrayOutputStream;

import java.io.IOException;

import java.util.Random;

import com.sun.image.codec.jpeg.ImageFormatException;

import com.sun.image.codec.jpeg.JPEGCodec;

import com.sun.image.codec.jpeg.JPEGImageEncoder;

/**

16 * 工具类,生成验证码图片

17 * @version 1.0 2012/08/21

18 * @author dongliyang

19 *

20 */

public class SecurityImage {

/** * 生成验证码图片 * @param securityCode 验证码字符 * @return BufferedImage 图片 */ public static BufferedImage createImage(String securityCode){ //验证码长度 int codeLength=securityCode.length(); //字体大小 int fSize = 15; int fWidth = fSize + 1; //图片宽度 int width = codeLength * fWidth + 6 ; //图片高度 int height = fSize * 2 + 1; //图片 BufferedImage image=new BufferedImage(width, height, Graphics g=image.createGraphics(); //设置背景色 g.setColor(Color.WHITE); //填充背景 g.fillRect(0, 0, width, height); //设置边框颜色 g.setColor(Color.LIGHT_GRAY); //边框字体样式 g.setFont(new Font("Arial", Font.BOLD, height - 2));

BufferedImage.TYPE_INT_RGB);

g.drawRect(0, 0, width - 1, height -1); //绘制噪点 Random rand = new Random(); //设置噪点颜色 g.setColor(Color.LIGHT_GRAY); for(int i = 0;i

* @return ByteArrayInputStream 流 */ private static ByteArrayInputStream convertImageToStream(BufferedImage image){ ByteArrayInputStream inputStream = null; ByteArrayOutputStream bos = new ByteArrayOutputStream();

}

}

JPEGImageEncoder jpeg = JPEGCodec.createJPEGEncoder(bos); try { jpeg.encode(image); byte[] bts = bos.toByteArray(); inputStream = new ByteArrayInputStream(bts); } catch (ImageFormatException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return inputStream;


相关文章

  • 酒店网上订餐系统分析说明书
  • <电子商务分析与设计> 课 程 设 计 题目:酒店在线订餐系统 系 别:商学系 专业年级: 07级电子商务2班 姓 蒋 欣[1**********] 谢顺彬[1**********] 林文强[1**********] 许智捷[1 ...查看


  • 网上订餐系统毕业设计论文毕业设计说明书
  • 毕 业 设 计 说 明 书 课题名称 院 系 专 业 班 级 学 号 学生姓名 网上订餐系统 指导教师: 年 月 日 计算机与软件学院 毕业设计(论文)诚信承诺 我谨在此承诺:本人所写的毕业论文<网上订餐系统>,系本人独立完成, ...查看


  • O2O餐饮网上订餐系统有什么优点 详细??
  • --chufutong.com 随着 O2O 模式的发展,现在餐饮企业也开始结合 O2O 做业务,而借助于网上订餐系统可以 很好的使餐饮企业将线上线下结合起来,以"维欧网上订餐系统-在线订餐系统"为例,可在线 订餐.在线 ...查看


  • 中南大学软件体系结构实验报告-实验1
  • 实验1 UML实验 实验学时: 4 每组人数:1 实验类型:3 (1:基础性 2:综合性 3:设计性 4:研究性) 实验要求:1 (1:必修 2:选修 3:其它) 实验类别:3 (1:基础 2:专业基础 3:专业 4:其它) 一.实验目的 ...查看


  • 网上订餐系统的设计与实现
  • 山西煤炭管理干部学院 毕业论文 网上订餐系统的设计与实现 姓 名:赵霞 专 业:计算机信息管理 班 级:08信管 指导教师:邓越萍 日 期:2011.06.07 山西煤炭管理干部学院 毕业论文评阅意见 论文题目:______________ ...查看


  • 网上订餐系统详细设计说明书
  • 二零一四年六月 1引言 ............................................................................................................ ...查看


  • 电子商务网站毕业设计论文 1
  • 毕业设计论文 题 学 专 年 学 姓 指 导 成 目 院 业 级 号 名教 师 绩 网上订餐系统 应用技术学院 电子商务 2008级 [**************] 方阳 卢竹兵 2012 年 2 月 20 日 目录 第1章 前言 ... ...查看


  • 软件工程开题报告
  • 题目 毕业设计(论文)开题报告 基于web 的网上订餐系统的设计与开发 目录 一.选题的依据及意义 .................. 错误!未定义书签. 二.国内外研究概况 ............................... ...查看


  • 网上订餐管理系统优秀论文
  • 毕业设计(论文) 题目: 基于Java EE网上订餐系统设计与实现 学 生 姓 名 李国卫 学 号 [1**********]3 班 级 信管092202H 所属院(系)计算机科学与技术系 指 导 教 师 杨帆 王晓婷 2013 年 5 月 ...查看


热门内容