基于java+Eclipse +SQL Server的工厂进销存管理系统设计与实现(毕业论文+程序源码)
大家好,今天给大家介绍基于java+Eclipse +SQL Server的工厂进销存管理系统设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦。需要下载开题报告PPT模板及论文答辩PPT模板等的小伙伴,可以进入我的博客主页查看左侧最下面栏目中的自助下载方法哦
文章目录:
1、项目简介
-
本工厂的进销存管理系统是基于eclipse开发环境,前台采用的是Swing 和 AWT 相关组件进行的GUI设计,后台使用的是SQL Server数据库。
-
工厂的进销存管理系统共分为六大模块,分别为基础信息管理模块,进货模块,销售模块,查询统计模块,库存管理模块和系统管理模块,其中基础信息管理模块涉及到客户,原料商品,供应商,产品信息的管理和维护;进货模块涉及到原料商品的进货和退货;销售模块是负责产品的销售和销售退货;查询统计模块则负责查询一些基础信息;库存管理模块完成原料商品的出库,产品的入库,库存盘点和价格修改;系统管理模块涉及到操作员管理和密码修改。总体而言,该六大功能模块设计合理,功能全面,同时界面友好,非常符合我国陶瓷工厂的进销存管理需求。
2、资源详情
项目难度:中等难度
适用场景:相关题目的毕业设计
配套论文字数:22977个字
包含内容:整套源码+完整毕业论文+答辩PPT+任务书+辅导视频+运行截图
3、关键词:
工厂进销存管理系统;java;SQL Server数据库;eclipse;swing;4、毕设简介:
提示:以下为毕业设计的简略介绍,项目源码及完整毕业论文下载地址见文末。
绪 论
1.1本课题的研究背景
这个课题是在我研究了我国众多的陶瓷生产及加工企业的现实需求,同时结合了工厂生产中所遇到的一些实际的问题还有收获来设计的。基于这些,我针对XXX陶瓷工厂 的进销存管理系统在系统设计还有开发等方面做了重点的研究。主要是研究了开发系统的过程中将会涉及到的一系列软件和硬件的平台的国际化的规范,系统的数据库的结构和完整性的设计。我这样做的主要目的是为了能够从技术手段的角度来阐述怎样解决我国现代的陶瓷生产厂家如何从原来传统的人工管理模式向现代化的信息化的管理模式的转变,除此之外还有陶瓷工厂的进销存系统在陶瓷工厂管理信息化中所起到的重要作用。
省略
1.2国内外研究现状
目前,国外陶瓷企业的信息化状况的分布是这样的:在大型陶瓷企业中,一般都会使用进销存管理系统来进行管理;在中型陶瓷企业中,进销存管理系统正在被重视并在实际生产中创造价值,在这种陶瓷企业中,进销存管理已经不再是传统的分散的单店式的非常分散的管理模式了,它越来越向着更加集中的更加方便管理的模式靠拢;对于小型的企业来说,很少有企业涉足这块,即便是有所了解也是仅仅处在表面的层次,无论是思想观念还是信息系统的建设都非常的不成熟,还需要一些时间来慢慢的探索,认识,进步。国外的这些进销存管理系统的使用情况对应着各种不同的企业,有着丰富的经验可供借鉴,但是,这些国外的软件和生产管理经验并不是能够完全符合我国的国情的,而且我国自主研发的一系列进销存管理软件大都是功能单一的,很少有这种专门为了我国陶瓷工厂量身定制的,建立适合我国的陶瓷工厂特点的进销存管理系统,是工厂以高效率,低成本立足市场,为其自身的发展提供条件的重要课题。
1.3本课题的重要工作
省略
陶瓷工厂的进销存管理系统主要设计和实现以下内容:
(1) 基础信息管理:该模块主要负责对系统中的基础信息进行更新和维护。主要包括四个功能。其一,客户信息管理,此功能可以将客户的基本信息进行保存,之后还可以对其进行维护。其二,商品信息管理,此功能可以对商品即原材料进行保存和维护,还完成了将不同的商品与其各自的对应供应商进行匹配的功能需求。其三,供应商的信息的管理,此功能可以将供应商的基本信息进行保存,之后还可以对其进行维护。其四,产品信息管理,此功能可以对工厂生产的产品进行定义和维护。
(2)进货管理:进货管理这个模块又分为两个小模块,分别是进货单和进货退货功能这两个小功能。其中进货单功能是本模块的核心功能,主要完成了从对应的供应商处进入原材料,这里面还维护了经手人等字段,可以在将来需要的时候查明每一笔入库的来龙去脉。而进货退货功能也是在研究了大量的现实中陶瓷工厂的具体进货流程后提出的这样一个个性化,实用性极高的小功能。主要是考虑到了在现实进货中不可能每一次的进货都尽如人意,出现残次品的概率是极高的,所以一定会有将原材料退货的需求的,在这个功能中可以将第一步通过进货单入库的原材料再次出库。
(3)销售管理:在销售管理这个大模块中也是分为了两个小的功能,分别是销售单,销售退货功能。销售单指的是将生产好的产品卖给对应的有需求的客户,从而获取效益,这个功能也是本系统中最重要的一个功能,没有这个功能,整个系统的收益将无从谈起。相应的说,销售退货功能完成的功能主要是将卖出去的产品通过退货的渠道再次入库。这么做的原因是考虑到了各个客户需求是有很大的可能会变更的,或者我们的产品出现了残次品,无法满足客户的需求,在这两种情况下就需要用到这个功能,将销售出去的产品再次入库。
(4)查询管理:该模块主要负责对工厂核心信息的查询,因为在实际生产中,无论客户,供应商,原料还是产品都会有很多,所以将基础信息的查询功能拿出来专门做成一个模块,这么做是符合实际的生产场景的。具体来说,主要完成了各个具体信息的模糊查询和完全匹配查询,除此之外比较有特色的是我给每一种基础信息都维护了一个对应的简称字段。而且简称字段也提供了模糊查询和完全匹配查询这两种功能,更加方便也更加的人性化,利于日常工作的开展。
(5)库存管理:该模块是本系统中最重要的功能,因为本系统是一个陶瓷工厂的进销存管理系统,和传统的仓库管理系统区别很大,本系统中我们要对原材料进行加工后销售陶瓷成品所以在本模块中加入了商品出库,产品入库,库存盘点,价格修改等功能。
(6)系统管理:该模块是对工厂中的所有操作员进行管理的模块,在使用这个模块的时候我将会对此操作进行鉴权,具体的来说就是,所有的角色都可以修改自己的密码,但是只有系统管理员才有权限增加新的操作员。
1.4选题意义
省略
2 开发工具的选择
2.1开发工具Eclipse的介绍
2.1.1Eclipse简介
Eclipse 这个工具是我开始接触编程就一直使用的工具,它本身也是开源的,在在校学习和日常的实习工作中,使用最为广泛。Eclipse这个工具可扩展性是非常好的,工作中可以通过安装不同的插件来引入各种的实用的功能,让开发与测试变得更加紧密,也更加的方便。最值 得一提的是,Eclipse 工具本身还附带了Java语言的JDK工具(Java Development Kit,JDK)这是一个标准的插 件的集合。Eclipse的主要项目包括三个组成的部分,分别是Eclipse项目、Eclipse技术项目还有Eclipse工具项目。更具体的来说,Eclipse Platform、CDT、JDT以及PDE这四个部分共同组成了现在这个成熟的Eclipse工具。JDT主要是可以支持Java的开发测试工作,CDT主要是用来完成C语言的开发及测试、PDE则是可以用来支持插件的开发和测试,最后Eclipse Platform是一个有很好的开放性的可扩展的IDE工具,它提供了一个通用的开发平台,同时提供了一个让建造模块和构造模块集成,并行对的软件开发工具的基础。
2.2 SQLServer数据库介绍
2.2.1SQLServer数据库的简介
省略
2.2.2 SQLServer数据库的优势
1.SQLserver数据库拥有高性能的设计,这样做我们就可以非常充分的利用WindowsNt的各种优势来优化我们数据。
2.SQLserver数据库的系统管理模式十分的先进,它可以运行Windows图形化管理工具,除此之外,它还支持本地的还有远程的系统管理和配置。
3.事务处理功能非常的先进,它采取了各种办法来保证了数据的完整性还有数据库的安全,让我们可以更方便的处理数据。
4.SQLServer数据库可以对多处理器结构进行解析,它的存储结构也更加的科学,能完美的运行ODBC,除此之外,它还拥有自主的SQL语言。他的各种强大的,实用的功能为广大开发者和用户提供了一个安全,性能出众的数据库平台。.
2.3 swing组件与功能
Java. awt 包含用于创建用户界面和绘制图形图像的所有类。在AWT术语中,诸如按钮或滚动条之类的用户界面对象称为组件。Component 类是所有AWT组件的父类。当用户与组件交互时,一些组件激发事件。AWTEvent 类及其子类用于表示AWT 组件能够激发的事件。容器是一个可以包含组件和其他容器的组件。容器还可以具有布局管理器,用来控制容器中组件的可视化布局。AWT 包带有几个布局管理器类和一个接口,此接口可用于构建自己的布局管理器。而swing组件则是在awt组件基础上优化出来的轻量级组件。Swing组件位于javax.swing包中,此包提供一组“轻量级”(全部是 Java 语言)组件,尽量让这些组件在所有平台上的工作方式都相同。此次毕业设计,我便采用Swing组件在进行前台的GUI界面设计,并用java.awt.event事件监听实现系统用户与本系统的动态交互。
3 可行性分析
3.1经济可行性
经济可行性研究是对我国众多的陶瓷工厂的经营状况和是否愿意为此系统来进行投资完成了详细的分析,对此为我国陶瓷工厂量身定做的系统的建设及运行还有后期维护的费用做了大致的估算,同时还对系统建 成后可能和一定会取得的经济和社会的效益进行评估。再加上本系统是为现实中实际的陶瓷工厂员工提供实用性强,可操作性强的自动化的办公内容,登陆了本系统后,就可以使用对应权限的系统功能了,系统的成本大部分都集中在了系统工程软件的开发工作上了,当这个系统投入到实际的运行中后即可以为人们节约大量的宝贵时间和精力,完成的工作也更加的安全,准确。它所能够带来的方便及效益远远大于系统软件的开发成本。在经济上完全可行。
3.2技术可行性
本系统采用Eclipse开发工具等当今使用最广的开源框架等技术应用到模块制作当中,结合陶瓷工厂的进销存管理系统的特点,设计基于java (swing组件)开发的。其中:前台用Swing 组件技术以及awt event事件响应实现前台GUI界面的开发以及相应得事件响应,后台采用了SQL Server数据库来完成相关数据的存储,二者之间的联系则采用SQL相关增删改语句编写成java类来实现,这三大部分尽量发挥各自的特点充分协调工作。再此基础上,我对本系统的各个模块进行了详细的分析,尽可能让它们做到模块独立,高内聚低耦合,让今后的维护工作更加的可行,所以在技术层面是可行的。
3.3管理可行性
本陶瓷工厂的进销存管理系统是由六大各具特色,缺一不可的模块共同组建完成的,开发完成并实际投入运行后,日常工作中的维护与管理也是非常简单快捷的。于此同时,系统开发中我将不同的功能分为不同的模块,在一个模块中功能尽可能的单一,这样会使后期维护工作成本更低且更容易完成,代码编写中我严格的遵守了代码的编写的规范,让本系统的代码更容易让人理解。对于完成同样工作的进程来说,采用启动一个程序,同时开启多个子进程的设计模式。值得一提的是在本系统中,具体的设计是将所有的对功能的操作都让操作员来完成,系统管理员很少,或者完全不参与系统的日常运行。将系统管理员的功能独立出来,让他全心全意的投入到对操作员的管理之中去。这种将两个角色分开的做法,使得整个系统更易于维护和管理,可以保证每一个操作员都是管理员仔细挑选之后的,而且如果出了问题,系统管理员也可以快速地定位到是哪一个操作员,让责任更明确具体。
3.4法律可行性
因为这个系统如果投入使用的话,一定会产生资金上的来往,这样有可能会让人钻空子违反法律法规。所以,在本系统的需求分析,代码开发,功能测试,包括之后的运行维护过程中,我都严格的遵守了我国的所有的相关法律法规。在此基础上,我还积极的相应国家的号召,让这个系统完全的贴合了我国的经济现状,让它为我国众多的陶瓷工厂做出贡献。所以在法律层面,它是完全可行的。
4 需求分析
4.1功能需求
-
基础信息管理:该模块主要负责对系统中的基础信息进行更新和维护。
1.1客户信息管理,通过这个功能,我们可以实现对所有客户信息的增删改查,可以查看每一个客户的详细信息,利用这些信息,从而更有针对性的推荐我们的产品,这样的成功率一定是更高的。
1.2商品信息管理,此功能可以对商品即原材料进行保存和维护,还可以将不同的原材料和不同的供应商进行匹配。
1.3供应商信息管理,此功能可以将供应商的基本信息进行保存,之后还可以对其进行维护。
1.4产品信息管理,使用此功能我们可以对工厂中新增的产品进行添加,在这里添加后我们就可以实际进行生产操作了。 -
进货管理:该模块主要负责对工厂所需原材料资源的维护工作,包括进货、退货等,实现了进货阶段对原材料入库的增删操作。
-
销售管理:该模块主要管理工厂对陶瓷产品的销售,和退货,实现了销售阶段对产品出入库的增删操作。
-
查询管理:该模块主要负责对基础信息的查询,因为在实际生产中,无论客户,供应商,原料还是产品都会有很多,所以将基础信息的查询功能拿出来专门做成一个模块,符合实际的生产场景。
-
库存管理:该模块是本系统最核心的功能,因为本系统是一个工厂的进销存管理系统,和传统的进销存管理有些不同,本系统中我们要对原材料进行加工后销售陶瓷成品所以在本模块中加入了商品出库,产品入库,库存盘点,价格修改等功能。
-
系统管理:该模块是对工厂中的员工进行管理的模块,在这个模块中希望将基础功能的操作和操作员的管理分离开来。在本系统中的所有的角色都是可以对自己的密码进行修改的,但是如果想添加新的操作员的话,只能通过系统管理员来完成,也只有他有这个权限。
4.2性能需求
进过仔细的调研后,我发现一个满足一下几条需求的系统才可以长期,稳定,安全,高效的运行起来:
1、要及时的和准确的处理系统信息
在设计一个陶瓷工厂的进销存管理系统的时候,我最先考虑的就是这个系统处理信息要及时更要准确。这是每一个系统都需要做到的最基础的性能。在本系统设计之初,我就已经充分的考虑到了这个系统现在的和将来的需要承受的最大的和平时的工作量,本系统的性能是完全能够满足我国陶瓷工厂的对信息处理的需求的。
2、要可以扩充系统功能
陶瓷工厂的进销存管理系统在开发过程中,我已经充分考虑到了以后系统的可扩充性。举个例子来说,陶瓷工厂的规模随着需求的增长会变得越来越大,程序的查询需求也在不断地变化,要对应的设计全称查询和简称查询,还有模糊查询等等。所有这些,都要求系统提供很多的可以进行功能的调整和扩充的接口。而要实现这一点,要利用系统的开放性来实现,就是说系统应是一个开放系统,可以自己分析需求,根据需求来对系统模块进行增加和替换,如果当前的功能不能满足实际的需要的话,也是可以对原有系统进行升级换代的。
3、所有的功能都必须易于操作上手
陶瓷工厂的进销存管理系统是直接为工厂的操作员服务的,要考虑到这些员工并不了解程序的流程,要设计易用的界面,让各位操作员更有效率的为工厂服务,而不是把时间浪费在熟悉系统上。
4、系统的标准性
陶瓷工厂的进销存管理系统,在具体的设计和部署时需要用到很多的软件和硬件产品,这些必须要符合国际标准。只有符合了国际的统一的标准,我们的工程才能更好的运转,也有利于后期的测试以及运行维护等等工作的开展。
5、系统的响应速度
考虑到实际生产中操作员的需求,本陶瓷工厂的进销存管理系统的数据库对信息处理的响应时间设为秒级。因为日常出入库工作不能马虎,如果系统的响应时间非常的长就有产生脏数据的风险。同时,在进行数据查询的时候,数据库的响应时间应该更短,这样才能拿到最新的数据,更全面,更准确。
6、系统要足够的安全
我们这个系统是为了现实中的陶瓷工厂使用而设计的,所以系统要足够的安全才能让人们放下心来使用,安全性包括多个方面,在这个系统中,我们最注重的有两个方面。一个就是,数据要易于维护,且不能产生脏数据,这个问题我们通过SQLserver数据库的良好的性能解决了,另一个问题就是要避免SQL注入攻击,这个问题我通过前后台的数据的校验来解决了。所以说我们这个系统的安全性很高,是一个能够让人方心使用的系统。
4.3 需求分析的结果
经过详细的需求分析后,我得出这样的结论:
在本XXX陶瓷工厂的进销存管理系统中,我们需要的主要的用户有两个,一个是系统操作员,在日常的工作中也是系统管理员来对系统进行操作,还有数据的维护。
另一个角色是系统管理员,这个角色也可以进行系统的操作,但是一般不这么做,基础的功能全部交给操作员来完成,它拥有系统操作员的所有权限,但是,他也可以对操作员进行管理,这个是操作员不具备的权限,只有系统管理员才有权限进行此操作。
下面是系统的用例图:
图4.1 操作员的用例图
图4.1 系统管理员的用例图
5 系统总体设计
5.1业务流程
根据需求分析得到的陶瓷工厂进销存业务处理流程,经过我的仔细研究后,首先确定了目标系统的业务流程,其处理流程如图5.1
图5.1 XXX陶瓷工厂的进销存管理系统的业务流程
针对整个系统的业务流程,现具体描述其主要的功能如下:
1、用户登录:当前系统对当前的登录的用户做合法性的检查同时完成系统的鉴权工作,让不同的角色完成不同的工作。
2、基本信息维护:维护供应商,客户,商品,产品等系统的基础信息,这些是完成整个系统的最基础的数据,缺一不可。
3、进货:生产陶瓷产品所必须的原材料将通过这个功能从其对应的供货商处买来,在设置好对应的信息后将其入库。
4、原材料出库:原材料放在仓库中是不能生产产品的,所以我们要先将原材料从库存中拿出来需要的数量,去完成陶瓷产品的生产工作。
5、产品入库:生产了不同的产品后将其分类入库。
6、库存管理:查看库存并对其进行管理,可以更改产品的价格。
7、销售:生产产品就是为了将其销售产生效益,通过这个功能可以将对应的产品买个各自需要的客户,如果产品有缺陷的话,也可以通过这个功能完成产品的退货。
5.2系统功能模块图
本系统主要分为基础信息管理模块,进货管理模块,销售管理模块,查询统计模块,库存管理模块,系统管理模块等六大模块。基础信息管理能够维护客户,商品,供应商,产品的基本信息进货管理能够进行商品的购买入库和退货;销售管理能够进行产品的出库和退货;查询统计能够对基础信息进行查询;库存管理能够进行原材料出库,产品入库,库存盘点,价格调整;系统管理能够新增操作员和修改密码。
下面是本系统的功能模块图:
图5.2 XXX陶瓷工厂进销存管理系统功能模块图
5.3系统流程
依据软件工程基本原理,综合以上分析给出系统流程如图5.3所示
图5.3 第一次登陆系统时的系统的处理流程
说明: 用户通过登陆界面登陆系统时,第一次使用系统时需要进行供应商,商品类别,客户,产品类别的创建,即将所有基本信息依次录入系统,第一次使用系统时同样要初始化库存,将现有的库存情况录入系统,接下来当发生库存变更时,对库存进行相应的修改,使用完成后退出系统即可。
5.4系统类图
在本系统中,主要的类有:
用 户 类:这个类通过权限又分为系统管理员和操作员,系统管理员可以添加新的操作员,但是普通的操作员是没有进行这个操作权限的。
供应商类:这个类是操作员进行维护的,供应商类的主键将作为商品类的外键存在,供应商会生产陶瓷原材料,即商品。让后将不同的商品与供应商对应起来完成入库操作。
商 品 类:这个类是陶瓷的原材料类,操作员通过进货将商品入库,当需要生产陶瓷产品的时候,通过商品出库操作完成出库。
产 品 类:这个类就是工厂生产出来的不同产品的类,操作员将它维护在库存中,当有客户需要购买产品时,操作员通过销售操作完成出库。
客 户 类:这个类顾名思义就是工厂的客户,他会购买我们的产品,给我们创造效益,所以要很好的维护。
库 存 类:这个类是用来维护工厂的库存的,同时包括商品和产品两种,操作员可以通过库存盘点来清点库存,也可以通过价格调整操作来修改库存中商品和产品的价格。
下面是系统的类图:
图5.5系统类图
6 数据库设计
6.1数据库的逻辑设计
依据数据库设计的方法,可按照本系统数据特点设计相应的实体关系可知,该XXX陶瓷工厂进销存管理系统一共涉及到6个实体,其对应的实体关系图如下所示:
用户实体是维护了系统中所有的角色,他可以进行所有的操作,但是它不与其他的实体产生关系,具体如下图所示:
图6.1用户实体图
供应商实体与原材料实体之间的关系是每一个供应商可以为陶瓷工厂提供多种原材料,某一种特定的原材料也可以通过多个供应商来提供。但是由不同的供应商来提供的原材料其质量也会不同,所以这两种原材料是两种不同的原材料,他们之间的关系是一对多。具体关系如下图所示:
图6.2原材料与供应商的ER图
客户与产品之间的关系是一个客户可以同时选择购买多个产品,他们之间的关系是一对多的关系,具体的关系如下图所示:
图6.3客户与产品的ER图
库存实体是用来存储产品与原材料的真实的仓库只有一个,所以库存也只有一个,在这个库存中可以存储多个产品,同时也可以存储多个原材料,所以这三个实体之间的关系是库存与产品一对多,库存与原材料一对多。具体如下图所示:
图6.4产品,原材料与库存的ER图
XXX陶瓷工厂的进销存管理系统主要涉及到6个表,即产品信息表、商品信息表、库存信息表、供应商信息表、客户信息表、用户信息表。
产品信息表:生产的产品的信息主要在这张表中维护。新的产品添加后就会存储到这张表中。包括id、产品名称和产地。其中id是主键,非空且唯一。
商品信息表:生产的产品的原材料的信息主要在这张表中维护。新的商品添加后就会存储到这张表中。包括id、商品名称、产地和供应商。其中id是主键,非空且唯一。
库存信息表:库存的信息主要在这张表中维护。库存的具体情况会保存在这张表中。包括id、名称、单价、库存数量等。其中id是主键,非空且唯一。
供应商信息表:原材料的额供应商的信息主要在这张表中维护。新的供应商信息添加后就会存储到这张表中。包括id、名称、简称、地址、邮箱、联系人等。其中id是主键,非空且唯一。
客户信息表:工厂的客户的信息主要在这张表中维护。新的客户信息添加后就会存储到这张表中。包括id、名称、简称、地址、邮箱、联系人等。其中id是主键,非空且唯一。
用户信息表:工厂的所有操作员的信息和系统管理员的信息主要在这张表中维护。新的操作员新建后就会存储到这张表中。包括名称、登录名、密码、权限等。其中名称是主键,非空且唯一。
6.2数据库的物理设计
省略
下面我要画上本系统的E-R图,如图6.7所示。E-R图描述了当前现实世界到计算机机器的二进制世界的这样一个中间层次的图。所以说,它是一种概念模型。这种概念模型对信息世界的抽象分析是有极大的帮助的,我们可以利用这种工具完成用户和程序员之间的沟通,所以他也具有非常强的语义表达能力,传达知识更加的直接,清晰准确。同时让用户理解起来也更加的简单,更直观。
图6.7表之间的关系
7 详细设计与系统实现
7.1系统的流程图
图7.1总体流程图
说明:用户登陆系统时,系统判断用户的级别,如果为系统管理员,则可以进行操作员管理以及基本信息管理,销售管理,进货管理,库存管理,查询统计,更改密码,系统管理员点击退出按钮时,退出系统。如果是操作员,则可以进行相应的基本信息管理,销售管理,进货管理,库存管理,查询统计,更改密码,操作员点击退出按钮时,退出系统。
7.2登陆模块的实现
该模块是整个陶瓷工厂进销存管理系统的入口,通过登陆时输入不同的信息让系统分辨出不同的角色,从而能够有不同的操作权限。
图7.2登陆界面
关键代码:
连接数据库代码:
ResultSet jieguo = findForResultSet("select * from tb_userlist where username='"+ name + "'");
if (jieguo.next()) {
user.setUsername(name);
user.setPass(jieguo.getString("pass"));
if (user.getPass().equals(password)) {
user.setName(jieguo.getString("name"));
user.setQuan(jieguo.getString("quan"));
}
7.3基础信息管理模块的实现
图7.3客户信息管理-1
图7.4 客户信息管理-2
关键代码:
界面设计代码:
只有部分主要功能和代码
ResultSet haveUser = Dao.query("select * from tb_khinfo where khname='"
+ keHuQuanCheng.getText().trim() + "'")
if (haveUser.next()){
System.out.println("error");
JOptionPane.showMessageDialog(KeHuTianJiaPanel.this,
"客户信息添加失败,存在同名客户", "客户添加信息",
JOptionPane.INFORMATION_MESSAGE);}
连接数据库代码:
return insert("insert tb_khinfo values('" + khinfo.getId() + "','"
+ khinfo.getkehuname() + "','" + khinfo.getJian() + "','"
+ khinfo.getAddress() + "','" + khinfo.getyouzhengbm() + "','"
+ khinfo.getdianhua() + "','" + khinfo.getFax() + "','"
+ khinfo.getLian() + "','" + khinfo.getLtel() + "','"
+ khinfo.getMail() + "','" + khinfo.getXinhang() + "','"
+ khinfo.getHao() + "')");}
本模块中商品信息管理功能,供应商的信息管理功能,产品信息管理功能与客户信息管理功能相仿,所以在此不在赘述了。
7.4进货管理模块
图7.5 进货管理模块-进货单
进货单前台界面:
public class JinHuoDan extends JInternalFrame {
private void initTable() {
String[] columnNames = {……这里是进货单字段};
((DefaultTableModel) table.getModel())
.setColumnIdentifiers(columnNames);
TableColumn column = table.getColumnModel().getColumn(0);
DefaultCellEditor bianjiqi= new DefaultCellEditor(sp);
bianjiqi.setClickCountToStart(2);
column.setCellEditor(bianjiqi);
}
连接数据库代码:
boolean zidongtijiao= conn.getAutoCommit();
conn.setAutoCommit(false);
insert("insert into tb_kucun values('" + ruMain.getRkId()
+ "','" + ruMain.getPzs() + "'," + ruMain.getJe() + ",'"
+ ruMain.getyanshoujielun() + "','" + ruMain.getgongyingshan() + "','"
+ ruMain.getRkshijian() + "','" + ruMain.getcaozuoy() + "','"
+ ruMain.getJsr() + "','" + ruMain.getJsfs() + "')");
Set<TbRukuDetail> rkDetails = ruMain.getTabRukuDetails();
for (Iterator<TbRukuDetail> iter = rkDetails.iterator(); iter
.hasNext();) {
进货退货功能:
图7.6进货退货
进货退货的前台界面实现与进货单类似,这里只写连接数据库代码:
public static String getRkthMainMaxId(Date date) {
return getMainTypeTableMaxId(date, "tb_rkth_main", "RT", "rkthId");
}
public static boolean insertRkthInfo(TbRkthMain rkthMain) {
boolean zidongtijiao = conn.getAutoCommit();
conn.setAutoCommit(false);
Set<TbRkthDetail> rkDetails = rkthMain.getTbRkthDetails();
for (Iterator<TbRkthDetail> iter = rkDetails.iterator(); iter
.hasNext();) {
TbRkthDetail details = iter.next();
Item item = new Item();
item.setId(details.getSpid());
TbSpinfo spInfo = getSpInfo(item);
if (spInfo.getId() != null && !spInfo.getId().isEmpty()) {
TbKucun kucun = getKucun(item);
if (kucun.getId() != null && !kucun.getId().isEmpty()) {
int sl = kucun.getKcsl() - details.getSl();
update("update tb_kucun set kcsl=" + sl + " where id='"
+ kucun.getId() + "'");}
在本模块中我还加入了表单的验证功能,用户不能输入非法的,不符合本系统的数据,这样一来本系统就从前台和后台两个方面避免了非法数据的输入,这样就能使得系统更加的安全,无形之中也规范了用户的操作。
7.5销售管理模块
图7.7销售单
图7.8销售退货
销售管理模块的前台代码与进货管理的前台代码实现方式一致,这里只写连接数据库代码:
insert("insert into tb_sell_main values('" + sellMain.getSellId()
+ "','" + sellMain.getPzs() + "'," + sellMain.getJe()
+ ",'" + sellMain.getYsjl() + "','" + sellMain.getKhname()
+ "','" + sellMain.getXsdate() + "','" + sellMain.getCzy()
+ "','" + sellMain.getJsr() + "','" + sellMain.getJsfs()
+ "')");
Set<TbSellDetail> rkDetails = sellMain.getTbSellDetails();
for (Iterator<TbSellDetail> iter = rkDetails.iterator(); iter
.hasNext();) {
TbSellDetail details = iter.next();
insert("insert into tb_sell_detail values('"+ 1 +"','"
+ sellMain.getSellId() + "','" + details.getSpid()
+ "'," + details.getDj() + "," + details.getSl() + ")");
在这里通过这个方法将销售信息维护到数据库中:
boolean autoCommit = conn.getAutoCommit();
conn.setAutoCommit(false);
insert("insert into tb_xsth_main values('" + xsthMain.getXsthId()
+ "','" + xsthMain.getPzs() + "'," + xsthMain.getJe()
+ ",'" + xsthMain.getYsjl() + "','" + xsthMain.getKhname()
+ "','" + xsthMain.getThdate() + "','" + xsthMain.getCzy()
+ "','" + xsthMain.getJsr() + "','" + xsthMain.getJsfs()
+ "')");
7.6查询统计模块
图7.9查询统计模块1
图7.10查询统计模块2
图7.11查询统计模块3
本模块的特点是能够进行多字段的模糊匹配查询,该功能的目的是在实际的生产中,进过时间的积累,可能会在数据库中维护大量的数据,如果这时还使用显示全部数据的话效率太低了,所以本系统特别定制了这个功能,一来提高了工作效率,二来还能避免操作员因为公司名称记不全而导致的错误。
界面设计代码:
public void actionPerformed(final ActionEvent e) {
String conName, conOperation, content;
List list = null;
conName = conditionName.getSelectedItem().toString().trim();
conOperation = conditionOperation.getSelectedItem().toString()
.trim();
content = conditionContent.getText().trim();
String sql = "select * from tb_gysInfo where ";
if (conName.equals("供应商全称")) {
if (conOperation.equals("等于"))
list = Dao.findForList(sql + "name='" + content + "'");
else
list = Dao.findForList(sql + "name like '%" + content
+ "%'");
} else {
if (conOperation.equals("等于")){
list = Dao.findForList(sql + "jc='" + content + "'");}
else{list = Dao.findForList(sql + "jc like '%" + content + "%'");}
}updateTable(list, dftm);}
7.7库存管理模块
图7.12库存盘点
图7.13价格调整
图7.14产品入库
图7.15商品出库
界面设计代码(价格调整界面):
kcInfo.setDj(Double.valueOf(danJia.getText()));
kcInfo.setKcsl(Integer.valueOf(kuCunShuLiang.getText()));
int rs = Dao.updateKucunDj(kcInfo);
if (rs > 0)
JOptionPane.showMessageDialog(getContentPane(), "价格调整完毕。",
kcInfo.getSpname() + "价格调整”+JOptionPane.QUESTION_MESSAGE);
数据库代码:
价格调整:
public static int updateKucunDj(TbKucun kcInfo) {
return update("update tb_kucun set dj=" + kcInfo.getDj()
+ " where id='" + kcInfo.getId() + "'");
库存盘点:
public static TbSpinfo getSpInfo(Item item) {
String where = "spname='" + item.getName() + "'";
if (item.getId() != null)
where = "id='" + item.getId() + "'";
ResultSet rs = findForResultSet("select * from tb_spinfo where "
+ where);
TbSpinfo spInfo = new TbSpinfo();
7.8系统管理
图7.16管理员权限–操作员管理
图7.17操作员权限—操作员管理
图7.18更改密码
界面设计代码:(操作员管理)
if(!user.getQuan().equals("a")){
JOptionPane.showMessageDialog(getContentPane(), "您没有进行此项操作的权限");
8 系统测试
省略
8.1登陆功能测试:
这个模块的测试主要是测试不同的用户是否能正确的登陆,并且是否能够正确的完成鉴权工作,初次之外,还要测试功能是否能预防SQL注入攻击。
图8.1登陆功能测试
测试成功:
图8.2登陆成功
8.2进货功能测试
这个模块的测试主要是测试进货单中的信息是否能够正确的维护到与之相对应数据库表中。并且在之后的调用中是否能正确的使用。
图8.3进货单未填写经手人
图8.4进货单未填写验收结论
图8.5进货单未填写入库商品
图8.6进货单入库完成
销售功能与此功能类似,由于篇幅限制,不在赘述
8.3查询统计功能测试
图8.7全称匹配查询
图8.8全称模糊查询
图8.9简称匹配查询
图8.10简称模糊查询
图8.11显示全部数据
商品查询与供应商查询与此功能类似,再次不在赘述。
8.4库存管理功能测试
图8.12库存盘点功能测试
图8.13价格调整功能测试
图8.14产品入库功能测试
图8.15商品出库功能测试
8.5系统管理功能测试
图8.16添加操作员
图8.17新添加的操作员登陆成功且没有添加操作员的权限
图8.18密码更改功能
至此,本系统的全部功能已经全部测试完毕,总体来看没有明显的BUG,所有预期的功能也全部都较好的实现了,界面简洁大方,适合陶瓷工厂作为日常的管理软件长期使用。但是还是有一些小瑕疵,可以通过以后的加工使之变得更加美观科学,更易于操作,测试工作到这里就结束了。
总 结
省略
参考文献
[1] 郑四华,彭文治,陈磊. 陶瓷企业进销存管理系统的分析与设计[J]. 景德镇高专学报,2006,(04):18-21.
[2] 黄华. 基于陶瓷行业ASP平台的协同办公系统的研究与实现[D]. 景德镇陶瓷学院,2007.
[3] 翁谦益.基于JavaSE的企业进销存管理系统设计与实现[D].厦门大学,2014.
[4] 马萌.基于Java语言的进销存管理系统[J].计算机与网络,2015,(19):61-64.
[5] 吴丽芝.小企业进销存管理系统的设计与实现[D].吉林大学,2015.
[6]
[7] 陶亮.进销存管理系统的设计与实现[D].电子科技大学,2010.
[8] 罗爱萍.仓库进销存管理系统的开发[D].电子科技大学,2006.
[9] 杨宏伟,李晶.JAVA程序员开发手册[M].北京:科学出版社,2006,243-377.
[10]孟小峰.数据库系统导论。机械工业出版社.2000
[11]张海藩.软件工程.清华大学出版社.2009
[12]Steven Holzner.Java技术内幕.机械工业出版社.2002
[13]RyanMA,VrugtA,LienhardJ,GilmoreD,DyerJ,SteeleD.Trendsinpurchasing,inventorycontrolprobed.[J].Medicalproductssales:MPS:theofficialjournaloftheAmericanSurgicalTradeAssociation,1985,16(4):.
[14]McAllisterJC.Purchasingandinventorycontrolsystemsmanagement.[J].Americanjournalofhospitalpharmacy,1984,41(2):.
[15]BaerDM,HawkinsB,TymoshukP,WashingtonR.Inventorycontrolandpurchasingatreducedcost.[J].MLO:medicallaboratoryobserver,1994,26(11):.
致 谢
省略
5、源码下载:
本项目源码及论文如下,有需要的朋友可以点击进行下载。如果链接失效可点击下方卡片扫码自助下载。
序号 | 毕业设计全套资源(点击下载) |
---|---|
本项目源码 | 基于java+Eclipse的工厂进销存管理系统设计与实现(源码+文档)_JAVA_Eclipse工厂进销存管理系统.zip |