仓库管理系统毕业设计论文开题报告

毕业论文(设计)开题报告(文献综述)

 

第二篇:仓库管理系统毕业设计论文


软件技术专业毕业论文

基于jsp的超市仓库管理系统的实现

姓    名:         李 福 杰           

学    号:         0809340107          

指导教师:   张 哲、马琦 、雷燕、刘超

专    业:         软 件 技 术        

20##年4月14日


毕业设计开题报告

摘 要

没有什么比信息化社会大背景下的自动化管理更能提高生产力提高效益的,而利用计算机实现自动化管理更是时代需求。如今的超市规模日益壮大相应的各种信息量也随之增多,以往的超市仓库操作方式运营机构已逐渐不能适应如此多的信息量带来的压力,利用计算机的方便、快捷、安全、信息量大以及普及性和各种现代化的技术设计实现的超市仓库管理系统正是弥补了以往的不足之处,此系统更有许多创新推出,可以提供多用户的操作、海量信息库存、界面清新简洁、数据安全、盘点报表等。

《超市仓库管理系统》是一个基于WEB的管理系统,系统的开发利用了MVC模式,前台页面利用JSP技术实现,后台管理通过JavaBean、Servle管理t,并充分借用了MyEclipse开发工具的强大功能,数据库管理运用了MySql数据库,用Tomcat作为服务器。经分析:货物盘点、报表,系统安全度是本系统的难点。系统主要功能包括:用户登录注册、货物入库出库、货物盘点报表统计等。

相信随着《超市仓库管理系统》设计成功和以后的投入运行必将给超市仓库管理带来意想不到的好处和方便,这也是作为IT人对社会进步作出的微薄之力。

关键字: MVC、WEB、JSP、Tomcat、MySql、MyEclipse

Abstract

Nothing against the background of the information society of automation can increase productivity increase management efficiency, and use of computer automation management is need of the times. The growing size of today's supermarket corresponding amount of information also will increase the various, way past the supermarket warehouse operations can not meet the operational agencies have been gradually brought so much pressure on the amount of information, using computers convenient, fast, safe and informative big and popular and all the modern technology design and implementation of the supermarket warehouse management system is to make up for past shortcomings, this system there are many new innovations introduced

Can provide multi-user operation, large amount of information inventory, clean simple interface, data security, inventory reports, etc..

"Supermarket warehouse management system" is a WEB-based management system, system development and utilization of the MVC pattern, front page using JSP technology, background management through the JavaBean, Servle management t, and borrowed the full power of MyEclipse development tools, database management using a MySql database, with Tomcat as the server. The analysis: inventory of goods, reports, system safety is the difficulty of this system. System main features include: user login registration, warehousing the library, cargo inventory reports and statistics.

We believe that with the "supermarket warehouse management system" designed operational success and subsequent to the supermarket warehouse management will bring unexpected benefits and convenience, this is social progress as an IT person to make a modest contribution.

Keywords: MVC, WEB, JSP, Tomcat, MySql, MyEclipse


目 录

摘 要... III

Abstract IV

目 录... V

第一章:绪  论... 1

1.1项目背景... 1

1.2 项目意义... 1

第二章 开发及运行环境... 2

2.1  JSP语言概述... 2

2.2  JSP环境的搭建... 2

2.3  开发平台... 2

2.4  MySQL数据库... 3

第三章 系统分析... 4

3.1  需求分析... 4

3.2  功能需求分析... 4

3.3  可行性分析... 5

3.4     业务流程图... 6

3.5  数据字典描述... 6

3.5.1  数据条目... 7

3.5.2  数据分析... 7

第四章 系统设计... 9

4.1  系统总体结构设计... 9

4.2     系统功能模块图... 11

第五章 详细设计... 12

5.1  数据库设计... 12

5.2     数据库的结构设计... 13

5.5  数据库的连接... 14

5.6  超市仓库管理系统的登录页面... 26

第六章 系统测试... 27

6.1  测试的指导原则... 27

6.2  代码测试... 27

6.2.1  静态测试... 27

6.2.2  动态测试... 29

6.3 各个模块测试... 29

6.4 测试方法... 30

第七章  一些问题以及解决方法... 31

7.1  关于乱码问题... 31

7.2  关于非法登陆问题... 31

7.3  系统亮点... 32

结束语... 33

参考文献... 34

致  谢... 35


第一章:绪  论

