1、呼伦贝尔学院计算机科学与技术学院期末设计题 目: 家具城进销存管理系统 学生姓名:学 号:专业班级:指导教师:完成时间:目录第1章绪论11.1 开发背景及内容11。2 开发目标11。3开发工具21.3.1 C#简介21。3。2 SQL Server 20082第2章系统分析42。1 可行性分析42。1.1技术可行性分析42。1.2 经济可行性分析42。1。3 操作可行性分析42。1。4 法律可行性分析52。2 需求分析52。2。1 数据字典52。2。2 数据要求72.3系统功能结构图8第3章数据库设计93。1 数据库概念结构设计93。1。1 局部E-R图93。1.2 全局ER图103.2 数据
2、库逻辑结构设计113.3 数据库实施123。3.1 建库代码123.3。2 建表代码12第4章系统实现144。1 用户注册界面144。2登陆界面154。3 主界面154。3.1 系统管理164。3。2 基础信息管理174。4 查询统计254。4.1 客户查询254。4。2 商品查询274。4。3 供应商查询284.4。4 仓库查询294。5 帮助29第1章绪论1。1 开发背景及内容随着公司业务量的逐渐增长,业务范围的不断扩大,特别是中国进入WTO之后,市场竞争尤其是家电行业的竞争日趋激烈,公司需要更多的人力、物力、财力以稳固并拓展各公司商品在市场的销售额。如何更加有效地管理产品的进、销、存已成
3、为公司领导的重要决策事项.到目前为止,还没有一套完整的、行之有效的管理信息系统,进行信息管理的主要方式是基于文本、表格等纸介质的手工处理,信息处理工作量大,查询困难。为了使管理工作科学化、规范化,为了降低管理成本,实现管理现代化,扩大市场的竞争优势,特此开发“进销存管理信息系统”。“家具城进销存管理信息系统”主要是为公司的经营活动提供信息服务,它涵盖了采购部门、销售部门和仓库的各项管理工作,涉及多方面的职能。系统能够对客户信息管理、订单管理、供应商管理、销售管理等信息提供存储、更新、查询、统计的功能,使公司能够合理控制进销存各个环节,提高资金的利用率和结算速度,实现管理的高效率、实时性、安全性
4、、科学化、现代化和智能化。系统的数据来源由各职能部门的业务人员通过键盘输入。1.2 开发目标通过建立家具城进销存管理系统,希望避免公司业务管理的随意性,提高信息处理的速度和准确性,及时、准确地把握企业内部、市场和其他外部信息,以提高领导决策的水平。实现如下功能:1. 商品各种信息的录入、查询、修改、删除。2. 供应商信息的录入、查询、删除.3. 客户基本信息的录入、查询、修改、删除。4. 销售单的添加、删除.5. 采购单的添加、删除。6. 库房的查询统计.1。3开发工具1.3。1 C简介C#是微软公司发布的一种面向对象的、运行于。NET Framework之上的高级程序设计语言.并定于在微软职
5、业开发者论坛(PDC)上登台亮相。C#是微软公司研究员Anders Hejlsberg的最新成果。C#看起来与Java有着惊人的相似;它包括了诸如单一继承、接口、与Java几乎同样的语法和编译成中间代码再运行的过程。但是C与Java有着明显的不同,它借鉴了Delphi的一个特点,与COM(组件对象模型)是直接集成的,而且它是微软公司 .NET windows网络框架的主角。C#是一种安全的、稳定的、简单的、优雅的,由C和C+衍生出来的面向对象的编程语言。它在继承C和C+强大功能的同时去掉了一些它们的复杂特性(例如没有宏以及不允许多重继承)。C#综合了VB简单的可视化操作和C+的高运行效率,以其
6、强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为。NET开发的首选语言.C是面向对象的编程语言.它使得程序员可以快速地编写各种基于MICROSOFT 。NET平台的应用程序,MICROSOFT 。NET提供了一系列的工具和服务来最大程度地开发利用计算与通讯领域.C#使得C+程序员可以高效的开发程序,且因可调用由 C/C+ 编写的本机原生函数,因此绝不损失C/C+原有的强大的功能。因为这种继承关系,C#与C/C+具有极大的相似性,熟悉类似语言的开发者可以很快的转向C。1。3.2 SQL Server 2008SQL Server 2008是一个重大的产品版本,它推出了
7、许多新的特性和关键的改进,使得它成为至今为止的最强大和最全面的SQL Server版本。这篇文章详细介绍了Microsoft SQL Server 2008中的新的特性、优点和功能 在现今数据的世界里,公司要获得成功和不断发展,他们需要定位主要的数据趋势的愿景。微软的这个数据平台帮助公司满足这些数据爆炸和下一代数据驱动应用程序的需求。微软将继续投入和发展以下的关键领域来支持他们的数据平台愿景:关键任务企业数据平台、动态开发、关系数据和商业智能.SQL Server 2008出现在微软数据平台上是因为它使得公司可以运行他们关键任务的应用程序,同时降低了管理数据基础设施和发送观察和信息给所有用户的
8、成本。这个平台有以下特点:可信任的-使得公司可以以很高的安全性、可靠性和可扩展性来运行他们最关键任务的应用程序。高效的-使得公司可以降低开发和管理他们的数据基础设施的时间和成本。智能的-提供了一个全面的平台,可以在你的用户需要的时候给他发送观察和信息。第 18 页 共 29 页第2章系统分析2.1 可行性分析在明确系统目标和环境的基础上,需要进一步对系统的可行性进行研究。此活动的主要目标是进一步明确系统的目标、规模与功能,对系统开发背景、必要性和意义进行调查分析并根据需要和可能提出拟开发系统的初步方案与计划.可行性研究是针对系统进行全面、概要的分析,主要包括四方面:技术可行性分析、经济可行性分
9、析、操作可行性分析和法律可行性。2。1.1 技术可行性分析技术上的可行性分析主要分析现有技术条件能否顺利完成开发工作,硬、软件配置能否满足开发者需要等.本系统采用Windows 7 操作系统,其容量、速度能满足系统要求.数据库开发平台选用Microsoft公司的SQLServer 2008,该数据库管理系统在Windows 7 操作系统或Windows XP 操作系统的计算机上都能运行,并提供数据库之间的数据复制功能,可代替现有系统数据的手工传递工作,降低出错率,提高数据的可用性。本系统的应用软件开发工具选用的是开发人员熟悉的Microsoft Visual Studio 2010.2.1。2
10、 经济可行性分析主要是对项目的经济效益进行评价,一方面是支出的费用,其中包括设备购置费、软件开发费、管理和维护费、人员工资和培训费等。另一方面是取得的收益中可以用前来衡量的那部分.基于现有计算机及配套设备,不需要添置硬件设备,而且由本人自行开发,可以大大节省软件的开发费用、人员工资和培训费等,建立该系统后,能大大减少重复性的书面报告,降低办公费用,提高办公效率,与前期的投入相比,后期的收益是可观的。2。1。3 操作可行性分析该系统操作简单,易于理解,经过简单培训便可操作;而且是基于C语言开发的,操作时完全可行的。2。1。4 法律可行性分析本系统为本人开发,不涉及任非法问题,因此在法律上本系统也
11、是可开发的。2。2 需求分析这一阶段的主要目标是明确公司的进销存需求,确定新系统的逻辑功能,提出新系统的逻辑方案,完成系统分析阶段的最终成果系统说明书的编写。2。2.1 数据字典数据字典是系统中各类数据描述的集合,是进行详细的数据收集和数据分析所获得的主要成果。而数据项是数据字典不可或缺的一部分,以下为该系统各个表的数据项。1. 商品信息如表2-1所示:表21 商品表序号字段名称是否为主键是否为外键是否可为空Q1商品号是否否Q2商品名否否否Q3类别否否是Q4颜色否否是Q5型号否否否2. 供应商信息如表22所示:表2-2 供应商表序号字段名称是否为键是否为键是否可空Q6供应商号是否否Q7姓名否否
12、否Q8性别否否是Q9地址否否是Q10电话否否否Q11银行账号否否否3. 客户信息如表2-3所示:表23 客户表Q12字段名称是否为键是否为键是否可空Q13客户编号是否否续表表23 客户表序号字段名称是否为主键是否为外键是否可为空Q14地址否否否Q15性别否否是Q16电话否否否4. 员工信息如表24所示表2-4 员工表序号字段名称是否为主键是否为外键是否可为空Q17职工号是否否Q18职工名否否否Q19性别否否是Q20电话否否否Q21角色否否否5. 仓库信息如表25所示表25 仓库表序号字段名称是否为主键是否为外键是否可为空Q22仓库号是否否Q23仓库名否否是Q24最大容量否否否Q25地址否否否6
13、. 采购信息如表26所示表26采购表序号字段名称是否为主键是否为外键是否可为空Q26商品号否是否Q27职工号否是否Q28供应商号否是否Q29采购单号是否否Q30日期否否否Q31数量否否否Q32进价否否否7. 销售信息如表27所示表2-7 销售表序号字段名称是否为主键是否为外键是否可为空Q33商品号否是否Q34职工号否是否续表表2-7 销售表序号字段名称是否为主键是否为外键是否可为空Q35客户编号否是否Q36销售单编号是否否Q37日期否否否Q38数量否否否Q39单价否否否8. 库存信息如表2-8所示:表28 库存表序号字段名称是否为主键是否为外键是否可为空Q40商品号是是否Q41仓库号是是否Q4
14、2数量否否否9. 管理员信息如表29所示表29 管理员表序号字段名称是否为主键是否为外键是否可为空Q43用户名是否否Q44密码否否否2.2。2数据要求家具城进销存管理系统对数据的要求如下:1. 商品管理商品管理实现的是商品各种信息的录入、查询、修改、删除,通过录入商品的基本信息可以实现销售员对商品信息进行查看和更改,商品的基本信息包括(商品号,商品名,类别,颜色,型号)。2. 客户管理客户管理实现的是客户基本信息的录入、查询、修改、删除,客户的基本信息包括(客户编号,联系人,地址,性别,电话)3. 供应商管理供应商管理实现的是供应商信息的录入、查询、删除,通过对供应商信息的录入可实现对不同供应
15、商供应的同种商品进行对比查看,供应商的基本信息包括(供应商号,姓名,性别,地址,电话,银行账号)4. 员工管理通过对员工的管理可查出每一个销售单采购单的负责人,对于销售、采购出错时可根据信息询问对应的员工,员工的基本信息包括(职工号,职工名,性别,电话,角色)5. 仓库管理通过对仓库的管理可查看商品的存放位置,库存余量,仓库的基本信息包括(仓库号,仓库名,最大容量,地址)2。3系统功能结构图家具城进销存管理系统完成的主要功能有:1. 商品各种信息的录入、查询、修改、删除。2. 供应商信息的录入、查询、删除。3. 客户基本信息的录入、查询、修改、删除。4. 销售单的添加、删除。5. 采购单的添加
16、、删除。6. 库房的查询统计。系统功能结构图如图21所示:图2-1 系统功能结构图第3章数据库设计3。1 数据库概念结构设计概念设计的实质是将系统需求分析得到的用户需求抽象为信息结构的过程。概念设计的结果是数据库的概念模型,也就是用ER图表示.3。1.1局部E-R图以下为家具城进销存管理的局部ER图:1. 员工E-R图如图31所示:图31 员工ER图2. 供应商E-R图如图32所示 图3-2 供应商E-R图3. 客户ER图如图33所示:图3-3 客户E-R图4. 商品ER图如图34所示:图3-4 商品ER图5. 仓库ER图如图35所示:图3-5仓库ER图6. 管理员ER图如图36所示:图36
17、管理员E-R图3.1。2 全局E-R图家具城进销存管理系统全局ER图如图3-7所示:图37 家具城进销存管理总体E-R图3。2 数据库逻辑结构设计数据库的逻辑设计的任务就是把概念结构设计阶段的基本ER图转化为与选用具体机器上的DBMS产品所支持的数据模型相符合的逻辑结构,首先要实现的是ER图关系模型的转化。而为此要解决的问题是如何将实体和实体之间的联系转化为关系模式,如何确定这些关系模式的属性和码.对于实体,将每个实体转换为一个关系,实体的属性即为关系的属性,实体的码即为关系的码。根据ER图转换关系模式如:员工(职工号,职工名,性别,电话,角色)供应商(供应商号,姓名,性别,地址,电话,银行账
18、号)商品(商品号,商品名,类别,颜色,型号)采购(采购单号,商品号,职工号,供应商号,日期,数量,进价)客户(客户编号,联系人,地址,性别,电话)销售(销售单编号,商品号,职工号,客户编号,日期,数量,单价)仓库(仓库号,仓库名,最大容量,地址)库存(商品号,仓库号,数量)用户(用户名,密码)3.3 数据库实施3.3。1 建库代码以下为数据库建库代码:create database 家具城进销存管理系统3。3。2 建表代码以下为数据库建表代码:1. 创建管理员表create table user1(用户名 nchar(12) primary key,密码 varchar(20) not nul
19、l,)2. 创建仓库表create table 仓库(仓库号 nchar(6) primary key ,仓库名 nchar(6) not null,最大容量 int,地址 nvarchar(20))3. 创建商品表create table 商品(商品号 nchar(6) primary key,商品名 nvarchar(10),类别 nchar(2),颜色 nchar(3),型号 nchar(2)4. 创建库存表create table 库存(商品号 nchar(6),仓库号 nchar(6),数量 intprimary key(商品号,仓库号,是否入库),foreign key(商品号)r
20、eferences 商品(商品号),foreign key(仓库号)references 仓库(仓库号),)5. 创建员工表create table 员工(职工号 nchar(10) primary key,职工名 nvarchar(10),性别 nchar(2),电话 nchar(11),角色 nchar(3)6. 创建客户表create table 客户(客户编号 nchar(10) primary key,联系人 nvarchar(10),地址 nvarchar(30),性别 nchar(2),电话 nchar(11))7. 创建销售表create table 销售(商品号 nchar(
21、6) ,职工号 nchar(10) ,客户编号 nchar(10),销售单编号 nchar(6),日期 datetime,数量 int,单价 int,primary key(销售单编号),foreign key(商品号)references 商品(商品号),foreign key(职工号)references 员工(职工号),foreign key(客户编号)references 客户(客户编号)8. 创建供应商表create table 供应商(供应商号 nchar(10) primary key,姓名 nvarchar(6),性别 nchar(2),地址 nvarchar(30),电话 n
22、char(11),银行账号 nvarchar(20)9. 创建采购表create table 采购(商品号 nchar(6),职工号 nchar(10),供应商号 nchar(10),采购单号 nchar(6),日期 datetime,数量 int,进价 intprimary key(采购单号),foreign key(商品号)references 商品(商品号),foreign key(职工号)references 员工(职工号),foreign key(供应商号)references 供应商(供应商号),)第4章系统实现4.1 用户注册界面本界面的主要功能是实现管理员的注册.若注册时输入的
23、用户名已存在则不予注册,若密码与确认密码不一致也不予注册.若点击取消则取消注册并关闭窗体。其窗体如图4-1所示:图41 注册界面4。2登陆界面本界面的主要功能是实现管理员的登陆。登陆时若输入的用户名不存在则弹出提示信息;若输入的密码错误也弹出提示信息;若输入的用户名和密码都正确,则进入主界面.其窗体如图4-2所示:图42 登陆界面4.3 主界面管理员通过用户名和密码进入系统之后,便可通过主菜单进行一些简单的操作,具体操作有四部分:系统管理、基础信息管理、查询统计、帮助.主界面如图4-3所示:图4-3 主界面4。3。1系统管理系统管理主要实现管理员的密码修改和注销账户。1. 修改密码如图4-4所
24、示:图4-4 修改密码2. 注销账户如图4-5所示:图4-5 注销账户4。3。2 基础信息管理基础信息管理主要分为客户信息管理、商品信息管理、供应商信息管理、采购管理和销售管理。1. 客户信息管理客户信息管理主要实现客户的更新、删除、插入的操作。添加客户信息如图46所示:图46 添加客户信息确认客户信息如图4-7所示:图4-7 确认客户信息【插入】客户信息代码如下所示: DataColumn key = ds。Tables0。Columns0 ; ds.Tables0.PrimaryKey = key; DataRow row = ds。Tables”table”。RowsSelectInde
25、x; row = ds。Tables”table”.Rows.Find(cmbNo.Text); if (row = null) row = ds。Tables”table.NewRow(); row0 = cmbNo。Text; row1 = txtName。Text; row2 = txtAdress。Text; if (rdoB.Checked) sex = ”男”; else sex = ”女; row3 = sex; row4 = txtPhone。Text; if (MessageBox。Show(确认录入吗?, ”录入”) = DialogResult。OK) ds。Tables
26、0.Rows。Add(row); SqlCommandBuilder b = new SqlCommandBuilder(sda); sda。Update(ds, ”table”); getShow(); MessageBox.Show(”录入成功!”); 2. 商品信息管理商品信息管理主要实现数据的更新和删除操作。商品信息管理如图48所示图48 商品信息管理【保存更新】代码如下所示:private void getShow() string sql = select from 商品; da = new SqlDataAdapter(sql, h。geton()); da.Fill(ds,”s
27、p); dgvShow.DataSource=ds。Tables”sp; SqlCommandBuilder b = new SqlCommandBuilder(da); da.Update(ds, ”sp”); ds.Tables”sp”.Clear(); getShow();3. 供应商信息管理供应商信息管理主要实现供应商的添加和删除。供应商信息管理如图4-9所示:图49 供应商信息管理4. 采购管理采购主要实现添加采购信息和删除采购信息的功能。添加采购信息如图410所示:图410 添加采购信息【录入】采购单记录代码如下所示:sql = string.Format(select count
28、(*) from 采购 where 采购单号=0, txtCgsno。Text); int n = h。handle1(sql); if (n 0) MessageBox。Show(该采购单已存在); else if (txtCgsno.Text = ”) MessageBox。Show(”采购单信息不能为空,请重新输入); txtCgsno.Focus(); else sql = string。Format(insert into 采购 values(0,1,2,3,4,5,6), cmbSpsno。Text, cmbZgsno.Text, cmbGysno.Text, txtCgsno.T
29、ext, dtpDate.Value.ToShortDateString(), txtCount。Text, txtPay.Text, cmbSpsno.Text); int m = h.getQuery(sql); lsvProMess。Items。Clear(); getResult(); if (m 0) string sql1; /判断库中是否又该商品若有则则加上对应商品的数量若无则重新录入 string sql2 = string.Format(”select count(*) from 库存 where 商品号=0and 仓库号=1”, cmbSpsno.Text, cmbCksn
30、o.Text); n = h.handle1(sql2); if (n 0) sql1 = string。Format(”update 库存 set 数量=数量+0 where 商品号=1and 仓库号=2”, int。Parse(txtCount.Text), cmbSpsno。Text, cmbCksno。Text); h。getQuery(sql1); r。Close(); con = h.geton(); if (con.State = ConnectionState。Open) con。Close(); else sql1 = string。Format(”insert into 库
31、存 values(0,1,2), cmbSpsno.Text, cmbCksno。Text, txtCount。Text); h.getQuery(sql1); else MessageBox.Show(已取消本次操作); 删除采购信息如图411所示:图4-11 删除采购信息5. 销售管理销售管理主要分为添加销记录和删除销售记录。添加销售记录如图412所示:图4-12 添加销售记录删除销售记录如图413所示:图413 删除销售记录【删除】销售单代码如下所示:string str = ; SelectIndex = lsvShow.SelectedItems0.Index; string s1
32、= lsvShow.ItemsSelectIndex。SubItems0。Text; /商品号 string s = lsvShow。ItemsSelectIndex.SubItems3。Text; /订单编号 string s3=lsvShow.ItemsSelectIndex.SubItems4。Text; int s2 = Convert.ToInt32(lsvShow。ItemsSelectIndex。SubItems5.Text); /数量 /查询有该商品的库房,若有则修改库存,若没有则录入一条新信息 sql = string。Format(select 仓库号 from 库存 wh
33、ere 商品号=0, s1); r = h。getReader(sql); if (r。Read() str = r.GetString(0); r。Close(); con = h。geton(); if (con。State = ConnectionState。Open) con.Close(); if (str.Equals(”) sql = string。Format(”insert into 库存 values(0,120026,1)”, s1, s2 ); int i = h.getQuery(sql); else sql = string.Format(delete from 销
34、售 where 销售单编号=0, s); int i = h。getQuery(sql); sql = string.Format(”update 库存 set 数量=数量+0 where 商品号=1and 仓库号=2 ”, s2, s1, str); i = h。getQuery(sql); lsvShow。Items.Clear(); getShow(); getResult();4。4 查询统计查询统计主要实现客户、商品、供应商的查询以及库房的查询统计功能。通过查询统计可查看客户、商品、供应商的详细情况,以及库存量.4。4。1 客户查询客户查询如图4-14所示:图414 客户查询【查询】
35、客户信息代码如下所示:SqlDataReader r; string s = cmbTerm.Text; string s1 = cmbResult。Text; if (s= ”男 | s= 女) string sql1 = string.Format(”select from 客户 where 联系人=0”,s1); r = h。getReader(sql1); lsvCusMess。Items。Clear(); while (r。Read() ListViewItem l = new ListViewItem(r。GetString(0); l。SubItems.AddRange(new
36、string r。GetString(1), r.GetString(2), r。GetString(3), r。GetString(4) ); lsvCusMess。Items。Add(l); r.Close(); SqlConnection con = h。geton(); if (con。State = ConnectionState.Open) con。Close(); else /lsvCusMess。Clear(); string sql = string.Format(”select from 客户 where 0=1, s, s1); r = h。getReader(sql); lsvCusMess。Items。Clear(); while (r.Read() ListViewItem l = new ListViewItem(r。GetString(0); l.SubItems.AddRange(new string r.GetString(1