1、电脑进销存管理系统数据库课程设计题目: 电脑进销存管理系统指导老师: 系: 班级: 姓名: 学号: 摘 要在经济快速发展的今天,企业的进销存管理是企业经营管理中的重要环节,也是一个企业能够取得效益的关键,如果能够做到合理进货,及时销售,库存量最小的同时又不至于缺货,那么企业就能获得最好的效益。本文从电脑销售进销存信息有限公司进销存管理现状为背景,说明了物资进销存管理在企业中的重要性,运用在专业课中学习到的信息管理系统开发的理论与技术知识,分析它的业务流程、数据流程,并且对系统的概念模型和逻辑模型进行设计,采用比较流行的C#语言,Windows XP、SQL Server2005、Visual
2、Studio 2008为开发环境,开发了电脑销售进销存信息有限公司进销存管理系统,本系统采用C/S结构模型通过计算机局域网对公司进销存业务数据实现同步管理,以求降低企业管理成本,提高其经济效益。关键词:进销存管理;进销存管理系统;C/S1 进销存管理系统分析1.1需求分析 要想设计一个符合要求的系统,前期的需求分析是非常重要的,需求分析在系统开发过程中有非常重要的地位,它的好坏直接关系到系统开发成本、系统开发周期及系统质量。它是系统设计的第一步,是整个系统成开发成功的基础。详细周全的需求分析,可以减少系统开发中的错误,又可降低修复错误的费用,从而大大减少系统开发成本,缩短系统开发周期。需求分析
3、的任务不是确定系统“怎样做”的工作,而仅仅是确定系统需要 “做什么”的问题,也就是对目标系统提出完整,准确,清晰,具体的要求。需求分析的结果是系统开发的基础,关系到工程的成败和软件产品的质量17。当前电脑销售进销存信息有限公司使用人工管理方式(即纸和笔)来管理企业的进销存,这样的管理方式不但困难而且浪费时间、增加成本,并且容易出现漏单、差账的情况,因此电脑销售进销存信息有限公司应该向大型企业那样采用先进的管理方式,提高企业管理效率、降低企业运营成本。电脑销售进销存信息管理系统从电脑销售进销存信息有限公司的实际出发,可有效地管理公司的进销存情况,并降低公司的运营成本、及时调整运营策略.1.2系统
4、开发目的和总体分析1.2.1系统的开发目的通过对公司的业务流程进行调查与分析。本系统应具备以下目标:(1)系统采用人机交互方式,界面简单,信息查询灵活、存储安全可靠。(2)更好地了解供应商和客户信息,加强对商品资料的管理。(3)能够方便的输入和查询商品进货。(4)准确了解销售动态,统计销售情况及时调整营销策略。 (6)商品库存情况查询、统计及库存预警功能。(7)实现报表功能能够方便的将数据打印成文档。(8)做好数据的安全工作,实现数据的备份和恢复(9)系统最大限度的实现易维护性和易操作性。1.2.2系统总体设计 系统总体设计的任务是弄清用户对系统的数据处理功能所提出的要求,根据对系统目标和业务
5、流程的分析,据此确定了系统的六大模块,分别是基本资料管理模块、商品入库管理模块、销售管理管理模块、库存管理模块、报表管理模块、系统管理模块。(1)基本资料管理基本资料管理是系统运行的基础,基本资料管理要实现计量单位、商品类型、商品信息、供应商信息、客户信息的动态管理。这些信息要先于其他的数据录入系统,系统才能正常的运行。(2)商品到货入库管理采购员将到货商品信息录入到该模块,同时也实现了商品的入库,用户可以查询商品入库的详细信息。(3)商品销售管理 销售员将销售信息录入到该模块,同时也实现了商品的出库,可以自动计算销售总额和销售的利润,用户可以查商品的销售情况,商品销售汇总。(4)库存管理 该
6、模块实现了库存的查询,库存情况汇总,设置库存预警值,可以查询哪些商品的库存低于预警值,并且显示出来。(5)报表管理 打印和导出商品信息报表、商品入库报表 、商品销售报表、导出库存预警报表。(6)系统管理 实现数据的备份、数据的还原和用户的管理。1.3系统数据流图 数据流图是用来描述数据流动、存储、处理的逻辑关系。根据电脑销售进销存系统的业务流程和功能需求,通过进一步分析后,得出了本进销存管理系统的主要数据流图。如图所示。 基本资料管理模块数据流图 商品入库管理模块数据流图 商品销售管理模块数据流图 商品库存管理模块数据流图 由于报表管理模块其实就是前面各个模块的查询结果的基础上,增加了打印功能
7、。这里就不在赘述其数据流程了。1.4系统开发环境系统开发工具:Microsoft Visual Studio 2008。系统开发语言:C#。数据库管理系统软件:SQL Server 2005。运行平台:Windows XP(SP3)/Windows 2000(sp4)/Windows Server 2003(SP1)。运行环境:Microsoft.NET Framework SDK v3.5。分辨率:最佳效果1024*768像素。2 进销存管理系统设计2.1系统设计原则系统设计其实就是系统建立的过程。根据前期所作的需求分析的结果,对整个系统进行设计,如系统框架、数据库设计等。在系统设真正开始之
8、前,设定系统的设计原则是非常必要的。本系统设计的原则:(1)实用性原则。最大限度的满足实际工作需求,各业务层、各管理环节数据的处理要符合用户的经营与管理。操作界面尽量美观大方,操作简单。(2)可扩展性和可维护性原则。为满足未来需求,系统应具备很好的可扩展性和可维护性。软件设计尽量模块化、组件化,使系统可灵活配置,数据库的设计尽可能考虑到未来的需要。(3)安全可靠性原则。系统与数据库的设计要做到安全可靠,防止非法用户的入侵。数据库的备份策略恰当,以防止灾难性事故的发生。(4)用户界面设计原则。用户界面做到美观大方、直观明了、条理清楚、易学易用。(5)数据库设计原则。a、一致性原则:对信息进行有效
9、的统一,在系统的分析与设计过程中,协调好各数据,保证数据的一致性和有效性。b、完整性原则:数据的正确、有效和相容。要防止合法用户使用数据库时向数据库中添加不合规范的数据,数据库中添加数据要有审核和约束机制。c、安全性原则:保护数据,防止用户在使用数据库时候,操作不当造成机密数据的泄露、更改和破坏12。d、可伸缩性原则:数据库结构的设计应充分考虑到未来需求和移植的需要,必须具有良好的扩展性、伸缩性和适度的冗余8。2.2系统E-R图E-R方法也称为实体-联系方法(Entity Relationship Approach),提供了表示实体型、属性和联系的方法,该方法用E-R图来描述现实世界的概念模型
10、。E-R模型的“联系”用来描述现实世界中事物内部以及事物之间的关系。画E-R的方式是对局部结构中任意两个实体型依据需求分析的结果,考察局部结构中任意两个实体型之间是否存在联系。如果有联系,进一步确定是1:N,M:N,还是1:1的关系。还要考察一个实体型的内部是否存在着联系,两个实体型之间是否存在联系,多个实体型之间是否存在联系等6。电脑销售进销存信息管理系统主要实现从进货、库存到销售的一体化信息管理,设计到商品类型、商品信息、购买商品的客户、商品的供应商等多个实体。下面介绍其中关键的实体E-R图。 系统用户E-R图 商品实体E-R图 客户实体E-R图 供应商实体E-R图 到货商品表实体E-R图
11、 销售表实体E-R图 库存表实体E-R图 系统总体E-R图2.3数据库设计 数据库作为系统的基础,在信息管理系统中占有非常重要的地位,首先要保证其设计的合理性,一个设计合理的数据库,可以提高数据的存储效率,是对数据有效管理的前提条件,保证数据的完整和一致,也是系统设计的关键。拥有设计合理的数据库往往可以起到事半功倍的效果。数据库如果设计不当,系统运行当中会产生大量的冗余数据,从而造成数据库的极度膨胀,影响系统的运行效率。甚至造成系统的崩溃。数据库的设计要充分了解用户的各方面需求,包括现有的需求以及将来可能添加的需求。才能设计出用户满意的系统8。2.3.1 数据库逻辑结构设计E-R图设计的概念模
12、型是从用户的角度来描述数据的结构。要在计算机上实现数据的存储和处理,还要将概念模型转换成数据库管理系统所支持的数据模型,并且这些数据表要满足范式要求,因此要将上面设计好的E-R图转化成关系模型的数据结构。结合E-R图可得到库存管理系统的逻辑结构如下12:(1)用户表:用户系统名、用户姓名、密码(2)计量单位表:单位名称 (3)商品类型表:类型名称(4)商品表:商品名称、商品名称首拼、所属类别、商品规格、型号、备注(5)供货商信息表:供应商编号、供应商名称、供应商名称简称、销售主管、销售主管联系方式、公司所在地、公司电话、传真、备注(6)客户信息表:客户编号、客户名称、客户名称简称、采购主管、采
13、购主管联系方式、公司所在地、公司电话、传真、备注(7)商品进货表:进货编号、商品名称、商品名称首拼、大单位、小单位、进货成本、销售价格、进货数量、供应商、进货日期、备注(8)商品销售表:销售编号、商品名称、商品名称首拼、销售数量、销售价格、销售人员、销售日期、备注(9)库存表:库存编号、商品名称、商品名称首拼、所属类别、大单位、小单位、商品规格、进货成本、销售价格、库存量、最低库存量2.3.2 数据库物理结构设计通过对数据库逻辑结构的设计,可以清晰的得到数据库的物理结构,即将上面的数据表转化为数据库中的二维表,以下便是该数据库中使用到得数据二维表。(1)用户信息表 用户信息表(2)计量单位表
14、计量单位表(3)商品类别表 商品类别表(4)商品信息表 商品信息表(5)供应商信息表 供应商信息表(6)商品进货表 商品进货表(7)商品销售表 商品销售表 (8)库存表 库存表 由于数据表之间存在着关联,修改一个表的时候通常会修改另外一些表的数据,为了完成信息之间的同步,在该数据库设计的过程中使用到了触发器,触发器是个特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发。2.4系统详细设计前面已经对系统的总体结构进行了设计,接下来各工作便是对各个功能模块进行详细的设计,详细设计的根本目标是确定系统的各个功能模块具体实现哪些功能,确定每个模块的具体执行过程。各个功能模块详细设
15、计 系统详细设计表功能类别功能名称描述用户登录用户登录对用户输入的用户名,密码进行验证,通过后,便可使用本系统 基本资料管理计量单位管理用户增加、删除计量单位。商品类型管理用户增加、删除商品的类型。商品资料管理用户新增、删除、或查询商品数据,系统根据用户的操作,对商品资料进行更新或显示。客户资料管理用户新增、删除客户数据,系统根据用户的操作,对客户资料进行更新或显示。供应商资料管理用户新增、删除供应商数据,系统根据用户的操作,对供应商资料进行更新或显示。商品到货入库管理商品到货货入库用户可以通过商品首拼和商品名称查询商品信息里面是否有将要录入的商品信息,如果没有就到商品信息管理模块录入商品信息
16、。有则可以将到货商品信息录入。入库信息查询用户可以查询某一时间段的商品进货单进行查询。商品销售管理销售出库用户先要查询仓库当中是否有将要售出的商品,如果没有则不能售出,进而形成采购信息;如果有还可以查询仓库中还剩多少,根据进货价格和销售价格自动计算出利润和销售总额。商品销售情况汇总用户选择查询时间段,对该短时间内销售的商品按商品名称对销售数量和销售总额进行汇总。库存管理库存查询用户可以按商品名称或是供应商,或是两者的组合查询来查询库存。库存情况汇总用户可以选择按商品首拼和商品所属类别分别对仓库中的商品进行汇总库存预警值设置设置某物资的最低库存量。库存预警查询库存量低于安全存量的商品,系统向用户
17、提供警示信息,以提醒用户及时进货。报表管理商品信息报表将商品资料打印,并保存成. XPS格式文件可用IE浏览器打开。商品入库报表按日期对商品入库信息进行汇总,并将汇总结果进行打印,并保存成. XPS格式文件。商品销售明细报表按日期或用户定义的汇总方式对销售信息进行汇总,进行打印,同时将数据保存成.xps格式文件。库存报警报表库存量低于安全存量的商品系统向用户提供警示信息,以提醒用户及时进货。可以打印,同时将数据保存成.xps格式文件。系统管理数据备份对数据库中的重要数据进行备份。数据的恢复将备份信息恢复至数据库用户信息管理拥有系统维护权限的用户可以增加新用户、删除新用户。并且修改当前用户密码。
18、退出系统用户结束操作后退出系统。2.5输入输出设计2.5.1 输入设计输入设计的目标是保证向系统输入正确的数据,在此前提系下,要做到输入方法简单、迅速、经济、方便。11本系统输入的主要内弄包括:商品的计量单位、商品类型、商品信息、供应商信息、客户信息、商品的入库信息、商品的销售信息,这些信息的输入方式均是由管理员通过键盘直接输入到系统数据库中。2.5.2 输出设计 系统只有通过输出才能为用户服务。能否为用户提供准确、及时、适用的信息是评价信息系统优劣的标准之一11。因此,必须十分重视输出设计。根据以上对本系统的分析,可以分析出本系统输出的主要内容包括:商品信息报表、商品入库报表、商品销售明细报
19、表、库存报警报表。用户可以将这些报表打印出来。以下便是输出格式及输出内容: 商品信息报表商品名称商品首拼所属类别商品规格商品型号备注表4.5-2 商品进货报表商 品名 称商品 首 拼单 位进 货价 格销 售价 格进 货数 量供应商进 货日 期备 注 商品销售明细报表商品名 称商品首 批商品规 格进货价 格销售价 格销售数 量单位纯收入客户简 称销售日 期 库存预警报表商品名称商品规格商品首拼当前库存量供应商最低库存量2.6模块处理过程详细设计 前面已经详细介绍了系统各个功能模块设计,这部分将对各模块的处理过程作详细设计。下面,为了清晰的展示各模块过程的详细设计,本人将通过图示的形式来对各功能模
20、块的处理过程设计进行描述。2.6.1 商品进货入库管理模块 商品进货入库管理处理图 2.6.2 商品销售管理模块处理过程图 商品销售管理模块处理图 2.6.3 库存管理模块处理过程图 商品进货入库管理处理图 2.6.4 报表管理模块 报表管理模块处理图3 部分功能代码3.1逻辑结构设计根据设计好的E-R图在数据库中建立各表,系统数据库中各表的逻辑结构如下:3.1.1进货信息表字段名数据类型长度主键描述GoodsIDnvarchar20是商品编号EmpIdnvarchar20否操作员编号JhCompNamenvarchar100否进货公司名称DepotNamenvarchar20否仓库名称Goo
21、dsNamenvarchar50否货物名称GoodsNumint4否商品数量GoodsUnitnvarchar20否商品计量单位GoodsJhPricenvarchar8否进货单价GoodsSellPricenvarchar8否销售单价GoodsNeedPricenvarchar8否应付金额GoodsNoPricenvarchar8否实付金额GoodsRemarknvarchar200否备注GoodTimedatetime8否进货时间Falgint4否删除标记3.1.2库存信息表字段名数据类型长度主键描述KcIDnvarchar50否库存编号GoodsIDnvarchar50是商品编号JhCo
22、mpNamenvarchar100否供应商名称KcDeptNamenvarchar20否仓库名称KcGoodsNamenvarchar20否商品名称KcNumint4否库存数量KcAlarmNumint4否警报数量KcUnitnvarchar20否商品计量单位KcTimedatetime8否进货时间KcGoodsPricenvarchar8否进货价格KcSellPricenvarchar8否销售价格KcEmpnvarchar50否进货人KcRemarknvarchar200否备注3.1.3商品销售信息表字段名数据类型长度主键描述SellIDnvarchar20是销售编号KcIDnvarchar
23、50否库存编号GoodsIDnvarchar20否商品编号EmpIdnvarchar20否员工编号GoodsNamenvarchar50是商品名称SellGoodsNumint4否销售数量SellGoodsTimenvarchar8否销售时间SellPricenvarchar8否销售单价SellNeedPaynvarchar8否应付金额SellHasPaynvarchar8否实付金额SellRemarknvarchar200否备注SellFalgint4否删除标记3.2窗体设计3.2.1 商品进货窗体 public int getIntCount() int intReslut = 0; if
24、 (intFalg = 1) if (txtGoodsID.Text = ) MessageBox.Show(商品编号不能为空!); return intReslut; if (txtGoodsName.Text = ) MessageBox.Show(商品名称不能为空!); return intReslut; if (txtJhCompName.Text = ) MessageBox.Show(供应商名称不能为空!); return intReslut; if (txtEmpId.Text = ) MessageBox.Show(进货人姓名不能为空!); return intReslut;
25、if (txtGoodsNum.Text = ) MessageBox.Show(数量不能为空!); return intReslut; if (txtGoodsName.Text = ) MessageBox.Show(进货单价不能为空!); return intReslut; if (intFalg = 2) if (txtGoodsID.Text = ) MessageBox.Show(商品编号不能为空!,选择要修改记录,提示); return intReslut; if (intFalg = 3) if (txtGoodsID.Text = ) MessageBox.Show(商品编号
26、不能为空!,选择要删除记录, 提示); return intReslut; private void toolSave_Click(object sender, EventArgs e) if (getIntCount() = 1) if (intFalg = 1) if (jhMenthod.tb_JhGoodsInfoMenthodAdd(jhGood)=2) MessageBox.Show(添加成功,提示); intFalg = 0; jhMenthod.tb_JhGoodsInfoFind(,5,dataGridView1); ControlStatus(); ClearContorl
27、(); else MessageBox.Show(添加失败, 提示); intFalg = 0; jhMenthod.tb_JhGoodsInfoFind(, 5, dataGridView1); ControlStatus(); ClearContorl(); if (intFalg = 2) if (jhMenthod.tb_JhGoodsInfoMenthodUpdate(jhGood)=1) MessageBox.Show(修改成功, 提示); intFalg = 0; jhMenthod.tb_JhGoodsInfoFind(, 5, dataGridView1); ControlS
28、tatus(); ClearContorl(); else MessageBox.Show(修改失败, 提示); intFalg = 0; jhMenthod.tb_JhGoodsInfoFind(, 5, dataGridView1); ControlStatus(); ClearContorl(); if (intFalg = 3) if (jhMenthod.tb_JhGoodsInfoMenthodDelete(jhGood)=1) MessageBox.Show(删除成功, 提示); intFalg = 0; jhMenthod.tb_JhGoodsInfoFind(, 5, dataGridView1); ControlStatus(); Cl