资源描述
淮 海 工 学 院 计算机科学系
课程设计汇报
设计名称: 仓储物资管理系统
姓 名: 袁海燕 学 号: 5
专业班级: G计101
系 (院): 计算机工程学院
设计时间: .1.7--.1.18
设计地点: 计算机工程学院机房
成绩:
指导教师评语:
签名:
年 月 日
一、课程设计目
《数据库原理及应用》课程设计是计算机科学与技术专业集中实践性环节之一,是学习《数据库原理及应用》课程后进行一次全面综合练习。本课程设计重要在于加深学生对数据库基础理论和基本知识理解,掌握数据库应用系统设计开发基本措施,到达深入使学生综合运用所学知识和增强实际动手能力目。
二、课程设计任务与规定
2.1.课程设计任务
以Microsoft SQL Server R2作为后台数据库平台,以My Eclipse作为前台开发工具,完毕一种小型数据库应用系统设计开发。本次课程设计开发系统名称为仓储物资管理系统。
2.2.课程设计规定
通过对某企业仓储物资管理业务进行分析,调查,设计该企业仓储物资管理系统。重要实现如下功能:
基础信息管理功能:分为物品信息管理、员工信息管理、客户信息管理、供应商信息管理、仓库信息、供应信息。
进货管理管理功能:对库存进行查询,对于缺货或库存较少物品进行进货,对已到物品进行入库登记处理,并随时可查询入库登记,然后可生成入库报表。
库房管理功能:库房用于寄存物品,可以库存物品编号、仓库编号、库存数量等信息。新进物品要入库,可查询库存信息,盘点库存信息,对于已卖出物品,其在库存中数量要对应减少,对于被退回物品要重新入库,其对应得库存数量要增长,最终可生成库存报表。
销售管理功能:此功能对销售信息及物品进行处理。员工对已销售物品进行销售登记,同步更改物品库存信息,对于被退货物品要进行销售退货登记,同步更改该物品库存信息,系统可生成销售报表。
财务管理功能:系统可进行财务管理,可以让员工更好地理解到本单位财务状况,以便管理者可认为本部门更好地做出决策。系统可以记录当日销售物品资金状况,也可以记录当月销售物品资金状况。
记录功能:系统可进行各物品销售数量记录、所有员工销售额记录、所有物品库存记录、所有顾客购置物品记录。
三、设计阐明书
3.1概述
1、开发背景:通过对仓库物品零售、批发等工作深入调查,发现其业务重要包括物品销售、出入库管理、财务管理、人事管理等。仓储物资管理是一项琐碎、复杂而又十分细致工作。手工进行平常物品销售、出入库工作,轻易出现“开空单”现象,且呆账、错账时有发生,并且费时费力。本系统在设计中考虑和克服了上诉问题,实现了仓储物资管理工作系统化、规范化和自动化。
2、开发趋势:仓储物资管理系统数量众多,如今类似软件开发趋势重要表目前如下几点:风险最小化、提高效率、增强质量、提高可预测性、简化沟通、减少开销等。
3、可行性:在计算机技术飞速发展今天,计算机管理已经在诸多领域得到广泛应用。计算机化已成为各行各业现代化一种不可或缺原因。因此,仓储物资管理系统已成为管理中重要构成不分。目前诸多仓库信息管理还比较落后,劳动强度大且效率低,工作人员大量时间都消耗在繁杂事务上。因此,开发仓储物资管理系统将大大提高他们工作效率。物品管理是一种非常重要和繁杂事务,需要完毕物品购入、存储、销售等诸多操作,这就使得使用仓储物资管理系统来管理这样事务有着很好效果。
4.开发工具: 以Microsoft SQL Server R2作为后台数据库平台,以My Eclipse作为前台开发工具。
3.2系统需求分析
员工登陆:需要员工输入自己工号及密码,输入内容若与数据库中内容一致,则成功登陆系统,否则退出系统。
信息管理:为物品信息管理、员工信息管理、客户信息管理、供应商信息管理、仓库信息、供应信息。
进货管理:对于缺货或库存较少物品进行进货,对已到物品进行入库登记处理。
库房管理:库房用于寄存物品。新进物品要入库,可查询库存信息,盘点库存信息,对于已卖出物品,其在库存中数量要对应减少,对于被退回物品要重新入库。
销售管理:对销售信息及物品进行处理。员工对已销售物品进行销售登记,同步更改物品库存信息,对于被退货物品要进行销售退货登记,同步更改该物品库存信息,系统可生成销售报表。
财务管理:系统可以记录当日销售物品资金状况,也可以记录当月销售物品资金状况。还可进行各物品销售数量记录、所有员工销售额记录、所有物品库存记录、所有顾客购置物品记录。
3.3系统设计:
3.3.1.系统总体设计
1.基础信息管理
基础信息管理分为物品信息管理、员工信息管理、客户信息管理、供应商信息管理、仓库信息、供应信息。可对员工信息进行管理(包括添加新员工,查询、修改和删除员工信息)、添加物品信息、客户信息和供应商信息。
2.进货管理
对库存进行查询,对于缺货或库存较少物品进行进货,对已到物品进行入库登记处理,并随时可查询入库登记,然后可生成入库报表。
3.库房管理
库房用于寄存物品,可以库存物品编号、仓库编号、库存数量等信息。新进物品要入库,可查询库存信息,盘点库存信息,对于已卖出物品,其在库存中数量要对应减少,对于被退回物品要重新入库,其对应得库存数量要增长,最终可生成库存报表。
4.销售管理
此功能对销售信息及物品进行处理。员工对已销售物品进行销售登记,同步更改物品库存信息,对于被退货物品要进行销售退货登记,同步更改该物品库存信息,系统可生成销售报表。
5.财务管理
系统可进行财务管理,可以让员工更好地理解到本单位财务状况,以便管理者可认为本部门更好地做出决策。系统可以记录当日销售物品资金状况,也可以记录当月销售物品资金状况。系统可以对已退货物品进行财务处理。还可进行各物品销售数量记录、所有员工销售额记录、所有物品库存记录、所有顾客购置物品记录。
6.系统
系统重要用于对系统进行后期维护和改善,在这里没做太多处理,仅仅实现员工登陆功能和退出系统功能。
系统功能模块图如所示:
3.3.2仓储物资管理系统数据流图:
3.3.2.1数据流图
仓储物资管理系统中数据流重要贯穿于管理工作中业务操作流程之中,波及到员工登陆、进货、销售、退货、财务记录等。
图一 总数据流图
图二 进货管理流图
图三 销售管理流图
3.3.2.2数据流分析
仓储物资管理系统中数据流程重要描述如下:
员工登陆成功后可进行进货、物品入库、入库登记查询、库存查询、销售退货处理、销售查询、销售物品等操作。
3.3.3数据字典
数据字典是有关数据信息集合,也就是对数据流图中包括所有元素定义集合。数据流图和数据字典共同构成系统逻辑模型。
表3-1数据字典列表
数据存储名称:员工信息
数据来源:员工信息表
数据构成:员工信息=员工工号+姓名+性别+所属部门+家庭地址+联络电话+员工编号
数据位置:供员工基本信息编辑模块使用
描述:存储了系统管理人员信息
数据存储名称:客户信息
数据来源:客户信息表
数据构成:客户信息=客户编号+客户姓名+工作单位+联络地址+电话
数据位置:物品销售时使用
描述:存储了客户基本信息
数据存储名称:供应商信息
数据来源:供应商信息表
数据构成:供应商信息=供应商编号+企业名称+企业地址+邮政编码+联络电话
数据位置:进购物品时使用
描述:存储了供应商基本信息
数据存储名称:物品信息
数据来源:物品信息表
数据构成:物品信息=物品编号+物品名称+物品类型+参照价格+生产商+生产日期+有效期+规格+计量单位+员工编号
数据位置:物品进购、销售时使用
描述:存储了物品基本信息
数据存储名称:入库信息
数据来源:入库信息表
数据构成:入库信息=入库编号+物品编号+仓库编号+入库时间+入库数量
数据位置:物品入库时使用
描述:存储了入库物品基本信息
数据存储名称:库存信息
数据来源:库存信息表
数据构成:库存信息=仓库编号+物品编号+仓库编号+库存数量
数据位置:员工将物品入库和出库时使用
描述:存储了库存物品基本信息
数据存储名称:销售信息
数据来源:销售信息表
数据构成:销售信息=销售编号+物品编号+客户编号+销售日期+销售数量+销售金额
数据位置:物品销售、退货时使用
描述:存储了物品销售基本信息
数据存储名称:仓库信息
数据来源:仓库信息表
数据构成:仓库信息=仓库编号+仓库名称+员工工号
数据位置:存储物品时使用
描述:存储了仓库信息
数据存储名称:供应信息
数据来源:供应信息表
数据构成:供应信息=供应编号+供应商编号+物品编号
数据位置:购进物品时使用
描述:存储了供应信息
3.3.4数据库设计
3.3.4.1数据库概念构造设计:
本系统重要有员工、仓库、物品、客户、供应商五个实体集,一种员工能管理多种仓库,一种仓库只能有一种员工管理,两个实体集之间是一对多联络。一种员工可以可以销售多种物品,一种物品只可以由一种员工销售,两个实体集之间是一对多联络。一种物品可以存储在多种仓库,一种仓库可以存储多种物品,两个实体集之间是多对多联络。一种物品可由多种供应商供应,一种供应商可供应多种物品,两个褓集之间是多对多联络。一种物品被多种客户购置,一种客户可以购置多种物品,两个实体集之间是多对多联络。
本系统E-R图如图所示:
图3-2E-R关系图
实体包括:员工(系统顾客)、仓库、物品、客户、供应商
联络:记录(1:n)、管理(1:n)、购置(m:n)、供应(m:n)
图3-3员工实体图
员工实体属性:员工工号(主)、员工姓名、性别、联络电话、所属部门、家庭住址
图3-4客户实体图
客户实体属性:客户编号(主)、客户姓名、工作单位、联络电话、地址
图3-5供应商实体图
供应商实体属性:供应商编号(主)、企业名称、邮政编码、联络电话、企业名称
图3-6物品实体图
物品实体属性:物品编号(主)、物品名称、物品类型、参照价格、生产日期、有效期、规格、计量单位
图3-7仓库实体图
仓库实体属性:仓库编号(主)、仓库名称、员工工号
图3-8入库关系图
入库信息属性:【入库编号、物品编号(外)、仓库编号(外)】(主)、入库时间、入库数量
图3-9库存关系图
库存信息属性:【库存编号、物品编号(外)、仓库编号(外)】(主)、库存数量
图3-10销售关系图
销售信息属性:【销售编号、物品编号(外)、客户编号(外)】、销售日期、销售数量、销售金额、员工工号(外)
图3-11供应关系图
供应属性:供应编号(外)、供应商编号(外)、物品编号(外)
3.3.4.2数据库逻辑构造设计:
根据关系模型转换原则,上面E-R图可以转换为如下所示关系模型:
员工(员工工号,员工姓名,性别,所属部门,家庭地址,联络电话)
客户(客户编号,客户姓名,工作单位,联络电话,地址)
供应商(供应商编号,企业名称,企业地址,邮政编码,联络电话)
物品(物品编号,物品名称,物品类型,参照价格,生产日期,有效期,规格,计量单位,员工工号)
仓库(仓库编号,仓库名称,员工工号)
入库信息(入库编号,物品编号,仓库编号,入库时间,入库数量)
库存信息(库存编号,物品编号,仓库编号,库存数量)
销售信息(销售编号,物品编号,客户编号,销售日期,销售数量,销售金额)
供应(供应编号,供应商编号,物品编号)
通过以上E-R图设计和分析,可认为仓储物资管理系统创立9张数据表,分别如下表所示:
表3-1 员工表(User)
字段名
数据类型
与否容许为空
默认值
阐明
userID
varchar(50)
usid主键
userName
varchar(50)
员工姓名
sex
varchar(10)
√
性别
department
varchar(50)
√
所属部门
address
varchar(100)
√
家庭地址
telephone
varchar(50)
√
联络电话
mima
varchar(50)
√
登陆密码
表3-2 客户表(Customer)
字段名
数据类型
与否容许为空
默认值
阐明
cusID
varchar(50)
cusid主键
cusName
varchar(50)
客户姓名
company
varchar(50)
√
工作单位
address
varchar(100)
√
地址
telephone
varchar(50)
√
联络电话
表3-3 供应商表(Prodcom)
字段名
数据类型
与否容许为空
默认值
阐明
proID
varchar(50)
proid主键
proName
varchar(50)
供应商企业名称
address
varchar(100)
√
企业地址
postalcode
varchar(20)
√
邮政编码
telephone
varchar(50)
√
联络电话
表3-4 物品信息表(Wp)
字段名
数据类型
与否容许为空
默认值
阐明
wpID
varchar(50)
druid主键
wpName
varchar(50)
物品名称
wp_type
varchar(10)
√
医药类型
price
float
√
参照价格
produce_time
dateTime
√
生产日期
useful-life
int
√
有效期
spec
varchar(20)
√
规格
unitage
Varchar(10)
√
计量单位
表3-5 仓库信息表(Depot)
字段名
数据类型
与否容许为空
默认值
阐明
depotID
varchar(50)
depotid主键
depotName
varchar(50)
仓库名称
userID
varchar(50)
员工工号
表3-6 入库信息表(Import)
字段名
数据类型
与否容许为空
默认值
阐明
impID
varchar(50)
入库编号
wpID
varchar(50)
物品ID,外键
depotID
varchar(50)
仓库ID,外键
import_time
dateTime
√
入库时间
import_num
float
√
入库数量
表 3-7 库存信息表(Storage)
字段名
数据类型
与否容许为空
默认值
阐明
storID
varchar(50)
库存编号
wpID
varchar(50)
物品ID,外键
depotID
varchar(50)
仓库ID,外键
storage_num
float
√
库存数量
表 3-8 销售信息表(Sell)
字段名
数据类型
与否容许为空
默认值
阐明
sellID
varchar(50)
销售编号
wpID
varchar(50)
物品ID,外键
cusID
varchar(50)
客户ID,外键
sell_time
dateTime
√
销售时间
sell_num
float
√
销售数量
sell_money
float
√
销售金额
userId
varchar(50)
员工工号
表3-9 供应信息表(Provide)
字段名
数据类型
与否容许为空
默认值
阐明
provID
varchar(50)
供应编号
proID
varchar(50)
供应商,外键
wpID
varchar(50)
物品, 外键
3.4系统实行
3.4.1重要模块代码
(一)、进货管理
……
事件响应
{
……
getTextField();
从文本框中获取输入信息,待进行供应商信息处理、
物品信息处理、以及入库登记及入库处理
try{
con3=DriverManager.getConnection("jdbc:odbc:maen"," "," ");
sql3=con3.createStatement();
rs3=sql3.executeQuery("SELECT * FROM Import");
//连接数据库,查询Import表信息,留待进行比较和操作之用,详细怎样运用,在下面有阐明。
while(rs3.next())
{
String impID=rs3.getString(1);
String wpID=rs3.getString(2);
String depotID=rs3.getString(3);
if(impID.equals(ImpID)&&wpID.equals(WpID)&&depotID.equals(DepotID))
{
//查看入库信息中与否存在同样记录
c++;
}
}
if(c==0)//假如入库信息表中不存在同样记录,则进行登记
{Recode1="("+"'"+ImpID+"'"+","+"'"+WpID+"'"+","+"
'"+DepotID+"'"+","+"'"+Import_time+"'"+","+Import_num+")";
insertStr1="INSERT INTO Import VALUES"+Recode1;
sql3.executeUpdate(insertStr1);
jTextArea1.setText("");
jTextArea1.append("登记成功!"+"\n");
}
if(c!=0)//假如入库信息中存在该种记录则返回信息,提醒顾客问题所在
{jTextArea1.setText("");
jTextArea1.append("主键反复,请检查!"+"\n");
}
con3.close();
}
catch(SQLException es)
{System.out.println(es);
}
注:上面代码实现是入库信息登记,首先要到Import表中查询与否
存在相似登记,假如有相似信息,系统无法实现登记功能。
try{
con4=DriverManager.getConnection("jdbc:odbc:maen"," "," ");
sql4=con4.createStatement();
rs4=sql4.executeQuery("SELECT * FROM Storage");
while(rs4.next())
{
String storID=rs4.getString(1);
String wpID=rs4.getString(2);
String depotID=rs4.getString(3);
if(storID.equals(StorID)&&wpID.equals(WpID)&&depotID.equals(DepotID))
{ d++;
}
}
if(d==0)
{
Recode2="("+"'"+StorID+"'"+","+"'"+WpID+"'"+","+"'"+DepotID+"'"+","+Import_num+")";
insertStr2="INSERT INTO Storage VALUES"+Recode2;
sql4.executeUpdate(insertStr2);
jTextArea1.setText("");
jTextArea1.append("入库成功!"+"\n");
}
if(d!=0)
{jTextArea1.setText("");
jTextArea1.append("主键反复,请检查!"+"\n");
}
con4.close();
}
catch(SQLException es)
{
System.out.println(es);
}
}
注:上面代码重要实现物品入库功能,入库登记过物品必须入库,只有入库物品才能销售,物品入库之前要进行物品信息处理,以及供应商信息处理,并将处理信息写进物品信息表和供应商信息表。
(二)、销售管理
……
事件响应
{
……
获取文本框中信息,留待下面操作之用;
try{
con4=DriverManager.getConnection("jdbc:odbc:maen"," "," ");
sql4=con4.createStatement();
rs4=sql4.executeQuery("SELECT * FROM Sell");
while(rs4.next())
{
String sellID =rs4.getString(1);
String wpID=rs4.getString(2);
String cusID=rs4.getString(3);
if(xiaoshouid.equals(sellID)&&yaopinid.equals(wpID)&&kehuid.equals(cusID))
{
h++;
}
}
if(h==0)
{
Recode1="("+"'"+xiaoshouid+"'"+","+"'"+yaopinid+"'"+","+"'"+kehuid+"'"+","+"'
"+xiaoshoudate+"'"+","+xiaoshounum+","+yingfum+")";
insertStr1="INSERT INTO Sell VALUES"+Recode1;
sql4.executeUpdate(insertStr1);
area.append("登记成功!"+"\n");
}
if(h!=0)
{
area.setText("");
area.append("主键反复,请检查!"+"\n");
}
con4.close();
}
catch(SQLException es)
{
System.out.println(es);
}
注:上面代码重要实现销售登记功能,首先要到销售信息表中查询与否
存在相似登记,假如有相似信息,系统无法实现登记功能。
try{
double num=0;
con5=DriverManager.getConnection("jdbc:odbc:maen"," "," ");
sql5=con5.createStatement();
rs5=sql5.executeQuery("SELECT * FROM Storage");
while(rs5.next())
{
String storID=rs5.getString(1);
String wpID=rs5.getString(2);
String depotID=rs5.getString(3);
double storage_num=rs5.getDouble(4);
if(storID.equals(kucunid)&&wpID.equals(yaopinid)&&depotID.equals(cangkuid))
{
i++;
num=storage_num-xiaoshounum;
}
}
if(i!=0&&num>=0)
{
updateStr1="UPDATE Storage set storage_num="+num+
" WHERE storID = "+"'"+kucunid+"'"+"AND"+" druID="+"
'"+yaopinid+"'"+" AND"+" depotID="+"'"+cangkuid+"'";
sql5.executeUpdate(updateStr1);
area.setText("");
area.append("库存更改成功!"+"\n");
}
if(i==0)
{
area.setText("");
area.append("该仓库没有该种物品,或物品局限性!"+"\n");
}
con5.close();
}
catch(SQLException es)
{
System.out.println(es);
}
}
上面代码重要实现销售后库存更改功能,首先要到库存信息表中查询物品与否存在和数量与否充足,假如物品不充足,系统返回信息;若存在并且物品充足则更改库存信息。
四、设计成果
1.员工登陆
员工登陆界面:规定员工输入自己工号和密码,若输入对,则显示“登陆成功”对话框,并可以进行系统中其他操作;若输入不对则会弹出“登陆失败”对话框,并退出系统。
2.物品信息
物品界面:首先输入员工编号、物品编号、物品名称、物品类型、参照价格、生产日期、有效期、规格、计量单位,点击“录入”按纽,登记物品信息。点击“所有物品信息”可在查询成果中显示所有物品所有信息。也可以在查询方式中按物品编码或物品名称进行特定查询或删除。
对于物品录入应遵照下面流程:
(1)物品编号不能反复。
(2)物品编号与员工编号不能为空。
(3)员工编号必须存在,不能为不存在编号。
3.进货及入库登记
物品进货界面。首先输入物品编号,点击物品信息处理进入物品信息处理界面,登记物品信息;然后输入供应商编号,点击供应商信息处理进入供应商信息处理界面,登记供应商信息;最终输入入库编号、物品编号、仓库编号、入库时间、入库数量以及库存编号等信息,点击登记入库,这里将实现两个功能,一是物品入库登记,二是实现物品入库,生成库存报表。
对于物品进货遵照下面流程:
(1)进行供应商信息处理,如不存在该供应商,则需登记。
(2)进行物品信息处理,如不存在该种物品,则需登记。
(3)供应商信息登记完后,要进行物品入库登记,生成入库报表。
(4)物品登记后要对物品进行物品入库。
4.销售及销售信息登记
销售及销售信息登记界面。在销售之前首先需要物品编号,及销售数量,点击计算金额,应付金额将显示本次购置物品总金额;输入销售编号、销售日期、库存编号及实付金额,点击确定发售,找零文本框将显示找零金额;输入客户编号,点击客户登记,将进入客户信息界面进行客户信息处理;输入销售日期,点击销售登记,将完毕两种功能,一是进行销售信息登记,生成销售报表,二是修改库存信息。
对于物品销售遵照下面规定:
(1)销售物品存在并且到达销售数量,进行销售登记。
(2)销售退货时,物品要重新入库。
(3)前两者操作后将生成销售报表。
5.销售退货及退货处理
销售退货及退货信息处理界面。在确定退货之前首先需要输入库存编号、物品编号、仓库编号、退货数量、销售编号、客户编号,该操作若执行成功,将会修改销售表内容。在执行退货信息处理时,需要输入库存编号、物品编号、仓库编号、退货数量,若执行成功,则会显示“已经回库”,该操作将会修改库存表内容。
对于销售退货及退货信息处理需遵照下面规定:
(1)库存编号、物品编号、仓库编号、客户编号必须存在,并且退货数量不不小于等于该客户购置总数量。
(2)销售退货时,物品要重新入库。
五、设计心得
这次课程设计我选择了仓储物资管理系统,这个课程设计是综合性,这对我也是一种锻炼,我要用所学过数据库方面知识和软件工程方面知识来分析系统需求和其中实体关系。
在这次课程设计过程中,我首先对仓储物资管理进行了理解,也查询了诸多资料,仔细分析了该管理对系统功能规定,并根据这些功能规定对系统进行定义,确定系统必须做什么。之后着手对系统展开设计工作,首先是概念构造设计,根据需求分析成果总结系统内实体及联络并绘制系统局部ER图然后画出全局ER图。结合需求分析与概念构造设计把设计好ER图转换为DBMS所支持数据模型所符合逻辑构造,运用SQL数据库管理系统建好表和有关约束。
数据模型建立对于整个系统建设至关重要,假如刚开始建立不好,则后来工作会显相称苦难,总会出现修修改改现象,当然,这也和开始做需求有关。数据库建设还是有相称难度,数据库建设需要开发软件人员具有较高综合素质。不仅专业素质要强,对其他行业业务也要有较广泛理解。我在后期写代码过程中明显感觉到我数据库设计还存在某些问题,这些问题导致我在后期制作过程中碰到了不少麻烦。
在这次课程设计中虽然碰到过诸多困难,但我从中学到了诸多有用知识,通过不停翻阅资料,各个问题处理使我对系统设计越来越感爱好。相信我从这次课程设计所学到东西可以让我在后来学习及工作中受益无限。
参照资料:
[1] 单建魁、赵启升 数据库系统试验指导 清华大学出版社
[2] 耿祥义、张跃平 Java 2 实用教程(第三版) 清华大学出版社
[3] 吴其庆 Java综合实例经典 冶金工业出版社
[4] 张广彬、孟红蕊、张永宝 Java课程设计案例精编 清华大学出版社
[5] 刘军、张景安、赵慧勤、付文博 数据库应用系统开发技术 机械工业出版社
展开阅读全文