企业级Java网上订餐系统报告.docx
《企业级Java网上订餐系统报告.docx》由会员分享,可在线阅读,更多相关《企业级Java网上订餐系统报告.docx(30页珍藏版)》请在冰豆网上搜索。
企业级Java网上订餐系统报告
企业级Java应用开发实践报告
课程代码:
1302451
课程名称:
企业级Java应用开发
课程类别:
专业主干课
开课学期:
2014春季学期
编写单位:
中国地质大学(北京)信息工程学院
项目负责人:
王萌
编写人:
王萌
指导教师:
薛涛
提交班级:
10131111
提交时间:
2014年6月6日
目录
1项目目的和任务1
1.1项目背景1
1.2项目目标与任务2
1.3任务分工3
2项目进度安排3
3系统需求分析4
3.1定义4
4系统设计9
4.1系统架构设计9
4.2系统功能设计10
4.3数据库设计16
5系统实现18
5.1系统登陆页面18
5.2展示所有菜品页面19
5.3菜品详情页面20
5.4查看购物车页面21
6项目总结22
1项目目的和任务
本课程实践的目的和意义在于通过设计与完成一个网上订餐系统,使学生比较全面地、系统地掌握J2EE的基本概念和基本知识,可以使用Java语言实现对数据库中的数据进行操作,为将来从事Java及数据库方面的研究、开发和应用奠定坚实的基础。
本项目来源于中国地质大学(北京)信息工程学院企业级Java应用开发课程实践,开发周期为30天。
本项目由中国地质大学(北京)信息工程学院的王萌研发,系统主要实现以下功能:
验证用户登录、展示全部菜品、展示菜品详情、将菜品加入购物车、查看购物车。
1.1项目背景
下面将从国外、国内、发展趋势三方面对本项目的项目背景进行阐述。
1.1.1国外情况
国外的许多知名品牌,如肯德基、麦当劳,在多年前就开始了网上订餐服务,并且受到了国外的许多家庭的欢迎;这些品牌的网上订餐服务这几年也在中国逐渐普及。
1.1.2国内情况
跟随国外网上订餐的热潮,现在在国内出现了好多网上订餐系统,比较出名而且我们在生活中经常用到的就要属“饿了么”。
“饿了么”这个网站很好地迎合了消费者的需求:
可以便捷地搜索自己身边的美食店进行查看,喜欢就可接直接订餐,省去了到实体店排队等候的时间,尤其适合很宅的大学生和工作狂人。
与人方便的同时,这个网站也有一些我感觉需要改进的地方,比如:
这个网站是把所有店铺信息以表格的形式,一下子、全部显示在用户面前,这样难免有些眼花缭乱,如图1所示;而且,没有把信息相应地进行分页显示,总是要滑动鼠标滑轮来上下翻动,用户体验感不好。
综上而述,信息量固然重要,但用户感官体验也是必不可少的。
图1“饿了么”网页
1.1.3发展趋势
当今社会的生活节奏越来越快,人们对餐饮的要求也越来越高,不仅要求色香味俱全,而且对于就餐的时间和方式也有了更高的要求,许多顾客由于工作繁忙无法抽出时间来享受美味,这样就产生了快捷订餐的要求,最快的方式莫过于利用计算机网络,将餐饮业和计算机网络结合起来,就形成了网上订餐系统,用能力的餐饮企业对对餐品提供商提供网上订餐服务,不仅提高餐饮企业的服务质量,扩大知名度,也是为最终用户提供方便快捷的食品服务。
社会对餐饮的快捷性要求形成了对网上订餐的要求,该项目将使用JavaWeb技术的Servlet+JSP+JavaBean实现快捷的开发与部署,并且可以最大限度的保证系统的稳定性。
1.2项目目标与任务
本系统的目标是使用最简单的界面风格,满足人们对网上订餐快捷性的要求,没有冗余的信息,打开页面,直接登录,浏览菜品,加入购物车,进行结算。
用最简单的步骤、最少的时间来满足用户对订餐的要求,提高服务效率及顾客满意度。
针对本系统,主要需要完成三部分:
(1)建立数据资源:
在数据库中构建需要的数据表,建立表间联系;
(2)对数据资源进行访问:
利用编程语言连接数据库,实现对库中数据的增删改查操作;
(3)对业务逻辑进行处理:
实现系统功能的后台处理部分,包括界面间跳转及数据信息的传输;
(4)具体界面实现:
编码实现各页面,包括登录页面、展示所有菜品页面、菜品详情页面、添加菜品成功页面、查看购物车页面。
1.3任务分工
系统设计阶段的任务分工如表1所示。
表1系统设计阶段任务分工
组员
组内分工
王萌
完成全部
2项目进度安排
本系统开发流程如表2所示。
表2系统开发流程表
时间
工作安排
具体内容
5月7日---
5月10日
设计数据库
设计概念模型、逻辑模型、物理模型,导出数据库脚本
5月11日
执行数据库脚本
在Oracle数据库中执行脚本
5月12日---
5月19日
完成
各部分功能
实现增删改查功能
在MyEclipse中,配置文件,连接数据库,编写userBean类(用户User类和菜品Dish类),完成对用户及菜品的增删改查
5月20日---
5月23日
实现界面跳转功能
完成用户验证登录,显示全部菜品,显示购物车
5月24日---
5月27日
实现分页功能
将显示全部菜品页面进化为分页显示
5月28日---
5月30日
实现购物车功能
实现将菜品添加进购物车,并计算总价的功能
5月31日
整体调试运行
在浏览器中运行,也是整体最终测试
6月1日---
6月5日
完成实验报告
按照要求完成报告
3系统需求分析
3.1定义
3.1.1业务流程
本系统的业务流程大致是这样的:
用户打开登录页面,填写用户名和密码,系统进行验证,验证不合法(即用户信息与数据库中信息不匹配),则系统要求用户重新输入;验证合法,则进入分页显示菜品的页面。
在分页显示菜品的页面,可以进行翻页对菜品大致浏览,也可以点击某一菜品进入其详情页面。
在菜品详情页面,可以浏览该菜品的全部信息,并可以订购该菜品。
在分页显示菜品的页面和菜品详情页面都可以点击查看购物车,对已订购菜品进行查看。
本系统的业务流程图如图2所示。
图2业务流程图
3.1.2系统用例
用例是对一个活动者使用系统的一项功能时所进行的交互过程的一个文字描述序列。
而用例图是显示一组用例、参与者以及它们之间关系的图。
下面以用例图和用例描述来对本系统的用例进行描述。
本系统的用例图如图3所示。
图3系统用例图
以下表3至表6是对图1系统用例图中用例的详细描述,即用例描述。
表3LoginSystem用例描述
用例名称
LoginSystem
标识符
wm_1
用例描述
用户登录网上订餐系统,输入用户名、密码,系统对其进行验证
参与者
用户、网上订餐系统
优先级
1
前置条件
无
后置条件
系统验证
基本操作流程
1.用户进入登录页面,输入用户名、密码,点击“确定”
2.系统对用户信息进行验证
可选操作流程
退出系统
被泛化的用例
无
被包含的用例
无
被扩展的用例
无
表4ViewDishes用例描述
用例名称
ViewDishes
标识符
wm_2
用例描述
对系统中的所有菜品进行分页展示
参与者
用户、网上订餐系统
优先级
2
前置条件
用户经验证为合法用户
后置条件
无
基本操作流程
用户浏览菜品信息
可选操作流程
A.点击按钮“上一页”、“下一页”、“首页”、“最后一页”,对每一页的菜品进行查看
B.点击菜品图片,或者按钮“详情”进入菜品详情页面
C.查看购物车
被泛化的用例
无
被包含的用例
无
被扩展的用例
无
表5ViewDishDetails用例描述
用例名称
ViewDishDetails
标识符
wm_3
用例描述
展示用户点击菜品的详细信息
参与者
用户、网上订餐系统
优先级
2
前置条件
用户经验证为合法用户,且用户在浏览全部菜品时点击了其中一个图片或“详情”按钮
后置条件
无
基本操作流程
用户浏览菜品的详细信息
可选操作流程
A.将该菜品加入购物车
B.查看购物车
被泛化的用例
无
被包含的用例
无
被扩展的用例
AddToCart
表6ViewCart用例描述
用例名称
ViewCart
标识符
wm_4
用例描述
查看该用户购物车中的信息
参与者
用户、网上订餐系统
优先级
2
前置条件
用户经验证为合法用户,且用户在展示所有菜品页面或者菜品详情页面点击“查看购物车”按钮
后置条件
无
基本操作流程
用户浏览购物车内的信息
可选操作流程
A.生成订单
B.清空购物车
被泛化的用例
无
被包含的用例
无
被扩展的用例
无
3.1.3系统总体功能
网上订餐系统的功能图如图4所示。
图4网上订餐系统功能图
根据图4网上订餐系统功能图,下面对各部分功能进行详细介绍。
(1)登录页面:
用户输入用户名、密码,系统对其进行验证,验证通过则进入展示所有菜品页面。
(2)展示所有菜品页面:
本页面对全部菜品进行分页显示。
用户可以点击按钮“上一页”、“下一页”、“首页”、“最后一页”,对每一页的菜品进行查看;也可以点击菜品图片,或者按钮“详情”进入菜品详情页面。
(3)菜品详情页面:
显示某个菜品的全部详细信息,包括菜品编号、菜品名称、菜品描述、菜品图片、菜品价格、菜品折扣。
点击按钮“订购”,可以将该菜品添加进购物车。
(4)添加菜品成功页面:
订购成功,弹出窗口提示“订购成功”,点击“确定”,回到菜品详情页面。
(5)查看购物车页面:
在展示所有菜品页面或菜品详情页面,点击按钮“查看购物车”,可以进入此页面,对自己曾经添加过的菜品、数量、总价等进行浏览。
3.1.4系统数据字典
数据字典的作用是在软件分析和设计的过程中给人提供关于数据的描述信息。
数据流图和数据字典共同构成系统的逻辑模型。
数据字典是系统中各类数据描述的集合,它通常包括以下主要部分:
(1)数据项:
本系统数据项已列出,如表7所示:
表7各数据项的具体描述表
名称
别名
数据
类型
长
度
与其他
数据项的逻辑关系
数据项
之间的
联系
用户编号
u_id
number
38
无
无
用户姓名
uname
varchar2
20
无
无
用户密码
upassword
varchar2
20
无
无
用户电话
utel
varchar2
15
无
无
用户地址
uaddress
varchar2
100
无
无
菜品编号
did
number
38
无
无
菜品名称
dname
varchar2
15
无
无
菜品描述
ddesc
varchar2
200
无
无
菜品图片
dimg
varchar2
150
无
无
菜品价格
dprice
number(12,3)
12
无
无
菜品折扣
ddiscount
number(12,3)
12
无
无
订单编号
oid
number
38
无
无
订购时间
o_time
varchar2
150
无
无
订购数目
dnumber
number
38
无
无
(2)数据结构:
数据结构反应了数据之间的组合关系。
本系统数据项已列出,如表8所示:
表8数据结构具体描述表
数据结构名
含义说明
组成
用户
用户的详细信息
用户编号、姓名、密码、电话、地址
菜品
菜品的详细信息
菜品编号、名称、描述、图片、价格、折扣
订单
订单的详细信息
订单编号、订购时间、用户编号、
菜品编号、菜品数目、菜品价格
(3)数据流:
数据流是数据结构在系统内传输的路径。
本系统共有3个数据流,分别描述如下:
a.数据流名称:
用户信息
说明:
主要包括用户的用户名、密码
数据流来源:
用户在登录网上订餐系统首页时,输入的用户名以及密码
数据流去向:
数据库
数据流组成:
用户姓名+用户密码
b.数据流名称:
菜品信息
说明:
某个菜品的所有详细信息
数据流来源:
数据库
数据流去向:
用户
数据流组成:
菜品编号+菜品名称+菜品描述+菜品图片+菜品价格+菜品折扣
c.数据流名称:
订购信息
说明:
用户添加进购物车的菜品的信息
数据流来源:
用户曾点击订购的菜品
数据流去向:
购物车
数据流组成:
菜品编号+菜品名称+菜品数目+菜品价格+总计
3.1.5系统数据流图
数据流图表达了数据和处理的关系。
图书管理系统的数据流图如图5所示:
图5网上订餐系统数据流图
4系统设计
4.1系统架构设计
网上订餐系统架构图如图6所示。
图6系统架构图
4.1.1系统开发采用的技术手段
☑J2EE技术
☑PowerDesigner
☑RationalRose
☑WPS
4.1.2系统开发环境
☑Window7操作系统
☑Oracle数据库
☑MyEclipse10
4.1.3系统部署实施环境
(1)系统部署主要采用数据库服务器:
☑Oracle11g或以上版本
(2)系统部署主要采用客户机:
☑Windows7或以上版本
☑Oracle11g或以上版本
☑Chrome浏览器
4.2系统功能设计
本系统主要完成用户登录、菜品展示、管理购物车、生成订单等功能。
下面以用户和菜品为模块进行描述。
4.2.1用户模块
本模块主要实现在用户登录过程中对用户信息进行验证的功能。
这个模块共有2个接口和5个类,它们之间的关系如图7所示,各自内部函数如表9所示。
图7用户模块类图
(注:
实线箭头为继承,虚线箭头为实现,直线为关联)
表9用户模块各接口和类内部函数列表
接口/类
名称
函数名称及参数
返回类型
完成功能
接口IUserDAO
findUser(Stringsql1,Stringusername)
ArrayList
实现对数据库中表wm_user的增删改查操作
insertUser(Useruser)
int
deleteUser(intuserid)
int
updateUser(Useruser)
int
接口IUserService
validateUser(Stringusername,Stringpwd)
boolean
验证用户是否合法
类Utils
getDriver()
String
读取配置文件中有关连接数据库的信息,为连接数据库提供服务
setDriver(Stringdriver)
void
getUrl()
String
setUrl(Stringurl)
void
getUser()
String
setUser(Stringuser)
void
getPassword()
String
setPassword(Stringpassword)
void
getConnection()
Connection
连接数据库
free(Statementst,ResultSetrs,Connectionconn)
void
释放资源
类User
getUid()
int
User类是一个JavaBean,它所包含的这些getX()和setX()函数,都是利于其他类调用相应属性而设计的
setUid(intuid)
void
getUname()
String
setUname(Stringuname)
void
getUpassword()
String
setUpassword(Stringupassword)
void
getUaddress()
String
setUaddress(Stringuaddress)
void
getUtel()
String
setUtel(Stringutel)
void
类BaseDAO
MappingObj(ResultSetrs,Classclazz)
Object
处理Oracle数据库与MyEclipse之间数据类型的转换
find(Stringsql,Object[]params,Classclazz)
ArrayList
从数据库中查找满足条件的所有条目并返回
idu(Stringsql,Object[]params)
int
实现对数据库中wm_dish表数据的增删改操作
getTotalRecords(Stringsql)
int
返回满足条件的条目的总数目
类UserDAO
同接口IUserDAO
实现接口IUserDAO中的各函数
类UserService
同接口IUserService
实现接口IUserService中的各函数
用户模块的时序图如图8所示。
用户在登录页面输入用户名和密码,经后台从数据库中取出相关信息验证后,验证成功进入显示所有菜品的页面;验证不成功,则停留在登录页面,要求用户重新输入用户名和密码。
图8用户模块时序图
4.2.2菜品模块
本模块主要实现经系统验证成功的用户对全部菜品进行分页查看、对某个菜品查看详情的功能。
这部分共有2个接口和6个类,它们之间的关系如图9所示,各自内部函数如表10所示。
图9菜品模块类图
(注:
实线箭头为继承,虚线箭头为实现,直线为关联)
表10菜品模块各接口和类内部函数列表
接口/类
名称
函数名称及参数
返回类型
完成功能
接口
IDishDAO
findDish(Stringsql1,Object[]params)
ArrayList
实现对数据库中表wm_dish的增删改查操作
insertDish(Dishdish)
int
deleteDish(intdishid)
int
updateDish(Dishdish)
int
getTotalDishes(Stringsql)
int
返回满足筛选条件的菜品总数
接口
IDishService
findDish4PageList(intpageNO,intpageSize)
PageModel
返回从第M到第N,共(N-M+1)条菜品信息,用于分页显示
getTotalDishs()
int
返回所有菜品的数目
findDishByID(intdishid)
Dish
返回固定id号的菜品信息
类Utils
同用户模块的类Utils
类Dish
getDid()
BigDecimal
Dish类是一个JavaBean,它所包含的这些getX()和setX()函数,都是利于其他类调用相应属性而设计的
setDid(BigDecimaldid)
void
getDname()
String
setDname(Stringdname)
void
getDdesc()
String
setDdesc(Stringddesc)
void
getDimg()
String
setDimg(Stringdimg)
void
getDprice()
BigDecimal
setDprice(BigDecimaldprice)
void
getDdiscount()
BigDecimal
setDdiscount(BigDecimalddiscount)
void
类PageModel
getTotalrecords()
int
这些函数也是一个JavaBean,方便其他类对相关属性进行调用
setTotalrecords(inttotalrecords)
void
getPageSize()
int
setPageSize(intpageSize)
void
getPageNO()
int
setPageNO(intpageNO)
void
getList()
List
setList(Listlist)
void
PageModel(inttotalrecords,intpageSize,intpageNo,Listlist)
无
初始化函数
getTotalPages()
int
返回总页数
getTopPageNO()
int
跳转至第一页
getPrevPageNO()
int
跳转至上一页
getNextPageNO()
int
跳转至下一页
getBottomPageNO()
int
跳转至最后一页
类DishService
同接口IDishService
实现接口IDishService中的各函数
类BaseDAO
同用户模块的类BaseDAO
类DishDAO
同IDishDAO
实现接口IDishDAO中的各函数
菜品模块的时序图如图10所示。
经成功验证的用户进入分页显示全部菜品的页面后,后台会从数据库中取出部分数据供给用户浏览,这时可以对菜品进行切换页数的浏览,也可以点击某一菜品进入详情页面浏览,在详情页面,可以将菜品加入购物车。
图10菜品模块时序图
4.3数据库设计
数据库设计即根据对系统的分析,依次设计概念结构图、逻辑结构图、物理结构图,最后根据物理结构图导出数据库脚本,以便在数据库中执行。
4.3.1概念结构设计
由需求分析可以得出本系统的概念结构设计图(E-R图),如图11所示。
这里主要有4个实体:
wm_user:
用户实体,包括用户编号、姓名、密码、联系电话、送餐地址;
wm_dish:
菜品实体,包括菜品编号、菜名、菜品描述、菜品图片路径、菜品价格、菜品折扣;
wm_order:
订单实体,包括订单编号、用户编号、菜品编号;
wm_details:
这是对订单的一个补充,包括订单编号、菜品编号及其对应订购数量。
图11系统E-R图
4.3.2逻辑结构设计
将网上订餐管理系统的E-R图转换为关系数据库的数据模型,如图12所示,其关系模式包括:
用户(用户编号、用户名、密码)
菜品(菜品编号、菜品名称、菜品描述、菜品图片、菜品价格、菜品折扣)
订单(订单编号、用户编号、菜品编号)
订单补充(订单编号、菜品编号、订购数量)
图12系统逻辑结构设计图
4.3.3物理结构设计
数据库的存储结构和存取方法称为数据库的物理结构,本系统的物理结构设计如图13所示。
图13网上订餐系统---物理结构设计图
5系统实现
5.1系统登陆页面
图14网上订餐系统---登录页面
在登录页面,用户需要输入用户名、密码,点击“登录”按钮,系统将此信息与数据库中的信息进行审核,审核通过则允许用户继续操作,即进入展示全部菜品的页面。
5.2展示所有菜品页面
图15网上订餐系统---展示所有菜品页面---第一页
用户登录成功后,会自动跳转到图15所示的页面,它的功能是分页展示全部菜品。
为了操作简单,方便浏览,每页只显示2个菜品。
在这个页面主要有3个功能:
点击“上一页”、“下一页”、“首页”、“最后一页”会跳转至相应的页数,显示不同的菜品,如图16就是