《基于C#的仓库管理信息系统设计报告书(共10页).doc》由会员分享,可在线阅读,更多相关《基于C#的仓库管理信息系统设计报告书(共10页).doc(10页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上仓库管理信息系统设计报告一、 设计简述在仓库管理信息系统中,需要从大量的日常仓库存取中提取相关信息,以反映库存情况。传统的手工操作方式,易发生数据丢失,统计错误,劳动强度高,且速度慢。使用计算机可以高速,快捷地完成以上工作。在计算机联网后,数据在网上传递,可以实现数据共享,避免重复劳动,规范教学管理行为,从而提高了管理效率和水平。仓库管理信息系统是针对企业仓库货品的出入库登记和查询统计等方面工作而开发的管理软件,是一个非常实用的管理信息系统。它可以针对各个仓库的实际需要,设定不同的仓库管理系统的功能,实现物资信息的登记、入库登记、出库登记等任务。管理者可以通过相应的模
2、块,对仓库里的物资的基本情况进行修改、删除和查询,对物资的入库和出库进行管理,对出入库的物资进行查询,并能生成相应的报表,对使用该系统的用户进行修改、添加等,查询等其他系统设计实现的管理系统能够正确有效地完成仓库管理的日常工作,并能够根据需要进行灵活的查询。系统与数据库管理系统紧密结合,为仓库管理提供了功能较为强大的数据安全功能。二、设计目的仓库信息管理系统以计算机为工具,通过对出库、入库、库存等所需的信息管理,把管理人员从繁琐的数据计算处理中解脱出来,把仓库管理的井井有条,便于统计,结构清晰。本课程设计目的是培养学生在Visual Studio.NET开发环境下利用面向对象的编程语言C#开发
3、一个Windows应用程序的能力。通过开发一个功能完善具有实际价值的管理信息系统,让学生全面实践本课程所学的编程知识,包括对C#编程语言的掌握与应用、VS.NET开发环境下的各种工具的运用、Windows环境下的数据库编程、实际工程中数据结构和算法思想的基本实现等。三、设计步骤1功能需求分析、系统总体结构设计,功能模块的划分、画出流程图。2数据库需求分析、画出E-R图。3数据库的实现,要求最好使用SQL 2005(酌情使用ACCESS)4各个功能模块的设计及实现。5综合调试、运行及发布。四、设计要求(4.1)设计目标要求本次综合实训要求学生完成一个具有实用价值的仓库管理信息系统,能够方便地被具
4、企业的仓库管理所使用,应达到如下的设计要求: 系统用户管理模块要求实现:对系统操作用户及权限的管理。 登录模块 用户身份的识别、用户输入的验证。企业物资信息的管理 包括添加、浏览、修改、查看企业现有的物资情况企业物资出、入库信息管理 所有物资入库、出库的管理。(4.2)系统的性能要求要求系统界面美观,布局合理,菜单设置方便操作;系统各项功能正常。 五、 需求分析(5.1)系统需求分析 本系统的具体要求为:1.通过使用计算机能方便地维护(包括插入、删除、修改)各信息表; 2.能组合查询基于某信息表的所需信息; 3.能方便地实现基于多个表的连接查询; 4.能方便地实现基于单个或多个表的统计功能;
5、5.系统具有操作方便、简捷等特点。 (5.2)功能需求分析1.系统管理:用户和管理者的设置2.物资信息管理:物资的一般信息3.入库信息管理:入库物资的所有信信息包括时间、价格、日期、型号等4.出库信息管理:出库物资的所有信信息包括时间、价格、日期、型号等5.库存信息管理:出库物资的所有信信息包括时间、价格、日期、型号等6.用户操作:通过登录对仓库进行管理以及密码的修改六、 系统模型简述(6.1)构成系统的实体型1.本系统包括管理员,物资,出库,入库,,库存,五个主要实体。2.管理员实体型属性有用户名、密码、角色名。3.物资实体型属性有物资编号、物资名称、物资型号、规格型号、类型、单位4.入库实
6、体型属性有物资编号、物资名称、物资型号、规格型号、类型、单位、数量、单价、金额、入库时间、经办人、保管人、仓库5.出库实体型属性有物资编号、物资名称、物资型号、规格型号、类型、单位、数量、单价、金额、入库时间、经办人、保管人、仓库6.库存实体型属性有物资编号、物资名称、物资型号、类型、单位、金额、入库时间、经办人、保管人、仓库修改出库信息修改入库信息修改物资信息重新操作修改密码查询库存信息浏览库存信息库存信息管理用户操作出库信息管理添加出库信息浏览出库信息查询出库信息入库信息管理添加入库信息浏览入库信息查询入库信息物资信息管理添加物资信息浏览物资信息查询物资信息 系统管理添加用户新建角色仓库管
7、理信息系统(6.2)系统功能模块(6.3)数据库表的结构得出数据表的各个关系模式后,需要给出是各数据表结构。考虑系统的兼容性及编写程序的方便性,可将关系模式的属性对应为表字段的英文名。同时,考虑到数据依赖关系和数据完整性,需要指出表的主码和外码,以及字段的值域约束和数据类型。系统各表的结构如下所示入库信息表(ininfo)列 名数据类型长 度说 明InIDint入库编号(自动编号,主键)MIDchar10物资编号InAccountint 数量InPriceint单价InValueint金额InDateDatetime入库时间InDealerchar10经办人InSaverchar10保管人In
8、Storechar10仓库Remarkchar40备注出库信息表(outinfo)列 名数据类型长 度说 明OutIDint出库编号(自动编号,主键)MIDchar10物资编号OutAccountint 数量OutPriceint单价OutValueint金额OutDateDatetime入库时间OutDealerchar10经办人OutUserchar10领取人OutStorechar10仓库Remarkchar40备注物资信息表(materialinfo)列 名数据类型长 度说 明MIDchar10物资编号(主键)MNamechar10物资名称MModelchar10物资型号MTypech
9、ar10类型MUnitchar10单位用户表信息表(userinfo)列 名数据类型长 度说 明UIDchar10用户名(主键)PWDchar10密 码RoleNamechar10角 色 名七、部分程序代码和分析1.登录界面:用户通过用户名和密码登录代码如下:private void button1_Click(object sender, System.EventArgs e)/确定 if (name.Text.Trim() = | password.Text.Trim() = ) MessageBox.Show(请输入用户名和密码, 提示); else sqlConnection1.Ope
10、n(); SqlCommand cmd = new SqlCommand(, sqlConnection1); string sql = select RoleName from userinfo where UID= + name.Text.Trim() + and PWD= + password.Text.Trim() + ; cmd.CommandText = sql; string rolename; if (null != cmd.ExecuteScalar() rolename = cmd.ExecuteScalar().ToString(); /隐藏登录窗口 this.Visib
11、le = false; /创建并打开主界面 Main main = new Main(); main.Tag = this.FindForm(); sql = select * from roles where RoleName= + rolename + ; SqlDataReader dr; cmd.CommandText = sql; dr = cmd.ExecuteReader(); dr.Read(); main.menuItem1.Visible = (bool)(dr.GetValue(1); main.menuItem4.Visible = (bool)(dr.GetValue
12、(2); main.menuItem5.Visible = (bool)(dr.GetValue(3); main.menuItem6.Visible = (bool)(dr.GetValue(4); main.statusBarPanel5.Text = name.Text.Trim(); main.ShowDialog(); else MessageBox.Show(用户名或密码错误, 警告); sqlConnection1.Close(); private void button2_Click(object sender, System.EventArgs e)/取消 this.Clos
13、e(); 2.添加用户:登录主界面之后添加用户代码如下:private void btAdd_Click(object sender, System.EventArgs e) if (textName.Text.Trim()=|textPassword.Text.Trim()=|textPWDNew.Text.Trim()=|comRole.Text.Trim()=)MessageBox.Show(请输入完整信息!,警告);elseif (textPassword.Text.Trim()!=textPWDNew.Text.Trim()MessageBox.Show(两次密码输入不一致!,警告)
14、; elsesqlConnection1.Open();SqlCommand cmd = new SqlCommand(,sqlConnection1);string sql = select * from userinfo where UID = +textName.Text.Trim()+;cmd.CommandText = sql; if (null = cmd.ExecuteScalar() string sql1 = insert into userinfo (UID,PWD,RoleName) +values (+textName.Text.Trim()+,+textPWDNew.
15、Text.Trim()+,+comRole.Text.Trim()+);cmd.CommandText = sql1;cmd.ExecuteNonQuery();MessageBox.Show(添加用户成功!,提示);this.Close(); elseMessageBox.Show(用户名+textName.Text.Trim()+已经存在!,提示);sqlConnection1.Close(); 3.通过主页面进入物资信息管理点击浏览物资信息出现如下:代码如下: 点击修改出现如下页面:/修改private void btModify_Click(object sender, System.
16、EventArgs e) if (dataGrid1.DataSource != null | dataGrid1dataGrid1.CurrentCell != null)materailModify = new MaterialModify();materailModify.textID.Text=ds.Tables0.RowsdataGrid1.CurrentCell.RowNumber0.ToString().Trim();materailModify.textName.Text=ds.Tables0.RowsdataGrid1.CurrentCell.RowNumber1.ToStr
17、ing().Trim();materailModify.textModel.Text=ds.Tables0.RowsdataGrid1.CurrentCell.RowNumber2.ToString().Trim();materailModify.textType.Text=ds.Tables0.RowsdataGrid1.CurrentCell.RowNumber3.ToString().Trim();materailModify.textUnit.Text=ds.Tables0.RowsdataGrid1.CurrentCell.RowNumber4.ToString().Trim();m
18、aterailModify.ShowDialog();elseMessageBox.Show(没有指定物资信息!,提示);/删除 private void btDel_Click(object sender, System.EventArgs e)if (dataGrid1.CurrentRowIndex=0 & dataGrid1.DataSource!=null & dataGrid1dataGrid1.CurrentCell!=null)string sql =select * from ininfo where MID=+ds.Tablesmaterial.RowsdataGrid1.
19、CurrentCell.RowNumber0.ToString().Trim()+;SqlCommand cmd = new SqlCommand(sql,oleConnection1);SqlDataReader dr;dr = cmd.ExecuteReader();if (dr.Read()MessageBox.Show(删除物资+ds.Tablesmaterial.RowsdataGrid1.CurrentCell.RowNumber1.ToString().Trim()+失败,请先删除该物资入库信息!,提示);dr.Close();elsedr.Close();string sql1
20、=delete * from materialinfo where MID = +ds.Tablesmaterial.RowsdataGrid1.CurrentCell.RowNumber0.ToString().Trim()+;cmd.CommandText = sql1;cmd.ExecuteNonQuery();MessageBox.Show(删除物资+ds.Tablesmaterial.RowsdataGrid1.CurrentCell.RowNumber1.ToString().Trim()+成功!,提示);elseMessageBox.Show(没有指定物资信息!,提示);/退出p
21、rivate void btClose_Click(object sender, System.EventArgs e) this.Close();4.通过主页面进入物资信息管理点击查询物资信息出现如下:代码如下:/查询 private void btQuery_Click(object sender, System.EventArgs e)bool flag =true;string sql = select MID as 物资编号,MName as 物资名称,MModel as 物资型号,Mtype as 类型,MUnit as 单位+from materialinfo where ;if
22、 (textID.Text.Trim()=&textName.Text.Trim()=&textModel.Text.Trim()=)MessageBox.Show(请输入查询条件!,警告);return;else if (textID.Text.Trim() != )sql = sql+MID= +textID.Text.Trim()+;elseif (textName.Text.Trim() != )sql = sql+MName= +textName.Text+;flag = false; if (textModel.Text.Trim() != )if (flag)sql = sql+
23、MModel= +textModel.Text+;else sql = sql+ and MModel= +textModel.Text+; oleConnection1.Open();SqlDataAdapter adp = new SqlDataAdapter(sql,oleConnection1);DataSet ds = new DataSet();ds.Clear();adp.Fill(ds,material);dataGrid1.DataSource=ds.Tables0.DefaultView;dataGrid1.CaptionText=共有+ds.Tables0.Rows.Co
24、unt+条查询记录;oleConnection1.Close();/重置private void btNew_Click(object sender, System.EventArgs e) this.textID.Text=;this.textModel.Text=;this.textName.Text=;5.通过主页面进入物资信息管理点击添加物资信息出现如下:代码如下:/确定 private void btAdd_Click(object sender, System.EventArgs e)if (textID.Text.Trim()=)MessageBox.Show(请输入物资编号!,
25、提示);elseoleConnection1.Open();string sql = select * from materialinfo where MID = +textID.Text.Trim()+;this.oleCommand1.CommandText = sql;if (null = oleCommand1.ExecuteScalar()string sql1 = insert into materialinfo values (+textID.Text.Trim()+,+textName.Text.Trim()+,+textModel.Text.Trim()+,+textType
26、.Text.Trim()+,+textUnit.Text.Trim()+);oleCommand1.CommandText=sql1;oleCommand1.ExecuteNonQuery();MessageBox.Show(添加物资信息成功!,提示);elseMessageBox.Show(物资编号+textID.Text.Trim()+已经存在!,警告);oleConnection1.Close(); 综上所述是物资信息的添加、删除、查询、修改等一系列操作的实现,以此类推,关于入库信息管理、出库信息管理、库存信息管理都是大同小异而论的。6.通过主页面进入用户操作点击修改密码出现如下:代码如
27、下:/确定 private void btSave_Click(object sender, System.EventArgs e)if(textName.Text.Trim()=|textPWD.Text.Trim()=|textPWDNew.Text.Trim()=|textPWDNew2.Text.Trim()=)MessageBox.Show(请填写完整信息!,提示);elseoleConnection1.Open();SqlCommand cmd = new SqlCommand(,oleConnection1);string sql = select * from userinfo
28、 where UID=+textName.Text.Trim()+ and PWD=+textPWD.Text.Trim()+;cmd.CommandText = sql;if (null!=cmd.ExecuteScalar()if (textPWDNew.Text.Trim()!=textPWDNew2.Text.Trim()MessageBox.Show(两次密码输入不一致!,警告);elsestring sql1 = update userinfo set PWD=+textPWDNew.Text.Trim()+ where UID=+textName.Text.Trim()+;cmd
29、.CommandText = sql1;cmd.ExecuteNonQuery();MessageBox.Show(密码修改成功!,提示);this.Close();elseMessageBox.Show(密码错误!,提示);oleConnection1.Close();八、 总结(8.1)不足 由于自己的分析设计和经验不足,该系统设计和实现过程中,还有许多没有完善的地方,比如数据的类型没有定格好,文档和代码有的没条理,不清晰,用户界面设计不是很美观,异常处理比较差等多方面问题。(8.2)感悟经过一个星期的努力终于把仓库管理系统做完了,通过这次课程设计,我对数据库系统和c#语言有了更深的认识和理解,知道了面向对象,还有windows应用一些程序的设计。把理论知识和实践结合起来,使理论知识得到了运用,同时自己也掌握了知识,通过自己的亲手设计,印象深刻,真正理解所学知识,通过自己亲手实践后,就会真正明白实践是检验真理的唯一标准。通过课程设计,我们感到实际动手能力普遍提高,能够熟练运用Microsoft visual studio 2005。而且对SQL2005数据库软件有了进一步的理解,能够更加熟练地操作。更重要的是通过对库房信息管理系统开发流程的了解,进一步激发了我们对这门课程的兴趣。专心-专注-专业
限制150内