1、五、详细设计说明书详细设计1引言 21.1 编写目的 21.2 项目背景 21.3 定义 21.4 参考资料 22总体设计 32.1 需求概述 .32.2 实现功能 .33主要界面设计 43.1 物资管理系统首页 .43.2 物资信息维护页面 .43.3 添加物资基本信息页面 .53.4 仓库信息维护页面 .53.5 物资信息修改页面 .53.6 存放规则维护页面 .63.7 修改密码页面 .63.8 人员信息维护页面 .73.9 修改员工信息页面 .73.10 余额查询页面 .83.11 添加仓库信息页面 .83.12 添加员工信息页面 .93.13 物资进出记录页面 .94功能模块设计与代
2、码实现分析 104.1 物资管理系统首页 .104.2 物资信息维护页面 .114.3 添加物资基本信息页面 .124.4 仓库信息维护页面 .134.5 物资信息修改页面 .154.6 存放规则维护页面 .174.7 修改密码页面 .184.8 人员信息维护页面 .204.9 修改员工信息页面 .204.10 余额查询页面 .224.11 添加仓库信息页面 .234.12 添加员工信息页面 .254.13 物资进出记录页面 .25五、详细设计说明书1引言1.1 编写目的物资管理系统的总目标是:在数据库和先进的开发平台上,利用现有资源,开发一个体系结构完善的、易扩充的、易维护的、具有良好人机交
3、互界面的物资管理系统,实现物资的计算机管理,提供完善的功能,为物资管理人员提供便利的工作方式。需求分析的目的是对问题进行分析,以及根据对所选择的开发工具的了解,分析系统的总体需求,较好地完成任务。1.2 项目背景为了适应日趋激烈的市场竞争,不论是企业还是其他具有物资储备的公司都需要对自身的储备状况有充分的了解,并通过有效的管理不断提高效率。因此,对物资的管理也成为提高生产效率的一个重要途径。本物资管理系统是针对物资的基本信息管理和出入库登记和查询统计等方面工作而开发的管理软件,是一个实用的管理信息系统,针对企业的实际需要,分析了物资管理系统的功能,并以入库管理和出库管理为重点,描述了两子系统的
4、模块结构设计及实施过程中的技术要点,实现物资的基本信息管理、出入库管理、查询管理及用户管理等功能。同时,还对代码维护及库存余额管理等做了设计。用户可以通过相应的模块,对物资基本情况进行更新、删除和查询,对物资出库和入库进行管理,对出入库明细进行查询,对出库,入库,和材料的库存余额进行报表生成,对使用该系统的用户进行更新、删除和查询,对库存数量进行查询,还有操作员管理,权限设置,密码修改,数据备份与系统恢复等其他系统管理功能。1.3 定义物资管理系统1.4 参考资料Visual C#编程技术与实例软件工程五、详细设计说明书2总体设计2.1 需求概述1.物资供应管理软件的最终目标是在保证企业生产经
5、营管理正常进行的前提下,最大限度地简化日常事务,降低原材料成本和运营成本,降低库存和占用资金,增加企业的流动资金,减少财务收支差错或延误,使物资管理人员把更多的精力集中在诸如供应商选择、合同谈判和效益分析等战略性决策任务上。2.用计算机管理物资不能照搬照抄人工管理模式,变成人工管理的翻版,而是要根据物资管理的目标对人工管理的业务流程进行优化、合理化、科学化,要超越当前的业务,抽象出业务中的管理思想和规律。 3.要让物流、资金流、数据流、控制流畅通并形成一个完整的闭环反馈系统。整个物资供应管理系统要以计划和控制为主线,充分体现物流、资金流、信息流、控制流有机集成的管理思想。同时,物资的管理效率就
6、体现在对信息的采集、传递、处理加工过程中,信息流是物资供应管理过程的影象。 4.要有丰富的监控、考核、管理功能,做到事先有计划,事中有控制,事后有核算,要求每一个业务过程都要为领导(综合管理)提供丰富的决策信息和考核数据。2.2 实现功能需要实现的功能如下: 有关物资基本信息的输入。 物资基本信息的查询与修改。 入库物资信息的输入。 入库物资信息的查询与修改。 出库物资信息的输入。 出库物资信息的查询与修改。 物资余额信息的查询。 物资余额信息的浏览。五、详细设计说明书3主要界面设计3.1 物资管理系统首页3.2 物资信息维护页面五、详细设计说明书3.3 添加物资基本信息页面3.4 仓库信息维
7、护页面3.5 物资信息修改页面五、详细设计说明书3.6 存放规则维护页面3.7 修改密码页面五、详细设计说明书3.8 人员信息维护页面3.9 修改员工信息页面五、详细设计说明书3.10 余额查询页面3.11 添加仓库信息页面五、详细设计说明书3.12 添加员工信息页面3.13 物资进出记录页面五、详细设计说明书4功能模块设计与代码实现分析4.1 物资管理系统首页物资管理系统首页具有自动导航的功能,不同用户登录,根据其不同的身份,将进入不同的系统功能页,系统分 3 类用户:系统管理员、仓库管理员、采购员。在用户身份验证通过后,系统由 Session 变量记录其用户号、用户身份,伴随用户对系统进行
8、操作的整个生命周期。以下给出物资管理系统首页(login.aspx.cs)的后台支持类的主要代码。前台脚本代码 login.aspx 可以通过.NET 集成开发环境,依照所给界面设计方案可以完成。主要代码如下:private void btn_login_Click(object sender, System.EventArgs e)/从文件Web.config 中读取连接字符串string strconn= ConfigurationSettings.AppSettings“dsn“;/连接本地计算机的物资管理数据库SqlConnection cn= new SqlConnection (s
9、trconn);cn.Open ();/构造SQL语句,该语句在Users 表中检查用户名和密码是否正确string mysql= “select * from 管理员 where id=“+tbx_uid.Text +“and 密码=“+tbx_upassword.Text +“;/创建Command对象SqlCommand cm=new SqlCommand (mysql,cn);/执行ExecuteReader ()方法SqlDataReader dr=cm.ExecuteReader ();if(dr.Read ()lbl_message.Text= “;/保存当前用户名及用户权限Se
10、ssion“Uid“=dr“id“.ToString ();Session“Ugrade“=dr“权限“.ToString ();lbl_message.Text=“欢迎您!“+Session“uid“;if(Session“Ugrade“.ToString ()=“1“) /进入系统管理员界面Response.Redirect (“wzmanage.aspx“);else if(Session“Ugrade“.ToString ()=“2“) /进入仓库管理员界面Response.Redirect (“iomanage.aspx“);五、详细设计说明书else if(Session“Ugra
11、de“.ToString ()=“3“) /进入仓库采购员界面Response.Redirect (“orderlist.aspx“);elselbl_message.Text =“对不起,您的用户名/密码不正确 ,请重新输入“;4.2 物资信息维护页面物资信息维护页面是物资管理系统中的主要部分,主要负责所有物资信息的浏览,以及物资维护其他页面的链接,用户也可以根据物资号直接查到该货物详单。物资信息维护页面后台支持类(wzmanage.aspx.cs)主要代码如下:public void DataGrid_Delete(Object sender,DataGridCommandEventArg
12、s E)try/从文件Web.config中读取连接字符串string strconn= ConfigurationSettings.AppSettings“dsn“;/连接本地计算机的WMS数据库SqlConnection cn= new SqlConnection (strconn);cn.Open ();SqlCommand cm=new SqlCommand (“wzdelete“,cn);cm.CommandType =CommandType.StoredProcedure ;cm.Parameters .Add (“GID“,SqlDbType.Int );/从DateGrid 中
13、取得更新内容/Cells 1为GID列cm.Parameters “GID“.Value =Convert.ToInt32 (E.Item.Cells 1.Text .ToString ();cm.ExecuteNonQuery ();dgd_goodsmanage.EditItemIndex =-1;BindGrid();catchResponse.Write (“删除物资基本信息错误!请先把该物资其他相关信息删除!“);Response.End ();五、详细设计说明书public void DataGrid_Page(Object sender,DataGridPageChangedEv
14、entArgs E)dgd_goodsmanage.CurrentPageIndex =E.NewPageIndex ;BindGrid();private void btn_search_Click(object sender, System.EventArgs e)tryint vargid=Convert.ToInt32 (tbx_gid.Text .ToString ();Response.Redirect (“wzmodify.aspx?gid=“+vargid);catchResponse.Write (“输入的物资编号不正确!“);Response.End ();4.3 添加物资
15、基本信息页面物资信息添加页面主要负责往数据库中添加数据,后台使用 btn-submit-Click 函数进行处理,负责当用户单击“添加”按钮后的数据库添加操作。以后是物资信息添加页面的后台支持类(wzadd.aspx.cs)的主要相关代码。private void btn_submit_Click(object sender, System.EventArgs e)if(Page.IsValid )/从文件Web.config中读取连接字符串string strconn= ConfigurationSettings.AppSettings“dsn“;/连接本地计算机的物资管理数据库SqlCon
16、nection cn= new SqlConnection (strconn);cn.Open ();/先取得GOODS 表上表示列的初始值string getInsertID=“select Max(物资编号) from 物资基本信息“;SqlCommand cm0=new SqlCommand (getInsertID,cn);SqlDataReader dr=cm0.ExecuteReader ();dr.Read ();int Vargid;if(dr0.ToString ()=“) Vargid=1;/表初始为空的情况else Vargid=Convert.ToInt32 (dr0.
17、ToString()+1 ;/表中已有五、详细设计说明书数据的情况cm0.Connection .Close ();/利用Command对象调用存储过程SqlCommand cm=new SqlCommand (“wzadd“,cn);/将命令类型转为存储类型cm.CommandType =CommandType.StoredProcedure ;try/添加并给参数付值cm.Parameters .Add (“Gid“,SqlDbType.BigInt );cm.Parameters .Add (“Gname“,SqlDbType.Char);cm.Parameters .Add (“Ggu
18、ige“,SqlDbType.Char);cm.Parameters .Add (“Gkind“,SqlDbType.Char );cm.Parameters .Add (“Gdanwei“,SqlDbType.Char );cm.Parameters .Add (“Gprice“,SqlDbType.Money );cm.Parameters “Gid“.Value =Vargid;cm.Parameters “Gname“.Value =tbx_name.Text.ToString();cm.Parameters “Gguige“.Value =tbx_guige.Text .ToStri
19、ng ();cm.Parameters “Gkind“.Value =tbx_kind.Text .ToString ();cm.Parameters “Gdanwei“.Value =tbx_danwei.Text .ToString ();cm.Parameters “Gprice“.Value =Convert.ToDouble (tbx_price.Text .ToString ();cm.Connection .Open ();cm.ExecuteNonQuery ();catchResponse.Write (“对不起输入信息中存在不合要求信息,请重输!“);Response.En
20、d ();4.4 仓库信息维护页面仓库信息维护页面是物资管理系统中的一个部分,主要负责所有仓库信息的浏览、编辑、更新以及删除,用户也可以通过链接来添加新仓库信息,即跳转到 chadd.aspx 页面。物资信息维护页面后台支持类(wzmanage.aspx.cs)主要代码如下:public void DataGrid_Update(Object sender,DataGridCommandEventArgs E) /从文件Web.config中读取连接字符串string strconn= ConfigurationSettings.AppSettings“dsn“;五、详细设计说明书/连接本地计
21、算机的WMS数据库SqlConnection cn= new SqlConnection (strconn);cn.Open ();SqlCommand cm=new SqlCommand (“ckmodify“,cn);/将命令类型转为存储类型cm.CommandType =CommandType.StoredProcedure ;/往cm中添加参数cm.Parameters .Add (“WID“,SqlDbType.Int );cm.Parameters .Add (“WName“,SqlDbType.VarChar);cm.Parameters .Add (“WArea“,SqlDbT
22、ype.Float );cm.Parameters .Add (“WAddress“,SqlDbType.VarChar);/总体判断是否输入有误try /从DateGrid中取得更新内容,Cells 0为WID列,以下照此cm.Parameters “WID“.Value =Convert.ToInt32 (E.Item.Cells0.Text .ToString ();cm.Parameters “WName“.Value =(TextBox)E.Item.Cells1.Controls 0).Text .ToString ();cm.Parameters “WArea“.Value =C
23、onvert.ToInt32 (TextBox)E.Item.Cells2.Controls 0).Text .ToString ();cm.Parameters “WAddress“.Value =(TextBox)E.Item.Cells3.Controls 0).Text .ToString ();/从DateGrid中取得更新内容cm.ExecuteNonQuery ();catchResponse.Write (“输入数据有误,请确定或重输“);Response.End ();dgd_ckmanage.EditItemIndex =-1;BindGrid();public void
24、DataGrid_Delete(Object sender,DataGridCommandEventArgs E)try/从文件Web.config中读取连接字符串string strconn= ConfigurationSettings.AppSettings“dsn“;/连接本地计算机的WMS数据库SqlConnection cn= new SqlConnection (strconn);cn.Open ();SqlCommand cm=new SqlCommand (“ckdelete“,cn);五、详细设计说明书cm.CommandType =CommandType.StoredPro
25、cedure ;cm.Parameters .Add (“WID“,SqlDbType.VarChar );/从DateGrid中取得更新内容/Cells 0为WID列cm.Parameters “WID“.Value =Convert.ToInt32 (E.Item.Cells 0.Text .ToString ();cm.ExecuteNonQuery ();dgd_ckmanage.EditItemIndex =-1;BindGrid();catchResponse.Write (“删除仓库基本信息错误!请先把该仓库其他相关信息删除!“);Response.End ();4.5 物资信息
26、修改页面本页面增加了支持这两个空间的数据库操作代码,由于这是一个信息修改界面,系统必须提供原始数据记录,在 Page_Load 函数里,添加了实现各个文本框初始数据绑定的程序代码。以下是物资信息修改页的后台支持类(wzmodify.aspx.cs)的主要相关代码:private void Page_Load(object sender, System.EventArgs e)/ 在此处放置用户代码以初始化页面if(!IsPostBack)/从文件Web.config中读取连接字符串string strconn= ConfigurationSettings.AppSettings“dsn“;/连
27、接本地计算机的物资管理数据库SqlConnection cn= new SqlConnection (strconn);cn.Open ();SqlCommand cm=new SqlCommand (“wzdetail“,cn);cm.CommandType =CommandType .StoredProcedure ;cm.Parameters .Add (“Gid“,SqlDbType.Int );cm.Parameters “Gid“.Value =Convert.ToInt32 (Request.QueryString “gid“.ToString ();SqlDataReader
28、dr=cm.ExecuteReader ();if(dr.Read ()/存在对应项lbl_id.Text =dr“物资编号“.ToString ();五、详细设计说明书tbx_name.Text =dr“物资名称“.ToString ();tbx_guige.Text =dr“规格型号“.ToString ();tbx_kind.Text=dr“种类“.ToString ();tbx_danwei.Text=dr“计量单位“.ToString ();tbx_price.Text=dr“单价“.ToString ();elseResponse.Write (“对不起,没有该产品信息“);Res
29、ponse.End ();private void btn_modify_Click(object sender, System.EventArgs e)if(Page.IsValid )/从文件Web.config中读取连接字符串string strconn= ConfigurationSettings.AppSettings“dsn“;/连接本地计算机的WMS数据库SqlConnection cn= new SqlConnection (strconn);cn.Open ();/利用Command对象调用存储过程SqlCommand cm=new SqlCommand (“wzmodify
30、“,cn);/将命令类型转为存储类型cm.CommandType =CommandType.StoredProcedure ;/添加并给参数付值cm.Parameters .Add (“Gid“,SqlDbType.BigInt );cm.Parameters .Add (“Gname“,SqlDbType.Char);cm.Parameters .Add (“Gguige“,SqlDbType.Char);cm.Parameters .Add (“Gkind“,SqlDbType.Char );cm.Parameters .Add (“Gdanwei“,SqlDbType.Char );cm
31、.Parameters .Add (“Gprice“,SqlDbType.Money );cm.Parameters “Gid“.Value =Convert.ToInt32 (lbl_id.Text .ToString ();cm.Parameters “Gname“.Value =tbx_name.Text.ToString();cm.Parameters “Gguige“.Value =tbx_guige.Text .ToString ();cm.Parameters “Gkind“.Value =tbx_kind.Text .ToString ();cm.Parameters “Gda
32、nwei“.Value =tbx_danwei.Text .ToString ();cm.Parameters “Gprice“.Value =Convert.ToDouble (tbx_price.Text .ToString ();cm.ExecuteNonQuery ();/关闭连接cn.Close();五、详细设计说明书Response.Redirect(“wzmanage.aspx“);private void btn_delete_Click(object sender, System.EventArgs e)try/从文件Web.config中读取连接字符串string strc
33、onn= ConfigurationSettings.AppSettings“dsn“;/连接本地计算机的物资管理数据库SqlConnection cn= new SqlConnection (strconn);cn.Open ();SqlCommand cm=new SqlCommand (“wzdelete“,cn);cm.CommandType =CommandType.StoredProcedure ;cm.Parameters .Add (“GID“,SqlDbType.BigInt );/从lbl_gid取得GID 值cm.Parameters “GID“.Value =Conve
34、rt.ToInt32 (lbl_id .Text .ToString ();cm.ExecuteNonQuery ();/关闭连接cn.Close();Response.Redirect(“wzmanage.aspx“);catchResponse.Write (“删除物资基本信息错误!请先把该物资其他相关信息删除!“);Response.End ();4.6 存放规则维护页面物资存放规则维护页面与物资信息维护页面功能上差不多,只是对信息的修改方式不同,物资信息有专门的页面负责信息修改。存放规则维护是对“关系”的维护,而物资关系维护是对“实体”的维护。在程序中使用了一个比较简单的方法总体判断输
35、入的有效性,try-catch 方法只要有一个输入无效,则 try程序中的转换代码将产生 catch 中断,可以在catch语句中加入提示输入码,完成总体有效性检查。以下是存放规则维护页面的后台支持类(gzanage.aspx.cs)的主要相关代码:public void DataGrid_Edit(Object sender,DataGridCommandEventArgs E)五、详细设计说明书dgd_gzmanage.EditItemIndex =(int)E.Item .ItemIndex ;BindGrid();public void DataGrid_Cancel(Object s
36、ender,DataGridCommandEventArgs E)dgd_gzmanage.EditItemIndex =-1;BindGrid();public void DataGrid_Update(Object sender,DataGridCommandEventArgs E)string strconn= ConfigurationSettings.AppSettings“dsn“;SqlConnection cn= new SqlConnection (strconn);cn.Open ();SqlCommand cm=new SqlCommand (“gzmodify“,cn)
37、;/将命令类型转为存储类型cm.CommandType =CommandType.StoredProcedure ;/往cm 中添加参数cm.Parameters .Add (“ID“,SqlDbType.Int );cm.Parameters .Add (“MAX“,SqlDbType.Int );cm.Parameters .Add (“MIN“,SqlDbType.Int );/总体判断是否输入有误try /从DateGrid 中取得更新内容 ,Cells 0为WID列, 以下照此cm.Parameters “ID“.Value =E.Item.Cells0.Text .ToString
38、 ();cm.Parameters “MAX“.Value =Convert.ToInt32 (TextBox)E.Item.Cells4.Controls 0).Text .ToString ();cm.Parameters “MIN“.Value =Convert.ToInt32 (TextBox)E.Item.Cells5.Controls 0).Text .ToString ();/从DateGrid 中取得更新内容cm.ExecuteNonQuery ();catchResponse.Write (“输入数据有误,请确定或重输“);Response.End ();dgd_gzmana
39、ge.EditItemIndex =-1;BindGrid();public void DataGrid_Page(Object sender,DataGridPageChangedEventArgs E)五、详细设计说明书dgd_gzmanage.CurrentPageIndex =E.NewPageIndex ;BindGrid();4.7 修改密码页面修改密码页面在 Page_oad 函数中绑定到相应控件上,主要负责用户名的数据绑定操作。btn_submit_Click 函数则负责在用户单击“提交”按钮后检查用户名和密码是否匹配,需要修改的密码适合合法后往数据库中更新人员信息的操作。以下
40、是修改密码页面的后台支持类(mmmodify.aspx.cs)的主要相关代码:private void btn_submit_Click(object sender, System.EventArgs e)/从文件Web.config 中读取连接字符串string strconn= ConfigurationSettings.AppSettings“dsn“;/连接本地计算机的WMS数据库SqlConnection cn= new SqlConnection (strconn);cn.Open ();/构造SQL语句,该语句在Users 表中检查用户名和密码是否正确string mysql=
41、“select * from 管理员 where id=“+lbl_uid.Text +“and 密码=“+tbx_upassword.Text +“;/创建Command对象SqlCommand cm=new SqlCommand (mysql,cn);/执行ExecuteReader ()方法SqlDataReader dr=cm.ExecuteReader ();if(dr.Read ()/修改密码SqlConnection cn1= new SqlConnection (strconn);cn1.Open ();SqlCommand cm1=new SqlCommand (“users
42、passwdmodify“,cn1);cm1.CommandType =CommandType .StoredProcedure ;cm1.Parameters .Add (“UID“,SqlDbType.VarChar );cm1.Parameters .Add (“UPassword“,SqlDbType.VarChar );cm1.Parameters “UID“.Value =lbl_uid.Text .ToString ();cm1.Parameters “UPassword“.Value =tbx_newpassword.Text .ToString ();cm1.ExecuteN
43、onQuery ();cn1.Close ();lbl_message.Text=“ 密码修改成功,请返回后验证新密码“;五、详细设计说明书elselbl_message.Text =“对不起,您输入的原密码不正确 ,请重新输入“;4.8 人员信息维护页面人员信息维护页面是物资管理系统中的一个部分,主要负责所有人员信息的浏览,还可以根据用户编号来查找用户详细情况,还可以通过链接添加新的人员信息。人员信息维护页面的后来支持类(useradd.aspx.cs)主要代码如下:private void btn_submit_Click(object sender, System.EventArgs e
44、)if(Page.IsValid )/从文件Web.config中读取连接字符串string strconn= ConfigurationSettings.AppSettings“dsn“;/连接本地计算机的WMS数据库SqlConnection cn= new SqlConnection (strconn);cn.Open ();/利用Command对象调用存储过程SqlCommand cm=new SqlCommand (“usersadd“,cn);/将命令类型转为存储类型cm.CommandType =CommandType.StoredProcedure ;/往存储过程中添加参数cm
45、.Parameters .Add (“UID“,SqlDbType.VarChar);cm.Parameters .Add (“UPassword“,SqlDbType.VarChar);cm.Parameters .Add (“UName“,SqlDbType.VarChar);cm.Parameters .Add (“UTel“,SqlDbType.VarChar);cm.Parameters .Add (“UPower“,SqlDbType.Int );/给存储过程的参数付值cm.Parameters “UID“.Value =tbx_uid.Text .ToString ();cm.P
46、arameters “UPassword“.Value =tbx_password.Text .ToString ();cm.Parameters “UName“.Value =tbx_uname.Text .ToString ();cm.Parameters “UTel“.Value =tbx_utel.Text .ToString ();cm.Parameters “UPower“.Value =ddl_upower.SelectedItem .Value ;cm.ExecuteNonQuery ();/关闭连接cn.Close();Response.Redirect(“usermanag
47、e.aspx“);五、详细设计说明书4.9 修改员工信息页面员工信息修改页面是一个信息修改页面,类似于物资信息修改页面,系统必须提供原始数据记录,在 Page_Load 函数里,添加了实现各个文本框初始数据绑定的程序代码。以下是修改员工信息页面的后台支持类(usermodify.aspx.cs)的主要相关代码:private void Page_Load(object sender, System.EventArgs e)/ 在此处放置用户代码以初始化页面if(!IsPostBack)string strconn= ConfigurationSettings.AppSettings“dsn“;
48、SqlConnection cn= new SqlConnection (strconn);cn.Open ();SqlCommand cm=new SqlCommand (“usersdetail“,cn);cm.CommandType =CommandType .StoredProcedure ;cm.Parameters .Add (“UID“,SqlDbType.VarChar );cm.Parameters “UID“.Value =Request.QueryString “uid“.ToString ();SqlDataReader dr=cm.ExecuteReader ();if(dr.Read ()/存在对应项lbl_uid.Text =dr“id“.ToString ();tbx_uname.Text =dr“名字“.ToString ();tbx_utel.Text =dr“电话“.ToString ();ddl_upower.Items.FindByValue(dr“权限“.T