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






