计算机毕设-基于jsp超市管理系统的计算机毕设源码+论文

摘  要

随着信息技术的发展及ERP系统的日益普及,计算机在超市管理中的作用越来越不容忽视。超市之间通过网络交易的趋势越来越明显。在这种环境中,采购作为超市生产经营的一个重要环节应加强管理,充分利用外部环境条件,逐步实现超市物资采购的网络化管理。

超市管理系统是针对超市内部而设计的,应用于超市的局域网,这样可以使得超市内部管理更有效的联系起来。系统的主要功能包括:供货商信息管理、商品信息管理、采购申请管理与物品采购管理。

本系统前台主要使用JSP作为开发语言,后台使用Sqlserver作为数据库管理系统,开发环境是MyEclipse,服务器采用tomcat,开发出的一个基于Web技术的B/S结构的铝窗设计管理系统。

关键词:采购,JSP,B/S结构

ABSTRACT

With the development of information technology and the prevalence of the ERP system, the computer in the business management in the role can not be ignored. Between enterprise transaction through the network is becoming more and more obvious. In this environment, procurement as an enterprise to manufacture management is an important link in management should be strengthened, make full use of external environment condition, the progressive realization of enterprise material purchasing network management.

Equipment procurement management system is for the enterprise internal and design, application in enterprise LAN, and this can make the enterprise internal management more effective connection. The main functions of this system includes: supplier information management, office supplies information management, the purchasing application management and goods purchase management

The front of the system using JSP as a development language, the use of Sqlserver as a database management system, the development environment is MyEclipse, server using tomcat, developed a Web technology based on B / S structure windows design management system.

Key words: purchasing, JSP, B / S structure


目  录

​​摘  要 ​​

​​ABSTRACT ​​

​​第一章 绪论 ​​

​​1.1课题背景 ​​

​​1.2目的和意义 ​​

​​1.3开发工具及技术 ​​

​​1.3.1开发工具 ​​

​​1.3.2 JSP ​​

​​1.3.3 JavaScript ​​

​​1.4软硬件需求 ​​

​​第二章 需求分析 ​​

​​2.1需求调研 ​​

​​2.2可行性分析 ​​

​​2.2.1技术的可行性 ​​

​​2.2.2经济的可行性 ​​

​​2.2.3操作可行性 ​​

​​2.2.4法律的可行性 ​​

​​2.3系统用户用例图 ​​

​​2.3.1管理员用例图 ​​

​​2.3.2操作员用例图 ​​

​​2.4功能模块需求分析 ​​

​​2.5设计的基本思想 ​​

​​2.6性能需求 ​​

​​2.6.1系统的安全性 ​​

​​2.6.2数据的完整性 ​​

​​2.7界面需求 ​​

​​第三章 系统分析与设计 ​​

​​3.1数据库的分析与设计 ​​

​​3.1.1数据库的概念结构设计 ​​

​​3.1.2数据库的逻辑结构设计 ​​

​​3.1.3数据库的连接原理 ​​

​​3.2中文乱码问题处理 ​​

​​第四章 系统功能实现 ​​

​​4.1系统登陆页面实现 ​​

​​4.2管理员模块 ​​

​​4.2.1供货商管理 ​​

​​4.2.2商品信息管理 ​​

​​4.2.3物品采购审批 ​​

​​4.2.4修改密码 ​​

​​4.2.5退出系统 ​​

​​4.3操作员模块 ​​

​​4.3.1采购审请管理 ​​

​​4.3.2物品采购管理 ​​

​​第五章 系统测试 ​​

​​5.1系统测试目的与意义 ​​

​​5.2测试过程 ​​

​​5.2.1主页面的登录模块测试 ​​

​​5.3其他错误 ​​

​​结  论 ​​

​​参考文献 ​​

​​致  谢 ​​

第一章 绪论

1.1课题背景

采购是公司生产产品及维护正常运作而必须消耗的物品及必须配置的设施之购入活动的总称, 是公司成本控制的重点。目前绝大多数超市行使采购管理的职能部门为供应部(科),也有超市将销售职能与采购职能并在一起,称为供销科。在实际操作中有些流程如询价/报价在很多超市中不是每次都进行的,缺点是:物料管理、采购管理、供应商管理由一个职能部门来完成,缺乏必要的监督和控制机制。超市管理系统,就是专门服务于超市物资采购的管理系统。。

1.2目的和意义

传统采购的重点放在如何和供应商进行商业交易的活动上,特点是比较重视交易过程的供应商的价格比较,通过供应商的多头竞争,从中选择价格最低的作为合作者。传统的采购模式的主要缺点表现在如下几个方面。 1. 传统采购过程是典型的非信息对称博奕过程,选择供应商在传统的采购活动中是一个首要的任务。在采购过程中,采购一方为了能够从多个竞争性的供应商中选择一个最佳的供应商,往往会保留私有信息, 而供应商也在和其他的供应商竞争中隐瞒自己的信息。这样,采购、供应双方都不进行有效的信息沟通,这就是非信息对称的博奕过程。2.验收检查是采购部门的一个重要的事后把关工作,质量控制难度大 采购一方很难参与供应商的生产组织过程和有关质量控制活动,相互的工作是不透明的。因此需要通过各种有关标准如国际标准、国家标准等,进行检查验收。缺乏合作的质量 控制会导致采购部门对采购物品质量控制的难度增加。 3. 供需关系是临时的或短期的合作关系,而且竞争多于合作由于缺乏合作与协调,采购过程中各种抱怨和扯皮的事情比较多,很多时间消耗在解决日常问题上,没有更多的时间用来做长期预测与计划工作,供应与需求之间这种缺乏合作的气氛增加了许多运作中的不确定性。 4.响应用户需求能力迟钝由于供应与采购双方在信息的沟通方面缺乏及时的信息反馈,在市场需求发生变化的情况下,采购一方也不能改变供应一方已有的订货合同, 因此采购一方在需求减少时库存增加,需求增加时,出现供不应求。重新订货需要增加谈判过程,因此供需之间对用户需求的响应 没有同步进行,缺乏应付需求变化的能力。

