1、 SQLServer以其置的数据复制功能、强大的管理工具、与Internet的紧密集成和开放的系统结构为广大的用户、开发人员和系统集成商提供了一个出众的数据库平台。3.ADO.Net数据库访问技术微软公司的ADO (ActiveX Data Objects) 是一个用于存取数据源的COM组件。它提供了编程语言和统一数据访问方式OLE DB的一个中间层。允许开发人员编写访问数据的代码而不用关心数据库是如何实现的,而只用关心到数据库的连接。访问数据库的时候,关于SQL的知识不是必要的,但是特定数据库支持的SQL命令仍可以通过ADO.Net中的命令对象来执行。本系统采用目前比较流行的ADO.Net,
2、并将每个数据库表的字段和操作封装到类中,从而成功地将面向对象的程序设计思想应用到数据库应用程序设计中。六、概述仓库系统能够有效地管理商品资源,控制商品出入库以及其各类统计,减少人工手工记录的麻烦,极大地帮助了减轻了仓库管理员的工作量,使得仓库管理变得智能化。这个系统利用Visual Studio作为开发工具,MS SQL Server 2000作为数据库管理系统,利用ADO.Net数据库访问技术,建立一个B/S架构的关系数据库系统。通过系统的开发,让读者了解有关仓库管理系统的需求分析、设计和实现的完整过程,并且有利于掌握有关SQL Server 2000数据库的技术,积累开发数据库应用系统的经
3、验。七、系统需求分析 仓库管理系统的用户是负责仓库商品出入库以及统计的管理员,该系统能够方便管理员对商品进行有效的管理,为仓库物力节省了人力物力上等资源。系统包括了管理员登陆设置、商品信息入库、商品出库、商品退货、商品销售统计和商品库存统计等主要功能。管理员登陆设置: 开设删除仓库和仓库管理员商品信息入库: 商品信息添加至对应仓库数据库商品出库: 出库商品信息添加至对应仓库数据库商品退货: 退货商品信息添加至对应仓库数据库商品销售统计: 统计数据库商品销售的信息商品库存统计: 统计数据库商品剩余的信息(1)仓库管理系统第一层数据流图仓库管理系统根据登陆用户的不同,将自动跳转到相应面页。1系统管
4、理员系统管理员实现对仓库的开设和相应级别管理员的设置。2仓管员包括总仓管和一般仓库管理员。总仓管可以实现对所有仓库信息的统计和各仓库间商品的调拨。一般仓库管理员只能对自己所管理的仓库的商品信息的操作,事实上对其他仓库的信息其无法得知。 图书借阅管理系统第一层数据流图第一层数据流图通过反映了整个系统不同数据的流向,揭示系统的组成结构以及各组成部分之间的关系,这种关系主要体现在对数据的操作和处理上。(2)出入库处理在商品出入库操作中,首先填写或选择所需出入库的信息,进行检查,如果输入信息正确则进入下一步,如果无效则给操作者相应的提示,页面自动跳转。具体操作的数据流图如下图所示:出入库等操作的数据流
5、图(3)商品调拨处理在商品调拨操作中,首先根据所需调拨商品所属仓库进行有效性判断,如果有效则进入下一步,如果是无效则给操作者相应的提示,页面自动跳转。在商品调拨前后,商品调拨记录表以及调拨仓库的数据表中均插入数据操作记录,以便查询统计。操作的数据流图如下图所示: 还书操作的数据流图(5)在需求分析的最后,形成了以下与数据流图相配对的数据字典如下:数据项:serId含义说明:惟一标识一个用户别名:用户ID长度:15取值围:字符型数据结构:商品定义了一种商品的信息结构,也即是供操作的信息结构。组成:商品Id,商品名,商品类型,商品数量,供应商等 数据存储:用户列表说明:表示各类仓库管理员的信息数据
6、分类:系统管理员,总仓管,仓管员用户Id,用户名,用户级别,所管理仓库仓库列表记录每一个仓库的情况流入数据流:仓库信息流出数据流:存取方式:随机存取处理过程:仓库表对应每个仓库的数据表输入:各仓库商品信息输出:商品出库信息处理:首先判断商品信息的可用性,然后执行所要求操作(6)安全性与完整性要求:安全性要求:本系统中,首先给数据库添加Window用户,设置一位系统管理员;通过管理员开设仓库和设置仓库管理员,管理员登陆后根据自身身份,跳转至相应页面,实现了访问数据库的权限。完整性要求:在数据库中对数据库所需要的表设置完整性约束,为各表设置表的主键,规定各表之间的关系,另外还需要设置一组外键。其中
7、,各表主键分别如下:用户信息表UserList主键userName仓库信息表StoreList主键storeName调拨信息表ManagerTable主键pId(7)触发器建立仓库表为了实现系统的自动化,和有效节省存储空间以及消除数据表的冗余,未设置的仓库一律不配数据库表,而只有当仓库开设成功后才建立相应的仓库表。此动作在系统中是通过触发器来实现的。触发器中建立仓库表,一旦该仓库给删除,后台代码同样有将该仓库表删除的操作。建立的触发器如下:CREATE TRIGGER creatnew ON dbo.StoreList AFTER INSERT ASdeclare storeName char
8、(15)select storeName=storeName from insertedexec(create table +storeName+( pId int IDENTITY (1, 1) NOT FOR REPLICATION NOT NULL , pName varchar(15), pKind varchar(15), pCount int, pMin int, pUnit varchar(4), pIn float, pOut float, pBack float, pTime datetime null, pServe varchar(30), pPerson varchar
9、(15), pByer varchar(30), pState char(8), pRemark varchar(150)而在后台代码删除数据表的操作是通过以下代码实现的:SqlConnection conn = new SqlConnection(strConnect); conn.Open(); string deleteid = StoreGrid.DataKeyse.RowIndex.Value.ToString(); string datesql=select * from +deleteid ; SqlCommand objCmd1 = new SqlCommand(datesql
10、, conn); SqlDataReader myReader = objCmd1.ExecuteReader(); if (myReader.Read() Response.Write(alert(该仓库中还保存有货物,请先通过总仓管将货物调入其他仓库!); return; myReader.Close(); string dropTable = drop table + deleteid; SqlCommand objCmd2 = new SqlCommand(dropTable, conn); objCmd2.ExecuteNonQuery(); string strsql = dele
11、te from StoreList where storeName= + deleteid + ; SqlCommand objCmd3 = new SqlCommand(strsql, conn); objCmd3.ExecuteNonQuery(); conn.Close();八、逻辑结构设计(1)系统结构图仓库管理系统的系统结构图如下所示:(3)安全性和完整性设计根据需求分析的说明,安全性设计是通过设置Windows用户以及SQL角色、对象等的权限来实现的,具体如下:新建数据库登陆用户:建立好用户后,给用户设置角色已经分配权限,因为超级管理员Administrator与普通管理员rekk
12、u设计情况相类似,所以下面只引用Administrator作为例子。3设置完用户属性后,还可以设置对象属性,给用户分配访问对象权限(以表BookInfo为例):九、概念结构设计E-R图为实体-联系图,提供了表示实体型、属性和联系的方法,用来描述现实世界的概念模型。下面用E-R图来表示本仓库管理系统的概念结构设计。 用户和仓库的E-R图 仓库和仓库列表的分E-R图十、数据库物理设计(1)数据库存放位置:在某些情况下,数据库管理员 (dba) 经常希望某个数据库会位于服务器数据文件夹之外。这些情况通常是由于业务需要,如提高性能或扩展存储。由于本数据库是在一台PC机建立的,基于扩展存储的考虑,本数据
13、库的数据库文件与日志文件存放在不同分区当中。如下所示:数据库文件:日志文件:十一、数据库实施(1)本图书借阅管理系统中,创建的数据库有如下数据库对象:表StoreListCREATE TABLE dbo.StoreList ( storeName char (15) COLLATE Chinese_PRC_CI_AS NOT NULL , storeArea float NULL , storeAddress varchar (50) COLLATE Chinese_PRC_CI_AS NULL , storeManager varchar (20) COLLATE Chinese_PRC_C
14、I_AS NULL ) ON PRIMARYGO表ManagerTableCREATE TABLE dbo.ManagerTable ( pId int IDENTITY (1, 1) NOT FOR REPLICATION NOT NULL , pName varchar (15) COLLATE Chinese_PRC_CI_AS NULL , pKind varchar (15) COLLATE Chinese_PRC_CI_AS NULL , pCount int NULL , pTime datetime NULL , pPerson varchar (30) COLLATE Chi
15、nese_PRC_CI_AS NULL , pFrom varchar (15) COLLATE Chinese_PRC_CI_AS NULL , pTo varchar (15) COLLATE Chinese_PRC_CI_AS NULL , pRemark varchar (150) COLLATE Chinese_PRC_CI_AS NULL GO 表UserListCREATE TABLE dbo.UserList ( userId varchar (15) COLLATE Chinese_PRC_CI_AS NOT NULL , userPwd char (16) COLLATE
16、Chinese_PRC_CI_AS NULL , userName char (10) COLLATE Chinese_PRC_CI_AS NULL , userFlag int NULL , userLevel varchar (10) COLLATE Chinese_PRC_CI_AS NULL 仓库表示例触发器建立CREATE TABLE dbo.仓库三 ( pMin int NULL , pUnit varchar (4) COLLATE Chinese_PRC_CI_AS NULL , pIn float NULL , pOut float NULL , pBack float NU
17、LL , pServe varchar (30) COLLATE Chinese_PRC_CI_AS NULL , pPerson varchar (15) COLLATE Chinese_PRC_CI_AS NULL , pByer varchar (30) COLLATE Chinese_PRC_CI_AS NULL , pState char (8) COLLATE Chinese_PRC_CI_AS NULL ,(2)数据库备份和恢复方案:(待完)由于仓库管理过程中,商品流动量大,添加新商品的周期也不长,这些原因使得商品数量庞大,对流快速,这就要求数据库备份时,采用完全恢复方案。完全恢
18、复对所有的事务都进行了日志记录,当发生故障时,这种方案能够将数据库中每个提交的事务都还原到故障发生时的状态。在这个完全恢复备份方案,具体设计为每个星期进行两次完全的数据库备份,除去这两天以外,在一个星期的其他几天的每个晚上都要进行差异备份。此外,每个白天进行三次事务日志备份。备份方案示意图:星期五 差异备份+事务日志备份(3)系统首页 用户登陆界面,在用户输入账户和密码的时候,将判断正确性,代码如下: #region string pwds = userID.Text.ToString(); /MD5加密存储 byte pass = Encoding.UTF8.GetBytes(pwds);
19、MD5 md5 = new MD5CryptoServiceProvider(); string strPassword = Encoding.UTF8.GetString(md5.ComputeHash(pass); SqlConnection conn = new SqlConnection(strConnect);select * from UserList where userId= + userID.Text.Trim() + and userPwd= + strPassword + string stosql = select storeName from storeList wh
20、ere storeManager= + userID.Text.Trim() + SqlCommand objCmd = new SqlCommand(strsql, conn); SqlCommand objCmd2 = new SqlCommand(stosql, conn); /objCmd.Connection.Close(); SqlDataReader dr2 = objCmd2.ExecuteReader(); string logStoreName = if (dr2.Read() logStoreName = dr20.ToString(); objCmd2.Connecti
21、on.Close(); objCmd.Connection.Open(); SqlDataReader dr = objCmd.ExecuteReader(); #endregion if (dr.Read() /根据用户级别不同,自动导航到相应页面 string logUserId=dr0.ToString(); SessionuserFlag = dr; if (Session.ToString() = 0 Response.Redirect(AdminsetShow.aspx?user= + logUserId + &store= + logStoreName);1MainManager
22、.aspx? + logUserId);2SubManager.aspx? else /Response.Redirect(Adminset.aspx用户名或密码错误!新增仓库:设置管理员:退出系统将返回登陆界面: 管理员进入后,可以进行仓库开设、仓管员设置等;当前页面显示已经添加有若干信息: 仓管员进入后界面如下:点击左边导航栏,可以显示不同的信息操作界面:如下: /页面传值 logUserId = Request.QueryStringuser logStoreName = Request.QueryStringstore #region 相应页面加载flag =InShow produc
23、tInfoBind(); = OutShow productOutBind();BackShow productBackplBind();SearchShow searchpKind.Items.Clear(); searchpByer.Items.Clear(); searchpSever.Items.Clear(); SellplBind();RemainShow RemainplBind(); private void productOutBind() /商品出库页面 productInfo.Visible = false; productOut.Visible = true; productBackpl.Visible = false; Sellpl.Visible = false; Remainpl.Visible = false; SqlCommand sc = new SqlCommand(select distinct pName,pKind,pUnit,pServe from + logStoreName, conn); SqlDataReader myReader =
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1