目录
摘要 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功能需求
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;
}
}