数据库课设报告 仓库管理系统Word格式文档下载.docx
《数据库课设报告 仓库管理系统Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《数据库课设报告 仓库管理系统Word格式文档下载.docx(43页珍藏版)》请在冰豆网上搜索。
SQLServer以其内置的数据复制功能、强大的管理工具、与Internet的紧密集成和开放的系统结构为广大的用户、开发人员和系统集成商提供了一个出众的数据库平台。
3.ADO.Net数据库访问技术
微软公司的ADO(ActiveXDataObjects)是一个用于存取数据源的COM组件。
它提供了编程语言和统一数据访问方式OLEDB的一个中间层。
允许开发人员编写访问数据的代码而不用关心数据库是如何实现的,而只用关心到数据库的连接。
访问数据库的时候,关于SQL的知识不是必要的,但是特定数据库支持的SQL命令仍可以通过ADO.Net中的命令对象来执行。
本系统采用目前比较流行的ADO.Net,并将每个数据库表的字段和操作封装到类中,从而成功地将面向对象的程序设计思想应用到数据库应用程序设计中。
六、概述
仓库系统能够有效地管理商品资源,控制商品出入库以及其各类统计,减少人工手工记录的麻烦,极大地帮助了减轻了仓库管理员的工作量,使得仓库管理变得智能化。
这个系统利用VisualStudio作为开发工具,MSSQLServer2000作为数据库管理系统,利用ADO.Net数据库访问技术,建立一个B/S架构的关系数据库系统。
通过系统的开发,让读者了解有关仓库管理系统的需求分析、设计和实现的完整过程,并且有利于掌握有关SQLServer2000数据库的技术,积累开发数据库应用系统的经验。
七、系统需求分析
仓库管理系统的用户是负责仓库商品出入库以及统计的管理员,该系统能够方便管理员对商品进行有效的管理,为仓库物力节省了人力物力上等资源。
系统包括了管理员登陆设置、商品信息入库、商品出库、商品退货、商品销售统计和商品库存统计等主要功能。
管理员登陆设置:
开设删除仓库和仓库管理员
商品信息入库:
商品信息添加至对应仓库数据库
商品出库:
出库商品信息添加至对应仓库数据库
商品退货:
退货商品信息添加至对应仓库数据库
商品销售统计:
统计数据库内商品销售的信息
商品库存统计:
统计数据库内商品剩余的信息
(1)仓库管理系统第一层数据流图
仓库管理系统根据登陆用户的不同,将自动跳转到相应面页。
1系统管理员
系统管理员实现对仓库的开设和相应级别管理员的设置。
2仓管员
包括总仓管和一般仓库管理员。
总仓管可以实现对所有仓库信息的统计和各仓库间商品的调拨。
一般仓库管理员只能对自己所管理的仓库的商品信息的操作,事实上对其他仓库的信息其无法得知。
图书借阅管理系统第一层数据流图
第一层数据流图通过反映了整个系统不同数据的流向,揭示系统的组成结构以及各组成部分之间的关系,这种关系主要体现在对数据的操作和处理上。
(2)出入库处理
在商品出入库操作中,首先填写或选择所需出入库的信息,进行检查,如果输入信息正确则进入下一步,如果无效则给操作者相应的提示,页面自动跳转。
具体操作的数据流图如下图所示:
出入库等操作的数据流图
(3)商品调拨处理
在商品调拨操作中,首先根据所需调拨商品所属仓库进行有效性判断,如果有效则进入下一步,如果是无效则给操作者相应的提示,页面自动跳转。
在商品调拨前后,商品调拨记录表以及调拨仓库的数据表中均插入数据操作记录,以便查询统计。
操作的数据流图如下图所示:
还书操作的数据流图
(5)在需求分析的最后,形成了以下与数据流图相配对的数据字典如下:
数据项:
serId
含义说明:
惟一标识一个用户
别名:
用户ID
长度:
15
取值范围:
字符型
数据结构:
商品
定义了一种商品的信息结构,也即是供操作的信息结构。
组成:
商品Id,商品名,商品类型,商品数量,供应商等
数据存储:
用户列表
说明:
表示各类仓库管理员的信息
数据分类:
系统管理员,总仓管,仓管员
用户Id,用户名,用户级别,所管理仓库
仓库列表
记录每一个仓库的情况
流入数据流:
仓库信息
流出数据流:
存取方式:
随机存取
处理过程:
仓库表
对应每个仓库的数据表
输入:
各仓库商品信息
输出:
商品出库信息
处理:
首先判断商品信息的可用性,然后执行所要求操作
(6)安全性与完整性要求:
安全性要求:
本系统中,首先给数据库添加Window用户,设置一位系统管理员;
通过管理员开设仓库和设置仓库管理员,管理员登陆后根据自身身份,跳转至相应页面,实现了访问数据库的权限。
完整性要求:
在数据库中对数据库所需要的表设置完整性约束,为各表设置表的主键,规定各表之间的关系,另外还需要设置一组外键。
其中,各表主键分别如下:
用户信息表UserList——主键userName
仓库信息表StoreList——主键storeName
调拨信息表ManagerTable——主键pId
(7)触发器建立仓库表
为了实现系统的自动化,和有效节省存储空间以及消除数据表的冗余,未设置的仓库一律不配数据库表,而只有当仓库开设成功后才建立相应的仓库表。
此动作在系统中是通过触发器来实现的。
触发器中建立仓库表,一旦该仓库给删除,后台代码同样有将该仓库表删除的操作。
建立的触发器如下:
CREATETRIGGERcreatnewONdbo.StoreList
AFTERINSERT
AS
declare@storeNamechar(15)
select@storeName=[storeName]frominserted
exec('
createtable'
+@storeName+'
(pIdintIDENTITY(1,1)NOTFORREPLICATIONNOTNULL,
pNamevarchar(15),
pKindvarchar(15),
pCountint,
pMinint,
pUnitvarchar(4),
pInfloat,
pOutfloat,
pBackfloat,
pTimedatetimenull,
pServevarchar(30),
pPersonvarchar(15),
pByervarchar(30),
pStatechar(8),
pRemarkvarchar(150)
)'
)
而在后台代码删除数据表的操作是通过以下代码实现的:
SqlConnectionconn=newSqlConnection(strConnect);
conn.Open();
stringdeleteid=StoreGrid.DataKeys[e.RowIndex].Value.ToString();
stringdatesql="
select*from"
+deleteid;
SqlCommandobjCmd1=newSqlCommand(datesql,conn);
SqlDataReadermyReader=objCmd1.ExecuteReader();
if(myReader.Read())
{
Response.Write("
<
script>
alert('
该仓库中还保存有货物,请先通过总仓管将货物调入其他仓库!
'
)<
/script>
"
);
return;
}
myReader.Close();
stringdropTable="
droptable"
+deleteid;
SqlCommandobjCmd2=newSqlCommand(dropTable,conn);
objCmd2.ExecuteNonQuery();
stringstrsql="
deletefromStoreListwherestoreName='
+deleteid+"
;
SqlCommandobjCmd3=newSqlCommand(strsql,conn);
objCmd3.ExecuteNonQuery();
conn.Close();
八、逻辑结构设计
(1)系统结构图
仓库管理系统的系统结构图如下所示:
(3)安全性和完整性设计
根据需求分析的说明,安全性设计是通过设置Windows用户以及SQL角色、对象等的权限来实现的,具体如下:
①新建数据库登陆用户:
②建立好用户后,给用户设置角色已经分配权限,因为超级管理员Administrator与普通管
理员rekku设计情况相类似,所以下面只引用Administrator作为例子。
3设置完用户属性后,还可以设置对象属性,给用户分配访问对象权限(以表BookInfo为例):
九、概念结构设计
E-R图为实体-联系图,提供了表示实体型、属性和联系的方法,用来描述现实世界的概念模型。
下面用E-R图来表示本仓库管理系统的概念结构设计。
①用户和仓库的E-R图
②仓库和仓库列表的分E-R图
十、数据库物理设计
(1)数据库存放位置:
在某些情况下,数据库管理员(dba)经常希望某个数据库会位于服务器数据文件夹之外。
这些情况通常是由于业务需要,如提高性能或扩展存储。
由于本数据库是在一台PC机建立的,基于扩展存储的考虑,本数据库的数据库文件与日志文件存放在不同分区当中。
如下所示:
数据库文件:
日志文件:
十一、数据库实施
(1)本图书借阅管理系统中,创建的数据库有如下数据库对象:
表StoreList
CREATETABLE[dbo].[StoreList](
[storeName][char](15)COLLATEChinese_PRC_CI_ASNOTNULL,
[storeArea][float]NULL,
[storeAddress][varchar](50)COLLATEChinese_PRC_CI_ASNULL,
[storeManager][varchar](20)COLLATEChinese_PRC_CI_ASNULL
)ON[PRIMARY]
GO
表ManagerTable
CREATETABLE[dbo].[ManagerTable](
[pId][int]IDENTITY(1,1)NOTFORREPLICATIONNOTNULL,
[pName][varchar](15)COLLATEChinese_PRC_CI_ASNULL,
[pKind][varchar](15)COLLATEChinese_PRC_CI_ASNULL,
[pCount][int]NULL,
[pTime][datetime]NULL,
[pPerson][varchar](30)COLLATEChinese_PRC_CI_ASNULL,
[pFrom][varchar](15)COLLATEChinese_PRC_CI_ASNULL,
[pTo][varchar](15)COLLATEChinese_PRC_CI_ASNULL,
[pRemark][varchar](150)COLLATEChinese_PRC_CI_ASNULL
GO
表UserList
CREATETABLE[dbo].[UserList](
[userId][varchar](15)COLLATEChinese_PRC_CI_ASNOTNULL,
[userPwd][char](16)COLLATEChinese_PRC_CI_ASNULL,
[userName][char](10)COLLATEChinese_PRC_CI_ASNULL,
[userFlag][int]NULL,
[userLevel][varchar](10)COLLATEChinese_PRC_CI_ASNULL
仓库表示例—触发器建立
CREATETABLE[dbo].[仓库三](
[pMin][int]NULL,
[pUnit][varchar](4)COLLATEChinese_PRC_CI_ASNULL,
[pIn][float]NULL,
[pOut][float]NULL,
[pBack][float]NULL,
[pServe][varchar](30)COLLATEChinese_PRC_CI_ASNULL,
[pPerson][varchar](15)COLLATEChinese_PRC_CI_ASNULL,
[pByer][varchar](30)COLLATEChinese_PRC_CI_ASNULL,
[pState][char](8)COLLATEChinese_PRC_CI_ASNULL,
(2)数据库备份和恢复方案:
(待完)
由于仓库管理过程中,商品流动量大,添加新商品的周期也不长,这些原因使得商品数量庞大,对流快速,这就要求数据库备份时,采用完全恢复方案。
完全恢复对所有的事务都进行了日志记录,当发生故障时,这种方案能够将数据库中每个提交的事务都还原到故障发生时的状态。
在这个完全恢复备份方案,具体设计为每个星期进行两次完全的数据库备份,除去这两天以外,在一个星期的其他几天的每个晚上都要进行差异备份。
此外,每个白天进行三次事务日志备份。
备份方案示意图:
星期五差异备份+事务日志备份
(3)系统首页
①用户登陆界面,在用户输入账户和密码的时候,将判断正确性,代码如下:
#region
stringpwds=userID.Text.ToString();
//MD5加密存储
byte[]pass=Encoding.UTF8.GetBytes(pwds);
MD5md5=newMD5CryptoServiceProvider();
stringstrPassword=Encoding.UTF8.GetString(md5.ComputeHash(pass));
SqlConnectionconn=newSqlConnection(strConnect);
select*fromUserListwhereuserId='
+userID.Text.Trim()+"
anduserPwd='
+strPassword+"
stringstosql="
selectstoreNamefromstoreListwherestoreManager='
+userID.Text.Trim()+"
SqlCommandobjCmd=newSqlCommand(strsql,conn);
SqlCommandobjCmd2=newSqlCommand(stosql,conn);
//objCmd.Connection.Close();
SqlDataReaderdr2=objCmd2.ExecuteReader();
stringlogStoreName="
if(dr2.Read())
logStoreName=dr2[0].ToString();
objCmd2.Connection.Close();
objCmd.Connection.Open();
SqlDataReaderdr=objCmd.ExecuteReader();
#endregion
if(dr.Read())
{//根据用户级别不同,自动导航到相应页面
stringlogUserId=dr[0].ToString();
Session["
userFlag"
]=dr["
];
if(Session["
].ToString()=="
0"
Response.Redirect("
AdminsetShow.aspx?
user="
+logUserId+"
&
store="
+logStoreName);
1"
MainManager.aspx?
+logUserId);
2"
SubManager.aspx?
else
//Response.Redirect("
Adminset.aspx"
用户名或密码错误!
}
新增仓库:
设置管理员:
退出系统将返回登陆界面:
②管理员进入后,可以进行仓库开设、仓管员设置等;
当前页面显示已经添加有若干信息:
③仓管员进入后界面如下:
点击左边导航栏,可以显示不同的信息操作界面:
如下:
//页面传值
logUserId=Request.QueryString["
user"
logStoreName=Request.QueryString["
store"
#region相应页面加载
flag"
]=="
InShow"
productInfoBind();
]=="
OutShow"
productOutBind();
BackShow"
productBackplBind();
SearchShow"
searchpKind.Items.Clear();
searchpByer.Items.Clear();
searchpSever.Items.Clear();
SellplBind();
RemainShow"
RemainplBind();
privatevoidproductOutBind()//商品出库页面
productInfo.Visible=false;
productOut.Visible=true;
productBackpl.Visible=false;
Sellpl.Visible=false;
Remainpl.Visible=false;
SqlCommandsc=newSqlCommand("
selectdistinctpName,pKind,pUnit,pServefrom"
+logStoreName,conn);