• 基于JavaSwing进销存管理系统的设计与实现


    目录
    摘要 i
    Abstract ii
    1 绪 论 1
    1.1本课题的研究背景 1
    1.2国内外研究现状 1
    1.3本课题的重要工作 2
    1.4选题意义 3
    2 开发工具的选择 4
    2.1开发工具Eclipse的介绍 4
    2.2 SQLServer数据库介绍 4
    2.3 swing组件与功能 5
    3 可行性分析 6
    3.1经济可行性 6
    3.2技术可行性 6
    3.3管理可行性 6
    3.4法律可行性 7
    4 需求分析 8
    4.1功能需求 8
    4.2性能需求 8
    4.3 需求分析的结果 10
    5 系统总体设计 11
    5.1业务流程 11
    5.2系统功能模块图 12
    5.3系统流程 13
    5.4系统类图 13
    6 数据库设计 15
    6.1数据库的逻辑设计 15
    6.2数据库的物理设计 17
    7 详细设计与系统实现 20
    7.1系统的流程图 20
    7.2登陆模块的实现 20
    7.3基础信息管理模块的实现 22
    7.4进货管理模块 23
    7.5销售管理模块 26
    7.6查询统计模块 27
    7.7库存管理模块 29
    7.8系统管理 31
    8 系统测试 33
    8.1登陆功能测试: 33
    8.2进货功能测试 34
    8.3查询统计功能测试 36
    8.4库存管理功能测试 37
    8.5系统管理功能测试 38
    总 结 40
    致 谢 42
    附录一:外文原文 43
    附录二:中文翻译 49
    4 需求分析
    4.1功能需求

    1. 基础信息管理:该模块主要负责对系统中的基础信息进行更新和维护。
      1.1客户信息管理,通过这个功能,我们可以实现对所有客户信息的增删改查,可以查看每一个客户的详细信息,利用这些信息,从而更有针对性的推荐我们的产品,这样的成功率一定是更高的。
      1.2商品信息管理,此功能可以对商品即原材料进行保存和维护,还可以将不同的原材料和不同的供应商进行匹配。
      1.3供应商信息管理,此功能可以将供应商的基本信息进行保存,之后还可以对其进行维护。
      1.4产品信息管理,使用此功能我们可以对工厂中新增的产品进行添加,在这里添加后我们就可以实际进行生产操作了。
    2. 进货管理:该模块主要负责对工厂所需原材料资源的维护工作,包括进货、退货等,实现了进货阶段对原材料入库的增删操作。
    3. 销售管理:该模块主要管理工厂对陶瓷产品的销售,和退货,实现了销售阶段对产品出入库的增删操作。
    4. 查询管理:该模块主要负责对基础信息的查询,因为在实际生产中,无论客户,供应商,原料还是产品都会有很多,所以将基础信息的查询功能拿出来专门做成一个模块,符合实际的生产场景。
    5. 库存管理:该模块是本系统最核心的功能,因为本系统是一个工厂的进销存管理系统,和传统的进销存管理有些不同,本系统中我们要对原材料进行加工后销售陶瓷成品所以在本模块中加入了商品出库,产品入库,库存盘点,价格修改等功能。
      6. 系统管理:该模块是对工厂中的员工进行管理的模块,在这个模块中希望将基础功能的操作和操作员的管理分离开来。在本系统中的所有的角色都是可以对自己的密码进行修改的,但是如果想添加新的操作员的话,只能通过系统管理员来完成,也只有他有这个权限。

    4.2性能需求
    进过仔细的调研后,我发现一个满足一下几条需求的系统才可以长期,稳定,安全,高效的运行起来:
    1、要及时的和准确的处理系统信息
    在设计一个陶瓷工厂的进销存管理系统的时候,我最先考虑的就是这个系统处理信息要及时更要准确。这是每一个系统都需要做到的最基础的性能。在本系统设计之初,我就已经充分的考虑到了这个系统现在的和将来的需要承受的最大的和平时的工作量,本系统的性能是完全能够满足我国陶瓷工厂的对信息处理的需求的。
    2、要可以扩充系统功能
    陶瓷工厂的进销存管理系统在开发过程中,我已经充分考虑到了以后系统的可扩充性。举个例子来说,陶瓷工厂的规模随着需求的增长会变得越来越大,程序的查询需求也在不断地变化,要对应的设计全称查询和简称查询,还有模糊查询等等。所有这些,都要求系统提供很多的可以进行功能的调整和扩充的接口。而要实现这一点,要利用系统的开放性来实现,就是说系统应是一个开放系统,可以自己分析需求,根据需求来对系统模块进行增加和替换,如果当前的功能不能满足实际的需要的话,也是可以对原有系统进行升级换代的。
    3、所有的功能都必须易于操作上手
    陶瓷工厂的进销存管理系统是直接为工厂的操作员服务的,要考虑到这些员工并不了解程序的流程,要设计易用的界面,让各位操作员更有效率的为工厂服务,而不是把时间浪费在熟悉系统上。
    4、系统的标准性
    陶瓷工厂的进销存管理系统,在具体的设计和部署时需要用到很多的软件和硬件产品,这些必须要符合国际标准。只有符合了国际的统一的标准,我们的工程才能更好的运转,也有利于后期的测试以及运行维护等等工作的开展。
    5、系统的响应速度
    考虑到实际生产中操作员的需求,本陶瓷工厂的进销存管理系统的数据库对信息处理的响应时间设为秒级。因为日常出入库工作不能马虎,如果系统的响应时间非常的长就有产生脏数据的风险。同时,在进行数据查询的时候,数据库的响应时间应该更短,这样才能拿到最新的数据,更全面,更准确。
    6、系统要足够的安全
    我们这个系统是为了现实中的陶瓷工厂使用而设计的,所以系统要足够的安全才能让人们放下心来使用,安全性包括多个方面,在这个系统中,我们最注重的有两个方面。一个就是,数据要易于维护,且不能产生脏数据,这个问题我们通过SQLserver数据库的良好的性能解决了,另一个问题就是要避免SQL注入攻击,这个问题我通过前后台的数据的校验来解决了。所以说我们这个系统的安全性很高,是一个能够让人方心使用的系统。
    4.3 需求分析的结果
    经过详细的需求分析后,我得出这样的结论:
    在本XXX陶瓷工厂的进销存管理系统中,我们需要的主要的用户有两个,一个是系统操作员,在日常的工作中也是系统管理员来对系统进行操作,还有数据的维护。另一个角色是系统管理员,这个角色也可以进行系统的操作,但是一般不这么做,基础的功能全部交给操作员来完成,它拥有系统操作员的所有权限,本文转载自http://www.biyezuopin.vip/onews.asp?id=11260但是,他也可以对操作员进行管理,这个是操作员不具备的权限,只有系统管理员才有权限进行此操作。
    下面是系统的用例图:
    在这里插入图片描述
    图4.1 操作员的用例图

    package model;
    import java.util.HashSet;
    import java.util.Set;
    public class TbRkthMain implements java.io.Serializable {
    	private String rkthId;
    	private String pzs;
    	private String je;
    	private String ysjl;
    	private String gysname;
    	private String rtdate;
    	private String czy;
    	private String jsr;
    	private String jsfs;
    	private Set tbRkthDetails = new HashSet(0);
    	public TbRkthMain() {
    	}
    	public TbRkthMain(String rkthId, String pzs, String je, String ysjl,
    			String gysname, String rtdate, String czy, String jsr, String jsfs) {
    		this.rkthId=rkthId;
    		this.pzs = pzs;
    		this.je = je;
    		this.ysjl = ysjl;
    		this.gysname = gysname;
    		this.rtdate = rtdate;
    		this.czy = czy;
    		this.jsr = jsr;
    		this.jsfs = jsfs;
    	}
    	public String getRkthId() {
    		return this.rkthId;
    	}
    
    	public void setRkthId(String rkthId) {
    		this.rkthId = rkthId;
    	}
    
    	public String getPzs() {
    		return this.pzs;
    	}
    
    	public void setPzs(String pzs) {
    		this.pzs = pzs;
    	}
    
    	public String getJe() {
    		return this.je;
    	}
    
    	public void setJe(String je) {
    		this.je = je;
    	}
    
    	public String getYsjl() {
    		return this.ysjl;
    	}
    
    	public void setYsjl(String ysjl) {
    		this.ysjl = ysjl;
    	}
    
    	public String getGysname() {
    		return this.gysname;
    	}
    
    	public void setGysname(String gysname) {
    		this.gysname = gysname;
    	}
    
    	public String getRtdate() {
    		return this.rtdate;
    	}
    
    	public void setRtdate(String rtdate) {
    		this.rtdate = rtdate;
    	}
    
    	public String getCzy() {
    		return this.czy;
    	}
    
    	public void setCzy(String czy) {
    		this.czy = czy;
    	}
    
    	public String getJsr() {
    		return this.jsr;
    	}
    
    	public void setJsr(String jsr) {
    		this.jsr = jsr;
    	}
    
    	public String getJsfs() {
    		return this.jsfs;
    	}
    
    	public void setJsfs(String jsfs) {
    		this.jsfs = jsfs;
    	}
    
    	public Set getTbRkthDetails() {
    		return this.tbRkthDetails;
    	}
    
    	public void setTbRkthDetails(Set tbRkthDetails) {
    		this.tbRkthDetails = tbRkthDetails;
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    Unity AVPro Video使用和WebGL播放视频流
    Es6代理proxy和同步异步以及AJAX
    单链表习题(对应章节chapter2)
    css文本划线效果(text-decoration相关属性详解)
    【云原生】Docker-compose单机容器集群编排
    如何制作HTML网页设计【体育运动主题网站——中国篮球NBA】
    【微软】【ICLR 2022】TAPEX:通过学习神经 SQL 执行器进行表预训练
    程序员的产品思维
    猿创征文|深入剖析多态的实现原理与虚函数指针
    第14届蓝桥杯青少组python试题解析:23年5月省赛
  • 原文地址:https://blog.csdn.net/newlw/article/details/127726248