毕业设计(论文)-基于数据库的商品库存管理系统

上传人:na****u 文档编号:56962656 上传时间:2022-02-22 格式:DOC 页数:58 大小:439KB
收藏 版权申诉 举报 下载
毕业设计(论文)-基于数据库的商品库存管理系统_第1页
第1页 / 共58页
毕业设计(论文)-基于数据库的商品库存管理系统_第2页
第2页 / 共58页
毕业设计(论文)-基于数据库的商品库存管理系统_第3页
第3页 / 共58页
资源描述:

《毕业设计(论文)-基于数据库的商品库存管理系统》由会员分享,可在线阅读,更多相关《毕业设计(论文)-基于数据库的商品库存管理系统(58页珍藏版)》请在装配图网上搜索。

1、基于数据库的商品库存管理系统【摘要】:本文讨论了基于MySQL Server、 JAVA、Tomcat的B/S结构的数据库应用程序开发。在微软Windows 10操作系统环境下,服务器端安装MySql Server 5.6、 Tomcat 8.0,客户端安装MyEclipse 2015、HeidiSQL 9.1.0开发的数据库应用程序,实现了简单的收货、发货商品库存管理等功能。【关键词】: MySQL, HeidiSQL, JAVA, MyEclipse, 库存管理目 录0 引言31 应用系统运行环境31.1 服务器端软件环境31.2 客户端软件环境(含开发工具)32 数据库设计32.1 创建

2、数据库42.2 创建数据库用户43 关于表之间的联系64 定义数据库备份策略65 应用程序设计65.1 需求分析65.1.1访谈用户65.1.2需求说明书75.2 软件设计75.2.1 概览75.2.2 环境搭建85.2.3 用户管理功能,用户的增,删,改,查185.2.4 仓库及物料管理285.2.5 收货445.2.6 发货525.2.7 更新前面删除功能,保持数据一致性525.2.8 库存报表54【参考文献】 570 引言随着计算机技术的发展,数据越来越重要,并且逐渐从程序中分离出来,至今已经形成了各种成熟的关系型数据库系统。在这个过程中,数据库的应用也越来越广泛,特别是在企业管理领域,

3、从早期的MIS系统到现在的ERP软件和电子商务软件,都离不开数据库。数据库应用程序的开发工具也由早期的dbase、Foxbase发展到今天基于Web的面向对象的java、.Net等开发平台。业界领先的ERP软件如SAP、Oracle等更是功能强大、庞大复杂,初始安装就需要上百GB的磁盘空间。然而,有许多原理是相通的,在这里我以MySQL Server数据库管理系统,Tomcat WEB服务器和MyEclipse 、HeidiSQL开发工具创建一个库存管理的简单应用,以说明数据库应用的基本框架。1 应用系统运行环境1.1 服务器端软件环境操作系统可安装Ubuntu 14 LTS(LTS为长期支持

4、版本)或CentOS 6.2(为了避免不必要的麻烦不建议安装最新版本,最好安装最新版的前1-2个稳定版)。数据库系统安装可MySQL 5.6及以上版本或mariadb 10.0以上版本(MySQL被Oracle收购后原MySQL创始人开发的新的基于MySQL的开源分支,全面兼容MySQL,性能更优秀些),Tcomcat7.0以上版本。1.2 客户端软件环境(含开发工具)操作系统可安装Windows 7,8.1或10,再安装Eclipse4.3 或MyEclipse 2014或2015开发工具,HeidiSQL或MySQL WorkBench for community客户端软件。2 数据库设计

5、2.1 创建数据库通过HeidiSQL创建一个名为inventoryManage的数据库,设置默认字符集为utf-8(很重要,不同运行环境不同的字符集容易导致乱码,所以数据库,开发环境会统一utf-8解决多语言乱码问题),表的引擎为InnoDB(为了支持事务),下面所建的所有有引擎均为InnoDB。2.2 创建数据库用户通过HeidiSQL创建用户imUser,授予在inventoryManag数据库下的所有操作权限,不限制访问地址,并设置该用户的密码。CREATE USER imUser% IDENTIFIED BY 123456;GRANT USAGE ON *.* TO imUser%;

6、GRANT SELECT, EXECUTE, SHOW VIEW, ALTER, ALTER ROUTINE, CREATE, CREATE ROUTINE, CREATE TEMPORARY TABLES, CREATE VIEW, DELETE, DROP, INDEX, INSERT, REFERENCES, UPDATE, LOCK TABLES ON inventorymanage.* TO imUser% WITH GRANT OPTION;FLUSH PRIVILEGES;创建表和索引创建用户表user,id设置为主键,INT类型并自增,由数据库自己维护,username字段唯一

