范文一:基于java web的超市账单管理系统
xxx 大学
毕 业 论 文(设计)
论文题目 基于java web 的超市账单管理系统 姓 名 学 号 院 系 专 业 指导教师 职 称
中国·合肥 二
o 一四 年六月
摘 要
随着超市的不断发展,超市规模越来越大,商品的品种和数量也随之变的更多,同时,超市的业务也就变得越加的繁重。而超市员工要经常的对超市各种商品的账单等信息进行统计,由于信息量太大,导致人工统计数据时容易发生错误,并且工作效率达不到理想的效果。为了解决这种情况,于是开发了超市账单管理系统。本系统基于java web开发,主要使用的是java 编程语言,使用oracle 数据库和Myeclipse 等开发工具。本系统主要实现对超市账单、供应商和用户的简单管理。使用的核心技术是Servlet 和Jsp ,Servlet 用来处理用户的请求和页面的跳转,Jsp 用来向用户显示数据以及实现系统和用户的交互;使用JDBC 技术实现与数据库的连接;页面使用div+css布置格局,用javascript 处理表单的前端验证。本系统较好的解决了超市账单管理混乱,效率低下的问题,使超市人员在管理超市账单等业务时更有效率。
关键词:java Servlet jsp oracle 超市账单管理系统
Abstract
With the continuous development of the supermarket, the supermarket scale more a nd more big, The variety and quantity of goods becomes more, At the same time, the supermarket business has become more and more heavy.The supermarket staff must often to the supermarket commoditybills such as statistical information, The in formation is too large, prone to error due to artificial statistical data, And the work efficiency can not reach the ideal effect. In this case the supermarket bill manage ment system also emerge as the times require.This system is mainly the use of Java language, webdevelopment based on Java, The use of Oracle database and development tools such as Myeclipse. This system mainly realize the simple management of s upermarket bills, suppliers and users. The core technology is the use of Servlet and Js p, Servlet is used to process user requests and page jump, Jsp is used to display dat a and user interaction to the user; Connect using JDBC technology and database; The div+css page layout, front-end verification process form javascript. This system can so lve the supermarket bill management confusion, inefficiency, The supermarket staff greater efficiency in the management of supermarket bills business.
Keywords: java Servlet jsp oracle bill management system
目录
摘 要 ......................................................................... I Abstract ...................................................................... II 前 言 ......................................................................... 1 1 系统功能需求分析 . ......................................................... 2
1.1 功能分析 ........................................................ 2
1.2 系统分析 ........................................................ 2
1.2.1模块组成 .......................................................... 2 1.2.2各子模块工作流程 ................................................. 3 1.3 可行性分析 ...................................................... 4
1.3.1技术可行性 ........................................................ 4 1.3.2经济可行性 ........................................................ 4 1.3.3社会可行性 ........................................................ 4
2 系统总体设计 ............................................................... 5
2.1 java web分层开发的思想 ......................................... 5 2.2 系统的设计模式 .................................................. 5 2.3 技术路线选择 .................................................... 6 2.4 设计工具的选择 .................................................. 8
3 系统详细设计 ............................................................. 10
3.1 数据表结构设计 ................................................. 10 3.2 主页面设计 ..................................................... 11 3.3 系统个子模块详细设计 ........................................... 11
3.3.1登录模块 ........................................................ 11 3.3.2用户管理模块 . ................................................... 13 3.3.3账单管理模块 . ................................................... 15 3.3.4供应商管理 ...................................................... 18
4 系统的特点与不足 . ....................................................... 21
4.1 系统的特点 ..................................................... 21 4.2 系统的不足 ..................................................... 21
结束语 ....................................................................... 23 参考文献 ................................................... 错误!未定义书签。 附录 ........................................................ 错误!未定义书签。 致谢 ........................................................ 错误!未定义书签。
前 言
超级市场是以顾客自选方式经营的大型综合性零售商场。超市现在已经成为我国零售业的一种重要形态,为我国国民经济的发展起到了重要的作用。如今超市的发展
十分迅速,超市规模相对以前变得更加庞大,商品的品种和数量也随之变的更多,同时,
超市的业务也就变得越加的繁重,最初的售货员站柜台的销售方式和人工管理超市账单的方式已不能满足现有的超市的发展,因此我们需要引入新的管理技术来适应超市急速发展的局势。
随着科学技术的迅猛发展,我国早已步入数字化时代,需要加工处理和传输的信息量巨大,因此信息的存储和处理也显的尤其重要。超市账单管理系统的运作就是处理和存储大量的数字信息,这就需要对数据库进一步的开发和利用。超市要想在如今激烈的市场竞争中占有一席之地,就需要有高效的处理方式和管理方法,因此加快超市的信息化进程是必不可少的。
本次毕业设计的目标是开发一个基于Java web的超市账单管理系统,为超市提供一个合理的管理方案。本系统可以在一定程度上提高管理水平和工作效率,可以最大限度的减少人工操作带来的失误,使用此系统主要为了方便超市工作人员合理的管理超市账单,商品和会员用户等信息,从而达到提高超市管理效率的目的。
1 系统功能需求分析
1.1功能分析
超市账单管理系统的主要功能就是完成对超市账单、会员用户及供应商进行数据的增加、删除、修改和查看的功能。在各个管理模块中,可以根据名称查询相应模块中所有符合条件的记录,快速的查询到符合条件的数据,方便用户进行信息核对,同时用户也可以对所查询到的记录进行增加、修改和删除操作。操作完毕后,用户可以退出系统。具体系统功能需求描述如下:
(1)登录,用户根据用户名、密码进行登录,系统从后台获取用户名,用户名存在并且密码正确的情况下,成功登录,否则登录失败,并在登录页面给出相应提示。
(2)账单管理,主要管理超市账单,有账单的编号、商品名称、商品数量、交易金额、是否付款、供应商名称、商品描述和账单时间。用户可以通过点击商品名称,查看商品的具体信息,并根据需求对其进行删除,修改等操作。
(3)供应商管理,主要管理与超市合作的供应商,有编号、供应商名称、供应商描述、联系人、电话和地址。用户可以通过点击供应商名称,查看供应商的具体信息,并根据需求进行删除,修改等操作。
(4)用户管理,主要管理管理超市的用户,有编号、用户名称、性别、年龄、电话、地址和权限。用户可以通过点击用户名称,查看用户的具体信息,并根据需求进行删除,修改等操作。用户管理信息化,减少了人力资源的浪费。
(5)退出,用户对数据操作完毕后,可以点击退出按钮,退出管理系统,回到登陆界面。
1.2系统分析
1.2.1模块组成
本设计根据实际需求将系统划分成4个不同模块进行开发,分别为登录模块、账单管理模块、供应商管理模块和用户管理模块,如图1-1所示:
图1-1 系统功能模块图
1.2.2各子模块工作流程
用户想使用此系统,首先要使用用户名和密码进行登录,登录失败则重新登录,登陆成功后会根据用户的权限进入到不同的界面,从而进行不同的操作,系统中各个子模块之间的具体工作流程如图1-2所示:
图1-2 模块工作流程图
1.3可行性分析
1.3.1技术可行性
本系统是基于java web所编写的,java 语言作为专业课程已经学过。查找java web相关资料学习了jsp ,javascript 和html 等相关内容,本系统所实现的是超市账单管理的最基本、最简单的应用,因此在给定的时间内能够完成。开发本系统所需要的软件均可以在网上免费获得,同时也可以在网上获得部分开源的代码和图片。因此,技术上是完全可行的。
1.3.2经济可行性
由于本系统是作为毕业设计由我们学生自己开发的,所需要的素材、开发工具等也都可以在网上免费获得,不需要任何的费用,并且本系统是基于B/S架构开发实现,开发和维护成本都很低,系统建成之后将为超市行业提供很大的方便,因此在经济上是可行的。
1.3.3社会可行性
本系统编程所使用的是自己所写代码,部分是网上的开源代码和图片,并且不以获利为目的,也不会对社会造成不良影响。因此不必承担任何法律责任。
2 系统总体设计
2.1 java web分层开发的思想
整个系统具有的代码量非常的多复杂,如果这些代码全部放在一起,会使代码层次混乱不堪,当修改业务逻辑或数据库访问的代码时,会破坏其他部分的代码,不利于系统的维护。为了避免这些问题,使用分层开发的思想来开发系统。把各个功能按调用流程进行模块化,各模块可以随意的组合。
使用分层有如下好处: 1. 实现了各模块之间的解耦。 2. 便于系统的维护。 3. 便于系统功能的扩展。 4. 提高软件组件的重用。
本项目分成dao ,daoImpl ,service ,serviceImpl ,servlet 和page 几个层次。 dao 层里是一些接口,定义了一些连接数据库和处理增删改查等业务的方法,是最底层的代码;
daoImpl 层里面是dao 层方法的具体实现;
service 层里也是一些接口,并继承了dao 层中的类;
serviceImpl 层是service 层方法的具体实现,主要供servlet 层调用;
servlet 层里面是一些控制代码,他根据不同需求来决定调用service 中的某个方法处理业务,并根据处理结果将调用相应的页面将数据显示给用户;
page 层里是用来将数据显示给用户的页面,起显示的作用。
[1]
2.2 系统的设计模式
设计模式是面向对象的程序设计人员用来解决编程问题的一种形式化表示, 是某种场景下你可以套用的一种解决方案。本系统使用的是MVC 设计模式,即Model-View-Controller 。它将一个应用的输入、处理、输出流程按照Model 、View 、Controller 的方式进行分离,这样一个应用被分成三个层——模型层、视图层、控制层。
视图层(View ):是显示信息,与用户进行交互的界面。MVC 设计模式对于视图的处理仅限于视图上数据的采集和处理,以及用户的请求,而不包括在视图上的业务流程的处理。本系统使用jsp 来代表视图层,用来接收用户的数据和请求。
模型层(Model ):就是业务流程/状态的处理以及业务规则的制定。业务流程的
[2]
处理过程对其它层来说是黑箱操作,模型接受视图请求的数据,并返回最终的处理结果。业务模型的设计可以说是MVC 最主要的核心。本系统使用JavaBean 代表模型层,用来处理接收到的数据和请求,并返回相应的结果。
控制层(Controller) :用来调用模型处理业务请求、控制实体数据在视图上展示。控制层并不做任何的数据处理,控制层接受请求后,它只把用户的信息传递给相应的模型,让模型处理业务请求,再选择符合要求的视图将结果返回给用户。本系统使用servlet 代表控制层。
MVC 各层之间的关系如图2-1所示:
图2-1 各层之间的关系
2.3技术路线选择
2.3.1 服务器端页面技术
本设计选用JSP 作为开发超市管理系统的服务器端页面技术。使用JavaScript ,EL 表达式和JSTL 与之配合使用,使页面表现更加丰富,人机交互更加人性化。
JSP 全名为Java Server Pages,在传统的网页HTML 文件中加入Java 程序片段和JSP 标签,就构成了JSP 网页。java 程序片段可以操纵数据库、重新定向网页以及发送E-mail 等,实现建立动态网站所需要的功能。
JavaScript 是一种基于对象的,动态的客户端脚本语言。主要目的是为了解决服务器端语言遗留的速度问题,为客户提供更流畅的浏览效果。当时服务端需要对数据进行验证,验证步骤繁杂,浪费的时间太多。于是加入了Javascript ,提供了页面数据验证的基本功能。
JSTL (JSP Standard Tag Library ,JSP 标准标签库) 是一个不断完善的开放源代码的JSP 标签库,其中core 标记库提供了定制操作,通过限制了作用域的变量管理数据,以及执行页面内容的迭代和条件操作。简化了JSP 和WEB 应用程序的开发。
[4]
[3]
E L(Expression Language) 的目的是为了使JSP 写起来更加简单,它提供了在 JSP 中简化表达式的方法。
2.3.2 JDBC技术
数据库是管理信息系统的核心内容。目前,Web 与数据库接口技术有很多,本系统使用JDBC 技术来实现应用与数据库的连接。JDBC 是一组标准的Java 语言中的接口和类,使用这些接口和类,Java 客户端程序可以访问各种不同类型的数据库。比如建立数据库连接、执行SQL 语句进行数据的存取操作。
它主要有以下优点:
JDBC 与ODBC 十分相似,便于用户理解;
JDBC 支持不同的关系数据库,这使得程序的可移植性大大加强;
JDBC API 是面向对象的,可以让用户把常用的方法封装起来,方便以后使用。 同时也有以下缺点:
使用JDBC ,访问数据记录的速度会受到一定程度的影响;
JDBC 结构中包含不同厂家的产品,这就给更改数据源带来了很大的麻烦。 用户根据不同数据库开发商的JDBC 驱动可以连接不同数据库,连接原理如图2-2:
[5]
图2-2 JDBC工作原理
2.3.3 B/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 的值为整数的话,t otalPage=totalCount/pageSize,否则totalPage=totalCount/pageSize+1;这样四个参数就获得了。
在oracle 数据库中查询结果的行号使用伪列ROWNUM 表示(从1开始)。在底层方法中用sql="select c2.* from(select rownum rn,c1.* from CONSUMER c1 where rownum<=?)c2 where="" c2.rn="">?"来查询数据库中的数据,其中两个占位符用pb.getCurrentPage()*pb.getPageSize()和(pb.getCurrentPage()-1)*pb.getPageSize())填充,以达到分页获取数据的效果。
最后在jsp 页面中,将获取的数据显示出来,并且可以根据点击“下一页”、“上一页”或者“跳转”来改变currentPage 的值,相应的改变所查到的结果,从而达到分页显示效果。
[6]
2.4 设计工具的选择
2.4.1 Web服务器
本次设计选用的Web 服务器是由Apache 、Sun 和其他一些公司及个人共同开发而成的Tomcat 服务器。Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。
2.4.2 数据库服务器
本系统选择Oracle 数据库服务器。它是甲骨文公司的一款关系数据库管理系统。
到目前仍在数据库市场上占有主要份额。是目前最流行的 C/S或B/S体系结构的数据库之一。具有可用性强、可扩展性强、数据安全性强以及稳定性强等优点。
2.4.3 页面设计工具
本项目的界面设计软件工具选用Dream weaver CS4。Dream weaver CS4 是Macromedia 公司推出的全新的网页编辑器,它不仅可以创建传统的HTML 页面,还可以创建XML 、JSP 、CFML 、WML 和Action Script等文档。因此,本设计选择Dream weaver CS4作为页面设计和维护工具。
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 )
表3-2商品信息表(product)
表3-3供应商信息表(provider )
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 账单详情
主要代码见附录:查看账单详情主代码。
在账单详情页面中,用户可以根据需求修改账单的信息,也可以删除此账单。修改信息会对所填表单进行非空验证,点击“提交”按钮时,会更新数据库并显示到页面。如图3-14所示:
图3-14 修改账单信息
主要代码见附录:修改账单主代码。
3.3.4供应商管理
点击左边导航栏中的“供应商管理”,会进入供应商管理界面。用户可以在此界面根据不同需求对数据进行增、删、改、查等相关操作。如图3-15所示:
图3-15 供应商管理界面
在这个界面,用户可以通过搜索框输入供应商名称,查找到符合条件的结果,如图3-16所示:
图3-16 查找供应商
主要代码见附录:查找供应商主代码。
用户也可以在供应商界面点击“添加数据”按钮来进行数据的添加功能。并且在添加的时候,会对特定项进行非空验证,并且会有相应的提示。添加成功后,会更新数据库列表并返回供应商首页。如图3-17所示:
图3-17 添加供应商
主要代码见附录:添加供应商主代码。
在供应商管理首页,点击供应商名称会跳转到供应商详情页面,可以查看供应商更加详细的信息。如图3-18所示:
图3-18 供应商详情
主要代码见附录:查看供应商详情主代码。
在供应商详情页面中,用户可以根据需求修改供应商的信息,也可以删除此供应商。修改信息会对所填表单进行非空判断,点击“提交”按钮时,会更新数据库并显示到页面。如图3-19所示:
图3-19 修改供应商信息
主要代码见附录:修改供应商主代码。
4 系统的特点与不足
4.1系统的特点
1 开发简单
本系统是基于java web开发的系统,使用MVC 模式实现,主要用JavaBean 、Jsp
和Servlet 技术充当MVC 模式中的模型层、视图层和控制层,依靠Servlet 技术接收Jsp 传来的参数,根据不同情况调用不同的JavaBean 处理用户请求,跳转到相应的Jsp 页面将结果展现给用户。整个系统结构清晰,结构简单,便于开发。
2便于维护和升级
本系统使用JDBC 技术连接数据库,可以连接不同数据库,可移植性好;同时,
整个系统的代码按照功能进行了详细的分层,结构明确,有条有理,方便开发人员对系统功能的扩展、升级和维护。
3使用方便
本系统使用B/S架构实现,因此在使用时无需安装其他客户端软件,在浏览器上就可以完成登录和其他操作。同时,用户界面是采用Internet 的设计方式,界面简单、整洁,导航清晰,用户很快就可以掌握使用方法。
4系统安全、稳定
本系统的软件建立在性能稳定的Windows 操作平台上的,系统在开发以及调试的时候,每一个阶段都经过严格把关,每一个流程都进过严格的测试,确保系统的安全性和稳定性。
4.2系统的不足
1功能不太完善
由于时间仓促,并且没有什么经验,所以系统开发的时候考虑的不是很周全,系统实现的功能过于简单,只是简单的实现了用户、账单和商品的增、删、改、查。没有更复杂的操作。而且项目中就简单的创建了三个表,而且表与表之间没有什么关联,这在实际应用中是不可能的。
2 界面不太美观
系统是使用Internet 的方式来设计用户界面的,因为没有学习过网页设计等相关知识,所以界面设计的比较简单,不够精致、美观。
结束语
经过多次的实践与摸索以及在老师的帮助和指导下终于完成了对超市账单管理系统的设计与开发。它是基于Java Web ,采用MVC 模式,主要使用JavaBean 、Jsp 和Servlet 等技术,完成了系统设计与实现。本次设计综合运用了我所学过的知识,让我对系统开发有了更进一步的理解,同时让我学习并掌握了一些重要软件的应用。在设计过程中,通过上网搜索有关资料的同时,也让我开阔了视野,丰富了自己的知识面。
本次设计的超市账单管理系统能够较好的解决超市账单管理混乱,效率低下等问题,使超市人员在管理超市账单等业务时更有效率。本系统可以在一个超市中应用并经过进一步的完善,最后可推广到其它超市。
经过这段时间的设计和开发,超市账单管理系统基本开发完毕。其功能基本符合用户需求,能够完成客户基本的业务操作流程。但是由于时间比较仓促,并且本人经验不足,所以该系统还有许多不够完善的地方,比如用户使用功能较少,用户界面不够美观等多方面的问题。这些都有待进一步改善,希望在以后的学习和工作中得以完善。
参考文献
错误!未找到引用源。
附录
系统登录主代码
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
//处理乱码
response.setContentType("text/html;charset=utf-8"); request.setCharacterEncoding("UTF-8"); PrintWriter out = response.getWriter();
//接受参数
String strUsername=request.getParameter("username"); String strPassword=request.getParameter("password");
//调用Service 层得到用户,判断权限
ConsumerService consumerService=new ConsumerServiceImpl(); Consumer item=consumerService.getUserByUsername(strUsername); HttpSession session=request.getSession(); session.setAttribute("user", item);
//调用service 层进行登录验证
Boolean result=consumerService.login(strUsername, strPassword); if(result){//登录成功 }
response.sendRedirect("/project/page/index.jsp"); String reason="用户名或密码错误"; session.setAttribute("reason", reason);
response.sendRedirect("/project/page/login.jsp"); }else{
查找用户主代码
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
添加用户主代码
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
} //处理乱码 response.setContentType("text/html;charset=utf-8"); request.setCharacterEncoding("UTF-8"); //接受参数(主要用于根据用户名查找列表,username 是从查找页面传过来的) String strUsername=request.getParameter("userName"); //分页 PageBean pb=new PageBean(); String strCurrentPage=request.getParameter("currentPage"); if(strCurrentPage != null && !"".equals(strCurrentPage)){ } String strPageSize=request.getParameter("pageSize"); if(strPageSize != null && !"".equals(strPageSize)){ } //调用Service 层,获得所有用户列表 ConsumerService consumerService=new ConsumerServiceImpl(); List } String strId=request.getParameter("userId"); String strName=request.getParameter("username"); String strPass=request.getParameter("password"); String strAge=request.getParameter("age"); String strSex=request.getParameter("sex"); String strPhone=request.getParameter("phone"); String strAddress=request.getParameter("address"); String strAuthority=request.getParameter("authority"); //封装到用户对象 Consumer user=new Consumer(); user.setC_id(Integer.parseInt(strId)); user.setUsername(strName); user.setPassword(strPass); user.setC_age(Integer.parseInt(strAge)); user.setC_sex(strSex); user.setC_phone(strPhone); user.setC_address(strAddress); user.setC_authority(Integer.parseInt(strAuthority)); //调用Service 层进行添加 ConsumerService consumerService=new ConsumerServiceImpl(); int result=consumerService.addUser(user); PrintWriter out = response.getWriter(); if(result>0){//添加成功 } out.println(""); }else{ history.go(-1)</script>"); 查看用户详情主代码 public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException { 修改用户主代码 public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException { //处理乱码 response.setContentType("text/html;charset=utf-8"); request.setCharacterEncoding("UTF-8"); //接受参数 String strId=request.getParameter("id"); String strUsername=request.getParameter("username"); String strPassword=request.getParameter("password"); String strSex=request.getParameter("sex"); String strAge=request.getParameter("age"); String strPhone=request.getParameter("phone"); String strAddress=request.getParameter("address"); String strAuthority=request.getParameter("authority"); int id=Integer.parseInt(strId); int age=Integer.parseInt(strAge); int authority=Integer.parseInt(strAuthority); //根据id 获得该对象, 进行封装 ConsumerService consumerService=new ConsumerServiceImpl(); Consumer user=new Consumer(); user.setC_id(id); user.setUsername(strUsername); } //处理乱码 response.setContentType("text/html;charset=utf-8"); request.setCharacterEncoding("UTF-8"); //接受参数 String strId=request.getParameter("id"); int id=Integer.parseInt(strId); //根据id 获得对象 ConsumerService consumerService=new ConsumerServiceImpl(); Consumer user=consumerService.getUserById(id); request.setAttribute("user", user); request.getRequestDispatcher("/page/userDetail.jsp").forward(request, response); user.setPassword(strPassword); user.setC_sex(strSex); //user.setC_age(age); user.setC_phone(strPhone); user.setC_authority(authority); user.setC_address(strAddress); //调用方法,保存修改 int result=consumerService.updateUser(user); PrintWriter out = response.getWriter(); if(result>0){//成功 out.println(""); out.close(); }else{//失败 out.println(""); out.close(); } } 查找账单主代码 public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //处理乱码 response.setContentType("text/html;charset=utf-8"); request.setCharacterEncoding("UTF-8"); //接受参数(用于根据商品名称查询) String strName=request.getParameter("pd_Name"); //分页 PageBean pb=new PageBean(); String strCurrentPage=request.getParameter("currentPage"); if(strCurrentPage!=null && !"".equals(strCurrentPage)){ } String strPageSize=request.getParameter("pageSize"); if(strPageSize != null && !"".equals(strPageSize)){ pb.setPageSize(Integer.parseInt(strPageSize)); pb.setCurrentPage(Integer.parseInt(strCurrentPage)); } } //调用方法,获取商品账单列表 ProductService pdService=new ProductServiceImpl(); List 添加账单主代码 public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //处理乱码 response.setContentType("text/html;charset=utf-8"); request.setCharacterEncoding("UTF-8"); //接受参数 String strId=request.getParameter("pd_Id"); String strName=request.getParameter("pd_name"); String strNumber=request.getParameter("number"); String strAmount=request.getParameter("amount"); String strDescription=request.getParameter("pd_Description"); String strPayment=request.getParameter("payment"); int id=Integer.parseInt(strId); int number=Integer.parseInt(strNumber); int amount=Integer.parseInt(strAmount); //封装 Product product=new Product(); product.setPd_id(id); product.setPd_name(strName); product.setPd_number(number); product.setAmount(amount); product.setPayment(strPayment); product.setPd_description(strDescription); //调用方法进行添加操作 ProductService pdService=new ProductServiceImpl(); int result=pdService.addPb(product); PrintWriter out = response.getWriter(); if(result>0){//添加成功 out.println(""); 查看账单详情主代码 public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 修改账单主代码 public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } } out.close(); }else{ out.println(""); } //处理乱码 response.setContentType("text/html;charset=utf-8"); request.setCharacterEncoding("UTF-8"); //获取参数 String strId=request.getParameter("id"); int id=Integer.parseInt(strId); //根据id 获得对象 ProductService pdService=new ProductServiceImpl(); Product product=pdService.getPbById(id); request.setAttribute("product", product); request.getRequestDispatcher("/page/billDetail.jsp").forward(request, response); //处理乱码 response.setContentType("text/html;charset=utf-8"); request.setCharacterEncoding("UTF-8"); //接受参数 String strId=request.getParameter("id"); String strName=request.getParameter("pd_name"); String strNumber=request.getParameter("number"); String strAmount=request.getParameter("amount"); String strDescription=request.getParameter("pdDescription"); String strPayment=request.getParameter("payment"); int id=Integer.parseInt(strId); int number=Integer.parseInt(strNumber); int amount=Integer.parseInt(strAmount); //封装 Product product=new Product(); product.setPd_id(id); product.setPd_name(strName); product.setPd_number(number); product.setAmount(amount); product.setPd_description(strDescription); product.setPayment(strPayment); //调用方法货的对象,对该对象进行修改 ProductService pdService=new ProductServiceImpl(); int result=pdService.updatePb(product); PrintWriter out = response.getWriter(); if(result>0){//成功 out.println(""); } } out.close(); }else{//失败 out.println(""); 查找供应商主代码 public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 添加供应商主代码 public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } //处理乱码 response.setContentType("text/html;charset=utf-8"); request.setCharacterEncoding("UTF-8"); //接受参数(主要用于根据用户名查找列表,username 是从查找页面传过来的) String strUsername=request.getParameter("pv_name"); //分页 PageBean pb=new PageBean(); String strCurrentPage=request.getParameter("currentPage"); if(strCurrentPage != null && !"".equals(strCurrentPage)){ pb.setCurrentPage(Integer.parseInt(strCurrentPage String strPageSize=request.getParameter("pageSize"); if(strPageSize != null && !"".equals(strPageSize)){ } //调用Service 层,获得所有用户列表 ProviderService pvService=new ProviderServiceImpl(); List String strName=request.getParameter("pv_name"); String strPhone=request.getParameter("pv_phone"); String strAddress=request.getParameter("pv_address"); String strDescription=request.getParameter("pv_description"); String linkman=request.getParameter("linkman"); int id=Integer.parseInt(strId); //封装 Provider provider=new Provider(); provider.setPv_id(id); provider.setPv_name(strName); provider.setPv_phone(strPhone); provider.setPv_description(strDescription); provider.setPv_address(strAddress); provider.setLinkman(linkman); //调用Service 层进行添加 ProviderService pvService=new ProviderServiceImpl(); int result=pvService.addPv(provider); PrintWriter out = response.getWriter(); if(result>0){//添加成功 out.println(""); 修改供应商主代码 public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } } out.close(); }else{ out.println(""); //处理乱码 response.setContentType("text/html;charset=utf-8"); } request.setCharacterEncoding("UTF-8"); //接受参数 String strId=request.getParameter("id"); int id=Integer.parseInt(strId); //根据id 获得对象 ProviderService pvService=new ProviderServiceImpl(); Provider provider=pvService.getPvById(id); request.setAttribute("provider", provider); request.getRequestDispatcher("/page/providerDetail.jsp").forward(request, response); 致谢 在本次毕业设计中,首先要感谢我的导师,xxx 老师。在百忙之中,老师还要督促并指导我们完成毕业设计。无论在理论上还是在实践中,都给予我很大的帮助,让我的毕业设计不断得到完善,同时也使我得到不少的提高,这对于我今后的工作和学习都有很大的帮助,感谢老师的细心和耐心的辅导。老师认真负责的工作态度,严谨的治学精神和深厚的理论水平都使我获益匪浅。 同时学校在这方面也给我们提供了很大的支持和帮助,学校领导对此也比较重视,他们给了我们很好的学习环境,使我们能够很好的完成毕业设计。 对于学校和老师为我的毕业设计所提供的极大帮助和关心,在此我致以衷心的感谢! 36 Java 北大青鸟(天津)第二单元超市账单管理系统 项目整体: 项目 dao 包 : 项目 entity 包 : 项目 filter 包 : 项目 servlet 包 : 项目 test 包 : package dao; /** * Dao父类 */ import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class BaseDao { // 连接数据库 public Connection getConnection() throws SQLException { try { Class.forName( } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); }// 加载驱动 Connection connection = DriverManager.getConnection( return connection; } //增删改支持方法 public int update(String sql,Object[] params) throws SQLException{ Connection connection = getConnection(); PreparedStatement statement = connection.prepareStatement(sql); for(int i = 0;i<> statement.setObject(i+1, params[i]); } int i = statement.executeUpdate(); connection.close(); return i; } //查询单个支持方法 public Object query(String sql,Object[] params,RowMapper rowMapper) throws SQLException{ Connection connection = getConnection(); PreparedStatement statement = connection.prepareStatement(sql); for(int i = 0;i<> statement.setObject(i+1, params[i]); } ResultSet resultSet = statement.executeQuery(); Object object = null; if(resultSet.next()){ object = rowMapper.mapRow(resultSet); } connection.close(); return object; } } package dao; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import entity.Bill; import entity.Provider; import entity.User; /** * 账单 Dao * * @author li * */ public class BillDao extends BaseDao{ // 映射器 private RowMapper rowMapper = new RowMapper() { @Override public Object mapRow(ResultSet resultSet) throws SQLException { Bill bill = new Bill(resultSet.getInt(1), resultSet.getDouble(2), resultSet.getString(3), resultSet.getInt(4), resultSet.getString(5), resultSet.getString(6), resultSet.getDate(7),resultSet.getString(8),resultSet.getString(9)); return bill; } }; //查供应商名称 public List Connection connection = getConnection(); String sql = PreparedStatement statement = connection.prepareStatement(sql); ResultSet resultSet = statement.executeQuery(); ArrayList list = new ArrayList while (resultSet.next()) { Provider provider = new Provider(resultSet.getInt(1), resultSet.getString(2), resultSet.getString(3), resultSet.getString(4), resultSet.getString(5), resultSet.getString(6), resultSet.getString(7)); list.add(provider); } connection.close(); return list; } // 查所有 public List Connection connection = getConnection(); String sql = PreparedStatement statement = connection.prepareStatement(sql); ResultSet resultSet = statement.executeQuery(); ArrayList list = new ArrayList while (resultSet.next()) { Bill bill = new Bill(resultSet.getInt(1), resultSet.getDouble(2), resultSet.getString(3), resultSet.getInt(4), resultSet.getString(5), resultSet.getString(6), resultSet.getDate(7), resultSet.getString(8),resultSet.getString(9)); list.add(bill); } connection.close(); return list; } //增 public int save(Bill bill) throws SQLException { String sql = Object[] params = { bill.getPrice(),bill.getUnit(),bill.getAccount(),bill.getGoodsname(), bill.getGoodsdescription(),new java.sql.Timestamp(bill.getBilldate().getTime()), bill.getProvidername(),bill.getIspayed()}; return update(sql, params); } // 删 public int delete(String id) throws SQLException { String sql = Object[] params = {id}; return update(sql, params); } // 改 public int modify(String id,Bill bill) throws SQLException{ String sql = price=?,unit=?,account=?,goodsname=?,goodsdescription=?,providername=?,ispayed=? where id=? Object[] params = {bill.getPrice(),bill.getUnit(),bill.getAccount(),bill.getGoodsname(),bill.getGoodsdescription(),bill.g etProvidername(),bill.getIspayed(),id}; return update(sql, params); } // 查单个 public Object load(String id) throws SQLException{ String sql = Object[] params={id}; return query(sql,params,rowMapper); } // 模糊查询 public List String sql = statement.setObject(1, statement.setObject(2, ResultSet resultSet = statement.executeQuery(); ArrayList while (resultSet.next()) { Bill bill = new Bill(resultSet.getInt(1), resultSet.getDouble(2), resultSet.getString(3), resultSet.getInt(4), resultSet.getString(5), resultSet.getString(6), resultSet.getDate(7), resultSet.getString(8),resultSet.getString(9)); list.add(bill); } connection.close(); return list; } } package dao; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import entity.Provider; import entity.User; /** * 供应商 DAO * * @author li * */ public class ProviderDao extends BaseDao { // 映射器 private RowMapper rowMapper = new RowMapper() { @Override public Object mapRow(ResultSet resultSet) throws SQLException { Provider provider = new Provider(resultSet.getInt(1), resultSet.getString(2), resultSet.getString(3), resultSet.getString(4), resultSet.getString(5), resultSet.getString(6), resultSet.getString(7)); return provider; } }; // 增 public int save(Provider provider) throws SQLException { String sql = + Object[] params = { provider.getProvidername(), provider.getProviderdescription(), provider.getLinkman(), provider.getProviderphone(), provider.getProvideradd(), provider.getProviderfax() }; return update(sql, params); } // 删 public int delete(String id) throws SQLException { String sql = Object[] params = { id }; return update(sql, params); } // 改 public int modify(String id, Provider provider) throws SQLException { String sql = Object[] params = { provider.getProvidername(), provider.getProviderdescription(), provider.getLinkman(), provider.getProviderphone(), provider.getProvideradd(), provider.getProviderfax(), id }; return update(sql, params); } // 查单个 public Object load(String id) throws SQLException { String sql = Object[] params = { id }; return query(sql, params, rowMapper); } // 模糊查询 public List Connection connection = getConnection(); String sql = PreparedStatement statement = connection.prepareStatement(sql); statement.setObject(1, statement.setObject(2, ResultSet resultSet = statement.executeQuery(); ArrayList while (resultSet.next()) { Provider provider = new Provider(resultSet.getInt(1), resultSet.getString(2), resultSet.getString(3), resultSet.getString(4), resultSet.getString(5), resultSet.getString(6), resultSet.getString(7)); list.add(provider); } return list; } // 查所有 public List Connection connection = getConnection(); String sql = PreparedStatement statement = connection.prepareStatement(sql); ResultSet resultSet = statement.executeQuery(); ArrayList while (resultSet.next()) { Provider provider = new Provider(resultSet.getInt(1), resultSet.getString(2), resultSet.getString(3), resultSet.getString(4), resultSet.getString(5), resultSet.getString(6), resultSet.getString(7)); list.add(provider); } connection.close(); return list; } } import java.sql.ResultSet; import java.sql.SQLException; /** * 映射器 * @author li * */ public interface RowMapper { //把查询结果映射到实体对象里 public abstract Object mapRow(ResultSet resultSet) throws SQLException; } import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.List; import entity.User; /** * 用户 Dao * * @author li * */ public class UserDao extends BaseDao { // 映射器 private RowMapper rowMapper = new RowMapper() { @Override public Object mapRow(ResultSet resultSet) throws SQLException { User user = new User(resultSet.getInt(1), resultSet.getString(2), resultSet.getString(3), resultSet.getString(4), resultSet.getString(5), resultSet.getString(6), resultSet.getString(7), resultSet.getString(8)); return user; } }; // 登录验证 public User checkLogin(String name, String pwd) throws SQLException { Connection connection = getConnection(); String sql = User user=null; if(resultSet.next()){ user = new User(resultSet.getInt(1), resultSet.getString(2), resultSet.getString(3), resultSet.getString(4), resultSet.getString(5), resultSet.getString(6), resultSet.getString(7), resultSet.getString(8)); } connection.close(); return user; } // 增 public int save(User user) throws SQLException { String sql = + Object[] params = { user.getUsername(), user.getPassword(), user.getGender(), user.getAge(), user.getPhone(), user.getAddress(), user.getRole() }; return update(sql, params); } // 删 public int delete(String id) throws SQLException { String sql = Object[] params = {id}; return update(sql, params); } // 改 public int modify(String id,User user) throws SQLException{ String sql = Object[] params = {user.getUsername(),user.getGender(),user.getAge(),user.getPhone(),user.getAddress(),id}; return update(sql, params); } //修改密码 public int modifyPwd(String id,String password,User user) throws Exception{ int id1 = Integer.parseInt(id); Connection connection = getConnection(); String sql1 = PreparedStatement statement = connection.prepareStatement(sql1); ResultSet resultSet = statement.executeQuery(); int i = 1; String rs = null; if(resultSet.next()){ rs = resultSet.getString(3); } if(password.equals(rs)){ String sql = return update(sql,params); }else{ return i; } } // 查单个 public Object load(String id) throws SQLException{ String sql = Object[] params={id}; return query(sql,params,rowMapper); } // 模糊查询 public List String sql = ResultSet resultSet = statement.executeQuery(); ArrayList while (resultSet.next()) { User user = new User(resultSet.getInt(1), resultSet.getString(2), resultSet.getString(3), resultSet.getString(4), resultSet.getString(5), resultSet.getString(6), resultSet.getString(7), resultSet.getString(8)); list.add(user); } connection.close(); return list; } // 查所有 public List Connection connection = getConnection(); String sql = PreparedStatement statement = connection.prepareStatement(sql); ResultSet resultSet = statement.executeQuery(); ArrayList list = new ArrayList while (resultSet.next()) { User user = new User(resultSet.getInt(1), resultSet.getString(2), resultSet.getString(3), resultSet.getString(4), resultSet.getString(5), resultSet.getString(6), resultSet.getString(7), resultSet.getString(8)); list.add(user); } connection.close(); return list; } } entity; import /** * 账单实体类 * * @author * */ publicclass Bill { privateint id ; // 账单编号 privatedouble price ; // 交易金额 private unit ; // 交易单位 privateint account ; // 数量 private goodsname ; // 商品名称 private // 商品描述 private billdate ; // 账单日期 private providername ; // 供应商名称 private ispayed ; // 是否付款 publicint getId() { return id ; } publicvoid setId(int id) { this . id = id; } publicdouble getPrice() { return price ; } publicvoid setPrice(double price) { this . price = price; } public return ; } publicvoid = unit; } publicint getAccount() { return account ; } publicvoid setAccount(int account) { this . account = account; } public return ; } publicvoid = goodsname; } public return ; } publicvoid goodsdescription) { = goodsdescription; } public return ; } publicvoid = billdate; } public return ; } publicvoid = providername; } public return ; } publicvoid = ispayed; } public Bill(int id, double int account, billdate, this . id = id; this . price = price; = unit; this . account = account; = goodsname; = goodsdescription; = billdate; = providername; = ispayed; } public Bill() { } } entity; /** * 供应商实体类 * * @author * */ publicclass Provider { privateint providerId ; // 供应商编号 private providername ; // 供应商名称 private providerdescription ; // 供应商描述 private linkman ; // 联系人 private providerphone ; // 供应商电话 private provideradd ; // 供应商地址 private providerfax ; // 供应商电话 publicint getProviderId() { return providerId ; } publicvoid setProviderId(int providerId) { this . providerId = providerId; public return ; } publicvoid = providername; } public return ; } publicvoid providerdescription) { = providerdescription; } public return ; } publicvoid = linkman; } public return ; publicvoid = providerphone; } public return ; } publicvoid = provideradd; } public return ; } publicvoid = providerfax; } public Provider(int this . providerId = providerId; = providername; = providerdescription; = linkman; = providerphone; = provideradd; = providerfax; } public Provider() { } } entity; /** * 用户实体类 * @author * */ publicclass User { privateint id ; //编号 private username ; //用户名 private password ; //密码 private gender ; //性别 private age ; //年龄 private address ; //地址 private phone ; //电话 private role ; //权限 publicint getId() { return id ; } publicvoid setId(int id) { this . id = id; } public return ; } publicvoid = username; } public return ; } publicvoid = password; } public return ; } publicvoid = gender; } public return ; } publicvoid = age; } public return ; } publicvoid = phone; } public return ; } publicvoid = address; } public return ; } publicvoid = role; } public User(int password, this . id = id; = username; = password; = gender; = age; = phone; = address; = role; } public User() { } } package filter; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; /** * Servlet Filter implementation class TsetFilter */ public class TsetFilter implements Filter { /** * Default constructor. */ public TsetFilter() { // TODO Auto-generated constructor stub } /** * @see Filter#destroy() */ public void destroy() { // TODO Auto-generated method stub } /** * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain) */ public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { // TODO Auto-generated method stub // place your code here request.setCharacterEncoding( // pass the request along the filter chain chain.doFilter(request, response); } /** * @see Filter#init(FilterConfig) */ public void init(FilterConfig fConfig) throws ServletException { // TODO Auto-generated method stub } } package servlet; import java.io.IOException; import java.sql.SQLException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.catalina.Session; import dao.UserDao; import entity.User; /** * Servlet implementation class CheckLoginServlet */ public class CheckLoginServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public CheckLoginServlet() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub } @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub String username = request.getParameter( String password = request.getParameter( UserDao userDao = new UserDao(); User user = null; try { user = userDao.checkLogin(username,password); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } if(user!=null){ if(user.getUsername().equals(username) && user.getPassword().equals(password)){ request.getSession().setAttribute( request.getSession().setAttribute( response.sendRedirect( }else{ request.setAttribute( request.getRequestDispatcher( }else{ request.setAttribute( request.getRequestDispatcher( } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub } } package servlet; import java.io.IOException; import java.sql.SQLException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import dao.BillDao; /** * Servlet implementation class DeleteBillServlet */ public class DeleteBillServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public DeleteBillServlet() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub } @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub String id = request.getParameter( BillDao billDao = new BillDao(); try { int i = billDao.delete(id); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } response.sendRedirect( } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub } } package servlet; import java.io.IOException; import java.sql.SQLException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import dao.BillDao; import dao.ProviderDao; /** * Servlet implementation class DeleteProviderServlet */ public class DeleteProviderServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public DeleteProviderServlet() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub } @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub String id = request.getParameter( ProviderDao providerDao = new ProviderDao(); try { int i = providerDao.delete(id); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } response.sendRedirect( } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub } } package servlet; import java.io.IOException; import java.sql.SQLException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import dao.UserDao; import entity.User; /** * Servlet implementation class DeleteUserServlet */ public class DeleteUserServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public DeleteUserServlet() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub } @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub String id = request.getParameter( UserDao userDao = new UserDao(); try { int i = userDao.delete(id); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } response.sendRedirect( } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub } } package servlet; import java.io.IOException; import java.sql.SQLException; import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import dao.BillDao; import dao.UserDao; import entity.Bill; import entity.User; /** * Servlet implementation class LikeQueryBillServlet */ public class LikeQueryBillServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public LikeQueryBillServlet() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub } @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub request.setCharacterEncoding( String goodsname = request.getParameter( String ispayed = request.getParameter( BillDao billDao = new BillDao(); try { List request.setAttribute( request.getRequestDispatcher( // TODO Auto-generated catch block e.printStackTrace(); } } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub } } package servlet; import java.io.IOException; import java.sql.SQLException; import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import dao.BillDao; import dao.ProviderDao; import entity.Bill; import entity.Provider; /** * Servlet implementation class LikeQueryProviderServlet */ public class LikeQueryProviderServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public LikeQueryProviderServlet() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub } @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub request.setCharacterEncoding( String providername = request.getParameter( String providerdesc = request.getParameter( ProviderDao providerDao = new ProviderDao(); try { List request.setAttribute( request.getRequestDispatcher( // TODO Auto-generated catch block e.printStackTrace(); } } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub } } package servlet; import java.io.IOException; import java.sql.SQLException; import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import dao.UserDao; import entity.User; /** * Servlet implementation class LikeQueryUserServlet */ public class LikeQueryUserServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public LikeQueryUserServlet() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub } @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub String username = request.getParameter( UserDao userDao = new UserDao(); try { List request.setAttribute( request.getRequestDispatcher( } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub } } package servlet; import java.io.IOException; import java.sql.SQLException; import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import dao.BillDao; import dao.UserDao; import entity.Bill; import entity.User; /** * Servlet implementation class LoadAllBillServlet */ public class LoadAllBillServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public LoadAllBillServlet() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub } @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub BillDao billDao = new BillDao(); try { List request.setAttribute( request.getRequestDispatcher( // TODO Auto-generated catch block e.printStackTrace(); } } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub } } package servlet; import java.io.IOException; import java.sql.SQLException; import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import dao.ProviderDao; import dao.UserDao; import entity.Provider; import entity.User; /** * Servlet implementation class LoadAllProviderServlet */ public class LoadAllProviderServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public LoadAllProviderServlet() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub } @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub ProviderDao providerDao = new ProviderDao(); try { List request.setAttribute( request.getRequestDispatcher( // TODO Auto-generated catch block e.printStackTrace(); } } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub } } 《Oracle 数据库管理》 期末考核设计方案书 题 目 超市账单管理系统的设计与实现 学 院 专 业 学生姓名 Oracle 用户名 密码学 号 xxxx 年级 xxxx 指导教师 职称 2014 年 6 月 27 日 超市帐单管理系统的设计与实现 摘 要:随着科学技术的不断发展,计算机越来越普及,随之各种软件也相应而出。许许多多的企业也用上了相应的软件,来加快自身的发展。由于超市行业的不断壮大,也需要一套软件来相应的软件来管理。在这种情况下超市账单管理系统也应运而生。超市账单管理系统主要是对超市账单、供应商、用户的简单管理。本系统主要用java 语言进行开发,Oracle 数据库和myeclipse 开发工具;主要用的核心技术是Servlet, 用来处理用户的请求和页面之间的跳转,JDBC (Java Data Base Connectivity)连接数据库实现处理与数据库的交互。页面使用的是JSP 。本系统能更快,更方便的管理好整个工作流程中的各个模块,使工作效率达到最优化。 关键字: java ;servlet ;Oracle ;jsp ; 专 业:计算机科学与技术 学 号: 学 生: 指导老师: 目录 1绪 论 ............................................................................................................................ 1 1.1研究背景 ............................................................................................................ 1 1.2 项目概述............................................................................................................ 2 2 需求分析 ...................................................................................................................... 3 2.1业务需求 ............................................................................................................ 3 2.2 项目功能需求 ..................................................................................................... 3 2.3 程序流程图 ........................................................................................................ 5 2.4 Oracle介绍 ....................................................................................................... 6 2.5 MVC设计模式 ..................................................................................................... 6 3 概要设计 ...................................................................................................................... 8 3.1 系统分析 ............................................................................................................ 8 3.2 项目包结构设计 ................................................................................................. 9 4 详细设计 .................................................................................................................... 10 4.1 界面设计.......................................................................................................... 10 4.2 数据库设计 ...................................................................................................... 13 4.2.1 数据库表的设计..................................................................................... 13 4.2.2 数据库连接............................................................................................ 18 5 系统测试 .................................................................................................................... 21 小 结 . ............................................................................................................................ 22 1绪 论 1.1研究背景 超级市场是以顾客自选方式经营的大型综合性零售商场,又称自选商场。是许多国家特别是经济发达国家的主要商品零售组织形式。 超级市场于20世纪30年代初最先出现在美国东部地区 。我国超市市场形成于20世纪90年代初期,现在已经成为我国零售业的一种重要形态,为国民经济的发展发挥了重要的作用。随着超市行业的高速发展,最初的售货员站柜台的销售方式已不能满足现有的销售业的发展,因此迫切的需要引入新的管理技术。 随着科学技术的高速发展,信息技术已经深深的影响着我国各行各业的发展。步入数字化时代,有巨大的数据信息等待着加工处理和传输,超市系统本就需要有一个强大的数据库支持,这就需要对数据库进一步的开发和利用,而对超市的销售管理,信息的存储和处理也显的尤其重要。要适应如今激烈的市场竞争,就需要有高效的处理方式和管理方法,因此加快超市的信息化进程是必不可少的。 超市虽然具有各种优点,但当下,它仍存在零售企业所共有的落后的一面,例如:不能有效的管理每种商品、收款结算速度慢,容易出现营业差错,不易进行商品调价,盘库效率低,而且商品的进、销、存不能保证同步更新,缺乏实时分析功能,管理人员对及时传递资料的要求始终得不到满足。 随着超市形态的高速发展,其经营管理也变的越为复杂,数据库的庞大支撑导致中间流通的数据量大增,中间的商业运转环节也越来越多,传统的管理模式已不能满足,而依靠现信息技术的超市管理系统管理超市,可以节省大量的人力物力,更重要的是能更快更稳的推动超市销售发展,协助管理者做出与时俱进适应市场变化的正确决策,加快超市经营管理效率。 超市管理系统是超市对商品的信息化管理系统,本系统可以提高管理水平和工作效率,可以最大限度的减少人工操作带来的错误,使用此系统主要为了实现商品管理的稳定性、可维护性等,从而达到提高商品管理效率并指导经营方向的 目的。 1.2 项目概述 本系统的主要功能就是完成对供应商往来账添加的功能,每一批到货情况,是否付款等情况在这个管理模块中进行记录,并且标有记账时间,似的数据有依可循,供随时查询。此外可以根据商品的名称查出是否记录过,是否已经付款的功能。实现供应商信息的添加查询功能。 本系统本身是一个较为简单的项目,所以包含的模块不是太多。经过分析得出主要涉及模块包括: 管理员模块:可以对账单中的数据进行增删改查,对供应商的数据进行增删改查。能够对用户的数据进行增删改查。 用户模块:对账单中的数据进行增删改查,能对用户本身的数据进行修改。 2 需求分析 2.1业务需求 超市账单管理主要用于对超市的交一张单进行管理,如账单录入,账单修改,账单删除,以及和超市相关的供应商、用户的管理。所谓账单,就是超市与供应商进行交易的凭据。超市采购部的志愿、超市的部门经理是该系统的目标用户。 主要涉及模块包括: 管理员模块:可以对账单中的数据进行增删改查,对供应商的数据进行增删改查。能够对用户的数据进行增删改查。 用户模块:对账单中的数据进行增删改查,能对用户本身的数据进行修改。 2.2 项目功能需求 2.3 程序流程图 2.4 Oracle介绍 验室咨询公司(SDL ,Software Development Laboratories)。 ORACLE 数据库系统是美国ORACLE 公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一。比如SilverStream 就是基于数据库的一种中间件。ORACLE 数据库是目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库,它是一个完备关系的产品;作为分布式数据库它实现了分布式处理功能。但它的所有知识,只要在一种机型上学习了ORACLE 知识,便能在各种类型的机器上使用它。 Oracle 数据库最新版本为Oracle Database 12c。Oracle 数据库12c 引入了一个新的多承租方架构,使用该架构可轻松部署和管理数据库云。此外,一些创新特性可最大限度地提高资源使用率和灵活性,如Oracle Multitenant可快速整合多个数据库,而Automatic Data Optimization和Heat Map能以更高的密度压缩数据和对数据分层。这些独一无二的技术进步再加上在可用性、安全性和大数据支持方面的主要增强,使得Oracle 数据库12c 成为私有云和公有云部署的理想平台。 2.5 MVC设计模式 模块、视图和控制器(MVC)模式是80年代Smalltalk-80出现的一种软件设计模式,现在已经被广泛使用。MVC 模式是一个描述重现问题及其解决方案的设计范式,其中控制器位于视图和模块之间,对视图如何与模块交互进行管理,这使得视图能够完全独立于控制器和模型,可以轻松实现客户端的设计。将控制器和模型分开就可以在互不影响的情况下修改任何一方。这6 样有助于减少各个部分之间的关联性。随着电子邮件系统的应用,各领域可以随时方便地进行信息的交流而无须掌握复杂的技术,从而改进了传统的信息交流的模式。 MVC 设计模式把一个软件组件区分为三个不同的部分:model 、view 、controller 。 模型(MODEL ) 模型是应用程序的主体部分。模型表示业务数据,或者业务逻辑,代表组件状态和低级行为的部分,它管理着自己的状态并且处理所有对状态的操作,Model 自己本身并不知道使用自己的view 和controller 是谁,系统维护着它和view 之间的关系,当Model 发生了改变系统还负责通知相应的view 。 视图(VIEW ) 视图是应用程序中用户界面相关的部分,是用户能看到并与之交互的界面。它代表了管理Model 所含有的数据的一个视觉上的呈现,一个Model 可以有一个以上的view 。 控制器(CONTROLLER ) 控制器的工作就是根据用户的输入,控制用户界面数据显示更新Model 对象状态,并管理着Model 和用户之间的交互的控制,它提供了一些方法去处理当Model 的状态发生了变化时的情况。 3 概要设计 本章将在需求分析的基础上较详细的给出每个模块的名称,实现一些细节,加深读者对项目的理解,同时同时也理清思路,保证后面的开发编码工作可以顺利的进行。 3.1 系统分析 在本系统中,分为管理员模块,用户管理模块。有两个角色:管理员和普通用户。 管理员:拥有所有模块的操作权限 普通用户:可以对账单进行操作,本人的资料进行操作。 系统功能模块图: 3.2 项目包结构设计 本设计包括三个包。 com.db 包中的DBOperation 是连接数据库的类。BillOperaion 主要是实现账单的增删查改操作。SupplierOperation 主要是实现供应商的增删查改。USOperation 主要是实现用户的增删查改。 com.entity 包中的Bill 类是用来记录数据库中的账单信息,Supplier 类是用来记录数据库中的供应商信息,US 是用来记录数据库中的用户信息。 Com.Servlet 包中的类LoginServlet 根据URI 决定分发给doGet 还是doPost 处理请求,然后调用相应的业务逻辑方法,调用相应的页面去执行响应。利用JDBC (Java Data Base Connectivity )技术处理与数据库连接,利用其Servlet API所定义的接口和类来封装与数据库交互的相关操作,使对数据库的操作变得相当容易,减少开发时间,而且能对系统进行灵活的设计和实现,使系统的各模块容易维护和重用。 4 详细设计 4.1 界面设计 登录界面 public void doGet(HttpServletRequest request, HttpServletResponse } /** doPost 方法 */ public void doPost(HttpServletRequest request, HttpServletResponse throws ServletException, IOException { throws ServletException, IOException { response) response) response.setContentType("text/html;charset=utf-8"); PrintWriter out = response.getWriter(); String user="" ; user=request.getParameter("username" ); user=user==null ? null :new String(user.getBytes("ISO-8859-1" ), "gbk" ); String passWord="" ; passWord=request.getParameter("password" ); List for (int i = 0; i < users.size();="" i++)=""> if (user.equals(users.get(i).getUserName())&&passWord.equals(users.get(i).getPassWord())){ HttpSession session=request.getSession(true ); session.setAttribute("username" , user); session.setAttribute("password" ,passWord ); RequestDispatcher view =request.getRequestDispatcher("main.jsp" ); view.forward(request, response); } else { n++; } } break ; 主界面 账单管理界面 管理员登录用户管理界面 用户登录本人信息管理界面 管理员登录供应商管理界面 用户登录供应商管理界面 4.2 数据库设计 数据库是此类系统的核心,系统中所有的信息都存储在数据库中,在所有jsp 页面中通过JDBC 与数据库连接,操作数据库中的数据,从而实现所有需要的功能。数据库软件有很多。本系统中数据库采用Oracle 作为数据库工具。数据库是网站的核心,数据库设计的合理与否对网站的建设有着至关重要的影响。 4.2.1 数据库表的设计 本系统有三张表:BILL (账单信息表),SUPPLIER (供应商信息表),US (用户信息表,包括管理员用户和普通用户)。 物理数据图: 建表代码: create table BILL ( BILLID NUMBER not null, GOODSNAME V ARCHAR2(20) not null, GOODSNUM NUMBER not null, MONEY BINARY_DOUBLE not null, ISPA Y V ARCHAR2(4) not null, SUPPLIERNAME V ARCHAR2(20) not null, GOODSDESCRIBLE VARCHAR2(40) not null, BILLTIME DA TE not null ) tablespace USERS pctfree 10 initrans 1 maxtrans 255 storage ( initial 64K minextents 1 maxextents unlimited ); alter table BILL add constraint BILLID primary key (BILLID) using index tablespace USERS pctfree 10 initrans 2 maxtrans 255 storage ( initial 64K minextents 1 maxextents unlimited ); commit; create table US ( USERID NUMBER not null, USERNAME VARCHAR2(20), SEX V ARCHAR2(10), AGE NUMBER, TELPHONE VARCHAR2(20), ADDRESS V ARCHAR2(20), POWER V ARCHAR2(20), PASSWORD VARCHAR2(20) ) tablespace USERS pctfree 10 initrans 1 maxtrans 255 storage ( initial 64K minextents 1 maxextents unlimited ); alter table US add constraint USERID primary key (USERID) using index tablespace USERS pctfree 10 initrans 2 maxtrans 255 storage ( initial 64K minextents 1 maxextents unlimited ); commit; create table SUPPLIER ( SUPPLIERID NUMBER not null, SUPPLIERNAME V ARCHAR2(20), SUPPLIERDESCRIBLE VARCHAR2(40), LINKMAN V ARCHAR2(20), TELPHONE V ARCHAR2(20), ADDRESS V ARCHAR2(40) ) tablespace USERS pctfree 10 initrans 1 maxtrans 255 storage ( initial 64K minextents 1 maxextents unlimited ); alter table SUPPLIER add constraint SUPPLIERID primary key (SUPPLIERID) using index tablespace USERS pctfree 10 initrans 2 maxtrans 255 storage ( initial 64K minextents 1 maxextents unlimited ); commit; 插入数据后得到表: BILL 表: SUPPLIER 表: US 表: 4.2.2 数据库连接 数据库的初始化 /** * 数据库的初始化 * @return */ private DBOperation getDB(){ } DBOperation dbo1=new DBOperation(); dbo1.setDriver("oracle.jdbc.driver.OracleDriver" ); dbo1.setUrl("jdbc:oracle:thin:@180.84.33.254:1522/orcl"); dbo1.setUser("B_LIYZ"); dbo1.setPassWord("123" ); return dbo1; 数据库的属性 /** * 定义类的属性 */ private String driver =null ; //连接数据库的驱动 private String url =null ; //连接数据库所需要的URL private String user =null ; //连接数据库时所需要的用户名 private String passWord =null ; //连接数据库时所需要的密码 连接数据库的工具 /** * 连接时所需要的工具 */ private Connection conn =null ; private PreparedStatement ps =null ; private ResultSet rs =null ; 连接数据库及关闭数据库 /** * 连接数据库 */ public void connectionDB(){ try { //注册驱动 Class. forName (driver ); //建立数据库的连接 conn =DriverManager.getConnection (url , user , passWord ); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { } } /** * 关闭数据库 */ private void closeDB(){ try { }if (rs !=null ){ rs .close(); } if (ps !=null ){ ps .close(); } if (conn !=null ){ conn .close(); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } 5 系统测试 软件测试是整个软件开发过程中一段非常重要的阶段,在测试过程中如能按照测试的基本过程来进行测试,这样在测试完一个软件后,软件的质量能有所保障。 软件测试不仅有测试目的、测试过程,在测试过程中还应按照一定的测试方法,针对不同的过程应用不同的方法。软件测试的内容是深不可测的,在测试的过程中应结合具体的实际情况采用不同的方法进行测试,以保证软件质量过关。 软件测试是一个重要的阶段,也是非常复杂的一个过程,测试过程及方法灵活多变,并不是固定不变的。一个好的测试人员不仅能发现问题、从发现的错误中分析错误出现的原因,更应能拟定软件测试计划、编制软件测试大纲、编写测试用例,从而提高的工作效力,降低了开发产品的成本,更好的保证软件的质量。 白盒测试也称结构测试或逻辑驱动测试,它是按照程序内部的结构测试程序。通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进行,检验程序中的每条通路都能按预定的要求正确的工作。这一方法是把测试对象看作一个打开的盒子测试人员依据程序内部逻辑结构相关信息,设计或选择测试用例,对程序所有的逻辑路径进行测试,通过在不同检查程序的状态,状态是否 与预期的状态一致。 小 结 在超市账单管理系统开发过程中,有很多东西值得我们思考并总结。 开发过程大体可分为以下几个步骤: 实现整个程序大体需要的几个模块和其中用到的JSP 和J2EE 语言基本操作符、语句等。画出总体设计方案流程图:用流程图的形式展现你的基本编程思想。 (3) 流程图具体化:即将流程图中的几大模块的具体实现思考清楚,可以用流程图的形式展现.并想好实现的关键代码。 (4) 编辑程序代码:这是一个至关重要复杂而且需要反复修改的环节,在此环节中你将发现总体设计和模块思想会存在很多问题,需不断改进.如何实现各函数功能,达到预期效果也将是一项繁复的工作。 (5)代码的调试:在MyEclipse 环境下输入代码并进行调试和正确运行。在调试过程中会遇到很多需要精化的地方,需要十足的耐心与细心,不断改进完善程序。 (6)最后修饰:程序可以正确运行之后,再不影响程序功能的情况下,运用各种辅助性符号,使界面更加美观漂亮,操作更人性化.增强程序的新意与可行性。 3 系统详细设计 3.1 数据表结构设计 根据本项目的实际需求以及应用规模,我们只需要建立一个数据库,在该数据库中建立三个数据表。 (1) 用户信息表consumer (2) 商品信息表product (3) 供应商信息表provider 对这3个数据表的字段名称、数据类型及属性具体说明如表3-1至表3-3所示: 表3-1用户信息表(consumer) 字段名(中文) 字段名(英文) 数据类型 长度 是否为空 用户编号 20 C_ID Varchar2 No 用户名称 20 USERNAME Varchar2 No 用户密码 20 PASSWORD Varchar2 No 用户年龄 20 C_AGE Number No 用户性别 20 C_SEX Varchar2 No 用户电话 20 C_PHONE Varchar2 No 用户地址 20 C_ADDRESS Varchar2 No 用户权限 20 C_AUTHORITY Number No 表3-2商品信息表(product) 字段名(中文) 字段名(英文) 数据类型 长度 是否为空 商品编号 20 PD_ID Varchar2 No 商品名称 20 PD_NAME Varchar2 No 商品数量 20 PD_NUMBER Number No 商品金额 20 AMOUNT Number No 商品描述 100 PD_DESCRIPTION Varchar2 No 是否付款 20 PAYMENT Varchar2 No 创建时间 CREATETIME DATE No 表3-3供应商信息表(provider) 字段名(中文) 字段名(英文) 数据类型 长度 是否为空 供应商编号 20 PV_ID Varchar2 No 供应商名称 20 PV_NAME Varchar2 No 联系人 20 LINKMAN Varchar2 No 供应商号码 20 PV_PHONE Varchar2 No 供应商描述 100 PV_DESCRIPTION Varchar2 No 供应商地址 50 PV_ADDRESS Varchar2 No 3.2主页面设计 本系统的所有界面 采用Internet的设计方式,借鉴于网页的设计方法,本系统的界面 设计成如图3-1所示: Part1 系统标题 Part2 Part3 导航 内容显示操作区 图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 账单详情 主要代码见附录:查看账单详情主代码。 在账单详情页面中,用户可以根据需求修改账单的信息,也可以删除此账单。修改信息会对所填表单进行非空验证,点击“提交”按钮时,会更新数据库并显示到页面。如图3-14所示: 图3-14 修改账单信息 主要代码见附录:修改账单主代码。 3.3.4供应商管理 点击左边导航栏中的“供应商管理”,会进入供应商管理界面。用户可以在此界面根据不同需求对数据进行增、删、改、查等相关操作。如图3-15所示: 图3-15 供应商管理界面 在这个界面,用户可以通过搜索框输入供应商名称,查找到符合条件的结果,如图3-16所示: 图3-16 查找供应商 主要代码见附录:查找供应商主代码。 用户也可以在供应商界面点击“添加数据”按钮来进行数据的添加功能。并且在添加的时候,会对特定项进行非空验证,并且会有相应的提示。添加成功后,会更新数据库列表并返回供应商首页。如图3-17所示: 图3-17 添加供应商 主要代码见附录:添加供应商主代码。 在供应商管理首页,点击供应商名称会跳转到供应商详情页面,可以查看供应商更加详细的信息。如图3-18所示: 图3-18 供应商详情 主要代码见附录:查看供应商详情主代码。 在供应商详情页面中,用户可以根据需求修改供应商的信息,也可以删除此供应商。修改信息会对所填表单进行非空判断,点击“提交”按钮时,会更新数据库并显示到页面。如图3-19所示: 图3-19 修改供应商信息 4 系统的特点与不足 4.1系统的特点 1 开发简单 本系统是基于java web开发的系统,使用MVC模式实现,主要用JavaBean、Jsp和Servlet技术充当MVC模式中的模型层、视图层和控制层,依靠Servlet技术接收Jsp传来的参数,根据不同情况调用不同的JavaBean处理用户请求,跳转到相应的Jsp页面将结果展现给用户。整个系统结构清晰,结构简单,便于开发。 2便于维护和升级 本系统使用JDBC技术连接数据库,可以连接不同数据库,可移植性好;同时,整个系统的代码按照功能进行了详细的分层,结构明确,有条有理,方便开发人员对系统功能的扩展、升级和维护。 3使用方便 本系统使用B/S架构实现,因此在使用时无需安装其他客户端软件,在浏览器上就可以完成登录和其他操作。同时,用户界面是采用Internet的设计方式,界面简单、整洁,导航清晰,用户很快就可以掌握使用方法。 4系统安全、稳定 本系统的软件建立在性能稳定的Windows操作平台上的,系统在开发以及调试的时候,每一个阶段都经过严格把关,每一个流程都进过严格的测试,确保系统的安全性和稳定性。 4.2系统的不足 1功能不太完善 由于时间仓促,并且没有什么经验,所以系统开发的时候考虑的不是很周全,系统实现的功能过于简单,只是简单的实现了用户、账单和商品的增、删、改、查。没有更复杂的操作。而且项目中就简单的创建了三个表,而且表与表之间没有什么关联,这在实际应用中 附录 系统登录主代码 public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //处理乱码 response.setContentType("text/html;charset=utf-8"); request.setCharacterEncoding("UTF-8"); PrintWriter out = response.getWriter(); //接受参数 String strUsername=request.getParameter("username"); String strPassword=request.getParameter("password"); //调用Service层得到用户,判断权限 ConsumerService consumerService=new ConsumerServiceImpl(); Consumer item=consumerService.getUserByUsername(strUsername); HttpSession session=request.getSession(); session.setAttribute("user", item); //调用service层进行登录验证 Boolean result=consumerService.login(strUsername, strPassword); if(result){//登录成功 response.sendRedirect("/project/page/index.jsp"); }else{ String reason="用户名或密码错误"; session.setAttribute("reason", reason); response.sendRedirect("/project/page/login.jsp"); } } 查找用户主代码 public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //处理乱码 response.setContentType("text/html;charset=utf-8"); request.setCharacterEncoding("UTF-8"); //接受参数(主要用于根据用户名查找列表,username是从查找页面传过来的) String strUsername=request.getParameter("userName"); //分页 PageBean pb=new PageBean(); String strCurrentPage=request.getParameter("currentPage"); if(strCurrentPage != null && !"".equals(strCurrentPage)){ pb.setCurrentPage(Integer.parseInt(strCurrentPage)); } String strPageSize=request.getParameter("pageSize"); if(strPageSize != null && !"".equals(strPageSize)){ pb.setPageSize(Integer.parseInt(strPageSize)); } //调用Service层,获得所有用户列表 ConsumerService consumerService=new ConsumerServiceImpl(); List consumerService.getAllUsersByPage(pb,strUsername); request.setAttribute("list", list); request.setAttribute("pb", pb); request.getRequestDispatcher("/page/userIndex.jsp").forward(request, response); } 添加用户主代码 public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //处理乱码 response.setContentType("text/html;charset=utf-8"); request.setCharacterEncoding("UTF-8"); //接受页面的参数 String strId=request.getParameter("userId"); String strName=request.getParameter("username"); String strPass=request.getParameter("password"); String strAge=request.getParameter("age"); String strSex=request.getParameter("sex"); String strPhone=request.getParameter("phone"); String strAddress=request.getParameter("address"); String strAuthority=request.getParameter("authority"); //封装到用户对象 Consumer user=new Consumer(); user.setC_id(Integer.parseInt(strId)); user.setUsername(strName); user.setPassword(strPass); user.setC_age(Integer.parseInt(strAge)); user.setC_sex(strSex); user.setC_phone(strPhone); user.setC_address(strAddress); user.setC_authority(Integer.parseInt(strAuthority)); //调用Service层进行添加 ConsumerService consumerService=new ConsumerServiceImpl(); int result=consumerService.addUser(user); PrintWriter out = response.getWriter(); if(result>0){//添加成功 out.println(""); out.close(); }else{ out.println(""); out.close(); } } 查看用户详情主代码 public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException { //处理乱码 response.setContentType("text/html;charset=utf-8"); request.setCharacterEncoding("UTF-8"); //接受参数 String strId=request.getParameter("id"); int id=Integer.parseInt(strId); //根据id获得对象 ConsumerService consumerService=new ConsumerServiceImpl(); Consumer user=consumerService.getUserById(id); request.setAttribute("user", user); request.getRequestDispatcher("/page/userDetail.jsp").forward(request, response); } 修改用户主代码 public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException { //处理乱码 response.setContentType("text/html;charset=utf-8"); request.setCharacterEncoding("UTF-8"); //接受参数 String strId=request.getParameter("id"); String strUsername=request.getParameter("username"); String strPassword=request.getParameter("password"); String strSex=request.getParameter("sex"); String strAge=request.getParameter("age"); String strPhone=request.getParameter("phone"); String strAddress=request.getParameter("address"); String strAuthority=request.getParameter("authority"); int id=Integer.parseInt(strId); int age=Integer.parseInt(strAge); int authority=Integer.parseInt(strAuthority); //根据id获得该对象,进行封装 ConsumerService consumerService=new ConsumerServiceImpl(); Consumer user=new Consumer(); user.setC_id(id); user.setUsername(strUsername); user.setPassword(strPassword); user.setC_sex(strSex); //user.setC_age(age); user.setC_phone(strPhone); user.setC_authority(authority); user.setC_address(strAddress); //调用方法,保存修改 int result=consumerService.updateUser(user); PrintWriter out = response.getWriter(); if(result>0){//成功 out.println(""); out.close(); }else{//失败 out.println(""); out.close(); } } 查找账单主代码 public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //处理乱码 response.setContentType("text/html;charset=utf-8"); request.setCharacterEncoding("UTF-8"); //接受参数(用于根据商品名称查询) String strName=request.getParameter("pd_Name"); //分页 PageBean pb=new PageBean(); String strCurrentPage=request.getParameter("currentPage"); if(strCurrentPage!=null && !"".equals(strCurrentPage)){ pb.setCurrentPage(Integer.parseInt(strCurrentPage)); } String strPageSize=request.getParameter("pageSize"); if(strPageSize != null && !"".equals(strPageSize)){ pb.setPageSize(Integer.parseInt(strPageSize)); } //调用方法,获取商品账单列表 ProductService pdService=new ProductServiceImpl(); List request.setAttribute("list", list); request.setAttribute("pb", pb); request.getRequestDispatcher("/page/billIndex.jsp").forward(request, response); } 添加账单主代码 public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //处理乱码 response.setContentType("text/html;charset=utf-8"); request.setCharacterEncoding("UTF-8"); //接受参数 String strId=request.getParameter("pd_Id"); String strName=request.getParameter("pd_name"); String strNumber=request.getParameter("number"); String strAmount=request.getParameter("amount"); String strDescription=request.getParameter("pd_Description"); String strPayment=request.getParameter("payment"); int id=Integer.parseInt(strId); int number=Integer.parseInt(strNumber); int amount=Integer.parseInt(strAmount); //封装 Product product=new Product(); product.setPd_id(id); product.setPd_name(strName); product.setPd_number(number); product.setAmount(amount); product.setPayment(strPayment); product.setPd_description(strDescription); //调用方法进行添加操作 ProductService pdService=new ProductServiceImpl(); int result=pdService.addPb(product); PrintWriter out = response.getWriter(); if(result>0){//添加成功 out.println(""); out.close(); }else{ out.println(""); out.close(); } } 查看账单详情主代码 public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //处理乱码 response.setContentType("text/html;charset=utf-8"); request.setCharacterEncoding("UTF-8"); //获取参数 String strId=request.getParameter("id"); int id=Integer.parseInt(strId); //根据id获得对象 ProductService pdService=new ProductServiceImpl(); Product product=pdService.getPbById(id); request.setAttribute("product", product); request.getRequestDispatcher("/page/billDetail.jsp").forward(request, response); } 修改账单主代码 public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //处理乱码 response.setContentType("text/html;charset=utf-8"); request.setCharacterEncoding("UTF-8"); //接受参数 String strId=request.getParameter("id"); String strName=request.getParameter("pd_name"); String strNumber=request.getParameter("number"); String strAmount=request.getParameter("amount"); String strDescription=request.getParameter("pdDescription"); String strPayment=request.getParameter("payment"); int id=Integer.parseInt(strId); int number=Integer.parseInt(strNumber); int amount=Integer.parseInt(strAmount); //封装 Product product=new Product(); product.setPd_id(id); product.setPd_name(strName); product.setPd_number(number); product.setAmount(amount); product.setPd_description(strDescription); product.setPayment(strPayment); //调用方法货的对象,对该对象进行修改 ProductService pdService=new ProductServiceImpl(); int result=pdService.updatePb(product); PrintWriter out = response.getWriter(); if(result>0){//成功 out.println(""); out.close(); }else{//失败 out.println(""); out.close(); } } 查找供应商主代码 public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //处理乱码 response.setContentType("text/html;charset=utf-8"); request.setCharacterEncoding("UTF-8"); //接受参数(主要用于根据用户名查找列表,username是从查找页面传过来的) String strUsername=request.getParameter("pv_name"); //分页 PageBean pb=new PageBean(); String strCurrentPage=request.getParameter("currentPage"); if(strCurrentPage != null && !"".equals(strCurrentPage)){ pb.setCurrentPage(Integer.parseInt(strCurrentPage String strPageSize=request.getParameter("pageSize"); if(strPageSize != null && !"".equals(strPageSize)){ pb.setPageSize(Integer.parseInt(strPageSize)); } //调用Service层,获得所有用户列表 ProviderService pvService=new ProviderServiceImpl(); List request.setAttribute("list", list); request.setAttribute("pb", pb); request.getRequestDispatcher("/page/providerIndex.jsp").forward(request, response); } 添加供应商主代码 public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //处理乱码 response.setContentType("text/html;charset=utf-8"); request.setCharacterEncoding("UTF-8"); //接受页面的参数 String strId=request.getParameter("pv_Id"); String strName=request.getParameter("pv_name"); String strPhone=request.getParameter("pv_phone"); String strAddress=request.getParameter("pv_address"); String strDescription=request.getParameter("pv_description"); String linkman=request.getParameter("linkman"); int id=Integer.parseInt(strId); //封装 Provider provider=new Provider(); provider.setPv_id(id); provider.setPv_name(strName); provider.setPv_phone(strPhone); provider.setPv_description(strDescription); provider.setPv_address(strAddress); provider.setLinkman(linkman); //调用Service层进行添加 ProviderService pvService=new ProviderServiceImpl(); int result=pvService.addPv(provider); PrintWriter out = response.getWriter(); if(result>0){//添加成功 out.println(""); out.close(); }else{ out.println(""); out.close(); } } 修改供应商主代码 public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //处理乱码 response.setContentType("text/html;charset=utf-8"); request.setCharacterEncoding("UTF-8"); //接受参数 String strId=request.getParameter("id"); int id=Integer.parseInt(strId); //根据id获得对象 ProviderService pvService=new ProviderServiceImpl(); Provider provider=pvService.getPvById(id); request.setAttribute("provider", provider); request.getRequestDispatcher("/page/providerDetail.jsp").forward(request, response); } 3 系统详细设计 3.1 数据表结构设计 (1) 用户信息表consumer (2) 商品信息表product (3) 供应商信息表provider 对这3个数据表的字段名称、数据类型及属性具体说明如表3-1至表3-3所示: 表3-1用户信息表(consumer ) 表3-2商品信息表(product) 表3-3供应商信息表(provider ) 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 账单详情 主要代码见附录:查看账单详情主代码。 在账单详情页面中,用户可以根据需求修改账单的信息,也可以删除此账单。修改信息会对所填表单进行非空验证,点击“提交”按钮时,会更新数据库并显示到页面。如图3-14所示: 图3-14 修改账单信息 主要代码见附录:修改账单主代码。 3.3.4供应商管理 点击左边导航栏中的“供应商管理”,会进入供应商管理界面。用户可以在此界面根据不同需求对数据进行增、删、改、查等相关操作。如图3-15所示: 图3-15 供应商管理界面 在这个界面,用户可以通过搜索框输入供应商名称,查找到符合条件的结果,如图3-16所示: 图3-16 查找供应商 主要代码见附录:查找供应商主代码。 用户也可以在供应商界面点击“添加数据”按钮来进行数据的添加功能。并且在添加的时候,会对特定项进行非空验证,并且会有相应的提示。添加成功后,会更新数据库列表并返回供应商首页。如图3-17所示: 图3-17 添加供应商 主要代码见附录:添加供应商主代码。 在供应商管理首页,点击供应商名称会跳转到供应商详情页面,可以查看供应商更加详细的信息。如图3-18所示: 图3-18 供应商详情 主要代码见附录:查看供应商详情主代码。 在供应商详情页面中,用户可以根据需求修改供应商的信息,也可以删除此供应商。修改信息会对所填表单进行非空判断,点击“提交”按钮时,会更新数据库并显示到页面。如图3-19所示: 图3-19 修改供应商信息 4 系统的特点与不足 4.1系统的特点 1 开发简单 本系统是基于java web开发的系统,使用MVC 模式实现,主要用JavaBean 、Jsp 和Servlet 技术充当MVC 模式中的模型层、视图层和控制层,依靠Servlet 技术接收Jsp 传来的参数,根据不同情况调用不同的JavaBean 处理用户请求,跳转到相应的Jsp 页面将结果展现给用户。整个系统结构清晰,结构简单,便于开发。 2便于维护和升级 本系统使用JDBC 技术连接数据库,可以连接不同数据库,可移植性好;同时,整个系统的代码按照功能进行了详细的分层,结构明确,有条有理,方便开发人员对系统功能的扩展、升级和维护。 3使用方便 本系统使用B/S架构实现,因此在使用时无需安装其他客户端软件,在浏览器上就可以完成登录和其他操作。同时,用户界面是采用Internet 的设计方式,界面简单、整洁,导航清晰,用户很快就可以掌握使用方法。 4系统安全、稳定 本系统的软件建立在性能稳定的Windows 操作平台上的,系统在开发以及调试的时候,每一个阶段都经过严格把关,每一个流程都进过严格的测试,确保系统的安全性和稳定性。 4.2系统的不足 1功能不太完善 由于时间仓促,并且没有什么经验,所以系统开发的时候考虑的不是很周全,系统实现的功能过于简单,只是简单的实现了用户、账单和商品的增、删、改、查。没有更复杂的操作。而且项目中就简单的创建了三个表,而且表与表之间没有什么关联,这在实际应用中 附录 系统登录主代码 public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } //处理乱码 response.setContentType("text/html;charset=utf-8"); request.setCharacterEncoding("UTF-8"); PrintWriter out = response.getWriter(); //接受参数 String strUsername=request.getParameter("username"); String strPassword=request.getParameter("password"); //调用Service 层得到用户,判断权限 ConsumerService consumerService=new ConsumerServiceImpl(); Consumer item=consumerService.getUserByUsername(strUsername); HttpSession session=request.getSession(); session.setAttribute("user", item); //调用service 层进行登录验证 Boolean result=consumerService.login(strUsername, strPassword); if(result){//登录成功 } response.sendRedirect("/project/page/index.jsp"); String reason="用户名或密码错误"; session.setAttribute("reason", reason); response.sendRedirect("/project/page/login.jsp"); }else{ 查找用户主代码 public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 添加用户主代码 public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //处理乱码 response.setContentType("text/html;charset=utf-8"); request.setCharacterEncoding("UTF-8"); //接受页面的参数 } //处理乱码 response.setContentType("text/html;charset=utf-8"); request.setCharacterEncoding("UTF-8"); //接受参数(主要用于根据用户名查找列表,username 是从查找页面传过来的) String strUsername=request.getParameter("userName"); //分页 PageBean pb=new PageBean(); String strCurrentPage=request.getParameter("currentPage"); if(strCurrentPage != null && !"".equals(strCurrentPage)){ } String strPageSize=request.getParameter("pageSize"); if(strPageSize != null && !"".equals(strPageSize)){ } //调用Service 层,获得所有用户列表 ConsumerService consumerService=new ConsumerServiceImpl(); List } String strId=request.getParameter("userId"); String strName=request.getParameter("username"); String strPass=request.getParameter("password"); String strAge=request.getParameter("age"); String strSex=request.getParameter("sex"); String strPhone=request.getParameter("phone"); String strAddress=request.getParameter("address"); String strAuthority=request.getParameter("authority"); //封装到用户对象 Consumer user=new Consumer(); user.setC_id(Integer.parseInt(strId)); user.setUsername(strName); user.setPassword(strPass); user.setC_age(Integer.parseInt(strAge)); user.setC_sex(strSex); user.setC_phone(strPhone); user.setC_address(strAddress); user.setC_authority(Integer.parseInt(strAuthority)); //调用Service 层进行添加 ConsumerService consumerService=new ConsumerServiceImpl(); int result=consumerService.addUser(user); PrintWriter out = response.getWriter(); if(result>0){//添加成功 } out.println(""); }else{ history.go(-1)</script>"); 查看用户详情主代码 public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException { 修改用户主代码 public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException { //处理乱码 response.setContentType("text/html;charset=utf-8"); request.setCharacterEncoding("UTF-8"); //接受参数 String strId=request.getParameter("id"); String strUsername=request.getParameter("username"); String strPassword=request.getParameter("password"); String strSex=request.getParameter("sex"); String strAge=request.getParameter("age"); String strPhone=request.getParameter("phone"); String strAddress=request.getParameter("address"); String strAuthority=request.getParameter("authority"); int id=Integer.parseInt(strId); int age=Integer.parseInt(strAge); int authority=Integer.parseInt(strAuthority); //根据id 获得该对象, 进行封装 ConsumerService consumerService=new ConsumerServiceImpl(); Consumer user=new Consumer(); user.setC_id(id); user.setUsername(strUsername); } //处理乱码 response.setContentType("text/html;charset=utf-8"); request.setCharacterEncoding("UTF-8"); //接受参数 String strId=request.getParameter("id"); int id=Integer.parseInt(strId); //根据id 获得对象 ConsumerService consumerService=new ConsumerServiceImpl(); Consumer user=consumerService.getUserById(id); request.setAttribute("user", user); request.getRequestDispatcher("/page/userDetail.jsp").forward(request, response); user.setPassword(strPassword); user.setC_sex(strSex); //user.setC_age(age); user.setC_phone(strPhone); user.setC_authority(authority); user.setC_address(strAddress); //调用方法,保存修改 int result=consumerService.updateUser(user); PrintWriter out = response.getWriter(); if(result>0){//成功 out.println(""); out.close(); }else{//失败 out.println(""); out.close(); } } 查找账单主代码 public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //处理乱码 response.setContentType("text/html;charset=utf-8"); request.setCharacterEncoding("UTF-8"); //接受参数(用于根据商品名称查询) String strName=request.getParameter("pd_Name"); //分页 PageBean pb=new PageBean(); String strCurrentPage=request.getParameter("currentPage"); if(strCurrentPage!=null && !"".equals(strCurrentPage)){ } String strPageSize=request.getParameter("pageSize"); if(strPageSize != null && !"".equals(strPageSize)){ pb.setPageSize(Integer.parseInt(strPageSize)); pb.setCurrentPage(Integer.parseInt(strCurrentPage)); } } //调用方法,获取商品账单列表 ProductService pdService=new ProductServiceImpl(); List 添加账单主代码 public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //处理乱码 response.setContentType("text/html;charset=utf-8"); request.setCharacterEncoding("UTF-8"); //接受参数 String strId=request.getParameter("pd_Id"); String strName=request.getParameter("pd_name"); String strNumber=request.getParameter("number"); String strAmount=request.getParameter("amount"); String strDescription=request.getParameter("pd_Description"); String strPayment=request.getParameter("payment"); int id=Integer.parseInt(strId); int number=Integer.parseInt(strNumber); int amount=Integer.parseInt(strAmount); //封装 Product product=new Product(); product.setPd_id(id); product.setPd_name(strName); product.setPd_number(number); product.setAmount(amount); product.setPayment(strPayment); product.setPd_description(strDescription); //调用方法进行添加操作 ProductService pdService=new ProductServiceImpl(); int result=pdService.addPb(product); PrintWriter out = response.getWriter(); if(result>0){//添加成功 out.println(""); 查看账单详情主代码 public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 修改账单主代码 public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //处理乱码 } //处理乱码 response.setContentType("text/html;charset=utf-8"); request.setCharacterEncoding("UTF-8"); //获取参数 String strId=request.getParameter("id"); int id=Integer.parseInt(strId); //根据id 获得对象 ProductService pdService=new ProductServiceImpl(); Product product=pdService.getPbById(id); request.setAttribute("product", product); request.getRequestDispatcher("/page/billDetail.jsp").forward(request, response); } } out.close(); }else{ out.println(""); response.setContentType("text/html;charset=utf-8"); request.setCharacterEncoding("UTF-8"); //接受参数 String strId=request.getParameter("id"); String strName=request.getParameter("pd_name"); String strNumber=request.getParameter("number"); String strAmount=request.getParameter("amount"); String strDescription=request.getParameter("pdDescription"); String strPayment=request.getParameter("payment"); int id=Integer.parseInt(strId); int number=Integer.parseInt(strNumber); int amount=Integer.parseInt(strAmount); //封装 Product product=new Product(); product.setPd_id(id); product.setPd_name(strName); product.setPd_number(number); product.setAmount(amount); product.setPd_description(strDescription); product.setPayment(strPayment); //调用方法货的对象,对该对象进行修改 ProductService pdService=new ProductServiceImpl(); int result=pdService.updatePb(product); PrintWriter out = response.getWriter(); if(result>0){//成功 out.println(""); } } out.close(); }else{//失败 out.println(""); 查找供应商主代码 public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 添加供应商主代码 public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //处理乱码 response.setContentType("text/html;charset=utf-8"); request.setCharacterEncoding("UTF-8"); //接受页面的参数 String strId=request.getParameter("pv_Id"); } //处理乱码 response.setContentType("text/html;charset=utf-8"); request.setCharacterEncoding("UTF-8"); //接受参数(主要用于根据用户名查找列表,username 是从查找页面传过来的) String strUsername=request.getParameter("pv_name"); //分页 PageBean pb=new PageBean(); String strCurrentPage=request.getParameter("currentPage"); if(strCurrentPage != null && !"".equals(strCurrentPage)){ pb.setCurrentPage(Integer.parseInt(strCurrentPage String strPageSize=request.getParameter("pageSize"); if(strPageSize != null && !"".equals(strPageSize)){ } //调用Service 层,获得所有用户列表 ProviderService pvService=new ProviderServiceImpl(); List String strName=request.getParameter("pv_name"); String strPhone=request.getParameter("pv_phone"); String strAddress=request.getParameter("pv_address"); String strDescription=request.getParameter("pv_description"); String linkman=request.getParameter("linkman"); int id=Integer.parseInt(strId); //封装 Provider provider=new Provider(); provider.setPv_id(id); provider.setPv_name(strName); provider.setPv_phone(strPhone); provider.setPv_description(strDescription); provider.setPv_address(strAddress); provider.setLinkman(linkman); //调用Service 层进行添加 ProviderService pvService=new ProviderServiceImpl(); int result=pvService.addPv(provider); PrintWriter out = response.getWriter(); if(result>0){//添加成功 out.println(""); 修改供应商主代码 public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //处理乱码 response.setContentType("text/html;charset=utf-8"); } } out.close(); }else{ out.println(""); } request.setCharacterEncoding("UTF-8"); //接受参数 String strId=request.getParameter("id"); int id=Integer.parseInt(strId); //根据id 获得对象 ProviderService pvService=new ProviderServiceImpl(); Provider provider=pvService.getPvById(id); request.setAttribute("provider", provider); request.getRequestDispatcher("/page/providerDetail.jsp").forward(request, response); 转载请注明出处范文大全网 » 基于javaweb的超市账单范文二:Java超市账单管理系统
范文三:超市账单管理系统设计
范文四:超市账单管理系统
范文五:超市账单管理系统