博主介绍:专注于Java .net php phython 小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作
☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找不到哟我的博客空间发布了1000+毕设题目 方便大家学习使用
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人
1 基础知识
1.1 背景与意义
随着现代科学技术的迅猛发展,计算机技术已经渗透到各个领域,成为各行业必不可少的工具,特别是Internet技术的推广和信息高速公路的建立,使IT产业在市场竞争中越发显示出其独特的优势,步入信息化时代,有巨大的数据信息等待加工处理和传输,这使得对数据库的进一步开发和利用显得尤为迫切。
而作为国内市场的一些中小型超市,它们在信息化过程中的步伐要落后于大中型超市,而对于这些企业的资源管理,信息的存储和处理也显得迫切需要,要适应市场竞争,就需要有高效的信息处理方式和管理方法,因此加快超市的信息化进程是必可少的。
小超市形态本身具有种种特点,在原先状况下不能有效地管理每种商品,收款结算速度慢,容易出现营业差错,不宜进行商品调价,盘点效率低等,而且在超市日常管理中,商品的进、销、存等决策以经验为主,缺乏实时分析功能,管理人员对及时传递资料的要求始终得不到满足。小超市形态的高速发展,其经营管理也变得愈加复杂,日常所需要处理的数据量也逐渐增大,商业运转的中间环节也越来越多,原始的人工管理已无法应对这复杂的市场。
为了适应日趋激烈的市场竞争,各类型的超市需要对自身的经营状况有充分的了解,并通过有效的管理不断提高效率。为此,超市管理系统便显得尤为重要了,依靠现代化的计算机信息处理技术来管理超市,是对超市整体信息的管理成为提高经营效率的一个重要途径。
1.2 开发方法
本系统采用C#作为前台开发工具。后台数据库采用SQL Server 2005数据库,因为它的灵活性、安全性和易用性为数据库编程提供了良好的条件。利用三层结构技术,即表示层、逻辑层、数据服务层[1]。这三层被分成三个相对独立的单元。表示层负责与用户交互,并把相应的请求通过调用中间层的组件传递给逻辑层;逻辑层通过组件执行具体的事务逻辑,通过SQL等方式向第三层的组件提出数据或其他资源请求。表示层在客户端的应用浏览器中运行,数据访问也在专用的数据库服务器上运行。采用三层结构能很好的解决软件的可扩展性、安全性、管理性等关键问题。
1.2.1 C#语言介绍
C#是一种安全的、稳定的、简单的,由C和C++衍生出来的面向对象的编程语言。它在继承C和C++强大功能的同时去掉了一些它们的复杂特性(例如没有宏和模板,不允许多重继承)[2]。C#综合了VB简单的可视化操作和C++的高运行效率,以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为.NET开发的首选语言。C#语言的主要优点大概可以归纳如下:
1、语法简洁:C#取消了指针、也不定义繁琐的伪关键字;它使用有限地指令、修饰符合操作符,语法上几乎不存在任何冗余,整个语言结构十分清晰。初学者通常能够快速掌握C#基本特性,而C/C++程序员转入C#则几乎不会有什么障碍。
2、完全面向对象:C#具有面向对象的语言所应有的基本特性:封装、继承和多态性。它禁止多继承,禁止各种全局方法、全局变量和常量。C#以类为基础来构建所有的类型,并通过命名空间对代码进行层次化的组织和管理。许多精巧的对象设计模式都在C#语言中得到了有效的应用。
3、目标软件的安全性:C#符合通用类型系统的类型安全性要求,并用CLR所提供的代码访问安全特性,从而能够在程序中方便的配置安全等级和用户权限。此外,垃圾收集机制自动管理对象的生命周期,这是的开发人员无需再负担内存管理的任务,应用程序的可靠性进一步得到提高。
4、版本管理技术:C#语言中内置了版本控制功能,并通过接口和继承来实现应用的可扩展性[3]。应用程序的维护和升级更加易于管理。
5、灵活性与兼容性:C#中允许使用非托管代码来与其他程序(包括COM组件、WIN32API等)进行集成和交互。它还可以通过委托(delegate)来模拟织针的功能,通过接口来模拟多继承的实现。
1.2.2 SQL Server 2005数据库优点
SQL Server 2005的一个重要设计目标就是提高默认状态下的安全系数。为了缩小被攻击范围,最危险的一些特性都被禁用,除非数据库管理员启用它们。这有所帮助,不过 对有经验的数据库管理员来说帮助不大。他们基本上会编写锁定脚本,觉得安装时加以运行不是很麻烦。安全方面真正重要的改进则是密码管理和权限分配方面。现 在可以设置原始SQL密码来顾及Windows密码政策,这意味着用户可以要求SQL密码拥有与Windows账户同样的密码强度、失效日期、历史、锁定 阈值、锁定时间及生命期等政策,甚至可以要求用户在下次登录时更改密码。安全方面的其他重要改进还包括:加强了对模式变更的控制、能够对数据进行列级加密。
SQL Server 2005不但克服了高可用性和灾难恢复方面的缺点,还几乎在各个方面都有了全面改进:管理任务得到了简化;监控和诊断功能得到了增强;默认的锁定配置、数 据加密及其他新特性增强了安全。如今,分析服务(Analysis Services)、报表服务(Reporting Services)和数据挖掘(Data Mining)全面集成,而且已经很成熟。数据转换服务(DTS)已从头到尾经过了改写,已逐渐成为更强大、更灵活的SQL服务器集成服务(SSIS)。与Visual Studio和.Net/CLR的集成,把SQL Server的内部机制展现给了.Net开发人员、把.Net的内部机制展现给了SQL开发人员。这意味着,现在就可以利用.Net的强大功能,用于存储过程、数据流和数据转换、商业智能等应用的。
1.2.3 运行环境的选择
由于计算机发展迅速,为将来升级的考虑,这里所提供的硬件设备要比能够运行该系统所需要的最低硬件标准高出一些。
1.软件环境:
操作系统:采用Windows XP或Windows 2003以上;
开发工具:Microsoft SQL Server 2005 ;C#
2.硬件环境:
CPU:Intel Pentium(R) 4以上;内存:512M;硬盘:80G;网卡:100M。
软件需求分析就是把软件计划期间建立的软件可行性分析求精和细化,分析各种可能的解法,并且分配给各个软件元素。需求分析是软件定义阶段中的最后一步,是确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求。
需求分析是介于系统分析和软件设计阶段之间的重要桥梁。一方面,需求分析以系统规格说明和项目规划为分析活动的基本出发点,并从软件角度对它们进行检查与调整;另一方面,需求规格说明又是软件设计、实现、测试直至维护的主要基础[4]。良好的分析活动有助于避免或尽早剔除早期错误,从而提高软件生产率,降低开发成本,改进软件质量。
2.1 系统功能概述
本系统主要完成超市管理(商品信息管理、供货商管理、进货管理、退换货管理、商品销售管理、客户管理、客户退货管理、仓库设置、库存管理)等功能。通过以上功能实现简单、便捷的超市管理系统。
2.1.1 系统功能需求
1、商品信息管理:管理员可以对商品进行添加、修改和查询操作。添加库存商品时候要填入:商品名称、入库价格(即进货价格,进货价格的查询只能是以管理员身份登录才能查看)、商品卖价(同入库价格一样)、单位、预警量(及库存下限)。最主要的是对商品信息进行查询:商品信息查询可以根据商品类型查询(类型一般分为:日用品、食品、药品、电器、衣物、床上用品),还可以精确查找(需要输入商品编号、商品类型),还可以模糊查询(需要输入商品名称、商品价格)查询结果包括:商品编号、商品名称、商品类型、商品售价、商品数量。
2、供货商管理:供货商管理可以对厂商信息进行查询。供货商信息查询可以根据厂商名称查询、负责人查询和最近联系厂商查询。查询结果包括:供货商。
3、进货管理:进货管理需要对每次的进货进行登记,登记需要填写:(订单信息):单号(随机产生流水号)、收货仓库、进货时间、供货商名称、经办人(所有的经办人都是登录的用户)、总金额、应付金额、实付金额、备注(订单信息):商品编号、商品名称、单位、规格型号、颜色、单价、数量。进货查询可以根据进货时间、供货商、商品类型、负责人查询。进货的同时需要进行入库登记:商品名称、进货价格、出售价格、商品数量、商品类型、供货商、经办人、商品总价。
4、退换货管理:退换货管理是但进货产品出现质量问题、货物迟到等原因超市和供货厂商协商要求退货或换货进行详细登记。退货方式有两中:一种是整单退货,一种是部分退货。登记内容包括:(订单信息):单号(随机产生流水号,是唯一的)、出货仓库、退货时间、供货商名称 、总金额、应退金额、实退金额、经办人、备注(订单信息):商品编号、商品名称、单位、规格型号、颜色、单价、数量。退货查询可以根据单据号、供货商和开单时间查询。查询结果包括:单号、开单时间、供货商名称、仓库名称、经办人、总金额(单据详细信息):商品编号、商品名称、单位、规格型号、颜色、单价、数量。
5、商品销售管理:销售登记需要登记:(单据信息):单号、客户名称、出货仓库、销售日期 、总金额、应收金额、实收金额、经办人、备注(订单信息):商品编号、商品名称、单位、规格型号、颜色、单价、数量。需要出库登记:商品名称、出库数量、经办人、出库时间。
6、客户管理:客户管理主要是对与本超市的有过交易记录的人群的信息进行登记和查询。登记客户信息包括:客户名称、负责人、联系地址、联系电话。查询可以通过时间来查询(查询最近联系的客户)、客户名,查询最近联系的客户。
7、客户退货管理:客户退货管理是在本超市购买商品之后,但产品出现质量问题、货物迟到等原因超市和客户协商要求退货或换货的制度。客户退货需要登记:单号、(订单信息)客户名称、收货仓库、收货日期、总金额、应退金额、实退金额、经办人、备注(订单信息):商品编号、商品名称、单位、规格型号、颜色、单价、数量。销售退货查询可以根据:客户名称、单据号、开单日期查询。需要注意的是:客户退货之后是退回到仓库,所以要进行入库登记。
8、仓库设置:仓库设置也包括添删改的操作:仓库名称、负责人、联系电话、仓库地址、仓库信息备注。
9、库存管理:库存出入登记及商品在进出仓库的时候都需要登记。入库的情况包括:商品的采购、客户退货。出库的情况包括:商品销售、采购退货。库存的出入查询可以根据:单据号、时间来查询。查询结果包括:(单据信息)单号、出入的仓库、出入仓库的日期、经办人。添加库存商品及添加商品种类,添加是需要登记:商品名称、入库价格、商品卖价、单位、及库存下限。同时还具有库存商品预警查询功能。
2.1.2 用例分析
用例图主要用来图示化系统的主事件流程,它主要用来描述客户的需求,即用户希望系统具备的完成一定功能的动作,通俗地理解用例就是软件的功能模块,所以是设计系统分析阶段的起点,本文中采用用例技术进行需求分析的获取和分析。为了能够正确的找出系统的用例,需要确定系统的边界,找出系统的执行者。用例图如图2.1所示。
2.1.3 类图分析
类图(Class diagram)由许多(静态)说明性的模型元素(例如类、包和它们之间的关系,这些元素和它们的内容互相连接)组成。类图可以组织在(并且属于)包中,仅显示特定包中的相关内容。类图描述的是一种静态关系,在系统的整个生命周期都是有效的。在类描述中一般只给出主要类及主要类间的关系。类图是所有面向对象建模方法的核心部分,类图描述了系统的静态结构,由类及类间的关系组成。类是具有相同属性和相同方法的对象的集合,系统类图如图2.2所示。
2.2 系统性能要求
对系统性能的要求包括对系统时间要求,灵活性,数据管理能力等的要求。
2.2.1 系统时间特性要求
系统的速度要在用户可接受的范围内,但考虑到需要实时检测商品的数量和库存情况,对资源实时搜索的速度可以有较低的要求。
2.2.2 系统灵活性
系统要有良好的接口,以适应增加商品信息,增加商品类型,增加相关的商品录入功能的需求;增加商品信息的更改和更新功能。
2.2.3 数据管理能力要求
系统要有较高的管理能力,本系统采用的是SQL Server 2005数据库。具有较强的数据处理能力,数据库引擎增强、分析服务增强等。记录的个数随用户多少不定,数据及其分量的存储量为10G,但能保证注册的用户都能登录进来,没有延时。
2.3 可行性分析
可行性分析是依据初步调查的结果做出系统开发可行与否的结论过程。任何一个工程的立项都需要进行项目的可行性分析。可行性研究的目的就是用最小的代价在尽可能短的时间内确定问题是否能够解决、是否值得去解决。根据调查分析,系统设计方案有以下三个可行性。
2.3.1 技术可行性
根据前期的市场调查与对下列系统功能、性能及实现系统的各项所需技术的约束条件的分析来看,本系统程序开发应是一个集数据库管理和查询为一身的系统,依据现有的开发技术,开发硬件、开发软件的性能要求及环境条件等来看,各项条件良好,同时,考虑给予的开发期限较为充裕,预计可以在规定期限内完成预定功能地开发与实现。
在软件方面本程序设计采用的开发环境是Microsoft Visual Studio 2005,采用开发语言C#编写程序,采用SQL Server 2005做后台数据库。在硬件方面电脑的各种配置包括输入输出能力,内部存储器和外部存储器的容量都能满足用户的要求。
2.3.2 经济可行性
本超市管理系统,其前期的投入比较小,主要是系统的设计费用:其中包括软件开发费用、管理和维护费等。而后续的投入相对较小,很长时间内都不会需要进一步投资,管理和维护费用也很少,而系统实际能够起到的作用会远远大于投入的开发费用,相信会有十分可观的前景。因此这个系统很有开发价值。
2.3.3 操作可行性
本系统界面清晰直观、易于操作。由于它能够准确记录、检索和管理有关超市各类商品信息和用户信息,帮助超市经营者掌握和分析营销情况,及时做出正确决策,并且便于超市相关内部人员对商品的管理,因而大大提高了超市的管理水平与效率。
综上所述,从经济可行性、技术可行性和操作可行性来说,系统开发是完全可行的。
本阶段完成系统的大致设计并明确系统的数据结构与软件结构。在软件设计阶段主要是把一个软件需求转化为软件表示的过程。
在概要设计阶段的指导思想是结构化指导思想,是指用一组标准的规则和图表工具确定系统有哪些模块,怎么连接,从而形成新系统的结构,然后再进行诸如输入、输出、对话等设计,为整个系统的实施做好铺垫。
3.1 系统总体设计方案
本系统采用了C/S模型。系统前台采用 C#语言来设计,访问数据库服务器;后台采用Microsoft公司的SQL Server 2005。SQL Server2005开发后台数据库,用于提供数据服务。SQL Server 2005是一种典型关系型数据库管理系统,该系统具有数据一致性好,完整性强,安全性高的优点,系统采用结构化设计方法,按超市实际工作内容来确定所需,将整个系统作为一个大模块自顶向下,以模块化结构设计技术进行模块分解,然后再自底向上,按照系统的结构将整个模块进行组合,最终完成本超市管理系统的开发。本系统有四个整体模块,其包含着以下子模块。具体的模块功能划分如下:
用户登录模块:具备登录用户、添加登录用户、用户密码修改功能。
商品信息管理模块:提供添加商品类型,修改商品信息、商品信息查询、商品类型管理功能。
厂商管理模块:具备厂商信息查询、添加厂商、修改厂商信息的功能。
进货管理模块:提供进货登记、进货查询的功能。
进货退换管理模块:提供退货登记、退货查询功能。
商品销售管理模块:提供销售登记、销售查询功能。
客户退货管理模块:提供销售退货登记、销售退货查询功能。
客户管理模块:具备客户信息查询功能。
库存管理模块:提供库存出入登记、库存出入查询、库存查询、添加库存商品、库存商品预警查询功能。
本系统详细功能模块图如图3.1所示。
3.2 系统数据流图
数据流图是将提供给用户的业务流程图进行功能建模,转化成开发人员能够理解的一系列“逻辑模型”图,即以图形化的方法描绘数据在系统中的流动和处理的过程,这些图都应该用规范的DFD描述。
本系统操作流程,操作员根据不同的身份账号进入登录模块,在登录栏处输入用户名和密码,系统进行验证操作员身份,若系统没有检索到用户名,则不允许进入,进去后根据所拥有的权限进行操作。超级管理员拥有所有权限可选择某种商品种类,点击进入商品信息管理模块,查看商品细售价等信息,销售模块和进货模块可以修改进货和销售清单。在客户管理模块中可以查看客户详细的通讯地址、联系方式、订单状态等信息,同时会验证客户所填写的信息是否正确,若无误,则保存正确信息,否则不处理此订单,在库存模块当中操作入库、出库、查询等。
本系统的数据流图是比较清晰的,对各功能模块来说都比较有规律。系统的第二层层和第一层数据流图分别如图3.2和图3.3所示。
活动图阐述了用例实现的过程,用于研究实现业务目标时所要执行的各项任务或活动的顺序安排。本超市管理系统的活动图如图3.4所示。
3.4 系统数据库设计
数据库设计是建立数据库及应用系统的技术,是信息系统开发和建设中的核心技术,具体说,数据库设计是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及应用系统,使之能够有效地存储数据,满足各种用户的要求数据库设计是管理信息系统的重要组成部分[5]。这里采用SQL Server数据库。该数据库对行增、删、修改、统计、显示和应答都极为方便。其中的排序和索引功能,对数据快速定位、查询提供了有利条件。
3.4.1 数据库需求分析
主要是收集基本数据及确定数据的处理要求,需求分析主要解决如下问题:
1、数据要求:用户需要从数据库中获取什么数据,并决定在数据库中存储那些数据。
2、操作要求:明确用户对数据的操作要求,从而确定数据之间的关系。
3.4.2 数据库概念设计(E-R图)
概念结构设计是整个数据库设计的关键,它能通过对需求进行综合,归纳与抽象,形成一个独立于具体DBMS的概念模型,即E-R图[6]。简单的说,E-R图用来分析数据关系的。下面具体超市管理系统主要的实体图。
管理员实体图如图3.5所示。
商品信息实体图如图3.6所示。
进货管理实体图如图3.7所示。
销售管理实体图如图3.8所示。
3.4.3 数据库逻辑设计
逻辑结构是把概念结构转换为某个DBMS所支持的数据模型,并对其进行优化。本系统根据E-R图可以对数据库进行设计,以下列出主要的数据表。
用户信息表如表3.1所示:
表3.1 用户信息表
字段 | 字段名 | 类型 | 是否为空 | 备注 |
userId | 用户ID | int | 否 | 主键,标识列 |
userName | 用户姓名 | Varchar(20) | 否 | 长度至少为6位至18位,并且不能有空格 |
userSex | 用户性别 | Varchar(4) | 否 | 取值只能为‘男’或‘女’,默认取值‘男’ |
userAge | 用户年龄 | int | 否 | 外键,引用类型取值表 |
userXueLi | 用户学历 | Varchar(20) | 否 | 大专、本科 |
userAddress | 用户地址 | Varchar(50) | 否 | |
userPhone | 用户电话 | Varchar(30) | 否 | |
userIdCard | 身份证号 | Nvarchar(30) | 否 | 只能是15为或18位 |
userTypeID | 用户类型 | int | 否 | 引用 User(userTypeID) |
userPwd | 用户密码 | Varchar(20) | 否 | 长度至少为6位至18位,并且不能有空格 |
商品类型表如表3.2所示。
表3.2 商品类型表
字段 | 字段名 | 类型 | 是否为空 | 备注 | |
goodsTypeID | 商品类型ID | int | 否 | 主键,标识列 | |
goodsType | 商品类型 | Varchar(20) | 否 | 日用品、食品、药品、电器、衣物、床上用品 |
供货商信息表如表3.3所示。
表3.3 供货商信息表
字段 | 字段名 | 类型 | 是否为空 | 备注 |
businessID | 供货商编号 | int | 否 | 主键,标识列 |
businessName | 供货商名称 | Varchar(20) | 否 | |
businessAddress | 供货商地址 | Varchar(50) | 否 | |
businessMain | 负责人 | Varchar(20) | 否 | |
businessPhone | 联系电话 | Varchar(30) | 否 |
用户类型表如表3.4所示。
表3.4 用户类型表
字段 | 字段名 | 类型 | 是否为空 | 备注 |
userTypeID | 用户类型ID | int | 否 | 主键,标识列 |
userType | 用户类型 | Varchar(20) | 否 | (管理员、普通用户),默认为‘管理员’ |
仓库类型表如表3.5所示。
表3.5 仓库类型表
字段 | 字段名 | 类型 | 是否为空 | 备注 |
storehouseTypeID | 仓位类ID | int | 否 | 主键,标识列 |
storehouse | 仓位类型 | Varchar(10) | 否 |
客户信息表如表3.6所示。
表3.6 客户信息表
字段 | 字段名 | 类型 | 是否为空 | 备注 |
clientID | 客户ID | int | 否 | 主键,标识列 |
clientName | 客户名称 | Varchar(20) | 否 | |
clientMain | 负责人 | Varchar(50) | 否 | |
clientAddress | 联系地址 | Varchar(20) | 否 | |
clientPhone | 联系电话 | Varchar(30) | 否 |
仓库设置表如表3.7所示。
表3.7 仓库设置表
字段 | 字段名 | 类型 | 是否为空 | 备注 |
storehouseID | 仓库ID | int | 否 | 主键,标识列 |
storehouseName | 仓库名称 | Varchar(20) | 否 | |
storehouseTypeID | 仓位类型 | int | 否 | 外键,仓库类型表 |
storehouseMain | 负责人 | Varchar(20) | 否 | |
storehousePhone | 联系电话 | Varchar(30) | 否 | |
storehouseAddress | 仓库地址 | Varchar(50) | 否 | |
storehouseRemark | 信息备注 | Varchar(30) | 否 |
仓库信息表如表3.8所示。
表3.8 仓库信息表
字段 | 字段名 | 类型 | 是否为空 | 备注 |
StoreInfoID | 仓库信息ID | int | 主键 | |
stockrOderFormID | 进货单号 | int | 否 | 外键引用 |
myRetuOrderFormID | 采购退货单号 | int | 否 | 外键引用 采购退货订单信息表 |
sellOderFormID | 销售单号 | int | 否 | 外键引用 商品销售订单表 |
returnOrderFormID | 客户退货单号 | int | 否 | 外键引用 客户退货单据信息表 |
商品信息表如表3.9所示。
表3.9 商品信息表
字段 | 字段名 | 类型 | 是否为空 | 备注 |
goodId | 商品编号 | int | 否 | 主键,标识列 |
goodsName | 商品名称 | Varchar(20) | 否 | |
goodsPrice | 商品进价 | money | 否 | (即入库价格), 价格要大于0 |
goodsTypeID | 商品类型 | Varchar(10) | 否 | 外键,引用 商品类型表 |
goodsNum | 商品数量 | int | 否 | |
sellPrice | 商品售价 | money | 否 | 商品售价要大于商品进价 |
unitsID | 单位 | int | 否 | 外键,引用 单位类型表 |
model | 规格型号 | Varchar | 否 | |
color | 颜色 | Varchar(5) | 否 | |
Price | 单价 | money | 否 | 大于0 |
totalMoney | 总金额 | money | 否 | 只是一种商品的总金额 |
waringNum | 库存提醒数 | int | 否 | 大于等于0 |
进货单详细表如表3.10所示。
表3.10 进货单详细表
字段 | 字段名 | 类型 | 是否为空 | 备注 |
StockID | 进货订单详细ID | int | 否 | 主键,标识列 |
stockrOderFormID | 进货单号 | int | 否 | 外键引用进货订单表( Stock) |
goodsID | 商品编号 | int | 否 | 外键引用 商品信息表(GoodInfo) |
进货订单表如表3.11所示。
表3.11 进货订单表
字段 | 字段名 | 类型 | 是否为空 | 备注 |
stockrOderFormID | 进货单号 | Varchar(30) | 否 | 主键,标识列 |
storehouseID | 收货仓库 | int | 否 | 外键引用 仓库设置表 |
stockTime | 进货时间 | datetime | 否 | |
businessID | 供货商名称 | int | 否 | 外键 |
stockMain | 经办人 | Varchar(20) | 否 | |
stockTotalMoney | 总金额 | money | 否 | 大于0 |
stockShouldPay | 应付金额 | money | 否 | 应付金额等于总金额 |
stockFactPay | 实付金额 | money | 否 | |
stockRemark | 进货备注 | Varchar(50) | 否 |
商品销售订单表如表3.12所示。
表3.12 商品销售订单表
字段 | 字段名 | 类型 | 是否为空 | 备注 |
sellOderFormID | 销售单号 | Varchar(30) | 否 | 主键,标识列 |
clientID | 客户名称 | int | 否 | 键引用客户表 |
storehouseID | 收货仓库 | int | 否 | 外键引用 仓库设置表 |
sellTime | 销售日期 | Datetime | 否 | 外键 |
sellTotalMoney | 总金额 | Varchar(20) | 否 | |
sellShouldMoney | 应退金额 | money | 否 | 大于0 |
sellFactMoney | 实退金额 | money | 否 | 应付金额等于总金额 |
sellMain | 经办人 | Varchar(20) | 否 | |
sellRemark | 销售备注信息 | Varchar(50) | 否 |
销售订单详细表如表3.13所示。
表3.13销售订单详细表
字段 | 字段名 | 类型 | 是否为空 | 备注 |
SellX | 销售订单详细ID | int | 否 | 主键,标识列 |
sellID | 销售单号 | int | 否 | 外键 引用 商品销售订单表 |
goodId | 商品编号ID | int | 否 | 外键引用 商品信息表 |
客户退货单据信息表如表3.14所示。
表3.14客户退货单据信息表
字段 | 字段名 | 类型 | 是否为空 | 备注 |
returnOrderFormID | 客户退货单号 | Varchar(30) | 否 | 主键,标识列 |
clientID | 客户名称ID | int | 否 | 外键引用 客户信息表 |
storehouseID | 收货仓库ID | int | 否 | 外键引用)仓库设置表 |
returnTime | 退货时间 | Datetime | 否 | 外键供货商信息表 |
returnMoney | 总金额 | money | 否 | |
returnShouldMoney | 应退金额 | money | 否 | 大于0 |
returnFactMoney | 实退金额 | money | 否 | 应付金额等于总金额 |
returnMain | 经办人 | Varchar(20) | 否 | |
returnMark | 退货备注信息 | Varchar(50) | 否 |
客户退货单据详细表表如表3.15所示。
表3.15客户退货单据详细信息表
字段 | 字段名 | 类型 | 是否为空 | 备注 |
ReturnID | 客户退货详细ID | int | 否 | 主键,标识列 |
ReturnOrderFormID | 退货单号 | int | 否 | 外键引用 客户退货单据信息表 |
goodsID | 商品编号 | int | 否 | 外键引用 商品信息表 |
详细设计的根本目标是确定应该怎样具体地实现所要求的系统,也就是说,经过这个阶段的设计工作,应该的出对目标系统的精确描述,从而在编码阶段可以把这个描述直接翻译成用某个设计的语言书写的程序。
详细设计的任务不是具体的编写程序,而是要设计出程序的“蓝图”,以后可根据这个蓝图写出实际的程序代码。详细设计的目标不仅仅是逻辑上正确地实现每个模块的功能,更重要的是设计出的处理过程应该尽可能简明易懂。
本系统所包括的几大模块如下:登录模块、进货模块、库存管理模块、销售管理等多个模块。
4.1 系统主要功能模块设计
4.1.1 登录模块流程
本模块的主要功能是对用户身份进行验证,只有系统的合法用户才能进入系统。在进行系统登录过程中,登录模块将调用数据库里的用户清单,并对账号和密码进行验证,只有输入了正确的账号和密码后,系统登录才会成功。并在输入了错误的或者是不存在的账户和密码时,系统会提示出错信息,指明登录过程中的错误输入或者错误操作,以便用户进行正确的登录。系统登录模块流程如图4.1所示。
4.1.2 进货管理流程
功能:该模块主要是实现进行进货信息查询功能。
进货信息查询:该模块为超市提供整个超市的进货情况查询,也可以进行进货信息的明细查询。
输入项、输出项:该模块的输入项为超市的进货单,其中包括进货单的编号、商品的编号、供货商号、进货价、数量、金额进货日期和备注。
进货管理流程如图4.2示:
4.1.3 销售管理流程
功能:本模块的主要功能是把销售信息写入销售清单,同时对库存清单进行更新,以备用户将来对库存信息进行查询和打印,此外还可以对销售信息进行查询和盘点功能。
销售信息查询:根据商品销售情况,按需要对销售情况进行查询。在该查询模块中,可以按照商品的编号、销售日期等多种方式进行商品销售信息查询。
销售信息盘点:可以按照需要对在一定时期内的销售情况进行盘点。
输入项、输出项:本模块的数据输入项主要是商品的销售单号和商品编号。其中还包括销售数量和销售日期。
销售管理流程如图4.3所示。
4.1.4 库存管理流程
功能:本模块的主要功能是商品信息的查询和更新,库存信息的查询和更新。
查询商品信息:主要功能查询商品的明细信息,和它的库存信息。
添加商品信息:主要功能添加新进的商品。
修改商品信息:主要功能是修改商品的信息,包括他的库存数量。
删除商品信息:主要功能是删除不再销售的商品信息。
输入项、输出项:本模块的数据输入项主要是商品编号。
库存管理流程如图4.4所示。
4.2 系统主要功能模块实现
4.2.1 登录模块实现
为了提高软件操作安全性,用户进入系统前,需进行身份验证,通过此窗体输入个人信息以验证身份。
再输入过程中也可以通过虚拟键盘来输入,如果用户名和密码都正确,单击登录按钮,则进入系统。如果输入错误,则会提示密码错误,继续输入,如果连续3次错误,则会退出系统。系统登录界面如图4.5所示。
图4.5 登录模块
在登录界面中实现中通过BindAllUsers()来绑定用户类型,MemorizePwd()来记住密码。当登录窗体加载的时候就进行查询,如果LoginJilu表中最大ID的state=0的时候就表示上次登录的用户选中了,否则没有选中,如果选中了就根据用户ID到users表中把用户姓名和密码查找出来。
DataTable dtUserId = um.GetUserIdByUserNameAndPwd(name, pwd); int userId = Convert.ToInt32(dtUserId.Rows[0]["userId"])。
如果用户名或密码不正确,则记载输入错误密码的次数, 如果密码错误次数多余系统设置的数据,则会自动退出系统。DataTable cishu = um.GetTime();为了便于鼠标点击输入。调用电脑的虚拟键盘代码如下:System.Diagnostics.Process.Start("osk.exe")。
4.2.2 进货管理模块实现
商品的进货管理是超市管理系统中的一个非常重要的功能,在庞大的商品信息中,能够及时添加所缺少的商品,是超市经营中一个重要的环节。本系统采用商品数量预警方案,当商品数量下降到预警范围内。管理员就会及时发现缺的商品,从而进货。本模块对商品的录入进行操作。进货管理模块如图4.6所示。
实现过程:
建立采购购物车,然后给购物车绑定数据,并调用购物车的数据。将购物车的商品显示到采购窗体上面,并将商品类型绑定到树形控件上,实例化树节点,保存商品的编号,用递归调用方法添加子节点,并展开所有节点。详细流程如下:如果已经采购了商品,添加采购订单详表的数据,for (int i = 0; i < dgvStock.RowCount; i++),并用实体封装数据StockModel s = new StockModel()。并对输入的数据进行检查,如果检查没有错误。则生产流水号并显示数据BindBussinessNames(); MessageBox.Show("采购成功!")。
4.2.3 销售管理模块实现
销售管理是超市系统中的核心部分,进入销售界面,选择需要的货物,并输入数量。系统会自动算出价格。录入待销售的界面。点击确认,并转向销售单。销售信息的写入销售清单,同时对库存清单进行更新,以备用户将来对库存信息进行查询。商品详细的信息已经录入超市的数据库中,这样大大缩小了销售人员的工作量。提高了销售人员的工作效率。销售管理模块如图4.7所示。
建立销售购物车,获取库存数量,得到dgvAlreadyBuyGoods的数据源,并转换为DataTable,如果购物车中有数据if (dt3 != null && dt3.Rows.Count > 0),如果已经购买了所选中行的商品,就只进行数量的增加if (dr["商品名称"].ToString() == name2),调用更新数据库库存,并绑定新数据gm.UpdateGoodsNum(newGoodsNum, goodsID); 并将购物车中的商品显示到销售窗体上。
double sunMoney1 = 0;for (int i = 0; i < this.dgvAlreadyBuyGoods.RowCount; i++)。
4.2.4 库存管理模块实现
库存管理模块主要用于编辑每种商品的具体信息,如商品代码、商品名称、商品价格、库存数量等。用户可以通过该模块添加、编辑、删除、查找商品信息,同时可以依据显示的库存情况制定进货单,制定后程序通过将新进货单数据插入到后台数据库中的进货表中,来实现数据间传递,这样在进货界面用户可以了解到进货情况。库存管理模块如图4.8所示。
图4.8 库存管理模块
实现过程:
由于系统的大部分功能都要涉及到对数据库的操作(Select 、Insert、Update、Delete),所以本系统将各个表的数据封装成类的形式进行操作,在类中定义字段、属性、方法,主要实现数据的添加、修改、删除、查询及即时更新的功能。这样使得工程的结构清晰,思路明了。初始化文本框和组合框,绑定商品类型和单位类型。并用实体累封装信息。GoodInfoModel goods = new GoodInfoModel();。如果InsertOrUpdate==0就执行添加操作,判断添加的商品是否已经存在。
if (dv.Count != 0&&dv2.Count!=0)如果InsertOrUpdate==1就执行修改操作,
if (this.txtStorkPrice.Text.CompareTo(txtSellPrice.Text) == 1)。
4.2.5 权限管理模块实现
权限管理也是一个系统不可缺少的模块,在实现的时候有很多的方法,本系统使用的是给每个用户设定一个用户和密码,然后采用分级权限管理,管理员可以为每个用户分配不同的权限。在修改的时候,只要选中各种权限的检查框,就代表该用户具备了该权限。权限管理模块的界面如图4.9所示。
实现过程:
添加根节点,实体化树节点。并将节点添加到树上,找出所以子节点,实体化树。将节点添加到父节点上,绑定角色表到下拉列表,并用递归调用方法添加权限。给选定的角色添加权限int nodes=Convert.ToInt32( node.Tag.ToString());选中节点,并遍历树的根节点,如果树节点和权限角色表中的记录权限编号相等,递归调用,勾上子节点。
CheckChildNodes(node)。
需 其他的定制服务 下方联系卡片↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 或者私信作者