超市酒店前台收银工作流程口令和开箱口令不一样能调吗

思讯 商业之星v7前台管理 收银员口令检查 输入账户密码 提示 编号无效 重新输入收银员编号?求指教_百度知道
思讯 商业之星v7前台管理 收银员口令检查 输入账户密码 提示 编号无效 重新输入收银员编号?求指教
我刚接手这台中崎的收银机,内置了思讯 商业之星V7 一打开收银机的电脑界面 就会弹出收银员口令检查对话框,我试过
2001 .........均提示编号无效,请重输入收银员编号! 请问这个问题该如何解决,在线等,追加高分!!谢谢
我有更好的答案
在思讯后台添加收银员编号和权限然后下传数据就可以了。
采纳率:39%
为您推荐:
其他类似问题
账户密码的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。当前位置: >>
小型超市收银系统的设计与实现 毕业设计论文
学号毕业设计题目:小型超市收银系统的设计与实现作 院者 别届 计算机学院 职别 专 称2011 届 业 计算机科学与技术 讲 师指导教师 完成时间2011 年5 月20 号 摘要随着销售行业竞争日益激烈,小型超市收银系统的引入显得极其重要。它不但可以 提高进销存管理的工作效率,而且可以有效减少盲目采购、降低采购成本、合理控制库 存、减少资金占用并提高市场灵敏度,从根本上提升超市的市场竞争力。 本系统运用计算机管理信息技术,建立数据库,对超市的进销存过程进行详细的分 析,实现了对超市的进货、 销售和库存的科学管理。 它主要包括以下几大模块: 登录模块、 商品入库模块、商品销售模块、营业统计模块、商品信息模块、供应商信息模块、用户 信息模块。各模块相许独立,同时又构成统一的整体。 本文主要介绍了小型超市收银系统的环境、所用到的开发语言、功能作用、设计的 方案等各方面的内容,其目的在于让使用者了解此系统,使他们能更好的运用本系统, 使此系统发挥出应有的作用。 另外在文中还予以指出了系统开发有待于进一步完善发展 的方向。 关键词:收银系统;控件;窗体;.net 平台I ABSTRACTWith the increasingly fierce competition in sales industry, the introduction of small supermarket cashier system is very important. It can not only improve the working efficiency of the purchase-sell-stock management, but also can effectively reduce the blind procurement, reduce procurement cost, have the reasonable control of inventory, reduce capital that takes up and improve market sensitivity, fundamentally ascending supermarket market competitiveness. This system uses computer-information-management technology, establish the database of supermarket. With a detailed analysis of the supermarket, it achieves the functions of purchasing and the scientific management of sales and stock. It includes the following major modules: login module, storage module of goods, merchandise sales module, operating statistics module, product information module, the module supplier information, user information module. Phase allowed to independently of each module, at the same time constitute a unified whole. In this paper, a small supermarket cash register system environment, the language used in the development, function, design and other aspects of the program, which aims to allow users to understand this system so they can better use the system, so that This system play its due role. Also in the article we pointed out that the system should be with further improved development. Key words: C F The.net platformII 目录摘 要 ......................................................... I ABSTRACT ....................................................... II 1 绪 论 ......................................................... 1 1.1 研究课题的目的 .............................................. 1 1.2 研究课题的意义 .............................................. 2 2 需求分析 ...................................................... 3 2.1 可行性研究 .................................................. 3 2.2 需求分析 .................................................... 3 2.3 开发环境介绍 ................................................ 4 3 总体设计 ...................................................... 7 3.1 设计思想 .................................................... 7 3.2 设计原则 .................................................... 7 3.3 功能模块和结构设计 .......................................... 7 3.4 数据库设计 .................................................. 9 4 系统实现 ..................................................... 16 4.1 登陆系统模块 ............................................... 16 4.2 商品信息模块 ............................................... 17 4.3 商品入库模块 ............................................... 18 4.4 商品销售模块 ............................................... 19 4.5 营业统计模块 ............................................... 23 4.6 供应商模块 ................................................. 24 4.7 用户信息模块 ............................................... 26 5 总结 ......................................................... 27 参 考 文 献 .................................................... 28 致 谢 ......................................................... 29 附 录 .......................................................... 30V 毕业设计1 绪 论随着现代科学技术的迅猛发展,人们的生活方式正发生着巨大的变化。计算机技术 已经渗透到各个领域,成为各个行业必不可少的工具。特别是 Internet 技术的推广和信 息高速公路的建立,使得 IT 产业在市场竞争中越发显示出其独特的优势。科学技术是 第一生产力,科学技术的发展让人类更加受益。各类信息系统应用于各行各业,不但给 管理上带来了极大的便利,而且还提高了工作效率。 中小型超市在我国经济发展中具有重要地位,目前我国的中小型超市数量多,地区 分布广泛,行业分布跨度大。随着全球经济一体化的发展和电子商务的兴起,中小型超 市之间的竞争将越来越激烈。网络及电子商务的迅猛发展突破了时间、空间的局限性, 给中小型超市带来了更多的发展机会,同时也增大了超市行业间的竞争强度。这就要求 中小型超市必须改变营业管理模式,提高运营效率。目前,我国中小型超市的信息化水 平还很低。随着技术的发展,电脑操作及管理日趋简化,电脑知识日趋普及,同时市场 经济快速多变,竞争激烈,超市行业采用电脑管理进货、库存、销售等诸多环节也已成 为必然趋势。1.1 研究课题的目的社会生活的现代化,使得市场的走向发生巨大变化,由于经济的发展,人民对生活 的需求已经不再满足于丰衣足食的低度要求,许多人们往往不是单纯为满足生活必须去 购买,而是凭着喜欢、意欲和感官去购买。如果一个商店能够打动顾客、吸引顾客,自 然会顾客盈门,而近几年新兴产业中超级市场(supermarket)的现代化管理方式和便捷 的购物方式,尤其是它轻松的购物环境,往往是打动顾客,吸引顾客的最主要的原因, 且良好的周密的销售服务更是赢得信誉、吸引的顾客的优势所在。商品经济的高速现代 化发展也促进了竞争, 使一切不甘落后的商家都争先恐后地采用最新的管理方法来加强 自己的竞争地位。因为,超市经营者如果不掌握当今市场发展的这一走向,不能将超市 现代化经营作为奴努力开拓的目标,就无法使经营活络、财源茂盛。 现代化事业的发展,也使超市的管理数段发生前所未有的革命,计算机的运用正在 发达国家的各类商店超市中普及。 由于它能够准确记载和查询有关超市经营活动的大量 数据,帮助超市经营者掌握和分析营销情况,及时作出正确决策,并且有利于商店内部 财务、工资、人员、库存、销售情况等管理,因而大大提高了现代超市的管理水平。国 外很多发达资本主义国家的有关人士都在开发超市管理系统,开发出很多大型的软件, 由于本人能力有限,开发一个小型超市管理系统,它可以使我们国内新起小型超市可以 更好的操作。此系统的有减少差错,节省人力、减少顾客购物时间,增加客流量,提高共 42 页,第 1 页 毕业设计 顾客满意度等特点。我通过开发这个简单管理信息系统,巩固了以前所学的知识,提高 了应用能力。1.2 研究课题的意义21 世纪,超市的竞争进入到了一个全新的领域,竞争不再是规模的竞争,而是技术 的竞争、管理的竞争、人才的竞争。技术的提升和管理的升级是超市业的竞争核心。如 何在激烈的竞争中扩大销售额、降低经营成本、扩大经营规模,成为超市经营者努力追 求的目标。为了提高物资管理的水平和工作效率,尽可能杜绝商品流通中各环节中可能 出现的资金流失不明现象,商品进销存领域迫切需要引进信息系统来加以管理,而商品 销售管理系统是当前应用于超市或者公司管理系统的典型代表。 从消费者的角度来说,结帐时应该准备和快速,毕竟时间就是金钱。由于传统的超 市收银管理给顾客和店主带来很多不便。针对这方面的缺陷,开发这个系统可以方便快 捷地查出顾客结帐情况,商品信息情况,每天的售货情况,方便了对超市商品管理、人 员管理,大大提高了超市的售货速度。进而加速了社会的发展速度,提高了人民的生活 水平。总之,借助于信息系统可以大大提高超市的运作效率,通过全面的信息的采集和 处理,不仅辅助提高了超市的决策水平,还可以迅速提高超市的管理水平,为降低经营 成本,提高效率,增强超市扩张力,提供有效的技术保障。共 42 页,第 2 页 毕业设计2 需求分析2.1 可行性研究系统开始和可行性研究是为系统开发做前期准备[1]。在对一个项目的开发之前,我 们总是要对其进行一个可行性分析与需求分析,通过和指导老师的共同分析得出了可行 性开发计划。对于需求分析我们作了如下调查分析的需求。 2.1.1 技术可行性 随着软件编程技术的不断增加,功能的不断加强,和网络技术的不断成熟,信息安 全的不断完善以及开发工具的日益进步,采用计算机系统来管理超市要求数据的采集、 更新能够完整、准确和及时,所以开发通用的超市收银系统已经完全可以做到。 2.1.2 经济可行性 因为通过网络传递销售信息,可以不受距离的限制,因此可以节约许多的人力和物 力,方便管理,由此可以减少不必要的开支,同时该系统可以提高超市的销售效率,即 提高了超市的经济效益,所以从经济上是完全可行的。 2.1.3 操作可行性 本系统采用 Windows 图形界面, 是大家熟悉的操作系统, 对于用户只需要具有一般 的计算机知识的人员都可以轻松上手。而且整个销售系统采用最友好的交互界面,简洁 明了,不需要对数据库非常了解。 由此,该系统的操作是可行的,有必要推广该系统。 综合以上三方面,该系统具有很高的开发可行性,无论是从技术上经济上还是操作 上。故此,可以设计该系统流程图,建立数据字典。2.2 需求分析对于大型超市信息管理系统来说,通常它会把员工人事管理系统也包括在内。由于 现考虑的是小型超市,其可承担的研发支费也有限[2]。所以在这个系统中,要实现的功 能主要如下: (1) 功能要求 对库存产品进行资料管理和统计; 对产品的进货单和产品的销售单进行录入管理和统计; 对进货、销售、库存情况进行查询; 对用户进行管理,具体为添加用户、删除用户、修改用户密码; 对供应商基本信息的管理; 对赢利状况分析,进行营业统计,按年月日及商品类别统计;共 42 页,第 3 页 毕业设计 (2) 数据精确度 产品的进货单和销售单中,单价、金额采用浮点数,数量都取整数。 (3) 时间特性 该系统软件从启动到进入系统登录界面的时间正常情况下少于 5 秒,录入并更新数 据的时间正常情况下少于 10 秒。 (4) 适用性 该管理系统软件适用于 Windows 2000/Windows XP 中文版下运行。2.3 开发环境介绍该系统属于管理信息系统,管理信息系统(MIS,Management Information System) 可以保存用户信息,通过对信息进行分析和处理,可以帮助用户制定计划、规范管理或 提供决策依据。超市收银系统具有其特殊性,通常采用C/S结构,考虑到其为小型超市, 所以在架构上面选择两层。 2.3.1 C#介绍 C sharp(又被简称为”C#”)是微软公司在 2000 年 6 月发布的一种新的编程语言。 C#看起来与 Java 有着惊人的相似;它包括了诸如单一继承,界面,与 Java 几乎同样的 语法, 和编译成中间代码再运行的过程。 但是 C#与 Java 有着明显的不同, 它借鉴了 Delphi 的一个特点, COM 与 (组件对象模型) 是直接集成的, 而且它是微软公司.NET windows 网络框架的主角[3]。 C#在带来对应用程序的快速开发能力的同时, 并没有牺牲 C 与 C++程序员所关心的 各种特性。它忠实地继承了 C 和 C++的优点。如果你对 C 或 C++有所了解,你会发现它 是那样的熟悉。即使你是一位新手,C#也不会给你带来任何其它的麻烦,快速应用程序 开发(Rapid Application Development,RAD)的思想与简洁的语法将会使你迅速成为一名 熟练的开发人员。 C#是专门为.NET 应用而开发出的语言。这从根本上保证了 C#与.NET 框架的完美 结合。在.NET 运行库的支持下,.NET 框架的各种优点在 C#中表现得淋漓尽致。C#具 有如下几个特点: (1) 简洁的语法 在缺省的情况下,C#的代码在.NET 框架提供的“可操纵”环境下运行,不允许直 接地内存操作。它所带来的最大的特色是没有了指针。C#只支持一个“.”,对于我们来 说,现在需要理解的一切仅仅是名字的嵌套而已。 (2) 精心地面向对象设计 C#具有面向对象的语言所应有的一切特性:封装、继承与多态性,这并不出奇。然 而,通过精心地面向对象设计,从高级商业对象到系统级应用,C#建造广泛组件的绝对共 42 页,第 4 页 毕业设计 选择。 在 C#的类型系统中,每种类型都可以看作一个对象。C#提供了一个叫做装箱 (boxing)与拆箱(unboxing)的机制来完成这种操作,而不给使用者带来麻烦。 C#只允许单继承,即一个类不会有多个基类,从而避免了类型定义的混乱。C#中没有了 全局函数,没有了全局变量,也没有了全局常数。一切的一切,都必须封装在一个类之 中。你的代码将具有更好的可读性,并且减少了发生命名冲突的可能。 (3) 与 Web 的紧密结合 C#组件将能够方便地为 Web 服务,并允许它们通过 Internet 被运行在任何操作系统 上的任何语言所调用。举个例子,XML 已经成为网络中数据结构传递的标准,为了提 高效率,C#允许直接将 XML 数据映射成为结构。这样就可以有效的处理各种数据。 (4) 完整的安全性与错误处理 语言的安全性与错误处理能力,是衡量一种语言是否优秀的重要依据。C#的先进设 计思想可以消除软件开发中的许多常见错误,并提供了包括类型安全在内的完整的安全 性能。 内存管理中的垃圾收集机制减轻了开发人员对内存管理的负担。.NET 平台提供的 垃圾收集器(Garbage Collection,GC)将负责资源的释放与对象撤销时的内存清理工作。 (5) 版本处理技术 C#提供内置的版本支持来减少开发费用,使用 C#将会使开发人员更加轻易地开发 和维护各种商业用户。 (6) 灵活性和兼容性 如果需要,C#允许你将某些类或者类的某些方法声明为非安全的。如此就能使用指 针、结构和静态数组。此外,它还引进了模拟指针功能的--delegates,指代。C#不支持 类的多继承,但是通过对接口的继承,你将获得这一功能。 2.3.2 SQL Server2005 介绍 Microsoft 公司的 SQL Server 是关系型网络数据库管理系统,它的工作环境为 Microsoft Windows NT 系列或 Microsoft Windows98。SQL Server 与 Microsoft 公司的其 它软件, Microsoft office 和 Microsoft Visual Studio 设计风格一致, 如 并能相互配合。 SQL Server 具有分布式数据库和仓库管理功能,支持客户机/服务器结构,并能进行分布式事 务处理和联机分析处理。SQL Server 具有强大的数据库管理功能,它提供丰富的管理工 具以支持数据库的安全性管理、完整性管理和作业管理。SQL Server 还具有强大的网络 功能,支持发布 Web 页面和接收电子邮件。SQL Server 支持 ANSI SQL(标准 SQL) , 并将标准 SQL 扩展成为更加实用的 Transact-SQL[4]。 使用 SQL Server 2005, 开发人员通过使用相似的语言, 例如微软的 Visual C# .NET 和微软的 Visual Basic,将能够创立数据库对象。开发人员还将能够建立两个新的对象共 42 页,第 5 页 毕业设计 ――用户定义的类和集合。在使用本地网络和互联网的情况下,在不同应用软件之间散 步数据的时候,可扩展标记语言(XML)是一个重要的标准。SQL Server 2005 将会自 身支持存储和查询可扩展标记语言文件。从对 SQL 类的新的支持,到多活动结果集 (MARS),SQL Server 2005 中的 ADO.NET 将推动数据集的存取和操纵,实现更大的 可升级性和灵活性。 2.3.3 C/S 介绍 在网络连接模式中,除对等网外,还有另一种形式的网络,即客户机/服务器网, Client/Server。在客户机/服务器网络中,服务器是网络的核心,而客户机是网络的基础, 客户机依靠服务器获得所需要的网络资源,而服务器为客户机提供网络必须的资源。这 里客户和服务器都是指通信中所涉及的两个应用进程(软件),所以有时要根据上下文 判断 client 与 server 是指软件还是硬件。C/S 可以充分利用两端硬件环境的优势,将任 务合理分配到 Client 端和 Server 端来实现,降低了系统的通讯开销[5]。 最简单的 C/S 体系结构的数据库应用,由两部分组成,即客户应用程序和数据库服 务器程序。二者可分别称为前台程序与后台程序。运行数据库服务器程序的机器,称为 应用服务器,一旦服务器程序被启动,就随时等待响应客户程序发来的请求;客户程序 运行在用户自己的电脑上,对应于服务器电脑,可称为客户电脑。当需要对数据库中的 数据进行任何操作时,客户程序就自动地寻找服务器程序,并向其发出请求,服务器程 序根据预定的规则作出应答,送回结果。 在典型的 C/S 数据库应用中,数据的储存管理功能,是由服务器程序独立进行的, 并且通常把那些不同的(不管是已知还是未知的)前台应用所不能违反的规则,在服务 器程序中集中实现,例如访问者的权限,编号不准重复、必须有客户才能建立定单这样 的规则。所有这些,对于工作在前台程序上的最终用户,是“透明”的,他们无须过问 (通常也无法干涉)这背后的过程,就可以完成自己的一切工作。在客户服务器架构的 应用中,前台程序可以变的非常“瘦小”,麻烦的事情,都交给了服务器和网络。在 C/S 体系的下,数据库真正变成了公共、专业化的仓库,受到独立的专门管理。共 42 页,第 6 页 毕业设计3 总体设计3.1 设计思想(1) 系统分成几个相对独立的模块,但这些模块都进行集中式管理。 (2) 分层的模块化程序设计思想,整个系统采用模块化机构设计。作为应用程序有 较强的可操作性和扩展性。 (3) 合理的数据流设计, 在应用系统设计中, 相对独立的模块间以数据流相互连接, 使各模块间的耦合性较低,方便系统运行,提高系统安全性。3.2 设计原则为了使本系统功能齐全完备,操作简便,最大限度的提高软件的质量,从而满足用 户的实际需要,在设计开发过程中遵循了,如下原则: (1) 合法性原则:依据产品核算系统的工作规定以及要求,参照核算实际的工作情 况,进行诸如商品进货、销售等工作。 (2) 实用性原则:适合产品信息管理工作的实际需求,并能够处理一些特殊情况的 要求,此外,尽可能预留空间,以便扩充功能。 (3) 准确性原则:对输入的相关资料建立检错机制,及时报错,使用户能够及时准 确的输入合法资料(如类型匹配,长度不超限等) 。 (4) 易操作原则:要求设计的系统功能齐全,接口友好,操作方便,必要的地方进 行提示。 (5) 源程序可读性原则:为了便于其它设计,维护人员读懂代码或以后的代码修改, 软件升级维护,既可能做好代码注释工作。 (6) 优化原则:为了达到优化的目的,合理的运用窗口,菜单,对象等的继承,自 定义用户对象,事件,函数,减少不必要的重复性代码,使程序简洁明了,也方便了将 来的维护。 (7) 安全性原则:该系统的管理员具有可设置登陆密码,修改密码的权限。经过前 面的设计,我们对整个系统有了一个初步的认识,并对各个模块进行了功能分化。3.3 功能模块和结构设计小型超市管理系统包括系统管理员、库存管理员、商品销售员三大角色,对应本系 统中的权限,根据权限的不同,可操作的业务不同。本节将对小型超市收银系统进行总 体设计,介绍系统的总体功能和模块划分。共 42 页,第 7 页 毕业设计 3.3.1 系统结构 小型超市收银系统所包含的功能模块有:商品入库模块、商品销售模块、营业统计 模块、商品信息模块、供应商信息模块、用户信息模块。系统功能结构图见图 3-1。小型超市收银系统商 品 入 库商 品 销 售营 业 统 计商 品 信 息用 户 信 息供 应 商 信 息图 3-1 系统功能结构图超市收银系统的业务流程图,如图 3-2 所示。图 3-2 系统业务流程图3.3.2 系统各功能模块定义 (1) 商品入库模块 该模块用于实现商品的入库管理,当供应商所供商品出现问题需退货时可以实现 退货管理。另外用户还可以根据条件查询相关的入库记录。 (2) 商品销售模块共 42 页,第 8 页 毕业设计 该模块用于实现商品售出、收银功能。顾客倘若对商品不满意还可以进行退货处 理。 (3) 营业统计模块 该模块实现商品销售情况及入库情况统计分析,让系统用户可以根据时间查询统 计信息。 (4) 商品信息模块 该模块实现商品基本信息的管理,如商品的添加、修改、删除操作、条件查询。 对于低于库存报警值的商品会显示出来。 (5) 用户信息模块 该模块实现用户基本信息的管理,含用户的添加、修改、删除,用户信息记录的 浏览。 (6) 供应商信息模块 该模块实现供应商基本信息的管理,系统用户可以实现供应商信息的添加、删除、 修改,条件查询以及查看供应商可提供的相关商品。3.4 数据库设计数据库在一个管理信息系统中占有非常重要的地位,数据库结构设计的好坏将直接 对应用系统的效率以及实现的效果产生影响。合理的数据库结构设计可以提高数据存储 的效率,保证数据的完整和一致,同时,合理的数据库也将有利于程序的实现[6]。 设计数据库系统时应该充分了解用户各个方面的需求,包括现有的以及将来可能增 加的需求。 3.4.1 数据库的需求分析 SQL Server 数据库的建立方法可以分成两个阶段,第一个阶段是根据要输入的数据 性质,新增表并设置表的字段名称、数据类型和语句,第二个阶段是在表内输入数据。 根据上述系统功能的分析,得出系统有如下需求信息: (1) 系统必须能够区别各种用户,如库存员、收银员。 (2) 系统支持用户的增加、登陆。 (3) 系统必须能够显示各种商品的信息,并允许用户使用搜索功能来查找自己所需 要的商品。 (4) 系统必须能将所有商品信息进行分类。 (5) 系统能支持用户将商品入库、退货。 (6) 系统能支持用户将商品售出、退货。 (7) 系统支持供应商信息的管理。 (8) 系统支持营业情况的查询。共 42 页,第 9 页 毕业设计 经过上述功能分析和需求总结,设计如下的数据项和数据结构: (1) 用户,包括数据项:编号,用户名,密码,权限。 (2) 商品类别,包括数据项:编号,商品名称。 (3) 商品,包括数据项:商品编号(条形码),商品名称,类别,库存量、报警值, 计量单位,规格,售价。 (4) 供应商,包括数据项:名称,联系人,联系电话,传真,地址,合作起始时间。 (5) 销售记录,包括数据项:编号,操作人,商品编号,售价,售出数量,售出时 间。 (6) 进货记录,包括数据项:商品,供应商,操作人,进价,进货数量,进货时间。 (7) 供货,包括数据项:供应商,商品,最新进价。 3.4.2 数据库概念结构设计 得到上面的数据项和数据结构后,就可以设计出系统中的各个实体以及他们之间的 关系,为后面的逻辑结构设计打下基础。本系统根据上面功能分析和需求总结设计出的 实体共有下面几个,下面分别列出本系统所使用到的各基本实体和各实体之间的联系。 如图 3-3 所示:共 42 页,第 10 页 毕业设计图 3-3 实体联系(E-R)图3.4.3 数据库逻辑设计 (1) 表设计 将数据库的概念结构设计转换成关系模型,就得到了以下的几张数据库中的表[7]: 下面分别介绍这些表。 系统登录用户的基本信息保存在用户信息表里,其中对于用户编号,通过自增方式 实现,无需用户手动编号,编号从 1000 起始。详细说明如表 3-1 所示。共 42 页,第 11 页 毕业设计表 3-1 用户信息表(Users) 序号 1 2 3 4 属性名 编号 真实名字 密码 权限 字段名 UserID UserName UserPassword UserRight 类型 int varchar varchar varchar 长度 4 10 50 10 NULL × × × × MD5 加密存储 默认 备注 主键自增,标识种子 1000商品种类繁多,可以划分为大范围的不同种类。对于这些种类,已事先划分并存储 于数据库中,不需要用户自动添加。商品类别信息表如下表 3-2。表 3-2 商品类别信息表(GoodsType) 序号 1 2 属性名 类别编号 名称 字段名 TypeID TypeName 类型 tinyint nvarchar 10 长度 NULL × × 默认 备注 主键自增商品信息表记载的是商品的详细信息,含商品编号、名称、类别、计量单位、规格、 售价、库存量等等。具体的各字段属性说明和类型如下表 3-3。表 3-3 商品信息表(GoodsInfo) 序号 1 2 3 4 5 6 7 8 9 属性名 商品编号 类型号 名称 计量单位 规格 售价 库存量 报警值 备注 字段名 GoodsID TypeID GoodsName GoodsUnit GoodsNorm GoodsSellPrice GoodsNum AlarmNum GoodsRemark 类型 nvarchar tinyint nvarchar nvarchar nvarchar smallmoney int int nvarchar 4 4 100 50 5 20 长度 20 NULL × × × × √ × × × √ 0 0 描述信息 默认 备注 主键入库记录表包含商品入库的相关信息,入库信息有入库时间、操作人、进库商品、 商品数量等。每一笔商品的入库都对应一个编号,具有唯一性。在这里,对编号的处理 就是用入库时的时间做编号。具体的各字段的属性说明和类型如下表 3-4 所示。共 42 页,第 12 页 毕业设计表 3-4 入库记录表(StockInfo) 序号 1 2 3 4 5 6 7 属性名 编号 商品编号 供应商编号 操作员 进价 数量 备注 字段名 StockID GoodsID CompanyID Operator GoodsPrice GoodsNum Remark 类型 varchar nvarchar int int smallmoney int nvarchar 4 100 长度 20 20 4 4 NULL × × × × × × √ 1 默认 备注 主键,与时间相关 外键 外键 外键商品销售信息存储在销售记录表中,流水编号也采用时间作为编号,具有唯一性。 各字段的详细情况见下表 3-5。表 3-5 销售记录表(SellInfo) 序号 1 2 3 4 5 6 属性名 编号 商品编号 操作者 售价 数量 备注 字段名 SellID GoodsID Operator SellPrice GoodsNum Remark 类型 varchar nvarchar int smallmoney int nvarchar 4 100 长度 20 20 4 NULL × × × × × √ 退货原因 默认 备注 主键,与时间相关 外键 外键供应商供货价格表中记载的是供应商所可商品的信息,含商品编号、供货商编号、 最新进价。各字段的详细信息见下表 3-6。表 3-6 供应商供货价格表(StockPrice) 序号 1 2 3 属性名 商品编号 供应商编号 最新进价 字段名 GoodsID CompanyID GoodsSellPrice 类型 nvarchar int smallmoney 长度 20 4 NULL × × × 默认 备注 组合主键 组合主键供应商信息表记录的是供应商的基本信息,其中编号由系统自动编号,采取主键自 增方式,编号始于 1000。各字段的详细信息见下表 3-7。共 42 页,第 13 页 毕业设计表 3-7 供应商信息表(Company) 序号 1 属性名 编号 字段名 CompanyID 类型 int 长度 4 NULL × 默认 备注 主键自增, 标识种 子
4 5 6 7 名称 联系人 电话 传真 地址 合作时间 CompanyName CompanyDirector CompanyPhone CompanyFax CompanyAdd HzDataTime nvarchar nvarchar nvarchar nvarchar nvarchar datetime 50 10 20 20 50 × × × √ × ×(2) 视图设计 根据逻辑模型所设计出的各种数据表构成了完整的物理数据库。 由于业务范围的限 制,每一个用户不可能访问数据库系统中的所有数据表,所访问的只是数据表的一个子 集。我们把一个用户能访问到的数据表集合称为一个视图(View)[8]。视图是以一致和 直观的方式提供给用户的数据形式。视图以这种形式给用户提供数据,一方面为了满足 用户对数据访问的方便性、简洁性需要,使数据在视图中以更符合用户要求和喜好的形 式展现出来,另一方面,为了保证数据的一致性,最好不要把数据表直接提供给最终用 户。 该数据库中涉及到的视图有两个: 视图 QuerySell,对应的 Transact-SQL 语句: SELECT dbo.SellInfo.SellID, dbo.SellInfo.GoodsID, dbo.GoodsInfo.GoodsName, dbo.GoodsType.TypeName, dbo.Users.UserName, dbo.SellInfo.SellPrice, dbo.SellInfo.GoodsNum, dbo.SellInfo.Remark FROM JOIN dbo.Users ON dbo.SellInfo.Operator = dbo.Users.UserID INNER JOIN dbo.GoodsType ON dbo.GoodsInfo.TypeID = dbo.GoodsType.TypeID 视图 QueryStock,对应的 Transact-SQL 语句: SELECT dbo.StockInfo.StockID, dbo.StockInfo.GoodsID, dbo.GoodsInfo.GoodsName, dbo.GoodsType.TypeName, dbo.Company.CompanyName, dbo.Users.UserName, dbo.StockInfo.GoodsPrice, dbo.StockInfo.GoodsNum, dbo.StockInfo.Remark共 42 页,第 14 页dbo.GoodsInfo INNER JOIN dbo.SellInfo ON dbo.GoodsInfo.GoodsID = dbo.SellInfo.GoodsID INNER 毕业设计 FROM dbo.StockInfo INNER JOIN dbo.GoodsInfo ON dbo.StockInfo.GoodsID = dbo.GoodsInfo.GoodsID INNER JOIN dbo.Users ON dbo.StockInfo.Operator = dbo.Users.UserID INNER JOIN dbo.Company ON dbo.StockInfo.CompanyID = dbo.Company.CompanyID INNER JOIN dbo.GoodsType ON dbo.GoodsInfo.TypeID = dbo.GoodsType.TypeID共 42 页,第 15 页 毕业设计4 系统实现系统用 SQL Server2005 做后台数据库, 进行基于.net 发平台的 WinForm 应用程序开 发,基本实现其功能。以下将描述系统几个主要功能模块的运行和测试的结果。4.1 登陆系统模块当我们建立了一个完整的系统时,尤其对于管理系统,对于进入每个系统的人员我 们都要对他进行身份验证,我们当然不希望有任何人进入该系统进行恶意的破坏,对系 统中的数据进行修改,维护该系统的系统管理员也不希望有任何麻烦,所以对系统进行 安全保护显的很重要,无论对于谁,系统的安全问题是首要的[9]。 为了解决这个问题,有一个简单、实用,但是老套的方法,就是口令加密。在该小 型超市收银系统中对口令的加密采取的是常用的 MD5 加密算法。在新增或修改用户信 息时,存入数据库的是用户密码的 MD5 哈希值,在登录验证时根据用户输入的密码计 算相应的 MD5 哈希值进行比较。 加密方法: public static string EncryptMD5(string oldData) { //将字符串转化为字节序列 Byte[] clearBytes = new UnicodeEncoding().GetBytes(oldData); //计算字节序列对应的 Hash 值 Byte[] hashedBytes = ((HashAlgorithm)CryptoConfig.CreateFromName(&MD5&)).ComputeHash(clearBytes); //返回经 MD5 加密后的字符串 return BitConverter.ToString(hashedBytes); } 在用户登录系统时,用户只需要输入分配的用户 ID,只要 ID 号正确就可以自动显 示出相应的用户名。为了防止他人获知用户的密码,增强系统的安全性,我们将待输入 密码的文本框的 PasswordChar 设为*,当用户输入密码后,系统将对所输入的密码进行 检查, 只有当密码正确才可进入到系统主界面, 否则系统会提示错误。 登录界面如图 4-1 所示。共 42 页,第 16 页 毕业设计图 4-1 登录界面图用户登录成功后,会记下登录该系统的用户的权限,权限的不同,进入主界面后可 进行的操作而异, 体现在控件的可响应用户的鼠标点击事件与否。 主界面如图 4-2 所示。 由于该用户属商品销售中的收银员,可以看到他只具有商品销售的权限。图 4-2 系统主界面图4.2 商品信息模块商品基本信息管理模块,用户可以对商品信息加以管理,界面可交互性强,运行时 的界面图如下图 4-3。其中红色显示为低于库存值,需要进货的商品。共 42 页,第 17 页 毕业设计图 4-3 商品基本信息管理界面图4.3 商品入库模块具有库存管理权限的用户进行商品入库操作时,需要输入商品编号,至于供应商可 以从下拉列表中选择,如果供应商记录未添加至数据库,可先单击右侧的“添加供应 商”按钮。依次输入进货价、进货数量,当进货数量为负数时进行就是退货操作。确认 进货时若发现为新商品则提示先新增商品,进货记录成功添加出现对话框提醒。进货运 行界面如下图 4-4 所示。共 42 页,第 18 页 毕业设计图 4-4 商品入库运行图在入库查询中,可以根据各种条件组合查询,在输入商品名称时可实现模糊查询匹 配,满足条件的入库记录将出现在网格中[10]。如图 4-5。图 4-5 入库查询界面图4.4 商品销售模块商品销售模块能处理商品销售业务过程,输入商品编号后回车确认后单击“确认” 按钮就可将商品添加至待售商品列表。根据快捷键操作,修改数量。当顾客对购买的商共 42 页,第 19 页 毕业设计 品不满意时,在未使用商品的情况下,可以对商品进行退货。这时只需将商品数量的修 改置为负数即可。另外可以在备注框中输入退货原因信息,方便了解退货原因,反馈给 商品厂家。商品销售运行界面图如下图 4-6 所示。图 4-6 商品销售运行界面图开发商品销售模块过程中,对输入的数据要进行严格控制。此时,用到较多的是 TextBox 控件的 KeyPress 事件和 TextChange 事件,下面对这两个事件进行详细说明。 (1) 实收金额文本框中控制金额的输入合理,只能是数字键、BackSpace 键、小数 点键被按下时才接受所按下的键,实现的代码如下[11]: private void txtGetMoney_KeyPress(object sender, KeyPressEventArgs e) { if (e.KeyChar != 8 && !char.IsDigit(e.KeyChar)&&e.KeyChar!='.'&&e.KeyChar!='-') { MessageBox.Show(&输入数字&); //弹出提示 e.Handled = } } (2) 找零金额由系统自动计算出并显示在文本框中,实现代码如下: private void txtGetMoney_TextChanged(object sender, EventArgs e) //当所收付款改变时,所找零钱数目也跟着改变 {共 42 页,第 20 页 毕业设计 if (txtGetMoney.Text != &&) { if (txtGetMoney.Text != &-&) { float fltMoney = Convert.ToSingle(txtGetMoney.Text.ToString()); float fltNeedPay = Convert.ToSingle(lblNeedM.Text.ToString()); txtChange.Text = (fltMoney - fltNeedPay).ToString(&0.0&); } } else { txtChange.Text = &&; } } 应该所收的钱数及商品的数量也由系统自动计算出,当网格中待售商品的信息有所 改变时就自动计算。相应的系统运行界面如下图 4-7 所示。实现代码如下: private void SetCount() { int intGoodsNum = 0; float fltMoney = 0.0f; for (int i = 0; i & dataGridView1.Rows.C i++) { intGoodsNum += Convert.ToInt32(dataGridView1.Rows[i].Cells[4].Value); fltMoney += (Convert.ToSingle(dataGridView1.Rows[i].Cells[3].Value) * Convert.ToInt32(dataGridView1.Rows[i].Cells[4].Value)); } intGoodsNum = Math.Abs(intGoodsNum); lblCount.Text = intGoodsNum.ToString(); lblNeedM.Text = fltMoney.ToString(); }共 42 页,第 21 页//并修改标签中的值,即售出总件数及售价 毕业设计图 4-7 商品销售结算结果图手动输入商品编号时,当已输入前七位后系统将自动检索前部相同的商品编号信 息。实现代码如下: private void txtID_TextChanged(object sender, EventArgs e) { //自动补充功能,如果文本框中已输入字符总长度不小于则允许自动补充 if (txtID.Text.ToString().Length &= 7) { AutoCompleteStringCollection myString = new AutoCompleteStringCollection(); string strID = txtID.Text.ToString(); DataTable myTable = new DataTable(); string strSql = &select GoodsID from GoodsInfo where GoodsID like '&; strSql += strID; strSql += &%'&; myTable = mySql.SelectDataBase(strSql); if (myTable.Rows.Count &0) { for (int i = 0; i & myTable.Rows.C i++)共 42 页,第 22 页 毕业设计 { myString.Add(myTable.Rows[i][0].ToString()); } txtID.AutoCompleteCustomSource = myS txtID.AutoCompleteSource = AutoCompleteSource.CustomS txtID.AutoCompleteMode = AutoCompleteMode.S } } else { txtID.AutoCompleteSource = AutoCompleteSource.N txtID.AutoCompleteMode = AutoCompleteMode.N } } 商品销售的过程中要与数据库交涉,与数据库频繁传输数据,采用ADO.NET数据 库访问技术。为了提高效率,对插入商品销售记录实现时借助于存储过程来提高速度。4.5 营业统计模块用户可以根据时间段的输入查看营业情况,本系统对营业情况的分类,有依具体明 细,有按商品分类,也有按收银员统计。运行界面图如下图 4-8 所示:共 42 页,第 23 页 毕业设计图 4-8 营业统计运行结果4.6 供应商模块对供应商信息的管理,增删改查都在该界面完成,工具栏中的增删改按钮对应相应 的操作。初进入到该窗体时所有的供应商信息都会出现在窗体中的网格,用户可以输入 查询条件定位出某供应商,对其进行修改删除操作。双击网格中某供应商的记录,会出 现该供应商所提供的商品信息。相应的运行界面图如下图 4-9 所示。共 42 页,第 24 页 毕业设计图 4-9 供应商管理运行图修改删除可实现批量更新,而新增必须在无改删操作或者以上操作后已做保存。这 得利于数据库 ADO.NET 技术中提供的对象 SqlCommandBuild,将离线数据库 DataSet 集中的数据更新至数据库,保持二者的同步和一致性。实现代码如下: //保持和数据库的同步更新 public DataSet UpdateDataBase(DataSet changedDataSet,string tableName) { this.msqlCon = new SqlConnection(mstrCon); this.msqlDa = new SqlDataAdapter(this.strSQL, this.msqlCon); this.msqlCmdBld = new SqlCommandBuilder(msqlDa); this.msqlDa.Update(changedDataSet, tableName); if (changedDataSet.Tables.Contains(tableName) == true) { changedDataSet.Tables[tableName].Clear(); } msqlDa.Fill(changedDataSet, tableName); return changedDataS//返回已更新的数据库表 }共 42 页,第 25 页 毕业设计4.7 用户信息模块具有系统管理员的用户可打开用户信息模块对应的窗体,完成对用户信息的管理, 运行界面如下图 4-10。图 4-10 用户信息界面运行图共 42 页,第 26 页 毕业设计5 总结经过三个月的努力,我终于完成了小型超市收银系统的全部设计过程,各功能模块 运行流畅自然且具有一定的实用价值。 软件设计是一个精细漫长的过程。在整个过程中,都需要周密的计划和安排,每一 步骤,都需要按照软件工程标准来完成。在设计中,我始终坚持理论指导实践原则,并 通过实践来加强理论的学习。通过实习锻炼,我熟悉了软件的一般过程,加强了对实际 问题的处理能力。 在实习过程中, 我也遇到了一些困难, 主要表现了技术和经验的欠缺, 但通过努力,终于一一克服了。由于开发者能力有限,加上时间仓促,本系统难免会出 现一些不足之处,例如:本系统只适合小型超市使用,不能适合中大型超市使用;超市 管理系统涉及范围宽,要解决的问题多,功能复杂,实现困难,但由于限于时间,本系 统只能做出其中的一部分功能。对于以上出现的问题,我们深表歉意,如发现还有其它 问题,希望老师批评指正。 该软件有待改进,体现在如下方面:其一,条形码扫描仪的引进将从根本上提高业 务处理的速度,提高超市运作的速度。在这个系统中它缺少了。只因能力有限。本人亦 曾查询过相关资料,了解到要实现这一功能需要涉及到的知识有:串口通信、多线程等 等。再者,界面美工方面有不足之处。最后,系统的可扩展性不是特别强,因为本系统 采取的 C/S 两层开发,虽然有用到些许的公共类,实现了代码共享,节省了系统资源, 但毕竟有限且是在在两层开发的思路上设计的。希望在以后的时间里能继续完善。共 42 页,第 27 页 毕业设计参 考 文 献[1] 张海藩.软件工程导论(第五版)[M].北京:清华大学出版社,2008 年. [2] 卫红春,朱欣娟.信息系统分析与设计[M].西安:西安电子科技大学出版社,2008 年. [3] Joe Mayo.C#揭秘[M].北京:人民邮电出版社,2010 年. [4] 闪四清.完全掌握 SQL Server2000[M].北京:人民邮电出版社,2001 年. [5] 谢希仁.计算机网络[M].大连:大连理工大学出版社,2000 年. [6] 王珊,萨师煊.数据库系统概论(第四版)[M].北京:高等教育出版社,2006 年. [7] 闪四清.数据库系统原理与应用教程[M].北京:清华大学出版社,2002 年. [8] 李律松,陈少刚.Visual C# 数据库高级教程[M].北京:清华大学出版社,2005 年. [9] 唐政,房大伟.C#项目开发.北京:清华大学出版社,2008 年. [10] 李满潮.Visual C#.NET 高级编程[M].北京:清华大学出版社,2002 年. [11] Matthew Reynolds, Karli Watson..NET Enterprise Development in C#:From Design to Deployment[M].London:Wrox Press Ltd, 2002.共 42 页,第 28 页 毕业设计致 谢时间如梭,大学四年马上就要结束了,在这四年的学习生活中,我学习到了很多知 识,专业知识方面更是有了很大的提高,是我这一生当中最宝贵的财富。在这最后的阶 段,我衷心的向学校的各位老师和我的同学及其关心鼓励我的亲人表示我最衷心的感 谢,感谢他们在这四年当中对我的帮助和关心。 感谢从大一到大四所有的授课教师,他们孜孜不倦的教导我们,使我们真正的学习 到了知识。 感谢湖南理工学院的图书馆,藏书丰富,我总能从中获得我想要的知识和思想。这 次论文其实也是学习的过程,从图书馆中我找到很多相关学习指导书籍,才有了这次毕 业设计的顺利完成,我感谢她。 尤其要感谢的是我的毕业设计辅导老师,陶跃进老师。在他的帮助下我们才能顺利 的完成这次设计。陶老师多次询问并督促研究进程,而且为我指点迷津,帮助我开拓研 究思路,精心点拨、热忱鼓励。陶老师严谨求实的态度,踏踏实实的精神给我留下了深 刻的印象。这些足以让我终生受益。我祝愿陶老师工作顺心顺意,心想事成! 最后感谢帮助过我的每一个人,没有他们就没有我的今天。共 42 页,第 29 页 毕业设计附 录公共类代码: class DbSQL { private string mstrCon=&Data Source=Database=SuperMUser ID=Password=diffdiff&; private SqlConnection msqlC private SqlDataAdapter msqlDa; private string strSQL;//SQL 语句 private SqlCommandBuilder msqlCmdB private DataSet mds = new DataSet(); //public void Open() //{ // //} ///--------直接操作数据库(未创建该类的实例时直接用)------//返回 DataTable,检索数据库数据,传入字符串,直接操作数据库 public DataTable SelectDataBase(string tempStrSQL) { this.msqlCon = new SqlConnection(mstrCon); DataSet tempDataSet = new DataSet(); this.msqlDa = new SqlDataAdapter(tempStrSQL, this.msqlCon); this.msqlDa.Fill(tempDataSet); return tempDataSet.Tables[0]; } //数据库数据更新(传字符串,直接操作数据库) public int UpdateDataBase(string tempStrSql) { this.msqlCon = new SqlConnection(mstrCon); msqlCon.Open(); SqlCommand temSqlCmd = new SqlCommand(tempStrSql, msqlCon); int intNumber = temSqlCmd.ExecuteNonQuery();//返回数据库中影响的行数 msqlCon.Close();共 42 页,第 30 页this.msqlCon = new SqlConnection(mstrCon); 毕业设计 return intN } ///--------操作脱机数据库(创建了该类的实例时直接用) //返回 DataSet,检索数据库,传入字符串,及表名称, public DataSet SelectDataBase(string tempStrSQL, string tempTableName) { this.strSQL = tempStrSQL; this.msqlCon = new SqlConnection(mstrCon); this.msqlDa = new SqlDataAdapter(this.strSQL, this.msqlCon); if (mds.Tables.Contains(tempTableName) == true) { this.mds.Tables[tempTableName].Clear(); } this.msqlDa.Fill(mds, tempTableName); } //保持 DataSet 和数据库的同步更新 public DataSet UpdateDataBase(DataSet changedDataSet,string tableName) { this.msqlCon = new SqlConnection(mstrCon); this.msqlDa = new SqlDataAdapter(this.strSQL, this.msqlCon); this.msqlCmdBld = new SqlCommandBuilder(msqlDa); this.msqlDa.Update(changedDataSet, tableName); if (changedDataSet.Tables.Contains(tableName) == true) { changedDataSet.Tables[tableName].Clear(); } msqlDa.Fill(changedDataSet, tableName); return changedDataS//返回已更新的数据库表 } //用于用户登录验证 public int UserLogin(int userId, string userPwd) { SqlCommand myCmd = new SqlCommand(&IsUser&, msqlCon);共 42 页,第 31 页 毕业设计 myCmd.CommandType = CommandType.StoredP //给存储过程添加参数 SqlParameter UserId = new SqlParameter(&@UserId&, SqlDbType.Int, 4); UserId.Value = userId; myCmd.Parameters.Add(UserId); //给存储过程添加参数 SqlParameter UserPwd = new SqlParameter(&@Userpwd&, SqlDbType.NVarChar,10); UserPwd.Value = userP myCmd.Parameters.Add(UserPwd); //给存储过程添加参数 SqlParameter flag = new SqlParameter(&@exits&, SqlDbType.Int, 4); flag.Direction = ParameterDirection.O myCmd.Parameters.Add(flag); //执行数据库操作 myCmd.ExecuteNonQuery(); //取得存储过程 OUTPUT 参数的值作为函数的返回值 return Convert.ToInt32(flag.Value); } //插入商品基本信息 public bool AddGoods(GoodsDetails tempGoods) { this.msqlCon = new SqlConnection(mstrCon); SqlCommand myCmd = new SqlCommand(&AddGoods&, msqlCon); myCmd.CommandType = CommandType.StoredP //给存储过程添加参数 SqlParameter myID = new SqlParameter(&@GoodsID&, SqlDbType.NVarChar, 20); myID.Value = tempGoods.GoodsId; myCmd.Parameters.Add(myID); // SqlParameter myName = new SqlParameter(&@GoodsName&, SqlDbType.NVarChar, 50); myName.Value = tempGoods.GoodsN共 42 页,第 32 页 毕业设计 myCmd.Parameters.Add(myName); // SqlParameter myType = new SqlParameter(&@TypeName&, SqlDbType.NVarChar, 10); myType.Value = tempGoods.TypeN myCmd.Parameters.Add(myType); // SqlParameter myUnit = new SqlParameter(&@GoodsUnit&, SqlDbType.NVarChar, 5); myUnit.Value = tempGoods.GoodsU myCmd.Parameters.Add(myUnit); // SqlParameter myNorm = new SqlParameter(&@GoodsNorm&, SqlDbType.NVarChar, 20); myNorm.Value = tempGoods.GoodsN myCmd.Parameters.Add(myNorm); // SqlParameter myPrice = new SqlParameter(&@GoodsSellPrice&, SqlDbType.SmallMoney); myPrice.Value = tempGoods.GoodsSellP myCmd.Parameters.Add(myPrice); // SqlParameter myAlarm = new SqlParameter(&@AlarmNum&, SqlDbType.Int); myAlarm.Value = tempGoods.AlarmN myCmd.Parameters.Add(myAlarm); // SqlParameter myRemark = new SqlParameter(&@GoodsRemark&, SqlDbType.NVarChar, 100); myRemark.Value = tempGoods.GoodsR myCmd.Parameters.Add(myRemark); //执行存储过程 try { msqlCon.Open();共 42 页,第 33 页 毕业设计 myCmd.ExecuteNonQuery(); } catch { } finally { msqlCon.Close(); } } //修改商品基本信息 public bool UpdateGoods(GoodsDetails tempGoods) { this.msqlCon = new SqlConnection(mstrCon); SqlCommand myCmd = new SqlCommand(&UpdateGoods&, msqlCon); myCmd.CommandType = CommandType.StoredP //给存储过程添加参数 SqlParameter myID = new SqlParameter(&@GoodsID&, SqlDbType.NVarChar, 20); myID.Value =tempGoods.GoodsId; myCmd.Parameters.Add(myID); // SqlParameter myName=new SqlParameter(&@GoodsName&,SqlDbType.NVarChar,50); myName.Value=tempGoods.GoodsN myCmd.Parameters.Add(myName); // SqlParameter myType=new SqlParameter(&@TypeName&,SqlDbType.NVarChar,10); myType.Value=tempGoods.TypeN myCmd.Parameters.Add(myType); //共 42 页,第 34 页 毕业设计 SqlParameter myUnit=new SqlParameter(&@GoodsUnit&,SqlDbType.NVarChar,5); myUnit.Value=tempGoods.GoodsU myCmd.Parameters.Add(myUnit); // SqlParameter myNorm=new SqlParameter(&@GoodsNorm&,SqlDbType.NVarChar,20); myNorm.Value=tempGoods.GoodsN myCmd.Parameters.Add(myNorm); // SqlParameter myPrice=new SqlParameter(&@GoodsSellPrice&,SqlDbType.SmallMoney); myPrice.Value=tempGoods.GoodsSellP myCmd.Parameters.Add(myPrice); // SqlParameter myAlarm=new SqlParameter(&@AlarmNum&,SqlDbType.Int); myAlarm.Value=tempGoods.AlarmN myCmd.Parameters.Add(myAlarm); // SqlParameter myRemark=new SqlParameter(&@GoodsRemark&,SqlDbType.NVarChar,100); myRemark.Value=tempGoods.GoodsR myCmd.Parameters.Add(myRemark); //执行存储过程 try { msqlCon.Open(); myCmd.ExecuteNonQuery(); } catch { }共 42 页,第 35 页 毕业设计 finally { msqlCon.Close(); } } //删除商品基本信息 public bool DeleteGoods(string tempGoodsID) { this.msqlCon = new SqlConnection(mstrCon); SqlCommand myCmd = new SqlCommand(&DeleteGoods&, msqlCon); myCmd.CommandType = CommandType.StoredP //给存储过程添加参数 SqlParameter myID = new SqlParameter(&@GoodsID&, SqlDbType.NVarChar, 20); myID.Value = tempGoodsID; myCmd.Parameters.Add(myID); //执行存储过程 try { msqlCon.Open(); myCmd.ExecuteNonQuery(); } catch { } finally { msqlCon.Close(); } }共 42 页,第 36 页 毕业设计 //判断是否存在商品 public bool HasGoods(string tempGoodsID) { this.msqlCon = new SqlConnection(mstrCon); SqlCommand myCmd = new SqlCommand(&HasGoods&, msqlCon); myCmd.CommandType = CommandType.StoredP //给存储过程添加参数 SqlParameter myID = new SqlParameter(&@GoodsID&, SqlDbType.NVarChar, 20); myID.Value = tempGoodsID; myCmd.Parameters.Add(myID); // SqlParameter flag = new SqlParameter(&@has&, SqlDbType.Int); flag.Direction = ParameterDirection.O myCmd.Parameters.Add(flag); try { msqlCon.Open(); myCmd.ExecuteNonQuery(); return (Convert.ToBoolean(flag.Value)); } catch { } finally { msqlCon.Close(); } } //判断某供应商是否提供某商品 public bool IsSupplyGds(string tempCmp,string tempGoodsID) { this.msqlCon = new SqlConnection(mstrCon);共 42 页,第 37 页 毕业设计 SqlCommand myCmd = new SqlCommand(&IsSupplyGds&, msqlCon); myCmd.CommandType = CommandType.StoredP //给存储过程添加参数 SqlParameter myID = new SqlParameter(&@GoodsID&, SqlDbType.NVarChar, 20); myID.Value = tempGoodsID; myCmd.Parameters.Add(myID); // SqlParameter myCmp=new SqlParameter(&@Company&,SqlDbType.NVarChar,50); myCmp.Value=tempC myCmd.Parameters.Add(myCmp); // SqlParameter myflag=new SqlParameter(&@Has&,SqlDbType.Int); myflag.Direction = ParameterDirection.O myCmd.Parameters.Add(myflag); //执行存储过程 try { msqlCon.Open(); myCmd.ExecuteNonQuery(); return Convert.ToBoolean(myflag.Value); } catch { } finally { msqlCon.Close(); } } //增加库存 public bool AddStock(string tempStockID,string tempGoodsID,string共 42 页,第 38 页 毕业设计 tempCmp,string tempOperator,float tempPrice,int tempNum,string tempRemark,int tempflag) { this.msqlCon = new SqlConnection(mstrCon); SqlCommand myCmd = new SqlCommand(&AddStock&, msqlCon); myCmd.CommandType = CommandType.StoredP //给存储过程添加参数 SqlParameter mySID = new SqlParameter(&@StockID&, SqlDbType.VarChar,20); mySID.Value =tempStockID; myCmd.Parameters.Add(mySID); // SqlParameter myGID = new SqlParameter(&@GoodsID&, SqlDbType.NVarChar, 20); myGID.Value = tempGoodsID; myCmd.Parameters.Add(myGID); // SqlParameter myCmp=new SqlParameter(&@CompanyName&,SqlDbType.NVarChar,50); myCmp.Value=tempC myCmd.Parameters.Add(myCmp); //操作者 @Operator varchar(10), SqlParameter myOperator = new SqlParameter(&@Operator&, SqlDbType.VarChar, 10); myOperator.Value = tempO myCmd.Parameters.Add(myOperator); //入库量 @GoodsNum int, SqlParameter myNum = new SqlParameter(&@GoodsNum&, SqlDbType.Int); myNum.Value = tempN myCmd.Parameters.Add(myNum); //进价 @GoodsPrice smallmoney, SqlParameter myPrice = new SqlParameter(&@GoodsPrice&, SqlDbType.SmallMoney); myPrice.Value = tempP myCmd.Parameters.Add(myPrice);共 42 页,第 39 页 毕业设计 // SqlParameter myRemark = new SqlParameter(&@Remark&, SqlDbType.NVarChar, 100); myRemark.Value =tempR myCmd.Parameters.Add(myRemark); // SqlParameter myflag=new SqlParameter(&@flag&,SqlDbType.TinyInt); myflag.Value= myCmd.Parameters.Add(myflag); //执行存储过程 try { msqlCon.Open(); myCmd.ExecuteNonQuery(); } catch { } finally { msqlCon.Close(); } } //根据商品编号,检索出商品的基本信息,用于销售显示。 GoodsID GoodsName GoodsUnit GoodsSellPrice public DataRow GetGoods(string tempGoodsID) { this.msqlCon = new SqlConnection(mstrCon); SqlCommand myCmd = new SqlCommand(&GetGoods&, msqlCon); myCmd.CommandType = CommandType.StoredP //给存储过程添加参数 SqlParameter myID = new SqlParameter(&@GoodsID&, SqlDbType.NVarChar,共 42 页,第 40 页 毕业设计 20); myID.Value = tempGoodsID; myCmd.Parameters.Add(myID); DataSet tempDs = new DataSet(); //执行存储过程 this.msqlDa = new SqlDataAdapter(myCmd); this.msqlDa.Fill(tempDs); return tempDs.Tables[0].Rows[0]; } //写销售记录 public bool AddSellItem(string tempSellID,string tempGoodsID,string tempPerson,float tempPrice,int tempNum,string tempRemark) { this.msqlCon = new SqlConnection(mstrCon); SqlCommand myCmd = new SqlCommand(&AddSellItem&, msqlCon); myCmd.CommandType = CommandType.StoredP //给存储过程添加参数 SqlParameter mySID = new SqlParameter(&@SellID&, SqlDbType.VarChar, 20); mySID.Value = tempSellID; myCmd.Parameters.Add(mySID); // SqlParameter myGID = new SqlParameter(&@GoodsID&, SqlDbType.NVarChar, 20); myGID.Value = tempGoodsID; myCmd.Parameters.Add(myGID); //操作者 @Operator varchar(10), SqlParameter myOperator = new SqlParameter(&@OperatorN&, SqlDbType.VarChar, 10); myOperator.Value = tempP myCmd.Parameters.Add(myOperator); //入库量 @GoodsNum int, SqlParameter myNum = new SqlParameter(&@GoodsNum&, SqlDbType.Int); myNum.Value = tempN共 42 页,第 41 页 毕业设计 myCmd.Parameters.Add(myNum); //进价 @GoodsPrice smallmoney, SqlParameter myPrice = new SqlParameter(&@SellPrice&, SqlDbType.SmallMoney); myPrice.Value = tempP myCmd.Parameters.Add(myPrice); // SqlParameter myRemark = new SqlParameter(&@Remark&, SqlDbType.NVarChar, 100); myRemark.Value = tempR myCmd.Parameters.Add(myRemark); // //执行存储过程 try { msqlCon.Open(); myCmd.ExecuteNonQuery(); } catch { } finally { msqlCon.Close(); } } }共 42 页,第 42 页
(完整版)小型超市收银系统的设计与实现毕业设计 - 单片机论文,毕业设计,毕业论文,单片机设计,硕士论文,研究生论文,单片机研究论文,单片机设计论文(完整版)小型超市收银系统的设计与实现毕业设计论文 - 单片机论文,毕业设计,毕业论文,单片机设计,硕士论文,研究生论文,单片机研究论文,单片机设计论文【最新版】小型超市收银系统的设计与实现毕业设计论文_工学_高等教育_教育专区。毕业论文,单片机论文,毕业论文设计,毕业过关论文,毕业设计,毕业设计说明,硕士论文,...超市收银系统自动化测试的设计与实现毕业论文_计算机软件及应用_IT/计算机_专业资料。超市收银系统自动化测试的设计与实现---设置和维护模块毕业论文天津...好邻居超市收银系统设计与实现_毕业论文 - 毕业设计(论文) 题目:四川省井研县好邻居超市 收银系统分析与设计 院专 (系):业: 信息与建筑工程 软件外包服务 二...中小型超市收银系统毕业论文开题报告_生产/经营管理_经管营销_专业资料。包括任务...毕业设计(论文)开题报告表题 目 中小型超市购物系统开发与设计 一、设计(论文)...小型超市管理系统毕业设... 22页 1下载券 小型超市收银系统的设计... 46页 ...1 河北工程大学毕业设计论文 还能够实现商品的量贩销售、按金额或者比例的打折销售...超市收银系统的设计与实现论文 - 南京工程学院 毕业设计论文 课题名称:超市收银系统的设计与实现 班级: 软件测试 1111 计算机工程学院 软件测试 所在系部: 专业名 ...简易超市收银系统毕业设计_工学_高等教育_教育专区。11届毕业设计论文系统...系统利用小液晶屏实 现了顾客总价显示,与凌阳单片机 SPEC061A 相结合实现了销售...便利店收银系统详细设计报告_调查/报告_表格/模板_实用文档。我们自己做的详细设计...超市收银系统+详细的报告... 20页 1下载券 小便利店销售系统的设计... 3页...
All rights reserved Powered by
www.tceic.com
copyright &copyright 。文档资料库内容来自网络,如有侵犯请联系客服。}

我要回帖

更多关于 酒店前台收银工作流程 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信