1.1项目背景

超市已经成为人们生活中必不可少的一部分,所以对超市仓库的管理已成为破在眉睫的事情,超市仓库管理系统就应运而生了。

随着科学技术的发展,社会进步,计算机迅速的发展,超市仓库管理的方法也日新月异,以前全是由人管理的方法现存在很多的缺点:管理效率低,劳动强度大,信息处理速度低而且准确率也不够令人满意。为了提高超市仓库管理效率,减轻劳动强度提高,信息处理速度和准确性;为超市仓库管理员提供更方便、科学的服务项目。为超市仓库管理员提供的一种更先进、科学的服务系统。于是我们便选择了由计算机来设计一个超市仓库管理系统的方案。让计算机对仓库进行自动管理,超市仓库管理员可以直接在计算机上实现仓库的信息管理,并能在一定程度上实现自动化。所以超市仓库管理系统的开发十分必要。

1.2 项目意义

超市仓库就是库存货物的地方,其存在对每个超市的发展有着至关重要的作用,一个超市的成败很大一部分就与仓库有关。

日常的生产生活中,超市所售货物接近生活为人们生活必须品,因其这种特性就注定了超市仓库的库存量不但大而且复杂品种繁多,以前人们人工记录虽然慢但是也可以满足超市的正常营业的需要,不过随着生活步伐的加快这种方式已不能保证其正常经营了。

近年,计算机快速发展计算机软件更是日新月异,针对超市所面临的困境开发一个超市仓库管理系统是十分必要的,它不但可以解决超市面临的问题而且对提高超市仓库的管理也有很大的帮助,所以超市仓库管理系统即将诞生。

第二章 开发及运行环境

2.1  JSP语言概述

JSP(Java Server Pages)是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP技术有点类似ASP技术,它是在传统的网页HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件(*.jsp)。

2.2  JSP环境的搭建

(1) 安装JDK,配置环境变量

Path:D:\Program Files\Java\jdk1.6.0\bin;

ClassPath:D:\Program Files\Java\jdk1.6.0\jre\lib\rt.jar;.;

(2) 安装Tomcat,配置环境变量

Java_Home:D:\Program Files\Java\jdk1.6.0

Tomcat_Home:D:\apache-tomcat-6.0.18

(3) 在webapps\ROOT\WEB-INF下建一个classes文件夹,若要建一些包,如果包名找不到,则需要在JDK环境变量中加D:\ apache-tomcat-6.0.18\ROOT\WEB-INF\classes即可。

2.3  开发平台

本系统采用MVC(Jsp+JavaBean+Servlet) 开发模式来编写代码。MVC模式是"Model-View-Controller"的缩写,中文翻译为"模式-视图-控制器"。MVC应用程序总是由这三个部分组成。Event(事件)导致Controller改变Model或View,或者同时改变两者。只要Controller改变了Models的数据或者属性,所有依赖的View都会自动更新。

2.4  MySQL数据库

MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQL AB公司。前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。

MySQL的特性:

(1)  使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移植性

(2)  支持AIX、FreeBSD、HP-UX、Linux、Mac OS、Novell Netware、OpenBSD、OS/2 Wrap、Solaris、Windows等多种操作系统

(3)  为多种编程语言提供了API。这些编程语言包括C、C++、Eiffel、Java、Perl、PHP、Python、Ruby和Tcl等

(4)  支持多线程,充分利用CPU资源

(5)  优化的SQL查询算法,有效地提高查询速度

(6)  既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中提供多语言支持,常见的编码如中文的GB 2312、BIG5,日文的Shift_JIS等都可以用作数据表名和数据列名

(7)  提供TCP/IP、ODBC和JDBC等多种数据库连接途径

(8)  提供用于管理、检查、优化数据库操作的管理工具

(9)  可以处理拥有上千万条记录的大型数据库

第三章 系统分析

3.1  需求分析

本软件是一款仓库管理软件,旨在对仓库的库存等方面的自动化管理以适应现代社会的生产方式,其强大的货物管理功能不仅对货物分门别类而且记录了销售情况以及多功能的报表功能更便于统计货物。

仓库管理系统主要对货物的入库出库、生成报表、货物查询、盘点统计等关键功能优化创新,使其操作方便便于管理。另系统界面简洁操作简单,只要熟悉计算机即可快速掌握本软件的基本操作

性能需求分析

(1)硬件环境

