数据库课程设计仓库管理系统.docx

上传人:b****4 文档编号:11582844 上传时间:2023-03-19 格式:DOCX 页数:33 大小:4.34MB
下载 相关 举报
数据库课程设计仓库管理系统.docx_第1页
第1页 / 共33页
数据库课程设计仓库管理系统.docx_第2页
第2页 / 共33页
数据库课程设计仓库管理系统.docx_第3页
第3页 / 共33页
数据库课程设计仓库管理系统.docx_第4页
第4页 / 共33页
数据库课程设计仓库管理系统.docx_第5页
第5页 / 共33页
点击查看更多>>
下载资源
资源描述

数据库课程设计仓库管理系统.docx

《数据库课程设计仓库管理系统.docx》由会员分享,可在线阅读,更多相关《数据库课程设计仓库管理系统.docx(33页珍藏版)》请在冰豆网上搜索。

数据库课程设计仓库管理系统.docx

数据库课程设计仓库管理系统

福建工程学院

 

课程设计

 

课程:

数据库系统概论

题目:

仓库管理系统

专业:

计算机科学与技术

班级:

座号:

姓名:

 

2012年6月12日

一、系统定义

随着各个公司经营的范围慢慢扩大,业务流量比较大,需要处理的数据比较多,为了能对公司的业务进行有效的管理,减少手工操作的繁琐,同时可以根据公司业务的运营情况,分析出公司发展的潜在信息,顺应时代的发展变化,使管理更加简单化。

二、需求分析

1、最终仓库管理系统功能如下:

(1)资料管理功能

人员信息:

用于登记公司的员工信息资料、客户信息资料、和供应商信息资料,对员工信息资料支持员工信息的录入、修改和删除。

最高权限的管理员能录入和删除工作人员,普通权限的工作人员只能修改自己的密码

产品信息:

支持产品信息的录入、修改和删除,可以对各个产品进行查询。

(2)业务管理功能

进出仓库明细:

用于查看进货明细、进货退货、销售明细、销售退货、实现录入、修改和删除。

退货时,需要指定相应的退货单,可以查询进出仓库明细。

盘库:

通过人工清点当前库存物品,与理论上仓库内物品数量对比,分析盘盈、盘亏问题

(3)统计分析功能

物品分析:

用于对物品进行分析,主要是销售分析,包括对利润、进货、退货、库存等进行分析,可以通过报表显示。

人员分析:

由于需求加大,需要各种职务的工作人员,分析职务需求,可供人才参考

利润分析:

对产品销售的利润进行分析,可以看出货物的供求关系

(4)系统帮助功能:

制作人员介绍

使用帮助

2、给出系统的逻辑模型:

数据流程图、数据字典

数据流图例子(可根据需要用多层数据流图表示):

采购货物数据流图:

数据字典:

数据项:

仓库:

{仓库编号,仓库名,仓库类型,管理员,员工编号};

供应商:

{供应商编号,姓名,联系方式,地址};

供应商供应的货物存入仓库

数据结构:

供应商提供货物,存入相应的仓库

数据流:

需求的货物进入相应的仓库

数据存储:

产品描述,应付款

处理过程:

需求货物->送订单号->订单处理->付款->货物入库

管理数据流图:

数据字典:

数据项:

员工:

{员工编号,姓名,登录密码,性别,生日,联系方式,职称,家庭住址};

货物:

{货物编号,名称,类型,数量,单位,进价,售价,订单号};

管理员管理仓库和资料库

数据结构:

管理员进行相关的操作,显示相应的信息,或存储相应的物品、资料

数据流:

操作信息,操作数据,相关信息表

数据存储:

查询时将数据信息显示出来,入出库数据进行存储处理等等

处理过程:

管理员操作->获得操作信息->实行相应的处理

 

三、系统设计

1、概念结构设计

画出系统E-R图。

2、逻辑结构设计

将E-R图(或其他概念设计图)转换为具体的DBMS对应的关系模式。

员工:

