版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
小型超市收银系统商品入库商品销售营业统计小型超市收银系统商品入库商品销售营业统计商品信息供应商信息用户信息图3-1系统功能结构图超市收银系统的业务流程图,如图3-2所示。图3-2系统业务流程图3.3.2系统各功能模块定义(1)商品入库模块该模块用于实现商品的入库管理,当供应商所供商品出现问题需退货时可以实现退货管理。另外用户还可以依据条件查询相关的入库记录。(2)商品销售模块该模块用于实现商品售出、收银功能。顾客倘如对商品不满意还可以进行退货处理。(3)营业统计模块该模块实现商品销售状况及入库状况统计分析,让系统用户可以依据时间查询统计信息。(4)商品信息模块该模块实现商品基本信息的管理,如商品的添加、修改、删除操作、条件查询。对于低于库存报警值的商品会显示出来。(5)用户信息模块该模块实现用户基本信息的管理,含用户的添加、修改、删除,用户信息记录的阅读。(6)供应商信息模块该模块实现供应商基本信息的管理,系统用户可以实现供应商信息的添加、删除、修改,条件查询以及查看供应商可供应的相关商品。3.4数据库设计数据库在一个管理信息系统中占有特殊重要的地位,数据库结构设计的好坏将干脆对应用系统的效率以及实现的效果产生影响。合理的数据库结构设计可以提高数据存储的效率,保证数据的完整和一样,同时,合理的数据库也将有利于程序的实现[6]。设计数据库系统时应当充分了解用户各个方面的需求,包括现有的以及将来可能增加的需求。3.4.1数据库的需求分析SQLServer数据库的建立方法可以分成两个阶段,第一个阶段是依据要输入的数据性质,新增表并设置表的字段名称、数据类型和语句,其次个阶段是在表内输入数据。依据上述系统功能的分析,得出系统有如下需求信息:(1)系统必需能够区分各种用户,如库存员、收银员。(2)系统支持用户的增加、登陆。(3)系统必需能够显示各种商品的信息,并允许用户运用搜寻功能来查找自己所须要的商品。(4)系统必需能将全部商品信息进行分类。(5)系统能支持用户将商品入库、退货。(6)系统能支持用户将商品售出、退货。(7)系统支持供应商信息的管理。(8)系统支持营业状况的查询。经过上述功能分析和需求总结,设计如下的数据项和数据结构:(1)用户,包括数据项:编号,用户名,密码,权限。(2)商品类别,包括数据项:编号,商品名称。(3)商品,包括数据项:商品编号(条形码),商品名称,类别,库存量、报警值,计量单位,规格,售价。(4)供应商,包括数据项:名称,联系人,联系电话,传真,地址,合作起始时间。(5)销售记录,包括数据项:编号,操作人,商品编号,售价,售出数量,售出时间。(6)进货记录,包括数据项:商品,供应商,操作人,进价,进货数量,进货时间。(7)供货,包括数据项:供应商,商品,最新进价。3.4.2数据库概念结构设计得到上面的数据项和数据结构后,就可以设计出系统中的各个实体以及他们之间的关系,为后面的逻辑结构设计打下基础。本系统依据上面功能分析和需求总结设计出的实体共有下面几个,下面分别列出本系统所运用到的各基本实体和各实体之间的联系。如图3-3所示:
图3-3实体联系(E-R)图3.4.3数据库逻辑设计(1)表设计将数据库的概念结构设计转换成关系模型,就得到了以下的几张数据库中的表[7]:下面分别介绍这些表。系统登录用户的基本信息保存在用户信息表里,其中对于用户编号,通过自增方式实现,无需用户手动编号,编号从1000起始。详细说明如表3-1所示。表3-1用户信息表(Users)序号属性名字段名类型长度NULL默认备注1编号UserIDint4×主键自增,标识种子10002真实名字UserNamevarchar10×3密码UserPasswordvarchar50×MD5加密存储4权限UserRightvarchar10×商品种类繁多,可以划分为大范围的不同种类。对于这些种类,已事先划分并存储于数据库中,不须要用户自动添加。商品类别信息表如下表3-2。表3-2商品类别信息表(GoodsType)序号属性名字段名类型长度NULL默认备注1类别编号TypeIDtinyint×主键自增2名称TypeNamenvarchar10×商品信息表记载的是商品的详细信息,含商品编号、名称、类别、计量单位、规格、售价、库存量等等。详细的各字段属性说明和类型如下表3-3。表3-3商品信息表(GoodsInfo)序号属性名字段名类型长度NULL默认备注1商品编号GoodsIDnvarchar20×主键2类型号TypeIDtinyint×3名称GoodsNamenvarchar50×4计量单位GoodsUnitnvarchar5×5规格GoodsNormnvarchar20√6售价GoodsSellPricesmallmoney×7库存量GoodsNumint4×08报警值AlarmNumint4×09备注GoodsRemarknvarchar100√描述信息入库记录表包含商品入库的相关信息,入库信息有入库时间、操作人、进库商品、商品数量等。每一笔商品的入库都对应一个编号,具有唯一性。在这里,对编号的处理就是用入库时的时间做编号。详细的各字段的属性说明和类型如下表3-4所示。表3-4入库记录表(StockInfo)序号属性名字段名类型长度NULL默认备注1编号StockIDvarchar20×主键,和时间相关2商品编号GoodsIDnvarchar20×外键3供应商编号CompanyIDint4×外键4操作员Operatorint4×外键5进价GoodsPricesmallmoney×6数量GoodsNumint4×17备注Remarknvarchar100√商品销售信息存储在销售记录表中,流水编号也接受时间作为编号,具有唯一性。各字段的详细状况见下表3-5。表3-5销售记录表(SellInfo)序号属性名字段名类型长度NULL默认备注1编号SellIDvarchar20×主键,和时间相关2商品编号GoodsIDnvarchar20×外键3操作者Operatorint4×外键4售价SellPricesmallmoney×5数量GoodsNumint4×6备注Remarknvarchar100√退货缘由供应商供货价格表中记载的是供应商所可商品的信息,含商品编号、供货商编号、最新进价。各字段的详细信息见下表3-6。表3-6供应商供货价格表(StockPrice)序号属性名字段名类型长度NULL默认备注1商品编号GoodsIDnvarchar20×组合主键2供应商编号CompanyIDint4×组合主键3最新进价GoodsSellPricesmallmoney×供应商信息表记录的是供应商的基本信息,其中编号由系统自动编号,实行主键自增方式,编号始于1000。各字段的详细信息见下表3-7。
表3-7供应商信息表(Company)序号属性名字段名类型长度NULL默认备注1编号CompanyIDint4×主键自增,标识种子10002名称CompanyNamenvarchar50×3联系人CompanyDirectornvarchar10×4电话CompanyPhonenvarchar20×5传真CompanyFaxnvarchar20√6地址CompanyAddnvarchar50×7合作时间HzDataTimedatetime×(2)视图设计依据逻辑模型所设计出的各种数据表构成了完整的物理数据库。由于业务范围的限制,每一个用户不行能访问数据库系统中的全部数据表,所访问的只是数据表的一个子集。我们把一个用户能访问到的数据表集合称为一个视图(View)[8]。视图是以一样和直观的方式供应应用户的数据形式。视图以这种形式给用户供应数据,一方面为了满意用户对数据访问的便利性、简洁性须要,使数据在视图中以更符合用户要求和喜好的形式呈现出来,另一方面,为了保证数据的一样性,最好不要把数据表干脆供应应最终用户。该数据库中涉及到的视图有两个:视图QuerySell,对应的Transact-SQL语句:SELECTdbo.SellInfo.SellID,dbo.SellInfo.GoodsID,dbo.GoodsInfo.GoodsName,dbo.GoodsType.TypeName,dbo.Users.UserName,dbo.SellInfo.SellPrice,FROMdbo.GoodsInfoINNERJOINdbo.SellInfoONdbo.GoodsInfo.GoodsID=dbo.SellInfo.GoodsIDINNERJOINdbo.UsersONdbo.SellInfo.Operator=dbo.Users.UserIDINNERJOIN视图QueryStock,对应的Transact-SQL语句:SELECTdbo.StockInfo.StockID,dbo.StockInfo.GoodsID,dbo.GoodsInfo.GoodsName,dbo.GoodsType.TypeName,dbo.Company.CompanyName,FROMdbo.StockInfoINNERJOINdbo.GoodsInfoONdbo.StockInfo.GoodsID=dbo.GoodsInfo.GoodsIDINNERJOINdbo.UsersONdbo.StockInfo.Operator=dbo.Users.UserIDINNERJOINdbo.CompanyONdbo.StockInfo.CompanyID=dbo.Company.CompanyIDINNERJOIN
4系统实现系统用SQLServer2005做后台数据库,进行基于.net发平台的WinForm应用程序开发,基本实现其功能。以下将描述系统几个主要功能模块的运行和测试的结果。4.1登陆系统模块当我们建立了一个完整的系统时,尤其对于管理系统,对于进入每个系统的人员我们都要对他进行身份验证,我们当然不希望有任何人进入该系统进行恶意的破坏,对系统中的数据进行修改,维护该系统的系统管理员也不希望有任何麻烦,所以对系统进行平安爱惜显的很重要,无论对于谁,系统的平安问题是首要的[9]。为了解决这个问题,有一个简洁、好用,但是老套的方法,就是口令加密。在该小型超市收银系统中对口令的加密实行的是常用的MD5加密算法。在新增或修改用户信息时,存入数据库的是用户密码的MD5哈希值,在登录验证时依据用户输入的密码计算相应的MD5哈希值进行比较。加密方法:publicstaticstringEncryptMD5(stringoldData){//将字符串转化为字节序列Byte[]clearBytes=newUnicodeEncoding().GetBytes(oldData);//计算字节序列对应的Hash值Byte[]hashedBytes=((HashAlgorithm)CryptoConfig.CreateFromName("MD5")).ComputeHash(clearBytes);//返回经MD5加密后的字符串returnBitConverter.ToString(hashedBytes);}在用户登录系统时,用户只须要输入支配的用户ID,只要ID号正确就可以自动显示出相应的用户名。为了防止他人获知用户的密码,增加系统的平安性,我们将待输入密码的文本框的PasswordChar设为*,当用户输入密码后,系统将对所输入的密码进行检查,只有当密码正确才可进入到系统主界面,否则系统会提示错误。登录界面如图4-1所示。
图4-1登录界面图用户登录成功后,会登记登录该系统的用户的权限,权限的不同,进入主界面后可进行的操作而异,体现在控件的可响应用户的鼠标点击事务和否。主界面如图4-2所示。由于该用户属商品销售中的收银员,可以看到他只具有商品销售的权限。图4-2系统主界面图4.2商品信息模块商品基本信息管理模块,用户可以对商品信息加以管理,界面可交互性强,运行时的界面图如下图4-3。其中红色显示为低于库存值,须要进货的商品。图4-3商品基本信息管理界面图4.3商品入库模块具有库存管理权限的用户进行商品入库操作时,须要输入商品编号,至于供应商可以从下拉列表中选择,假如供应商记录未添加至数据库,可先单击右侧的“添加供应商”按钮。依次输入进货价、进货数量,当进货数量为负数时进行就是退货操作。确认进货时若发觉为新商品则提示先新增商品,进货记录成功添加出现对话框提示。进货运行界面如下图4-4所示。图4-4商品入库运行图在入库查询中,可以依据各种条件组合查询,在输入商品名称时可实现模糊查询匹配,满意条件的入库记录将出现在网格中[10]。如图4-5。图4-5入库查询界面图4.4商品销售模块商品销售模块能处理商品销售业务过程,输入商品编号后回车确认后单击“确认”按钮就可将商品添加至待售商品列表。依据快捷键操作,修改数量。当顾客对购买的商品不满意时,在未运用商品的状况下,可以对商品进行退货。这时只需将商品数量的修改置为负数即可。另外可以在备注框中输入退货缘由信息,便利了解退货缘由,反馈给商品厂家。商品销售运行界面图如下图4-6所示。图4-6商品销售运行界面图开发商品销售模块过程中,对输入的数据要进行严格限制。此时,用到较多的是TextBox控件的KeyPress事务和TextChange事务,下面对这两个事务进行详细说明。(1)实收金额文本框中限制金额的输入合理,只能是数字键、BackSpace键、小数点键被按下时才接受所按下的键,实现的代码如下[11]:privatevoidtxtGetMoney_KeyPress(objectsender,KeyPressEventArgse){if(e.KeyChar!=8&&!char.IsDigit(e.KeyChar)&&e.KeyChar!='.'&&e.KeyChar!='-'){MessageBox.Show("输入数字");//弹出提示e.Handled=true;}}(2)找零金额由系统自动计算出并显示在文本框中,实现代码如下:privatevoidtxtGetMoney_TextChanged(objectsender,EventArgse)//当所收付款变更时,所找零钱数目也跟着变更{if(txtGetMoney.Text!=""){if(txtGetMoney.Text!="-"){floatfltMoney=Convert.ToSingle(txtGetMoney.Text.ToString());floatfltNeedPay=Convert.ToSingle(lblNeedM.Text.ToString());txtChange.Text=(fltMoney-fltNeedPay).ToString("0.0");}}else{txtChange.Text="";}}应当所收的钱数及商品的数量也由系统自动计算出,当网格中待售商品的信息有所变更时就自动计算。相应的系统运行界面如下图4-7所示。实现代码如下:privatevoidSetCount()//并修改标签中的值,即售出总件数及售价{intintGoodsNum=0;floatfltMoney=0.0f;for(inti=0;i<dataGridView1.Rows.Count;i++){intGoodsNum+=Convert.ToInt32(dataGridView1.Rows[i].Cells[4].Value);fltMoney+=(Convert.ToSingle(dataGridView1.Rows[i].Cells[3].Value)*Convert.ToInt32(dataGridView1.Rows[i].Cells[4].Value));}intGoodsNum=Math.Abs(intGoodsNum);lblCount.Text=intGoodsNum.ToString();lblNeedM.Text=fltMoney.ToString();}图4-7商品销售结算结果图手动输入商品编号时,当已输入前七位后系统将自动检索前部相同的商品编号信息。实现代码如下:privatevoidtxtID_TextChanged(objectsender,EventArgse){//自动补充功能,假如文本框中已输入字符总长度不小于则允许自动补充if(txtID.Text.ToString().Length>=7){AutoCompleteStringCollectionmyString=newAutoCompleteStringCollection();stringstrID=txtID.Text.ToString();DataTablemyTable=newDataTable();stringstrSql="selectGoodsIDfromGoodsInfowhereGoodsIDlike'";strSql+=strID;strSql+="%'";myTable=mySql.SelectDataBase(strSql);if(myTable.Rows.Count>0){for(inti=0;i<myTable.Rows.Count;i++){myString.Add(myTable.Rows[i][0].ToString());}txtID.AutoCompleteCustomSource=myString;txtID.AutoCompleteSource=AutoCompleteSource.CustomSource;txtID.AutoCompleteMode=AutoCompleteMode.Suggest;}}else{txtID.AutoCompleteSource=AutoCompleteSource.None;txtID.AutoCompleteMode=AutoCompleteMode.None;}}商品销售的过程中要和数据库交涉,和数据库频繁传输数据,接受ADO.NET数据库访问技术。为了提高效率,对插入商品销售记录实现时借助于存储过程来提高速度。4.5营业统计模块用户可以依据时间段的输入查看营业状况,本系统对营业状况的分类,有依详细明细,有按商品分类,也有按收银员统计。运行界面图如下图4-8所示:图4-8营业统计运行结果4.6供应商模块对供应商信息的管理,增删改查都在该界面完成,工具栏中的增删改按钮对应相应的操作。初进入到该窗体时全部的供应商信息都会出现在窗体中的网格,用户可以输入查询条件定位出某供应商,对其进行修改删除操作。双击网格中某供应商的记录,会出现该供应商所供应的商品信息。相应的运行界面图如下图4-9所示。图4-9供应商管理运行图修改删除可实现批量更新,而新增必需在无改删操作或者以上操作后已做保存。这得利于数据库ADO.NET技术中供应的对象SqlCommandBuild,将离线数据库DataSet集中的数据更新至数据库,保持二者的同步和一样性。实现代码如下://保持和数据库的同步更新publicDataSetUpdateDataBase(DataSetchangedDataSet,stringtableName){this.msqlCon=newSqlConnection(mstrCon);this.msqlDa=newSqlDataAdapter(this.strSQL,this.msqlCon);this.msqlCmdBld=newSqlCommandBuilder(msqlDa);this.msqlDa.Update(changedDataSet,tableName);if(changedDataSet.Tables.Contains(tableName)==true){changedDataSet.Tables[tableName].Clear();}msqlDa.Fill(changedDataSet,tableName);returnchangedDataSet;//返回已更新的数据库表}4.7用户信息模块具有系统管理员的用户可打开用户信息模块对应的窗体,完成对用户信息的管理,运行界面如下图4-10。图4-10用户信息界面运行图
5总结经过三个月的努力,我最终完成了小型超市收银系统的全部设计过程,各功能模块运行流畅自然且具有确定的好用价值。软件设计是一个精细漫长的过程。在整个过程中,都须要周密的支配和支配,每一步骤,都须要依据软件工程标准来完成。在设计中,我始终坚持理论指导实践原则,并通过实践来加强理论的学习。通过实习熬炼,我熟悉了软件的一般过程,加强了对实际问题的处理实力。在实习过程中,我也遇到了一些困难,主要表现了技术和阅历的欠缺,但通过努力,最终一一克服了。由于开发者实力有限,加上时间仓促,本系统难免会出现一些不足之处,例如:本系统只适合小型超市运用,不能适合中大型超市运用;超市管理系统涉及范围宽,要解决的问题多,功能困难,实现困难,但由于限于时间,本系统只能做出其中的一部分功能。对于以上出现的问题,我们深表歉意,如发觉还有其它问题,希望老师指责指正。该软件有待改进,体现在如下方面:其一,条形码扫描仪的引进将从根本上提高业务处理的速度,提超群市运作的速度。在这个系统中它缺少了。只因实力有限。本人亦曾查询过相关资料,了解到要实现这一功能须要涉及到的学问有:串口通信、多线程等等。再者,界面美工方面有不足之处。最终,系统的可扩展性不是特殊强,因为本系统实行的C/S两层开发,虽然有用到些许的公共类,实现了代码共享,节约了系统资源,但终归有限且是在在两层开发的思路上设计的。希望在以后的时间里能接着完善。
参考文献[1]张海藩.软件工程导论(第五版)[M].北京:清华高校出版社,2008年.[2]卫红春,朱欣娟.信息系统分析和设计[M].西安:西安电子科技高校出版社,2008年.[3]JoeMayo.C#揭秘[M].北京:人民邮电出版社,2010年.[4]闪四清.完全驾驭SQLServer2000[M].北京:人民邮电出版社,2001年.[5]谢希仁.计算机网络[M].大连:大连理工高校出版社,2000年.[6]王珊,萨师煊.数据库系统概论(第四版)[M].北京:高等教化出版社,2006年.[7]闪四清.数据库系统原理和应用教程[M].北京:清华高校出版社,2002年.[8]李律松,陈少刚.VisualC#数据库高级教程[M].北京:清华高校出版社,2005年.[9]唐政,房大伟.C#项目开发.北京:清华高校出版社,2008年.[10]李满潮.VisualC#.NET高级编程[M].北京:清华高校出版社,2002年.[11]MatthewReynolds,KarliWatson..NETEnterpriseDevelopmentinC#:FromDesigntoDeployment[M].London:WroxPressLtd,2002.
致谢时间如梭,高校四年立即就要结束了,在这四年的学习生活中,我学习到了许多学问,专业学问方面更是有了很大的提高,是我这一生当中最宝贵的财宝。在这最终的阶段,我诚意的向学校的各位老师和我的同学及其关切激励我的亲人表示我最诚意的感谢,感谢他们在这四年当中对我的帮助和关切。感谢从大一到大四全部的授课老师,他们孜孜不倦的教化我们,使我们真正的学习到了学问。感谢***高校的图书馆,藏书丰富,我总能从中获得我想要的学问和思想。这次论文其实也是学习的过程,从图书馆中我找到许多相关学习指导书籍,才有了这次毕业设计的顺当完成,我感谢她。尤其要感谢的是我的毕业设计辅导老师,**老师。在他的帮助下我们才能顺当的完成这次设计。*老师多次询问并督促探讨进程,而且为我指引迷津,帮助我开拓探讨思路,细心点拨、热忱激励。*老师严谨求实的看法,踏踏实实的精神给我留下了深刻的印象。这些足以让我终生受益。我祝愿陶老师工作顺心顺意,心想事成!最终感谢帮助过我的每一个人,没有他们就没有我的今日。
附录公共类代码:classDbSQL{privatestringmstrCon="DataSource=localhost;Database=SuperMarket;UserID=diff;Password=diffdiff";privateSqlConnectionmsqlCon;privateSqlDataAdaptermsqlDa;privatestringstrSQL;//SQL语句privateSqlCommandBuildermsqlCmdBld;privateDataSetmds=newDataSet();//publicvoidOpen()//{//this.msqlCon=newSqlConnection(mstrCon);//}///干脆操作数据库(未创建该类的实例时干脆用)//返回DataTable,检索数据库数据,传入字符串,干脆操作数据库publicDataTableSelectDataBase(stringtempStrSQL){this.msqlCon=newSqlConnection(mstrCon);DataSettempDataSet=newDataSet();this.msqlDa=newSqlDataAdapter(tempStrSQL,this.msqlCon);this.msqlDa.Fill(tempDataSet);returntempDataSet.Tables[0];}//数据库数据更新(传字符串,干脆操作数据库)publicintUpdateDataBase(stringtempStrSql){this.msqlCon=newSqlConnection(mstrCon);msqlCon.Open();SqlCommandtemSqlCmd=newSqlCommand(tempStrSql,msqlCon);intintNumber=temSqlCmd.ExecuteNonQuery();//返回数据库中影响的行数msqlCon.Close();returnintNumber;}///操作脱机数据库(创建了该类的实例时干脆用)//返回DataSet,检索数据库,传入字符串,及表名称,publicDataSetSelectDataBase(stringtempStrSQL,stringtempTableName){this.strSQL=tempStrSQL;this.msqlCon=newSqlConnection(mstrCon);this.msqlDa=newSqlDataAdapter(this.strSQL,this.msqlCon);if(mds.Tables.Contains(tempTableName)==true){this.mds.Tables[tempTableName].Clear();}this.msqlDa.Fill(mds,tempTableName);returnmds;}//保持DataSet和数据库的同步更新publicDataSetUpdateDataBase(DataSetchangedDataSet,stringtableName){this.msqlCon=newSqlConnection(mstrCon);this.msqlDa=newSqlDataAdapter(this.strSQL,this.msqlCon);this.msqlCmdBld=newSqlCommandBuilder(msqlDa);this.msqlDa.Update(changedDataSet,tableName);if(changedDataSet.Tables.Contains(tableName)==true){changedDataSet.Tables[tableName].Clear();}msqlDa.Fill(changedDataSet,tableName);returnchangedDataSet;//返回已更新的数据库表}//用于用户登录验证publicintUserLogin(intuserId,stringuserPwd){SqlCommandmyCmd=newSqlCommand("IsUser",msqlCon);myCmd.CommandType=CommandType.StoredProcedure;//给存储过程添加参数SqlParameterUserId=newSqlParameter("@UserId",SqlDbType.Int,4);UserId.Value=userId;myCmd.Parameters.Add(UserId);//给存储过程添加参数SqlParameterUserPwd=newSqlParameter("@Userpwd",SqlDbType.NVarChar,10);UserPwd.Value=userPwd;myCmd.Parameters.Add(UserPwd);//给存储过程添加参数SqlParameterflag=newSqlParameter("@exits",SqlDbType.Int,4);flag.Direction=ParameterDirection.Output;myCmd.Parameters.Add(flag);//执行数据库操作myCmd.ExecuteNonQuery();//取得存储过程OUTPUT参数的值作为函数的返回值returnConvert.ToInt32(flag.Value);}//插入商品基本信息publicboolAddGoods(GoodsDetailstempGoods){this.msqlCon=newSqlConnection(mstrCon);SqlCommandmyCmd=newSqlCommand("AddGoods",msqlCon);myCmd.CommandType=CommandType.StoredProcedure;//给存储过程添加参数SqlParametermyID=newSqlParameter("@GoodsID",SqlDbType.NVarChar,20);myID.Value=tempGoods.GoodsId;myCmd.Parameters.Add(myID);//SqlParametermyName=newSqlParameter("@GoodsName",SqlDbType.NVarChar,50);myName.Value=tempGoods.GoodsName;myCmd.Parameters.Add(myName);//SqlParametermyType=newSqlParameter("@TypeName",SqlDbType.NVarChar,10);myType.Value=tempGoods.TypeName;myCmd.Parameters.Add(myType);//SqlParametermyUnit=newSqlParameter("@GoodsUnit",SqlDbType.NVarChar,5);myUnit.Value=tempGoods.GoodsUnit;myCmd.Parameters.Add(myUnit);//SqlParametermyNorm=newSqlParameter("@GoodsNorm",SqlDbType.NVarChar,20);myNorm.Value=tempGoods.GoodsNorm;myCmd.Parameters.Add(myNorm);//SqlParametermyPrice=newSqlParameter("@GoodsSellPrice",SqlDbType.SmallMoney);myPrice.Value=tempGoods.GoodsSellPrice;myCmd.Parameters.Add(myPrice);//SqlParametermyAlarm=newSqlParameter("@AlarmNum",SqlDbType.Int);myAlarm.Value=tempGoods.AlarmNum;myCmd.Parameters.Add(myAlarm);//SqlParametermyRemark=newSqlParameter("@GoodsRemark",SqlDbType.NVarChar,100);myRemark.Value=tempGoods.GoodsRemark;myCmd.Parameters.Add(myRemark);//执行存储过程try{msqlCon.Open();myCmd.ExecuteNonQuery();returntrue;}catch{returnfalse;}finally{msqlCon.Close();}}//修改商品基本信息publicboolUpdateGoods(GoodsDetailstempGoods){this.msqlCon=newSqlConnection(mstrCon);SqlCommandmyCmd=newSqlCommand("UpdateGoods",msqlCon);myCmd.CommandType=CommandType.StoredProcedure;//给存储过程添加参数SqlParametermyID=newSqlParameter("@GoodsID",SqlDbType.NVarChar,20);myID.Value=tempGoods.GoodsId;myCmd.Parameters.Add(myID);//SqlParametermyName=newSqlParameter("@GoodsName",SqlDbType.NVarChar,50);myName.Value=tempGoods.GoodsName;myCmd.Parameters.Add(myName);//SqlParametermyType=newSqlParameter("@TypeName",SqlDbType.NVarChar,10);myType.Value=tempGoods.TypeName;myCmd.Parameters.Add(myType);//SqlParametermyUnit=newSqlParameter("@GoodsUnit",SqlDbType.NVarChar,5);myUnit.Value=tempGoods.GoodsUnit;myCmd.Parameters.Add(myUnit);//SqlParametermyNorm=newSqlParameter("@GoodsNorm",SqlDbType.NVarChar,20);myNorm.Value=tempGoods.GoodsNorm;myCmd.Parameters.Add(myNorm);//SqlParametermyPrice=newSqlParameter("@GoodsSellPrice",SqlDbType.SmallMoney);myPrice.Value=tempGoods.GoodsSellPrice;myCmd.Parameters.Add(myPrice);//SqlParametermyAlarm=newSqlParameter("@AlarmNum",SqlDbType.Int);myAlarm.Value=tempGoods.AlarmNum;myCmd.Parameters.Add(myAlarm);//SqlParametermyRemark=newSqlParameter("@GoodsRemark",SqlDbType.NVarChar,100);myRemark.Value=tempGoods.GoodsRemark;myCmd.Parameters.Add(myRemark);//执行存储过程try{msqlCon.Open();myCmd.ExecuteNonQuery();returntrue;}catch{returnfalse;}finally{msqlCon.Close();}}//删除商品基本信息publicboolDeleteGoods(stringtempGoodsID){this.msqlCon=newSqlConnection(mstrCon);SqlCommandmyCmd=newSqlCommand("DeleteGoods",msqlCon);myCmd.CommandType=CommandType.StoredProcedure;//给存储过程添加参数SqlParametermyID=newSqlParameter("@GoodsID",SqlDbType.NVarChar,20);myID.Value=tempGoodsID;myCmd.Parameters.Add(myID);//执行存储过程try{msqlCon.Open();myCmd.ExecuteNonQuery();returntrue;}catch{returnfalse;}finally{msqlCon.Close();}}//推断是否存在商品publicboolHasGoods(stringtempGoodsID){this.msqlCon=newSqlConnection(mstrCon);SqlCommandmyCmd=newSqlCommand("HasGoods",msqlCon);myCmd.CommandType=CommandType.StoredProcedure;//给存储过程添加参数SqlParametermyID=newSqlParameter("@GoodsID",SqlDbType.NVarChar,20);myID.Value=tempGoodsID;myCmd.Parameters.Add(myID);//SqlParameterflag=newSqlParameter("@has",SqlDbType.Int);flag.Direction=ParameterDirection.Output;myCmd.Parameters.Add(flag);try{msqlCon.Open();myCmd.ExecuteNonQuery();return(Convert.ToBoolean(flag.Value));}catch{returnfalse;}finally{msqlCon.Close();}}//推断某供应商是否供应某商品publicboolIsSupplyGds(stringtempCmp,stringtempGoodsID){this.msqlCon=newSqlConnection(mstrCon);SqlCommandmyCmd=newSqlCommand("IsSupplyGds",msqlCon);myCmd.CommandType=CommandType.StoredProcedure;//给存储过程添加参数SqlParametermyID=newSqlParameter("@GoodsID",SqlDbType.NVarChar,20);myID.Value=tempGoodsID;myCmd.Parameters.Add(myID);//SqlParametermyCmp=newSqlParameter("@Company",SqlDbType.NVarChar,50);myCmp.Value=tempCmp;myCmd.Parameters.Add(myCmp);//SqlParametermyflag=newSqlParameter("@Has",SqlDbType.Int);myflag.Direction=ParameterDirection.Output;myCmd.Parameters.Add(myflag);//执行存储过程try{msqlCon.Open();myCmd.ExecuteNonQuery();returnConvert.ToBoolean(myflag.Value);}catch{returnfalse;}finally{msqlCon.Close();}}//增加库存publicboolAddStock(stringtempStockID,stringtempGoodsID,stringtempCmp,stringtempOperator,floattempPrice,inttempNum,stringtempRemark,inttempflag){this.msqlCon=newSqlConnection(mstrCon);SqlCommandmyCmd=newSqlCommand("AddStock",msqlCon);myCmd.CommandType=CommandType.StoredProcedure;//给存储过程添加参数SqlParametermySID=newSqlParameter("@StockID",SqlDbType.VarChar,20);mySID.Value=tempStockID;myCmd.Parameters.Add(mySID);//SqlParametermyGID=newSqlParameter("@GoodsID",SqlDbType.NVarChar,20);myGID.Value=tempGoodsID;myCmd.Parameters.Add(myGID);//SqlParametermyCmp=newSqlParameter("@CompanyName",SqlDbType.NVarChar,50);myCmp.Value=tempCmp;myCmd.Parameters.Add(myCmp);//操作者 @Operatorvarchar(10),SqlParametermyOperator=newSqlParameter("@Operator",SqlDbType.VarChar,10);myOperator.Value=tempOperator;myCmd.Parameters.Add(myOperator);//入库量 @GoodsNumint,SqlParametermyNum=newSqlParameter("@GoodsNum",SqlDbType.Int);myNum.Value=tempNum;myCmd.Parameters.Add(myNum);//进价 @GoodsPricesmallmoney,SqlParametermyPrice=newSqlParameter("@GoodsPrice",SqlDbType.SmallMoney);myPrice.Value=tempPrice;myCmd.Parameters.Add(myPrice);//SqlParametermyRemark=newSqlParameter("@Remark",SqlDbType.NVarChar,100);myRemark.Value=tempRemark;myCmd.Parameters.Add(myRemark);//SqlParametermyflag=newSqlParameter("@flag",SqlDbType.TinyInt);myflag.Value=tempflag;myCmd.Parameters.Add(myflag);//执行存储过程try{msqlCon.Open();myCmd.ExecuteNonQuery();returntrue;}catch{re
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 积分商城积分购物合同模板
- 补充合同的条款解说
- 正规权威严谨委托检测服务合同
- 招标启示政府服装采购
- 香烟酒水紧急购销合同
- 解除房屋买卖合同重要通知
- 购销合同中英文版合同争议解决
- 印花税购销合同的合同纠纷执行和解
- 工艺品购销合同范本电子版
- 供应商合同中的供应商信用政策
- 上海离职协议书模板
- 第十五届全国交通运输行业职业技能大赛(公路收费及监控员赛项)考试题库-下(简答题)
- 《进一步规范管理燃煤自备电厂工作方案》发改体改〔2021〕1624号
- 2024年国际贸易实务试题及答案
- 苏教版五上复式统计表课件
- 血透进修总结汇报
- 冀少版(2024)七年级上册生物单元+期中+期末共6套学情评估测试卷汇编(含答案)
- 2024年四川宜宾江安县考调事业单位工作人员7人历年(高频重点复习提升训练)共500题附带答案详解
- 2024至2030年中国防爆配电箱行业市场发展现状及前景趋势与投资战略研究报告
- 智能安防监控设备采购合同
- 2021年国家开放大学《工程力学(本)》形考任务(1-4)试题及答案解析
评论
0/150
提交评论