1、郑 州 科 技 学 院C#课 程 设 计课程设计名称:超市进销存销售管理系统 专 业 班 级 : 10级计科2班 学 生 姓 名 : 汪明鑫 学 号 : 201015063 指 导 教 师 : 王玉萍 摘 要超市进销存管理系统是目前应用于公司或是企业进销存管理系统中的典型代表,涉及到了商品或货物管理中主要的6个方面,即进货、销售、钱流、库存、统计及查账。通过一个典型超市进销存管理系统的例子,介绍了现代企业进销存管理信息化的一般解决方案,其重要性不言而喻。但是,目前超市在具体的业务流程处理过程中仍然使用手工操作的方式来实施,不仅费时、费力、效率低下,而且无法达到理想的效果。本系统是根据企业的特点
2、,集进、销、存于一体,为企业量身定做的进销存管理软件。在设计过程中最大限度满足用户的要求,因此,该系统具有较强的实用性和针对性。本系统界面友好,操作简单,可维护性强,功能完备。本论文介绍了进销存管理信息系统开发的全过程,详细介绍了系统的分析、系统的开发与设计说明等内容,最后给出了系统的使用说明和系统设计的心得体会。目 录 1.引言11.1问题的提出11.2课题的研究目的21.3课题的研究意义22.概要设计32.1设计目的32.2设计内容33.系统分析33.1需求分析33.2 可行性分析44.系统设计44.1系统运行环境44.2系统设计44.3概念结构设计64.4逻辑结构设计84.5窗体设计95
3、.主要功能模块设计125.1员工基本信息窗体125.2供应商信息窗体165.3商品进货窗体205.4商品查询窗体27总 结28参考文献301.引言超市进销存管理系统是超市商品销售及货物管理的主要控制部分,直接影响销售的方便性及管理的规范性。随着信息时代的发展,对效率的要求日益提高,企业经营涉及进、销、存多个环节,涉及商品种类繁多,业务量大,库存管理复杂,使用手工管理已无法胜任,因而软件控制销售和管理已经取代了传统全手工方式。如何采用先进的计算机系统管理进货、库存、销售等诸多环节也已成为趋势及必然。超市具有自身的特点:商品要求一般齐全,进出货关系较为简单,员工人数种类不多;在软件角度看,数据较少
4、,对存储和速度要求不高。但正由于员工较少,使用软件控制成为必须。1.1问题的提出目前,大量的中小超市企业中,存在这样的现象:分散的、不连贯的进销存信息使超市管理者或相关管理人员无法看到进销存的全部资料及相关报表,信息的分散使得产生的结果也无法保持一致和完整性,造成中小超市在进销存管理上存在如下问题:1) 无法统计销售信息?2) 无法准确全面掌握各业务进展状态?3) 对销售人员工作过程掌握不够?4) 业务人员对产品没有一定认识?5) 销售及市场流程不清晰,流程变动较大?6) 对市场信息、竞争的资讯掌握程度较不完善?7) 无结构统一销售及市场情况报表?基本销售及市场费用统计较不完备?8) 销售人员
5、辞职时失单现象严重?等等。加之,现在顾客的期望值越来越高,顾客需要更好的服务(产品及个性化服务)。企业的竞争已逐渐从产品的竞争转变为服务的竞争,因此中小企业要发展就必须需要进一步优化业务流程以提高企业竞争能力。因此,加强超市进销存管理是企业发展的必然,通过计算机来大量完成本来由工作人员手工完成的工作,真正达到合理和充分利用现有资源,减轻工作压力。1.2课题的研究目的研究该课题是为了通过对“超市进销存管理系统”的设计与实现,熟悉这类的信息管理系统的开发原理及流程。在设计过程,能够深入地理解面向对象设计方法的优越性,获得这些方面的相关经验。对一个即将毕业的计算机专业本科生来说,又想在软件行业领域里
6、有所发展,研究并应用面向对象设计方法是百益无一害的,可以使其走向社会后能够快速地适应行业需求。这正是本次设计的根本目的所在。1.3课题的研究意义 首先,该课题属于管理信息系统范畴。而管理信息系统(Management Information System,简称MIS)在现代社会已深入到各行各业,是一个不断发展的新学科,是由人和计算机设备或其他信息处理手段组成并用于管理信息的系统。再加上行业信息化的热潮才刚刚开始,特别是中小型企业的信息化建设步伐刚刚迈出第一步。管理信息系统的开发的市场将是非常庞大的。这种需求对开发人员在数量上和素质上的要求也是非常迫切的。为了满足市场的需求以及能在竞争中取胜,系
7、统设计人员就不仅仅是单纯地满足用户对功能的要求,还要从设计方法上来加以改进。其次,面向对象方法是一种非常实用的软件开发方法,它一出现就受到软件技术人员的青睐,现在已经成为计算机科学研究的一个重要领域,并逐渐成为软件开发的一种主要方法。面向对象的程序设计将数据及对数据的操作方法封装在一起,作为一个互相依存、不可分离的整体。采用这种方法来设计系统,可以增加系统的安全性。同时通过继承与多态性,使程序具有很高的可重用性,使软件的开发和维护带来了方便。由于面向对象方法的突出优点,它才被广大用户所爱好。2.概要设计 2.1设计目的根据所学的数据库原理与程序设计的知识,能够针对一个小型的数据库管理信息系统,
8、进行系统的需求分析,系统设计,数据库设计,编码,测试等,完成题目要求的功能,从而达到掌握开发一个小型数据库管理信息系统的目的。 2.2设计内容题目可根据自己熟悉的物品填充,例如图书进销存系统、电脑设备进销存系统、药品进销存系统等等,下面以超市进销存系统为例完成功能:1) 商品信息、供应商信息2) 商品进货、商品查询以上功能可根据自己对不同物品主要的管理需求进行调整,可以增加或减少相应功能。3.系统分析 3.1需求分析对普通超市来讲,涉及原材料的进货渠道、销售情况及库存等方面的管理,管理的好与坏对超市的持久性至关重要。概括地说,用户对进销存系统的需求具有普遍性。超市进销存销售管理系统适用于超市采
9、购、销售和仓库部门,对超市采购、销售及仓库的业务全过程进行有效控制和跟踪。使用超市进销存销售管理系统可有效减少盲目采购、降低采购成本、合理控制库存、减少资金占用并提高市场灵敏度,提升超市的市场竞争力。3.2 可行性分析开发任何一个基于计算机的系统,都会受到时间和资源上的限制。因此,在接受任何一个项目开发任务之前,必须根据客户可能提供的时间和资源条件进行可行性分析,以减少项目开发风险,避免人力、物力和财力的浪费。本系统数据库采用目前比较流行的Microsoft SQL Server,该数据库系统在安全性、准确性、运行速度方面有绝对的优势,并且处理数据库量大,效率高;开发工具采用Delphi7,D
10、elphi7是目前应用最广泛的数据库系统开发工具,可以快速开发Windows应用程序。4.系统设计4.1系统运行环境系统开发平台:Microsoft Visual Studio 2008系统开发语言:C#数据库管理软件:SQL Server 2005运行平台:Win7运行环境:Microsoft.NET Framework SDK v2.04.2系统设计图表 1 超市进销存销售管理系统功能结构图超市进销存管理系统销售管理进货管理库存管理系统维护基本档案员工信息供应商信息商品进货商品查询商品销售商品退货库存警报库存查询数据备份数据还原图表 2 系统业务流程图否是系统登 录是否登录系统主窗体销售管
11、理进货管理库存管理系统维护基本档案供应商信息表备注地址加入时间传真是否发布供应商编号供应商姓名联系人姓名联系电话4.3概念结构设计图表3 供应商信息表 员工信息表家庭电话员工职位手机号码员工生日是否发布员工编号员工姓名登录密码员工性别所属部门家庭住址登录ID进货信息表应付金额销售单价实付金额商品数量删除标记操作员编号员工姓名库存名称货物名称进货单价备注进货公司名称商品计量单位进货时间图表4 进货信息表4.4逻辑结构设计根据设计好的E-R图在数据库中建立各表,系统数据库中各表的逻辑结构如下:供应商信息表:字段名数据类型长度主键描述CompanyIDvarchar50否供应商编号CompanyNa
12、menvarchar100否供应商姓名CompanyDirectornvarchar50否联系人姓名CompanyPhonenvarchar20否联系电话CompanyFaxnvarchar20否传真CompanyAddressnvarchar200否地址CompanyRemarknvarchar400否备注ReDateTimedatetime8否加入日期Falgint4否是否发布 员工信息表:字段名数据类型长度主键描述EmpIDnvarchar20是员工编号EmpNamenvarchar20否员工姓名EmpLoginNamenvarchar20否登录IDEmpLoginPwdnvarchar
13、20否登录密码EmpSexnvarchar4否员工性别EmpBirthdaydatetime8否员工生日EmpDeptnvarchar20否所属部门EmpPostnvarchar20否员工职位EmpPhonenvarchar20否家庭电话EmpPhoneMnvarchar20否手机号码EmpAddressnvarchar200否家庭住址EmpFalgint1否是否发布 商品信息表:字段名数据类型长度主键描述GoodsIDnvarchar20是商品编号EmpIdnvarchar20否操作员编号JhCompNamenvarchar100否进货公司名称DepotNamenvarchar20否仓库名称
14、GoodsNamenvarchar50否货物名称GoodsNumint4否商品数量GoodsUnitnvarchar20否商品计量单位GoodsJhPricenvarchar8否进货单价GoodsSellPricenvarchar8否销售单价GoodsNeedPricenvarchar8否应付金额GoodsNoPricenvarchar8否实付金额GoodsRemarknvarchar200否备注GoodTimedatetime8否进货时间Falgint4否删除标记4.5窗体设计 图表 3 登录窗口图表 4 主窗口图表 5 员工基本信息窗体图表6 进货信息表 图表 7 商品进货信息5.主要功能
15、模块设计5.1员工基本信息窗体1.通过对员工信息的录入,修改,删除,保存进行操作,在对员工的信息录入时候,员工姓名,登录名称和登录密码的相关操作是必须的 ,因为涉及到了下次登录时候身份的鉴定,相关代码如下: public int getPan() int intFalg1 = 0; if (intFalg != 3) if (txtEmpName.Text = ) MessageBox.Show(员工姓名不能为空!, 提示); txtEmpName.Focus(); return intFalg1; if (txtEmpLoginName.Text = ) MessageBox.Show(登录
16、名称不能为空!, 提示); return intFalg1; if (intFalg != 2) if (txtEmpLoginPwd.Text = ) MessageBox.Show(登录密码不能为空!, 提示); return intFalg1; 2.通过对员工的查询,可以知道员工的信息,查询可根据很多方面的信息而查到所向知道的员工的信息,所一就需要输入查询条件,根据查询条件而知道所向知道的信息,比如员工姓名,性别,所属部门,员工职位,姓名查询是最准确并且速度的方法,性别,所属部门,职位这些查询条件是比较含糊的查询,客户通过自己想要的方式查到员工的信息,相关的代码如下: private v
17、oid txtOK_Click(object sender, EventArgs e) string P_Str_selectcondition = this.cbxCondition.Text; /Itemsthis.cbxCondition.SelectedIndex.ToString(); if (P_Str_selectcondition = null) MessageBox.Show(请选择查询条件!); return; if (this.txtKeyWord.Text = ) MessageBox.Show(输入查询条件!); return; switch (P_Str_selec
18、tcondition) case 员工姓名: tbMenthod.tb_EmpInfoFind(txtKeyWord.Text,1,dataGridView1); break; case 员工性别: tbMenthod.tb_EmpInfoFind(txtKeyWord.Text, 2, dataGridView1); break; case 所属部门: tbMenthod.tb_EmpInfoFind(txtKeyWord.Text, 3, dataGridView1); break; case 员工职位: tbMenthod.tb_EmpInfoFind(txtKeyWord.Text,
19、4, dataGridView1); break; default: break; 如果客户 查询到员工的信息之后,想做一些的修改 删除,添加之类的修改,如果添加员工信息的话,则要录入新员工的详细信息,如修改的员工信息的话可根据某方面的信息进行相关的修该,如删除员工信息的话,则要对员工的信息进行全部的删除,并相应的保存到数据库里面,方便下次客户对员工的信息进行相关的操作,具体修改 ,删除,添加的操作代码如下: private void toolSave_Click(object sender, EventArgs e) if (getPan() = 1) if (intFalg = 1) if
20、 (tbMenthod.tb_EmpInfoFind(txtEmpLoginName.Text,1) = 1) MessageBox.Show(登录名称已被占用!!); txtEmpLoginName.Text = ; txtEmpLoginName.Focus(); return; if (tbMenthod.tb_EmpInfoAdd(EmpClass) = 1) MessageBox.Show(添加成功); intFalg = 0; tbMenthod.tb_EmpInfoFind(, 5, dataGridView1); ClearControls(); ControlStatus()
21、; else MessageBox.Show(添加成失败); intFalg = 0; /tbMenthod.tb_EmpInfoFind(2,dataGridView1); ClearControls(); ControlStatus(); if (intFalg = 2) if (tbMenthod.tb_EmpInfoUpdate(EmpClass)=1) MessageBox.Show(修改成功); intFalg = 0; tbMenthod.tb_EmpInfoFind(, 5, dataGridView1); ClearControls(); ControlStatus(); e
22、lse MessageBox.Show(修改成失败); intFalg = 0; /tbMenthod.tb_EmpInfoFind(2,dataGridView1); ClearControls(); ControlStatus(); if (intFalg = 3) if (tbMenthod.tb_EmpInfoDelete(EmpClass) = 1) MessageBox.Show(删除成功); intFalg = 0; tbMenthod.tb_EmpInfoFind(, 5, dataGridView1); ClearControls(); ControlStatus(); el
23、se MessageBox.Show(删除失败); intFalg = 0; ClearControls(); ControlStatus(); 5.2供应商信息窗体2. 对控件的清零状态,方便进行相关的操作,即信息初始化,代码如下: private void ClearControls() txtCompanyDirector.Text = ; txtCompanyAddress.Text = ; txtCompanyFax.Text = ; txtCompanyName.Text = ; txtCompanyPhone.Text = ; txtCompanyRemark.Text = ;
24、2.1 通过对供应商的信息录入,并保存到数据库里面,此外应注意的是供应商的名称,联系电话,地址是必须的填写的,否则不不可以录入并进行相关操作的,如少填写一项,会弹出相应的对话框,代码如下: public int GetCount() int intReslult = 0; if (intFalg = 1 | intFalg = 2) if (txtCompanyName.Text = ) MessageBox.Show(供应商名称不能为空!, 提示); return intReslult; if (txtCompanyPhone.Text = ) MessageBox.Show(联系电话不能为
25、空!, 提示); return intReslult; if (txtCompanyDirector.Text = ) MessageBox.Show(地址不能为空!, 提示); return intReslult; 2.2客户对相关的信息进行操作之后,需要保存到数据库,但是应注意的是相关的信息必须是准确的,避免下次信息调出的时候出现差错,因为数据库是共同享有的,所以必须保证供应商资料的准确性,通过保存之前的添加,修改,删除操作并保存到数据库的代码如下: private void toolSave_Click(object sender, EventArgs e) if (GetCount()
26、 = 1) if (intFalg = 1) if (CompanyMenthod.tb_CompanyMenthodAdd(Company) = 1) if (intReturn = 1) frmGonYingShang frmCop= (frmGonYingShang)this.Owner; jhgood.filltProd(frmCop.treeView1,frmCop.imageList1); ClearControls(); ControlStatus(); intFalg = 0; this.Close(); MessageBox.Show(添加成功); intFalg = 0;
27、CompanyMenthod.tb_CompanyFind(, 3, dataGridView1); ClearControls(); ControlStatus(); else MessageBox.Show(添加失败); intFalg = 0; CompanyMenthod.tb_CompanyFind(, 3, dataGridView1); ClearControls(); ControlStatus(); if (intFalg = 2) if (CompanyMenthod.tb_CompanyMenthodUpDate(Company) = 1) MessageBox.Show
28、(修改成功); intFalg = 0; CompanyMenthod.tb_CompanyFind(, 3, dataGridView1); ClearControls(); ControlStatus(); else MessageBox.Show(修改失败); intFalg = 0; CompanyMenthod.tb_CompanyFind(, 3, dataGridView1); ClearControls(); ControlStatus(); if (intFalg =3) if (CompanyMenthod.tb_CompanyMenthodDelete(Company)
29、= 1) MessageBox.Show(删除成功); intFalg = 0; CompanyMenthod.tb_CompanyFind(, 3, dataGridView1); ClearControls(); ControlStatus(); else MessageBox.Show(删除失败); intFalg = 0; CompanyMenthod.tb_CompanyFind(, 3, dataGridView1); ClearControls(); ControlStatus(); 2.3客户对供应商的信息做好相关的操作之后,则方便其他客户对供应商的资料查询,可根据的供应商的名
30、称,负责人姓名而知道所想知道的相关信息,相关的代码如下: private void txtOK_Click(object sender, EventArgs e) string P_Str_cmdtxt = String.Empty; string P_Str_selectcondition = this.cbxCondition.Text; if (P_Str_selectcondition = null) MessageBox.Show(请选择查询条件!); return; if (this.txtKeyWord.Text = ) MessageBox.Show(输入查询条件!); return;