目录
第一章:前言
库存管理系统,处理一些普通的信息处理,但其主要处理库存的查询分析以及对应的操作处理。我仅处理了商品基本信息,商品类型信息,和库存的查询分析与决策,并未处理入库与出库操作,以及由此所产生的一系列问题。这是此系统的一个缺憾。
第二章:问题定义
所谓库存管理系统,就是处理有关库存的一些问题,包括商品基本信息的处理,商品类别信息的处理,以及库存的查询分析等操作。
对于商品基本信息的处理:就是商品信息的增删改处理。
对于商品类别信息的处理同样是一些简单的增删改查。
库存则主要是几种条件查询,同时有个库存分析,包括了库存的各种状况的处理策略。
第三章:可行性研究
可行性研究,一般从经济,技术,操作可行性上考虑。
就经济可行性,我们采用自己的开发平台,自己的电脑,不需要什么经费。
技术可行性,鉴于此系统的运行环境,我采用VS2008作为开发平台,采用C#作为开发语言。数据库采用SQL 2000。其环境的稳定性和平台的易用,使得开发与使用都变得简单,方便。操作可行性,开发出来的这个系统,运行在Windows系统中,窗口化的运行界面,简单易操作。易掌握。
综上所述,此系统的开发代价不是很大,简单易用,具有一定的开发价值。
第四章:需求分析
总体需求分析介绍:为了实现对库存的监管与查询,及时了解到商品的出售与购置关系。对于,商品的采购与销售策略,需要一个系统能够给予一定的理论支持。于是,开发需要这个针对库存查询分析的库存管理系统。首先,用户可以能够自主的维护系统的各项信息,包括商品基本信息,商品类别信息,库存,人员使用等情况。其次,用户可以查询各种信息,同时系统要给出一定的查询分析结果。对于销售和采购有一定的指导意义。至于入库与出库,暂时可以不予考虑。因为那都是硬性指标,只要我的分析需要采购或者出库,即必须执行。此系统具有支持管理者决策的功能。
一、核心业务
对商品基本信息的维护:
系统要对商品的库存信息实现维护,首先要有商品信息。这是整个系统的基础信息,包括(商品编号,商品名称,生产厂家,规格,备注)。商品信息的维护操作包括(商品的添加,更新,删除等操作)。他们的操作权限需要管理员登陆才能使用。
管理员对商品信息增删改后,在商品信息记录中体现,同时库存信息里也要更新信息。
对商品类别信息的维护:
对商品类别信息的维护,商品类别为商品的分类:商品的包装粒度(个,包,箱……),商品的类型(电器,食品,日化用品……),商品的计算单位(元/个、元/斤、元/包,……)商品类别包括(商品类别号,商品类型,计算单位,包装粒度)
对库存信息的查询:
A、单个商品的库存查询。对某个商品的库存查询库存剩余量,最低限额,最高限额
B、剩余量在某个范围内的商品库存种类。查询即剩余量在某个范围内的所有商品
C、某个时间段(批次)内的商品的库存情况。查询某个批次的所有商品的库存状况
D、查询超过警戒线的商品种类明细
E、查询低于警戒线的商品种类明细
查询后的处理策略:
1、如果发现有产品低于警戒线,则提示进行采购,补充货源
2、如果发现有长期驻留的 ,则提示采用促销方案。
3、给出库存报告:本月一共入库多少,出库多少,尚有多少,那些需要采购,那些需要促销,以及存货量的调整。重点是对库存信息的查询分析。
用户管理
处于安全考虑,系统需要指定人员才能进入,于是需要用户密码机制。用户凭借用户名与密码方可进入系统。
二、系统数据量
库存管理系统的数据流量,主要来源是每次的入库与出库,而这个系统的侧重点,是对于库存的查询分析,并没有对入库与出库的操作,进行处理,所以数据量来说,不存在大量数据的增加与删除,主要是数据的查询。对存储空间要求一般。由于系统不是很精确,故不适合大型公司使用,因此数据量也不是很大。
第五章:总体设计
一、软件总体结构图
软件架构设计:有一个总的主处理界面系统,每一个子系统分别作为一个入口,可以从主界面进入。他们的操作各自独立。于是就有下面的软件结构图。
图表 1
二、核心业务流程
1、对商品基本信息的维护
图表 2
2、对商品类别信息的维护
图表 3
3、对库存信息的查询
图表 4
4、用户管理
图表 5
三、模块与接口设计
对于模块之间,应做到高内聚,低耦合。
登录模块,是查询用户表是不是有记录,同时用户名与密码是不是一致。
登陆后,原窗体暂时隐藏,调出主窗体。
主窗体内的各个功能选项之间联系更不是很紧密。
于是并不需要什么接口。
四、数据库设计
1、数据ER图
图表 6
2、类图
图表 7
3、数据字典
表名 | 字段名 | 数据类型 | 备注 |
LoginUser | UserName PassWord | Nvarchar(50) Char(6) | 用户名 密码 |
ProductClass | ID Class PackGrad CalcuUnit | Char(4) Nvarchar(50) Nvarchar(50) Nvarchar(50) | 类别编号 产品类别 包装粒度 计算单位 |
Products | ID Name Company Standard Comment | Char(4) Nvarchar(50) Nvarchar(50) Nvarchar(50) Nvarchar(200) | 产品编号 产品名称 供应商 规格 备注 |
Stock | ProductID ProductClassID Amount PeakAmount FloorLimit Flag | Char(4) Char(4) Int Int Int Nvarchar(50) | 产品编号 产品类别编号 当前库存 库存最大限额 库存最低限额 标志 |
StockChild | SerialNumber ProductID ProductClassID InStorgeDate OutStorgeDate Amount ManufactureDate ExpirationDate Company Comment | Char(5) Char(4) Char(4) Datetime Datetime Int Datetime Int Nvarchar(50) Nvarchar(50) | 序列号 产品编号 产品类别编号 入库日期 出库日期 数量 生产日期 保质期 生产厂家 备注 |
五、界面设计
1、登录界面
图表 8
2、主界面
图表 9
3、商品基本信息维护主界面
图表 10
4、商品基本信息添加界面
图表 11
5、商品基本信息更新界面
图表 12
6、商品类别信息维护主界面
图表 13
7、商品类别信息添加界面
图表 14
8、商品类别信息更新界面
图表 15
9、商品库存查询分析主界面
图表 16
第六章:详细设计
一、类的设计
该系统一共设计六个类,由于在处理问题是,我们采用面向对象的处理策略,对于每一个数据库表结构,我们都在界面显示的时候构造一个对应于表和界面元素的类,同时还有一个数据库处理类,使得数据处理,SQL语句封装,界面操作,类自身的方法,都能够保持一定的封闭性,在这里体现了面向对象的思想(封装性)。
所有的前台显示工作有界面元素完成,各个类,负责吧数据提供出来,根据条件生成SQL语句,SQL语句的执行以及数据库的连接都在Sqlhelper中完成。同时保证一定的数据安全行。
- Products
该类负责界面显示产品基本信息的操作,以及各种关于产品的处理(增,删,改)。
class Products
{// 定义的属性此处省略
public void Save()
{ 数据校验();
//如果校验成功,则执行保存操作,否则,不予处理 }
private bool 数据校验()
{ //查看id是不是有重复
//查看name是不是有重复
}
public void Update()
{ //对产的更新 }
public static void DeleteItemByID(string _ID)
{ //删除某一种产品 }
public static List<Products> GetAllItems()
{ //返回所有产品列表 }
}
- ProductClass
该类负责处理有关商品类别的一切工作,例如增删改查。
namespace ERP大作业
{ class ProductClass
{ //定义的属性省略
public void Save()
{//执行保存操作 }
public void Update()
{ //执行更新操作 }
public static void DeleteByID(string _ID)
{ //通过编号删除记录 }
public static List<ProductClass> GetAllItems()
{//获得所有产品类别记录,同时返回列表类型 }
}
- Stock
该类负责处理有关总库存的所有处理,包括各种库存的查询。
namespace ERP大作业
{ class Stock
{ //定义的属性此处省略
public static List<Stock> GetAllItems()
{//获得所有的库存记录,同时返回列表格式 }
}
}
- StockChild
该类负责所有的 入库出库子系统记录。此为流水账,统计是求count即可。另外还有日期,范围等一系列条件。
namespace ERP大作业
{ class StockChild
{ //属性的定义省略
public static List<StockChild> GetAllItems()
{//获得所有的流水记录,同时返回列表格式
}
public static List<StockChild> GetItemsByDate(string DT)
{//获得一定日期以后的所有记录列表
}
public static List<StockChild> GetItemsByAmountRange(int _start,int _end)
{//获得一定范围内的所有记录,参数分别为起始数量
}
}
}
- User
这个类负责处理有关用户与登录系统的信息。与库存没有实质性的联系。是作为一个系统的安全与管理单位的。
namespace ERP大作业
{ class User
{ /// <summary>
/// 通过用户名查找是否有记录
/// </summary>
/// <param name="_name">需要查找的用户名</param>
/// <returns>false 代表没有记录,true 代表有记录。</returns>
public static bool FindByUserName(string _name)
{
}
/// <summary>
/// 用户确认
/// </summary>
/// <param name="_name">用户名</param>
/// <param name="_password">密码</param>
/// <returns>true :存在用户,false :不存在该用户。</returns>
public static bool UserAffirm(string _name, string _password)
{
}
public static void ChangePassword(string _name,string _oldstring,string _newstring)
{
}
public static void AddUser(string _name, string _password)
{
}
}
}
- Sqlhelper
此类负责处理有关数据的处理,比如存取,更新操作等。以及与数据库的链接。
namespace ERP大作业
{ class Sqlhelper
{
private static string sqlcon = "Data Source=.;Initial Catalog=ERP库存管理;Integrated Security=True";
public static DataSet ExecuteDataSet(string sql)
{ }
public static int ExectuteNonQuery(string sql)
{ } } }
二、界面设计
见前边的界面设计(以应用程序为准)。
三、测试用例设计
初始用户名:0,密码:0
先新增一个用户:admin 密码为:0
然后修改密码为:admin 然后登录测试
产品信息:
编号:0001,名称:电脑,公司:方正,规格:台,备注:空
新增(编号:0002,名称:轿车,公司:北京现代,规格:辆,备注:空)
产品类别信息:
编号:0001,产品类别:电器,包装粒度:箱,计算单位:台
新增(编号:0002,产品类别:车辆,包装粒度:箱,计算单位:辆)
库存字表(流水记录)
序列号:00001,产品编号:0001,产品类别编号:0001,入库日期:2011-6-12 ,出库日期:,数量:100,生产日期:2011-6-6 ,保质期:6年,生产厂家:方正
,备注:入库
新增(序列号:00002,产品编号:0002,产品类别编号:0002,入库日期:2011-6-10 ,出库日期:空,数量:10,生产日期:2010-6-6 ,保质期:16年,生产厂家:韩国现代
,备注:空)
库存表
产品编号:0001,产品类别编号:0001,当前数量:100,最大限额:150,最低限额:10,标志:空
新增(产品编号:0002,产品类别编号:0002,当前数量:10,最大限额:50,最低限额:2,标志:空)
第七章:实现与测试
一、程序实现
见程序压缩包
二、程序测试
用户登录:用户名:0,密码:0
图表 17
登录后,转入主界面:
图表 18
然后选择商品信息维护,就会跳出商品维护主界面:
图表 19
现在数据为空,插入一条记录:(调出新增商品信息)
编号:0001,名称:电脑,公司:方正,规格:台,备注:空
图表 20
点击保存之后,此窗体小时,同时返回商品基本信息主窗体:(同时新增的信息显示出来)
图表 21
点击更新商品信息,弹出更新窗体:
图表 22
将生产厂家更新为:戴尔,然后点击更新:
图表 23
图表 24
在新增一个记录:
图表 25
然后删除第二条信息:
图表 26
点击确定,然后删除。同时在把这条记录加进来,一边以后测试使用。
然后关闭这个子系统,然后测试下一个子系统商品类别信息维护。
图表 27
点击新增商品类别:
图表 28
点击保存:
图表 29
更新第一条记录:
图表 30
点击更新:
图表 31
然后就有:
图表 32
更新成功。
由于本系统没有提供入库,出库操作,因此库存文件的读写要手动修改数据库,为了下一步的测试,现手动插入三条记录分别是:
库存字表
序列号:00001,产品编号:0001,产品类别编号:0001,入库日期:2011-6-10 ,出库日期:,数量:100,生产日期:2011-6-6 ,保质期:6年,生产厂家:方正
,备注:入库
库存表
产品编号:0001,产品类别编号:0001,当前数量:100,最大限额:150,最低限额:10,标志:空
新增(产品编号:0002,产品类别编号:0002,当前数量:10,最大限额:50,最低限额:2,标志:空)
信息输入完成之后,现在开始测试库存查询分析功能:进入库存查询分析界面
图表 33
点击 查询所有商品库存:
图表 34
分批次查询,选择日期:2010-6-6
图表 35
按范围查询,输入范围:从10到20:
图表 36
第八章:运行与维护
硬件要求:X86 PC机;操作系统:Window XP;数据库服务器:SQL Server 2000;同时需要.net framework 2.0以上。
配置使用说明:为安全起见,文件解压后,放置到D盘根目录下(D:\),然后打开SQL Server2000的服务管理器,开启SQL Server服务。然后,开启SQL Server2000的企业管理器,找到数据库,加载上在刚才解压文件夹下的数据库文件。关闭企业管理器即可。