处理器:IntcrCR1000或更高

内存:256MB或更大

硬盘空间:100MB

(2)软件环境

(3)操作系统:Windows98或Windows2000/WindowsNTScrver4.0;也可以是Linux

(4)数据库:MySQL

3.2  功能需求分析

超市仓库管理系统,以其强大的功能性要求,系统不仅实现了用户登录管理、货物查询等基本功能性要求,更添加盘点报表等更方便的功能,系统具体功能需求分析如下:

登陆功能:用户登录系统。

查询功能:用户登录后查询仓库货物存量。

录入功能:向仓库中添加货物及货物的基本信息。

盘点货物:对近期仓库货物出纳情况的盘查。

报表统计:针对用户不同需求生产相应报表。

3.3  可行性分析

(1)技术可行性

本系统基于时下流行的MVC模式开发,采用JSP+JavaBean+Servlet及MySql平台,由于Java的强大功能和MVC模式的成功使对系统的开发容易了很多,特别是基于Jsp的网页形式的开发使Dreamweaver的优势得以发挥,所以此系统的成功只是时间问题。

(2)经济可行性

估算新系统的成本效益分析,其中包括估计项目开发的成本,开发费用和今后的运行、维护费用,估计新系统将获得的效益,估算开发成本是否回高于项目预期的全部经费。并且,分析系统开发是否会对其它产品或利润带来一定影响。

(3)运行可行性

系统开发完成后,本着操作界面简洁易懂的原则使其针对大众化,只要熟悉计算机的用户都可已快速掌握基本操作。

运行环境:Windows 95/98/xp/7 等。

CPU: pentium II以上 、 内存:256M 、 硬盘:40G 。

3.4    业务流程图

业务流程图 (如图3-1所示)

图3-1 业务流程图

3.5  数据字典描述

数据字典是关于数据库中数据的描述,即元数据,而不是数据本身。数据本身将存放在物理数据库中,由数据库系统管理。数据字典有助于这些数据的进一步管理和控制,设计人员和数据库管理员在数据库设计、实现和运行阶段控制有关数据提供依据。

3.5.1  数据条目

admin:admin(用户名),password(密码)

user:id(id号),Username(用户名),Password(密码)

puser:id(id号),Pusername(用户名),Ppassword(密码)

gys:Gname(供应商名),Gphone(联系电话),Gaddress(地址)

hw:Hbianhao(货物编号),Hleibie(货物类别),Hname(货物名称),Gname(供应商名称)

rk:Rbianhao(入库编号),Rdate(入库日期),Rshuliang(入库数量),Hname(货物名称),Hbianhao(货物编号)

ck:Cbianhao(仓库编号),Cdate(仓库日期),Cshuliang(仓库数量),Hname(货物名称),Hbianhao(货物编号)

3.5.2  数据分析

数据结构

数据结构反映了数据之间的组合关系。一个数据结构可以由若干个数据项组成,也可以由若干个数据结构组成,或由若干个数据项和数据结构混合组成。

数据表名:admin

含义说明:是超市仓库管理系统的数据结构,定义了有系统管理员的信息。

数据表名:user

含义说明:是超市仓库管理系统的数据结构,定义了有关超级用户的信息。

组成:id,Username,Password

数据表名:puser

含义说明:是超市仓库管理系统的数据结构,定义了有关普通用户的信息。

组成:id,Pusername,Ppassword

数据表名:gys

含义说明:是超市仓库管理系统的数据结构,定义了有关货物供应商的信息。

组成:Gname,Gphone,Gaddress

数据表名:hw

含义说明:是超市仓库管理系统的主体数据结构,定义了有关货物的信息。

组成:Hbianhao,Hleibie,Hname,Gname

数据表名:rk

含义说明:是超市仓库管理系统的主体数据结构,定义了有关货物入库时的信息。

组成: Rbianhao,Rdate,Rshuliang,Hname,Hbianhao

数据表名:ck

含义说明:是超市仓库管理系统的主体数据结构,定义了有关货物出库时的信息。

组成:Cbianhao,Cdate,Cshuliang,Hname,Hbianhao

第四章 系统设计

4.1  系统总体结构设计

本系统的结构本系统采用B/S架构,所有的业务处理逻辑都在服务器端执行,客户端只有浏览器(IE/FireFox/Netscape/360/Maxthon等),所有界面呈现/操作都是通过浏览器将数据发送到服务器,由服务器的相应模块进行处理。

