数据结构(cc版)参考案例5_第1页
数据结构(cc版)参考案例5_第2页
数据结构(cc版)参考案例5_第3页
数据结构(cc版)参考案例5_第4页
免费预览已结束,剩余42页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2工学结合创新教程数据库结构(C语言版)第7章仓库管理信息系统本仓库管理信息系统具有以下特点:实现仓库物资的入库、出库、查询等操作实现用户权限管理,提高系统安全性界面设计简单、操作方便本系统后台数据库采用MicrosoftAccess,前台采用VisualC#作为主要开发工具。采用ADO技术连接数据库,完成对数据库的一系列操作。本系统按照面向对象的思想设计系统,进行程序开发,程序设计条例清楚。7.1系统概述7.1.1系统功能与应用背景仓库管理信息系统在企业的整个供应链中起着至关重要的作用,如果不能保证正确的进货和库存控制及发货,将会导致管理费用的增加,服务质量难以得到保证,从而影响企业的竞争力。仓库管理涉及计划、物料平衡、采购、入库、出库、库存等活动,这些业务涉及大量数据和信息,对这些数据的准确性、及时性都要求非常高,任何信息的错误、遗漏都会造成公司的损失,若采用纯人工的方法管理有一定难度。因此,采用计算机技术实现仓库管理,是提供公司管理水平的有效途径。仓库管理信息系统能够提高仓库管理的质量和效率,降低库存仓库管理系统成本,以合理库存量控制库存和采购,功能包括采购申请、物品收发与报废、库存管理、往来单位、部门及人员管理等。本实例完成的主要功能有:权限控制仓库物资信息设置入库管理出库管理库存管理不同的单位有不同的需求,本系统大体上能满足以下几个方面需求:用户的信息需求:随时查询库存状况,进行库存物资汇总,对数据能够随时删除、插入及恢复。

项目I用户的处理需求:能随时添加、删除、修改每一条库存记录。项目I7.1.2系统预览图7-1应用程序登录界面项目3项目4项目5项口6项目7项目8当期登录用户:"Sin2007-8-1914:30:40仓库管理信息系统君主界面项目9图图7-1应用程序登录界面项目3项目4项目5项口6项目7项目8当期登录用户:"Sin2007-8-1914:30:40仓库管理信息系统君主界面项目92工学结合创新教程数据库结构(C语言版)图7-2应用程序主界面7.2系统设计7.2.1系统设计思想本系统主要完成对仓库的库存管理,包括入库、出库、库存以及密码管理等几个方面,系统可以完成对各类信息的浏览、查询、添加、删除、修改等功能。系统核心是入库、库存和出库之间的联系,每个表的修改都将影响到其他的表,当完成入库或出库操作后,库存信息会自动修改。7.2.2系统功能模块设计根据系统的设计思想,本系统完成的主要功能有:库存物资基本信息,物资入库信息,物资出库信息的输入、查询、修改,以及库存余额信息的查询等。因此系统由物资信息设置、入库管理、出库管理和库存管理等模块组成。1、物资信息设置模块可以添加、修改和查询物资的基本信息。2、入库管理模块可以浏览、添加、修改和查询物资的入库信息。3、出库管理模块可以浏览、添加、修改和查询物资的出库信息。4、库存管理模块可以浏览、查询物资的库存信息。仓库管理信息系统的系统功能结构如图7-3所示。

物资信息设苴系统管理查沏库存信息浏览库存信息新建角色添加用户图7-3系统功能结构图项目4分析各模块功能,可以得出本系统的数据流程图如图7-4所示。项目5项口6项目物资信息设苴系统管理查沏库存信息浏览库存信息新建角色添加用户图7-3系统功能结构图项目4分析各模块功能,可以得出本系统的数据流程图如图7-4所示。项目5项口6项目7项目8图7-4系统数据流程图项目97.2.3数据库设计项目9根据仓库管理信息系统的功能要求和数据流程分析,该系统的数据库名称为StoreMIS)数据库中包括:①用户信息表(userinfo);②物资基本信息表(materialinfo);③入库信息表(ininfo);④出库信息表(outinfo):⑤角色信息表(roles).

