基于J2EE的花店业务系统的设计与实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于J2EE的花店业务系统的设计与实现
姓名:小惠指导教师:张老师
内容摘要:Internet技术在当今时代飞速发展,人们之间的合作交流越来越信息化。
从书信到电报,到电话,到第一台计算机的问世,再到当今信息网络的高速发展,生活各个领域面临产业信息化的趋势。
J2EE是一套技术构架,是基于JAVA的一款企业开发平台。
本文将基于J2EE为小型花店设计一款专门的花店业务系统。
关键字: J2EE;SSH;MVC;花店;系统
1 引言
J2EE是一套技术构架,是基于JAVA的一款企业开发平台,这套技术构架包含JAVA技术的方方面面,比如说HTML技术、JSP技术、Servlet技术、Hibernate、技术、Spring技术、Struts技术以及三大技术的综合运用SSH框架技术等,而SSH框架技术是当下最主流的框架技术,利用最主流的框架开发技术开发一定的软件产品是时代发展的必然要求。
本文将利用基于J2EE的SSH框架技术设计一款花店业务系统。
2 开发背景
Internet技术在当今时代飞速发展,人们之间的交流、合作越来越信息化,从书信到电报,到电话,到第一台计算机的问世,再到当今网络信息时代的高速发展,经历了可以说并不漫长的时间,也就三百多年的时间,现在的人们基本都使用着手机、电脑这样的通讯工具及工作平台,工作、学习、交流,并不断进行着新技术的开发与探索,以致现在软件产品的更新换代层出不穷,新事物问世,再到新事物变老淘汰,再到更新事物的问世。
在这样的环境中,花店业务实现信息化成为时代发展的必然要求,所以本文将为小型的花店设计一款业务系统。
3 系统分析
3.1 需求分析:
不论要做的花店系统是基于什么技术的,都应该自己的系统进行一定的需求分析。
明确你所要做的系统,要实现什么样的功能,要有一个什么样的结果,这在你心中要有一个基本的定位。
由于该系统是要拿给小型花店的经营者使用,所以从经营者的角度出发,以方便经营者管理实体花店为原则,该花店内部业务系统需满足如下要求:
1.清晰的操作分类功能,方便经营者管理花店;稳定性高,不易出错的后台管理,使用户多
一分安心;美观的操作界面的,让用户有一个舒适便捷的用户体验。
2.经营者进入系统后要能对花进行销售,从下单到订单的生成,再到订单的管理;还要对仓
库花进行库存管理,比如花的增删改查,花的上货下架等。
3.2可行性分析:
在正式开发前,要对系统开发的技术和成本进行可行性分析
1.技术可行性:
首先本科在校期间,系统学习了书籍[1],掌握了一定的计算机编程知识,对java及java 开发有一定的理论基础;其次大学四年级上半学期参加的思软科技有限公司java方向的培训,培训期间学习了资料[2-5],有过一定的项目经验,负责过一些小型软件的部分功能的设计与实现;最后,一颗勇于研究、探索的心很重要。
对于不懂得知识、不懂得技术,深度思考、相关专业书籍[6-7]及其一些网络资料,寻求老师的帮助等,决心完成自己的毕业设计。
2.成本可行性:
该花店内务业务系统的设计与实现,对于一名在校大学生来说,需要的无非是工作环境、网络资源、计算机软件开发平台,当然还有最重要的成本便是时间。
宿舍、图书馆是具备网络及图书资源的良好环境,方便自己开发过程中遇到难解的问题进行相关资料的查询;自己的计算机及实训期间安装的软件为本次开发提供了良好的平台;大四下学期学校不安排课程为做毕业设计保证了充分的时间前提。
基于以上两点,该软件开发可行。
3 系统设计
3.1功能模块设计:
该系统类似于小型的餐馆的售餐系统,是一款及前台后台于一体的售花系统,管理人员登录后可以可以对花店的前台后台进行管理,。
以下是系统的功能模块图:
3.2.开发环境设计:
开发该系统依赖于以下开发环境:
1.操作系统:Windows7操作系统环境。
2.WEB服务器:Tomcat6.0 Web服务器。
3.JAVA开发包:JDK1.7。
4.数据库:MySQL
5.5。
5.浏览器:火狐浏览器,便于程序的调试。
6.开发工具:MyEclipse10.7版本。
3.3.文件夹结构设计:
为了规范系统开发,在开始做系统之前需要对系统开发用到的文件夹进行统一部署,文件的整体组织结构如下图片所示:
其中,src文件下lh.action中存放服务器响应程序,相当于MVC设计模式下的Controler层,lh.beans中存放基本的类对象,lh.dao存放一些dao层方法接口,相当于MVC模式下的Model层,接下来lh.dao.imp实现dao层中的方法,lh.service文件夹下存放服务器连接dao层的方法,lh.service.imp当然就是对lh.service层方法的实现,最后lh.action层的方法将Controler与Service联系起来,Service将Service与dao联系起来,dao又将dao与beans下的数据库对象联系起来,进而构成了MVC设计模式的M、C两部分,最后的V模块将交V层由jsp和html具体来实现。
所谓的MVC设计模式,Struts2充当了连接M层与V层的联系桥梁,联系着jsp、html界面与Action,Hibernate联系着beans与dao,是数据库与功能实现的M层的桥梁与纽带,而Sring则负责实现M层功能的实现,并联系着C层的Action和V层的jsp界面。
说到这里,顺便说一下SSH框架,即Struts、Spring与Hibernate的英文缩写,本系统技术上基于SSH框架技术,构成了MVC的整体设计模式。
3.4.整体界面的设计:
在开发前脑海中要有一个产品的整体构架,现将已经完成的毕设的整体构架以截图的形式附在这里,以增加文本的可读性:
4 数据库设计
由于该系统是一款小型的及售花与仓库管理的软件,用不着Oracle那样大的数据库,所以在此选择了一款小型又好用的数据库软件MySQL,采用了MySQL5.5版本,采用Hibernate实现数据库的持久化操作。
把系统比作一个人的话,数据库就好像人体的器官,是基础。
每张表是一个器官,表的每一条属性代表某一个器官的属性,比如颜色、大小、状态等,表的每一个方法代表每一个器官的功能。
器官是人体运行各项生命活动的基础,那么数据库则是整个软件系统的基础。
4.1.数据库表的概念化模型:
数据库表的概念模型即为直观上涵盖表的名称属性的模型图,其能直观的体现表的各项属性:下面分别是花、花类别、花订单的概念模型图。
花的模型图:
花类模型图:
花订单模型图:
4.2.实体类对象定义:
有了概念上的表模型,现在就该来定义实体类了。
根据你所制作的概念模型,以java代码的形式将你的概念模型进行表述,即为实体类对象。
下面即为上面花、花类、花订单概念模型所对应的实体类对象,并且这些类对象通过一定的注释将在数据库中映射相应的表。
花的类对象的java代码:
package lh.beans;
/*省略导入的包名*/
@Entity
@Table(name="t_flower")/*这两行注释将实体类对象映射到数据库表*/
public class Flower {
private int flowerid;
private String flowername;
private String flowerimage;
private int flowernum;
private Date flowerstartdate;
private int flowerperiod;
private FlowerClas flowerclas;
private int flowerPrice;
private String floertDesc;
@Id
@GeneratedValue
public int getFlowerid() {
return flowerid;
}
public void setFlowerid(int flowerid) {
this.flowerid = flowerid;
}
/*省略部分get set方法*/
花类对象的java代码:
package lh.beans;
/*省略导入的包名*/
@Entity
@Table(name="t_flowerclas")/*这两行注释将实体类对象映射到数据库表*/ public class FlowerClas {
private int flowerclasid;
private String flowerclasname;
@Id
@GeneratedValue
public int getFlowerclasid() {
return flowerclasid;
}
public void setFlowerclasid(int flowerclasid) {
this.flowerclasid = flowerclasid;
}
/*省略部分get set方法*/
花订单实体类对象:
package lh.beans;
/*省略导入的包名*/
@Entity
@Table(name="t_flowerOrder")
public class FlowerOder {
private int orderId;
private String goodName;
private Date orderDate;
private int goodPrice;
@Id
@GeneratedValue
public int getOrderId() {
return orderId;
}
public void setOrderId(int orderId) {
this.orderId = orderId;
}
/*省略部分get set方法*/
4.3. 数据库表结构:
下面这就是java实体类对象所映射到数据库中的表:
t_flower(花信息表):
t_flowerclas(花类信息表):
t_flowerOrder(订单信息表):
5 持久化模块设计
所为持久,从字面上理解它一定有“稳定性高”这一特性,不轻易随其他事物的变动改变。
这
也是持久最本质的理解。
一个系统的开发,必须要减少一定的数据冗余,对系统中重复出现并要反复使用的数据进行提炼,并封装,使其成为一个固定的模式,在用到这样的数据时,我不再需要重复输入,只需要进行调用即可,这大大降低了系统数据的冗余度,说的专业一些便是降低了系统数据的耦合度。
本系统MySQL数据库来实现数据的持久化,通过dao层和service层方法的封装实现对数据操作的持久化。
Model层就好比一个人的心脏,作为各个器官功能及使命的控制者与调节者,这一层面封装了对数据库的操作,对View层的操作方法及手段,使的系统客户端与服务器端有效地、紧密地配合、联系着,Model层的方法往本质层上看,无非是增删改查这些功能的实现,本系统model层中实现了对不同种类花的增、删、改、查、获取不同种类花列表的功能。
持久层是Model层的重要组成部分,我们在软件系统的逻辑层面专门抽象出一层,该层不考虑任何业务的实现逻辑,基本上上逻辑层中的不变层,我们称之为持久层,下面dao层的实现类和service层的实现便分别为一个持久层的范例:
Dao层和Service层具体实现代码如下:
lh.dao.imp/FlowerDaoImpl.java:
package lh.dao.impl;
@Repository
public class FlowerDaoImpl implements FlowerDao{
private HibernateTemplate hibernateTemplate;
public HibernateTemplate getHibernateTemplate() {
return hibernateTemplate;
}
@Resource
public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
this.hibernateTemplate = hibernateTemplate;
}
public void add(Flower flower) {
hibernateTemplate.save(flower);
}
public void delete(Flower flower) {
hibernateTemplate.delete(flower);
}
public void update(Flower flower) {
hibernateTemplate.update(flower);
}
public Flower get(int flowerid) {
return hibernateTemplate.get(Flower.class, flowerid);
}
@SuppressWarnings("unchecked")
public List<Flower> getAllFlower() {
return hibernateTemplate.find("from Flower");
}
public List<Flower> getFreshFlower() {
return hibernateTemplate.find("from Flower f where
f.flowerclas.flowerclasid=1");
}
public List<Flower> getForeverFlower() {
return hibernateTemplate.find("from Flower g where
g.flowerclas.flowerclasid=2");
}
}
lh.service.imp/FlowerSeviceImpl:
package lh.service.impl;
@Service
public class FlowerServiceImpl implements FlowerService {
private FlowerDao flowerDao;
public FlowerServiceImpl() {
}
public FlowerServiceImpl(FlowerDao flowerDao) {
this.flowerDao = flowerDao;
}
public FlowerDao getFlowerDao() {
return flowerDao;
}
@Resource
public void setFlowerDao(FlowerDao flowerDao) {
this.flowerDao = flowerDao;
}
public void add(Flower flower) {
flowerDao.add(flower);
}
public void delete(Flower flower) {
flowerDao.delete(flower);
}
public void update(Flower flower) {
flowerDao.update(flower);
}
public Flower get(int flowerid) {
return flowerDao.get(flowerid);
}
public List<Flower> getAllFlower() {
return flowerDao.getAllFlower();
}
public List<Flower> getFreshFlower() {
return flowerDao.getFreshFlower();
}
public List<Flower> getForeverFlower() {
return flowerDao.getForeverFlower();
}
}
在Spring中,应用本身不负责依赖对象的创建。
依赖对象的创建以及维护是由外部容器负责。
这样控制权就由应用程序转移到外部容器。
控制权的转移就是所谓的反转,这便是Spring的控制反转IOC机制。
上面程序代码中的@resource注解标签,其为Spring依赖注入DI(在运行期间,由外部容器动态的将依赖的对象注入到组件中)的一种属性,其默认按照ByName的方式注入;
如果没有找到匹配的bean,那么按照byType的方式进行注入;可以通过name属性进行执行bean 注入。
该程序中按默认的名字hibernateTemplate、flowerDao、flowerService来注入
HibernateTemplate、 FlowerDao、FlowerService的实体对象。
(还有其他的注入方式,如@Autowired、@Qualifier等,在此就不一一介绍了)
上面程序中还涉及到@Repository、@service,其中@Repository用来标注数据访问组件,如dao层组件, @service用来标注业务层。
6 控制层模块设计
持久层不是负责逻辑层中不变的那部分嘛,那么其负责逻辑层中变化的那部分的实现,控制层即MVC模式的C层,。
它主要负责系统各功能的逻辑实现部分,可以根据不同的逻辑实现各式各样的功能,将其与持久层联系起来,便完成了系统的整个功能的实现。
下面代码中分别写了花的查询、增加、删除、更新、获取列表的功能:
lh.action/FlowerAction.java:
package lh.action;
@Controller
@Scope("prototype")
public class FlowerAction {
private FlowerService flowerService;
private Flower flower;
private List<Flower> flowers;
private int flowerid;
public FlowerService getFlowerService() {
return flowerService;
}
@Resource
public void setFlowerService(FlowerService flowerService) {
this.flowerService = flowerService;
}
public Flower getFlower() {
return flower;
}
/*省略部分get set方法*/
/*添加鲜花*/
public String addFresh(){
flowerService.add(flower);
return queryFresh();
}
/*添加永生花*/
public String addForever(){
flowerService.add(flower);
return queryForever();
}
/*删除鲜花*/
public String deleteFresh(){
flowerService.delete(flower);
return queryFresh();
}
/*删除鲜花*/
public String deleteForever(){
flowerService.delete(flower);
return queryForever();
}
/*更新鲜花*/
public String updateFresh(){
flowerService.update(flower);
return queryFresh();
}
/*更新永生花*/
public String updateForever(){
flowerService.update(flower);
return queryForever();
}
/*通过Id查询永生花*/
public String queryFor(){
flower = flowerService.get(flowerid);
return "updateForever";
}
/*通过Id查询鲜花*/
public String queryFre(){
flower = flowerService.get(flowerid);
return "updateFresh";
}
/*获得鲜花列表*/
public String queryFresh(){
flowers=flowerService.getFreshFlower();
return "freshList";
}
/*获得永生花列表*/
public String queryForever(){
flowers=flowerService.getForeverFlower();
return "foreverList";
}
}
其中@controller用来标注控制层组件,如struts中的action。
7.软件系统登录设计
本花店系统设计了登录权限功能,只有管理员有权限登录系统。
登录需要输入用户名和密码,其中用户名为要求为4-12位的英文,密码由六位数字组成,程序为该系统设计了登录验证功能,无论是你登录用户名还是密码,只要有一项不正确,都会以弹出警告窗口的形式报错。
该功能的实现运用了JavaScript的按钮点击事件及弹出窗口响应之一技术点。
系统默认的用户名为:admin,密码为123456,使用者可以根据自己的需求修改用户名和密码。
输入错误的用户名:
输入正确的用户名,错误的密码:
用户名密码输入正确后成功登陆系统:
8.货品销售模块设计
现在本系统所售卖的花品种还有限,仅仅是代表真爱的玫瑰花,不同色彩玫瑰代表着不同的寓意,白玫瑰代表纯洁真挚的爱,红玫瑰代表热情浪漫的爱,黄玫瑰代表珍重祝福等等。
商家经过独特的包装,为各式花品赋予了特别的含义,对这些别具意义的花商家进行了分类处理,比如鲜花目录下的长支花盒、手捧花束,比如永生花目录下的积木花园、魔幻主义,个性的名字也寄托给花不同的情感与意境:
点击每一副图片可进入花品的查看详情界面,为用户展现更全面更详尽的花品介绍,包括花的价格、花的寓意、设计者寄语等等,然后在花的详单界面可以点击加入下单,下单后即可生成订单,系统并保存用户所有的订单信息。
花店的销售模块的实现由离不开jsp设计的美观界面和action 中方法的支持,当然还有中间dao层、service层提供的强大支撑才使得系统有序的完成花品的销售功能,中间层由Spring监管,我们只需要将方法写好放在中间层,jsp界面有Struts监管,我们将jsp界面写好后,Struts负责将Jsp界面与action服务器建立联系,以便很好的处理action 很好的接受jsp界面发来的请求和根据请求回应给jsp界面一定的信息,就这样,实现了客户端与服务端的交流过程。
现在将花品销售模块的jsp界面中的“鲜花列表界面”的实现代码附上一段:FreshStorage.jsp:
<head>/*省略一些头部信息代码*/
<style type="text/css">
table{
border-top: 1px solid white;
border-left: 1px solid white;
width: 800px;
text-align: center;
position: absolute;
left:50%;
margin-left: -400px;
border-collapse:collapse;
empty-cells: show;
}
td{
border-right: 1px solid white;
border-bottom: 1px solid white;
height: 2em;width: 8em;
}
td.ope{width:20em;}
</style>
/*如上<script></script>标签所设定的内容,使得界面变得有序规格*/
<script language="javascript" src="js/datetime.js"></script>
</head>
<body>
<table onclick="inner()">
<tr bgcolor="gray">
<td>鲜花编号</td>
<td>鲜花名</td>
<td>鲜花数量</td>
<td>上货日期</td>
<td>存储日期</td>
<td class="ope">操作</td>
</tr>
<s:iterator value="flowers" var="flower" status="st">
<s:if test="#st.count%2==0">
<tr bgcolor="#ECECEC">
<td><s:property value="#st.count" /></td>
<td><s:property value="#flower.flowername" /></td>
<td><s:property value="#flower.flowernum" /></td>
<td><s:property value="#flower.flowerstartdate" /></td>
<td><s:property value="#flower.flowerperiod" /></td>
<td ><a href="flower_queryFre?flowerid=<s:property value="#flower.flowerid"/>">修改</a>
<a href="flower_deleteFresh?flower.flowerid=<s:property value="#flower.flowerid"/>">删除</a></td>
</tr>
</s:if>
<s:else>
<tr bgcolor="pink">
<td><s:property value="#st.count" /></td>
<td><s:property value="#flower.flowername" /></td>
<td><s:property value="#flower.flowernum" /></td>
<td><s:property value="#flower.flowerstartdate" default="0000-00-00 00:00:00" /></td>
<td><s:property value="#flower.flowerperiod" /></td>
<td><a href="flower_queryFre?flowerid=<s:property value="#flower.flowerid"/>">修改</a>
<a href="flower_deleteFresh?flower.flowerid=<s:property
value="#flower.flowerid"/>">删除</a></td>
</tr>
</s:else>
</s:iterator>
<tr bgcolor="gray">
<td><a href="addFreshFlower.jsp">添加鲜花</a></td>
</tr>
</table>
</body>
9.货品管理模块的设计
该模块是本系统的最后一个模块。
花品的管理是指仓库中花的库存管理,每一种花的库存量有多少,每一种花的上货日期是什么时候,每一种花什么时候会枯萎,当花的数量少于某个定量值的时候,系统会发出警报,告诉管理人员花店内某种花品余量不足,可能会影响销售,提示卖家及时补充花品。
花品库存管理中包含了一下内容:
1.不同种类花的信息的修改;
2.不用种类花的信息的删除;
3.花品的添加更新操作;
4.损耗花品的自动整理(比如说花的凋零造成的花品损耗);
参考文献:
[1]耿祥义,张跃平.Java大学实用教程.第三版.北京:电子工业出版社,2012.1
[2] 思软科技内部教材.HTML&CSS&JavaScript
[3] 思软科技内部教材. JDBC&Hibernate
[4] 思软科技内部教材. Spring框架应用
[5] 思软科技内部教材. Structs
[6]陈丹丹,王国辉,朱晓.实战突击:Java Web项目整合开发.北京:电子工业出版社,2011.145:181
[7]邓子云.Java Web轻量级开发体验.北京:电子工业出版社,2012.532:537
Design and implementation of florist business system based on J2EE
Abstract: With the rapid development of Intenet technology, communications and cooperations between people are becoming more and more informationized. From the letter to the cable, the phone, the arrival of the first computer and the rapid development of information networks,all areas are facing the trend of the industry informatization. J2EE is a set of technology framework which is a development platform based on JAVA. This paper will design a business system for a small flower shop.
Key words:J2EE; SSH;MVC; Flower shop; System。