系统总体设计实现客户/服务器(B/S)模式在产生之初被设计为两层结构模型,一般又称之为以数据库为中心的结构。应用系统的用户界面部分可以放在客户端或服务端,但一般只存放于某一端,不会同时两端都有。两层结构模型将应用的用户界面从服务端移至客户端,有助于减少服务端的处理,从而提高系统的性能。业务逻辑以SQL语句或存贮过程调用的形式表示。SQL语句的网络开销过大,在业务逻辑简单的应用中表现尚可,但对于分布式的业务处理,就会显得有些不足。

为了避开两次结构模型的这些缺点,本系统采用三层模型来实现客户/服务器模式。本系统的三层结构模型以访问WEB数据库为中心,HTTP为传输协议,客户端通过浏览器(Browser)访问WEB服务器和与其相连的后台数据库。其三级结构组成如下图4-1所示:

图4-1 三层结构模型图

图中从左到右,分为三个层次:

第一层是用户界面层,主要完成客户和后台的交互及最终查询结果的输出功能。在客户端向指定的Web服务器提出服务器请求,Web服务器用HTTP协议把所需文件资料传给用户,客户端接受并显示在WWW浏览器上;

第二层业务处理层是功能层,完成客户的应用功能,即Web服务器接受客户请求,并与后台数据库连接,进行申请处理,然后将处理结果返回Web服务器,再传至客户端;

第三层数据支持层是数据层。数据库服务器应客户请求独立地进行各种处理。

与传统的两层模式相比,三层模式的主要优点为:

(1)  好的灵活性和可扩展性。对于环境和应用条件经常变动的情况,只要对应用层实施相应的改变,就能够达到目的;

(2)   可共享性。单个应用服务器可以为处于不同平台的客户应用程序提供服务,在很大程度上节省了开发时间和资金投入;

(3)  较好的安全性。在这种结构中,客户应用程序不能直接访问数据,应用JSP显示页面BusinessLayerDatabase用户界面层业务处理层数据支持层服务器不仅可控制哪些数据被改变和被访问,而且还可控制数据的改变和访问方式;

(4)  增强了企业对象的重复可用性。“企业对象”是指封装了企业逻辑程序代码,能够执行特定功能的对象。随着组件技术的发展,这种可重用的组件模式越来越为软件开发所接受;

(5)  三层模式成为真正意义上的“瘦客户端”,从而具备了很高的稳定性、延展性和执行效率;

(6)  三层模式可以将服务集中在一起管理,统一服务于客户端,从而具备了良好的容错能力和负载平衡能力。


4.2    系统功能模块图

图4-2  系统功能模块图

如上面业务分解图所示,将一个开发的软件---超市仓库管理系统分成五个模块, 即账户安全、入库出库、货物查询、盘点统计和生成报表模块。账户安全模块针对用户权限限制不同级别的用户相应的操作。入库出库模块主要是负责货物的录入和出库时的详细记录。货物查询模块主要负责用户对大量货物及时快速的查询。盘点统计模块主要是对一定时期货物出纳情况的总结盘点。生成报表模块主要是根据不同需求生成相应的报表便于纵览库存情况。

第五章 详细设计

5.1  数据库设计

经过详细分析,本系统适应中小超市仓库管理,所以对数据库的要求相对低,为此只建立起一个数据库,在此数据库基础上建立起如下六个表:

系统管理员(admin):用户名(admin)、密码(password)

超级用户表(user):用户id(id)、用户名(user)、密码(password)

普通用户表(Puser):用户id(id)、用户名(Pusername)、用户密码(Ppassword)

供应商表(gys):供应商名(Gname)、供应商电话(Gphone)、供应商地址(Gaddress)

货物表(hw):货物编号(Hbianhao)、货物类别(Hleibie)、货物名称(Hname)、供应商名称(Gname)

入库表(rk): 入库表单编号(Rbianhao)、入库日期(Rdate)、入库数量(Rshuliang)、供应商名称(Hname)、货物编号(Hbianhao)

出库表(ck): 出库表单编号(Cbianhao)、出库日期(Cdate)、出库数量(Cshuliang)、供应商名称(Hname)、货物编号(Hbianhao)

     

5.2    数据库的结构设计

超级用户表,存储用户信息,如表5.1所示:

表5.1超级用户表(user):