{员工编号,姓名,登录密码,性别,生日,联系方式,职称,家庭住址};

货物:

{货物编号,名称,类型,单位,进价,售价};

仓库:

{仓库编号,仓库名,仓库类型,员工编号};

供应商:

{供应商编号,姓名,联系方式,地址};

客户:

{客户编号,货物编号,姓名,联系方式,地址,订单号};

库存:

{仓库编号,货物编号,数量}

进仓:

{入单号,进仓时间,入库数量,所付金额}

出仓:

{出单号,出仓时间,出库数量,所付金额}

盘库:

{盘库号,盘库时间,盘库数量}

数据库设计:

员工表

序号

字段名称

数据类型

大小

可否为空

主键

说明

1

staff_no

可变字符

10

员工编号

2

staff_password

可变字符

10

登录密码

3

staff_name

可变字符

10

员工姓名

4

staff_sex

字符

2

性别

5

staff_birthday

日期

 

出生日期

6

staff_phone

字符

15

联系方式

7

staff_rank

字符

10

职称

8

staff_family_address

可变字符

50

家庭住址

仓库表

序号

字段名称

数据类型

大小

可否为空

主键

说明

1

cangku_no

可变字符

10

仓库编号

2

cangku_name

可变字符

10

仓库名

3

cangku_type

可变字符

10

仓库类型

4

staff_no

可变字符

10

员工编号

货物表

序号

字段名称

数据类型

大小

可否为空

主键

说明

1

material_no

可变字符

10

货物编号

2

material_name

可变字符

10

货物名

3

material_type

可变字符

10

货物类型

4

material_in_price

可变字符

10

进价

5

material_out_price

可变字符

10

出价

6

material_unit

字符

4

单位

 

供应商表

序号

字段名称

数据类型

大小

可否为空

主键

说明

1

supplier_no

可变字符

10

供应商编号

2

material_no

可变字符

10

货物编号

3

supplier_name

可变字符

10

供应商姓名

4

supplier_phone

字符

15

联系方式

5

supplier_address

可变字符

50

住址

 

客户表

序号

字段名称

数据类型

大小

可否为空

主键

说明

1

kehu_no

可变字符

10

客户编号

2

kehu_name

可变字符

10

客户姓名

3

kehu_password

可变字符

10

登录密码

4

kehu_phone

字符

15

联系方式

5

kehu_address

可变字符

50

住址

进仓表

序号

字段名称

数据类型

大小

可否为空

主键

说明

1

rudan_no

整形

 

入单号

2

supplier_no

可变字符

10

供应商编号

3

material_no

可变字符

10

货物编号

4

in_data

日期

 

进仓时间

5

ru_qty

长整形

 

进仓数量

6

supp_pay

长整形

 

所付金额

7

staff_no

员工编号

10

员工编号

出仓表

序号

字段名称

数据类型

大小

可否为空

主键

说明

1

chudan_no

整形

 

出单号

2

kehu_no

可变字符

10

客户编号

3

material_no

可变字符

10

货物编号

4

out_data

日期

 

出仓时间

5

chu_qty

长整形

 

出仓数量

6

kehu_pay

长整形

 

所付金额

7

staff_no

员工编号

10

员工编号

库存表

序号

字段名称

数据类型

大小

可否为空

主键

说明

1

cangku_no

可变字符

10

仓库号

2

material_no

可变字符

10

货物编号

3

qty

长整形

 

数量

盘库表

序号

字段名称

数据类型

大小

可否为空

主键

说明

1

panku_no

可变字符

10

盘库号

2

staff_no

可变字符

10

员工编号

3

panku_date

日期

 

盘库日期

4

material_no

可变字符

10

货物编号

5

panku_qty

长整形

 

盘库数量

 

3、系统功能模块图

画出系统功能模块图,并对子模块功能进行详细说明。

四、详细设计

主要的SQL语句

--数据库的建立

CREATEDATABASEckgl

ONPRIMARY

