基于java web的超市账单管理系统.docx
《基于java web的超市账单管理系统.docx》由会员分享,可在线阅读,更多相关《基于java web的超市账单管理系统.docx(39页珍藏版)》请在冰豆网上搜索。
基于javaweb的超市账单管理系统
xxx大学
毕业论文(设计)
论文题目基于javaweb的超市账单管理系统
姓名学号
院系专业
指导教师职称
中国·合肥
二o一四年六月
摘要
随着超市的不断发展,超市规模越来越大,商品的品种和数量也随之变的更多,同时,超市的业务也就变得越加的繁重。
而超市员工要经常的对超市各种商品的账单等信息进行统计,由于信息量太大,导致人工统计数据时容易发生错误,并且工作效率达不到理想的效果。
为了解决这种情况,于是开发了超市账单管理系统。
本系统基于javaweb开发,主要使用的是java编程语言,使用oracle数据库和Myeclipse等开发工具。
本系统主要实现对超市账单、供应商和用户的简单管理。
使用的核心技术是Servlet和Jsp,Servlet用来处理用户的请求和页面的跳转,Jsp用来向用户显示数据以及实现系统和用户的交互;使用JDBC技术实现与数据库的连接;页面使用div+css布置格局,用javascript处理表单的前端验证。
本系统较好的解决了超市账单管理混乱,效率低下的问题,使超市人员在管理超市账单等业务时更有效率。
关键词:
javaServletjsporacle超市账单管理系统
Abstract
Withthecontinuousdevelopmentofthesupermarket,thesupermarketscalemoreandmorebig,Thevarietyandquantity ofgoods becomes more,Atthesametime, thesupermarket business has becomemoreandmore heavy.The supermarket staff mustoften tothesupermarket commoditybills suchasstatisticalinformation,Theinformationistoolarge,pronetoerrorduetoartificialstatisticaldata,Andtheworkefficiency cannotreachtheidealeffect.Inthiscasethesupermarketbillmanagementsystemalsoemergeasthetimesrequire.Thissystemismainly theuseofJavalanguage, webdevelopmentbasedon Java,TheuseofOracledatabase and developmenttoolssuchasMyeclipse.Thissystemmainly realizethe simple managementofsupermarket bills, suppliersandusers.Thecoretechnology istheuseof Servlet andJsp,Servletisusedto processuser requestsand pagejump,Jspisusedto displaydata and userinteraction totheuser;Connectusing JDBCtechnologyand database;Thediv+csspage layout, front-end verificationprocess form javascript.Thissystem cansolvethe supermarketbill managementconfusion, inefficiency,The supermarket staff greaterefficiencyinthe managementofsupermarket billsbusiness.
Keywords:
javaServletjsporaclebillmanagementsystem
前言
超级市场是以顾客自选方式经营的大型综合性零售商场。
超市现在已经成为我国零售业的一种重要形态,为我国国民经济的发展起到了重要的作用。
如今超市的发展十分迅速,超市规模相对以前变得更加庞大,商品的品种和数量也随之变的更多,同时,超市的业务也就变得越加的繁重,最初的售货员站柜台的销售方式和人工管理超市账单的方式已不能满足现有的超市的发展,因此我们需要引入新的管理技术来适应超市急速发展的局势。
随着科学技术的迅猛发展,我国早已步入数字化时代,需要加工处理和传输的信息量巨大,因此信息的存储和处理也显的尤其重要。
超市账单管理系统的运作就是处理和存储大量的数字信息,这就需要对数据库进一步的开发和利用。
超市要想在如今激烈的市场竞争中占有一席之地,就需要有高效的处理方式和管理方法,因此加快超市的信息化进程是必不可少的。
本次毕业设计的目标是开发一个基于Javaweb的超市账单管理系统,为超市提供一个合理的管理方案。
本系统可以在一定程度上提高管理水平和工作效率,可以最大限度的减少人工操作带来的失误,使用此系统主要为了方便超市工作人员合理的管理超市账单,商品和会员用户等信息,从而达到提高超市管理效率的目的。
1系统功能需求分析
1.1功能分析
超市账单管理系统的主要功能就是完成对超市账单、会员用户及供应商进行数据的增加、删除、修改和查看的功能。
在各个管理模块中,可以根据名称查询相应模块中所有符合条件的记录,快速的查询到符合条件的数据,方便用户进行信息核对,同时用户也可以对所查询到的记录进行增加、修改和删除操作。
操作完毕后,用户可以退出系统。
具体系统功能需求描述如下:
(1)登录,用户根据用户名、密码进行登录,系统从后台获取用户名,用户名存在并且密码正确的情况下,成功登录,否则登录失败,并在登录页面给出相应提示。
(2)账单管理,主要管理超市账单,有账单的编号、商品名称、商品数量、交易金额、是否付款、供应商名称、商品描述和账单时间。
用户可以通过点击商品名称,查看商品的具体信息,并根据需求对其进行删除,修改等操作。
(3)供应商管理,主要管理与超市合作的供应商,有编号、供应商名称、供应商描述、联系人、电话和地址。
用户可以通过点击供应商名称,查看供应商的具体信息,并根据需求进行删除,修改等操作。
(4)用户管理,主要管理管理超市的用户,有编号、用户名称、性别、年龄、电话、地址和权限。
用户可以通过点击用户名称,查看用户的具体信息,并根据需求进行删除,修改等操作。
用户管理信息化,减少了人力资源的浪费。
(5)退出,用户对数据操作完毕后,可以点击退出按钮,退出管理系统,回到登陆界面。
1.2系统分析
1.2.1模块组成
本设计根据实际需求将系统划分成4个不同模块进行开发,分别为登录模块、账单管理模块、供应商管理模块和用户管理模块,如图1-1所示:
图1-1系统功能模块图
1.2.2各子模块工作流程
用户想使用此系统,首先要使用用户名和密码进行登录,登录失败则重新登录,登陆成功后会根据用户的权限进入到不同的界面,从而进行不同的操作,系统中各个子模块之间的具体工作流程如图1-2所示:
N
Y普通用户重新登录
Y管理员
图1-2模块工作流程图
1.3可行性分析
1.3.1技术可行性
本系统是基于javaweb所编写的,java语言作为专业课程已经学过。
查找javaweb相关资料学习了jsp,javascript和html等相关内容,本系统所实现的是超市账单管理的最基本、最简单的应用,因此在给定的时间内能够完成。
开发本系统所需要的软件均可以在网上免费获得,同时也可以在网上获得部分开源的代码和图片。
因此,技术上是完全可行的。
1.3.2经济可行性
由于本系统是作为毕业设计由我们学生自己开发的,所需要的素材、开发工具等也都可以在网上免费获得,不需要任何的费用,并且本系统是基于B/S架构开发实现,开发和维护成本都很低,系统建成之后将为超市行业提供很大的方便,因此在经济上是可行的。
1.3.3社会可行性
本系统编程所使用的是自己所写代码,部分是网上的开源代码和图片,并且不以获利为目的,也不会对社会造成不良影响。
因此不必承担任何法律责任。
2系统总体设计
2.1javaweb分层开发的思想
整个系统具有的代码量非常的多复杂,如果这些代码全部放在一起,会使代码层次混乱不堪,当修改业务逻辑或数据库访问的代码时,会破坏其他部分的代码,不利于系统的维护。
为了避免这些问题,使用分层开发的思想来开发系统。
把各个功能按调用流程进行模块化,各模块可以随意的组合。
[1]
使用分层有如下好处:
1.实现了各模块之间的解耦。
2.便于系统的维护。
3.便于系统功能的扩展。
4.提高软件组件的重用。
本项目分成dao,daoImpl,service,serviceImpl,servlet和page几个层次。
dao层里是一些接口,定义了一些连接数据库和处理增删改查等业务的方法,是最底层的代码;
daoImpl层里面是dao层方法的具体实现;
service层里也是一些接口,并继承了dao层中的类;
serviceImpl层是service层方法的具体实现,主要供servlet层调用;
servlet层里面是一些控制代码,他根据不同需求来决定调用service中的某个方法处理业务,并根据处理结果将调用相应的页面将数据显示给用户;
page层里是用来将数据显示给用户的页面,起显示的作用。
2.2系统的设计模式
设计模式是面向对象的程序设计人员用来解决编程问题的一种形式化表示,是某种场景下你可以套用的一种解决方案。
本系统使用的是MVC设计模式,即Model-View-Controller。
它将一个应用的输入、处理、输出流程按照Model、View、Controller的方式进行分离,这样一个应用被分成三个层——模型层、视图层、控制层。
[2]
视图层(View):
是显示信息,与用户进行交互的界面。
MVC设计模式对于视图的处理仅限于视图上数据的采集和处理,以及用户的请求,而不包括在视图上的业务流程的处理。
本系统使用jsp来代表视图层,用来接收用户的数据和请求。
模型层(Model):
就是业务流程/状态的处理以及业务规则的制定。
业务流程的处理过程对其它层来说是黑箱操作,模型接受视图请求的数据,并返回最终的处理结果。
业务模型的设计可以说是MVC最主要的核心。
本系统使用JavaBean代表模型层,用来处理接收到的数据和请求,并返回相应的结果。
控制层(Controller):
用来调用模型处理业务请求、控制实体数据在视图上展示。
控制层并不做任何的数据处理,控制层接受请求后,它只把用户的信息传递给相应的模型,让模型处理业务请求,再选择符合要求的视图将结果返回给用户。
本系统使用servlet代表控制层。
MVC各层之间的关系如图2-1所示:
用户请求,提交数据调用相应模型
视图选择,并返回数据
图2-1各层之间的关系
2.3技术路线选择
2.3.1服务器端页面技术
本设计选用JSP作为开发超市管理系统的服务器端页面技术。
使用JavaScript,EL表达式和JSTL与之配合使用,使页面表现更加丰富,人机交互更加人性化。
JSP全名为JavaServerPages,在传统的网页HTML文件中加入Java程序片段和JSP标签,就构成了JSP网页。
java程序片段可以操纵数据库、重新定向网页以及发送E-mail等,实现建立动态网站所需要的功能。
[3]
JavaScript是一种基于对象的,动态的客户端脚本语言。
主要目的是为了解决服务器端语言遗留的速度问题,为客户提供更流畅的浏览效果。
当时服务端需要对数据进行验证,验证步骤繁杂,浪费的时间太多。
于是加入了Javascript,提供了页面数据验证的基本功能。
[4]
JSTL(JSPStandardTagLibrary,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库,其中core标记库提供了定制操作,通过限制了作用域的变量管理数据,以及执行页面内容的迭代和条件操作。
简化了JSP和WEB应用程序的开发。
EL(ExpressionLanguage)的目的是为了使JSP写起来更加简单,它提供了在JSP中简化表达式的方法。
2.3.2JDBC技术
数据库是管理信息系统的核心内容。
目前,Web与数据库接口技术有很多,本系统使用JDBC技术来实现应用与数据库的连接。
JDBC是一组标准的Java语言中的接口和类,使用这些接口和类,Java客户端程序可以访问各种不同类型的数据库。
比如建立数据库连接、执行SQL语句进行数据的存取操作。
[5]
它主要有以下优点:
JDBC与ODBC十分相似,便于用户理解;
JDBC支持不同的关系数据库,这使得程序的可移植性大大加强;
JDBCAPI是面向对象的,可以让用户把常用的方法封装起来,方便以后使用。
同时也有以下缺点:
使用JDBC,访问数据记录的速度会受到一定程度的影响;
JDBC结构中包含不同厂家的产品,这就给更改数据源带来了很大的麻烦。
用户根据不同数据库开发商的JDBC驱动可以连接不同数据库,连接原理如图2-2:
图2-2JDBC工作原理
2.3.3B/S架构
本系统使用B/S架构来实现,即浏览器/服务器模式,是一种从传统的C/S模式发展起来的新的网络结构模式。
在这种结构下,用户工作界面是通过浏览器来实现的。
相对于C/S架构,B/S架构开发和维护更加简单,成本更低,并且能实现不同的人员,从不同的地点,以不同的接入方式访问和操作共同的数据。
但在运行速度、数据安全、和人机交互等方面的性能比较差。
2.3.4分页技术
当页面需要显示的内容过多时,就需要用到分页技术,把从数据库获得的数据,分成多个页面显示给用户。
分页要用到的四个必要参数:
数据总数(totalCount),页面总数(totalPage),每页要显示的信息数(pageSize)和当前页(currentPage)。
将这四个参数封装到PageBean中,其中设置pageSize=10,currentPage=1,totalCount由sql语句从数据库中查询得到,而totalPage由计算得到。
如果totalCount/pageSize的值为整数的话,totalPage=totalCount/pageSize,否则totalPage=totalCount/pageSize+1;这样四个参数就获得了。
在oracle数据库中查询结果的行号使用伪列ROWNUM表示(从1开始)。
在底层方法中用sql="selectc2.*from(selectrownumrn,c1.*fromCONSUMERc1whererownum<=?
)c2wherec2.rn>?
"来查询数据库中的数据,其中两个占位符用pb.getCurrentPage()*pb.getPageSize()和(pb.getCurrentPage()-1)*pb.getPageSize())填充,以达到分页获取数据的效果。
最后在jsp页面中,将获取的数据显示出来,并且可以根据点击“下一页”、“上一页”或者“跳转”来改变currentPage的值,相应的改变所查到的结果,从而达到分页显示效果。
[6]
2.4设计工具的选择
2.4.1Web服务器
本次设计选用的Web服务器是由Apache、Sun和其他一些公司及个人共同开发而成的Tomcat服务器。
Tomcat技术先进、性能稳定,而且免费,因而深受Java爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web应用服务器。
2.4.2数据库服务器
本系统选择Oracle数据库服务器。
它是甲骨文公司的一款关系数据库管理系统。
到目前仍在数据库市场上占有主要份额。
是目前最流行的C/S或B/S体系结构的数据库之一。
具有可用性强、可扩展性强、数据安全性强以及稳定性强等优点。
2.4.3页面设计工具
本项目的界面设计软件工具选用DreamweaverCS4。
DreamweaverCS4是Macromedia公司推出的全新的网页编辑器,它不仅可以创建传统的HTML页面,还可以创建XML、JSP、CFML、WML和ActionScript等文档。
因此,本设计选择DreamweaverCS4作为页面设计和维护工具。
2.4.4应用开发工具
本项目的应用开发工具选择Myeclipse,MyEclipse是在eclipse基础上加上自己的插件,是一个十分优秀的用于开发Java,J2EE的Eclipse插件集合,MyEclipse的功能非常强大,支持也十分广泛,尤其是对各种开源产品的支持相当不错。
3系统详细设计
3.1数据表结构设计
根据本项目的实际需求以及应用规模,我们只需要建立一个数据库,在该数据库中建立三个数据表。
(1)用户信息表consumer
(2)商品信息表product
(3)供应商信息表provider
对这3个数据表的字段名称、数据类型及属性具体说明如表3-1至表3-3所示:
表3-1用户信息表(consumer)
字段名(中文)
字段名(英文)
数据类型
长度
是否为空
用户编号
C_ID
Varchar2
20
No
用户名称
USERNAME
Varchar2
20
No
用户密码
PASSWORD
Varchar2
20
No
用户年龄
C_AGE
Number
20
No
用户性别
C_SEX
Varchar2
20
No
用户电话
C_PHONE
Varchar2
20
No
用户地址
C_ADDRESS
Varchar2
20
No
用户权限
C_AUTHORITY
Number
20
No
表3-2商品信息表(product)
字段名(中文)
字段名(英文)
数据类型
长度
是否为空
商品编号
PD_ID
Varchar2
20
No
商品名称
PD_NAME
Varchar2
20
No
商品数量
PD_NUMBER
Number
20
No
商品金额
AMOUNT
Number
20
No
商品描述
PD_DESCRIPTION
Varchar2
100
No
是否付款
PAYMENT
Varchar2
20
No
创建时间
CREATETIME
DATE
No
表3-3供应商信息表(provider)
字段名(中文)
字段名(英文)
数据类型
长度
是否为空
供应商编号
PV_ID
Varchar2
20
No
供应商名称
PV_NAME
Varchar2
20
No
联系人
LINKMAN
Varchar2
20
No
供应商号码
PV_PHONE
Varchar2
20
No
供应商描述
PV_DESCRIPTION
Varchar2
100
No
供应商地址
PV_ADDRESS
Varchar2
50
No
3.2主页面设计
本系统的所有界面采用Internet的设计方式,借鉴于网页的设计方法,本系统的界面
设计成如图3-1所示:
图3-1界面布局图
主界面包含三个主要区域,Part1为标题区,只显示系统标题;Part2为导航条区,显示全部的功能菜单;Part3为操作区域也是最大的区域,全部的数据录入,数据显示均在这里进行。
当点击Part2菜单中的按钮时,Part3中将显示不同的内容。
此功能通过iframe框架来实现,在三个区域包含不同的子页面。
3.3系统个子模块详细设计
本系统共有四个模块,分别为登录模块,用户管理模块,账单管理模块和供应商管理模块。
下面将分别对四个模块进行详细的介绍。
3.3.1登录模块
用户打开登录页面,在页面输入自己的用户名及密码,并且输入验证码,才能点击登录按钮,在提交表单之前,会在客户端对提交的表单进行非空验证,并会在下方显示出相应的提示。
前端验证通过后,系统会从数据库查询输入的用户名和对应的密码,当用户名存在并且密码正确时,登录成功,进入首页。
否则返回登陆页面,并显示“用户名或密码错误”的信息,用户需重新登录。
登陆界面如图3-2所示:
图3-2系统登录页面
主要代码见附录:
系统登录主代码。
当用户成功登陆后,页面上方会显示蓝色的登录用户的名称,并且会根据用户的权限显示相应的导航菜单,便于不同用户进行不同的操作。
管理员和普通用户登录成功进入的首页,如图3-3和3-4所示:
图3-3管理员登陆界面
图3-4普通用户登陆界面
3.3.2用户管理模块
点击左边导航栏中的“用户管理”,会进入用户管理界面。
用户可以在此界面根据需求对数据进行增、删、改、查等相关操作。
如图3-5所示:
图3-5用户管理界面
在这个界面中,用户可以通过在搜索框输入用户名,查找到所有符合条件的结果,如图3-6所示:
图3-6查找用户界面
主要代码见附录:
查找用户主代码。
用户也可以在用户界面点击“添加数据”按钮来进行数据的添加功能。
并且在添加的时候,会对特定项进行非空验证,并且会有相应的提示。
添加成功后,会更新数据库列表并进入用户首页。
如图3-7所示:
图3-7添加用户
主要代码见附录:
添加用户主代码。
在用户管理首页,点击用户名称会跳转到用户详情页面,可以查看用户更加详细的信息。
如图3-8所示:
图3-8用户详情
主要代码见附录:
查看用户详情主代码。
在用户详情页面中,用户可以根据需求修改用户的信息,也可以删除此用户。
修改信息会对所填表单进行非空判断,点击“提交”按钮时,会更新数据库并显示到页面。
如图3-9所示:
图3-9修改用户信息
主要代码见附录:
修改用户主代码。
3.3.3账单管理模块
点击左边导航栏中的“账单管理”,会进入账单管理界面。
用户可以在此界面根据不同需求对数据进行增、删、改、查等相关操作。
如图3-10所示:
图3-10账单管理界面
在这个界面,用户可以通过搜索框输入商品名称,查找到符合条件的结果,如图3-11所示:
图3-11查找账单界面
主要代码见附录:
查找账单主代码。
用户也可以在账单界面点击“添加数据”按钮来进行数据的添加功能。
并且在添加的时候,会对特定项进行非空验证,并且会有相应的提示。
添加成功后,会更新数据库列表并返回账单首页。
如图3-12所示:
图3-12添加账单
主要代码见附录:
添加账单主代码。
在账单管理首页,点击商品名称会跳转到账单详情页面,可以查看账单更加详细的信息。
如图3-13所示:
图3-13账单详情
主要代码见附录:
查看账单详情主代码。
在账单详情页面中,用户可以根据需求修改账单的信息,也可以删除此账单。
修改信息会对所填表单进行非空验证,点击“提交”按钮时,会更新数据库