2工学结合创新教程数据库结构(C语言版)下面列出J,各个表的数据结构,如表7-1〜7-5所不。表7-1用户信息表(userinfo)的数据结构字段名类型描述UID文本用户名(主键)PWD文本密码RoleName文本角色名表7-2物资基本信息表(materialinfo)的数据结构字段名类型描述MID文本物资编号(主键)MName文本物资名称MModel文本物资型号MTypc文本类型MUnit文本单位表7-3入库信息表(ininfo)的数据结构字段名类型描述InlD文本入库编号(自动编号,主键)MID文本物资编号InAccount文本数量InPrice文本单价InValue文本金额InDatc日期/时间入库时间InDealer文本经办人InSaver文本保管人InStore文本仓库Remark文本备注表7-4出库信息表(outinfo)的数据结构字段名类型描述OutID文本出库编号(自动编号,主键)MID文本物资编号OutAccount文本数量OutPrice文本单价Outvalue文本金额OutDate日期/时间出库时间OutDealer文本经办人OutUser文本领取人项目1OutStore文本仓库RemarkOutUser文本领取人项目1OutStore文本仓库Remark文本备注表7-5角色信息表(roles)的数据结构字段名类型描述RoleName文本角色名(主键)SystemManagc是/否系统管理MaterialManage是/否物资管理项目3InManage是/否入库管理OutManage是/否出库管理项目4项目5项口6项目7项目8图7-5表之间的关系项目9一般情况下,数据库中所包含的表都不是独立存在的,而是表与表之间有一定的关系,称为关联。例如入库信息表中的“物资编号”来源于物资基本信息表中现有的物资编号,出库信息表中的“物资编号”来源于物资基本信息表中现有的物资编号。如果数据库中的信息不能满足正常的依赖关系就会破坏数据的完整性和一致性。根据本示例的特点,需要依次设置入库信息表与物资基本信息表、出库信息表与物资基本信息表之间的关系,如图7-5所示。以及用户信息表与角色信息表之间的关系,如图7-6所示。图7-6表之间的关系7.3登录界面与用户模块设计7.3.1登录界面设计系统登录主要用于对登录仓库管理信息系统的用户进行安全性检查和权限检查,防止非法用户登录系统。在登录系统时验证用户名及其密码,判断用户名和密码与数据库中的用户名和密码是否相同,如果相同则允许登录,否则不允许登录。并且根据角色要求赋予权限,以显小不用的系统主界面。登录界面如图7/所示,输入用户名和密码后,单击【确定】。这时需要验证输入的用户名和密码与数据库中的是否一致,并根据权限描述,进入系统。按钮【确定】的功能代码如例程所示。例程77【确定】按钮的代码privatevoidbuttonl_Click(objectsender,System.EventArgse)(if(name.Text.Trim()==**|Ipassword.Text.Trim()="")MessageBox.Show(”请输入用户名和密码“,〃提示");else(sq1Connection1.Open();OleDbCommandcmd=newOleDbCommandC**,sqlConnectionl);stringsql="selectRo1eNamefromuserinfowhereUID='"+name.Text.TrimO+"'andPWD='"+password.Text.Trim()+“'";cmd.CommandText=sql;stringrolename;if(null!=cmd.ExecuteScalar())(rolename=cmd.ExecuteScalar().ToStringO;〃隐藏登录窗口this.Visible=false;//创建并打开主界面Mainmain=newMain();main.Tag=this.FindFormO;sql="select*fromroleswhereRoleName=,"+rolename+"'01eDbDataReaderdr;cmd.CommandText=sql;dr=cmd.ExecuteReader();dr.Read();main,menulteml.Visible=(bool)(dr.GetValue(1));main.menultem4.Visible=(bool)(dr.GetValue(2));main.menultem5.Visible=(bool)(dr.GetValue(3));main.menultem6.Visible=(bool)(dr.GetValue(4));main.statusBarPanel5.Text=name.Text.TrimO;main.ShowDialog();}elseMessageBox.Show(〃用户名或密码错误。〃警告”);sqlConnectionl.Close();)7.3.2用户模块设计项目3项目4项目5项口6项目7项目8在主界面中单击【用户管理】|【修改密码工进入密码修改界面,如图7-7所示。在该界面中用户可以修改自己的密码,修改密码的代码如例程7-2所示。单击【用户管理】|项目9【重新登录】项即可退出当前用户,进入登录界面重新登录,代码如例程7-3所示。唐修改密码 12回区用户名称鬲高密码 新密码 密码确认确定II退出图7-7密码修改界面例程7-2密码修改代码privatevoidbtSaveClick(objectsender,System.EventArgse)(if(textName.Text.Trim()==**!ItextPWD.Text.Trim()==""I|textPWDNew.Text.Trim()==**|ItextPWDNew2.Text.Trim()==**)MessageBox.Show("请填写完整信息!","提示");else(oleConnectionl.Open();OleDbCommandcmd=new01eDbCommand(,,z,oleConnectionl);stringsql="select*fromuserinfowhereUID='*+textName.Text.Trim()+*andPWD='*+textPWD.Text.TrimO ;cmd.CommandText=sql;if(nul1!=cmd.ExecuteScalar()){if(textPWDNew.Text.TrimO!=textPWDNew2.Text.Trim())MessageBox.Show("两次密码输入不一致!","警告");else(stringsqll="updateuserinfosetPWD='"+textPWDNew.Text.TrimO+"'whereUID="+textName.Text.Trim()+”'”;cmd.CommandText=sqll;cmd.ExecuteNonQuery();MessageBox.Show("密码修改成功!","提示");this.Close();)}elseMessageBox.Show(〃用户名或密码错误!",〃提示");oleConnectionl.Close();}例程7-3用户重新登录代码privatevoidmenuItem24_Click(objectsender,System.EventArgse)((System.Windows.Forms.Form)this.Tag).Visible=true;this.Close();7.3.3系统模块设计在主界面中单击【系统管理】I【添加用户工进入用户添加界面,如图7-8所示。项目I项目3项目4项目5酒添加用户 £]叵区I添加| |退出|项口6项目7项目8图7-8添加用户界面在该界面中需要把数据库数据和ComboBox控件绑定,这样用户可以设置用户名和密码,项目9并选择角色。代码如例程7-4所示。例程7-4添加用户的代码privatevoidbtAddClick(objectsender,System.EventArgse)项目10工学结合创新教程数据库结构(C语言版){if(textName.Text.Trim()=""||textPassword.Text.Trim()==""I|textPWDNew.Text.Trim()=""IcomRole.Text.Trim()=="")MessageBox.Show("请输入完整信息!","警告");else(if(textPassword.Text.TrimO!=textPWDNew.Text.TrimO)MessageBox.Show("两次密码输入不一致!","警告");else(sqlConnectionl.Open();OleDbCommandcmd=newOleDbCommand(**,sqlConnectionl);stringsql="select*fromuserinfowhereUID=**+textName.Text.Trim()+*>cmd.CommandText=sql;if(null==cmd.ExecuteScalar()){stringsql1=insertintouserinfo(UID,PWD,Ro1eName)"valuesC*+textName.Text.Trim*+textPWDNew.Text.Trim*+comRole.Text.Trim()+"')”cmd.CommandText=sqll;cmd.ExecuteNonQuery();MessageBox.Show("添加用户成功!","提示");this.Close();)elseMessageBox.Show("用户名"+textName.Text.Trim()+”已经存在!",”提示〃);sqlConnectionl.Close();}privatevoidAddUserLoad(objectsender,System.EventArgse){〃数据绑定DataSetds=newDataSet();01eDbDataAdapteradp=newOleDbDataAdapter(*sqlConnectionl);adp.SelectCommand.CommandText=*selectRo1eNamefromroles*;adp.Fill(ds);

comRole.DataSource=ds.Tables[0].DefaultView;comRole.DisplayMember=*RoleName*;comRole.ValueMember=z'RoleName*;}单击comRole.DataSource=ds.Tables[0].DefaultView;comRole.DisplayMember=*RoleName*;comRole.ValueMember=z'RoleName*;}单击【系统管理】|【新建角色】项,进入新建角色界面,如图7・9所示。项口1图7-9新建角色界面项目3项口4项目5在该界面中,用户可以设置角色名,并为每个角色选择权限,根据权限的不同,用户进入的界面也会不同。代码如例程7-5所示。项目6例程7-5新建角色的代码privatevoidbtAdd_Click(objectsender,System.EventArgse)__sqlConnectionl.Open(); 项目7OleDbCommandcmd=new01eDbCommand(**,sqlConnectionl);if(textRole.Text.TrimO!="")stringsql="select*fromroleswhereRo1eName= 项目8**+textRole.Text.TrimO+**cmd.ConunandText=sql;if(null==cmd.ExecuteScalar())( 项目9stringsql1=zzinsertintorolesvalues('"+textRole.Text.Trim()+"',"+ckSys.Checked+*,*+ckMate.Checked+”,"+”"+ckln.Checked+”,"+ckOut.Checked+*)*;cmd.ConunandText=sql1; 项口10cmd.ExecuteNonQuery();MessageBox.Show("新建角色成功!","提示");}elseMessageBox.Show("角色名称重复!〃,〃警告”);}elseMessageBox.Show(〃角色名称不能为空!“「警告”);sqlConnectionl.Close();7.4物资信息管理7.4.1添加物资信息在主界面中单击【物资信息管理】|【添加物资信息】,进入物资信息添加界面,如图7-10所示。在这个界面录入的过程中,需要解决的问题包括,物资编号不能为空字符串,新添加的物资编号不能与已有的物资编号重复,否则会给出警告提示。单击【确定】按钮,就把填写的数据保存到相应的数据库表中,代码如例程7-6所示。图7-10图7-10物资信息添加界面项目1例程7-6物资信息添加的代码项目3privatevoidbtAddClick(objectsender,System.EventArgse){项目3if(textID.Text.Trim()MessageBox.Show("请输入物资编号!","提示");else(oleConnectionl.Open();stringsql="select*frommaterialinfowhereMID=*+textID.Text.TrimO+*1*;this.oleCommandl.CommandText=sql;项目4if(null==oleCommandl.ExecuteScalar())(stringsqll=*insertintomaterialinfovaluesC*+textID.Text.TrimO'"+textName.Text.Trim()+"',"+"+textModel.Text.Trim。"+textType.Text.Trim。+"','*+textUnit.Text.TrimO项目6oleCommandl.CommandText=sql项目6oleCommandl.ExecuteNonQuery();MessageBox.Show("添加物资信息成功!","提示");)elseMessageBox.Show(“物资编号"+textID.Text.Trim()+”已经存在!","警告");[项目7oleConnectionl.Close();}项目87.4.2浏览物资信息项目9在主界面中单击【物资信息管理】[【浏览物资信息工进入物资信息浏览界面,如图7-11项目9图7-11物资信息浏览界面在这个界面中主要设置了一个DataGrid控件,通过该控件所提供的绑定绑定功能可用于显示程序中所检索出的数据集,在该界面中显示的是物资信息,数据绑定的代码如例程7-7所示。例程7-7物资信息浏览的代码privatevoidMaterial_Load(objectsender,System.EventArgse)(oleConnectionl.Open();stringsql=*selectMIDas物资编号,MNameas物资名称,MModelas物资型号,Mtypeas类型,MUnitas单位frommaterialinfo*;OleDbDataAdapteradp=newOleDbDataAdapter(sql,oleConnectionl);ds=newDataSet();ds.Clear();adp.Fill(ds,"material");dataGridl.DataSource=ds.Tables[0].DefaultView;dataGridl.CaptionText="共有"+ds.Tables[0].Rows.Count+"条记录”;oleConnectionl.Close();}在这个界面中还包括3个button控件,分别是【修改】、【删除】、【退出】。删除某条信息时,必须要考虑与该信息相关的其他信息的存在,如果没有,则可直接删掉,否则为了保证数据的完整性,则不允许直接删掉该条信息。【删除】按钮的代码可参考例程7・8。例程7-8【删除】按钮的代码 后口।项目1privatevoidbtDel_Click(objectsender,System.EventArgse)(if(dataGridl.CurrentRowlndex>=0&&dataGrid1.DataSource!=nu11&&dataGridl[dataGridl.CurrentCell]!=null)stringsql="select*fromininfowhereMID='*+ds.Tables[*material*].Rows[dataGridl.CurrentCell.RowNumber][0].ToStringO.Trim()+〃'"; 项目3OleDbCommandcmd=new01eDbCommand(sql,oleConnection1);OleDbDataReaderdr;dr=cmd.ExecuteReader();if(dr.Read()) 项目4MessageBox.Show("删除物资'"+ds.Tables[*material*].Rows[dataGridl.CurrentCell.RowNumber][1].ToString().TrimO+“'失败,请先删除该物资入库信息!","提示"); 项目5dr.CloseO;)else( 项目6dr.CloseO;stringsql1="delete*frommaterialinfowhereMID='"+ds.Tables[*material*].Rows[dataGridl.CurrentCell.RowNumber][0].ToString().TrimO+; 项目7cmd.CommandText=sqll:cmd.ExecuteNonQuery();MessageBox.Show("删除物资'"+ds.Tables["material.Rows[dataGridl.CurrentCell.RowNumber][1].ToString().Trim()+项目8"'成功!","提示");)else 项目9MessageBox.Show("没有指定物资信息!","提示");}7.4.3修改物资信息 项目工学结合创新教程数据库结构(C语言版)在物资信息浏览界面中,单击【修改】按钮,进入物资信息修改界面,如图7-12所/J\o对用户选中的物资进行修改时,需要从物资信息浏览窗口中将所选中的物资信息的参数传递到修改物资信息窗口中,作为修改物资信息界面的初始化数据,该部分代码如例程7-9所示。在物资修改界面中,物资编号为只读,其他属性都可以修改。修改完后,单击【确定】按钮,把修改后的数据更新到数据库中相应的字段中。【确定】按钮的代码可参考例程7-10所示。图7-12物资信息修改界面例程7-9数据绑定传递的代码MaterialModifymaterailModify;privatevoidbtModifyClick(objectsender,System.EventArgse){if(dataGridl.DataSource!=null|.dataGridl[dataGridl.CurrentCell]!=null)(materaiIModify=newMaterialModify();materaiIModify.textID.Text=ds.Tables[0].Rows[dataGridl.CurrentCell.RowNumber][0].ToStringO.TrimOmaterailModify.textName.Text=ds.Tables[0].Rows[dataGridl.CurrentCell.RowNumber][1].ToStringO.TrimO;materaiIModify.textModel.Text=项口1项目项口1项目3ds.Tables[0].Rows[dataGridl.CurrentCell.RowNumber][2].ToStringO.TrimO;materaiIModify.textType.Text=ds.Tables[0].Rows[dataGridl.CurrentCell.RowNumber][3].ToStringO.TrimO;materaiIModify.textUnit.Text=ds.Tables[0].Rows[dataGridl.CurrentCell.RowNumber][4].ToStringO.TrimO;materaiIModify.ShowDialogO;}elseMessageBox.Show("没有指定物资信息!","提示");例程7-10【确定】按钮的代码privatevoidbtAdd_Click(objectsender,System.EventArgse){ 项目4oleConnectionl.Open();stringsql="updatematerialinfosetMName=,"+textName.Text.Trim()+”',MModel='*+textModel.Text.TrimO+**,*+//MType=,*+textType.Text.TrimO+**,MUnit=,"+textUnit.Text.Trim。+“'曰‘whereMID='"+textID.Text.Trim。+“'oleCommandl.CommandText=sql;o1eCommand1.ExecuteNonQuery();MessageBox.Show("修改信息成功!","提示"); 项目6this.Close();oleConnectionl.Close();}项目77.4.4查询物资信息项目8在主界面中单击【物资信息管理】I【查询物资信息】,进入物资信息查询界面,如图7-13项目8项目9图7-13物资信息查询界面在该界面中,共有3个查询条件:物资编号、物资名称和物资型号。可以根据任意一个条件进行查询,也可以根据物资名称和物资型号两个条件查询。查询功能的代码可参考例程7-11所示。例程7-11查询的代码privatevoidbtQuery_Click(objectsender,System.EventArgse)(boolflag=true;stringsql="selectMIDas物资编号,MNameas物资名称,MModelas物资型号,Mtypeas类型,MUnitas单位frommaterialinfowhereif(textID.Text.Trim()=**&&textNaine.Text.Trim()==**&&textModel.Text.Trim()=**)(MessageBox.Show("请输入查询条件!","警告");return;}elseif(textID.Text.TrimO!=sql=sql+*MID="+textID.Text.Trim。else(if(textName.Text.TrimO!=””)sql=sql+*MName="+textName.Text+"flag=flag=false;项目1if(textModel.Text.TrimO!=""){ if(flag)〃,,,,,■sql=sql+MModel=*+*+textModel.Text+;elsesql-sql+"andMModel="+textModel.Text+''"} 项目3oleConnectionl.Open();OleDbDataAdapteradp=newOleDbDataAdapter(sql,oleConnectionl);DataSetds=newDataSet():八 项目4ds.Clear();adp.Fill(ds,"material");dataGridl.DataSource=ds.Tables[0].DefaultView;dataGridl.CaptionText="共有"+ds.Tables[0].Rows.Count+”条查询记录”; 田口「项目5oleConnectionl.Close();7.5入库信息管理 项目67.5.1添加入库信息项目7在主界面中单击【入库信息管理】|【添加入库信息】,进入入库信息添加界面,如图7-14所示。在这个界面中分为两个部分,物资信息和入库信息。物资信息是从物资信息表中得到,把物资编号与ComboBox控件绑定,然后通过选择物资编号来显示物资信息,并把它们显示项目8到相应的TextBox控件中。该部分的代码参考例程7-12,在入库信息部分把相应的数据填写完整,单击【确定】按钮,把数据编号和入库信息保存到入库信息表中。该部分的代码参考例程7-13.项目9

图7-14入库信息添加界面例程7-12物资信息显示的代码privatevoidInAdd_Load(objectsender,System.EventArgse){〃把物资编号绑定到comMID控件DataSetds=newDataSet();OleDbDataAdapteradp=newOleDbDataAdapter(**,oleConnectionl);adp.SelectCommand.CommandText="selectMIDfrommaterialinfo*;adp.Fill(ds);comMID.DataSource=ds.Tables[0].DefaultView;comMID.DisplayMember="MID";comMID.ValueMember="MID";}privatevoidcomMIDSelectedlndexChanged(objectsender,System.EventArgse){〃根据comMID控件数据的选择,显示物资信息DataSetds=newDataSet();OleDbDataAdapteradp=newOleDbDataAdapteroleConnectionl);stringsql="select*frommaterialinfowhereMID='*+comMID.Text.Trim()+*adp.SelectCommand.CommandText=sql;项口1adp.Fill(ds);项口1this.textName.Text=ds.Tables[0].Rows[0][1].ToStringO.TrimO;this.textModel.Text=ds.Tables[0].Rows[0][2].ToString().TrimO;this.textType.Text=ds.Tables[0].Rows[0][3].ToStringO.TrimO;this.textUnit.Text=ds.Tables[0].Rows[0][4].ToString().Trim();例程7-13【确定】按钮的代码privatevoidbtAdd_Click(objectsender,System.EventArgse){- 项目3if(comMID.Text.Trim()==**)MessageBox.Show(〃请填写物资编号!〃厂提示〃);else jh; 项目4oleConnectionl.Open();stringsql="select*fromininfowhereMID='"+comMID.Text.TrimOthis.oleCommandl.CommandText=sql;项目5if(nul1==oleCommandl.ExecuteScalar())|stringsqll="insertintoininfo(MID,InAccount,InPrice,InValue,InDate,InDealer,InSaver,InStore,Remark)values"+"('"+comMID.Text.Trim'"+textAccount.Text.Trim()+"',"+*+textPrice.Text.TrimO+**,**+textValue.Text.Trim()+*>,9*+datel.Text.TrimO+*’,'*+textDealer.Text.Trim()+**,”+***+textSaver.Text.TrimO+**,**+textStore.Text.TrimO+**,**+textRemark.Text.Tri 项目7m()+〃')”;oleCommandl.ConunandText=sq11;oleCommandl.ExecuteNonQuery();MessageBox.Show("添加入库信息成功!","提示"); 项目8this.Close();}elseMessageBox.Show("物资编号"+comMID.Text.Trim()+”已经存在!","警告");项目9oleConnectionl.Close();工学结合创新教程数据库结构(C语言版)5.2浏览入库信息在主界面中单击【入库信息管理】I【浏览入库信息】,进入入库信息浏览界面,如图7-15所示。在这个界面中有一个DataGrid控件,通过该控件所提供的绑定绑定功能可用于显示程序中所检索出的数据集,在该界面中显示的是入库信息,数据绑定的代码如例程7-14所示。在这个界面中还包括3个button控件,分别是【修改】、【删除】、【退出工删除某条信息时,必须要考虑与该信息相关的其他信息的存在,如果没有,则可直接删掉,否则为了保证数据的完整性,则不允许直接删掉该条信息。【删除】按钮的代码可参考例程7-15。必入库信息 目回区)入库信息列表共有2条记录物资名称~~物资型号 皿W►显示器17 液晶个 100 1200 120000硬盘80G ddd 个 2 600 1200修改 删除 退出图7T5入库信息界面例程7T4数据绑定的代码DataSetds;privatevoidInLoad(objectsender,System.EventArgse)(oleConnectionl.Open();stringsql="selectMNameas物资名称,MModelas物资型号,Mtypcas类型,MUnitas单位,InAccountas数量,”+"InPriceas单价,InValueas金额,InDateas入库时间,InDealeras经办人,InSaveras保管人,InStoreas仓库,Remarkas备注,"+"ininfo.MIDas物资编号,InlDas入库编号frommaterialinfo,ininfowherematerialinfo.MID=ininfo.MID*;OleDbDataAdapteradp=newOleDbDataAdapter(sql,oleConnectionl);ds=newDataSet();ds.Clear();adp.Fill(ds,"in");dataGridl.DataSource=ds.Tables[0].DefaultView;dataGridl.CaptionText="共有"+ds.Tables[0].Rows.Count+”条记录";oleConnectionl.Close();例程775【删除】按钮的代码项目3privatevoidbtDel_Click(objectsender,System.EventArgse)(if(dataGridl.CurrentRowlndex>=0&&dataGridl.DataSource!=null&&dataGridl[dataGridl.CurrentCel1]!=null){ 项目4stringsql=*delete*fromininfowhereInID=*+ds.Tables[*in*].Rows[dataGridl.CurrentCel1.RowNumber][13].ToStringO.Trim()+*tr.oleConnectionl.Open();oleCommandl.CommandText=sql;oleCommandl.ExecuteNonQuery();MessageBox.Show("删除进货**+ds.Tables[*in*].Rows[dataGridl.CurrentCel1.RowNumber][0].ToStringO.Trim()+“'成功项目Q”「提示”);oleConnectionl.Close();}项目8MessageBox.Show("没有指定进货信息!","提示")项目87-5.3修改入库信息在入库信息浏览界面中,单击【修改】按钮,进入入库信息修改界面,如图7-16所项目9

图776入库信息修改界面在该界面中物资信息为只读,修改的只是入库信息表中的数据。对用户选中的入库信息进行修改时,需要从入库信息浏览窗口中将所选中的入库信息的参数即入库编号,传递到修改入库信息窗口中,作为修改入库信息界面的初始化数据,用的方法是Tag属性,该部分代码如例程7-16所示。例程776数据绑定传递的代码InModifyinModify;privatevoidbtModify_Click(objectsender,System.EventArgse)(if(dataGrid1.DataSource!=nul1 |dataGridl[dataGridl.CurrentCell]!=null){inModify=newInModify();inModify.textMID.Text=ds.Tables[0].Rows[dataGridl.CurrentCell.RowNumber][12].ToStringO.TrimO;inModify.textName.Text=ds.Tables[0].Rows[dataGridl.CurrentCell.RowNumber][0].ToStringO.TrimO;inModify.textModel.Text=ds.Tables[0].Rows[dataGridl.CurrentCell.RowNumber][1].ToStringO.TrimO;项口4项目项口4项目7项口8inModify.textType.Text=ds.Tables[0].Rows[dataGridl.CurrentCell.RowNumber][2].ToStringO.Trim();inModify.textUnit.Text=ds.Tables[0].Rows[dataGridl.CurrentCell.RowNumber][3].ToStringO.TrimO;inModify.textAccount.Text=ds.Tables[0].Rows[dataGridl.CurrentCell.RowNumber][4].ToStringO.TrimO;inModify.textPrice.Text=ds.Tables[0].Rows[dataGridl.CurrentCell.RowNumber][5].ToStringO.TrimO;inModify.textValue.Text=ds.Tables[0].Rows[dataGridl.CurrentCell.RowNumber][6],ToStringO.TrimO;inModify,datel.Text=ds.Tables[0].Rows[dataGridl.CurrentCell.RowNumber][7].ToStringO.TrimO;inModify.textDealer.Text=ds.Tables[0].Rows[dataGridl.CurrentCell.RowNumber][8].ToStringO.TrimO;inModify.textSaver.Text=ds.Tables[0].Rows[dataGridl.CurrentCell.RowNumber][9].ToStringO.TrimO;inModify.textStore.Text=ds.Tables[0].Rows[dataGridl.CurrentCell.RowNumber][10].ToStringO.TrimO;inModify.textRemark.Text=ds.Tables[0].Rows[dataGridl.CurrentCell.RowNumber][11].ToStringO.TrimO;inModify.Tag=ds.Tables[0].Rows[dataGridl.CurrentCell.RowNumber][13].ToStringO.TrimO;inModify.ShowDialogO;elseMessageBox.Show("没有指定入库信息!","提示");)修改完后,单击【确定】按钮,把修改后的数据更新到数据库中相应的字段中。【确定】按钮的代码可参考例程7-17所示。例程777【确定】按钮的代码privatevoidbtAdd_Click(objectsender,System.EventArgse)|this.oleConnectionl.Open();stringsql="updateininfosetInAccount=,*+textAccount.Text.Trim()+“',InPrice=,/"+textPrice.Text.Trim()+“',"+"InValue='*+textValue.Text.TrimO,InDate=,*+datel.Text.TrimO+**,InDealer='+textDealer.Text.Trim()+"',"+工学结合创新教程数据库结构(C语言版)*InSaver=,*+textSaver.Text.Trim()+"',InStore=,*+textStore.Text.TrimO+**,Remark=,*+textRemark.Text.Trim()+*>"+"whereInID=*+this.Tag.ToStringO.Trim()+**;oleCommand1.CommandText=sql;oleCommandl.ExecuteNonQuery();MessageBox.Show("修改进货信息成功!","提示");this.Close();this,oleConnection1.Close();)7.5.4查询入库信息在主界面中单击【入库信息管理】I【查询入库信息】,进入入库信息查询界面,如图7-17所示。图7-17入库信息查询界面在该界面中,共有4个查询条件:物资编号、物资名称、入库时间和物资型号。可以根据任意一个条件进行查询,也可以根据物资名称、入库时间和物资型号三个条件查询。查询功能的代码可参考例程7-18所示。例程7-18查询功能的代码privatevoidbtQuery_Click(objectsender,System.EventArgse)项目1stringsql="selectMNameas物资名称,MModelas物资型号,Mtypeas类型,MUnitas单位,InAccountas数量,”+"InPriceas单价,InValueas金额,InDateas入库时间,InDealeras经办人,InSaveras保管人,InStoreas仓库,Remarkas备注,"+ JHH"ininfo.MIDas物资编号,InlDas入库编号frommaterialinfo,ininfowherematerialinfo.MID=ininfo.MID*;if •(textID.Text.Trim()=*/z&&textName.Text.Trim()==*zz&&textModel.Text.Trim()==*z,&&datel.项目3Text.Trim()==**&&date2.Text.TrimO==**)(MessageBox.Show(”请输入查询条件!","警告");return;} 项目4elseif(textID.Text.TrimO!="")sql=sql+*andininfo.MID=*+***+textID.Text.Trim()+**sql=sql+*andininfo.MID=*+***+textID.Text.Trim()+**else(if(textName.Text.TrimO!="")sql=sql+“andMName="+textName.Text+“'";if(textModel.Text.TrimO!=””)sql=sql+*andMModel="+textModel.Text+"'if(datel.Text.TrimO!=""&&date2.Text.TrimO!=(DateTimedt1=Convert.ToDateTime(datel.Text);DateTimedt2=Convert.ToDateTime(date2.Text);sql=sql+*andInDatebetween"+"#"+dtl+"#"+"and"+"#"+dt2+"#";项目5项目6项目7项口8项口8项目9oleConnectionl.Open();OleDbDataAdapteradp=newOleDbDataAdapter(sql,oleConnectionl);DataSetds=newDataSet();ds.Clear();adp.Fill(ds,"in");dataGridl.DataSource=ds.Tables[0].DefaultView;dataGridl.CaptionText="共有"+ds.Tables[0].Rows.Count+”条查询记录”;oleConnectionl.Close();7.6出库信息管理7.6.1添加出库信息在主界面中单击【出库信息管理】I【添加出库信息工进入出库信息添加界面,如图7-18所示。图7-18出库信息查询界面在这个界面中分为两个部分,物资信息和出库信息。物资信息是从物资信息表中得到,把物资编号与ComboBox控件绑定,然后通过选择物资编号来显示物资信息,并把它们显示到相应的TextBox控件中。该部分的代码参考例程7-19o例程779数据绑定的代码privatevoidOutAdd_Load(objectsender,System.EventArgse){DataSetds=newDataSet();OleDbDataAdapteradp=newOleDbDataAdapteroleConnectionl);adp.SeiectCommand.CommandText="selectMIDfrommaterialinfo^;adp.Fill(ds);comMID.DataSource=ds.Tables[0].DefaultView;comMID.DisplayMember="MID";comMID.ValueMember="MID";privatevoidcomMID_SelectedIndexChanged(objectsender,System.EventArgse)DataSetds=newDataSet();OleDbDataAdapteradp=newOleDbDataAdapter(**,oleConnectionl);stringsql="select*frommaterialinfowhereMID='"+comMID.Text.Trim。+“adp.SelectCommand.CommandText=sql;adp.Fill(ds);this.textName.Text=ds.Tables[0].Rows[0][1].ToStringO.TrimO; .项目4this.textModel.Text=ds.Tables[0].Rows[0][2].ToString().TrimO;this.textType.Text=ds.Tables[0].Rows[0][3].ToStringO.TrimO;this.textUnit.Text=ds.Tables[0].Rows[0][4].ToStringO.TrimO;, 项目5在出库信息部分把相应的数据填写完整,单击【确定】按钮,把数据编号和出库信息保存到出库信息表中。该部分的代码参考例程7-20。例程7-20【确定】按钮的代码privatevoidbtAdd_Click(objectsender,System.EventArgse) 项目6(if(comMID.Text.Trim()=="")MessageBox.Show(〃请填写物资编号!","提示");oleConnectionl.Open();stringsql="select*fromoutinfowhereMID='"+comMID.Text.Trimthis,oleCommand1.CommandText=sql;if(null==oleCommand1.ExecuteScalar())(・ 11 〃.一, , 项目9stringsql1=insertintooutinto(MID,OutAccount,OutPrice,Outvalue,OutDate,OutDealer,OutSaver,OutStore,Remark)values"+ "('"+comMID.Text.Trim'"+textAccount.Text.Trim。"+textPrice.Text.Trim"+textValue.Text.Trim()+*','*+datel.Text.Trim()+*目B工学结合创新教程数据库结构(C语言版)','*+textDealer.Text.Trim()+*>,*+*+textSaver.Text.Trim()+"','*+textStore.Text.Trim()+*','*+textRemark.Text.Trim()+〃')”;oleCommand1.CommandText=sql1;oleCommand1.ExecuteNonQuery();MessageBox.Show("添加出库信息成功!","提示");this.Close();)elseMessageBox.Show("物资编号”+comMID.Text.Trim()+”已经存在!","警告");oleConnectionl.Close();}}7.6.2浏览出库信息在主界面中单击【出库信息管理】I【浏览出库信息】,进入出库信息浏览界面,如图7-19所示。图7-19出库信息浏览界面在这个界面中有一个DataGrid控件,通过该控件所提供的绑定绑定功能可用于显示程序中所检索出的数据集,在该界面中显示的是入库信息,数据绑定的代码如例程7-21所示。例程7-21数据绑定的代码DataSetds;privatevoidOut_Load(objectsender,System.EventArgse)项口1oleConnectionl.Open();stringsqlDataSetds;privatevoidOut_Load(objectsender,System.EventArgse)项口1oleConnectionl.Open();stringsql="selectMNameas物资名称,MModelas单位,OutAccountas数量,”+as物资型号,Mtypeas类型,MUnit"OutPriceas单价,OulValueas金额,OutDateas出库时间,OutDealeras领取人,OutSaveras保管人,OutStoreas仓库,Remarkas备注,"+*Outinfo.MIDas物资编号,OutIDas入库编号frommaterialinfo,Outinfowherematerialinfo.MID=Outinfo.MID*;OleDbDataAdapteradp=newOleDbDataAdapter(sql,oleConnectionl);ds=newDataSet();ds.Clear();adp.Fill(ds,"out");dataGridl.DataSource=ds.Tables[0].DefaultView;dataGridl.CaptionText="共有"+ds.Tables[0].Rows.Count+"条记录”;oleConnectionl.Close();项目3项口4项目5在这个界面中还包括3个button控件,分别是【修改】、【删除】、【退出】。删除某条信息时,必须要考虑与该信息相关的其他信息的存在,如果没有,则可直接删掉,否则为了保证数据的完整性,则不允许直接删掉该条信息。【删除】按钮的代码可参考例程7・22。项目6例程7-22【删除】按钮的代码privatevoidbtDelClick(objectsender,System.EventArgse)(if(dataGridl.CurrentRowlndex>=0&&dataGridl.DataSource!=null&&dataGridl[dataGridl.CurrentCell]!=null)(stringsql="delete*fromoutinfowhereOutID=*+ds.Tables[*out*].Rows[dataGridl.CurrentCell.RowNumber][13].ToStringO.TrimO项目8oleConnectionl.Open();oleCommandl.ConunandText=sql;oleCommand1.ExecuteNonQuery();MessageBox.Show("删除出库*+ds.Tables[*out*].Rows[dataGridl.CurrentCell.RowNumber][0].ToStringO.Trim()+*>成功”,〃提示〃);yr.. 1m(\ 项目1oleConnectionl.Close。;工学结合创新教程数据库结构(C语言版)}elseMessageBox.Show("没有指定出库信息!","提示");)7.6.3修改出库信息在出库信息浏览界面中,单击【修改】按钮,进入出库信息修改界面,如图7-20所示。图7-20出库信息修改界面在该界面中物资信息为只读,修改的只是出库信息表中的数据。对用户选中的出库信息进行修改时,需要从出库信息浏览窗口中将所选中的出库信息的参数即出库编号,传递到修改出库信息窗口中,作为修改出库信息界面的初始化数据,用的方法是Tag属性,该部分代码如例程7-23所示。例程7-23数据绑定传递的代码OutModifyoutModify;privatevoidbtModify_Click(objectsender,System.EventArgse)if(dataGridl.DataSource!=null||dataGridl[dataGridl.CurrentCell]!=null)outModify=newOutModify();outModify.textMID.Text=ds.Tables[0].Rows[dataGridl.CurrentCell.RowNumber][12].ToStringO.TrimO;outModify.textName.Text=ds.Tables[0].Rows[dataGridl.CurrentCell.RowNumber][0].ToStringO.TrimO;outModify.textModel.Text=ds.Tables[0].Rows[dataGridl.CurrentCell.RowNumber][1].ToStringO.TrimO;outModify.textType.Text=ds.Tables[0].Rows[dataGridl.CurrentCell.RowNumber][2],ToStringO.TrimO;outModify.textUnit.Text=ds.Tables[0].Rows[dataGridl.CurrentCell.RowNumber][3].ToStringO.TrimO;outModify.textAccount.Text=ds.Tables[0].Rows[dataGridl.CurrentCell.RowNumber][4].ToStringO.TrimO;outModify.textPrice.Text=ds.Tables[0].Rows[dataGridl.CurrentCell.RowNumber][5].ToStringO.TrimO;outModify.textValue.Text=ds.Tables[0].Rows[dataGridl.CurrentCell.RowNumber][6].ToStringO.TrimO;outModify.datel.Text=ds.Tables[0].Rows[dataGridl.CurrentCell.RowNumber][7].ToStringO.TrimO;outModify.textDealer.Text=ds.Tables[0].Rows[dataGridl.CurrentCell.RowNumber][8].ToStringO.TrimO;outModify.textSaver.Text=ds.Tables[0].Rows[dataGridl.CurrentCell.RowNumber][9].ToStringO.TrimO;outModify.textStore.Text=ds.Tables[0].Rows[dataGridl.CurrentCell.RowNumber][10].ToStringO.TrimO;outModify.textRemark.Text=ds.Tables[0].Rows[dataGridl.CurrentCell.RowNumber][11].ToStringO.TrimO;outModify.Tag=ds.Tables[0].Rows[dataGridl.CurrentCell.RowNumber][13].ToStringO.TrimO;outModify.ShowDialogO;}elseMessageBox.Show("没有指定出库信息!","提示");项口1项目3项口4项目5项目6项目7项口8项目9修改完后,单击【确定】按钮,把修改后的数据更新到数据库中相应的字段中。【确定】按钮的代码可参考例程7-24所示。例程7-24【确定】按钮的代码privatevoidbtAdd_Click(objectsender,System.EventArgse)(this.oleConnectionl.Open();stringsql=*updateoutinfosetOutAccount=,"+textAccount.Text.Trim()+“',OutPrice=,*+textPrice.Text.Trim()+“',""OutValue='"+textValue.Text.Trim()+"',OutDate=,"+datel.Text.Trim。,OutDealer='"+textDealer.Text.Trim()+"

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论