正确的采购能够使供应链系统能够实现无缝连接,并提高同一供应链上超市的同步化运作效率。

1.3开发工具及技术

1.3.1开发工具

此次设计主要采用MyEclipse加Tomcat后台服务器进行,设计过程中页面主要使用JSP技术完成,下面对MyEclipse、Tomcat和Sqlserver数据库进行简要介绍。

1.3.1.1 MyEclipse

MyEclipse,是一个十分优秀的用于开发Java, J2EE的Eclipse插件集合,MyEclipse的功能非常强大,支持也十分广泛,尤其是对各种开元产品的支持十分不错。MyEclipse超市级工作平台(MyEclipse Enterprise Workbench ,简称MyEclipse)是对Eclipse IDE的扩展,利用它我们可以在数据库和JavaEE的开发、发布,以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的JavaEE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML, Struts, JSP, CSS, Javascript, SQL, Hibernate。

1.3.1.2 Tomcat

Tomcat是一个小型的轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。可以这样认为,当在一台机器上配置好Apahce服务器,可利用它响应对HTML页面的访问请求。实际上Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,所以当运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。

1.3.1.3 Sqlserver 

Sqlserver 是以高级结构化查询语言(SQL)为基础的大型关系数据库,通俗地讲它是用方便逻辑管理的语言操纵大量有规律数据的集合。是目前最流行的客户/服务器(CLIENT/SERVER)体系结构的数据库之一。

SQLSERVER7.X以来引入了共享SQL和多线索服务器体系结构。这减少了SQLSERVER的资源占用,并增强了SQLSERVER的能力,使之在低档软硬件平台上用较少的资源就可以支持更多的用户,而在高档平台上可以支持成百上千个用户。提供了基于角色(ROLE)分工的安全保密管理。在数据库管理功能、完整性检查、安全性、一致性方面都有良好的表现.支持大量多媒体数据,如二进制图形、声音、动画以及多维数据结构等。提供了与第三代高级语言的接口软件PRO*系列,能在C,C++等主语言中嵌入SQL语句及过程化(PL/SQL)语句,对数据库中的数据进行操 纵。加上它有许多优秀的前台开发工具如 POWER BUILD、SQL*FORMS、VISIA BASIC 等,可以快速开发生成基于客户端PC 平台的应用程序,并具有良好的移植性。提供了新的分布式数据库能力。可通过网络较方便地读写远端数据库里的数据,并有对称复制的技术。

1.3.2 JSP

JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计和显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。

Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序段,然后将执行结果连同JSP文件中的HTML代码一起返回给客户。插入的Java程序段可以操作数据库、重新定向网页等,以实现建立动态网页所需要的功能。JSP与Servlet一样,是在服务器端执行的,通常返回给客户端就是一个HTML文本,因此客户端只要有浏览器能浏览。JSP页面由HTML代码和嵌入其中的Java代码所组成。服务器在页面被客户端请求以后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。Servlet是JSP的技术基础,而且大型的Web应用程序的开发需要Java Servlet和JSP配合才能完成。JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点。JSP技术的优点:

(1)一次编写,到处运行。除了系统之外,代码不用做任何更改。

(2)系统的多平台支持。基本上可以在所有平台上的任意环境中开发,在任意环境中进行系统部署,在任意环境中扩展。相比ASP/.net的局限性是显而易见的。

(3)强大的可伸缩性。从只有一个小的Jar文件就可以运行Servlet/JSP,到由多台服务器进行集群和负载均衡,到多台Application进行事务处理,消息处理,一台服务器到无数台服务器,Java显示了一个巨大的生命力。

(4)多样化和功能强大的开发工具支持。Java已经有了许多非常优秀的开发工具,而且许多可以免费得到,并且其中许多已经可以顺利的运行于多种平台之下

(5)支持服务器端组件。web应用需要强大的服务器端组件来支持,开发人员需要利用其他工具设计实现复杂功能的组件供web页面调用,以增强系统性能。JSP可以使用成熟的JAVA BEANS 组件来实现复杂商务功能。

内部对象说明:request 客户端请求,此请求会包含来自GET/POST请求的参数; response 网页传回客户端的响应;pageContext 网页的属性是在这里管理; session 与请求有关的会话; application servlet正在执行的内容;out 用来传送响应的输出流; config 代码片段配置对象;page JSP网页本身; exception 针对错误网页,未捕捉的例外

1.3.3 JavaScript

JavaScript是一种基于对象和事件驱动并具有相对安全性的客户端脚本语言。同时也是一种广泛用于客户端Web开发的脚本语言,常用来给HTML网页添加动态功能,比如响应用户的各种操作。JavaScript的一个重要功能就是面向对象的功能,通过基于对象的程序设计,可以用更直观、模块化和可重复使用的方式进行程序开发。在HTML基础上,使用Javascript可以开发交互式Web网页。Javascript的出现使得网页和用户之间实现了一种实时性的、动态的、交互性的关系,使网页包含更多活跃的元素和更加精彩的内容。在本系统中很多地方使用了javascript技术,比如说,检验用户输入数据的有效性,是否重复,是否为空等等。

1.4软硬件需求

硬件需求:

CPU:Pentium以上计算机

内存: 512M以上

软件需求:

操作系统版本:Windows XP /vista/Win7

开发工具:MyEclipse 6.0.1

后台服务器:Apache Tomcat 6.0

开发语言:Java

浏览器:IE6.0

第二章 需求分析

2.1需求调研

在项目的开始是需求调研,并且走访了一些中心型私营超市,经过一系列的调查与谈话中发现,现行的公司商品采购工作还是存在着很多不足之处,采购申请与供货商信息采用分散方式管理,不易保存,容易丢失,同样也不利于数据的查询和统计分析。根据实际情况及调查结果,发现实现设备采购管理的网络化、信息化是十分有必要的,因此设计了超市管理系统。

2.2可行性分析