普通用户表,存储用户信息,如表5.2所示:

表5.2普通用户表(puser):

供应商表,存储供应商基本信息,如表5.3所示:

表5.2供应商表(gys):

货物表,存储货物基本信息,如表5.3所示:

表5.3货物表(hw):

入库表单表,存储入库信息,如表5.4所示:

表5.4入库表单(rk):

出库表单表,存储仓库信息,如表5.5所示:

表5.5出库表单(ck):

表5.6系统管理员表(admin):

5.5  数据库的连接

连接数据库的文件:

package com.logistic.data;

import java.sql.*;

import javax.sql.*;

import javax.naming.*;

import java.sql.Date;

//import java.text.SimpleDateFormat;

/**

  *  类名称: Db<br>

 *类功能:       数据库操作 <br>

 *创建:       ckjava<br>

 ****************************************************

 * To change the template for this generated type comment go to

 * Window&gt;Preferences&gt;Java&gt;Code Generation&gt;Code and Comments

 */

public class DataConnect {

      private Connection con;

      private Statement stmt;

      private ResultSet rs;

      private PreparedStatement pstmt;

      public static int error=0;

      /***************************************************

      *函数名称:      getCon()<br>

      *函数功能:      获取数据库连接<br>

      *返回值:        无<br>

      *参数说明:      无<br>

      *创建:              ckjava   

      ****************************************************/

      public static synchronized Connection getCon()throws Exception{

             Context ctx;

             DataSource ds;

             try{

                    ctx = new InitialContext();

                    ds = (DataSource)ctx.lookup("java:comp/env/jdbc/DBPool");

                    if(ds==null){

                    System.err.println();

                    System.err.println("数据连接打开+"+(++error));

                    }

                    return ds.getConnection();

             }catch(SQLException e){

                    System.out.print(e);

                    throw e;

             }

             catch(NamingException e){

                    System.out.print(e);

                    throw e;

             }

      }

      /***************************************************

      *函数名称:      getStmtread()<br>

      *函数功能:      获取数据库集合<br>

      *返回值:        Statement

      *stmt:返回数据库集合只用于SELECT语句<br>

      *参数说明:      无<br>

      *创建:              ckjava

      ****************************************************/

      public Statement getStmtread(){

             try{

                    con=getCon();     stmt=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);

             }catch(Exception e){

                    System.out.println("getStmtread");

                    System.out.println(e.getMessage());

             }

             return stmt;

      }

      /***************************************************

      *函数名称:      getRowCount()<br>

      *函数功能:      返回表的行数<br>

      *返回值:        int count<br>

      *                   count>0返回的行数<br>

      *                   count=-1表名不存在或没有纪录<br>

      *参数说明:      String sql<br>

      *                   sql 数据库中的表名

      *创建:              ckjava

      ****************************************************/

      public int getRowCount(String sql){

             int count=0;;

             try{

                    stmt=this.getStmtread();

                    rs=stmt.executeQuery("SELECT COUNT(*) FROM "+sql);

                    rs.getMetaData();

                    if(rs.next()){

                           count=rs.getInt(1);

                    }else{

                           count=-1;

                    }

             }catch(Exception e){

                    System.out.println("getRowCount");

                    System.out.println(e.getMessage());

                    count=-2;

             }finally{

                    this.close();

             }

             return count;

      }

      /***************************************************

      *函数名称:      getStmt()<br>

      *函数功能:      获取数据库集合<br>

      *返回值:        Statement

      *stmt:返回数据库集合不能用于SELECT语句<br>

      *参数说明:      无<br>

      *创建:              ckjava

      ****************************************************/

      public Statement getStmt(){

             try{

                    con=getCon();

                    stmt=con.createStatement();

             }catch(Exception e){

                    System.out.println("getStmt");

                    System.out.println(e.getMessage());

             }

             return stmt;

      }

      /***************************************************

      *函数名称:      getPstmt()<br>

      *函数功能:      获取数据库集合<br>

      *返回值:        PreparedStatement

      *                   pstmt:返回数据库预处理语句<br>

      *参数说明:      sql          类sql语句<br>

      *创建:              ckjava

      ****************************************************/

      public PreparedStatement getPstmt(String sql){

             try{

                    con=getCon();

                    pstmt=con.prepareStatement(sql);

             }catch(Exception e){

                    System.out.println("getPstmt");

                    System.out.println(e.getMessage());

             }

             return pstmt;

      }

      /***************************************************

      *函数名称:close()<br>

      *函数功能:关闭数据库连接<br>

      *返回值:  void<br>

      *参数说明:无<br>

      *最或修改:

      *创建者:   ckjava

      ****************************************************/

      public void close(){

             try{

                    if(rs!=null)rs.close();

             }catch(Exception e){

             }

             try{

                    if(stmt!=null)stmt.close();

             }catch(Exception e){

             }

             try{

                    if(con!=null){

                    con.close();

                    con=null;

                    System.err.println();

                    System.err.println("数据连接关闭-"+(--error));

                    }

             }catch(Exception e){

                    System.out.println("close");

                    System.out.println(e.getMessage());

             }

      }

      /***************************************************

      *函数名称:      inStr()

      *函数功能:      进行编码转换把ISO-8859-1转换为GB2312格式<

      *返回值:        tempstr

      *参数说明:      str   要转换的字符串

      *创建:              ckjava

      ****************************************************/

      public String inStr(String str){

             String tempstr=null;

             if(str==null){

                    str="";

             }else{

                    try{

                           tempstr=new String(str.getBytes("ISO-8859-1"),"GB2312");

                           //tempstr=str.replace('\'',(char)1);

                    }catch(Exception e){

                           System.out.println("inStr");

                           System.out.println(e.getMessage());

                    }

             }

             return tempstr;

      }

