基于J2EE的花店业务系统的设计与实现.docx
- 文档编号:30772170
- 上传时间:2023-08-23
- 格式:DOCX
- 页数:23
- 大小:1.32MB
基于J2EE的花店业务系统的设计与实现.docx
《基于J2EE的花店业务系统的设计与实现.docx》由会员分享,可在线阅读,更多相关《基于J2EE的花店业务系统的设计与实现.docx(23页珍藏版)》请在冰豆网上搜索。
基于J2EE的花店业务系统的设计与实现
基于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.0Web服务器。
3.JAVA开发包:
JDK1.7。
4.数据库:
MySQL5.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代码:
packagelh.beans;
/*省略导入的包名*/
@Entity
@Table(name="t_flower")/*这两行注释将实体类对象映射到数据库表*/
publicclassFlower{
privateintflowerid;
privateStringflowername;
privateStringflowerimage;
privateintflowernum;
privateDateflowerstartdate;
privateintflowerperiod;
privateFlowerClasflowerclas;
privateintflowerPrice;
privateStringfloertDesc;
@Id
@GeneratedValue
publicintgetFlowerid(){
returnflowerid;
}
publicvoidsetFlowerid(intflowerid){
this.flowerid=flowerid;
}
/*省略部分getset方法*/
花类对象的java代码:
packagelh.beans;
/*省略导入的包名*/
@Entity
@Table(name="t_flowerclas")/*这两行注释将实体类对象映射到数据库表*/
publicclassFlowerClas{
privateintflowerclasid;
privateStringflowerclasname;
@Id
@GeneratedValue
publicintgetFlowerclasid(){
returnflowerclasid;
}
publicvoidsetFlowerclasid(intflowerclasid){
this.flowerclasid=flowerclasid;
}
/*省略部分getset方法*/
花订单实体类对象:
packagelh.beans;
/*省略导入的包名*/
@Entity
@Table(name="t_flowerOrder")
publicclassFlowerOder{
privateintorderId;
privateStringgoodName;
privateDateorderDate;
privateintgoodPrice;
@Id
@GeneratedValue
publicintgetOrderId(){
returnorderId;
}
publicvoidsetOrderId(intorderId){
this.orderId=orderId;
}
/*省略部分getset方法*/
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:
packagelh.dao.impl;
@Repository
publicclassFlowerDaoImplimplementsFlowerDao{
privateHibernateTemplatehibernateTemplate;
publicHibernateTemplategetHibernateTemplate(){
returnhibernateTemplate;
}
@Resource
publicvoidsetHibernateTemplate(HibernateTemplatehibernateTemplate){
this.hibernateTemplate=hibernateTemplate;
}
publicvoidadd(Flowerflower){
hibernateTemplate.save(flower);
}
publicvoiddelete(Flowerflower){
hibernateTemplate.delete(flower);
}
publicvoidupdate(Flowerflower){
hibernateTemplate.update(flower);
}
publicFlowerget(intflowerid){
returnhibernateTemplate.get(Flower.class,flowerid);
}
@SuppressWarnings("unchecked")
publicList
returnhibernateTemplate.find("fromFlower");
}
publicList
returnhibernateTemplate.find("fromFlowerfwheref.flowerclas.flowerclasid=1");
}
publicList
returnhibernateTemplate.find("fromFlowergwhereg.flowerclas.flowerclasid=2");
}
}
lh.service.imp/FlowerSeviceImpl:
packagelh.service.impl;
@Service
publicclassFlowerServiceImplimplementsFlowerService{
privateFlowerDaoflowerDao;
publicFlowerServiceImpl(){
}
publicFlowerServiceImpl(FlowerDaoflowerDao){
this.flowerDao=flowerDao;
}
publicFlowerDaogetFlowerDao(){
returnflowerDao;
}
@Resource
publicvoidsetFlowerDao(FlowerDaoflowerDao){
this.flowerDao=flowerDao;
}
publicvoidadd(Flowerflower){
flowerDao.add(flower);
}
publicvoiddelete(Flowerflower){
flowerDao.delete(flower);
}
publicvoidupdate(Flowerflower){
flowerDao.update(flower);
}
publicFlowerget(intflowerid){
returnflowerDao.get(flowerid);
}
publicList
returnflowerDao.getAllFlower();
}
publicList
returnflowerDao.getFreshFlower();
}
publicList
returnflowerDao.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:
packagelh.action;
@Controller
@Scope("prototype")
publicclassFlowerAction{
privateFlowerServiceflowerService;
privateFlowerflower;
privateList
privateintflowerid;
publicFlowerServicegetFlowerService(){
returnflowerService;
}
@Resource
publicvoidsetFlowerService(FlowerServiceflowerService){
this.flowerService=flowerService;
}
publicFlowergetFlower(){
returnflower;
}
/*省略部分getset方法*/
/*添加鲜花*/
publicStringaddFresh(){
flowerService.add(flower);
returnqueryFresh();
}
/*添加永生花*/
publicStringaddForever(){
flowerService.add(flower);
returnqueryForever();
}
/*删除鲜花*/
publicStringdeleteFresh(){
flowerService.delete(flower);
returnqueryFresh();
}
/*删除鲜花*/
publicStringdeleteForever(){
flowerService.delete(flower);
returnqueryForever();
}
/*更新鲜花*/
publicStringupdateFresh(){
flowerService.update(flower);
returnqueryFresh();
}
/*更新永生花*/
publicStringupdateForever(){
flowerService.update(flower);
returnqueryForever();
}
/*通过Id查询永生花*/
publicStringqueryFor(){
flower=flowerService.get(flowerid);
return"updateForever";
}
/*通过Id查询鲜花*/
publicStringqueryFre(){
flower=flowerService.get(flowerid);
return"updateFresh";
}
/*获得鲜花列表*/
publicStringqueryFresh(){
flowers=flowerService.getFreshFlower();
return"freshList";
}
/*获得永生花列表*/
publicStringqueryForever(){
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界面
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 J2EE 花店 业务 系统 设计 实现