开发任何一个系统,都会受到时间和资源上的限制。因此,在每一个项目开发之前,都要进行可行性分析,可以减少项目的开发风险,避免人力、物力和财力的浪费。下面就技术、经济、操作和法律四个方面来介绍。

2.2.1技术的可行性

本系统开发工具是MyEclipse和Sqlserver数据库,开发语言是Java,主要使用了J2EE的技术,java是一种面向对象编程语言,简单易学而且灵活方便。大三时就学习了java课程,大四期间也系统的了解了J2EE的知识,协议供货管理系统总体上开发难度不高,数据库的设计和操作是本系统设计的核心。在大学期间学习过软件工程,软件测试,UML统一建模语言等课程,每个学期也会完成对应的课程设计,具备一定的系统分析、设计和测试能力。因此,完成系统实现在技术上完全具有可行性。

2.2.2经济的可行性

如今是信息化时代,信息化管理可以使商品采购工作更加系统化、快速化、全面化。这样可以为超市带来较高的工作效益和经济效益,本系统对计算机配置的要求不高,超市机房更换下来的低配置电脑都可以完全满足需要,再者,超市在管理工作上的高效率和便捷性远远超过了开发本系统的成本,所以在经济上具有完全的可行性。

2.2.3操作可行性

本系统操作简单,输入信息页面大多数都是下拉框的选择形式,在某些页面,信息可以自动生成,无需输入,时间的输入也是用的日历控件,操作简便,对操作人员的要求很低,只需对WINDOWS操作熟练,加之对本系统的操作稍加培训即可工作,而且本系统可视性非常好,所以在技术上不会有很大难度。

2.2.4法律的可行性

超市管理系统是自行开发的管理系统,是很有实际意义的系统,开发环境软件和使用的数据库都是开源代码,开发这个系统不同于开发普通的系统软件,不存在侵权等问题,即法律上是可行的。

综上所述,开发超市管理系统与人工记录的方式相比具有速度更快,操作更准确,节省开支等有利之处,因此,建立一个超市管理系统是必要可行的。

2.3系统用户用例图

2.3.1管理员用例图

管理员是系统的核心用户,涉及到三大功能模块,管理员对系统的供货商与商品有着操作的权限,能够对采购申请进行审批操作。

图2.1 管理员用例图

2.3.2操作员用例图

操作员负责平日商品采购申请及具体采购工作。

图2.2 操作员用例图

2.4功能模块需求分析

本系统最大的特点是使用操作简单、友好的提示信息。本系统将实现以下基本功能:

(1)系统具有简洁大方的页面,使用简便,友好的错误操作提示

(2)管理员用户具有采购商管理、办公物品管理、采购申请审批管理管理功能

(3)操作员用户具体采购申请管理、物品采购管理功能

(3)具有较强的安全性,避免用户的恶意操作

系统的功能结构图,分做操作员平台,管理员平台。

操作员用户功能模块图说明:操作员通过自己的账号和密码进入本系统,可以浏览物品信息、发起采购申请、添加采购物品、打印采购信息,如功能图2.3所示

图2.3 操作员用户功能模块图

管理员功能模块图说明:管理员是功能最多的一种用户角色。

(1)供货商管理模块:在该模块中定义了供货商的管理,其功能包括供货商录入、查询、修、删除等操作。

(2)商品信息管理模块:在该模块中定义了对商品信息的管理,其功能包括商品信息录入、查询、修改、删除等操作。

(3)物品采购审核模块:在该模块中定义了对采购信息的管理,其功能包括采购信息浏览、审批等操作。管理员用户功能模块图如下。

图2.4 管理员用户功能模块图

2.5设计的基本思想

设计思想遵循以下几点:

1. 采用B/S模式进行开发,其优点是后台与前台处理层次分明,而且符合众多已经习惯网页方式的用户。

2. 采用面向对象的开发与设计理念。运用面向对象技术的前提是对整体系统的高度和准确抽象,通过它可以保证系统良好的框架,进而带来产品较强的稳定性和运行效率。

3.采用模块化设计。模块化设计要求将整个系统划分成基于小的模块,有利于代码的重载,简化设计和实现过程。

4. 简单方便的系统界面。设计简单友好的系统界面,方便用户较快的适应系统的操作。

5.速度优先原则。由于此工具最重要的评测标准就是速度,因此在设计过程中,具体过程尽量做到资源占用少,速度快。

6.设计既要突出重点,又要细致周到。要符合设计需求,在有可能改进的地方进行扩充,使系统更适应用户的需要。

2.6性能需求

2.6.1系统的安全性

协议供货管理系统在管理权限上要严格进行控制,具体要求如下:

1.想登协议供货管理系统进行操作,必须有某些操作权限,没有权限的用户不能通过任何方式登录系统查看系统的任何信息和数据,以确保系统的严密性和安全性。

2.在具体实现中设定不同权限,不同权限用户登录到系统后,不能越级操作,管理员可以对数据进行增删改操作;操作员用户只具有浏览和增加操作。

2.6.2数据的完整性

1.各种记录信息的完整性,信息记录内容不能为空

2.各种数据间相互联系的正确性

3.相同数据在不同记录中的一致性

2.7界面需求

界面设计目前已经成为评价软件质量的一条重要指标,一个好的用户界面可以增加用户使用系统的信心和兴趣,提高工作效率,JSP技术是用JAVA语言作为脚本语言的,JSP网页为整个服务器端的JAVA库单元提供了一个接口来服务于HTTP的应用程序。 创建动态页面非常方便。用户界面是指软件系统与用户交互的接口,通常包括输出、输入、人-机对话的界面格式等。

1.输出设计

输出是由计算机对输入的原始信息进行加工处理,形成高质量的有效信息,并使之具有一定的格式,提供管理者使用,这是输出设计的主要职责和目标。

系统设计的过程正好和实施过程相反,并不是从输入设计到输出设计,而是从输出设计到输入设计,这是因为输出表格直接与使用者相联系,设计的出发点应当是保证输出表格方便地为使用者服务,正确及时反映和组成用于各部门的有用信息。输出设计的原则是考虑既要全面反映不同管理层的各项需要,又要言简意赅,不要将用户需要和不需要的都提供给用户。