/*--------------------做编码出库转换---------------------------*/   

      public String outStr(String str){

             if(str==null){

                    str="";

             }else{

                    try{

                           str=str.replace((char)1,'\'');

                    }catch(Exception e){

                           System.out.println("outStr");

                           System.out.println(e.getMessage());

                    }

             }

             return str;

      }

      /***************************************************

      *函数名称:      selectdata()<br>

      *函数功能:      获取数据库中记录条数<br>

      *返回值:        k  为数据库记录条数

      *参数说明:      sqls        类sql语句<br>

      *创建:              ckjava

      ****************************************************/

      public int selectdata(String sqls){

             int k=-10;

             try{

                    k=0;

                    rs=this.getStmtread().executeQuery(sqls);

                    while(rs.next()){

                           k++;

                    }

             }catch(Exception ex){

                    k=-1;

                    System.out.println("select");

                    System.out.println(ex.getMessage());

                    this.close();

             }finally{

             this.close();}

             return k;

      }

      /***************************************************

      *函数名称:      updata()<br>

      *函数功能:      进行 添加,删除,修改<br>

      *返回值:        k  k>0执行成功,k<0执行失败

      *参数说明:      sqls        类sql语句<br>

      *创建:              ckjava

      ****************************************************/

      public int updata(String sqls){

             int k=-10;

             try{

                    k=0;

                    k=this.getStmt().executeUpdate(sqls);

             }catch(Exception ex){

                    k=-1;

                    System.out.println("updata");

                    System.out.println(ex.getMessage());

                    this.close();

             }finally{this.close();}

             return k;

      }

      /***************************************************

      *函数名称:      StrConverDate()<br>

      *函数功能:      把合法的字符串转换为Date类型<br>

      *返回值:        converdat (Date类型)

      *参数说明:      strdate          合法的String类型日期<br>

      *创建:              ckjava

      ****************************************************/

      public Date StrConvertDate(String strdate)

      {           

                 Date convertdate=null;

                 try{    

                 convertdate= Date.valueOf(strdate);

                System.out.print("打印日期");

                System.out.print(convertdate.toString());

                 }catch(Exception ex){ex.printStackTrace();}

            return convertdate;

      }

}

连接池的代码如下:

import javax.naming.Context;

import javax.naming.InitialContext;

import javax.naming.NamingException;

import javax.sql.DataSource;

public class DBPool {

    private static DataSource pool;

    static {

         Context env = null;

          try {

              env = (Context) new InitialContext().lookup("java:comp/env");

              pool = (DataSource)env.lookup("jdbc/DBPool");

              if(pool==null)

                  System.err.println("'DBPool' is an unknown DataSource");

               } catch(NamingException ne) {

                  ne.printStackTrace();

          }

      }

    public static DataSource getPool() {

        return pool;

    }

}

5.6  超市仓库管理系统的登录页面

超市仓库管理系统分为三种登录模式

(1)  管理员登录

(2)  超级用户登录

第六章 系统测试

