1、2023 年 1 月总第 348 期基于Java和SQLServer 的仓库管理系统的设计与开发收稿日期:20220513;修回日期:20220624作者简介:司小龙(2001),男,江西九江人,在读本科,主要从事计算机软件开发研究,E-mail:。司小龙摘要:本文针对依靠大量人力、物力的传统管理模式存在的缺陷,以药品的仓库管理为例,采用 Java 语言和 SQL Server数据库,设计并开发了一套精准、高效、便捷的仓库管理系统。分析了系统的业务需求和功能需求,从功能设计和数据库设计两个方面设计了系统的总体方案,实现了系统的可视化图形用户界面、数据库功能、入库功能、出库功能。关键词:仓库管理
2、系统;Java;SQL Server;系统需求;系统实现中图分类号:F406.5;TP311.13文献标志码:ADOI:10.3969/j.issn.1674-9146.2023.01.071苏州科技大学,江苏苏州215009)文章编号:1674-9146(2023)0107104随着我国社会经济的飞速发展,在庞大人口基数成为消费者的背景下,各种商品需求量均日益增加。对于商家来说,在大量商品的交易过程中,会不可避免地产生仓库管理问题。数据库数据信息的增、删、改、查功能可以很好地适用于仓库管理系统,依靠数据库存储数据能够确保其安全性、高效性、便捷性1-3。本文以药品的仓库管理为例,开发一套仓库管
3、理系统。1系统的需求分析1.1业务需求分析本仓库管理系统是以基本信息和出入库操作这两大部分所构成。在基本信息中,需要包含市面上药物信息、雇员信息、客户信息等;在出入库操作中,需要包含入库操作与入库信息记录、出库操作与出库信息记录、库存信息查询操作。在仓库管理中,数据报表起着十分重要的作用,可以根据它掌握整个仓库的出入库情况,从而在对仓库中的药品进行管理时可以确保过程的完整性与可监控性,并且在使用中尽可能做到简洁、高效,避免过于复杂化的操作4-5。1.2功能需求分析本仓库管理系统主要需要实现的功能有:药品信息记录、员工信息记录、客户信息记录、药品入库操作以及信息记录、药品出库操作及信息记录、药品
4、的库存信息查询等功能。在药品信息记录中,需要记录仓库所管理的药品信息,主要包括:药品编号、药品名称、药品的生产公司、生产日期以及有效日期、药品的主要功效用途、价格等信息。在员工信息记录中,需要记录仓库中的雇员信息,主要包括:雇员编号、雇员姓名、性别、年龄、学历、职位等。在客户信息记录中,需要记录客户信息,主要包括:客户编号、客户姓名、客户联系方式等。在药品入库时,需要实现对药品的入库操作,还需要记录入库信息,主要包括:入库时间、药品编号、药品名称、入库数量、进行入库操作的雇员编号、进行入库操作的雇员姓名等。在药品出库时,需要实现对药品的出库操作,还需要记录出库信息,主要包括:客户编号、客户姓名
5、、出库时间、药品编号、药品名称、出库数量、进行出库操作的雇员编号、进行出库操作的雇员姓名等。2系统的总体方案设计2.1系统的功能设计1)药品信息记录、雇员信息记录、客户信息记录功能设计。创建填写对应信息的文本框,还需要实现对文本框内容信息填写正确性的简单判断,例如,药品价格、雇员年龄、客户联系方式只能输入数字文本,若输入其他类型文本,则提示添加失败。为了实现信息的统一性,可以创建组合框进行信息的填写,例如,在雇员性别的组合框中只能选择“男”或“女”。此外,还需要实现数据信息的增、删、改、查功能。2)入库功能设计。在药品入库时,需要填写药品编号、雇员编号、入库数量、药品存放位置。其中药品编号和雇
6、员编号均为确定值,则创建组合框进行选择,从而避免输入错误造成信息错误。并管 理 创新Management Innovation-071-SCI-TECH INNOVATION&PRODUCTIVITYNo.1 Jan.2023,Total No.348性别雇员编号雇员姓名学历年龄操作药品编号出库入库数量存放位置 入库时间客户编号存放位置出库数量生产日期有效日期将填好的信息形成相应的数据库语句,传到数据库中进行记录。药品编号和雇员编号作为数据库表格中的主键,可由此检索出相关的信息进行记录,然后将数据库表格返回给用户界面。此外,还需要实现数据信息的增、删、改、查功能。3)出库功能设计。在药品出库时
7、,需要填写客户编号、药品编号、药品存放位置、雇员编号、出库数量。其中除了出库数量以外,其余均为确定值,同样需要创建组合框以确保其信息的正确性。完成入库操作后,数据库需要将数据库表格返回给用户界面。此外,还需要实现数据信息的增、删、改、查功能。2.2数据库设计数据库设计是指根据业务和功能等需求,建立数据库及应用系统,从而确保其能安全、高效地存储数据。仓库管理系统功能的实现主要依赖于数据库,数据库决定了整个仓库管理系统的安全性及稳定性,因此合理地设计一个数据库是至关重要的。1)E-R 图设计。图 1 为数据库整体 E-R 图设计。其中,有 5 个对象:药品、雇员、客户、入库、出库,各个对象均有若干
8、种属性。对象之间的关系为:雇员更新药品;客户购买药品;雇员进行入库操作;雇员进行出库操作;入库和出库提供了库存信息;药品拥有库存信息。2)物理设计。物理设计是编程之前最关键的一步,取决于代码是否可正确执行,因此也决定了仓库管理系统是否能实现。各个表的具体信息见表1 第 73 页表 6。图 1数据库整体 E-R 图设计字段名(理论)字段名(物理)字段类型长度非空主键外键关联的表.字段名药品编号medicineIDNvarchar20是药品名称medicineNameNvarchar20是生产公司produceNvarchar20是生产日期produceDateNvarchar50是有效日期you
9、xiaoDateNvarchar50是用途usingNvarchar20是价格priceNvarchar是表 1药品信息(medicineInfo)价格药品编号药品名称药品更新生产公司用途存放位置客户联系方式客户姓名当前数量客户编号药品编号药品名称库存信息提供药品编号购买拥有雇员编号职位雇员编号雇员操作入库出库时间表 2雇员信息(employee)字段名(理论)字段名(物理)字段类型长度非空主键外键关联的表.字段名雇员编号employeeIDNvarchar20是药品名称employeeNameNvarchar20是性别employeeSexNvarchar2是年龄employeeAgeInt
10、是学历employeeDegNvarchar20是职位employeeZhiwuNvarchar20是管理 创 新Management Innovation-072-2023 年 1 月总第 348 期3系统的功能实现3.1系统的可视化图形用户界面实现系统的可视化图形用户界面可使用 SceneBuilder(场景构建器)根据用户自己的喜好进行设计。可以将SceneBuilder 与 eclipse 或者 IDEA 等进行连接,创建可视化图形用户界面,随后 SceneBuilder 会自动生成代码,避免了传统 swing 控件的繁琐操作。这样的实现方式可以极大程度地提高开发效率。3.2数据库功能
11、实现3.2.1数据库的连接连接数据库是功能实现的第一步,这是因为管理系统功能的实现都是建立在数据库的操作中。主要实现代码如下。public static void lianjie()tryStringurl=jdbc:sqlserver:/localhost:1433;databasename=medicine;DriverManager.registerDriver(newcom.microsoft.sqlserver.jdbc.SQLServerDriver();con=DriverManager.getConnection(url,sa,123456);catch(Exception e
12、x)JOptionPane.showMessageDialog(null,con not connect datebase,error,JOptionPane.ERROR_MESSAGE);System.exit(0);3.2.2数据库数据信息的增、删、改、查功能数据库数据信息的增、删、改、查功能是最基本的数据库功能实现内容,是管理数据最重要的操作手段。1)增加数据。主要实现代码如下。public static void add(String sql)System.out.println(SQL:+sql);CallableStatement cs;try cs=con.prepareCall
13、(sql);cs.executeUpdate();catch(SQLException e)JOptionPane.showMessageDialog(null,字段名(理论)字段名(物理)字段类型长度非空主键外键关联的表.字段名客户编号kehuIDNvarchar20是客户姓名kehuNameNvarchar20是联系方式kehulianxiNvarchar50是表 3客户信息(kehu)字段名(理论)字段名(物理)字段类型长度非空主键外键关联的表.字段名入库时间rukuTimeNvarchar50是药品编号medicineIDNvarchar20是是medicineInfo.medicin
14、eID入库数量rukuNumInt是雇员编号employeeIDNvarchar20是是employee.employeeID表 4入库信息(rukuInfo)表 6库存信息(kucunInfo)字段名(理论)字段名(物理)字段类型长度非空主键外键关联的表.字段名药品编号medicineIDNvarchar20是是medicineInfo.medicineID存放位置medicineSiteNvarchar20是当前数量currentNumInt是表 5出库信息(chukuInfo)字段名(理论)字段名(物理)字段类型长度非空主键外键关联的表.字段名客户编号kehuIDNvarchar20是是
15、kehu.kehuID出库时间chukuTimeNvarchar50是药品编号medicineIDNvarchar20是是medicineInfo.medicineID出库数量chukuNumInt是雇员编号employeeIDNvarchar20是是employee.employeeID管 理 创新Management Innovation-073-SCI-TECH INNOVATION&PRODUCTIVITYNo.1 Jan.2023,Total No.348add error,error,JOptionPane.ERROR_MESSAGE);e.printStackTrace();2)
16、删除数据。主要实现代码如下。public static void delete(String sql)System.out.println(SQL:+sql);CallableStatement cs;try cs=con.prepareCall(sql);cs.executeUpdate();catch(SQLException e)JOptionPane.showMessageDialog(nulldeleteerror,error,JOptionPane.ERROR_MESSAGE);e.printStackTrace();3)修改数据。主要实现代码如下。public static void update(int m,int n,String str1,Stringstr2)Integer.toString(m);String sql=call xiugai(+Integer.toString(m)+,+Integer.toString(n)+,+str1+,+str2+);System.out.print(sql);CallableStatement cs;try cs=con