2.输入设计

输入数据的收集和录入是比较费事的,需要大量的人力和一定设备,并且容易出错。如果输入系统的数据有错误,则处理后的输出将扩大这些错误,因此输入数据的正确性对于整个系统质量的好坏是具有决定性意义的。

输入设计的原则有如下几点:

1)输入量应保持在能满足处理要求的最低限度。设计中可采用设置字段初值,下拉式数据窗口等方式尽量减少用户键盘输入量。输入量越少,错误率就越少,数据准备时间也减少。

2)输入的准备及输入过程应尽量容易进行,从而减少错误的发生。

3)应尽量早对输入数据进行检查(尽量接近原数据发生点),以便使错误及时得到更正。

4)输入数据尽早地用其处理所需的形式被记录,以避免数据由一种介质转移到另一种介质时需要转录而可能发生的错误

第三章 系统分析与设计

3.1数据库的分析与设计

计算机信息系统以数据库为核心,在数据库管理系统的支持下,进行信息的收集、整理、存储、检索、更新、加工、统计和传播等操作。数据库已经成为现在信息系统等计算机系统的基础与核心部分。数据库设计的好坏直接影响到整个系统的质量和效率。

数据库的设计一般经过规划。需求分析、概念设计、逻辑设计、物理设计5个步骤。

3.1.1数据库的概念结构设计

概念设计是指在数据分析的基础上自底向上的建立整个系统的数据库概念结构,从用户的角度进行视图设计,然后将视图集成,最后对集成的结构分析优化得到最后结果。

数据库的概念结构设计采用实体—联系(E-R)模型设计方法。E-R模型法的组成元素有:实体、属性、联系,E-R模型用E-R图表示,是提示用户工作环境中所涉及的事物,属性则是对实体特性的描述。

概念设计的目标是产生反映超市组织信息要求的数据库概念结构,即概念模式。概念模式是独立于数据库逻辑结构,独立于支持数据库的DBMS,不依赖于计算机系统的,

根据以上对数据库的需求分析,并结合系统概念模型的特点及建立方法,建立E-R模型图。

(1)供货商信息实体E-R图如图3.1所示:

图3.1 供货商信息实体E-R图

(2)商品信息实体E-R图如图3.2所示

图3.2 商品信息实体E-R图

(3)采购申请信息E-R图如图3.3所示

图3.3 采购申请信息实体E-R图

(4)采购名细信息E-R图如图3.4所示

图3.4 采购名细信息实体E-R图

(5)管理员信息E-R图如图3.5所示

图3.5 管理员实体E-R图

(6)操作员信息E-R图如图3.6所示

图3.6 管理员信息实体E-R图

3.1.2数据库的逻辑结构设计

我们知道,数据库概念模型独立于任何特定的数据库管理系统,因此,需要根据具体使用的数据库管理系统的特点进行转换。即转化为按计算机观点处理的逻辑关系模型,E-R模型向关系数据库模型转换应遵循下列原则:

*每一个实体要转换成一个关系

*所有的主键必须定义非空(NOT NULL)

*对于二元联系应按照一对多、弱对实、一对一、多对多等联系来定义外键。

根据E-R模型,铝窗设计管理系统建立了以下逻辑数据结构,下面是各数据表的详细说明。

(1)供货商信息表主要是记录了供货商基本信息。表结构如表3.1所示。

表3.1供货商信息表(t_gong)

列名

数据类型

长度

允许空

是否主键

说明

id

int

4

主键

bianhao

varchar

50

供货商编号

mingcheng

varchar

50

供货商名称

dizhi

varchar

50

供货商地址

dianhua

varchar

50

供货商联系电话

email

varchar

50

供货商email

beizhu

varchar

20

备注

(2)商品信息表主要是记录了商品的基本信息,表结构如表3.2所示。

表3.2商品信息表(t_goods)

列名

数据类型

长度

允许空

是否主键

说明

id

Int

4

主键

bianhao

varchar

50

商品编号

mingcheng

varchar

50

商品名称

liebie

varchar

50

类别

pinpai

varchar

50

品牌

xinghao

varchar

50

型号

guige

varchar

50

规格

beizhu

varchar

50

备注

(3)采购申请信息表主要是采购申请的基本信息,表结构如表3.3所示。

表3.3采购申请信息表(t_shenqing)

列名

数据类型

长度

允许空

是否主键

说明

id

Int

4

主键

goods_id

Int

4

设备ID

shuliang

varchar

50

申请数量

shenqinshijian

varchar

50

申请时间

beizhu

varchar

50

备注

zhuangtai

Int

4

当前状态

huifu

varchar

50

审批意见

(4)设备采购申请信息表主要是采购内容的基本信息,表结构如表3.4所示。

表3.4采购申请信息表(t_caigou)

列名

数据类型

长度

允许空

是否主键

说明

id

Int

4

主键

goods_id

Int

4

设备ID

gong_id

Int

4

供货商ID

caigoushijian

varchar

50

采购时间

shuliang

varchar

50

采购数量

caigoujia

varchar

50

采购价

beizhu

Int

4

备注

(5)管理员信息表主要记录管理员的账号信息,包括用户名和密码,表结构如表3.5所示。

表3.5管理员信息表(t_admin)

列名

数据类型

长度

允许空

是否主键

说明

userId

int

4

编号

userName

varchar

50

用户名

userPw

varchar

50

密码

(6)操作员信息表主要记录操作员的账号信息,包括用户名、密码和姓名,表结构如表3.6所示。

表3.6操作员信息表(t_caozuoyuan)

列名

数据类型

长度

允许空

是否主键

说明

userId

int

4

编号

userName

varchar

50

用户名

userPw

varchar

50

密码

xingming

varchar

50

操作员姓名

3.1.3数据库的连接原理

