企业进销存管理系统(C#含源代码) - 图文

更新时间:2024-01-28 12:19:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

河南科技大学本科毕业设计

摘 要

进销存管理系统旨在解决商业企业商品的采购、仓储、运输、配送、流通加工等一系列操作流程中的数据信息的处理问题,提供一系列的数据分析,帮助经营者合理的调整各个经营运作环节的运作节奏,并对商品流转过程进行了全程跟踪管理、相应款项流通的全程记录管理和票据信息统计的管理。因此进销存管理系统的全面应用,规范业务流程、提高了企业的管理水平,提高资金流动的透明度,加快商品资金周转速度,进而全面提高了企业的经营水平、进而全面提升了企业的经济效益。

进销存管理系统采用.NET技术和大型数据库SQL Server 2005开发,主要是处理商业企业商品的采购、库存和销售各个环节的活动,具有良好的人机界面;考虑到系统的使用对象可能较多,权限管理良好;数据查询方便,支持多条件查询;系统支持良好的数据备份和还原操作,有效保护数据,减少意外损失;在相应的权限下,可方便地删除数据;数据计算自动完成,尽量减少人工干预;报表分析商品进货、商品销售情况;强大的报表打印功能;报表基本信息查询时,可根据查询条件动态显示查询结果。

关键词: 进销存管理系统; .NET开发环境; C#语言; SQL Server 2005; 报表

I

河南科技大学本科毕业设计

Abstract

Purchase Sales Inventory Management System solves the business enterprises for procurement of goods, warehousing, transportation, distribution, circulation and processing of a series of operational procedures to deal with the issue of data, providing a wide range of data analysis to help operators of all reasonable measures to adjust the operation aspects of the operation of the rhythm and flow of goods throughout the tracking process management, and the corresponding flow of the entire record of the money management and paper management information statistics. Purchase Sales Inventory Management System is therefore a comprehensive application, standardized business processes and improve enterprise management level, improve the transparency of capital flows to accelerate the pace of commodity cash flow, and improve the operation of the enterprise level, thereby enhance the economic efficiency of enterprises.

Purchase Sales Inventory Management system applies .NET technologies and SQL Server 2005 database on large-scale development of commercial enterprises to deal primarily with the procurement of goods, inventory, and marketing activities, has a good human-machine interface;

II

河南科技大学本科毕业设计

taking into account the target system may be more , it has good rights management; query data to facilitate and support the multi-criteria query; the system supports good data backup and restore operations, the effective protection of data, loss of reduction of accidents; in the appropriate authority, can easily delete data; data auto-complete, as far as possible reduce human intervention; Statement Analysis purchase of goods, merchandise sales; powerful printing statements; statements of basic information may be based on dynamic query search results.

Key words: Purchase Sales Inventory Management System; .NET development environment; C# programming language; SQL

Server 2005; Crystal Reports

目 录

1 前言 .............................................................6

1.1 系统的现状以及研究意义 .....................................6 1.2 国内外文献综述 .............................................2 1.3 系统的基本内容综述 .........................................4 2 系统分析 .........................................................4

2.1 需求分析 ...................................................5 2.2 可行性分析 .................................................5 2.3 开发工具选择 ...............................................5

2.3.1 Visual Studio.NET平台简介 ............................5 2.3.2 C#语言简介 ............................................7 2.3.3 SQL Server 2005简介 ..................................8 2.4 管理信息系统逻辑模型设计 ...................................9

III

河南科技大学本科毕业设计

2.4.1 数据流程图 ............................................9 2.4.2 数据字典 .............................................11

3 系统设计 ........................................................12

3.1 项目规划 ..................................................12 3.2 系统功能结构 ..............................................13 3.3 设计目标 ..................................................13 3.4 开发及运行环境 ............................................14 3.5 数据库设计 ................................................14

3.5.1 数据表概要说明 .......................................14 3.5.2 数据库E-R图分析 .....................................15 3.5.3主要数据表的结构 ......................................17 3.6 新系统的主要功能模块设计 ..................................20

3.6.1 系统登录设计 .........................................20 3.6.2 系统主窗体设计 .......................................21 3.6.3 基本档案管理窗体设计 .................................23 3.6.4 进货管理窗体设计 .....................................26 3.6.5 销售管理窗体设计 .....................................28 3.6.6库存管理窗体设计 ......................................30 3.6.7报表窗体设计 ..........................................31 3.7系统的(硬件)系统结构与处理方式设计 ........................38

3.7.1系统处理方式 ..........................................38 3.7.2系统硬件配置 ..........................................38 3.7.3软件配置 ..............................................38 3.8系统的处理流程设计 ..........................................39

3.8.1系统业务流程分析 ......................................39 3.8.2新系统结构搭建 ........................................40

4 结束语 ..........................................................40 参考文献 ...........................................................41

IV

河南科技大学本科毕业设计

致谢 ...............................................................42

V

河南科技大学本科毕业设计

1 前言

1.1 系统的现状以及研究意义

随着经济全球化的发展和我国融入世界经济的步伐加快,全球采购、全球生产和全球销售的发展模式要求加快发展现代物流业,优化资源配置,提高市场响应速度和产品供给时效,降低企业物流成本,增强国民经济的竞争力。中小企业在我国经济发展中具有重要地位,目前我国的中小企业数量较多、地区分布广泛、行业分布跨度大,中小企业将面临外资企业和国外产品和服务的严峻挑战。比较而言,外资企业具有更为雄厚的资金实力、丰富的管理经验和先进的技术手段,因此,如果我国的中小企业不借助先进的管理思想转变经营理念,使用信息化手段提高企业的管理水平和工作效率,将很难在今后的国际竞争中取胜。企业管理在很多方面、很大程度上都必须借助信息化的工具来完成,采用电脑管理进货、库存和销售等诸多环节也已成为必然趋势。

从国家软件工业应用现状统计分析,目前我国大型中小企业使用管理软件的比例高达 95% 以上。其中,财务软件占 98% 以上;业务 / 商务软件约占 60% ; ERP 占 40% 左右。中小企业使用管理软件的比例约 45% ,绝大数都是财务软件。上述软件应用项目的成功率小于 56%。这些数据反映了我国中小企业应用管理信息系统的总体情况,我们从中可以看到,大型中小企业的应用情况要好于中小企业,大型中小企业的管理信息系统应用已逐渐的从单项业务管理系统向集成的管理系统转变,而中小型中小企业由于资金短缺,信息基础薄弱等原因管理信息系统的应用情况不理想,同时,我们还可以看出,中小企业实施管理信息系统存在风险,由于中小企业个性的存在以及管理软件业务流程的固化,不是应用了管理软件就能实现有效的管理信息系统,就能为中小企业带来效益。中小企业应用管理信息系统离不可中小企业的环境和条件。

当前金融危机横扫全球的大环境下,随着《物流业调整和振兴规划》正式出台,物流企业要改善当前经营困难的状况,就要建立起现代物流管理信息系统,实现《规划》物流业调整和振兴目标。

在现代企业的物流管理中,一个良好的进销存管理系统不仅能大大降低企业由于生产经营管理不善而产生的过多的成本,提高企业的办事效率,降低企业在物流管理中不必要的人力物流财力损失,而且能使企业的运行机制更加规范合理,使企业在节

VI

河南科技大学本科毕业设计

省自身成本提高竞争优势的同时,树立好企业形象,形成带头优势,从而带动整个行业的高效发展及社会经济效率的整体素质的提高。

同时,之所以会确定以进销存管理系统作为毕业设计题目,是与自己的经历有密切关系的。因为自己之前在一家物流公司有过一段实习,对物流企业产、供、销等日常环节都有所认识,逐渐认识到了流通领域的高效、快捷、便利,也逐渐认识到了其存在的一些缺陷,如管理方式,仍没有普及计算机管理,管理效率偏低,亟待解决,故选取进销存管理系统作为本次设计题目。

本系统的开发适用于多个行业,可以帮助企业快速有效管理进货、销售、库存等各项业务,合理控制进销存各个环节,提高资金利用率,实现管理高效率和实时性。

1.2 国内外文献综述

互联网络和信息技术的高速发展,改变了企业经营管理模式、做事的方法和人们的生活方式。全球经济环境不断发展和变化,竞争环境复杂多变,企业的管理思想,管理方法不断创新,计算机网络技术快速发展,促成企业管理信息系统总是不断发展和变化。总的发展趋势是管理思想现代化、系统应用网络化、开发平台标准化、业务流程自动化、应用系统集成化这样一个“五化”的发展过程。 管理思想现代化

社会和科学技术总是不断发展的,适应知识经济的新的管理模式和管理方法不断涌现:敏捷制造、虚拟制造、精益生产、客户关系管理、供应商关系管理、大规模定制、基于约束理论的先进计划和排产APS、电子商务、商业智能,基于平衡记分卡的企业绩效管理……不一而足。管理信息系统必须不断增加这些新思想、新方法以适应企业的管理变革和发展要求。 系统应用网络化

我们现在处在全球经济一体化的年代,网络经济的时代,由于互联网络和通信技术的高速发展,彻底改变了我们的经营管理模式、生活方式和做事的方法。企业对互联网络的依赖将像今天企业对电力和电话的依赖一样重要。离开互联网络的应用就谈不上敏捷制造、虚拟制造、精益生产、客户关系管理、供应商关系管理、电子商务。只有采用基于互联网络的系统才能方便地实现集团管理、异地管理、移动办公,实现环球供应链管理。 开发平台标准化

计算机技术发展到今天,那种封闭的专有系统已经走向消亡。基于浏览器/服务器的体系结构,支持标准网络通信协议,支持标准的数据库访问,支持XML的异构系统互联;实现应用系统独立于硬件平台、操作系统和数据库;实现系统的开放性、

2

河南科技大学本科毕业设计

集成性、可扩展性、互操作性;这些已成为应用系统必须遵守的标准, 反之,不符合上述标准的系统是没有前途的系统。 业务流程自动化

传统ERP是一个面向功能的事务处理系统。它为业务人员提供了丰富的业务处理功能,但是每个业务处理都不是孤立的,它一定与其他部门、其他人、其他事务有关,这就构成了一个业务流程。传统ERP对这个业务流程缺乏有效的控制和管理。一些业务流程被写死在程序里,非此既彼,必须按其执行,否则就要修改程序。许多流程是由人工离线完成的。工作流管理技术是解决业务过程集成的重要手段,它与ERP或其他管理信息系统的集成,将实现业务流程的管理、控制和过程的自动化,使企业领导与业务系统真正集成,实现企业业务流程的重构。所以工作流管理技术受到人们的高度重视并得到快速的发展。 应用系统集成化

企业信息化包括了很多内容:技术系统信息化包括CAD、CAM、CAPP、PDM、PLM;管理信息化包括ERP、CRM、SRM、BI、EC;生产制造过程自动化包括NC、FMS、自动化立体仓库AS/RS、制造执行系统MES。所有这些系统都是为企业经营战略服务的,它们之间存在着大量的共享信息和信息交换,在单元技术成功运行的基础上,它们之间要实现系统集成,使其应用效果最大化。

按照美国AMR研究公司对MES的定义:MES是一个常驻工厂层的信息系统,介于企业领导层的计划系统与主生产过程的直接工业控制系统之间。它以当前视角向操作人员/管理人员提供生产过程的全部资源(人员、设备、材料、工具和客户要求)的数据和信息。MES在工厂综合自动化系统中起着中间层的作用,在ERP系统产生的长期计划的指导下,MES根据底层控制系统采集的与生产有关的实时数据,对短期生产作业的计划调度、监控、资源配置和生产过程进行优化。功能模块包括工序详细调度、资源分配和状态管理、生产单元分配、过程管理、人力资源管理、维护管理、质量管理、文档控制、产品跟踪和产品清单管理、性能分析和数据采集等模块。在MES下层,是底层生产控制系统,包括DCS、PLC、NC/CNC和SCADA或这几种类型的组合。最近几年国外MES发展迅速,应该引起我们的重视。

总之企业在进行信息化规划时,要根据企业自身的特点,按照863/CIMS倡导的:总体规划,分步实施,效益驱动,重点突破的方针逐步实施。技术进步是永无止境的,企业信息化没有终点。

传统的商品管理系统, 已不适应现代先进的供销链经营模式。在目前市场竞争日益激烈的环境下, 对企业资源管理提出了更高的要求, 企业为了赢得市场竞争优势就必须加强物流, 信息流、资金流的动态管理, 使企业管理更加规范化。商品进销存管理系统的建设使得企业建立了信息化, 规范化的管理体系, 使得各业务环节的配合更加紧密, 提高了工作效率为企业全面实行信息化管理奠定了坚实的基础。

3

河南科技大学本科毕业设计

1.3 系统的基本内容综述

进销存管理系统采用.NET技术和大型数据库SQL Server 2005开发,主要是处理商业企业商品的采购、库存和销售各个环节的活动,具有良好的人机界面;考虑到系统的使用对象可能较多,权限管理良好;数据查询方便,支持多条件查询;系统支持良好的数据备份和还原操作,有效保护数据,减少意外损失;在相应的权限下,可方便地删除数据;数据计算自动完成,尽量减少人工干预;报表分析商品进货、商品销售情况;强大的报表打印功能;报表基本信息查询时,可根据查询条件动态显示查询结果。

进销存管理系统主要由基本档案管理、进货管理、销售管理、库存管理、报表设计和系统维护等模块组成,具体规划如下:

? 基本档案管理模块。基本档案管理模块主要用于实现系统基本数据的录入,相关

基础数据为:内部员工信息、往来单位信息、客户基本信息。

? 进货管理模块。该模块主要用于实现商品的进货数据录入、退货数据录入和进货

查询分析。

? 销售管理模块。该模块主要用于实现商品的销售数据录入、客户退货数据录入和

销售信息查询。

? 库存管理模块。库存管理模块主要用于实现库存调拨、库存商品数量上限报警和

库存数据查询。

? 报表设计模块。报表设计模块主要用于实现员工信息报表、往来单位报表、进货

商品报表、员工销售报表、商品进货分析报表、销售价格分析报表以及员工销售分析报表。

?

系统维护模块。系统维护模块用于实现系统用户设置、操作权限设置、密码修改、数据备份和数据恢复。

2 系统分析

进销存管理是企业日常经营管理中十分重要的一个组成部分,传统的手工管理方式呈现出越来越多的弊端。在手工管理模式下,统计,汇总处理时的工作量极其繁重,处理效率非常低,领导也无法及时了解企业资金占用的实际状况。通过报表管理,企

业可以直观分析企业的进销存情况,提高企业的竞争能力。

4

河南科技大学本科毕业设计

2.1 需求分析

通过实际调查,要求本系统具有以下功能。 ? 具有良好的人机界面。

? 如果系统的使用对象较多,则要求有良好的权限管理。 ? 方便的数据查询,支持多条件查询。

? 系统支持良好的数据备份和还原操作,有效保护数据,减少意外损失。 ? 在相应的权限下,可方便地删除数据。 ? 数据计算自动完成,尽量减少人工干预。 ? 报表分析商品进货、商品销售情况。 ? 强大的报表打印功能。

? 报表基本信息查询时,可根据查询条件动态显示查询结果。 ? 报表分析过程中,可根据条件动态分析报表数据。

2.2 可行性分析

随着经济的全球化以及中国经济改革的逐渐深化,中小企业面临着越来越激烈的竞争,改善企业内部以及整个供应链各个环节的管理、调度及资源配置,迅速适应客户的新需求和市场新机遇的能力,是企业赢得竞争胜利的决定性因素,进销存管理系统的开发是提高企业竞争力的最有效的方法之一。

进销存管理系统的开发实现了从进货、库存、到销售的一体化管理。提高了管理水平和工作效率,最大限度减少了手工操作带来的错误。

2.3 开发工具选择

本系统前台数据库采用Microsoft SQL Server 2005,该数据库系统在安全性、准确性、运行速度方面有绝对的优势,并且处理数据量大、效率高;后台选择以.NET平台作为开发平台,以C#作为开发语言,采用Visual Studio 2005作为主要的开发工具,可与SQL Server 2005数据库无缝连接。

2.3.1 Visual Studio.NET平台简介

Visual Studio .NET 是一套完整的开发工具,用于生成 ASP Web 应用程序、XML

Web services、桌面应用程序和移动应用程序。Visual Basic .NET、Visual C++ .NET、

5

河南科技大学本科毕业设计

Visual C# .NET 和 Visual J# .NET 全都使用相同的集成开发环境 (IDE),该环境允许它们共享工具并有助于创建混合语言解决方案。另外,这些语言利用了 .NET Framework 的功能,此框架提供对简化 ASP Web 应用程序和 XML Web services 开发的关键技术的访问。

Visual Studio .NET 集成开发环境现在包括开发智能设备(如 Pocket PC)应用程序的工具。通过使用这些工具和 .NET Framework 精简版(.NET Framework 的子集),您可以在个人数字助理 (PDA)、移动电话和其他资源受约束的设备中,创建、生成、调试和部署在 .NET Framework 精简版上运行的应用程序。

ASP.NET 移动设计器扩展了 ASP.NET 和 .NET Framework,可用来生成移动电话、PDA 和寻呼机的 Web 应用程序。此设计器集成在 Visual Studio IDE 中。您可以创建移动 Web 应用程序,使用移动设计器修改移动 Web 窗体,然后生成和运行该应用程序(所有这些操作都是在 Visual Studio 中完成的)。

Web 窗体是用于创建可编程 Web 页的 ASP.NET 技术。Web 窗体将自己呈现为浏览器兼容的 HTML 和脚本,这使任何平台上的任何浏览器都可以查看 Web 页。使用 Web 窗体,通过将控件拖放到设计器上然后添加代码来创建 Web 页,与创建 Visual Basic 窗体的方法相似。

Windows 窗体是用于 Microsoft Windows 应用程序开发的、基于 .NET Framework 的新平台。此框架提供一个有条理的、面向对象的、可扩展的类集,使您能够开发功能丰富的 Windows 应用程序。另外,Windows 窗体可作为多层分布式解决方案中的本地用户界面。

XML Web services 是可以通过 HTTP 使用 XML 接收请求和数据的应用程序。XML Web services 不受特定组件技术或对象调用约定的制约,因此可由任何语言、组件模型或操作系统访问。在 Visual Studio .NET 中,可以使用 Visual Basic、Visual C#、JScript、C++ 的托管扩展或 ATL Server 快速创建和包含 XML Web services。

可扩展标记语言 (XML) 提供描述结构数据的方法。XML 是 SGML 的子集,非常适合在 Web 上传送。万维网联合会 (W3C) 定义了 XML 标准以使结构化数据保持统一并独立于应用程序。Visual Studio .NET 完全支持 XML,提供了 XML 设计器以使编辑 XML 和创建 XML 架构更容易。

.NET Framework 是用于生成、部署和运行 XML Web services 和应用程序的多语言环境。它由三个主要部分组成:

? 公共语言运行库 运行库实际上在组件的运行时和开发时操作中都起到很大的作

用,尽管名称中没有体现这个意思。在组件运行时,运行库除了负责满足此组件在其他组件上可能具有的依赖项外,还负责管理内存分配、启动和停止线程和进程,以及强制执行安全策略。在开发时,运行库的作用稍有变化;由于做了大量的自动处理工作(如内存管理),运行库使开发人员的操作非常简单,尤其是与

6

河南科技大学本科毕业设计

今天的 COM 相比。特别是反射等功能显著减少了开发人员为将业务逻辑转变为可重用组件而必须编写的代码量。

? 统一编程类 该框架为开发人员提供了统一的、面向对象的、分层的和可扩展的

类库集 (API)。目前,C++ 开发人员使用 Microsoft 基础类,而 Java 开发人员使用 Windows 基础类。框架统一了这些完全不同的模型并且为 Visual Basic 和 JScript 程序员同样提供了对类库的访问。通过创建跨所有编程语言的公共 API 集,公共语言运行库使得跨语言继承、错误处理和调试成为可能。从 JScript 到 C++ 的所有编程语言具有对框架的相似访问,开发人员可以自由选择它们要使用的语言。

? ASP.NET ASP.NET 建立在 .NET Framework 的编程类之上,它提供了一个 Web

应用程序模型,并且包含使生成 ASP Web 应用程序变得简单的控件集和结构。ASP.NET 包含封装公共 HTML 用户界面元素(如文本框和下拉菜单)的控件集。但这些控件在 Web 服务器上运行,并以 HTML 的形式将它们的用户界面推送到浏览器。在服务器上,这些控件公开一个面向对象的编程模型,为 Web 开发人员提供了面向对象的编程的丰富性。ASP.NET 还提供结构服务(如会话状态管理和进程回收),进一步减少了开发人员必须编写的代码量并提高了应用程序的可靠性。另外,ASP.NET 使用这些同样的概念使开发人员能够以服务的形式交付软件。使用 XML Web services 功能,ASP.NET 开发人员可以编写自己的业务逻辑并使用 ASP.NET 结构通过 SOAP 交付该服务。

2.3.2 C#语言简介

C#编程语言是由微软公司的Anders Hejlsberg和 Scott Willamette领导的开发小组专门为.NET平台设计的语言,它可以使程序员移植到.NET上。这种移植对于广大的程序员来说是比较容易的,因为C#从C,C++和Java发展而来,它采用了这三种语言最优秀的特点,并加入了它自己的特性。C#是事件的驱动的,完全面向对象的可视化编程语言,我们可以使用集成开发环境来编写C#程序。使用IDE,程序员可以方便的建立,运行,测试和调试C#程序,这就将开发一个可用程序的时间减少到不用IDE开发时所用时间的一小部分。使用IDE迅速建立一个应用程序的过程称为快速反映开发。 C#2.0特性

? 泛型:在我看来,泛型就是通过将数据类型参数化从而实现了代码的更为灵

活的复用,泛型的出现使得C#能够使用同一段代码来操作多种数据类型。泛型无疑是C#2.0最重大的改进,它的出现赋予了C#代码更强的类型安全,更好的复用,更高的效率和更清晰的约束。

7

河南科技大学本科毕业设计

? 匿名方法:匿名方法允许我们将代码直接与委托实例相关联,使委托实例化

工作更加直观和方便。在我看来,这只是C#又多了一种语法格式而已,不再像以前必须将方法名传给委托实例,而是又多了一种选择。

? 迭代器:迭代器允许我们更加方便的编写用于foreach语句的类型。在我看

来,迭代器的出现只不过是改进了1.0中不便的可用foreach语句类型的编写限制,简化了一些接口。

? 局部类型:局部类型允许我们将一个类的代码分别写在不同的cs文件中。

最典型的应用就是使用VS2005创建Form文件时,VS会自动将系统生成的代码与用户代码分开。局部类型通过partial关键字来声明。

? 空属类型:空属类型是一种像int一样可以为空的变量类型。本质上是一种

泛型的应用,是System.Nullable<>的一种类型实例化。

? 静态类:静态类是只用于包含静态成员的类型,既不能实例化,亦不能被继

承。

2.3.3 SQL Server 2005简介

SQL Server 2005 中包含了非常丰富的新特性:通过提供一个更安全、可靠和高效的数据管理平台,增强企业组织中用户的管理能力,大幅提升IT管理效率并降低运维风险和成本;通过提供先进的商业智能平台满足众多客户对业务的实时统计分析、监控预测等多种复杂管理需求,推动企业管理信息化建设和业务发展;同时,SQL Server 2005将提供一个极具扩展性和灵活性的开发平台,不断拓展您的应用空间,实现Internet数据业务互联,为您带来新的商业应用机遇。

由于大大减少了应用程序宕机时间,提高了系统的可伸缩性和性能,并加以更严格的安全控制,SQL Server 2005在支持现实中最苛刻的企业级系统要求的道路上,迈出了极大的一步。SQL Server是微软服务器家族中重要的一部分,通过微软服务器系列产品共有的Engineering strategy所实现的增强的管理性和集成性,客户可以有效降低总体拥有成本并从更快的开发部署时间中受益。 安全、可靠、高效的企业级数据管理平台

SQL Server 2005 将在安全性、高可靠性、性能、扩展性、可管理性方面有极大的提高,不仅能够确保企业级数据业务的实时稳定运行、还能够大大提高管理效率、降低操作复杂度和运维成本。例如,SQL Server 2005将提供全新的安全认证、数据加密技术来加强您数据系统的安全性;数据库镜像、快照、时点恢复、实时在线管理等诸多功能大大提高了企业级系统的可靠性、扩展性;而数据集成,各种自动化管理、调试和优化工具则为您的IT管理工作带来全新的体验。在硬件方面,SQL Server 2005支持64位运算和海量数据存储。

8

河南科技大学本科毕业设计

先进、一体化的商业智能平台

SQL Server 2005使您可以快速构建部署各类商业智能解决方案,为你提供深入的业务分析统计、和监控预测平台,进一步推动企业的信息化管理和业务发展。SQL Server 2005将提供非常完整的商业智能套件,包括相关的数据仓库、数据分析、ETL、报表、数据挖掘的一系列设计、开发、管理工具。为了满足客户日渐增强的实时BI和企业级应用规模的需求,SQL Server 2005 在构建商业智能平台的实时性、扩展性方面也有了质的飞跃。全新的数据分析工具和丰富的数据挖掘算法将帮助客户有效进行深入的业务监控分析、决策支持;企业级的ETL工具将支持各种异类数据和复杂数据业务的整合;面向终端用户的报表设计及管理工具与Office的前端集成能够提供非常灵活的数据展示和自由定制功能。 极具扩展性和灵活性的开发平台

SQL Server 2005将提供更加强大的开发工具和各类新的开发特性,在大大提高开发效率的同时,将进一步拓展您的应用空间,带来新的商业应用机遇。例如,XML数据库与Web Service的支持将使您的应用实现Internet数据互联,.Net集成极大的扩展了开发空间,异构数据集成、Service Broker使您的数据和其它应用无缝集成,各种新数据类型和T-SQL扩展带来了诸多灵活性。C#、VB.Net、XQuery、XMLA、ADO.Net 2.0、SMO、AMO等都将成为SQL Server数据平台上开发数据相关应用的有力工具。

2.4 管理信息系统逻辑模型设计

2.4.1 数据流程图

本系统采用结构化方法对其进行分析与设计。得到如图1所示的顶层数据流图和图2所示的第0层数据流图:

9

河南科技大学本科毕业设计

进货公司用户(操作员)基本档案管理采购退货供应商品报表进销存管理系统管理操作退货客户销售商品系统管理员系统维护进销存信息文件

图1 顶层数据流图

D1 商品进货信息表F23F22P2F1 进货查询进货管理用户(操作员)F2 进货信息F3F27F23 供应商品F22 采购退货F21F20F19F26供货公司P1基本档案管理P4F4 查询、调拨库存管理F5 库存报警P3F6 设计报表F7 报表显示P5销售管理报表设计D2 基本信息表F18F17 退货F16 销售商品F15客户F11F10系统管理员F8 用户管理P6系统维护F25F14F9 数据备份还原D3 商品销售信息表F24F12F13D4 库存信息表D5系统权限管理表 10

河南科技大学本科毕业设计

图2 第0层数据流图

2.4.2 数据字典

数据字典用于进一步定义和描述所有数据项,主要包括数据流字典(表1)、数据存储字典(表2)、数据处理字典(表3):

表1主要数据流字典清单

总编号 1-01 1-02 1-03 1-04 1-05 1-06 1-07 1-08 1-09

表2主要数据存储字典清单

总编号 S-01 S-02 S-03 S-04 S-05

表3主要数据处理字典清单

总编号

数据流图中编号 F1 F2 F3 F4 F5 F6 F7 F8 F9 名称 查询请求 进货信息 基本档案管理请求 查询请求 报警信息 报表设计请求 报表 用户管理请求 数据备份、还原请求 来源 用户 进货管理 用户 用户 库存管理 用户 报表设计 系统管理员 系统管理员 去向 进货管理 用户 基本档案管理 库存管理 用户 报表设计 用户 系统维护 系统维护 所含数据结构 商品ID、用户ID 商品ID、进货公司ID、相关款项 说明 查询进货信息 显示进货信息 员工信息、往来单管理员工信息、位信息 往来单位信息 用户ID、商品ID 库存信息、商品ID 往来单位信息、员工信息、销售信息 用户ID、用户权限 用户ID、用户权限、 查询库存信息 显示库存安全状态 设计、查询报表 显示报表 管理用户 数据备份、还原 数据流图中的编号 D1 D2 D3 D4 D5 名称 商品进货信息表 基本信息表 商品销售信息表 库存信息表 系统权限管理表 输入数据流 F22 F19 F14 F11 F13 输出数据流 F23 F18 F15 F10 F12 内容 商品进货信息、公司ID 员工信息、公司信息 商品销售信息 商品库存信息 权限设置 说明 数据流图名称 输入 11

处理逻辑概况 输出 说明 河南科技大学本科毕业设计

中的编号 P-01 P-02 P1 P2 基本档案管理 进货管理 档案管理请求 进货查询请求 商品销售P-03 P3 销售管理 信息表内容、退货信息 库存调拨请求 进货、销售、库存、基本档案信息 用户管理、P-06 P6 系统维护 数据备份还原请求 更新用户、数据 用户权限管理表 查询销售信息、处理退货 商品销售信息表内容 商品库存信息、库存报警 管理员工、往来单位基本信息 查询进货信息、采购退货 基本信息表内容 商品进货信息表内容 P-04 P4 库存管理 查询库存信息 P-05 P5 报表设计 根据数据表信息生成报表 相关分析报表

3 系统设计

3.1 项目规划

进销存管理系统主要由基本档案管理、进货管理、销售管理、库存管理、报表设计和系统维护等模块组成,具体规划如下:

? 基本档案管理模块。基本档案管理模块主要用于实现系统基本数据的录入,相关

基础数据为:内部员工信息、往来单位信息、客户基本信息。

? 进货管理模块。该模块主要用于实现商品的进货数据录入、退货数据录入和进货

查询分析。

? 销售管理模块。该模块主要用于实现商品的销售数据录入、客户退货数据录入和

销售信息查询。

? 库存管理模块。库存管理模块主要用于实现库存调拨、库存商品数量上限报警和

库存数据查询。

? 报表设计模块。报表设计模块主要用于实现员工信息报表、往来单位报表、进货

商品报表、员工销售报表、商品进货分析报表、销售价格分析报表以及员工销售分析报表。

12

河南科技大学本科毕业设计

?

系统维护模块。系统维护模块用于实现系统用户设置、操作权限设置、密码修改、数据备份和数据恢复。

3.2 系统功能结构

进销存管理系统功能结构图如图3所示。

进销存管理系统功能模块 基本档案 进货管理 销售管理 库存管理 报表设计 系统维护 员工信息往来单位更改用户退出系统商品销售客户退货销售查询系统用户权限设置更改密码数据备份数据还原3.3 设计目标

本系统属于中小型的进销存管理系统,可以对中小型企业中商品的进销存进行有

13

采购进货采购退货采购查询库存调拨库存报警库存查询员工信息报表往来单位报表进货商品报表员工销售报表商品进货分析报表销售价格分析报表员工销售分析报表

图3 进销存管理系统功能结构图

河南科技大学本科毕业设计

效管理。通过本系统可以达到以下目标。

? 系统采用人机交互方式,界面美观友好,信息查询灵活、方便,数据存储安全可

靠;

? 实现后台监控功能;

? 利用报表中图表分析员工销售业绩; ? 实现各种查询,如定位查询、模糊查询等;

? 实现商品进货分析与统计、销售分析与统计、商品销售成本明细等功能; ? 强大的库存预警功能,尽可能地减少商家不必要的损失; ? 实现报表动态的分析数据;

? 对用户输入的数据,进行严格的数据检验,尽可能避免人为错误;

?

系统最大限度地实现了易维护性和易操作性。

3.4 开发及运行环境

? 系统开发平台:Microsoft Visual Studio 2005。 ? 系统开发语言:C#。

? 数据库管理系统软件:SQL Server 2005.

? 运行平台:Windows XP(SP2)/ Windows 2000(SP4)/ Windows Server 2003(SP1)。 ? 分辨率:最佳效果1024x768像素。

3.5 数据库设计

本系统采用SQL Server 2005作为前台数据库,数据库名称为db_GoodsManage,其中包含13张数据表,下面分别介绍。

3.5.1 数据表概要说明

本系统后台数据库中的数据表有: ? tb_Company(公司基本信息表) ? tb_Customer(客户基本信息表) ? tb_Department(部门基本信息表) ? tb_Depot(仓库类别信息表)

14

河南科技大学本科毕业设计

? tb_Goods(商品进货信息表) ? tb_Popedom(系统权限管理表) ? tb_Post(员工职位表)

? tb_ReGoods(商品退货信息表) ? tb_Sell(商品销售信息表) ? tb_Stock(库存信息表)

? tb_StockTemp(库存调拨信息表) ? tb_Unit(商品单位表) ? tb_User(员工基本信息表)

3.5.2 数据库E-R图分析

根据上面的设计规划出的实体主要有商品信息实体、员工信息实体、退货商品实体、商品销售实体、商品库存实体和商品调拨信息实体。

?

进销存管理系统中商品信息实体E-R图,如图4所示。

商品进货信息表商品进货ID进货员工ID销售价格进货公司仓库类别商品名称进货数量进货时间进货价格 图4 商品信息实体图

? 进销存管理系统中员工信息实体E-R图,如图5所示。

15

河南科技大学本科毕业设计

员工基本信息表员工姓名员工性别联系电话系统登录名系统登录密码所在部门员工职位家庭住址家庭电话 图5 员工信息实体图

? 进销存管理系统中退货商品实体E-R图,如图6所示。

退货商品信息表退货商品ID退货原因商品名称客户ID公司名称仓库名称退货时间退货数量 图6 退货商品实体图

? 进销存管理系统中商品销售实体E-R图,如图7所示。

商品销售信息表实付金额销售ID商品ID销售价格销售数量商品规格应付金额 图7 商品销售实体图

16

河南科技大学本科毕业设计

? 进销存管理系统中商品库存实体E-R图,如图8所示。

商品库存信息表库存ID商品ID库存名称商品名称库存数量报警数量实付金额应付金额 图8 商品库存实体图

? 进销存管理系统中商品调拨信息实体E-R图,如图9所示。

商品调拨信息表调拨ID操作员ID商品ID商品名称调出仓库调入仓库调动数量 图9 商品调拨信息实体图

3.5.3主要数据表的结构

表4 tb_User(员工基本信息表)

列名 UserID Name SysLoginName Pwd Sex Birthday Department Post

数据类型 Int nvarchar(20) nvarchar(20) nvarchar(100) nvarchar(20) datetime nvarchar(20) nvarchar(20) 17

可否为空 NOT NULL NULL NULL NULL NULL NULL NULL NULL 描述 员工ID(主键) 员工姓名 系统登录名 登录密码 员工性别 员工生日 所属部门 员工职位 河南科技大学本科毕业设计

PhoneH PhoneM Address PopedomID

表5 tb_Stock(库存信息表)

列名 StockID GoodsID CompanyName DepotName GoodsName StockNum AlarmNum GoodsUnit GoodsTime GoodsSpec GoodsPrice SellPrice NeedPay HasPay Remark

表6 tb_Goods(商品进货信息表)

列名 GoodsID UserID CompanyName DepotName GoodsName GoodsNum GoodsUnit GoodsTime GoodsSpec GoodsPrice SellPrice NeedPay HasPay Remark

表7 tb_Sell(商品销售信息表) 数据类型 nvarchar(20) int nvarchar(100) nvarchar(20) nvarchar(50) int nvarchar(20) datetime nvarchar(20) money money money money nvarchar(200) 可否为空 NOT NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 描述 商品ID(主键) 操作员ID 进货公司名称 仓库名称 货物名称 商品数量 商品计量单位 进货时间 商品规格 进货单价 销售单价 应付金额 实付金额 备注 数据类型 int nvarchar(20) nvarchar(100) nvarchar(20) nvarchar(20) int int nvarchar(20) datetime nvarchar(20) money money money money nvarchar(200) 可否为空 NOT NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 描述 标识ID(主键) 商品ID 进货公司名称 仓库名称 货物名称 库存数量 库存报警数量 商品计量单位 进货时间 商品规格 进货价格 销售价格 应付金额 实付金额 备注 nvarchar(20) nvarchar(20) nvarchar(200) int NULL NULL NULL NULL 家庭电话 手机号码 家庭住址 权限ID 18

河南科技大学本科毕业设计

列名 SellID StockID GoodsID UserID GoodsName GoodsNum GoodsSpec GoodsTime GoodsUnit GoodsPrice SellPrice NeedPay HasPay Remark

表8 tb_ReGoods(商品退货信息表)

列名 ReGoodsID StockID GoodsID UserID CustomerID CompanyName DepotName ReGoodsName ReGoodsSpec ReGoodsTime ReGoodsNum ReGoodsUnit ReGoodsPrice NeedPay HasPay ReGoodsResult

数据类型 nvarchar(20) int nvarchar(20) int int nvarchar(100) nvarchar(20) nvarchar(20) nvarchar(20) datetime int nvarchar(20) money money money nvarchar(400) 可否为空 NOT NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 描述 退货商品ID(主键) 库存ID 商品ID 操作员ID 客户ID 进货公司名称 仓库名称 货物名称 退货数量 退货日期 商品规格 商品计量单位 退货单价 应付金额 已退款金额 退货原因 数据类型 nvarchar(20) int nvarchar(20) int nvarchar(50) int nvarchar(20) datetime nvarchar(20) money money money money nvarchar(200) 可否为空 NOT NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 描述 销售ID(主键) 库存ID 商品ID 员工ID 货物名称 销售数量 商品规格 销售时间 商品计量单位 进货单价 销售单价 应收金额 实收金额 备注 19

河南科技大学本科毕业设计

3.6 新系统的主要功能模块设计

3.6.1 系统登录设计

1.窗体设计

在窗体中分别添加三个Label控件,一个ErrorProvider控件,两个Button控件。

图10 系统登录窗体

2.代码设计

声明公共类SqlBaseClass、PropertyClass和WinOperationClass三个全局对象,通过类对象调用类中的功能方法,实现代码如下:

SqlBaseClass SqlExecute = new SqlBaseClass();

PropertyClass Property = new PropertyClass();

WinOperationClass WinFormClass = new WinOperationClass();

在窗体初始化时绑定窗体中的一些控件,窗体初始化代码如下: private void Login_Load(object sender, EventArgs e)

{

string cmdtxt = \;

this.cbxDegree.BeginUpdate();

this.cbxDegree.DataSource = SqlExecute.GetDs(cmdtxt).Tables[0]; this.cbxDegree.DisplayMember = \; this.cbxDegree.ValueMember = \; this.cbxDegree.EndUpdate(); }

【确定】按钮的Click事件代码如下:

private void btnOK_Click(object sender, EventArgs e)

{

if (this.txtUid.Text.Length == 0) {

20

河南科技大学本科毕业设计

this.errAllInfo.SetError(this.txtUid, \用户名不能为空!\); }

if (this.txtPwd.Text.Length < 6) {

this.errAllInfo.SetError(this.txtPwd, \密码不能小于6位!\); }

//string P_DESDcrypt = WinFormClass.DESEncrypt(this.txtPwd.Text);

string cmdtxt = \WHERE SysLoginName='\ + this.txtUid.Text.Trim() + \;

cmdtxt += \ + this.txtPwd.Text.Trim() + \ + this.cbxDegree.SelectedValue.ToString() + \;

SqlDataReader P_dr = SqlExecute.GetReader(cmdtxt); P_dr.Read(); if (P_dr.HasRows) {

AppMain AppForm = new AppMain(); this.Hide();

PropertyClass.SendNameValue = this.txtUid.Text;

PropertyClass.SendPopedomValue = P_dr[\].ToString(); PropertyClass.SendUserIDValue = P_dr[\].ToString(); PropertyClass.SavePassword = P_dr[\].ToString(); AppForm.Show(); } else {

MessageBox.Show(\用户名、密码或身份不正确!\, \登录提示\, MessageBoxButtons.OKCancel, MessageBoxIcon.Information); P_dr.Close(); }

P_dr.Close(); }

3.6.2 系统主窗体设计

1.窗体设计

在窗体中分别添加一个MenuStrip控件、一个Timer控件和一个StatusStrip控件。

21

河南科技大学本科毕业设计

图11 系统主界面

2.代码设计

方法MenuIsVisible()根据用户权限分配显示菜单,方法代码如下:

public void MenuIsVisible()

{

ArrayList arylst = new ArrayList();

ToolStripMenuItem[] menu = new ToolStripMenuItem[] {

this.menuEmployee,this.menuCompany,this.menuCustomer,this.menuGoodsIn,this.menuGoodsOut,this.menuSellGoods,

this.menuGoodsBack,this.menuDepotChange,this.menuDepotAlarm,this.menuSysUser,this.menuPopedomSet,this.menuDatabak,this.menuReBakData };

DataSet P_ds = G_SqlClass.GetDs(\ + PropertyClass.SendNameValue + \);

for (int i = 0; i < 13; i++) {

arylst.Add(P_ds.Tables[0].Rows[0][14 + i].ToString()); }

for (int j = 0; j < arylst.Count; j++) {

if (arylst[j].ToString() == \) {

22

河南科技大学本科毕业设计

menu[j].Visible = false; } else {

menu[j].Visible = true; } } }

在窗体初始化时执行相关操作,窗体初始化代码如下: private void AppMain_Load(object sender, EventArgs e)

{

this.timer1.Start();

this.statusUser.Text = \系统操作员:\ + PropertyClass.SendNameValue; MenuIsVisible(); }

单击菜单项时执行相应操作,菜单项代码如下:

private void Menu_Click(object sender, EventArgs e)

{

//声明对WinForm窗体进行操作的类对象

WinOperationClass P_Menu = new WinOperationClass();

//调用类中的方法,完成对窗体中ToolStripMenuItem控件相应项的操作 P_Menu.ShowForm((ToolStripMenuItem)sender, this); }

退出程序时执行退出确认,确认代码如下:

private void AppMain_FormClosing(object sender, FormClosingEventArgs e)

{

if (MessageBox.Show(\确定要退出吗?\, \提示对话框\, MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes) {

this.Dispose(); } else {

AppMain app = new AppMain(); app.Show(); } }

3.6.3 基本档案管理窗体设计

? 员工信息窗体(图12)

23

河南科技大学本科毕业设计

? 供应商信息窗体 ? 客户基本信息窗体

1.窗体设计

在窗体中分别添加一个ToolStrip控件、一个GroupBox控件(包含Label控件、TextBox控件和ComboBox控件)和一个DataGridView控件。

图12 员工信息窗体

2.代码设计

声明公共类SqlBaseClass和WinOperationClass两个全局对象,以及保存工具栏按钮操作状态的标识,代码如下:

SqlBaseClass G_SqlClass = new SqlBaseClass(); //声明数据库操作类的对象

WinOperationClass G_OperationForm = new WinOperationClass(); //声明对窗体操作的类对象 int G_Int_status; //保存工具栏按钮操作状态

方法ControlStatus()控制控件状态,代码如下:

private void ControlStatus()

{

this.toolSave.Enabled = !this.toolSave.Enabled; this.toolAdd.Enabled = !this.toolAdd.Enabled; this.toolCancel.Enabled = !this.toolCancel.Enabled; this.toolAmend.Enabled = !this.toolAmend.Enabled;

this.txtName.ReadOnly = !this.txtName.ReadOnly;

24

河南科技大学本科毕业设计

this.txtPhoneH.ReadOnly = !this.txtPhoneH.ReadOnly; this.txtPhoneM.ReadOnly = !this.txtPhoneM.ReadOnly; this.txtAddress.ReadOnly = !this.txtAddress.ReadOnly;

this.cbxSex.Enabled = !this.cbxSex.Enabled; this.cbxPost.Enabled = !this.cbxPost.Enabled;

this.cbxDepartment.Enabled = !this.cbxDepartment.Enabled;

this.dtBirthday.Enabled = !this.dtBirthday.Enabled; this.dgvUserInfo.Enabled = !this.dgvUserInfo.Enabled; }

方法FillControls()在控件中填充选中的DataGridView控件的数据,代码如下:

private void FillControls()

{ try {

this.txtName.Text = this.dgvUserInfo[1, this.dgvUserInfo.CurrentCell.RowIndex].Value.ToString(); this.txtPhoneH.Text = this.dgvUserInfo[6, this.dgvUserInfo.CurrentCell.RowIndex].Value.ToString(); this.txtPhoneM.Text = this.dgvUserInfo[7, this.dgvUserInfo.CurrentCell.RowIndex].Value.ToString(); this.txtAddress.Text = this.dgvUserInfo[8, this.dgvUserInfo.CurrentCell.RowIndex].Value.ToString();

this.cbxDepartment.Text = this.dgvUserInfo[4, this.dgvUserInfo.CurrentCell.RowIndex].Value.ToString(); this.cbxPost.Text = this.dgvUserInfo[5, this.dgvUserInfo.CurrentCell.RowIndex].Value.ToString(); this.cbxSex.Text = this.dgvUserInfo[2, this.dgvUserInfo.CurrentCell.RowIndex].Value.ToString();

this.dtBirthday.Value = Convert.ToDateTime(this.dgvUserInfo[3, this.dgvUserInfo.CurrentCell.RowIndex].Value.ToString()); }

catch { } }

方法ClearControls()将控件恢复到原始状态,代码如下:

private void ClearControls()

{

this.cbxDepartment.SelectedIndex = 0; this.cbxPost.SelectedIndex = 0; this.cbxSex.SelectedIndex = 0;

25

河南科技大学本科毕业设计

this.txtAddress.Text = \; this.txtName.Text = \; this.txtPhoneH.Text = \; this.txtPhoneM.Text = \;

this.dtBirthday.Value = DateTime.Now; }

在窗体初始化时执行相关操作,窗体初始化代码如下:

private void EmployeeInfo_Load(object sender, EventArgs e)

{

string cmdtxt = \UserID as 员工ID,Name as 员工姓名,Sex as 员工性别,Birthday as 出生日期,Department as 所属部门,Post as 所在职位\;

cmdtxt += \家庭电话,PhoneM as 手机号码,Address as 家庭住址FROM User\; this.dgvUserInfo.DataSource = G_SqlClass.GetDs(cmdtxt).Tables[0];

G_OperationForm.BindComboBox(\, cbxPost, \);

G_OperationForm.BindComboBox(\, cbxDepartment, \);

this.cbxSex.SelectedIndex = 0; //设置默认选项 this.cbxCondition.SelectedIndex = 0;

this.dgvUserInfo.Columns[0].Visible = false; //设置DataGridView控件隐藏列 }

3.6.4 进货管理窗体设计

? 采购查询窗体(图13) ? 采购进货窗体 ? 采购退货窗体

1.窗体设计

在窗体中分别添加GroupBox控件(包含Label控件、TextBox控件、RadioButton控件、DateTimePicker控件、Button控件和ComboBox控件)、一个DataGridView控件。

26

河南科技大学本科毕业设计

图13 采购查询窗体

2.代码设计

【开始查询按钮】的Click事件代码如下:

private void btnSfind_Click(object sender, EventArgs e)

{

string strcmdtxt = String.Empty; string strselect = String.Empty; if (this.radioButton1.Checked) {

strselect = \ + this.txtGoodsID.Text + \ + this.txtGoodsName.Text + \;

strselect += \ + this.dtStartTime.Value.ToString(\) + \;

strselect += \ + this.dtEndTime.Value.ToString(\) + \;

strcmdtxt = \商品ID,GoodsName as 商品名称,GoodsTime as 进货日期,CompanyName as 公司名称\;

strcmdtxt += \进货数量,GoodsUnit as 商品单位,GoodsPrice as 商品进价,DepotName as 所属仓库,GoodsSpec as 商品规格\;

strcmdtxt += \销售价格,NeedPay as 应付金额,HasPay as 实付金额,Remark as 备注 FROM Goods\;

strcmdtxt += \ + strselect + \;

this.dgvGoodsInfo.DataSource = SqlClass.GetDs(strcmdtxt).Tables[0]; }

if (this.radioButton2.Checked) {

27

河南科技大学本科毕业设计

strselect = \ + this.txtGoodsID.Text + \ + this.txtGoodsName.Text + \;

strselect += \ + this.dtStartTime.Value.ToString(\) + \;

strselect += \ + this.dtEndTime.Value.ToString(\) + \;

strcmdtxt = \退货ID,GoodsID as 进货ID,ReGoodsName as 商品名称,ReGoodsTime as 退货日期,ReGoodsNum as 退货数量\;

strcmdtxt += \商品单位,ReGoodsSpec as 商品规格,ReGoodsPrice as 进货价格\;

strcmdtxt += \as 应收金额,HasPay as 实收金额,ReGoodsResult as 退货原因 FROM ReGoods\;

strcmdtxt += \ + strselect + \;

this.dgvGoodsInfo.DataSource = SqlClass.GetDs(strcmdtxt).Tables[0]; } }

private void btnCfind_Click(object sender, EventArgs e) {

this.txtGoodsName.Text = \; this.txtGoodsID.Text = \;

this.dtEndTime.Value = DateTime.Now; this.dtStartTime.Value = DateTime.Now; }

3.6.5 销售管理窗体设计

? 销售查询窗体(图14) ? 商品销售窗体 ? 客户退货窗体

1.窗体设计

在窗体中分别添加GroupBox控件(包含Label控件、TextBox控件、Button控件和ComboBox控件)、一个DataGridView控件。

28

河南科技大学本科毕业设计

图14 销售查询窗体

2.代码设计

在窗体初始化时执行相关操作,窗体初始化代码如下: private void SellFind_Load(object sender, EventArgs e)

{

string P_Str_cmdtxt = \销售ID,GoodsID as 商品ID,GoodsName as 商品名称,GoodsNum as 销售数量\;

P_Str_cmdtxt += \商品单位,GoodsTime as 销售时间,GoodsSpec as 商品规格,GoodsPrice as 进货价格,SellPrice as 销售价格\;

P_Str_cmdtxt += \应收金额,HasPay as 实收金额,Remark as 备注 FROM Sell\; this.dgvStockInfo.DataSource = SqlClass.GetDs(P_Str_cmdtxt).Tables[0];

this.cbxCondition1.SelectedIndex = 0; this.cbxCondition2.SelectedIndex = 0; }

双击DataGridView控件时的事件代码如下:

private void dgvStockInfo_DoubleClick(object sender, EventArgs e)

{

PropertyClass.GetDgvData = this.dgvStockInfo[2, this.dgvStockInfo.CurrentCell.RowIndex].Value.ToString(); PropertyClass.GetGoodsID = this.dgvStockInfo[1, this.dgvStockInfo.CurrentCell.RowIndex].Value.ToString(); PropertyClass.GetStockUnit = this.dgvStockInfo[4, this.dgvStockInfo.CurrentCell.RowIndex].Value.ToString(); PropertyClass.GetGoodsInPrice = this.dgvStockInfo[7,

29

河南科技大学本科毕业设计

this.dgvStockInfo.CurrentCell.RowIndex].Value.ToString(); PropertyClass.GetSellPrice = this.dgvStockInfo[8, this.dgvStockInfo.CurrentCell.RowIndex].Value.ToString(); PropertyClass.GetStockSpec = this.dgvStockInfo[6, this.dgvStockInfo.CurrentCell.RowIndex].Value.ToString(); this.Close(); }

3.6.6库存管理窗体设计

? 库存查询窗体(图15) ? 库存调拨窗体 ? 库存报警窗体

1.窗体设计

在窗体中分别添加GroupBox控件(包含Label控件、TextBox控件、Button控件和ComboBox控件)、一个DataGridView控件。

图15 库存查询窗体

2.代码设计

【开始查询按钮】的Click事件代码如下:

private void btnFind_Click(object sender, EventArgs e)

{

30

河南科技大学本科毕业设计

string strselect = \ + this.txtGoodsName.Text + \LIKE '\ + this.txtGoodsID + \;

strselect += \ + this.txtStockNum.Text + \ + this.txtAlarmNum.Text + \;

if (this.txtGoodsPrice.Text != \) {

strselect += \ +

this.cbxCondition1.Items[this.cbxCondition1.SelectedIndex].ToString() + this.txtGoodsPrice.Text+\; }

if (this.txtSellPrice.Text != \) {

strselect += \ +

this.cbxCondition2.Items[this.cbxCondition2.SelectedIndex].ToString() + this.txtSellPrice.Text + \;

}

string strcmdtxt = \库存ID,GoodsID as 商品ID,GoodsName as 商品名称,DepotName as 仓库名称\;

strcmdtxt += \供应商名称,StockNum as 库存数量,AlarmNum as 报警数量,GoodsUnit as 商品单位\;

strcmdtxt += \进货时间,GoodsSpec as 商品规格,GoodsPrice as 进货价格,SellPrice as 销售价格\;

strcmdtxt += \应付金额,HasPay as 实付金额,Remark as 备注 FROM Stock \ + strselect;

this.dgvStockInfo.DataSource = SqlClass.GetDs(strcmdtxt).Tables[0]; }

【开始查询按钮】的Click事件代码如下:

private void btnCancel_Click(object sender, EventArgs e)

{

this.txtAlarmNum.Text = \; this.txtGoodsID.Text = \; this.txtGoodsName.Text = \; this.txtGoodsPrice.Text = \; this.txtSellPrice.Text = \; this.txtStockNum.Text = \; StockFind_Load(sender, e); }

3.6.7报表窗体设计

? 员工信息报表(图16)

31

河南科技大学本科毕业设计

? 往来单位报表 ? 进货商品报表 ? 员工销售报表 ? 商品进货分析报表 ? 销售价格分析报表 ? 员工销售分析报表

1.窗体设计

在窗体中分别添加一个GroupBox控件(包含Label控件、TextBox控件、Button控件和ComboBox控件)和一个CrystalReportViewer控件。

图16 员工信息报表

2.代码设计

在窗体初始化时执行相关操作,窗体初始化代码如下: private void EmployeeReport_Load(object sender, EventArgs e)

{

G_OperationForm.BindComboBox(\, cbxPost, \);//绑定ComboBox控件

G_OperationForm.BindComboBox(\, cbxDepName, \); this.cbxSex.SelectedIndex = 0; //设定默认项 }

【查询并显示】按钮的Click事件代码如下:

private void btnFindOk_Click(object sender, EventArgs e)

32

河南科技大学本科毕业设计

{

//为报表设定查询语句

string P_selectionFormula = \

+ \ + this.txtName.Text + \ + this.cbxSex.Items[this.cbxSex.SelectedIndex].ToString() + \;

P_selectionFormula += \ + this.cbxPost.SelectedValue.ToString(); P_selectionFormula += \ + this.cbxDepName.SelectedValue.ToString() + \;

//显示满足条件的报表信息

this.crystalReportViewer1.ReportSource =

G_OperationForm.CrystalReports(\, P_selectionFormula); }

3.6.8系统维护界面

? 系统用户设置窗体(图17) ? 用户权限窗体 ? 更改密码窗体 ? 数据备份窗体 ? 数据还原窗体

1.窗体设计

在窗体中分别添加GroupBox控件(包含Label控件、TextBox控件、Button控件、ComboBox控件、ListBox控件和TreeView控件)和ErrorProvider控件。

图17 系统用户设置窗体

2.代码设计

【设置/修改】按钮的Click事件的代码如下:

33

河南科技大学本科毕业设计

private void btnEdit_Click(object sender, EventArgs e)

{

if (this.cbxLogin.Text == \) {

this.errorProvider1.SetError(this.cbxLogin, \登录身份不能为空!\); return; }

if (this.checkBox1.Checked && this.txtName.Text == \) {

this.errorProvider1.SetError(this.txtName, \用户名不能为空!\); return; }

if (this.checkBox2.Checked && this.txtOkPwd.Text != this.txtPwd.Text) {

this.errorProvider1.SetError(this.txtOkPwd, \两次输入密码不一致!\); return; }

if (this.checkBox2.Checked && this.txtPwd.Text.Length < 6) {

this.errorProvider1.SetError(this.txtPwd, \输入密码不能小于6位!\); return; }

if (this.checkBox2.Checked && this.txtOkPwd.Text.Length < 6) {

this.errorProvider1.SetError(this.txtOkPwd, \输入密码不能小于6位!\); return; }

//从树控件中读取设置的值

ArrayList arylst = new ArrayList();

foreach (TreeNode nodes in this.treeView1.Nodes) {

foreach (TreeNode node in nodes.Nodes) {

if (node.Checked) {

arylst.Add(\); } else {

arylst.Add(\); } } }

if (this.labMessage.Text == \该用户已为系统用户\)

34

河南科技大学本科毕业设计

{

//判断权限表中是否存在要设置权限的用户

string P_Str_select2 = \ + this.listBox1.SelectedValue.ToString() + \;

SqlDataReader P_dr4 = G_SqlClass.GetReader(P_Str_select2); P_dr4.Read();

string loginame = String.Empty; if (P_dr4.HasRows) {

loginame = P_dr4[\].ToString(); }

P_dr4.Close();

if (MessageBox.Show(\是否确认修改?\, \提示对话框\, MessageBoxButtons.OKCancel, MessageBoxIcon.Information)

== DialogResult.OK) {

string P_Str_cmdtxt = String.Empty;

if (this.checkBox1.Checked) {

string P_Str_select = \ + this.txtName.Text + \;

SqlDataReader P_dr2 = G_SqlClass.GetReader(P_Str_select); P_dr2.Read(); if (P_dr2.HasRows) {

MessageBox.Show(\该用户已存在!\, \提示对话框\, MessageBoxButtons.OK, MessageBoxIcon.Information); return; } else {

P_Str_cmdtxt = \ + this.txtName.Text + \;

P_Str_cmdtxt += \ + loginame + \; if (G_SqlClass.GetExecute(P_Str_cmdtxt)) {

string P_Str_cmdtxt2 = \ + this.txtName.Text + \ + loginame + \; G_SqlClass.GetExecute(P_Str_cmdtxt2); } else {

MessageBox.Show(\用户修改失败!\, \提示对话框\,

35

河南科技大学本科毕业设计

MessageBoxButtons.OK, MessageBoxIcon.Information); return; } } }

if (this.checkBox2.Checked) {

P_Str_cmdtxt = \ + G_WinFormClass.DESEncrypt(this.txtOkPwd.Text) + \;

P_Str_cmdtxt += \ + PropertyClass.SendUserIDValue + \; if (!G_SqlClass.GetExecute(P_Str_cmdtxt)) {

MessageBox.Show(\用户修改失败!\, \提示对话框\, MessageBoxButtons.OK, MessageBoxIcon.Information); return; } else {

G_SqlClass.GetExecute(P_Str_cmdtxt); } }

MessageBox.Show(\用户修改成功,系统下次启动后生效!\, \提示对话框\, MessageBoxButtons.OK, MessageBoxIcon.Information); } } else {

string P_Str_cmdtxt = String.Empty; string P_Str_update = String.Empty; string P_Str_select = String.Empty; //执行设置系统用户及权限的语句 P_Str_cmdtxt = \

Popedom(SysUserSort,SysUserName,EmployeeInfo,CompanyInfo,CustomerInfo\; P_Str_cmdtxt +=

\; P_Str_cmdtxt += \ + this.cbxLogin.Text + \ + this.listBox1.SelectedValue.ToString() + \;

P_Str_cmdtxt += \ + arylst[0].ToString() + \ + arylst[1].ToString() + \ + arylst[2].ToString() + \;

P_Str_cmdtxt += \ + arylst[3].ToString() + \ + arylst[4].ToString() + \ + arylst[5].ToString() + \;

P_Str_cmdtxt += \ + arylst[6].ToString() + \ + arylst[7].ToString() + \ + arylst[8].ToString() + \;

P_Str_cmdtxt += \ + arylst[9].ToString() + \ + arylst[10].ToString() + \ +

36

河南科技大学本科毕业设计

arylst[11].ToString() + \ + arylst[12].ToString() + \; if (G_SqlClass.GetExecute(P_Str_cmdtxt)) {

//获取权限表中最后一条记录

P_Str_select = \ + this.listBox1.SelectedValue.ToString() + \;

DataSet P_ds = G_SqlClass.GetDs(P_Str_select);

string P_Str_Num = P_ds.Tables[0].Rows[0][0].ToString(); P_Str_update = \ + this.listBox1.SelectedValue.ToString() + \;

P_Str_update += \ + G_WinFormClass.DESEncrypt(this.txtOkPwd.Text) + \ + P_Str_Num + \ + this.listBox1.SelectedValue.ToString() + \; G_SqlClass.GetExecute(P_Str_update);

MessageBox.Show(\权限设置成功,系统下次启动时生效!\, \提示对话框\, MessageBoxButtons.OK, MessageBoxIcon.Information); } else {

MessageBox.Show(\权限设置失败!\, \提示对话框\, MessageBoxButtons.OK, MessageBoxIcon.Information); } } }

在ListControl上更改SelectedValue属性时引发SelectedValueChanged事件代码如

下:

private void listBox1_SelectedValueChanged(object sender, EventArgs e)

{

string P_Str_cmdtxt2 = \ + this.listBox1.SelectedValue.ToString() + \;

P_Str_cmdtxt2 += \;

SqlDataReader P_dr1 = G_SqlClass.GetReader(P_Str_cmdtxt2); P_dr1.Read(); if (!P_dr1.HasRows) {

this.checkBox1.Enabled = false; this.checkBox2.Enabled = false; this.checkBox2.Checked = true; this.cbxLogin.Enabled = true; this.treeView1.Enabled = true;

this.labMessage.Text = \该用户不为系统用户\; } else {

37

河南科技大学本科毕业设计

this.checkBox1.Enabled = true; this.checkBox2.Enabled = true; this.checkBox2.Checked = false; this.treeView1.Enabled = false; this.cbxLogin.Enabled = false;

SqlDataReader P_dr2 = G_SqlClass.GetReader(\v_UserView\

+ \ + this.listBox1.SelectedValue.ToString() + \); if (P_dr2.Read()) {

PropertyClass.SendUserIDValue = P_dr2[\].ToString(); this.cbxLogin.SelectedValue = P_dr2[\].ToString(); }

P_dr2.Close();

this.labMessage.Text = \该用户已为系统用户\; }

P_dr1.Close(); }

3.7系统的(硬件)系统结构与处理方式设计

3.7.1系统处理方式

进销存管理系统采用分布式处理。采购、销售、库存三个部门按分配的不同权限进行相关操作,操作主机、数据文件服务器联成网络,相互通信。采购、销售、库存三个部门即可各自独立地进行业务处理也可自由转换角色处理,各部门之间的数据通信由网络完成。

3.7.2系统硬件配置

? 微机(包括主机、显示器及磁盘驱动器)。 ? 打印机。

? 适配器、电缆等其它网络配件。

3.7.3软件配置

? 多用户操作系统。 ? SQL Server数据库系统。

38

河南科技大学本科毕业设计

? 其它应用软件。

3.8系统的处理流程设计

3.8.1系统业务流程分析

进销存管理系统的业务流程(图18)。

否系统用户是否登录是分配权限操作模块中数据操作员用户权限分配管理员用户权限分配普通用户权限查看基本数据操作所有模块基本档案管理进货管理销售管理库存管理报表设计系统维护图18 进销存管理系统业务流程图

39

河南科技大学本科毕业设计

3.8.2新系统结构搭建

进销存管理管理基本档案管理进货管理商品销售管理商品库存设计报表维护系统查询基本信息更改用户退出系统查询商品销售处理退货生成报表管理用户设置权限备份数据还原数据查询进货退货调拨库存报警库存 图19 进销存管理系统结构图

4 结束语

本次毕业设计,最大的收获是对课题研究方法有了熟练的掌握,对信息系统分析设计有了更熟练的运用,对系统整体架构有了很好的把握。从课题的现状和研究意义、工作方案和进度计划、系统可行性研究、到需求分析、到系统设计、再到系统实施,严格遵守毕业设计要求,严格按照系统设计开发规范来组织进行,对自己的严密性、规范性等都有很好的指导意义。整个系统基本上实现了设计之初的目标,完成了系统规划阶段的构想。本系统是与自己的亲身经历紧密结合,因此容易从实际业务中获取系统需求、逻辑模型、系统功能结构以及数据组织与存储等,为本系统的设计开发提供了现实依据。不得不承认,限于水平有限,本系统还不够完善,如用户登录时帐户加解密问题、水晶报表问题,但可以肯定的是,我会在后面的学习中将其完善,从而使其具有实际开发和使用意义,使之趋于完善。

40

河南科技大学本科毕业设计

参考文献

[1] Stephen Haag, Maeve Cummings. Donald J. McCubbrey, Management Information

Systems for the Information Age[M] .(4ed). McGraw-Hill Companies, 2003

[2] Markus Tresch, Marc H. Scholl. Schema transformation without database

reorganization[M]. ACM New York, NY, USA, 1993

[3] John W.Satzinger. Systems Analysis and Design in a Changing World[M].(3rd).

Electronics Industry, 2006

[4] Alan Shalloway,James R. Trott,设计模式解析[M].徐言声.人民邮电出版社,

2006-10-1

[5] L. Whitten,etc.Systems Analysis and Design Methods[M].(5ed).高等教育出版

社,2001

[6] Martin Fowler.企业应用架构模式[M].王怀民,周斌.机械工业出版社,2004-7 [7] STEVE JOHN METSKER.C#设计模式[M].颜炯.中国电力出版社,2007-12 [8] 邝孔武,邝志云.管理信息系统分析与设计[M].西安电子科技大学出版社,2006 [9] 王珊,李盛恩.数据库基础与应用[M].人民邮电出版社,2005 [10] 林锐.软件工程思想[M].西安电子科技大学出版社,2000 [11] James Foxall.Visual C# 2005入门经典[M].人民邮电出版社,2007 [12] 严蔚敏,吴伟民.数据结构[M].清华大学出版社,2005

[13] Nagel,Evjen,Glynn,etc.C#高级编程[M].第4版.清华大学出版社,2006

41

河南科技大学本科毕业设计

致谢

本次毕业设计得以顺利完成,离不开导师的耐心指导,无论是在软件工具上,还是硬件设备上,都能尽量满足自己设计的需要,除了敬佩导师的专业水平外,他的治学严谨和科学研究的精神也是我永远学习的榜样,并将积极影响我今后的学习和工作;也离不开学院的领导对自己毕业设计的重视,给自己提供及时的信息,营造了一个良好的工作环境,让我们能专心的完成毕业设计及其相关的事项;也离不开我的室友给予的帮助,帮助我解决生活和学习上出现的问题;也离不开其他所有朋友的默默支持,从而保证了毕业设计有序进行,顺利完成,在此一并致以衷心谢意。

42

河南科技大学本科毕业设计

附录:

附录1 安装与配置

附加SQL Server 2005数据库

(1)将DataBase文件夹中的两个文件拷贝到SQL Server 2005安装路径下的Data文件夹中。

(2)打开SQL Server 2005中的“企业管理器”,然后展开本地服务器,在“数据库”数据项上单击鼠标右键,在弹出的快捷菜单中选择“所有任务”/“附加数据库”菜单项。

(3)将弹出“附加数据库”对话框,在该对话框中单击“

”按钮,选择所要附加

数据库的.mdf文件,单击“确定”按钮,即可完成数据库的附加操作。

附录2 程序使用说明

主要功能

进销存管理是企业日常经营管理中十分重要的一个组成部分,传统的手工管理方式呈现出越来越多的弊端。在手工管理模式下,统计、汇总处理时的工作量极其繁重,处理效率非常低,领导也无法及时了解企业资金占用的实际状况。通过报表管理,企业可以直观分析企业的进销存情况,提高企业的竞争能力。

操作注意事项

用户在使用《进销存管理系统》之前,应注意以下事项: (1)本系统管理员用户名为:fantasy,密码为:19871108。 (2)在输入数字时,需要在英文状态下输入。

(3)实例执行文件位置:\\进销存管理系统\\进销存管理系统\\bin\\Debug\\进销存管理系统.exe。

43

河南科技大学本科毕业设计

(4)本系统有两种操作权限,一种为管理员,一种为系统操作员,管理员具有所有操作权限,系统操作员的权限则由管理员进行分配。

业务流程

在使用本系统时,请按照以下流程进行操作:

(1)通过“基本档案/员工信息”菜单项:对员工信息进行添加、修改、删除和查询操作。

(2)通过“系统维护”菜单中的菜单项添加用户、设置用户管理权限及更改登录用户的密码等操作。

注意:添加用户时,用户密码必须是6位以上。

(3)通过“基本档案/供应商信息”菜单项:对供应商信息进行添加、修改、删除和查询操作。

(4)通过“基本档案/客户档案”菜单项:对客户档案信息进行添加、修改、删除和查询操作。

(5)通过“进货管理/采购进货”菜单项:对采购进货信息进行添加、修改和删除操作。

(6)通过“进货管理/采购退货”菜单项:对采购退货信息进行添加、修改和删除操作。

(7)通过“进货管理/采购查询”菜单项:对采购进货和采购退货信息查询操作。 (8)通过“销售管理/商品销售”菜单项:对商品销售信息进行添加、修改和删除操作。

(9)通过“销售管理/客户退货”菜单项:对客户退货信息进行添加、修改和删除操作。

(10)通过“销售管理/销售查询”菜单项:对销售货物信息进行查询操作。 (11)通过“库存管理/库存调拨”菜单项:对库存调拨信息进行添加和删除操作。 (12)通过“库存管理/库存警报”菜单项:可以对库存警报的数量进行修改操作。库存报警数量默认为10,当商品库存数量不足10时,将会显示在该模块中。 (13)通过“库存管理/库存查询”菜单项:对库存里的信息进行查询操作。 (14)通过“报表设计/员工信息报表”菜单项:对员工信息进行查询并在报表中显

44

河南科技大学本科毕业设计

示结果。

(15)通过“报表设计/供应商信息报表”菜单项:对供应商信息进行查询并在报表中显示结果。

(16)通过“报表设计/进货商品报表”菜单项:对进货商品信息进行查询并在报表中显示结果。

(17)通过“报表设计/员工销售报表”菜单项:对员工销售信息进行查询并在报表中显示结果。

(18)通过“报表设计/商品进货分析报表”菜单项:对商品进货信息进行查询并在报表中以图表的形式显示结果。

(19)通过“报表设计/销售价格分析报表”菜单项:对销售价格信息进行查询并在报表中以图表的形式显示结果。

(20)通过“报表设计/员工销售分析报表”菜单项:对员工销售分析信息进行查询并在报表中以图表的形式显示结果。

(21)通过“系统维护/数据备份”菜单项:对数据库进行备份。 (22)通过“系统维护/数据还原”菜单项:对数据库进行还原。

45

本文来源:https://www.bwwdw.com/article/bvlw.html

Top