版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学号毕业设计题目:小型超市收银系统设计和实现摘要伴随销售行业竞争日益猛烈,小型超市收银系统引入显得极其关键。它不仅能够提升进销存管理工作效率,而且能够有效降低盲目采购、降低采购成本、合理控制库存、降低资金占用并提升市场灵敏度,从根本上提升超市市场竞争力。本系统利用计算机管理信息技术,建立数据库,对超市进销存过程进行具体分析,实现了对超市进货、销售和库存科学管理。它关键包含以下几大模块:登录模块、商品入库模块、商品销售模块、营业统计模块、商品信息模块、供给商信息模块、用户信息模块。各模块相许独立,同时又组成统一整体。本文关键介绍了小型超市收银系统环境、所用到开发语言、功效作用、设计方案等各方面内容,其目标在于让使用者了解此系统,使她们能愈加好利用本系统,使此系统发挥出应有作用。另外在文中还给予指出了系统开发有待于深入完善发展方向。关键词:收银系统;控件;窗体;.net平台
ABSTRACTWiththeincreasinglyfiercecompetitioninsalesindustry,theintroductionofsmallsupermarketcashiersystemisveryimportant.Itcannotonlyimprovetheworkingefficiencyofthepurchase-sell-stockmanagement,butalsocaneffectivelyreducetheblindprocurement,reduceprocurementcost,havethereasonablecontrolofinventory,reducecapitalthattakesupandimprovemarketsensitivity,fundamentallyascendingsupermarketmarketcompetitiveness.Thissystemusescomputer-information-managementtechnology,establishthedatabaseofsupermarket.Withadetailedanalysisofthesupermarket,itachievesthefunctionsofpurchasingandthescientificmanagementofsalesandstock.Itincludesthefollowingmajormodules:loginmodule,storagemoduleofgoods,merchandisesalesmodule,operatingstatisticsmodule,productinformationmodule,themodulesupplierinformation,userinformationmodule.Phaseallowedtoindependentlyofeachmodule,atthesametimeconstituteaunifiedwhole.Inthispaper,asmallsupermarketcashregistersystemenvironment,thelanguageusedinthedevelopment,function,designandotheraspectsoftheprogram,whichaimstoallowuserstounderstandthissystemsotheycanbetterusethesystem,sothatThissystemplayitsduerole.Alsointhearticlewepointedoutthatthesystemshouldbewithfurtherimproveddevelopment.Keywords:thecashiersystem;Control;Form;Tplatform目录TOC\o"1-2"\h\z\u摘要 IABSTRACT II1绪论 11.1研究课题目标 11.2研究课题意义 22需求分析 32.1可行性研究 32.2需求分析 32.3开发环境介绍 43总体设计 73.1设计思想 73.2设计标准 73.3功效模块和结构设计 73.4数据库设计 94系统实现 164.1登陆系统模块 164.2商品信息模块 174.3商品入库模块 184.4商品销售模块 194.5营业统计模块 234.6供给商模块 244.7用户信息模块 265总结 27参考文献 28致谢 29附录 301绪论伴随现代科学技术迅猛发展,大家生活方法正发生着巨大改变。计算机技术已经渗透到各个领域,成为各个行业必不可少工具。尤其是Internet技术推广和信息高速公路建立,使得IT产业在市场竞争中越发显示出其独特优势。科学技术是第一生产力,科学技术发展让人类愈加受益。各类信息系统应用于各行各业,不仅给管理上带来了极大便利,而且还提升了工作效率。中小型超市在中国经济发展中含相关键地位,现在中国中小型超市数量多,地域分布广泛,行业分布跨度大。伴随全球经济一体化发展和电子商务兴起,中小型超市之间竞争将越来越猛烈。网络及电子商务迅猛发展突破了时间、空间不足,给中小型超市带来了更多发展机会,同时也增大了超市行业间竞争强度。这就要求中小型超市必需改变营业管理模式,提升运行效率。现在,中国中小型超市信息化水平还很低。伴随技术发展,电脑操作及管理日趋简化,电脑知识日趋普及,同时市场经济快速多变,竞争猛烈,超市行业采取电脑管理进货、库存、销售等很多步骤也已成为肯定趋势。1.1研究课题目标社会生活现代化,使得市场走向发生巨大改变,因为经济发展,人民对生活需求已经不再满足于丰衣足食低度要求,很多大家往往不是单纯为满足生活必需去购置,而是凭着喜爱、意欲和感官去购置。假如一个商店能够打动用户、吸引用户,自然会用户盈门,而近几年新兴产业中超级市场(supermarket)现代化管理方法和便捷购物方法,尤其是它轻松购物环境,往往是打动用户,吸引用户最关键原因,且良好周密销售服务更是赢得信誉、吸引用户优势所在。商品经济高速现代化发展也促进了竞争,使一切不甘落后商家全部争先恐后地采取最新管理方法来加强自己竞争地位。因为,超市经营者假如不掌握当今市场发展这一走向,不能将超市现代化经营作为奴努力开拓目标,就无法使经营活络、财源茂盛。现代化事业发展,也使超市管理数段发生前所未有革命,计算机利用正在发达国家各类商店超市中普及。因为它能够正确记载和查询相关超市经营活动大量数据,帮助超市经营者掌握和分析营销情况,立即作出正确决议,而且有利于商店内部财务、工资、人员、库存、销售情况等管理,所以大大提升了现代超市管理水平。国外很多发达资本主义国家相关人士全部在开发超市管理系统,开发出很多大型软件,因为本人能力有限,开发一个小型超市管理系统,它能够使我们中国新起小型超市能够愈加好操作。此系统有降低差错,节省人力、降低用户购物时间,增加客流量,提升用户满意度等特点。我经过开发这个简单管理信息系统,巩固了以前所学知识,提升了应用能力。1.2研究课题意义二十一世纪,超市竞争进入到了一个全新领域,竞争不再是规模竞争,而是技术竞争、管理竞争、人才竞争。技术提升和管理升级是超市业竞争关键。怎样在猛烈竞争中扩大销售额、降低经营成本、扩大经营规模,成为超市经营者努力追求目标。为了提升物资管理水平和工作效率,尽可能杜绝商品流通中各步骤中可能出现资金流失不明现象,商品进销存领域迫切需要引进信息系统来加以管理,而商品销售管理系统是目前应用于超市或企业管理系统经典代表。从消费者角度来说,结帐时应该准备和快速,毕竟时间就是金钱。因为传统超市收银管理给用户和店主带来很多不便。针对这方面缺点,开发这个系统能够方便快捷地查出用户结帐情况,商品信息情况,天天售货情况,方便了对超市商品管理、人员管理,大大提升了超市售货速度。进而加速了社会发展速度,提升了人民生活水平。总而言之,借助于信息系统能够大大提升超市运作效率,经过全方面信息采集和处理,不仅辅助提升了超市决议水平,还能够快速提升超市管理水平,为降低经营成本,提升效率,增强超市扩张力,提供有效技术保障。
2需求分析2.1可行性研究系统开始和可行性研究是为系统开发做前期准备[1]。在对一个项目标开发之前,我们总是要对其进行一个可行性分析和需求分析,经过和指导老师共同分析得出了可行性开发计划。对于需求分析我们作了以下调查分析需求。2.1.1技术可行性伴随软件编程技术不停增加,功效不停加强,和网络技术不停成熟,信息安全不停完善和开发工具日益进步,采取计算机系统来管理超市要求数据采集、更新能够完整、正确和立即,所以开发通用超市收银系统已经完全能够做到。2.1.2经济可行性因为经过网络传输销售信息,能够不受距离限制,所以能够节省很多人力和物力,方便管理,由此能够降低无须要开支,同时该系统能够提升超市销售效率,即提升了超市经济效益,所以从经济上是完全可行。2.1.3操作可行性本系统采取Windows图形界面,是大家熟悉操作系统,对于用户只需要含有通常计算机知识人员全部能够轻松上手。而且整个销售系统采取最友好交互界面,简练明了,不需要对数据库很了解。
由此,该系统操作是可行,有必需推广该系统。综合以上三方面,该系统含有很高开发可行性,不管是从技术上经济上还是操作上。故此,能够设计该系统步骤图,建立数据字典。2.2需求分析对于大型超市信息管理系统来说,通常它会把职员人事管理系统也包含在内。因为现考虑是小型超市,其可负担研发支费也有限[2]。所以在这个系统中,要实现功效关键以下:功效要求对库存产品进行资料管理和统计;对产品进货单和产品销售单进行录入管理和统计;对进货、销售、库存情况进行查询;对用户进行管理,具体为添加用户、删除用户、修改用户密码;对供给商基础信息管理;对赢利情况分析,进行营业统计,按年月日及商品类别统计;数据正确度产品进货单和销售单中,单价、金额采取浮点数,数量全部取整数。时间特征该系统软件从开启到进入系统登录界面时间正常情况下少于5秒,录入并更新数据时间正常情况下少于10秒。适用性该管理系统软件适适用于Windows/WindowsXP汉字版下运行。2.3开发环境介绍该系统属于管理信息系统,管理信息系统(MIS,ManagementInformationSystem)能够保留用户信息,经过对信息进行分析和处理,能够帮助用户制订计划、规范管理或提供决议依据。超市收银系统含有其特殊性,通常采取C/S结构,考虑到其为小型超市,所以在架构上面选择两层。2.3.1C#介绍Csharp(又被简称为”C#”)是微软企业在6月公布一个新编程语言。C#看起来和Java有着惊人相同;它包含了诸如单一继承,界面,和Java几乎一样语法,和编译成中间代码再运行过程。不过C#和Java有着显著不一样,它借鉴了Delphi一个特点,和COM(组件对象模型)是直接集成,而且它是微软企业.NETwindows网络框架主角[3]。C#在带来对应用程序快速开发能力同时,并没有牺牲C和C++程序员所关心多种特征。它忠实地继承了C和C++优点。假如你对C或C++有所了解,你会发觉它是那样熟悉。即使你是一位新手,C#也不会给你带来任何其它麻烦,快速应用程序开发(RapidApplicationDevelopment,RAD)思想和简练语法将会使你快速成为一名熟练开发人员。C#是专门为.NET应用而开发出语言。这从根本上确保了C#和.NET框架完美结合。在.NET运行库支持下,.NET框架多种优点在C#中表现得淋漓尽致。C#含有以下多个特点:简练语法在缺省情况下,C#代码在.NET框架提供“可操纵”环境下运行,不许可直接地内存操作。它所带来最大特色是没有了指针。C#只支持一个“.”,对于我们来说,现在需要了解一切仅仅是名字嵌套而已。精心地面向对象设计C#含有面向对象语言所应有一切特征:封装、继承和多态性,这并不出奇。然而,经过精心地面向对象设计,从高级商业对象到系统级应用,C#建造广泛组件绝对选择。在C#类型系统中,每种类型全部能够看作一个对象。C#提供了一个叫做装箱(boxing)和拆箱(unboxing)机制来完成这种操作,而不给使用者带来麻烦。C#只许可单继承,即一个类不会有多个基类,从而避免了类型定义混乱。C#中没有了全局函数,没有了全局变量,也没有了全局常数。一切一切,全部必需封装在一个类之中。你代码将含有愈加好可读性,而且降低了发生命名冲突可能。和Web紧密结合C#组件将能够方便地为Web服务,并许可它们经过Internet被运行在任何操作系统上任何语言所调用。举个例子,XML已经成为网络中数据结构传输标准,为了提升效率,C#许可直接将XML数据映射成为结构。这么就能够有效处理多种数据。完整安全性和错误处理语言安全性和错误处理能力,是衡量一个语言是否优异关键依据。C#优异设计思想能够消除软件开发中很多常见错误,并提供了包含类型安全在内完整安全性能。内存管理中垃圾搜集机制减轻了开发人员对内存管理负担。.NET平台提供垃圾搜集器(GarbageCollection,GC)将负责资源释放和对象撤销时内存清理工作。版本处理技术C#提供内置版本支持来降低开发费用,使用C#将会使开发人员愈加轻易地开发和维护多种商业用户。灵活性和兼容性假如需要,C#许可你将一些类或类一些方法申明为非安全。如此就能使用指针、结构和静态数组。另外,它还引进了模拟指针功效--delegates,指代。C#不支持类多继承,不过经过对接口继承,你将取得这一功效。2.3.2SQLServer介绍Microsoft企业SQLServer是关系型网络数据库管理系统,它工作环境为MicrosoftWindowsNT系列或MicrosoftWindows98。SQLServer和Microsoft企业其它软件,如Microsoftoffice和MicrosoftVisualStudio设计风格一致,并能相互配合。SQLServer含有分布式数据库和仓库管理功效,支持用户机/服务器结构,并能进行分布式事务处理和联机分析处理。SQLServer含有强大数据库管理功效,它提供丰富管理工具以支持数据库安全性管理、完整性管理和作业管理。SQLServer还含有强大网络功效,支持公布Web页面和接收电子邮件。SQLServer支持ANSISQL(标准SQL),并将标准SQL扩展成为愈加实用Transact-SQL[4]。使用SQLServer,开发人员经过使用相同语言,比如微软VisualC#.NET和微软VisualBasic,将能够创建数据库对象。开发人员还将能够建立两个新对象——用户定义类和集合。在使用当地网络和互联网情况下,在不一样应用软件之间散步数据时候,可扩展标识语言(XML)是一个关键标准。SQLServer将会本身支持存放和查询可扩展标识语言文件。从对SQL类新支持,到多活动结果集(MARS),SQLServer中ADO.NET将推进数据集存取和操纵,实现更大可升级性和灵活性。2.3.3C/S介绍在网络连接模式中,除对等网外,还有另一个形式网络,即用户机/服务器网,Client/Server。在用户机/服务器网络中,服务器是网络关键,而用户机是网络基础,用户机依靠服务器取得所需要网络资源,而服务器为用户机提供网络必需资源。这里用户和服务器全部是指通信中所包含两个应用进程(软件),所以有时要依据上下文判定client和server是指软件还是硬件。C/S能够充足利用两端硬件环境优势,将任务合理分配到Client端和Server端来实现,降低了系统通讯开销[5]。最简单C/S体系结构数据库应用,由两部分组成,即用户应用程序和数据库服务器程序。二者可分别称为前台程序和后台程序。运行数据库服务器程序机器,称为应用服务器,一旦服务器程序被开启,就随时等候响应用户程序发来请求;用户程序运行在用户自己电脑上,对应于服务器电脑,可称为用户电脑。当需要对数据库中数据进行任何操作时,用户程序就自动地寻求服务器程序,并向其发出请求,服务器程序依据预定规则作出应答,送回结果。在经典C/S数据库应用中,数据储存管理功效,是由服务器程序独立进行,而且通常把那些不一样(不管是已知还是未知)前台应用所不能违反规则,在服务器程序中集中实现,比如访问者权限,编号不准反复、必需有用户才能建立定单这么规则。全部这些,对于工作在前台程序上最终用户,是“透明”,她们无须过问(通常也无法干涉)这背后过程,就能够完成自己一切工作。在用户服务器架构应用中,前台程序能够变很“瘦小”,麻烦事情,全部交给了服务器和网络。在C/S体系下,数据库真正变成了公共、专业化仓库,受到独立专门管理。
3总体设计3.1设计思想(1)系统分成多个相对独立模块,但这些模块全部进行集中式管理。(2)分层模块化程序设计思想,整个系统采取模块化机构设计。作为应用程序有较强可操作性和扩展性。(3)合理数据流设计,在应用系统设计中,相对独立模块间以数据流相互连接,使各模块间耦合性较低,方便系统运行,提升系统安全性。3.2设计标准为了使本系统功效齐全完备,操作简便,最大程度提升软件质量,从而满足用户实际需要,在设计开发过程中遵照了,以下标准:(1)正当性标准:依据产品核实系统工作要求和要求,参考核实实际工作情况,进行诸如商品进货、销售等工作。(2)实用性标准:适合产品信息管理工作实际需求,并能够处理部分特殊情况要求,另外,尽可能预留空间,方便扩充功效。(3)正确性标准:对输入相关资料建立检错机制,立即报错,使用户能够立即正确输入正当资料(如类型匹配,长度不超限等)。(4)易操作标准:要求设计系统功效齐全,接口友好,操作方便,必需地方进行提醒。(5)源程序可读性标准:为了便于其它设计,维护人员读懂代码或以后代码修改,软件升级维护,既可能做好代码注释工作。(6)优化标准:为了达成优化目标,合理利用窗口,菜单,对象等继承,自定义用户对象,事件,函数,降低无须要反复性代码,使程序简练明了,也方便了未来维护。(7)安全性标准:该系统管理员含有可设置登陆密码,修改密码权限。经过前面设计,我们对整个系统有了一个初步认识,并对各个模块进行了功效分化。3.3功效模块和结构设计小型超市管理系统包含系统管理员、库存管理员、商品销售员三大角色,对应本系统中权限,依据权限不一样,可操作业务不一样。本节将对小型超市收银系统进行总体设计,介绍系统总体功效和模块划分。3.3.1系统结构小型超市收银系统所包含功效模块有:商品入库模块、商品销售模块、营业统计模块、商品信息模块、供给商信息模块、用户信息模块。系统功效结构图见图3-1。小型超市收银系统小型超市收银系统商品入库商品销售营业统计商品信息供给商信息用户信息图3-1系统功效结构图超市收银系统业务步骤图,图3-2所表示。图3-2系统业务步骤图3.3.2系统各功效模块定义(1)商品入库模块该模块用于实现商品入库管理,当供给商所供商品出现问题需退货时能够实现退货管理。另外用户还能够依据条件查询相关入库统计。(2)商品销售模块该模块用于实现商品售出、收银功效。用户倘若对商品不满意还能够进行退货处理。(3)营业统计模块该模块实现商品销售情况及入库情况统计分析,让系统用户能够依据时间查询统计信息。(4)商品信息模块该模块实现商品基础信息管理,如商品添加、修改、删除操作、条件查询。对于低于库存报警值商品会显示出来。(5)用户信息模块该模块实现用户基础信息管理,含用户添加、修改、删除,用户信息统计浏览。(6)供给商信息模块该模块实现供给商基础信息管理,系统用户能够实现供给商信息添加、删除、修改,条件查询和查看供给商可提供相关商品。3.4数据库设计数据库在一个管理信息系统中占有很关键地位,数据库结构设计好坏将直接对应用系统效率和实现效果产生影响。合理数据库结构设计能够提升数据存放效率,确保数据完整和一致,同时,合理数据库也将有利于程序实现[6]。设计数据库系统时应该充足了解用户各个方面需求,包含现有和未来可能增加需求。3.4.1数据库需求分析SQLServer数据库建立方法能够分成两个阶段,第一个阶段是依据要输入数据性质,新增表并设置表字段名称、数据类型和语句,第二个阶段是在表内输入数据。依据上述系统功效分析,得出系统有以下需求信息:(1)系统必需能够区分多种用户,如库存员、收银员。(2)系统支持用户增加、登陆。(3)系统必需能够显示多种商品信息,并许可用户使用搜索功效来查找自己所需要商品。(4)系统必需能将全部商品信息进行分类。(5)系统能支持用户将商品入库、退货。(6)系统能支持用户将商品售出、退货。(7)系统支持供给商信息管理。(8)系统支持营业情况查询。经过上述功效分析和需求总结,设计以下数据项和数据结构:(1)用户,包含数据项:编号,用户名,密码,权限。(2)商品类别,包含数据项:编号,商品名称。(3)商品,包含数据项:商品编号(条形码),商品名称,类别,库存量、报警值,计量单位,规格,售价。(4)供给商,包含数据项:名称,联络人,联络电话,传真,地址,合作起始时间。(5)销售统计,包含数据项:编号,操作人,商品编号,售价,售出数量,售出时间。(6)进货统计,包含数据项:商品,供给商,操作人,进价,进货数量,进货时间。(7)供货,包含数据项:供给商,商品,最新进价。3.4.2数据库概念结构设计得到上面数据项和数据结构后,就能够设计出系统中各个实体和她们之间关系,为后面逻辑结构设计打下基础。本系统依据上面功效分析和需求总结设计出实体共有下面多个,下面分别列出本系统所使用到各基础实体和各实体之间联络。图3-3所表示:
图3-3实体联络(E-R)图3.4.3数据库逻辑设计(1)表设计将数据库概念结构设计转换成关系模型,就得到了以下几张数据库中表[7]:下面分别介绍这些表。系统登录用户基础信息保留在用户信息表里,其中对于用户编号,经过自增方法实现,无需用户手动编号,编号从1000起始。具体说明如表3-1所表示。表3-1用户信息表(Users)序号属性名字段名类型长度NULL默认备注1编号UserIDint4×主键自增,标识种子10002真实名字UserNamevarchar10×3密码UserPasswordvarchar50×MD5加密存放4权限UserRightvarchar10×商品种类繁多,能够划分为大范围不一样种类。对于这些种类,已事先划分并存放于数据库中,不需要用户自动添加。商品类别信息表以下表3-2。表3-2商品类别信息表(GoodsType)序号属性名字段名类型长度NULL默认备注1类别编号TypeIDtinyint×主键自增2名称TypeNamenvarchar10×商品信息表记载是商品具体信息,含商品编号、名称、类别、计量单位、规格、售价、库存量等等。具体各字段属性说明和类型以下表3-3。表3-3商品信息表(GoodsInfo)序号属性名字段名类型长度NULL默认备注1商品编号GoodsIDnvarchar20×主键2类型号TypeIDtinyint×3名称GoodsNamenvarchar50×4计量单位GoodsUnitnvarchar5×5规格GoodsNormnvarchar20√6售价GoodsSellPricesmallmoney×7库存量GoodsNumint4×08报警值AlarmNumint4×09备注GoodsRemarknvarchar100√描述信息入库统计表包含商品入库相关信息,入库信息有入库时间、操作人、进库商品、商品数量等。每一笔商品入库全部对应一个编号,含有唯一性。在这里,对编号处理就是用入库时时间做编号。具体各字段属性说明和类型以下表3-4所表示。表3-4入库统计表(StockInfo)序号属性名字段名类型长度NULL默认备注1编号StockIDvarchar20×主键,和时间相关2商品编号GoodsIDnvarchar20×外键3供给商编号CompanyIDint4×外键4操作员Operatorint4×外键5进价GoodsPricesmallmoney×6数量GoodsNumint4×17备注Remarknvarchar100√商品销售信息存放在销售统计表中,流水编号也采取时间作为编号,含有唯一性。各字段具体情况见下表3-5。表3-5销售统计表(SellInfo)序号属性名字段名类型长度NULL默认备注1编号SellIDvarchar20×主键,和时间相关2商品编号GoodsIDnvarchar20×外键3操作者Operatorint4×外键4售价SellPricesmallmoney×5数量GoodsNumint4×6备注Remarknvarchar100√退货原因供给商供货价格表中记载是供给商所可商品信息,含商品编号、供货商编号、最新进价。各字段具体信息见下表3-6。表3-6供给商供货价格表(StockPrice)序号属性名字段名类型长度NULL默认备注1商品编号GoodsIDnvarchar20×组合主键2供给商编号CompanyIDint4×组合主键3最新进价GoodsSellPricesmallmoney×供给商信息表统计是供给商基础信息,其中编号由系统自动编号,采取主键自增方法,编号始于1000。各字段具体信息见下表3-7。
表3-7供给商信息表(Company)序号属性名字段名类型长度NULL默认备注1编号CompanyIDint4×主键自增,标识种子10002名称CompanyNamenvarchar50×3联络人CompanyDirectornvarchar10×4电话CompanyPhonenvarchar20×5传真CompanyFaxnvarchar20√6地址CompanyAddnvarchar50×7合作时间HzDataTimedatetime×(2)视图设计依据逻辑模型所设计出多种数据表组成了完整物理数据库。因为业务范围限制,每一个用户不可能访问数据库系统中全部数据表,所访问只是数据表一个子集。我们把一个用户能访问到数据表集合称为一个视图(View)[8]。视图是以一致和直观方法提供给用户数据形式。视图以这种形式给用户提供数据,首先为了满足用户对数据访问方便性、简练性需要,使数据在视图中以更符适用户要求和喜好形式展现出来,其次,为了确保数据一致性,最好不要把数据表直接提供给最终用户。该数据库中包含到视图有两个:视图QuerySell,对应Transact-SQL语句:SELECTdbo.SellInfo.SellID,dbo.SellInfo.GoodsID,dbo.GoodsInfo.GoodsName,dbo.GoodsType.TypeName,dbo.Users.UserName,dbo.SellInfo.SellPrice,dbo.SellInfo.GoodsNum,dbo.SellInfo.RemarkFROMdbo.GoodsInfoINNERJOINdbo.SellInfoONdbo.GoodsInfo.GoodsID=dbo.SellInfo.GoodsIDINNERJOINdbo.UsersONdbo.SellInfo.Operator=dbo.Users.UserIDINNERJOINdbo.GoodsTypeONdbo.GoodsInfo.TypeID=dbo.GoodsType.TypeID视图QueryStock,对应Transact-SQL语句:SELECTdbo.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.RemarkFROMdbo.StockInfoINNERJOINdbo.GoodsInfoONdbo.StockInfo.GoodsID=dbo.GoodsInfo.GoodsIDINNERJOINdbo.UsersONdbo.StockInfo.Operator=dbo.Users.UserIDINNERJOINdbo.CompanyONdbo.StockInfo.CompanyID=dbo.Company.CompanyIDINNERJOINdbo.GoodsTypeONdbo.GoodsInfo.TypeID=dbo.GoodsType.TypeID
4系统实现系统用SQLServer做后台数据库,进行基于.net发平台WinForm应用程序开发,基础实现其功效。以下将描述系统多个关键功效模块运行和测试结果。4.1登陆系统模块当我们建立了一个完整系统时,尤其对于管理系统,对于进入每个系统人员我们全部要对她进行身份验证,我们当然不期望有任何人进入该系统进行恶意破坏,对系统中数据进行修改,维护该系统系统管理员也不期望有任何麻烦,所以对系统进行安全保护显很关键,不管对于谁,系统安全问题是首要[9]。为了处理这个问题,有一个简单、实用,不过老套方法,就是口令加密。在该小型超市收银系统中对口令加密采取是常见MD5加密算法。在新增或修改用户信息时,存入数据库是用户密码MD5哈希值,在登录验证时依据用户输入密码计算对应MD5哈希值进行比较。加密方法:publicstaticstringEncryptMD5(stringoldData){//将字符串转化为字节序列Byte[]clearBytes=newUnicodeEncoding().GetBytes(oldData);//计算字节序列对应Hash值Byte[]hashedBytes=((HashAlgorithm)CryptoConfig.CreateFromName("MD5")).ComputeHash(clearBytes);//返回经MD5加密后字符串returnBitConverter.ToString(hashedBytes);}在用户登录系统时,用户只需要输入分配用户ID,只要ID号正确就能够自动显示出对应用户名。为了预防她人获知用户密码,增强系统安全性,我们将待输入密码文本框PasswordChar设为*,当用户输入密码后,系统将对所输入密码进行检验,只有当密码正确才可进入到系统主界面,不然系统会提醒错误。登录界面图4-1所表示。
图4-1登录界面图用户登录成功后,会记下登录该系统用户权限,权限不一样,进入主界面后可进行操作而异,表现在控件可响应用户鼠标点击事件是否。主界面图4-2所表示。因为该用户属商品销售中收银员,能够看到她只含有商品销售权限。图4-2系统主界面图4.2商品信息模块商品基础信息管理模块,用户能够对商品信息加以管理,界面可交互性强,运行时界面图以下图4-3。其中红色显示为低于库存值,需要进货商品。图4-3商品基础信息管理界面图4.3商品入库模块含有库存管理权限用户进行商品入库操作时,需要输入商品编号,至于供给商能够从下拉列表中选择,假如供给商统计未添加至数据库,可先单击右侧“添加供给商”按钮。依次输入进货价、进货数量,当进货数量为负数时进行就是退货操作。确定进货时若发觉为新商品则提醒先新增商品,进货统计成功添加出现对话框提醒。进货运行界面以下图4-4所表示。图4-4商品入库运行图在入库查询中,能够依据多种条件组合查询,在输入商品名称时可实现模糊查询匹配,满足条件入库统计将出现在网格中[10]。图4-5。图4-5入库查询界面图4.4商品销售模块商品销售模块能处理商品销售业务过程,输入商品编号后回车确定后单击“确定”按钮就可将商品添加至待售商品列表。依据快捷键操作,修改数量。当用户对购置商品不满意时,在未使用商品情况下,能够对商品进行退货。这时只需将商品数量修改置为负数即可。另外能够在备注框中输入退货原因信息,方便了解退货原因,反馈给商品厂家。商品销售运行界面图以下图4-6所表示。图4-6商品销售运行界面图开发商品销售模块过程中,对输入数据要进行严格控制。此时,用到较多是TextBox控件KeyPress事件和TextChange事件,下面对这两个事件进行具体说明。(1)实收金额文本框中控制金额输入合理,只能是数字键、BackSpace键、小数点键被按下时才接收所按下键,实现代码以下[11]:privatevoidtxtGetMoney_KeyPress(objectsender,KeyPressEventArgse){if(e.KeyChar!=8&&!char.IsDigit(e.KeyChar)&&e.KeyChar!='.'&&e.KeyChar!='-'){MessageBox.Show("输入数字");//弹出提醒e.Handled=true;}}(2)找零金额由系统自动计算出并显示在文本框中,实现代码以下:privatevoidtxtGetMoney_TextChanged(objectsender,EventArgse)//当所收付款改变时,所找零钱数目也跟着改变{if(txtGetMoney.Text!=""){if(txtGetMoney.Text!="-"){floatfltMoney=Convert.ToSingle(txtGetMoney.Text.ToString());floatfltNeedPay=Convert.ToSingle(lblNeedM.Text.ToString());txtChange.Text=(fltMoney-fltNeedPay).ToString("0.0");}}else{txtChange.Text="";}}应该所收钱数及商品数量也由系统自动计算出,当网格中待售商品信息有所改变时就自动计算。对应系统运行界面以下图4-7所表示。实现代码以下:privatevoidSetCount()//并修改标签中值,即售出总件数及售价{intintGoodsNum=0;floatfltMoney=0.0f;for(inti=0;i<dataGridView1.Rows.Count;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();}图4-7商品销售结算结果图手动输入商品编号时,当已输入前七位后系统将自动检索前部相同商品编号信息。实现代码以下:privatevoidtxtID_TextChanged(objectsender,EventArgse){//自动补充功效,假如文本框中已输入字符总长度大于则许可自动补充if(txtID.Text.ToString().Length>=7){AutoCompleteStringCollectionmyString=newAutoCompleteStringCollection();stringstrID=txtID.Text.ToString();DataTablemyTable=newDataTable();stringstrSql="selectGoodsIDfromGoodsInfowhereGoodsIDlike'";strSql+=strID;strSql+="%'";myTable=mySql.SelectDataBase(strSql);if(myTable.Rows.Count>0){for(inti=0;i<myTable.Rows.Count;i++){myString.Add(myTable.Rows[i][0].ToString());}txtID.AutoCompleteCustomSource=myString;txtID.AutoCompleteSource=AutoCompleteSource.CustomSource;txtID.AutoCompleteMode=AutoCompleteMode.Suggest;}}else{txtID.AutoCompleteSource=AutoCompleteSource.None;txtID.AutoCompleteMode=AutoCompleteMode.None;}}商品销售过程中要和数据库交涉,和数据库频繁传输数据,采取ADO.NET数据库访问技术。为了提升效率,对插入商品销售统计实现时借助于存放过程来提升速度。4.5营业统计模块用户能够依据时间段输入查看营业情况,本系统对营业情况分类,有依具体明细,有按商品分类,也有按收银员统计。运行界面图以下图4-8所表示:图4-8营业统计运行结果4.6供给商模块对供给商信息管理,增删改查全部在该界面完成,工具栏中增删改按钮对应对应操作。初进入到该窗体时全部供给商信息全部会出现在窗体中网格,用户能够输入查询条件定位出某供给商,对其进行修改删除操作。双击网格中某供给商统计,会出现该供给商所提供商品信息。对应运行界面图以下图4-9所表示。图4-9供给商管理运行图修改删除可实现批量更新,而新增必需在无改删操作或以上操作后已做保留。这得利于数据库ADO.NET技术中提供对象SqlCommandBuild,将离线数据库DataSet集中数据更新至数据库,保持二者同时和一致性。实现代码以下://保持和数据库同时更新publicDataSetUpdateDataBase(DataSetchangedDataSet,stringtableName){this.msqlCon=newSqlConnection(mstrCon);this.msqlDa=newSqlDataAdapter(this.strSQL,this.msqlCon);this.msqlCmdBld=newSqlCommandBuilder(msqlDa);this.msqlDa.Update(changedDataSet,tableName);if(changedDataSet.Tables.Contains(tableName)==true){changedDataSet.Tables[tableName].Clear();}msqlDa.Fill(changedDataSet,tableName);returnchangedDataSet;//返回已更新数据库表}4.7用户信息模块含有系统管理员用户可打开用户信息模块对应窗体,完成对用户信息管理,运行界面以下图4-10。图4-10用户信息界面运行图
5总结经过三个月努力,我最终完成了小型超市收银系统全部设计过程,各功效模块运行流畅自然且含有一定实用价值。软件设计是一个精细漫长过程。在整个过程中,全部需要周密计划和安排,每一步骤,全部需要根据软件工程标准来完成。在设计中,我一直坚持理论指导实践标准,并经过实践来加强理论学习。经过实习锻炼,我熟悉了软件通常过程,加强了对实际问题处理能力。在实习过程中,我也碰到了部分困难,关键表现了技术和经验欠缺,但经过努力,最终一一克服了。因为开发者能力有限,加上时间仓促,本系统难免会出现部分不足之处,比如:本系统只适合小型超市使用,不能适合中大型超市使用;超市管理系统包含范围宽,要处理问题多,功效复杂,实现困难,但因为限于时间,本系统只能做出其中一部分功效。对于以上出现问题,我们深表歉意,如发觉还有其它问题,期望老师批评指正。该软件有待改善,表现在以下方面:其一,条形码扫描仪引进将从根本上提升业务处理速度,提升超市运作速度。在这个系统中它缺乏了。只因能力有限。本人亦曾查询过相关资料,了解到要实现这一功效需要包含到知识有:串口通信、多线程等等。再者,界面美工方面有不足之处。最终,系统可扩展性不是尤其强,因为本系统采取C/S两层开发,即使有用到些许公共类,实现了代码共享,节省了系统资源,但毕竟有限且是在在两层开发思绪上设计。期望在以后时间里能继续完善。
参考文献[1]张海藩.软件工程导论(第五版)[M].北京:清华大学出版社,.[2]卫红春,朱欣娟.信息系统分析和设计[M].西安:西安电子科技大学出版社,.[3]JoeMayo.C#揭秘[M].北京:人民邮电出版社,.[4]闪四清.完全掌握SQLServer[M].北京:人民邮电出版社,.[5]谢希仁.计算机网络[M].大连:大连理工大学出版社,.[6]王珊,萨师煊.数据库系统概论(第四版)[M].北京:高等教育出版社,.[7]闪四清.数据库系统原理和应用教程[M].北京:清华大学出版社,.[8]李律松,陈少刚.VisualC#数据库高级教程[M].北京:清华大学出版社,.[9]唐政,房大伟.C#项目开发.北京:清华大学出版社,.[10]李满潮.VisualC#.NET高级编程[M].北京:清华大学出版社,.[11]MatthewReynolds,KarliWatson..NETEnterpriseDevelopmentinC#:FromDesigntoDeployment[M].London:WroxPressLtd,.
致谢时间如梭,大学四年立即就要结束了,在这四年学习生活中,我学习到了很多知识,专业知识方面更是有了很大提升,是我这一生当中最宝贵财富。在这最终阶段,我衷心向学校各位老师和我同学及其关心激励我亲人表示我最衷心感谢,感谢她们在这四年当中对我帮助和关心。感谢从大一到大四全部讲课老师,她们孜孜不倦教导我们,使我们真正学习到了知识。感谢湖南理工学院图书馆,藏书丰富,我总能从中取得我想要知识和思想。这次论文其实也是学习过程,从图书馆中我找到很多相关学习指导书籍,才有了这次毕业设计顺利完成,我感谢她。尤其要感谢是我毕业设计教导老师,陶跃进老师。在她帮助下我们才能顺利完成这次设计。陶老师数次问询并督促研究进程,而且为我指点迷津,帮助我开拓研究思绪,精心点拨、热忱激励。陶老师严谨求实态度,踏扎实实精神给我留下了深刻印象。这些足以让我终生受益。我祝福陶老师工作顺心顺意,心想事成!最终感谢帮助过我每一个人,没有她们就没有我今天。
附录公共类代码:classDbSQL{privatestringmstrCon="DataSource=localhost;Database=SuperMarket;UserID=diff;Password=diffdiff";privateSqlConnectionmsqlCon;privateSqlDataAdaptermsqlDa;privatestringstrSQL;//SQL语句privateSqlCommandBuildermsqlCmdBld;privateDataSetmds=newDataSet();//publicvoidOpen()//{//this.msqlCon=newSqlConnection(mstrCon);//}///直接操作数据库(未创建该类实例时直接用)//返回DataTable,检索数据库数据,传入字符串,直接操作数据库publicDataTableSelectDataBase(stringtempStrSQL){this.msqlCon=newSqlConnection(mstrCon);DataSettempDataSet=newDataSet();this.msqlDa=newSqlDataAdapter(tempStrSQL,this.msqlCon);this.msqlDa.Fill(tempDataSet);returntempDataSet.Tables[0];}//数据库数据更新(传字符串,直接操作数据库)publicintUpdateDataBase(stringtempStrSql){this.msqlCon=newSqlConnection(mstrCon);msqlCon.Open();SqlCommandtemSqlCmd=newSqlCommand(tempStrSql,msqlCon);intintNumber=temSqlCmd.ExecuteNonQuery();//返回数据库中影响行数msqlCon.Close();returnintNumber;}///操作脱机数据库(创建了该类实例时直接用)//返回DataSet,检索数据库,传入字符串,及表名称,publicDataSetSelectDataBase(stringtempStrSQL,stringtempTableName){this.strSQL=tempStrSQL;this.msqlCon=newSqlConnection(mstrCon);this.msqlDa=newSqlDataAdapter(this.strSQL,this.msqlCon);if(mds.Tables.Contains(tempTableName)==true){this.mds.Tables[tempTableName].Clear();}this.msqlDa.Fill(mds,tempTableName);returnmds;}//保持DataSet和数据库同时更新publicDataSetUpdateDataBase(DataSetchangedDataSet,stringtableName){this.msqlCon=newSqlConnection(mstrCon);this.msqlDa=newSqlDataAdapter(this.strSQL,this.msqlCon);this.msqlCmdBld=newSqlCommandBuilder(msqlDa);this.msqlDa.Update(changedDataSet,tableName);if(changedDataSet.Tables.Contains(tableName)==true){changedDataSet.Tables[tableName].Clear();}msqlDa.Fill(changedDataSet,tableName);returnchangedDataSet;//返回已更新数据库表}//用于用户登录验证publicintUserLogin(intuserId,stringuserPwd){SqlCommandmyCmd=newSqlCommand("IsUser",msqlCon);myCmd.CommandType=CommandType.StoredProcedure;//给存放过程添加参数SqlParameterUserId=newSqlParameter("@UserId",SqlDbType.Int,4);UserId.Value=userId;myCmd.Parameters.Add(UserId);//给存放过程添加参数SqlParameterUserPwd=newSqlParameter("@Userpwd",SqlDbType.NVarChar,10);UserPwd.Value=userPwd;myCmd.Parameters.Add(UserPwd);//给存放过程添加参数SqlParameterflag=newSqlParameter("@exits",SqlDbType.Int,4);flag.Direction=ParameterDirection.Output;myCmd.Parameters.Add(flag);//实施数据库操作myCmd.ExecuteNonQuery();//取得存放过程OUTPUT参数值作为函数返回值returnConvert.ToInt32(flag.Value);}//插入商品基础信息publicboolAddGoods(GoodsDetailstempGoods){this.msqlCon=newSqlConnection(mstrCon);SqlCommandmyCmd=newSqlCommand("AddGoods",msqlCon);myCmd.CommandType=CommandType.StoredProcedure;//给存放过程添加参数SqlParametermyID=newSqlParameter("@GoodsID",SqlDbType.NVarChar,20);myID.Value=tempGoods.GoodsId;myCmd.Parameters.Add(myID);//SqlParametermyName=newSqlParameter("@GoodsName",SqlDbType.NVarChar,50);myName.Value=tempGoods.GoodsName;myCmd.Parameters.Add(myName);//SqlParametermyType=newSqlParameter("@TypeName",SqlDbType.NVarChar,10);myType.Value=tempGoods.TypeName;myCmd.Parameters.Add(myType);//SqlParametermyUnit=newSqlParameter("@GoodsUnit",SqlDbType.NVarChar,5);myUnit.Value=tempGoods.GoodsUnit;myCmd.Parameters.Add(myUnit);//SqlParametermyNorm=newSqlParameter("@GoodsNorm",SqlDbType.NVarChar,20);myNorm.Value=tempGoods.GoodsNorm;myCmd.Parameters.Add(myNorm);//SqlParametermyPrice=newSqlParameter("@GoodsSellPrice",SqlDbType.SmallMoney);myPrice.Value=tempGoods.GoodsSellPrice;myCmd.Parameters.Add(myPrice);//SqlParametermyAlarm=newSqlParameter("@AlarmNum",SqlDbType.Int);myAlarm.Value=tempGoods.AlarmNum;myCmd.Parameters.Add(myAlarm);//SqlParametermyRemark=newSqlParameter("@GoodsRemark",SqlDbType.NVarChar,100);myRemark.Value=tempGoods.GoodsRemark;myCmd.Parameters.Add(myRemark);//实施存放过程try{msqlCon.Open();myCmd.ExecuteNonQuery();returntrue;}catch{returnfalse;}finally{msqlCon.Close();}}//修改商品基础信息publicboolUpdateGoods(GoodsDetailstempGoods){this.msqlCon=newSqlConnection(mstrCon);SqlCommandmyCmd=newSqlCommand("UpdateGoods",msqlCon);myCmd.CommandType=CommandType.StoredProcedure;//给存放过程添加参数SqlParametermyID=newSqlParameter("@GoodsID",SqlDbType.NVarChar,20);myID.Value=tempGoods.GoodsId;myCmd.Parameters.Add(myID);//SqlParametermyName=newSqlParameter("@GoodsName",SqlDbType.NVarChar,50);myName.Value=tempGoods.GoodsName;myCmd.Parameters.Add(myName);//SqlParametermyType=newSqlParameter("@TypeName",SqlDbType.NVarChar,10);myType.Value=tempGoods.TypeName;myCmd.Parameters.Add(myType);//SqlParametermyUnit=newSqlParameter("@GoodsUnit",SqlDbType.NVarChar,5);myUnit.Value=tempGoods.GoodsUnit;myCmd.Parameters.Add(myUnit);//SqlParametermyNorm=newSqlParameter("@GoodsNorm",SqlDbType.NVarChar,20);myNorm.Value=tempGoods.GoodsNorm;myCmd.Parameters.Add(myNorm);//SqlParametermyPrice=newSqlParameter("@GoodsSellPrice",SqlDbType.SmallMoney);myPrice.Value=tempGoods.GoodsSellPrice;myCmd.Parameters.Add(myPrice);//SqlParametermyAlarm=newSqlParameter("@AlarmNum",SqlDbType.Int);myAlarm.Value=tempGoods.AlarmNum;myCmd.Parameters.Add(myAlarm);//SqlParametermyRemark=newSqlParameter("@GoodsRemark",SqlDbType.NVarChar,100);myRemark.Value=tempGoods.GoodsRemark;myCmd.Parameters.Add(myRemark);//实施存放过程try{msqlCon.Open();myCmd.ExecuteNonQuery();returntrue;}catch{
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 招聘3人!【政务公开】贵南县生态环境局面向社会公开招聘工作人员考试备考题库及答案详解
- 2026年昆明市公安局滇池国家旅游度假区分局第一批勤务辅警招聘(11人)笔试参考题库及答案详解
- 平安银行北京分行2027届秋季校园招聘考试备考试题及答案详解
- 南平市公安局建阳分局公开招聘警务辅助人员考试备考试题及答案详解
- 2026浙江金华市婺城区银龄教师招募17人笔试备考试题及答案详解
- 2026广东云浮市司法局公益性岗位招聘1人考试备考试题及答案详解
- 2026南昌大学第一附属医院院前急救科驾驶员岗招聘1人笔试备考题库及答案详解
- 2026年娄烦县网格员招聘笔试备考题库及答案解析
- 2026年化工总控工职业技能等级模拟题库及答案
- 2026年河北法院书记员招聘考试笔试试题含答案
- 云南省昆明市2025届高三“三诊一模”摸底诊断测试英语试题(含答案含听力原文无音频)
- 超市员工档案管理制度
- 高考英语3500词顺序版
- 一年级新生家长会课件(共25张课件)
- YYT 0644-2008 超声外科手术系统基本输出特性的测量和公布
- 胸腰椎椎管狭窄的护理查房
- 用地性质规划调整方案
- GB/T 9808-2023钻探用无缝钢管
- 04S519小型排水构筑物1
- 遗传学-遗传的细胞学基础
- SB/T 10794.2-2012商用冷柜第2部分:分类、要求和试验条件
评论
0/150
提交评论