管理信息系统解决方案设计库存管理系统.docx
《管理信息系统解决方案设计库存管理系统.docx》由会员分享,可在线阅读,更多相关《管理信息系统解决方案设计库存管理系统.docx(35页珍藏版)》请在冰豆网上搜索。
管理信息系统解决方案设计库存管理系统
山东财经大学
课程设计报告
课程名称:
管理信息系统解决方案设计
开课学期:
2011至2012学年1学期
开课班级:
信息0902
指导老师:
刘位龙
完成时间:
2011年12月21日
课程设计名称:
库存管理系统的设计与开发
项目组长学号:
2009010339姓名:
茅学艳
成员学号:
2009010335姓名:
刘琳钰
学号:
2009010340姓名:
曲媛
任务贡献表
序号
姓名
班级
学号
E_mail
电话
签名
1
茅学艳
信息0902
2009010339
任务
贡献
界面设计,系统需求与功能分析,用例图绘制,系统数据库设计,程序设计,程序代码和文档整合,系统测试
2
刘琳钰
信息0902
2009010335
任务
贡献
分析系统需求与功能,绘制顺序图,系统数据库设计,
程序设计,文档整合,系统测设
3
曲媛
信息0902
2009010340
任务
贡献
界面设计,分析系统需求与功能,绘制用例图、类图、顺序图,系统数据库设计,程序设计,文档整合,系统测试,
1.系统概述
1.1背景
企业的库存物资管理往往是很复杂、很繁琐的。
由于所掌握的物资种类众多,订货、管理、发放的渠道各有差异,各个企业之间的管理体制不尽相同,各类统计报表繁多,因此仓库的库存管理必须编制一套库存管理信息系统,实现计算机化操作,而且必须根据企业的具体情况制定相应的方案。
由于超市的行业特殊性,产品种类繁多,业务量巨大,若仍然采用人工记账的方式,必然不能满足企业的需求,企业需要利用计算机来进行库存管理,因此需要构造一个库存管理系统。
1.2系统目标
库存管理系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。
对于前者要求建立起一个数据一致性和完整性强、数据安全性好的库;而对于后者则要求应用程序具有功能完备、易使用等特点。
实现对货品入库、出库、库存进行全面管理的各种功能。
在管理内容上,它的主要功能包括:
入库管理:
货品采购入库,入库单据的填写和修改货品明细表。
出库管理:
货品出库,出库单据的填写和修改货品明细表。
信息查询:
货品信息查询,库存信息查询。
缺货管理:
生成缺货单,查询缺货物品明细。
库存报废:
将报废物品删除
1.3系统需求规格说明
指定工具
编程工具:
visualstudio2008
数据库管理系统:
SQLserver2005
开发环境
操作系统:
windowsXP
.Net
测试环境
操作系统:
windowsXP
数据库管理系统:
SQLserver2005
2.系统分析
2.1用例建模
2.1.1识别参与者和用例
1.该库存管理系统的参与者主要是:
仓库管理员
2.该库存管理系统的用例有:
入库管理用例,出库管理用例,信息查询用例,缺货管理用例,库存报废用例
2.1.2绘制用例图
图2-1
2.1.3用例的描述
用例
登录
启动者
仓库管理员
支持者
主要流程:
1.仓库管理员输入相关信息(用户名,密码);
2.系统通过数据库中的管理员信息表判断密码是否正确;
3.登录至主界面。
替代流程:
若密码错误,返回密码错误窗口,显示“输入密码错误”;
企业规则:
仅有一个管理员,一个管理员仅对应一个密码
议题与其他
用例—登录
用例
入库管理
启动者
仓库管理员
支持者
主要流程:
1.仓库管理员填写入库单;
2.系统生成入库单;
3.系统修改货品明细表。
替代流程
企业规则:
议题与其他
用例-入库
用例
出库管理
启动者
仓库管理员
支持者
主要流程:
1.仓库管理员填写出库单;
2.系统生成出库单;
3.系统修改货品明细表。
用例-出库
用例
信息查询
启动者
仓库管理员
支持者
主要流程:
1.仓库管理员输入货品信息;
2.仓库管理员点击查询货品信息;
3.系统从货品明细表返回货品信息。
用例-信息查询
用例
缺货管理
启动者
仓库管理员
支持者
主要流程:
1.仓库管理员填写缺货单,系统生成缺货单;
2.仓库管理员点击查询,系统依缺货单返回缺货物品信息;
用例-缺货管理
用例
库存报废
启动者
仓库管理员
支持者
主要流程:
1.仓库管理员输入报废货品名称;
2.仓库管理员点击货品报废;
3.系统删除货品信息记录;
4.系统返回货品报废成功;
用例-库存报废
2.2类图建模
2.2.1识别对象和类
1.入库管理用例中,仓库管理员通过填写货品名称,货品编号,货品数量,进货价格,入库单号来生成入库单。
在此用例中,涉及到实体类仓库管理员类。
入库管理过程需要入库管理控制,由此必须存在一个入库管理控制类。
入库管理界面需要一个界面类来显示信息。
2.出库管理用例中,库管理员通过填写货品名称,货品编号,货品数量,进货价格,出库单号来生成出库单。
在此用例中,涉及到实体类仓库管理员类。
出库管理过程需要出库管理控制,由此必须存在一个出库管理控制类。
出库管理界面需要一个界面类来显示信息。
3.信息查询用例中,仓库管理员查询货品信息,具体信息必须存储在数据库中,获取信息需要实体类货品类。
在查询过程中需要查询控制类和查询界面类。
4.缺货管理用例中,仓库管理员填写货品名称、货品编号生成缺货单,并且可以缺货单的具体信息。
缺货单类就是该过程中的实体类,而缺货管理控制类和缺货界面类也是不可缺少的。
5.库存报废用例,仓库管理员通过填写已报废的货品名称在货品明细中删除该货品,无需创建实体类。
创建库存报废控制类和库存报废界面类。
2.2.2识别属性与操作
1.仓库管理员类(member):
属性:
用户名(usename),密码(password)
操作:
登录,验证账号密码是否正错(login())
2.货品类(ticket)
属性:
货品名称(productname),货品编号(productnumber),进货价格(importprice)货品价格(productprice)
操作:
1.查看货品信息(select())
2增加货品库存
3.减少货品库存
3.货品明细表(productlist)
属性:
货品名称(productname),货品编号(productnumber),货品数量(productquantity),进货价格(importprice)货品价格(productprice)
操作:
1.增删货品
2.查询货品明细
4.入库单(importlist)
属性:
货品名称(productname),货品编号(productnumber),货品数量(productquantity),进货价格(importprice)货品价格(productprice)
操作:
1.生成入库单2.填写入库单
5.出库单(emportlist)
属性:
货品名称(productname),货品编号(productnumber),货品数量(productquantity),货品价格(productprice)
操作:
1.生成出库单2.更改到货品明细表
6.缺货单(shortlist)
属性:
货品名称(productname),货品编号(productnumber)
操作:
1.生成缺货单2.查询缺货单
7.仓库管理员登录界面类
操作:
1.登录(用户名:
string,密码:
string)2.进入主界面
8.入库管理类
操作:
增加入库单
9.出库管理类
操作:
1.填写出库单2.生成出库单
10.信息查询类
操作:
查询货品信息
11.缺货管理类
操作:
1.生成缺货单2.查询缺货单
12.库存报废类
操作:
将报废货品删除
2.2.3绘制类图
图2-2
2.3顺序图建模
2.3.1“登录”用例
2.3.2“入库”用例
图2-3
2.3.3“出库”用例
图2-4
2.3.4“查询货品信息”用例
图2-5
2.3.5“缺货管理”用例
图2-6
2.3.6“货品报废”用例
图2-7
2.4状态图模型的建立
如下图:
图2-8
3.系统设计
3.1系统界面设计
图3-1
图3-2
图3-3
图3-4
图3-5
图3-6
图3-7
3.2系统数据库设计
1.数据库库存管理系统中的表
2.表的介绍
(1)LoginUser
图3-8
(2)ImportList
图3-9
(3)ExportList
图3-10
(4)ProductList
图3-11
(5)ShortList
图3-12
3.3包图模型
设计如下:
图3-13
4.系统设计
4.1程序设计
4.1.1实现入库功能的程序设计
1.model(入库)
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
namespacemodel
{
publicclassProduct
{publicProduct()
{}
#regionmodel
privateStringProductName;
privateStringProductNumber;
privateStringProductQuantity;
privateStringImportNumber;
privateStringImportPrice;
privateStringImportDate;
privateStringExportNumber;
privateStringProductPrice;
privateStringExportDate;
publicStringPName
{
get
{returnthis.ProductName;}
set
{this.ProductName=value;}
}
publicStringPNumber
{
get
{returnthis.ProductNumber;
}
set
{
this.ProductNumber=value;
}
}
publicStringPQuantity
{
get
{returnthis.ProductQuantity;}
set
{this.ProductQuantity=value;}
}
publicStringINumber
{get
{
returnthis.ImportNumber;
}
set
{
this.ImportNumber=value;
}
}
publicStringIPrice
{get
{returnthis.ImportPrice;
}
set
{this.ImportPrice=value;
}
}
publicStringIDate
{get
{returnthis.ImportDate;
}
set
{this.ImportDate=value;}
}
#endregionmodel
}
}
2.DAL(入库)
usingSystem;
usingSystem.Data.SqlClient;
usingSystem.Data;
usingmodel;
namespaceDAL
{
publicclassDAProduct
{
privateSqlConnectioncnn;
privatemodel.Productcus;
//localvariables
privateStringstrTable="";
privateStringstrFields="";
privateStringstrValues="";
privateStringinsertStr="";
//thisneedstobechangedbasedoncustomertablefields'Name
privateconstStringthisTable="ImportList";
privateconststringImportList_ImportNumber="ImportNumber";
privateconstStringImportList_ProductName="ProductName";
privateconststringImportList_ProductQuantity="ProductQuantity";
privateconststringImportList_ImportPrice="ImportPrice";
privateconststringImportList_ProductNumber="ProductNumber";
privateconststringImportList_ImportDate="ImportDate";
privateStringstrTable2="";
privateStringstrFields2="";
privateStringstrValues2="";
privateStringinsertStr2="";
privateconstStringthisTable2="ProductList";
privateconstStringProductList_ProductName="ProductName";
privateconstStringProductList_ProductQuantity="ProductQuantity";
privateconstStringProductList_ImportPrice="ImportPrice";
privateconstStringProductList_ProductNumber="ProductNumber";
publicDAProduct()
{
}
publicDAProduct(model.ProductProduct)
{
//Areferenceofthebusinessobjectclass
cus=Product;
}
publicvoidAdd1(model.Productcus)
{
strTable2="Insertinto"+thisTable2;
strFields2="("+ProductList_ProductName+
","+ProductList_ProductQuantity+
","+ProductList_ImportPrice+
","+ProductList_ProductNumber+")";
strValues2="Values('"+cus.PName+
"','"+cus.PQuantity+
"','"+cus.IPrice+
"','"+cus.PNumber+"')";
insertStr2=strTable2+strFields2+strValues2;
OpenCnn();
SqlCommandcmd2=newSqlCommand(insertStr2,cnn);
cmd2.ExecuteNonQuery();
CloseCnn();
strTable="Insertinto"+thisTable;
strFields="("+ImportList_ImportNumber+
","+ImportList_ProductName+
","+ImportList_ProductQuantity+
","+ImportList_ImportPrice+
","+ImportList_ProductNumber+
","+ImportList_ImportDate+")";
strValues="Values('"+cus.INumber+
"','"+cus.PName+
"','"+cus.PQuantity+
"','"+cus.IPrice+
"','"+cus.PNumber+
"','"+cus.IDate+"')";
insertStr=strTable+strFields+strValues;
OpenCnn();
SqlCommandcmd=newSqlCommand(insertStr,cnn);
cmd.ExecuteNonQuery();
CloseCnn();
}
publicvoidAdd4(model.Productcus)
{
OpenCnn();
stringselectStr1="updateProductListsetProductQuantity=ProductQuantity+'"+cus.PQuantity+"'whereProductName='"+cus.PName+"'";
SqlCommandcmd1=newSqlCommand(selectStr1,cnn);
cmd1.ExecuteNonQuery();
CloseCnn();
}
}
}
3.BLL(入库)
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Data;
usingDAL;
usingmodel;
namespaceBLL
{
publicclassBOProduct
{
privateDAL.DAProductcusData=newDAL.DAProduct();
publicBOProduct()
{
}
publicvoidAdd1(model.Productcus)
{
cusData.Add1(cus);
}
publicvoidAdd4(model.Productcus)
{
cusData.Add4(cus);
}
}
}
4.WindowsFormsApplication1(入库)
usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Windows.Forms;
namespaceWindowsFormsApplication1
{
publicpartialclassImportForm:
Form
{
publicImportForm()
{
InitializeComponent();
}
privatevoidbutton1_Click(objectsender,EventArgse)
{
try
{
model.Productcus=newmodel.Product();
cus.INumber=textBox1.Text.ToString();
cus.PName=textBox2.Text.ToString();
cus.PQuantity=textBox3.Text.ToString();
cus.IPrice=textBox4.Text.ToString();
cus.PNumber=textBox5.Text.ToString();
cus.IDate=textBox6.Text.ToString();
BLL.BOProductcus_bll=newBLL.BOProduct();
cus_bll.Add1(cus);
MessageBox.Show("入库单添加成功!
");
textBox1.Text="";
textBox2.Text="";
textBox3.Text="";
textBox4.Text="";
textBox5.Text="";
textBox6.Text="";
}
catch(Exceptionerr)
{MessageBox.Show(err.Message.ToString());}
}
privatevoidbutton2_Click(objectsender,EventArgse)
{MainFormMfrm=newMainForm();
Mfrm.Show();
this.Hide();}
privatevoidbutton3_Click(objectsender,EventArgse)
{try
{model.Productcus=newmodel.Product();
cus.INumber=textBox1.Text.ToString();
cus.PName=textBox2.Text.ToString();
cus.PQuantity=textBox3.Text.ToString();