6.1  测试的指导原则

在软件测试中,应注意以下原则:

(1) 测试用例应由输入数据和预期的输出数据两部分组成。

(2) 测试用例不仅要选用合理的输入数据,还要选择不合理的输入数据。

(3) 除了检查程序是否做了它应该做的事情,还应该检查程序运行时候

了它不应该做的事情。

(4) 应该定测试计划并严格执行,排除随意性。

(5) 长期保留测试用例。

(6) 对发现错误较多的程序段,应进行更深入的测试。

(7) 程序员避免测试自己的程序。

6.2  代码测试

6.2.1  静态测试

(1) 同一程序内的代码书写是否为同一风格

(2) 代码布局是否合理、美观

(3) 程序中函数、子程序块分界是否明显

(4) 注释是否符合既定格式

(5) 注释是否正确反映代码的功能

(6) 变量定义是否正确(长度、类型、存储类型)

(7) 是否引用了未初始化变量

(8) 数组和字符串的下标是否为整数

(9) 数组和字符串的下标是否在范围内(不“越界”)

(10) 进行数组的检索及其它操作中,是否会出现“漏掉一个”这种情况

(11) 是否在应该使用常量的地方使用了变量(例:数组范围检查)

(12) 是否为变量赋予不同类型的值

(13) (12)的情况下,赋值是否符合数据类型的转换规则

(14) 变量的命名是否相似

(15) 是否存在声明过,但从未引用或者只引用过一次的变量

(16) 在特定模块中所有的变量是否都显式声明过

(17) 非(16)的情况下,是否可以理解为该变量具有更高的共享级别

(18) 赋值的目的变量是否小于赋值表达式的值

(19) 是否存在分数和浮点数的比较

(20) 精度问题是否会影响比较

(21) 每一个逻辑表达式是否都得到了正确表达

(22) 逻辑表达式的操作数是否均为逻辑值

(23) 程序、模块、子程序和循环是否能够终止

(24) 是否存在永不执行的循环

(25) 是否存在多循环一次或少循环一次的情况

(26) 循环变量是否在循环内被错误地修改

(27) 子程序接受的参数类型、大小、次序是否和调用模块相匹配

(28) 全局变量定义和用法在各个模块中是否一致

6.2.2  动态测试

(1) 所用的测试数据是否具有实际的意义

(2) 是否每一组测试数据都得到了执行

(3) 每一组测试数据的测试结果是否与预期结果一致

(4) 文件的属性是否正确

(5) 测试数据是否具有一定的代表性

(6) 数字输入框是否接受数字输入

(7) 数字输入框是否拒绝字符串和“非法”数字的输入

(8) 对于可添加数据组合框,添加数据后数据是否能够得到正确显示和进行选择

(9)  列表框是否能够进行选择

(10) 多项列表框是否能够进行多数据项选择

(11) 单选组内是否有且只有一个单选钮可选

(12) 密码输入框是否按掩码的方式显示

(13) Cancel之类的按钮按下后,控件中的数据是否清空复原或按既定规约处理

(14) Submit之类的按钮按下后,数据是否得到提交或按既定规约处理

(15) 异常信息表述是否正确

(16) 软件是否按预期方式处理错误

6.3 各个模块测试

首先,对于登陆模块:当用户输入用户名和密码并且选择其身份类型后,点击登陆能否进入其相对应的操作界面,登陆不成功是否能够返回用户一个错误的信息。

是否能够限制用户非法登陆(比如用户不经过登陆界面直接进入操作界面);是

否允许用户无限制的登陆系统;用户退出系统后,是否就能及时关闭数据库连接,

不会一直占用资源而导致系统崩溃等等。

对于管理员:管理员成功登陆后,是否存在越权现象,是否其权限少写了个。是否其每个权限的操作都能达到最佳效果,是否存在不合理的增、删、改、查等等。

入库出库模块:用户登录后,向数据库里添加货物及详细信息,出库时的出库记录。

盘点报表模块:针对数据库信息及各个时间段的操作做个统计。

6.4 测试方法

软件测试方法一般分为两大类:动态测试方法与静态测试方法,而动态测试方法中又根据测试用例的设计方法不同。

(1) 静态测试:指被测试程序不在机器上运行,而是采用人工检测和计算机辅助静态分析的手段对程序进行检测。