(NAME='ckgl_data',

FILENAME='f:

\cg\ckgl_data.mdf',

SIZE=5mb,

FILEGROWTH=15%

LOGON

(NAME='ckgl_log',

FILENAME='f:

\cg\ckgl_log.ldf',

SIZE=2mb,

MAXSIZE=100mb,

FILEGROWTH=1MB

GO

--员工表

createtablestaff

staff_novarchar(10)primarykey,

staff_passwordvarchar(10)notnull,

staff_namevarchar(10)notnull,

staff_sexchar

(2)notnull,

staff_birthdaydatetime,

staff_phonechar(15)notnull,

staff_rankchar(10)notnull,

staff_family_addressvarchar(50),

go

--货物表

createtablematerial

material_novarchar(10)primarykey,

material_namevarchar(10)notnull,

material_typevarchar(10)notnull,

material_in_pricevarchar(10)notnull,

material_out_pricevarchar(10)notnull,

material_unitchar(4)notnull,

go

--仓库表

createtablecangku

cangku_novarchar(10)primarykey,

cangku_namevarchar(10)notnull,

cangku_typevarchar(10)notnull,

staff_novarchar(10)notnull,

foreignkey(staff_no)referencesstaff(staff_no),

Go

--库存表

createtablecunhuo

cangku_novarchar(10),

material_novarchar(10),

qtybigint,

primarykey(cangku_no,material_no),

foreignkey(cangku_no)referencescangku(cangku_no),

foreignkey(material_no)referencesmaterial(material_no),

--供应商表

createtablesupplier

supplier_novarchar(10),

material_novarchar(10),

supplier_namevarchar(10)notnull,

supplier_phonechar(15)notnull,

supplier_addressvarchar(50),

primarykey(supplier_no,material_no),

foreignkey(material_no)referencesmaterial(material_no),

--进仓表

createtablematerial_in

rudan_nointnotnull,

supplier_novarchar(10)notnull,

material_novarchar(10)notnull,

in_datadatetimenotnull,

ru_qtybigintnotnull,

supp_paybigintnotnull,

staff_novarchar(10)notnull,

foreignkey(supplier_no,material_no)referencessupplier(supplier_no,material_no),

foreignkey(staff_no)referencesstaff(staff_no),

--客户表

createtablekehu

kehu_novarchar(10)primarykey,

kehu_namevarchar(10)notnull,

kehu_passwordvarchar(10)notnull,

kehu_phonechar(15)notnull,

kehu_addressvarchar(50),

--出仓表

createtablematerial_out

chudan_nointnotnull,

kehu_novarchar(10)notnull,

material_novarchar(10)notnull,

out_datadatetimenotnull,

chu_qtybigintnotnull,

kehu_paybigintnotnull,

staff_novarchar(10)notnull,

foreignkey(kehu_no)referenceskehu(kehu_no),

foreignkey(material_no)referencesmaterial(material_no),

foreignkey(staff_no)referencesstaff(staff_no),

--盘库表

createtablepanku

panku_novarchar(10)notnull,

staff_novarchar(10)notnull,

panku_datedatetime,

material_novarchar(10)notnull,

panku_qtybigint,

foreignkey(material_no)referencesmaterial(material_no),

foreignkey(staff_no)referencesstaff(staff_no),

Go

建立进出仓的存储过程

入仓:

createprocedurematerial_in_pro

@rudan_noint,

@supplier_novarchar(10),

@material_novarchar(10),

@in_datadatetime,

@ru_qtybigint,

@supp_paybigint,

@staff_novarchar(10),

@outvarchar(20)='0'output

as

DECLARE@n1int

select@n1=count(material_no)frommaterial

wherematerial_no=@material_no

if(@n1=0)

begin

select@out='此物料不存在,如果要进仓,请先登记新物料信息!

'

return

end

else

begin

insertintomaterial_invalues(@rudan_no,@supplier_no,@material_no,@in_data,@ru_qty,@supp_pay,@staff_no)

updatecunhuosetqty=qty+@ru_qtywherematerial_no=@material_no

select@out='操作成功!

'

return

end

go

 

出仓:

createprocmaterial_out_pro

@chudan_noint,

@kehu_novarchar(10),

@material_novarchar(10),

@out_datadatetime,

@chu_qtybigint,

@kehu_paybigint,

@staff_novarchar(10),

@outvarchar(20)='0'output

as

DECLARE@n1int

select@n1=count(material_no)frommaterial

wherematerial_no=@material_no

if(@n1=0)

begin

select@out='此物料不存在!

'

return

end

else

begin

if@chu_qty>(selectqtyfromcunhuowherematerial_no=@material_no)

begin

select@out='库存数量不足!

'

return

end

else

begin

insertintomaterial_outvalues(@chudan_no,@kehu_no,@material_no,@out_data,@chu_qty,@kehu_pay,@staff_no)

updatecunhuosetqty=qty-@chu_qtywherematerial_no=@material_no

select@out='操作成功!

'

return

end

end

 

盘库:

procedureTForm4.Button8Click(Sender:

TObject);

begin

//insertintopanku(panku_no,staff_no,panku_date,material_no,panku_qty)

//select1,1001,'2012-4-1',material_no,qtyfromcunhuo

//将盘库结果插入到盘库表中

withdatamodule2.pankudo

begin

sql.clear;

sql.add('insertintopanku(panku_no,staff_no,panku_date,material_no,panku_qty)');

sql.add('select'''+edit4.text+''','''+combobox11.text+''','''+datetostr(datetimepicker4.datetime)+''',material_no,qtyfromcunhuo');

close;

execsql;

showmessage('盘库成功!

');

button8.enabled:

=false;

//一次登录不允许重复盘库,以免多占空间资源

end;

//显示本次盘库结果

withdatamodule2.panku1do

begin

sql.clear;

sql.add('select*frompanku,materialwherepanku.material_no=material.material_noandpanku_no='''+edit4.text+'''');

close;

open;

end;

end;

//盘库后盘库单号自动加1,便于下次盘库

procedureTForm4.FormCreate(Sender:

TObject);

varmax:

integer;

begin

withDataModule2.ADOQuery1do

begin

sql.Clear;

sql.Add('selectmax(panku_no)asmaxfrompanku');

close;

open;

max:

=DataModule2.ADOQuery1.fieldbyname('max').AsInteger;

edit4.Text:

=inttostr(max+1);

end;

End;

主要模块的程序流程图。

1、

2、

 

3、

 

4、

五、系统实现与测试

1、开发平台和工具选择

Deiphi7

SQL2005

2、系统测试

登录界面:

可以看到字体为动态形式,下面的诗为闪烁状态

主界面:

业务管理:

进仓开单后单号自动加1

盘库:

信息管理:

其中添加员工和删除员工只有人事管理员才能操作,如果是其他员工,则

客户资料:

供应商:

员工需求分析:

系统帮助:

客户登录进来购买:

客户改密:

六、课程设计总结

1、说明设计心得、想法建议等。

通过本次课程设计,我们了解到总体把握的重要性。

编写软件的前期准备非常重要,首先要进行需求分析,确定我们要完成什么功能。

紧接着,以需求为前提建立数据库,需要什么表,每个表里面要有那些元素,这个表在运用的时候具体会在哪个功能上使用到等等。

其次,前台入手,先将要实现的功能建立菜单放入主窗口,再将各个功能细分,分配到各个form窗口中去实现。

在与老师的交流沟通中,我们受益匪浅,明白了数据库后台设计的重要性。

依然记得老师给我们举得例子:

建立一个权限表,这样的话当员工的权限有变动的话就不需要去前台修改程序,而只要在后台把权限表做一定的修改,这样就可以省去了修改代码的麻烦。

还有触发器和储存过程的使用的优点,也是在老师的举例下获得更深刻的了解。

通过本次设计,我们明白了,对于数据库的学习,最主要的是实践,只有多上机练习,才能找到自己在哪方面欠缺,才能更好

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1