C进销存管理系统C课程设计毕业论文.doc_第1页
C进销存管理系统C课程设计毕业论文.doc_第2页
C进销存管理系统C课程设计毕业论文.doc_第3页
C进销存管理系统C课程设计毕业论文.doc_第4页
C进销存管理系统C课程设计毕业论文.doc_第5页
已阅读5页,还剩29页未读, 继续免费阅读

下载本文档

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

文档简介

郑州科技学院C#课程设计 设计(论文)题目: 进销存管理系统 摘 要中小企业在我国经济发展中具有重要地位。目前我国的中小企业数量较多、地区分布广泛、行业分布跨度大,但随着全球经济一体化的发展,外资企业和国外产品与服务的严峻挑战,相比较而言,外资企业具有更为雄厚的资金实力、丰富的管理经验和先进的技术手段,因此,如果我国的中小企业不借助先进的管理思想转变经营理念、使用信息化手段提高企业的管理水平和工作效率,将很难在今后的国际竞争中取胜。有鉴于此,一个自动化的进销存管理系统就显得非常有必要。本论文就使用C# 4.0+SQL Server 2005技术开发一个进销存管理系统。本论文主要介绍了进销存管理系统的基本创建流程和开发思路,以及主要功能模块的实现过程。(1)登录模块实现原理。(2)使用MenuStrip控件设计菜单栏。(3)自动生成库存商品编号。(4)向进货单中批量添加商品。(5)使用BETWEENAND关键字查询数据。(6)隔离驱动模式的使用软件开发平台如下:l 操作系统:Windows Server 2003或Windows7;l 数据库:SQL Server 2005、SQL Server 2008;l 分辨率:最佳效果1024768。l 开发环境:Microsoft Visual Studio 2010;l 程序运行环境:.NET FRAMEWORK 3.5。目录目录1一 项目设计思路11.1 功能阐述11.2 系统预览11.3 功能结构31.4 业务流程41.5 文件组织结构4二 数据库设计52.1 数据库设计52.2 数据表设计62.3 数据表逻辑关系8三 公共类设计93.1 DataBase公共类93.2 BaseInfo公共类11四 登录模块设计114.1 登录模块概述114.2 登录模块实现原理124.3 登录模块实现过程12五 系统主窗体设计135.1 系统主窗体概述135.2 使用MenuStrip控件设计菜单栏145.3 系统主窗体实现过程15六 库存商品管理模块设计156.1 库存商品管理模块概述156.2 自动生成库存商品编号166.3 库存商品管理模块实现过程16七 进货管理模块设计187.1 进货管理模块概述187.2 向进货单中批量添加商品197.3 进货管理模块实现过程19八 商品销售排行模块设计228.1 商品销售排行模块概述228.2 使用BETWEENAND关键字查询数据238.3 商品销售排行模块实现过程23九 库存盘点模块设计249.1 库存盘点模块概述249.2 隔离驱动模式的使用259.3 库存盘点模块实现过程26十 总结26一 项目设计思路1.1 功能阐述进销存管理系统是一个典型的数据库开发应用程序,主要由进货管理、销售管理、库存管理、基础数据管理、系统维护和辅助工具等模块组成。具体规划如下:进货管理模块进货管理模块主要负责商品的进货数据录入、进货退货数据录入、进货分析、进货统计(不包含退货)、与供应商往来对账。销售管理模块销售管理模块主要负责商品的销售数据录入、销售退货数据录入、销售统计(不含退货)、月销售状况(销售分析、明细账本)、商品销售排行、往来分析(与代理商对账)、商品销售成本表。库存管理模块库存管理模块主要负责库存状况、库存商品数量上限报警、库存商品数量下限报警、商品进销存变动表、库存盘点(自动盘赢盘亏)。基础数据管理模块基础数据管理模块主要负责对系统基本数据的录入(基础数据包括库存商品、往来单位、内部职员)。系统维护模块系统维护模块主要负责本单位信息、操作员设置、操作权限设置、数据备份和数据库恢复、数据清理。辅助工具模块辅助工具模块的功能有登录Internet、启动Word、启动Excel和计算器等。图1.1 系统主窗体1.2 系统预览进销存管理系统由多个程序窗体组成,下面仅列出几个典型窗体。系统主窗体如图1.1所示,主要作为进入系统的入口。进货管理窗体如图1.2所示,主要用于批量进货,并自动计算进货的总数量及总金额。销售管理窗体如图1.3所示,主要用于批量销售,并自动计算销售的总数量及总金额。库存管理窗体如图1.4所示,主要用于对库存的商品信息进行添加、修改、删除和查询等操作。 图1.2 进货管理窗体 图1.3销售管理窗体图1.4库存管理窗体1.3 功能结构进销存管理系统功能结构图如图1.5所示。图1.5 进销存管理系统功能结构图1.4 业务流程进销存管理系统的业务流程图如图1.6所示。图1.6 进销存管理系统业务流程图1.5 文件组织结构编写代码之前,可以把系统中可能用到的文件夹先创建出来(例如,创建一个名为Image的文件夹,用于保存系统中所使用的图片),这样不但可以方便以后的开发工作,也可以规范系统的整体架构。开发进销存管理系统时,设计了如图1.7所示的文件组织结构图。在开发时,只需将所创建的文件保存在相应的文件夹中即可。图1.7 进销存管理系统的文件架构图二 数据库设计2.1 数据库设计进销存管理系统采用的是SQL Server 2005数据库,主要用来存储货物的库存、进货、销售、盘点等信息。这里将数据库命名为db_EMS,其中包含的数据表如图1.8所示。图1.8 数据库结构2.2 数据表设计数据表设计是一个非常关键的环节,下面对系统中的数据表结构进行分析。1tb_stock(库存商品基本信息表)库存商品基本信息表用于存储库存商品的基本信息,该表的结构如表1.1所示。表1.1 库存商品基本信息表字 段 名 称数 据 类 型字 段 大 小说 明tradecodevarchar5商品编号fullnamevarchar30商品全称namevarchar10商品简称typevarchar10商品型号standardvarchar10商品规格unitvarchar10单位producevarchar20产地qtyfloat8库存数量pricefloat8进货时的最后一次进价averagepricefloat8加权平均价salepricefloat8销售时的最后一次销价stockcheckfloat8盘点数量续表 字 段 名 称数 据 类 型字 段 大 小说 明upperlimitint4存货报警上限lowerlimitint4存货报警下限2tb_warehouse_main(进货主表)进货主表用于存储进货商品的主要信息,该表的结构如表1.2所示。表1.2 进货主表字 段 名 称数 据 类 型字 段 大 小说 明billdatedatetime8录单日期billcodevarchar20进货编号unitsvarchar30供货单位handlevarchar10经手人summaryvarchar100摘要fullpaymentfloat8应付金额paymentfloat8实付金额3tb_warehouse_detailed(进货明细表)进货明细表用于存储进货商品的详细信息,该表的结构如表1.3所示。表1.3 进货明细表字 段 名 称数 据 类 型字 段 大 小说 明billcodevarchar20进货编号tradecodevarchar20商品编号fullnamevarchar20商品名称unitvarchar4单位qtyfloat8数量pricefloat8进价tsumfloat8金额billdatedatetime8录单日期4tb_sell_main(销售主表)销售主表用于保存销售商品的主要信息,该表的结构如表1.4所示。表1.4 销售主表字 段 名 称数 据 类 型字 段 大 小说 明billdatedatetime8录单日期billcodevarchar20销售编号unitsvarchar30购货单位handlevarchar10经手人summaryvarchar100摘要fullgatheringfloat8应收金额gatheringfloat8实收金额5tb_sell_detailed(销售明细表)销售明细表用于存储销售商品的详细信息,该表的结构如表1.5所示。表1.5 销售明细表字 段 名 称数 据 类 型字 段 大 小说 明billcodevarchar20销售编号tradecodevarchar20商品编号fullnamevarchar20商品全称unitvarchar4单位qtyfloat8数量pricefloat8单价tsumfloat8金额billdatedatetime8录单日期2.3 数据表逻辑关系对商品进货和商品销售等数据进行操作的过程中,当库存商品名称、经手人及往来单位等相关基础信息发生改变时,其他数据表中涉及的该基础信息也要相应改变,这样才能保证数据的一致性和完整性。因此,在db_EMS数据库中建立了如图1.9和图1.10所示的数据表关系图。图1.9 数据表逻辑关系一图1.10 数据表逻辑关系二三 公共类设计开发项目时,通过编写公共类可以减少重复代码的编写,有利于代码的重用及维护。进销存管理系统中创建了两个公共类文件,即DataBase.cs(数据库操作类)和BaseInfo.cs(基础功能模块类)。其中,数据库操作类主要用来访问SQL数据库;基础功能模块类主要用来处理业务逻辑功能,透彻地说就是实现功能窗体(陈述层)与数据库操作(数据层)的业务功能。下面分别对这两个公共类中的方法进行详细介绍。3.1 DataBase公共类DataBase类中自定义了Open、Close、MakeInParam、MakeParam、RunProc、RunProcReturn、CreateDataAdaper和CreateCommand等多个方法,下面分别对它们进行介绍。1Open方法建立数据库连接主要是通过SqlConnection类来实现,并初始化数据库连接字符串,然后通过State属性判断连接状态,如果数据库连接状态为关,则打开数据库连接。实现打开数据库连接的Open方法的代码如下:01private void Open()0203 if (con = null)/判断连接对象是否为空04 05 /创建数据库连接对象06 con = new SqlConnection(Data Source=MRWXKWANGXIAOKE;DataBase= db_EMS;User ID=sa;PWD=);07 08 if (con.State = System.Data.ConnectionState.Closed)/判断数据库连接是否关闭09 con.Open();/打开数据库连接102Close方法关闭数据库连接主要是通过SqlConnection对象的Close方法来实现。自定义Close方法关闭数据库连接的代码如下:01public void Close()0203 if (con != null)/判断连接对象是否不为空04 con.Close();/关闭数据库连接053MakeInParam和MakeParam方法本系统向数据库中读写数据是以参数形式实现的。MakeInParam方法用于传入参数,MakeParam方法用于转换参数。4RunProc方法RunProc方法为可重载方法,用来执行带SqlParameter参数的命令文本,其中,第一种重载形式主要用于执行添加、修改和删除等操作;第二种重载形式用来直接执行SQL语句,如数据库备份与数据库恢复。5RunProcReturn方法RunProcReturn方法为可重载方法,返回值类型为DataSet,其中,第一种重载形式主要用于执行带SqlParameter参数的查询命令文本;第二种重载形式用于直接执行查询SQL语句。6CreateDataAdaper方法CreateDataAdaper方法将带参数SqlParameter的命令文本添加到SqlDataAdapter中,并执行命令文本。3.2 BaseInfo公共类BaseInfo类是基础功能模块类,主要用来处理业务逻辑功能。下面对该类中的实体类及相关方法进行详细讲解。1cStockInfo实体类当读取或设置库存商品数据时,都是通过库存商品类cStockInfo实现的。2AddStock方法库存商品数据基本操作主要包括对库存商品的添加、修改、删除以及查询等,下面对其相关的方法进行详细讲解。AddStock方法主要用于实现添加库存商品基本信息。其实现的关键技术为:创建SqlParameter参数数组,通过数据库操作类(DataBase)中的MakeInParam方法将参数值转换为SqlParameter类型,储存在数组中,最后调用数据库操作类(DataBase)中的RunProc方法执行命令文本。5FindStockByProduce、FindStockByFullName和GetAllStock方法在本系统中,可以根据商品产地和商品名称查询库存商品信息,还可查询所有库存商品信息。FindStockByProduce方法根据“商品产地”得到库存商品信息;FindStockByFullName方法根据“商品名称”得到库存商品信息;GetAllStock方法得到所有库存商品信息。四 登录模块设计4.1 登录模块概述登录模块主要是通过输入正确的用户名和密码进入主窗体,它可以提高程序的安全性,保护数据资料不外泄。登录模块运行结果如图1.11所示。图1.11 系统登录4.2 登录模块实现原理登录模块的重点在于将用户输入的用户名和密码与数据库中的用户名和密码进行比较,如果相同将允许用户进入系统的操作界面;否则将弹出提示框,提示用户输入的用户名或密码错误。该模块的实现原理是,根据用户输入的用户名和密码在数据库中查找是否有相符的记录,并将查询结果填充到DataSet数据集中,然后判断该数据集中所包含表的行数是否大于零,如果大于零,则表示输入的用户名和密码正确,从而成功登录系统;否则,弹出提示信息。4.3 登录模块实现过程(1)新建一个Windows窗体,并将其命名为frmLogin.cs,用来作为系统的登录窗体。该窗体用到的主要控件如表1.6所示。表1.6 登录窗体用到的主要控件控 件 类 型控件ID主要属性设置用 途txtUserName无输入登录用户名txtUserPwdPasswordChar属性设置为“”输入登录用户密码btnLoginText属性设置为“登录”登录btnExitText属性设置为“退出”退出(2)当用户在“用户名”文本框中输入值并按下Enter键时,将鼠标焦点移动到“用户密码”文本框中;当在“用户密码”文本框中输入值并按下Enter键时,将鼠标焦点移动到“登录”按钮上。(3)当用户输入用户名和密码后,单击“登录”按钮进行登录。在“登录”按钮的Click事件中,首先判断用户名是否为空,如果为空,则弹出提示框,通知用户将登录信息填写完整;否则将判断用户名和密码是否正确,如果正确,则进入本系统,同时根据用户的权限设置主窗体中各菜单的可用状态。五 系统主窗体设计5.1 系统主窗体概述主窗体是程序操作过程中必不可少的,它是人机交互中的重要环节。通过主窗体,用户可以调用系统相关的各子模块,快速掌握本系统中所实现的各个功能。在进销存管理系统中,当登录窗体验证成功后,用户将进入主窗体。主窗体中提供了系统菜单栏,可以通过它调用系统中的所有子窗体。主窗体运行结果如图1.12所示。图1.12 系统主窗体5.2 使用MenuStrip控件设计菜单栏本系统的菜单栏是通过MenuStrip控件实现的。设计菜单栏的具体步骤如下:(1)从工具箱中拖放一个MenuStrip控件置于进销存管理系统的主窗体中,如图1.13所示。图1.13 拖放MenuStrip控件(2)为菜单栏中的各个菜单项设置名称,如图1.14所示。在输入菜单项名称时,系统会自动产生输入下一个菜单项名称的提示。图1.14 为菜单栏添加菜单项(3)选中菜单项,单击其“属性”窗口中DropDownItems属性后面的按钮,弹出“项集合编辑器”对话框,如图1.15所示。在该对话框中可以为菜单项设置Name(名称),也可以继续通过单击其DropDownItems属性后面的按钮添加子项。图1.15 为菜单栏中的菜单项命名并添加子项5.3 系统主窗体实现过程(1)新建一个Windows窗体,并将其命名为frmMain.cs,主要用来作为进销存管理系统的主窗体。在该窗体中添加一个MenuStrip控件,用来作为窗体的菜单栏。(2)单击菜单栏中的各菜单项,调用相应的子窗体。下面以选择“进货管理”/“进货单”菜单项为例进行说明。代码如下:01private void fileBuyStock_Click(object sender, EventArgs e)0203 new EMS.BuyStock.frmBuyStock().Show();/调用进货单窗体04六 库存商品管理模块设计6.1 库存商品管理模块概述库存商品管理模块主要用来添加、编辑、删除和查询库存商品的基本信息,其运行结果如图1.16所示。图1.16 库存商品管理模块6.2 自动生成库存商品编号实现库存商品管理模块时,首先需要为每种商品设置一个库存编号。本系统中实现了自动生成商品库存编号的功能,以便能够更好地识别商品。具体实现时,首先需要从库存商品基本信息表(tb_stock)中获取所有商品信息,并按编号降序排序,从而获得已经存在的最大编号;然后根据获得的最大编号,为其数字码加1,从而生成一个最新的编号。6.3 库存商品管理模块实现过程(1)新建一个Windows窗体,并将其命名为frmStock.cs,主要用来对库存商品信息进行添加、修改、删除和查询等操作。该窗体用到的主要控件如表1.7所示。表1.7 库存商品管理窗体用到的主要控件控 件 类 型控件ID主要属性设置用 途toolStrip1在其Items属性中添加相应的工具栏项作为窗体的工具栏txtTradeCode无输入或显示商品编号txtFullName无输入或显示商品全称txtType无输入或显示商品型号txtStandard无输入或显示商品规格txtUnit无输入或显示商品单位txtProduce无输入或显示商品产地dgvStockList无显示所有库存商品信息(2)在frmStock.cs中,声明全局业务层BaseInfo类对象、库存商品数据结构BaseInfo类对象,并定义全局变量G_Int_addOrUpdate,用来识别添加库存商品信息还是修改库存商品信息。代码如下:01BaseClass.BaseInfo baseinfo = new EMS.BaseClass.BaseInfo();/创建BaseInfo类对象02BaseClass.cStockInfo stockinfo = new EMS.BaseClass.cStockInfo();/创建cStockInfo类对象03int G_Int_addOrUpdate = 0;/定义添加/修改操作标识(3)在窗体的Load事件中主要实现检索库存商品所有信息,并使用DataGridView控件进行显示的功能。(4)单击“添加”按钮,实现库存商品自动编号功能,编号格式为T1001,同时将G_Int_addOrUpdate变量设置为0,以标识“保存”按钮的操作为添加数据。“添加”按钮的Click事件代码如下:01private void tlBtnAdd_Click(object sender, EventArgs e)0203 this.editEnabled();/设置各个控件的可用状态04 this.clearText();/清空文本框05 G_Int_addOrUpdate = 0;/等于0为添加数据06 DataSet ds = null;/创建数据集对象07 string P_Str_newTradeCode = ;/设置库存商品编号为空08 int P_Int_newTradeCode = 0;/初始化商品编号中的数字码09 ds = baseinfo.GetAllStock(tb_stock);/获取库存商品信息10 if (ds.Tables0.Rows.Count = 0)/判断数据集中是否有值11 12 txtTradeCode.Text = T1001;/设置默认商品编号13 14 else 15 16 /获取已经存在的最大编号17 P_Str_newTradeCode = Convert.ToString(ds.Tables0.Rowsds.Tables0.Rows. Count - 1tradecode);18 /获取一个最新的数字码19 P_Int_newTradeCode = Convert.ToInt32(P_Str_newTradeCode.Substring(1, 4) + 1;20 P_Str_newTradeCode = T + P_Int_newTradeCode.ToString();/获取最新商品编号21 txtTradeCode.Text = P_Str_newTradeCode;/将商品编号显示在文本框中22 23(5)单击“编辑”按钮,将G_Int_addOrUpdate变量设置为1,以标识“保存”按钮的操作为修改数据。(6)单击“保存”按钮,保存新增信息或更改库存商品信息,其功能的实现主要是通过全局变量来G_Int_addOrUpdate控制。(7)单击“删除”按钮,删除选中的库存商品信息。(8)单击“查询”按钮,根据设置的查询条件查询库存商品信息,并使用DataGridView控件进行显示。七 进货管理模块设计7.1 进货管理模块概述进货管理模块主要包括对进货单及进货退货单的管理,由于它们的实现原理是相同的,这里以进货单管理为例来讲解进货管理模块的实现过程。进货单管理窗体主要用来批量添加进货信息,其运行结果如图1.17所示。图1.17 进货管理模块7.2 向进货单中批量添加商品进货管理模块实现时,每一张进货单据都会对应多种商品,这样就需要向进货单中批量添加进货信息。那么该功能是如何实现的呢?本系统中通过一个for循环,循环遍历进货单中已经选中的商品,从而实现向进货单中批量添加商品的功能。7.3 进货管理模块实现过程(1)新建一个Windows窗体,并将其命名为frmBuyStock.cs,主要用于实现批量进货功能。该窗体用到的主要控件如表1.8所示。表1.8 进货管理窗体用到的主要控件控 件 类 型控件ID主要属性设置用 途txtBillCodeReadOnly属性设置为true显示单据编号txtBillDateReadOnly属性设置为true显示录单日期txtHandleModifiers属性设置为public输入经手人txtUnitsModifiers属性设置为public输入供货单位txtSummary无输入摘要txtStockQtyReadOnly属性设置为true显示进货数量txtFullPaymentReadOnly属性设置为true,Text属性设置为0显示应付金额txtpaymentText属性设置为0输入实付金额txtBalanceText属性设置为0显示或输入差额btnSelectHandleText属性设置为选择经手人btnSelectUnitsText属性设置为选择供货单位btnSaveText属性设置为“保存”保存进货信息btnExitText属性设置为“退出”退出当前窗体dgvStockList在其Columns属性中添加“商品编号”、“商品名称”、“商品单位”、“数量”、“单价”和“金额”等6列选择并显示进货单中的所有商品信息(2)在frmBuyStock.cs中,声明全局业务层BaseInfo类对象、单据数据结构cBillInfo类对象、往来账数据结构cCurrentAccount类对象和库存商品信息数据结构stockinfo类对象。(3)在frmBuyStock窗体的Load事件中编写代码,用于实现自动生成进货商品单据编号的功能。(4)单击“经手人”文本框后的“”按钮,在弹出的对话框中选择进货单据经手人。(5)单击“往来单位”文本框后的“”按钮,在弹出的往来单位对话框中选择供货单位。(6)双击DataGridView控件的单元格,在弹出的库存商品数据对话框中选择进货商品。(7)为了实现自动合计某一商品进货金额,在DataGridView控件的单元格的CellValueChanged事件中添加如下代码。01private void dgvStockList_CellValueChanged(object sender, DataGridViewCellEventArgs e)0203 if (e.ColumnIndex = 3)/计算-统计商品金额04 05 try06 07 float tsum = Convert.ToSingle(dgvStockList3, e.RowIndex.Value.ToString() * Convert.ToSingle(dgvStockList4, e.RowIndex.Value.ToString();/计算商品总金额08 dgvStockList5, e.RowIndex.Value = tsum.ToString();/显示商品总金额09 10 catch 11 12 if (e.ColumnIndex = 4)13 14 try15 16 float tsum = Convert.ToSingle(dgvStockList3, e.RowIndex.Value.ToString() * Convert.ToSingle(dgvStockList4, e.RowIndex.Value.ToString();/计算商品总金额17 dgvStockList5, e.RowIndex.Value = tsum.ToString();/显示商品总金额18 19 catch 20 21(8)为了统计进货单的进货数量和进货金额,在DataGridView控件的CellStateChanged事件中添加如下代码。01private void dgvStockList_CellStateChanged(object sender, DataGridViewCellStateChanged EventArgs e)0203 try04 05 float tqty = 0;/记录进货数量06 float tsum = 0;/记录应付金额07 for (int i = 0; i = dgvStockList.RowCount; i+)/遍历DataGridView控件中的所有行08 09 tsum = tsum + Convert.ToSingle(dgvStockList5, i.Value.ToString();/计算应付金额10 tqty = tqty + Convert.ToSingle(dgvStockList3, i.Value.ToString();/计算进货数量11 txtFullPayment.Text = tsum.ToString();/显示应付金额12 txtStockQty.Text = tqty.ToString();/显示进货数量13 14 15 catch 16(9)在“实付金额”文本框的TextChanged事件中添加代码,用于实现计算应付金额和实付金额的差额。(10)单击“保存”按钮,保存单据所有进货商品信息。八 商品销售排行模块设计8.1 商品销售排行模块概述商品销售排行模块主要用来根据指定的日期、往来单位及经手人等条件,按销售数量或销售金额对商品销售信息进行排行。运行该模块时,首先弹出“选择排行榜条件”对话框,如图1.18所示。在图1.18所示对话框中选择完排行榜条件后,单击“确定”按钮,将显示“商品销售排行榜”窗体,如图1.19所示。 图1.18 “选择排行榜条件”对话框 图1.19 商品销售排行榜8.2 使用BETWEENAND关键字查询数据实现商品销售排行模块时,涉及查询指定时间段内信息的功能,这时需要使用SQL中的BETWEENAND关键字。下面对其进行详细讲解。BETWEENAND关键字是SQL中提供的用来查询指定时间段数据的关键字,其使用效果如图1.20所示。图1.20 使用BETWEENAND关键字查询指定时间段数据8.3 商品销售排行模块实现过程(1)新建一个Windows窗体,并将其命名为frmSelectOrderby.cs,主要用来指定筛选商品销售排行榜的条件。该窗体用到的主要控件如表1.9所示。表1.9 选择排行榜条件窗体用到的主要控件控 件 类 型控件ID主要属性设置用 途cmbUnitsDropDownStyle属性设置为DropDownList选择往来单位cmbHandleDropDownStyle属性设置为DropDownList选择经手人rdbSaleQtyChecked属性设置为true,Text属性设置为“按销售数量排行”按销售数量排行rdbSaleSumText属性设置为“按销售金额排行”按销售金额排行dtpStar无选择开始日期dtpEnd无选择结束日期btnOkText属性设置为“确定”根据指定的条件查询信息btnCancelText属性设置为“取消”关闭当前窗体(2)新建一个Windows窗体,并将其命名为frmSelectOrderby.cs。在该窗体中添加一个DataGridView控件,用来显示商品销售排行榜。(3)在frmSelectOrderby.cs中创建全局BaseInfo类对象,用于调用业务层中的功能方法。因为BaseInfo类存放在BaseClass目录中,在创建类对象时先指名目录名称。代码 如下:BaseClass.BaseInfo baseinfo = new EMS.BaseClass.BaseInfo();/创建BaseInfo类对象(4)在窗体的Load事件中编写如下代码,用于将经手人和往来单位动态添加到ComboBox控件中。九 库存盘点模块设计9.1 库存盘点模块概述库存盘点模块主要用于检查系统中登记的商品数量与库存的实际数量是否相等,其中盘点数量为库存商品的实际数量。库存盘点模块运行结果如图1.21所示。图1.21 库存盘点模块9.2 隔离驱动模式的使用进销存管理系统实现时,主要用到了三层架构中的隔离驱动模式,这在系统的各个模块中都得到了充分的体现。例如在实现库存盘点模块时,只需要在库存盘点窗体(陈述层)中调用BaseInfo类(业务层)中的CheckStock方法即可。下面对隔离驱动模式进行详细介绍。采用隔离驱动模式开发项目时,陈述层和数据层被独立地开发(常常是平行开发),这两层在设计时没有任何的相互干扰,所以不会存在人为的约束和有害的设计元素。当两层都设计完成后,再设计业务层,业务层的功能就是在不对数据层和陈述层改变的基础上完成所有的转换。因为陈述层和数据层是完全独立的,当业务层需求改变时,它们都可以进行相应的修改而不影响对方。改变两个在物理上不相邻的层不会直接对其他层产生影响或发生冲突,这就允许数据层结构的调整或者陈述层根据用户的需求作出相应的变化,而不需要系统进行大的调整或修改。隔离驱动模式设计示意图如图1.22所示。图1.22 隔离驱动模式设计9.3 库存盘点模块实现过程(1)新建一个Windows窗体,并将其命名为frmCheckStock.cs,主要用于查询库存商品信息,并对指定的库存商品进行盘点。该窗体用到的主要控件如表1.10所示。表1.10 库存盘点窗体用到的主要控件控 件 类 型控件ID主要属性设置用 途toolStrip1在其Items属性中添加相应的工具栏项作为窗体的工具栏dgvStockListSelectionMode属性设置为FullRowSelect显示所有库存商品信息(2)在frmCheckStock.cs中创建全局BaseInfo类对象和cStockInfo类对象,用于调用业务层中的功能方法及库存商品数据结构。因为类BaseInfo和cStockInfo存放在BaseClass目录中,所以在创建类对象时先指名目录名称。关键代码如下:01BaseClass.BaseInfo baseinfo = new EMS.BaseClass.BaseInfo();/创建BaseInfo类对象02BaseClass.cStockInfo stockinfo = new EMS.BaseClass.cStockInfo();/创建cStockInfo类对象03string G_Str_tradecode = ;/记录要盘点的商品编号(3)在窗体的Load事件中编写如下代码,用于实现显示库存商品的所有数据。(4)单击“查询”按钮,根据输入的查询条件查询出符合的记录,并显示在DataGridView控件中。(5)当DataGridView控件单元格获得焦点时,获得商品名称并显示在文本框中;获得商品编号,用于修改库存商品的盘点数量。(6)单击“保存盘点”按钮,将库存盘点数量保存到数据表中。十 总结经过两周的努力毕业设计终于完毕,在这段学习时间里,虽然遇到过困难,也看到了希望,进销存管理系统的设计,让我又学到了一门技术,虽然还掌握得不够精通,但还是有一定的认识和了解,对于我将来的学习是有价值的。进销存管理系统是一个典型的数据库开发应用程序,主要由进货管理、销售管理、库存管理、基础数据管理、系统维护和辅助工具等模块组成。对于数据的一致性的问题也通过程序进行了有效的解决。在系统设计过程中,我体会到了即使是一件小事也不能马虎,在设计之前一定要对所设计的系统有较为深刻地了解,并对用户的要求加以认真的分析,并给予分类,对所分类进行功能模块化设计,画出系统数据流图,流程图和结构图.这样在进行详细设计时才可以做到有条不紊一步一步地进行.编制一个系统还是有很多可学习的地方,不仅要掌握好相关知识,而且做事要细心,谨慎,这也是将来工作和学习应该注意的地方。总的来说,通过这次课题,我也同时学到了技术层面以外的知识,那就是在建立应用程序上的流程:定出研究方向,收集资料,分析资料,确定项目,实现分析,提出实现方案,程序编辑,程序调试,程序修改,程序增添等等的步骤。这些都使我认识到建立应用程序不是一件随便的事情,它有一个系统的、严密的、逻辑的工作流程。将来的社会是竞争激烈的社会,特别是计算机行业,要不断的学习,再学习,才可以把自己融入社会的发展中,所以在工作过程中,要不断的充电,才可以更好的体会自己人生的价值。由于本人的水平有限,在文章中难免有错误,和不足之处,望评审老师和同学们批评指正。 参考文献1 C#百科. /view/6590.htm,2011-05-012 sqlserver200百科/view/765751.htm ,2011-05-013 DevExpress百科./view/1224789.htm,2011-05-014李国彬,赵丽娟,沈淑清等. SQL Server 2000应用基础与实训教程. 西安: 西安电子科技大学出版社,2004.5.5李志云 周岩 徐春华等 Visual C#2005数据库开发案例教程 机械工业出版社 2009年第一版 6王小科 张宏宇 吕双. Visual C#2005程序设计自学手册 人民邮电出版社 2008年第一版7韩江、王秀慧 译. C#编程语言详解. 电子工业出版社,2007.88李勇平编著. ASP.NET 2.0(C#)基础教程. 北京:清华大学出版社,2008.1.9朱剑平 译C#软件解决方案清华大学出版社,2007.310李建忠 译改善C#的50种方法. 人民邮电出版社,2007袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅

温馨提示

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

评论

0/150

提交评论