(2) 动态测试:指通过运行程序发现错误。一般意义上的测试大多指动态测试。对软件产品进行动态测试,使用客户浏览器对服务器的访问。


第七章  一些问题以及解决方法

7.1  关于乱码问题

MySQL数据存储数据乱码以及前台显示乱码:MySQL数据库默认的数据存储类型编码是gbk格式的。当我们从数据库中读取数据的时候往往在前台界面上显示的是‘???’出现乱码现象。这是因为我们所编制的jsp文件所使用的编码格式是:gb2312的,所以出现了不兼容现象。为了解决这个问题在jsp的整体页面中加了个这个属性: pageEncoding="gbk"这样基本上就解决了这个问题了。还有一种方法就是在建设数据的时候就将所建数据库的编码格式改为gbk。然后在编程和绘制前台界面完成要保存的时候就将java文件和jsp文件的编码格式也保存成gbk的。这样以后也不会出现乱码问题了。总之就是数据库的编码格式要和jsp文件的编码格式一样就对了。

7.2  关于非法登陆问题

为了实现用户不登陆就不能非法进入其相应的操作界面这个功能。使用一个名为拦截器(filter)的接口类。编写了一个java文件分别用于拦截不明用户非法登陆。如果用户不登陆就想直接进入操作界面,拦截器就会迫使登陆者转向登陆页面登陆。这样用户要是不登陆就不能进入这个操作界面了。

7.3  系统亮点

(1)  报表统计:系统针对超市仓库管理的复杂操作情况,设计了灵活的报表功能。

(2)  数据库连接:采用数据库连接池进行数据库的连接,比一般的直接连接更有优越性,因为它提高了性能的同时还保存了宝贵的资源。

(2)  账户安全:对于不同用户对其权限设置做了严格的限制。


结束语

经过这几个月的努力,终于完成了本系统的设计及实现工作。通过毕业设计的完成和亲身实践,对专业知识有了深入的学习,把学过的知识融会贯通,又学到了以前没有学到的知识,培养了我独立思考问题的能力。这既丰富了我们的知识,又拓宽了我们的视野,为我们以后进入社会、参加工作架起了一座桥梁。这次毕业设计我的体会是只学了书本上的知识是远远不够的,一定要参与实践,做到学之为用这是最重要的。经过两个多月的设计和开发,超市仓库管理系统基本开发完毕其功能基本符合要求。

但是由于毕业设计时间较短,所以该系统还有许多不尽如人意的地方,比如用户界面不够美观,有一些功能还没有实现等都需要进一步改善。只要学习就会有更多的问题,有更多的难点,但也会有收获。

通过本系统的开发,提高了我分析问题、解决问题的能力,在阅读和分析资料、构思和设计一个软件的整体框架、前台和后台连接等方面有了切实的实践体会,并初步了解了一些工程管理的方法,为以后的发展奠定了良好的基础。


参考文献

[1]:郑阿奇、俞琰。《j2ee应用实践教程》电子工业出版社 20##年1月

[2]:李虎、赵龙刚。《UML基础、案例与应用》(第三版) 人民邮电出版社 20##年4月

[3]:耿祥义、张跃平。《Java2 实用教程》(第三版) 清华大学出版社 20##年7月

[4]:耿祥义、张跃平。《Jsp 实用教程》(第二版) 清华大学出版社 20##年7月

致  谢

首先对我的指导老师张哲老师、马琦老师、雷燕老师、刘超老师的指导与关怀表示衷心的感谢,他们严谨的教学态度、渊博的理论知识、脚踏实地和精益求精的工作作风给我留下了深刻的印象,永远是我学习的榜样。在整个毕业设计过程中,他们从整体上给我们把舵,给了我们很多督促和教导,并指出了软件开发过程中所应避免的许多问题,有了问题能够及时和他们沟通,给了我很大的帮助。系统的整体设计与分析方面,他们有着深刻的教导,在数据库的设计方面,他们也给了我很大的帮助,使我少走了很多弯路。我所取得的每一点进步都是同老师的指导和关怀分不开,他们的悉心教诲和无微不至的关怀将令我终身难忘。

在毕业设计的过程中,和我在一起的几位同学给了我很大的支持和帮助,在此对他们表示最真挚的感谢,最后深深感谢含辛茹苦养育我成长的父母,他们无私的爱和付出为我创造了一个良好的学习环境。最后我要向所有帮助过我的老师、同学及朋友们道一声感谢!

相关推荐