采用JDBC连接数据库的方式,只需在工程中导入对应数据库的jar包,就可以方便的对数据库进行连接,在程序中,用Class.forName()方法来加载驱动程序,在用DriverManager的getConnection()方法就可以创建一个数据库连接。程序采用的是DAO模式来操作数据库,DAO(Data Access Object,数据访问对象),是Java编程中的一种经典模式,已被广泛应用,也是J2EE架构中持久层框架的基础知识,基于分层次式的软件架构来实现对数据库的访问操作。DAO模式的主要思想就是从抽象数据源获取与操纵数据的方法。抽象数据的含义就是编写应用程序的程序员不必关心数据库的物理位置,已经是何种数据库,只需使用封装数据库中表示记录的数据对象即可。其思想如图3.10所示:

图3.7  DAO模式类图

3.2中文乱码问题处理

在程序中经常会遇到中文乱码的情况,如果手动的在servlet和jsp页面进行设置,相当麻烦。因此,在程序的开始就写了一个过滤器SetCharacterEncodingFilter。

在web.xml中配置:

<filter>

<filter-name>SetCharacterEncodingFilter</filter-name>

<filter-class>myweb.util.filter.SetCharacterEncodingFilter</filter-class>

<init-param>

<param-name>encoding</param-name>

<param-value>gb2312</param-value>

</init-param>

</filter>

<filter-mapping>

<filter-name>SetCharacterEncodingFilter</filter-name>