7、约束。CREATE TABLE user (id INT NOT NULL AUTO_INCREMENT,-id; 主键 自增username VARCHAR(30) NOT NULL,-用户名 唯一维束password VARCHAR(30) NOT NULL,-密码PRIMARY KEY (id),UNIQUE INDEX username (username)COLLATE=utf8_general_ciENGINE=InnoDB;在user表中先增加一条记录,用于管理员登录:insert into user(username,password) values(admin,123456)

8、;创建仓库代码表warehouse,并将仓库id设为主键,ID长度为38是因为需要手动维护,手动创建的UUID长度为37。:CREATE TABLE warehouse (id VARCHAR(38) NOT NULL,-仓库ID,手动维护,主键name VARCHAR(50) NOT NULL,-仓库名address VARCHAR(50) NOT NULL,-仓库地址PRIMARY KEY (id)COLLATE=utf8_general_ciENGINE=InnoDB;创建物料代码表material:CREATE TABLE material (id VARCHAR(38) NOT NU

9、LL,-物料ID,手动维护,主键name VARCHAR(50) NOT NULL,-物料名unit VARCHAR(10) NOT NULL,-计量单位PRIMARY KEY (id)COLLATE=utf8_general_ciENGINE=InnoDB;创建收发货记录表logisticsManage,并将单据号码设为主键。因为收货单与发货单的结构非常相似,在这里用一张表来进行存储,增加一个单据类型字段,用以区分是收货单还是发货单。这里还假设计量单位都与物料代码表中的一致,所以不保存计量单位。为了简单起见,在这里用系统自动产生的流水号来表示单据号。CREATE TABLE logistic

10、sManage (id VARCHAR(38) NOT NULL,-ID,主键type TINYINT NULL,-1,发货。 2,收货optTime DATETIME NULL,-操作时间warehouseID VARCHAR(50) NULL,-仓库IDmaterialID VARCHAR(50) NULL,-物料IDamount FLOAT NULL,-数量userID INT NULL,-用户IDPRIMARY KEY (id)COLLATE=utf8_general_ciENGINE=InnoDB;3 关于表之间的联系早期开发软件时使用的数据库多为关系型数据库,包括本文使用的MySQ

11、L也属于关系型数据库。在开发软件时,也强调各个表(即软件中的实体映射)之间的关系联系。随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。虽然很多软件依然使用传统的关系型数据库做为产品,但是己经不再像以前那样在数据库库来强调表与表之间的联系,转而将联系放在程序层处理,来提高性能和效率,所以本文中的表不再使用传统的外键来维护

12、表之间的联系。4 定义数据库备份策略通常根据业务需求等分析出来的备份时间在0点以后,如果是大型的应用,用本身的数据库产品管理工具还不足以做出支持自身备份与恢复的策略,这时就需要与开发分析需求,开发出半自定义备份恢复工具。本文只是一个简单的例子,放在3:00点自动做一次全备即可。5 应用程序设计5.1 需求分析需求分析是软件设计中非常重要的一个环节,没有经过详细的需求分析就匆匆忙忙进行软件开发是注定要失败的。所以一定要花时间与用户进行沟通交流,详细了解客户到底需要软件做到什么。在沟通交流过程中也可以大致告诉用户软件可以做到些什么、是怎样做的。对用户提出的一些不切实际的需求一定要以合理的方式明确地

13、拒绝。经双方讨论并明确的需求要以书面的形式签字确认。5.1.1访谈用户 访谈用户是了解用户需求的重要方式。需要跟公司不同层面的用户访谈,了解公司的业务流程和各个环节的不同需求。对忙碌的管理人员和销售员要提前预约,以合理安排客户的时间。每次访谈后要进行访谈内容整理,以文档的形式记录下来。5.1.2需求说明书 经过详细的需求调研,最终形成需求说明书。需求说明书包含项目背景、项目目标任务、需求规定等内容,其中需求规定是重点。下面简单列出本文的需求:(1) 仓库按代码进行管理,避免每次输入仓库名称增加额外工作量和多次输入相同仓库但名称不一致。(2) 物料按代码进行管理,避免每次输入物料名称增加额外工作

14、量和多次输入相同物料但名称不一致。(3) 每次收货、发货都进行登记,以便统计库存。(4) 每次发货时,都要检查库存,避免出现客户拿了提单到仓库却提不到货。(5) 不同的操作人员有不同的登录帐户和密码,普通用户只能修改自己的密码,管理员可以修改任何人的密码。管理员可以创建、删除、修改普通用户。(6) 对进货、发货进行创建、更改操作后,保存时把操作员代码保存到该记录中,以便明确责任。5.2 软件设计 5.2.1 概览根据需求说明书进行软件设计,把软件的功能用面向对象的方式进行分层处理,采用SpringMVC+Spring+Mybatis架构进行开发:视图层:提供给用户的操作界面。控制层:转发和处理

15、各种请求,将用户的请求转交给业务层进行处理,将处理完的结果又转交给视图层展示给用户。业务层:处理后台业务逻辑,与数据库交互时需调用持久层进行处理,执行完成后将后果又返回给控制层。持久层:数据库访问层,实现数据库的增,删,改,查操作。5.2.2 环境搭建考虑到JAVA开发有太多的JAR包依赖管理,手动处理非常繁琐,这里使用MAVEN创建项目。maven的配置文件pom.xml: 4.0.0 inventoryManage inventoryManage war 0.0.1 inventoryManage http:/maven.apache.org 4.0.2.RELEASE3.2.61.7.7

16、1.2.17 org.aspectjaspectjweaver1.8.7org.springframeworkspring-core$spring.versionorg.springframeworkspring-web$spring.versionorg.springframeworkspring-oxm$spring.versionorg.springframeworkspring-tx$spring.versionorg.springframeworkspring-jdbc$spring.versionorg.springframeworkspring-webmvc$spring.ver

17、sionorg.springframeworkspring-aop$spring.versionorg.springframeworkspring-context-support$spring.versionorg.springframeworkspring-test$spring.versionorg.mybatismybatis$mybatis.versionorg.mybatismybatis-spring1.2.2javaxjavaee-api7.0mysqlmysql-connector-java5.1.30commons-dbcpcommons-dbcp1.2.2jstljstl1

18、.2log4jlog4j$log4j.versioncom.alibabafastjson1.1.41org.slf4jslf4j-api$slf4j.versionorg.slf4jslf4j-log4j12$slf4j.version inventoryManage 数据源配置信息jdbc.properties:driver=com.mysql.jdbc.Driverurl=jdbc:mysql:/localhost/inventorymanage?characterEncoding=utf-8username=imUserpassword=123456#定义初始连接数initialSiz

19、e=1#定义最大连接数maxActive=20#定义最大空闲maxIdle=20#定义最小空闲minIdle=1#定义最长等待时间maxWait=60000spring与mybatis的整合 spring-mybatis.xml: Spring-mvc的配置 spring-mvc.xml:text/html;charset=UTF-8web.xml的配置:inventoryManagecontextConfigLocationclasspath:spring-mybatis.xmlencodingFilterorg.springframework.web.filter.CharacterEnc

20、odingFiltertrueencodingUTF-8 forceEncoding true encodingFilter/*org.springframework.web.context.ContextLoaderListenerorg.springframework.web.util.IntrospectorCleanupListenerSpringMVCorg.springframework.web.servlet.DispatcherServletcontextConfigLocationclasspath:spring-mvc.xml1trueSpringMVC/index.jsp

21、程序结构5.2.3 用户管理功能,用户的增,删,改,查定义登陆页:index.jsp 用户登陆 用户名: 密码: 创建全局拦截器,未登陆的请求一律转发到登陆页indexpackage com.inventoryMmon;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.web.servlet.HandlerInterceptor;import org.springframework.web.servlet.Mo

22、delAndView;import com.inventoryManage.domain.User;public class MyInterceptor implements HandlerInterceptorpublic void afterCompletion(HttpServletRequest request,HttpServletResponse response, Object arg2, Exception arg3)throws Exception public void postHandle(HttpServletRequest arg0, HttpServletRespo

23、nse arg1,Object arg2, ModelAndView arg3) throws Exception public boolean preHandle(HttpServletRequest request, HttpServletResponse response,Object arg2) throws Exception User user= (User)request.getSession().getAttribute(user);if(user=null)response.sendRedirect(index);return false;else return true;创

24、建用户实体类package com.inventoryManage.domain;public class User private Integer id;private String username;private String password;public Integer getId() return id;public void setId(Integer id) this.id = id;public String getUsername() return username;public void setUsername(String username) this.username

25、 = username;public String getPassword() return password;public void setPassword(String password) this.password = password;public User(String username, String password) this.username = username;this.password = password;public User() 创建用户持久层接口package com.inventoryManage.dao;import com.inventoryManage.

26、domain.User;public interface IUserDao User getUser(User user);List getUsers(User user);Integer updateUser(User user);Integer delUser(String uid);Integer addUser(User user);创建用户类数据库映射文件。实现增,删,改,查功能(配置文件中的ID与IUserDao方法相对应,可由mybatis自动生成接口的实现类,无须自己实现)select id,username from userusername= #usernamepassword=#passwordid!= #idinsert into user(username,password) values(#username,#password);update userusername= #usernamepassword=#password

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!