<url-pattern>/*</url-pattern>//*表示工程下所有的页面都会有此过滤器的处理

</filter-mapping>

对应的SetCharacterEncodingFilter.java文件中的重要代码,在初始化init()方法中定义:

public void init(FilterConfig filterConfig) throws ServletException {

    this.filterConfig = filterConfig;

        this.encoding = filterConfig.getInitParameter("encoding");

        String value = filterConfig.getInitParameter("ignore");

        }

在工具包util包中同样定义了DataFormate类来处理字符转换:

       public static String toUni(String gbStr){

        String uniStr = ""; /*把字符串转换成uincode编码*/

        if(gbStr == null){

          gbStr = "";

        }

        try{

          byte[] tempByte = gbStr.getBytes("GB2312");

          uniStr = new String(tempByte,"ISO8859_1");

        }catch(Exception ex){

        }

        return uniStr;

      }

      /* 把字符串转换成Utf8编码*/

  public static String toUtf8String(String s) {

        StringBuffer sb = new StringBuffer();

        for (int i = 0; i < s.length(); i++) {

             char c = s.charAt(i);

              if (c >= 0 && c <= 255) {

                sb.append(c);

                }

              else {

                   byte[] b;

                    try {

                       b = Character.toString(c).getBytes("utf-8");

                     }catch (Exception ex) {

                        System.out.println(ex);

                        b = new byte[0];

                     }

                         for (int j = 0; j < b.length; j++) {

                           int k = b[j];

                           if (k < 0) {

                             k += 256;

                           }

                           sb.append("%" + Integer.toHexString(k).

                                     toUpperCase());  } }

       return sb.toString();  }

第四章 系统功能实现

在管理信息系统的生命周期中,经过了需求分析、系统设计等阶段之后,便开始了系统实施阶段。在系统分析和设计阶段,系统开发工作主要是集中在逻辑、功能和技术设计上,系统实施阶段要继承此前面各个阶段的工作成果,将技术设计转化为物理实现,因此系统实施的成果是系统分析和设计阶段的结晶。

4.1系统登陆页面实现

1.描述:为了保证系统的安全性,要先使用本系统必须先登陆到系统中,并且不同角色的用户进入不同的界面,功能也随之不同。

2.程序运行效果图如图4.1所示:

图4.1 系统登陆页面设计

3.在登陆页面输入用户名和密码以,点击提交按钮,跳转到登陆的service中,在该service中会对用户名,密码,验证码进行判断,验证通过进入对应的页面,loginservice关键代码:

public String login(String userName,String userPw,int userType)

{

String result="no";

if(userType==0)//系统管理员登陆

{

String sql="select * from t_admin where userName=? and userPw=?";

Object[] params={userName,userPw};

DB mydb=new DB();

mydb.doPstm(sql, params);

try 

{

ResultSet rs=mydb.getRs();

boolean mark=(rs==null||!rs.next()?false:true);

if(mark==false)

{

 result="no";

}

else

{

 result="yes";

 TAdmin admin=new TAdmin();

 admin.setUserId(rs.getInt("userId"));

 admin.setUserName(rs.getString("userName"));

 admin.setUserPw(rs.getString("userPw"));

 WebContext ctx = WebContextFactory.get();

 HttpSession session=ctx.getSession();

 session.setAttribute("userType", 0);

             session.setAttribute("admin", admin);

}

rs.close();

}

catch (SQLException e)

{

System.out.println("登录失败!");

e.printStackTrace();

}

finally

{

mydb.closed();

}

}

if(userType==1)

{

String sql="select * from t_caozuoyuan where userName=? and userPw=?";

Object[] params={userName,userPw};

DB mydb=new DB();

mydb.doPstm(sql, params);

try 

{

ResultSet rs=mydb.getRs();

boolean mark=(rs==null||!rs.next()?false:true);

if(mark==false)

{

 result="no";

}

else

{

 result="yes";

 TCaozuoyuan caozuoyuan = new TCaozuoyuan();

 caozuoyuan.setUserId(rs.getInt("userId"));

 caozuoyuan.setUserName(rs.getString("userName"));

 caozuoyuan.setUserPw(rs.getString("userPw"));

 caozuoyuan.setXingming(rs.getString("xingming"));

 WebContext ctx = WebContextFactory.get();

 HttpSession session=ctx.getSession();

 session.setAttribute("userType", 1);

             session.setAttribute("caozuoyuan", caozuoyuan);

}

rs.close();

}

catch (SQLException e)

{

System.out.println("登录失败!");

e.printStackTrace();

}

finally

{

mydb.closed();

}

}

return result;

}

4.2管理员模块

1.描述:系统主页面:左方页面展示了管理员可操作的五大功能,进入相关的管理页面可以链接到子菜单,并且高亮显示,每个管理模块下面都有相应的子菜单。

2.程序运行效果图如图4.2所示:

图4.2管理员主页面

在每个jsp页面将会对相关用户进行拦截操作,这样可以提高安全性,防止用户不经过登陆页面而进入任何子菜单页面:

if(session.getAttribute("user")==null)

{

 out.print("<script>alert('请先登录!');window.open('../index.jsp','_self')</script>");  

}

4.2.2商品信息管理

4.2.2.1商品信息录入

1. 描述:管理员输入商品相关正确信息后点击录入按钮,如果是没有输入完整的商品信息,都会给出相应的错误提示,不能录入成功。输入数据都通过form表单中定义的方法οnsubmit="return checkForm()"来检查,checkForm()函数中是各种的校验输入数据的方式。

2. 程序效果图如下图4.8所示:

图4.8 商品信息录入

4.2.2.2商品信息管理

1.描述:管理员点击左侧的菜单“商品信息管理”,页面跳转到商品信息管理界面,调用后台的action类查询出所有的商品信息,并把这些信息封转到数据集合List中,绑定到request对象,然后页面跳转到相应的jsp,显示出商品信息。

2.程序效果图如下图4.9所示

图4.9 商品信息管理页面

商品信息管理关键代码:

public void goodsMana(HttpServletRequest req,HttpServletResponse res) throws ServletException, IOException

{

List goodsList = new ArrayList();

String sql = "select * from t_goods where del='no'";

Object[] params={};

DB mydb=new DB();

try

{

mydb.doPstm(sql, params);

ResultSet rs=mydb.getRs();

while(rs.next())

{

TGoods goods = new TGoods();

goods.setId(rs.getLong("id"));

goods.setBianhao(rs.getString("bianhao"));

goods.setMingcheng(rs.getString("mingcheng"));

goods.setLeibie(rs.getString("leibie"));

goods.setPinpai(rs.getString("pinpai"));

goods.setXinghao(rs.getString("xinghao"));

goods.setGuige(rs.getString("guige"));

goods.setBeizhu(rs.getString("beizhu"));

goodsList.add(goods);

    }

rs.close();

}

catch(Exception e)

{

e.printStackTrace();

}

mydb.closed();

req.setAttribute("goodsList", goodsList);

req.getRequestDispatcher("admin/goods/goodsMana.jsp").forward(req, res);

}

public void goodsDel(HttpServletRequest req,HttpServletResponse res)

{

long id = Long.parseLong(req.getParameter("id"));

String del = "yes";

String sql = "update t_goods set del = ? where id=?";

Object[] params={del,id};

DB mydb=new DB();

mydb.doPstm(sql, params);

mydb.closed();

req.setAttribute("message", "商品信息删除成功!");

req.setAttribute("path", "goods?type=goodsMana");

        String targetURL = "/common/success.jsp";

dispatch(targetURL, req, res);

}

public void goodsUpd(HttpServletRequest req,HttpServletResponse res)

{

long id = Long.parseLong(req.getParameter("id"));

String bianhao = req.getParameter("bianhao");

String mingcheng = req.getParameter("mingcheng");

String leibie = req.getParameter("leibie");

String pinpai = req.getParameter("pinpai");

String xinghao = req.getParameter("xinghao");

String guige = req.getParameter("guige");

String beizhu = req.getParameter("beizhu");

String sql = "update t_goods set bianhao=?,mingcheng=?,leibie=?,pinpai=?,xinghao=?,guige=?,beizhu=? where id=?";

Object[] params={bianhao,mingcheng,leibie,pinpai,xinghao,guige,beizhu,id};

DB mydb=new DB();

mydb.doPstm(sql, params);

mydb.closed();

req.setAttribute("message", "商品信息修改成功!");

req.setAttribute("path", "goods?type=goodsMana");

        String targetURL = "/common/success.jsp";

dispatch(targetURL, req, res);

}

public void goodsAdd(HttpServletRequest req,HttpServletResponse res)

{

long id = CmUtil.getPkId();

String bianhao = req.getParameter("bianhao");

String mingcheng = req.getParameter("mingcheng");

String leibie = req.getParameter("leibie");

String pinpai = req.getParameter("pinpai");

String xinghao = req.getParameter("xinghao");

String guige = req.getParameter("guige");

String beizhu = req.getParameter("beizhu");

String del = "no";

String sql = "insert into t_goods values (?,?,?,?,?,?,?,?,?)";

Object[] params={id,bianhao,mingcheng,leibie,pinpai,xinghao,guige,beizhu,del};

DB mydb=new DB();

mydb.doPstm(sql, params);

mydb.closed();

req.setAttribute("message", "商品信息添加成功!");

req.setAttribute("path", "goods?type=goodsMana");

        String targetURL = "/common/success.jsp";

dispatch(targetURL, req, res);

}

4.2.3商品采购审批

1.描述:先是点击商品信息管理,页面跳转到物品采购审批管理界面,浏览所有的申请信息,点击要修改的申核的信息,跳转到申请审核页面,对申请信息进行审核。

2.程序效果图如图4.12、图4.13所示:

图4.12 申请信息浏览页面

采购审批关键代码:

public void spMana(HttpServletRequest req,HttpServletResponse res) throws ServletException, IOException

{

List sqList = new ArrayList();

String sql = "select ta.*,tb.mingcheng,tb.leibie from t_shenqing ta ,t_goods tb where ta.goods_id = tb.id and ta.zhuangtai=0";

Object[] params={};

DB mydb=new DB();

try

{

mydb.doPstm(sql, params);

ResultSet rs=mydb.getRs();

while(rs.next())

{

TShenqing shenqing = new TShenqing();

shenqing.setId(rs.getLong("id"));

shenqing.setSpmc(rs.getString("mingcheng"));

shenqing.setSplb(rs.getString("leibie"));

shenqing.setShuliang(rs.getString("shuliang"));

shenqing.setShenqingshijian(rs.getString("shenqingshijian"));

shenqing.setBeizhu(rs.getString("beizhu"));

shenqing.setStrZt(getStrZt(rs.getInt("zhuangtai")));

sqList.add(shenqing);

    }

rs.close();

}

catch(Exception e)

{

e.printStackTrace();

}

mydb.closed();

req.setAttribute("sqList", sqList);

req.getRequestDispatcher("admin/shenqing/shenpiList.jsp").forward(req, res);

}

public void sqAdd(HttpServletRequest req,HttpServletResponse res)

{

long id = CmUtil.getPkId();

long goodsId = Long.parseLong(req.getParameter("goodsId"));

String shuliang = req.getParameter("shuliang");

String shenqingshijian = req.getParameter("shenqingshijian");

String beizhu = req.getParameter("beizhu");

int zhuangtai = 0;

String huifu = "";

String sql = "insert into t_shenqing values (?,?,?,?,?,?,?)";

Object[] params={id,goodsId,shuliang,shenqingshijian,beizhu,zhuangtai,huifu};

DB mydb=new DB();

mydb.doPstm(sql, params);

mydb.closed();

req.setAttribute("message", "采购申请添加成功!");

req.setAttribute("path", "shenqing?type=sqMana");

        String targetURL = "/common/success.jsp";

dispatch(targetURL, req, res);

}

4.2.4修改密码

1.描述:输入用户名和用户的原有密码,输入新密码以后点击修改按钮即可修改密码成功。

2.程序效果图如图4.14所示:

图4.14 修改密码

4.2.5退出系统

1.描述:点此按钮回到系统的主页面。

2.关键代码:主要是通过javascript语句来实现, item_word[8][4]="退出系统";

item_link[8][4]="javascript:window.open('../index.jsp','_self')"; 

4.3操作员模块

4.3.1采购审请管理

4.3.1.1添加采购申请

1. 描述:先是点击添加采购申请管理,页面跳转到采购申请管理界面,浏览所有的商品信息,点击要采购的商品的信息,跳转到采购申请添加面,填写采购申请信息。

2. 程序效果图如下图4.15、图4.16所示:

图4.15 采购申请商品浏览页面

4.3.1.2采购结果查看

1.描述:操作员点击左侧的菜单“我的采购申请”,页面跳转到物品申请结果查看界面,调用后台的action类查询出所有的申请信息,并把这些信息封转到数据集合List中,绑定到request对象,然后页面跳转到相应的jsp,显示出申请信息。

2.程序效果图如下图4.17所示

图4.17 申请结果查看页面

采购申请管理关键代码:

public void goodsList(HttpServletRequest req,HttpServletResponse res) throws ServletException, IOException

{

List goodsList = new ArrayList();

String sql = "select * from t_goods where del='no'";

Object[] params={};

DB mydb=new DB();

try

{

mydb.doPstm(sql, params);

ResultSet rs=mydb.getRs();

while(rs.next())

{

TGoods goods = new TGoods();

goods.setId(rs.getLong("id"));

goods.setBianhao(rs.getString("bianhao"));

goods.setMingcheng(rs.getString("mingcheng"));

goods.setLeibie(rs.getString("leibie"));

goods.setPinpai(rs.getString("pinpai"));

goods.setXinghao(rs.getString("xinghao"));

goods.setGuige(rs.getString("guige"));

goods.setBeizhu(rs.getString("beizhu"));

goodsList.add(goods);

    }

rs.close();

}

catch(Exception e)

{

e.printStackTrace();

}

mydb.closed();

req.setAttribute("goodsList", goodsList);

req.getRequestDispatcher("admin/shenqing/goodsList.jsp").forward(req, res);

}

public void sqAdd(HttpServletRequest req,HttpServletResponse res)

{

long id = CmUtil.getPkId();

long goodsId = Long.parseLong(req.getParameter("goodsId"));

String shuliang = req.getParameter("shuliang");

String shenqingshijian = req.getParameter("shenqingshijian");

String beizhu = req.getParameter("beizhu");

int zhuangtai = 0;

String huifu = "";

String sql = "insert into t_shenqing values (?,?,?,?,?,?,?)";

Object[] params={id,goodsId,shuliang,shenqingshijian,beizhu,zhuangtai,huifu};

DB mydb=new DB();

mydb.doPstm(sql, params);

mydb.closed();

req.setAttribute("message", "采购申请添加成功!");

req.setAttribute("path", "shenqing?type=sqMana");

        String targetURL = "/common/success.jsp";

dispatch(targetURL, req, res);

}

4.3.2物品采购管理

4.3.2.1物品采购添加

1. 描述:先是点击物品采购添加管理,页面跳转到物品采购管理界面,浏览所有的已同意采购的申请信息,点击要采购的信息,跳转到采购物品添加面,填写采购内容信息。

2. 程序效果图如下图4.18、图4.19所示:

图4.19 采购信息录入

第五章 系统测试

5.1系统测试目的与意义

系统测试是管理信息系统开发周期中一个十分重要而漫长的的阶段。其重要性体现在他是保证系统质量与可靠性的最后关口,是对整个系统开发过程包括系统分析、系统设计和系统实现的最终审查。

系统测试的任务是尽可能彻底的检查出程序中的错误,提高软件系统的可靠性,其目的是检验系统“做得怎样”。这这阶段又可以分为三个步骤:模块测试,测试每个模块的程序是否正确;组装测试,测试模块之间的接口是否正确;确认测试,测试整个软件系统是否满足用户功能和性能的要求。测试发现问题之后要经过调试找出错误原因和位置,然后进行改正。是基于系统整体需求说明书的黑盒测试,应覆盖系统随偶联合的部件,系统测试是正对整个产品系统进行的测试,目的是验证系统是否满足了需求规格的定义,找出需求规格不符合或与之矛盾的地方。

5.2测试过程

在测试之初,由于将数据库中的数据是随便输入,没有实用性,为了使系统更加完善,在系统测试的过程中,本系统将一开始编程随便输入的数据全部清理后,输入了一些有效的测试数据,这样可以更真实的反映系统的功能实现情况。

这样不断发现问题,经过反复的测试、调试,把问题一个个的解决,最终系统可以正常运行。

5.2.1主页面的登录模块测试

测试流程: 1.打开系统首页,输入错误的登录信息

2.登录

3.输入正确的登录信息

4.登录

5.测试结果

模块名称

测试用例

预期结果

实际结果

是否通过

登录模块

用户名:null   密码:null  

弹出错误提示,请输入用户名

登陆失败,提示请输入用户名

通过

登录模块

用户名:m1

密码:null  

弹出错误提示,请输入密码

失败,提示输入密码

通过

登录模块

用户名:m1

 密码:1

弹出错误提示,用户名或者密码错误

登陆失败,提示用户名或者密码错误

通过

5.3其他错误

在程序设计实现的过程中不可避免的会产生各种难以预料的错误,如书写错误、传值类型不一致、参数传递问题等等。这些都需要通过细心的检测与不断的调试才能够排除。比如在servlet路径配置时因粗心错误导致运行导致所报错误,如图5.4:

图 5.4 由于servlet路径配置错误,运行时的提示

结  论

本次毕业设计将我大学四年所学的软件工程理论知识用到了具体的实践中去,深化了理论知识,同时也锻炼了动手实践能力。在这段日子里,我查阅了许多有关超市采购管理信息系统的资料,翻阅了许多JSP的书籍,结合自己的经验,详细调查了供货管理设计管理的工作内容与细节,开发设计了这个超市管理系统,虽然每个学期都会有相应课程的课程设计和实训来作为动手练习训练,不过在本次毕业设计具体的实践的时候还是遇到了很多小问题,比如说在jsp页面将输入框设为不可用是添加属性readonly=“true”,而我在实际编程中却错写成disable=“true”,这样直接导致了request对象取不到数据,调试了程序很久才发现request对象获得的返回值一直是空,之前一直以为是代码哪里出了问题,总是在查源程序的逻辑。这些虽然都是小问题,但是由于不细心在具体实践中却浪费了不少时间,看来平时还是要多多实践才是。

在系统的开发过程中,我运用到了B/S三层结构技术和自己在平时学习中掌握的一些技术,通过这些技术的实现,整个系统的性能得到了大大的提高。这些技术都在论文中做了比较详细的介绍。本系统还存在许多的缺陷和不足之处,比如很多细节上做的还不行,有些功能模块还应再加强。希望在以后的时间里,我可以把这些缺陷都弥补过来,进一步完善系统。

通过本次毕业设计我锻炼了自己的自学、研究能力,也从中学到不少在超市在课堂上学不到的东西.通过实践我也深刻的体会到软件开发的艰辛及问题解决后的喜悦心情,培养我的独立思考问题的能力,同时也增强了我的理论联系实际的能力,这为自己以后的工作奠定了良好的基础。

本系统可以在很大程度上减轻超市商品采购管理人员与操作员的工作负担,但由于时间按和技术条件的限制,还存在一些不足之处,有些功能还需要改进,还应该做进一步的系统调查需求分析工作,更深入的完善系统。总之,一个紧跟时代步伐的真正使用的软件必需有一个不断完善改进的过程

参考文献

[1]王艳.超市物资采购活动中的会计风险控制[J].会计之友(下旬刊),2010;7

[2]于波.国有超市物资采购的管理途径[J].辽宁经济,2010;7.

[3] 林中孚.物资管理的探索与实践[J].中共福建省委党校学报, 2004,(6).

[4]盖国强.循序渐进Sqlserver. 北京:人民邮电出版社, 2007.9

[5]盖国强.深入解析Sqlserver. 北京:人民邮电出版社, 2009.9

[6] 张新曼. 精通JSP-WEB开发技术与典型应用[M]. 北京:人民邮电出版社, 2007. 98-101

[7] 陈文兰. 基于SSH 集成架构的进销存管理系统的设计[J]. 农业网络信息.

[11]张立科.java信息系统管理开发[M].北京:人民邮电出版社.

[8]邓子云.JSP网络编程从基础到实践[M].北京:电子工业出版社.

[10]郝玉龙.JavaEE编程技术[M].北京:北京交通大学出版社.

[11]李清森,刘宇,侯玉凤 .浅谈高校铝窗综合管理.工作研究.2002.

[12](美)Bruce Eckel著,陈昊鹏译,Java编程思想(第三版)[M].北京:机械工业出版社,2007.6

[13]李建中,王珊.《数据库系统原理(第2版)》电子工业出版社.2004.9

[14]张长富,黄中敏.JavaScript动态网页编程实例手册[M].北京:海洋出版社,2005:196-239

[15]艾灵仙. 高校系级网站构建平台的设计与实现.[J]. 科技信息-2008年16期

致  谢

本次设计历时三个月。在本次毕业设计中,能够基本顺利的完成任务,是与xxx老师的耐心指导分不开的。付老师无论是在毕业设计过程中,还是在论文完成中都给予了我极大的帮助。同时,付老师认真负责的工作态度,严谨的治学精神和深厚的理论水平都使我受益匪浅。他勤奋严谨的教学态度也给我留下了极为深刻的印象。我从老师身上学到了很多东西。在理论上还是在实践中,我能力都得到不少的提高,这对于我以后的工作和学习都有一种巨大的帮助,在此,特向付老师表示由衷的感谢。

通过这次毕业设计的整个开发过程,我系统开发过程从需求分析到具体功能实现,再到最终测试和维护的理解有了很大的进步,让我对系统开发有了更深层次的认识。现在我的动手能力和独立解决问题的能力也得到了很大的锻炼和提高,这是这次毕业设计最好的收获。

最后,在整个系统开发过程中,我身边的同学和朋友给了我很多的建议,让我很快的确定了系统的业务逻辑。在次我衷心的向他们表示感谢。

学生签名:

日    期:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值