版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
年5月29日超市收银系统设计说明书文档仅供参考目录TOC\o"1-3"\h\u13011可行性分析 1192261.1问题描述 1237161.2可行性研究的主要内容 1285821.2.1技术可行性 1185371.2.2经济可行性 137671.2.3操作可行性 2307801.3结论意见 2153122项目开发计划 341852.1编写目的 356042.2项目背景 364002.3项目概述 3155822.4项目开发计划 4205742.5交付期限 4175363需求分析 562463.1任务需求分析 559523.2系统流程图 6186243.3系统构架图 6115203.4数据流图、数据字典及实体联系图 764143.4.1数据流图 8311693.4.2数据字典 8314933.4.3实体联系E-R图 959694系统概要设计 129134.1总体设计 13222954.2系统功能模块图 1343194.3数据库概念设计 1335894.4数据库逻辑结构设计 14203845详细设计 1760395.1系统的主要功能 18126815.2人机界面设计 1814375.2.1一般交互设计 18320825.2.2信息显示设计 19279895.2.3数据输入设计 19161555.3程序设计过程 20119765.3.1登陆界面 20276635.3.2后台管理操作 24137056软件测试 2906.1系统测试 03056746.1.1单元测试 31271566.1.2集成测试 3115126.2测试步骤 31273006.3测试数据的常见技术 32222676.3.1白盒测试技术 32145346.3.2黑盒测试技术 33316547设计总结 3392657.1心得与体会 3464637.2存在的问题及建议 3426487参考文献 35
摘要随着经济的发展,人们的生活越来越好。日常见品的种类越来越多,超市的规模也越来越大,超市收银员的工作量也越来越大。为了适应超市规模的不断变化,减轻收银员的工作负担,根据超市的实际需要设计了一个具有开放体系结构的、易扩充的、易维护的、具有良好人机交互界面的超市收银系统,为超市的决策者和管理者提供超市的各种数据信息、方便的查询和高效便捷的管理。该超市收银系统包括前台操作和后台数据库,后台数据库包括入库记录、销售记录、商品信息、用户信息和会员信息,前台操作是收银、查询和修改商品信息。该系统采用C#实现,系统开发工具是VS。关键词:C#;VS;数据库;超市收银1可行性分析1.1问题描述本次课程设计实训要求在计算机网络,数据库和先进的开发平台上,利用现有的软件,配置一定的硬件,分析和设计一个具有开放体系结构的、易扩充的、易维护的、具有良好人机交互界面的超市收银系统,为超市的决策者和管理者提供充分的信息、快捷的查询和有效的管理方式,减少不必要的损失和浪费,提高超市管理的效率。1.2可行性研究的主要内容可行性研究的目的,就是用最小的代价在尽可能短的时间内确定问题是否能够解决。可行性研究实质上是要进行一次大大压缩简化了的系统分析和设计过程,也就是在较高层系上以较抽象的方式进行的系统分析和设计过程。在进行可行性研究时首先要进一步分析和澄清问题定义。在问题定义阶段初步确定系统的规模和目标,如果正确就进一步加以肯定,如果有错误就应该及时改正,如果对目标约束和限制,必须把她们一一列出来。从系统逻辑模型出发,探索若干种可供选择的主要解法(即系统实现方案)。对于每种解法都应该仔细研究它的可行性,一般来说,至少应该从下述三个方面研究每种解法的可行性。1.2.1技术可行性技术可行性主要分析研究在现有技术条件的基础上是否能够实现该系统。当前电脑在中国已经得到普及,使用电脑的人数在快速增长。从事软件设计的人员的技术能力有了很大提高,能够实现该系统。1.2.2经济可行性经济可行性主要研究该系统的经济效益能否超过它的开发成本。当前在中国,到超市进行购物的人流量是非常庞大的,由于超市提供的商品种类繁多,且大多是人们的日常必须品,因此人们对超市的依赖性非常强。在这样的背景下,为超市设计这样的一个系统,其经济效益是十分可观的。又由于经过网络传递销售信息能够不受距离的限制,因此能够节省大量的人力和物力,方便管理,由此能够减少不必要的开支,同时该系统能够提高超市的销售效率,即提高了超市的经济效益,因此从经济上完全是可行的。1.2.3操作可行性操作可行性主要研究系统的操作方式在该用户组织内是否可行。在当前的社会条件下,Internet网已经在中国全面覆盖,在中国各地,均能够经过硬件设备联网。而且各商业组织也拥有属于自己的内部局域网,因此该系统能够实现联网。该系统在联网情况下,能够经过PC机访问系统的数据。因此该系统的操作方式符合该用户组织。1.3结论意见经过认真地研究,该系统完成了在技术可行性、经济可行性、操作可行性方面的可行性研究,该系统能够开发实现。因此,相信全系统的设计将会按时、高质量完成。因此,系统的设计开发是能够马上进行的。
2项目开发计划2.1编写目的经过项目的可行性分析,得出项目可进一步进行下去的结论,在软件继续进一步的开发之前首先给出此软件项目计划。2.2项目背景项目分析单位在接到项目分析员给出的项目可行性分析报告后,在本系统,即超市收银系统开发主管部门的统一规划下制定用于软件实质开发的软件项目计划,以使软件开发单位理解软件开发要求,进行开发。2.3项目概述超市收银系统主要功能包括:后台管理和前台操作,其中:后台管理主要包括:进货管理、销售管理、库存管理、相关业务的查询和系统维护等;进货管理:在数据库中存储有各种商品的供应商信息,当需要进货时,能够与供应商联系,同时数据库中会存储各种商品的每一次进货信息,并保持数据的时效性和完整性。销售管理主要包括:随时录入卖出商品信息,如名称,数量,单价等,及时更新数据库数据。货架上商品卖到一定数量时,实时生成提货报告,并提供商品的库存信息,剩余信息。库存管理主要包括:生成库存报告、生成缺货报告、录入更新数据。在需要时(可每隔一个时间段查询一次)生成商品库存情况报告,实时报告商品库存情况,如库存量不足(小于某一自定的数量)时,可生成缺货报告,并提供商品种类,来源等商品属性信息,方便采购人员进行商品采购。采购员采购商品后,及时录入商品信息等数据,在数据库中进行数据更新。前台操作主要包括:前台收银员权限严格控制,支持断网销售、连网销售两种模式,预留对条码扫描、票据打印机、顾显、钱箱、磁卡刷卡机、IC卡读写器、条码打印机、盘点机等POS外设的支持,可直接修改销售数量、单价、折扣等(权限控制),支持赠送(权限控制),会员卡、储值卡消费,收款抹零(权限控制),挂单/取单,前台查询商品、库存,删单、删行、查单(权限控制),特殊操作记录(防止前台作弊),支持电子称散装商品销售,前台支持业务员录入计提,商品促销销售(按时间段),会员价、储值卡价销售,支持无库存商品销售,销售小票格式自定义(标题、脚注、明细格式等)。2.4项目开发计划1任务分解分三个大的阶段进行开发第一阶段完成本系统的数据流图跟E-R图。第二阶段完成概要设计跟详细设计。第三阶段书写文档。2关键问题各模块之间的联系和后台数据库的完成。使用当前的设备与现有开发技术完全能够开发出该系统,总的来说该项目没有较大的技术难点与其它的一些风险因素。对于出现的一些小难点总都能得到解决。2.5交付期限本系统的开发时限为两个星期,该系统的交付期限为7月3日。
3需求分析3.1任务需求分析前台操作包括:商品录入:根据超巿业务特点制定相关功能,能够经过输入唯一编号、扫描条形码、商品名称等来实现精确的商品扫描录入。该扫描录入方法能够充分保证各种电脑操作水平层次的人员均能准确快速地进行商品扫描录入。收银业务:经过扫描条形码或者直接输入商品名称(对于同类多件商品采用一次录入加数量的方式)自动计算本次交易的总金额。在顾客付款后,自动计算找零,同时打印交易清单(包括交易的流水账号、每类商品的商品名、数量、该类商品的总金额、交易的时间、负责本次收银的员工号)。如果顾客是本店会员并持有本人会员卡,则在交易前先扫描会员卡,并对所购物品全部实行95折优惠,并将所购物品的总金额累计到该会员的总消费金额中。会员卡的有效期限为一年,满一年未续卡者,该会员卡将被注销。后台管理操作:进货管理:根据销售情况及库存情况,自动制定进货计划(亦可手工制定修改),能够避免盲目进货造成商品积压。按计划单有选择性地进行自动入库登记。综合查询打印计划进货与入库记录及金额。销售管理:商品正常销售、促销与限量、限期及禁止销售控制。综合查询各种销售明细记录、各地收银员收银记录以及交结账情况等。按多种方式统计生成销售排行榜,灵活察看和打印商品销售日、月、年报表。库存管理:综合查询库存明细记录。库存状态自动告警提示。如库存过剩、少货、缺货等。软件为您预警,避免库存商品积压损失和缺货。库存自动盘点计算。人员管理:员工、会员、供货商、厂商等基本信息登记管理。员工操作权限权利、客户销售权限管理。
3.2系统流程图商品库存程序收银员收银商品销售程序进货报告生成程序商品库存信息文件进货报告输入购物信息显示销售信息显示订货信息图3.1系统流程图
3.3系统构架图商品库存程序收银员收银商品销售程序进货报告生成程序商品库存信息文件进货报告输入购物信息显示销售信息显示订货信息图3.1系统流程图收银收银POS机查询数据/员工管理PC机打印机称装电子秤管理商品信息PC机SQlServer服务器进货PC机超市前台管理者超市前台管理者SQlServerSQlServer服务器进货PC机图3.2系统构架图超市工作人员前台收银员管理部门进货部门数据库服务器进货PC机
3.4数据流图、数据字典及实体联系图进货PC机图3.2系统构架图超市工作人员前台收银员管理部门进货部门数据库服务器进货PC机3.4.1数据流图产生销售记录产生销售记录产生进货单仓库管理员收银员更新库存信息进货员前台经理更新商品信息D1商品信息表D1商品信息表D3销售记录销售信息销售信息销售信息事务库存信息进货信息D2进货信息进货单图3.3数据流图商品信息商品信息事务D4商品信息表
3.4.2数据字典D3销售记录销售信息销售信息销售信息事务库存信息进货信息D2进货信息进货单图3.3数据流图商品信息商品信息事务D4商品信息表数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合。数据字典的作用是在软件分析和设计的过程中给人提供关于数据的描述信息。名称:销售名称:销售清单别名:销售报表描述:对超市商品销售情况的描述定义:货物编号+名称+销售日期+数量+售价位置:输出到打印机保存到磁盘名称:商品信息别名:商品单描述:超市销售商品的信息定义:商品编号+类型编号+商品名称+库存量+售价+报警值+商品规格+计量单位位置:输出到打印机保存到磁盘名称:用户信息别名:描述:该系统的使用者的信息定义:用户编号+姓名+密码+权限位置:输出到打印机保存到磁盘名称:入库记录别名:进货报表描述:每次进货的货物描述定义:入库编号+货物编号+供应商编号+操作员+进价+数量名称:用户信息别名:描述:该系统的使用者的信息定义:用户编号+姓名+密码+权限位置:输出到打印机保存到磁盘名称:入库记录别名:进货报表描述:每次进货的货物描述定义:入库编号+货物编号+供应商编号+操作员+进价+数量位置:输出到打印机保存到磁盘名称:会员信息信息表别名:商品编号描述:该超市所属会员的信息定义:会员编号+会员名+会员积分+会员等级+会员电话+会员起始日期位置:输出到打印机保存到磁盘名称:供应商信息别名:供应商描述:和超市合作的供应商的信息定义:供应商编号+名称+联系人+地址+联系电话+传真+合作起始时间位置:输出到打印机保存到磁盘入库记录销售记录入库记录销售记录供应商商品编号商品名称库存量计量单位报警值商品规格类别编号名称电话联系人供应地址商品名称数量售价总金额进价商品名称商品数量供应商编号进货销售供应商编号合作时间传真入库编号商品编号售价11111图3.4部分实体联系(E-R)图nn商品
1111图3.4部分实体联系(E-R)图nn商品用户用户用户用户编号密码用户名权限会员用户会员编号会员名会员积分会员等级电话会员起始日期图3.6会员实体E—R图图3.5用户实体E—R图
4系统概要设计会员用户会员编号会员名会员积分会员等级电话会员起始日期图3.6会员实体E—R图图3.5用户实体E—R图4.1总体设计经过需求分析阶段的工作,系统必须”做什么”已经清楚了,现在是决定”怎样做”的时候了。总体设计的基本目标就是回答”概括地说,系统应该如何实现”的问题。因此总体设计又称为概要设计。经过这个阶段的工作将划分出组成系统的物理元素—程序、文件、数据库、人工过程和文档等。总体设计的另一项任务是设计软件的结构,也就是要确定系统中的每个程序是由那些模块组成的,以及这些模块相互间的关系。4.2系统功能模块图超市收银系统超市收银系统查询修改商品信息收银进货管理销售管理库存管理前台操作后台数据库营业统计会员信息管理图4.1系统功能模块图
4.3数据库概念设计数据库一般分为三级模式:外模式、模式和内模式。外模式也就是不同用户所正确数据视图,它将数据库内部抽象的数据及其互相之间的关系表示为简单、直观的应用界面。模式是数据库中全部数据的逻辑结构和特征描述,一般以某种数据模型为基础。内模式是对数据的物理结构和存储方式的描述。在该系统中具体的模式有:商品(商品编号,类型编号,商品名称,规格,计量单位,售价,库存量,报警值)用户(用户编号,用户名,密码,权限)入库记录(入库编号,商品编号,供应商编号,联系人,进价,数量)销售记录(商品编号,售价,销售数量,总金额)供应商(供应商编号,供应商名称,联系人,供应商电话,传真,地址,合作时间)会员(会员编号,会员名,会员积分,会员等级,电话,会员起始日期)4.4数据库逻辑结构设计在数据库设计中相当重要的一步就是将概念模型转化为计算机上DBMS所支持的数据模型,例如,将E-R图转化为关系模型,我们设计概念模型基本上都是一些抽象的关系,再在数据库设计的实现过程中,在计算机上有效地表示出这些关系就成了数据库设计的关键。根据超市收银系统的功能要求,选取MySQL作为后台数据库。在上面的实体和实体之间的E-R图设计基础上,形成数据库中的表格及表格之间的关系。该数据库包括系统登录用户的基本信息保存在用户信息表里,其中对于用户编号,经过自增方式实现,无需用户手动编号,编号从1000起始。具体内容如下表所示:
用户信息表包括:用户编号、用户名、密码和用户权限,具体如下:表4.1用户信息表属性名字段名类型长度Null备注编号UserIDInt20否主键姓名UserNamevarchar50否密码UserPasswordvarchar50否权限UserRightvarchar50否会员信息表包括了在该超市申请会员的消费者的信息,会员信息表包括:会员编号、会员名、积分、权限、联系电话和会员起始日期,具体内容如下:表4.2会员信息表属性名字段名类型长度Null备注会员编号VipIdInt20否主键会员姓名VipNamevarchar50否积分VipScorevarchar50否等级VipRankvarchar50否电话VipNumbervarchar50否成为会员时间VipDatavarchar50否销售信息表包括:商品编号、售价、数量、总金额以及备注,具体内容如下:属性名字段名类型长度Null备注商品编号GoodsIdInt20否主键单价SellPricevarchar50否数量GoodsNumvarchar50否总价zongsellvarchar50否备注Remarkvarchar50否销售时间DataTimevarchar50否表4.3销售信息表商品信息表包括:商品编号、商品名称、商品类型、计量单位、规格、售价、库存量、报警值和备注,具体内容如下表:表4.4商品信息表属性名字段名类型长度Null备注商品编号GoodsIdInt20否主键类型号TypeIdvarchar50否商品名称GoodsNamevarchar50否计量单位GoodsUnitvarchar50是规格GoodsNormvarchar50否售价GoodsSellpricevarchar50否库存量GoodsNumvarchar50否报警值AlarmNumvarchar50否备注GoodsRemardkvarchar50是入库记录表包括:入库编号、商品编号、供应商编号、联系人、进价、数量以及备注,具体内容如下:表4.5入库记录表属性名字段名类型长度Null备注入库编号StockIdInt20否主键商品编号GoodsIdvarchar50否外键供应商编号CompanyIdvarchar50否操作员Operatorvarchar50否进价GoodsPricevarchar50否入库时间DataTimevarchar50否数量GoodsNumvarchar50否备注Remarkvarchar50是供应商信息表包括:供应商编号、供应商名称、联系人、电话、传真、地址、合作起始时间,具体内容如下表:表4.6供应商信息表属性名字段名类型长度Null备注供应商编号CompanyIdInt20否主键供应商名称CompanyNamevarchar50否联系人CompanyDirectorvarchar50否电话CompanyPhonevarchar50否传真CompanyFaxvarchar50否地址CompanyAddvarchar50否合作时间HzDataTimevarchar50否
5详细设计详细设计阶段的根本目标是确定应该如何具体地实现所要求的系统,包括用户界面设计、程序过程设计等步骤。也就是说,经过这个阶段的设计工作,应该得出对目标系统的精确描述,从而在编码阶段能够把这个描述直接翻译成某种设计语言书写的程序。详细设计阶段的任务不是具体的编写程序,而是要设计出程序的”蓝图”,以后程序员将根据这个”蓝图”写出实际的程序代码。5.1系统的主要功能该系统采用C/S结构,超市收银系统的主要功能包括:后台管理和前台操作。前台的主要功能是:(1)记录超市前台收银员的收银信息;(2)查询、修改商品信息;后台的主要功能是:(1)记录商品的入库记录;(2)管理商品的库存、价格等具体信息(3)记录商品的销售记录;(4)管理超市会员的会员信息;(5)管理登陆用户的信息。5.2人机界面设计5.2.1一般交互设计一般交互设计涉及信息显示、数据输入和系统整体控制。保持一致性。为客户交互界面中的菜单选择、命令输入、数据显示以及众多的其它功能,使用一致的格式。提供信息的反馈。向用户及时提供视觉和听觉的信息反馈,以保证在用户和系统之间及时地建立双向通信。在本系统设计过程中,基本做到了信息的及时反馈,当用户操作完一步后系统会对数据库中的数据进行及时地显示。执行有较大影响的操作前提示用户确认。在设计过程中,如果用户要执行删除操作,以及对数据库的读写操作时,都会有窗体弹出询问继续操作或者予以提示。减少两次操作间需要记忆的内容。为了避免用户为下一步操作而记忆大量数据,因此在设计过程中在需要数据传递的窗体中设置全局变量,来传递数据。提高对话、移动和思考的效率。尽量减少用户击键的次数,在设计时考虑用户屏幕的布局以减少用户鼠标移动的距离,尽量避免用户在操作中发生疑问的情况。允许犯错误。允许用户的误操作尽量不对系统造成伤害。按功能对动作分类,并据此设计屏幕布局。屏幕布局尽量将软件所具有的所有功能在主页面展示,界面一目了然。5.2.2信息显示设计系统在显示用户所需要的信息时应该尽量完整、清晰和易于理解。这样才能满足用户的需求。使用不同的方式显示信息:用文字、图形、声音,按位置、移动和大小,使用颜色和省略等方式传达信息。只显示与当前工作有关的信息。在用户操作有关系统的特定功能的信息时,不必看到与之无关的数据、菜单和图形。使用便于用户迅速吸收数据的方式来表示数据。使用一致的标记、标准的缩写和可预知的颜色。显示的含义应该非常准确,用户无须参照其它信息源就能理解。产生有意义的错误信息。对于系统在运行过程中产生的错误尽量给用户返回一个容易理解的错误信息,以使用户保持对系统的信任,和系统的可用性。使用窗口分隔不同类型的信息。使用不同的窗口显示、保存不同类型的信息。高效率的使用显示屏。当使用多窗口时,应该有足够的空间使得每个窗口至少都能显示出一部分。5.2.3数据输入设计用户的大部分时间用在选择菜单命令、键入数据和向系统提供输入。在系统中,键盘是主要的输入介质,可是鼠标等设备的也是重要的输入手段,因此,对于她们的数据输入操作有如下约定:尽量减少用户的输入动作。为了方便用户的使用,鼠标应当尽量减少操作的幅度。保持显示信息和输入信息之间的一致性。对于用户来说,要保证其输入的数据在显示上与其它显示的视觉特征(例如:文字大小、颜色、位置等)要一致。允许用户自定义输入。用户可能希望定义自己专用的命令或略去某些类型的警告信息和动作确认,人机界面应该为用户提供这样做的机制。交互应该是灵活的,而且可调整成用户最喜欢的输入方式。用户类型与喜欢的输入方式有关,不同的用户喜欢不同的输入方式。使用当前动作语境中不适用的命令不起作用。这可使得用户不去做那些肯定会导致错误的动作。让用户控制交互流。用户应该能跳过不必要的动作,改变所需做的动作的顺序,以及在不退出程序的情况下从错误状态中恢复正常。消除冗余的输入。除非可能发生误解,否则不要要求用户指定输入数据的单位;尽可能提供默认值,绝对不要要求用户提供程序能够自动获得或计算出来的信息。对于不同类型的用户在登录到系统后,由于有不同的权限,因此在主界面中会有一些项目受到限制而无法使用,因此要使这些项目不发生作用,以保证系统安全。5.3程序设计过程程序过程设计主要是在借助过程设计工具的情况下,对程序的具体实现过程进行设计。程序的主要部分设计在这个环节完成。在这个任务说明书中我们采用盒图的形式来表示程序的具体的设计过程,我们的系统设计为C/S结构,因此是客户端登陆系统的形式,盒图没有箭头,因此不允许随意转移控制,坚持使用盒图能够使程序员养成用用结构化的方式来思考问题。5.3.1登陆界面在用户登录时,在输入用户名和密码及用户类型的前提下将其与数据库中的数据进行比对,若一致,则打开主窗体;若不一致提示错误,并要求重新输入。注册后保存用户信息,登陆界面的的程序盒图如图5.1所示://登陆界面的程序代码privatevoidbutton1_Click(objectsender,EventArgse){stringMyConnectionString="Server=localhost;Database=chaoshi;Uid=root;Pwd=123456;PersistSecurityInfo=True;Charset=utf8;";stringusername=tbxUsr.Text.Trim();stringpasswd=tbxPwr.Text.Trim();stringrol=comboBox1.Text.Trim();stringloginsql="SELECT*FROMuserWhereUserID='"+username+"'andUserPassword='"+passwd+"'andUserRight='"+rol+"'";MySqlConnectionconnection=newMySqlConnection(MyConnectionString);connection.Open();MySqlCommandmycmd=newMySqlCommand(loginsql,connection);MySqlDataReadermyread=mycmd.ExecuteReader();try{if(myread.HasRows){if(myread.Read()){//MessageBox.Show("登录成功");if(myread["UserID"].ToString()==tbxUsr.Text&&myread["UserPassword"].ToString()==tbxPwr.Text&&myread["UserRight"].ToString()=="管理员"){user=username;Form8f3;f3=newForm8();f3.Show();}elseif(myread["UserID"].ToString()==tbxUsr.Text&&myread["UserPassword"].ToString()==tbxPwr.Text&&myread["UserRight"].ToString()=="员工"){user=username;Form2f2;f2=newForm2();f2.Show();}}}else{MessageBox.Show("Pleaseenterthecorrectusernameandpassword!!!");}}catch(Exceptionex){MessageBox.Show(string.Format("出错,出错原因{0}"),ex.Message);}finally{connection.Close();connection.Dispose();mycmd.Dispose();}}privatevoidbutton2_Click(objectsender,EventArgse){this.Close();}privatevoidtextBox1_TextChanged(objectsender,EventArgse){}privatevoidForm1_Load(objectsender,EventArgse){}}}
连接数据库连接数据库否是用户名和密码输入否是用户名和密码输入提示输入否是账户是否存在提示输入否是账户是否存在提示错误提示错误显示提示框显示提示框”登录成功”图5.1登陆界面程序盒图图5.1登陆界面程序盒图5.3.2后台管理操作对于系统的各项信息的管理属于后台管理,管理程序盒图如图5.2所示:privatevoidbutton2_Click_1(objectsender,EventArgse){stringspbh=textBox2.Text.Trim();stringlx=textBox3.Text.Trim();stringmc=textBox4.Text.Trim();stringjldw=textBox5.Text.Trim();stringgg=textBox6.Text.Trim();stringsj=textBox7.Text.Trim();stringkcl=textBox9.Text.Trim();stringbjz=textBox10.Text.Trim();stringbz=textBox11.Text.Trim();MySqlParameter[]sp=newMySqlParameter[9];sp[0]=newMySqlParameter("@spbh",MySqlDbType.VarChar);sp[0].Value=spbh;sp[1]=newMySqlParameter("@lx",MySqlDbType.VarChar);sp[1].Value=lx;sp[2]=newMySqlParameter("@mc",MySqlDbType.VarChar);sp[2].Value=mc;sp[3]=newMySqlParameter("@jldw",MySqlDbType.VarChar);sp[3].Value=jldw;sp[4]=newMySqlParameter("@gg",MySqlDbType.VarChar);sp[4].Value=gg;sp[5]=newMySqlParameter("@sj",MySqlDbType.VarChar);sp[5].Value=sj;sp[6]=newMySqlParameter("@kcl",MySqlDbType.VarChar);sp[6].Value=kcl;sp[7]=newMySqlParameter("@bjz",MySqlDbType.VarChar);sp[7].Value=bjz;sp[8]=newMySqlParameter("@bz",MySqlDbType.VarChar);sp[8].Value=bz;using(MySqlConnectionconnection=newMySqlConnection(MyConnectionString)){try{connection.Open();stringsql="updategoodsinfosetGoodsId=@spbh,TypeId=@lx,GoodsName=@mc,GoodsUnit=@jldw,GoodsNorm=@gg,GoodsSellprice=@sj,GoodsNum=@kcl,AlarmNum=@bjz,GoodsRemardk=@bzwhereGoodsId=@spbh";MySqlCommandcmd=newMySqlCommand();cmd.Connection=connection;cmd.CommandText=sql;cmd.CommandType=CommandType.Text;cmd.Parameters.AddRange(sp);cmd.ExecuteNonQuery();MessageBox.Show("修改成功");}catch(Exceptionex){MessageBox.Show(string.Format("出错,出错原因{0}"),ex.Message);}}}privatevoidbutton4_Click(objectsender,EventArgse){stringGoodsId=textBox2.Text.Trim();stringTypeId=textBox3.Text.Trim();stringGoodsName=textBox4.Text.Trim();stringGoodsUnit=textBox5.Text.Trim();stringGoodsNorm=textBox6.Text.Trim();stringGoodsSellprice=textBox7.Text.Trim();stringGoodsNum=textBox9.Text.Trim();stringAlarmNum=textBox10.Text.Trim();stringGoodsRemardk=textBox11.Text.Trim();MySqlParameter[]sp=newMySqlParameter[9];sp[0]=newMySqlParameter("@ab",MySqlDbType.VarChar);sp[0].Value=GoodsId;sp[1]=newMySqlParameter("@ac",MySqlDbType.VarChar);sp[1].Value=TypeId;sp[2]=newMySqlParameter("@ad",MySqlDbType.VarChar);sp[2].Value=GoodsName;sp[3]=newMySqlParameter("@ae",MySqlDbType.VarChar);sp[3].Value=GoodsUnit;sp[4]=newMySqlParameter("@aa",MySqlDbType.VarChar);sp[4].Value=GoodsNorm;sp[5]=newMySqlParameter("@bb",MySqlDbType.VarChar);sp[5].Value=GoodsSellprice;sp[6]=newMySqlParameter("@vv",MySqlDbType.VarChar);sp[6].Value=GoodsNum;sp[7]=newMySqlParameter("@dd",MySqlDbType.VarChar);sp[7].Value=AlarmNum;sp[8]=newMySqlParameter("@gg",MySqlDbType.VarChar);sp[8].Value=GoodsRemardk;using(MySqlConnectionconnection=newMySqlConnection(MyConnectionString)){try{connection.Open();stringsql="insertintogoodsinfo(GoodsId,TypeId,GoodsName,GoodsUnit,GoodsNorm,GoodsSellprice,GoodsNum,AlarmNum,GoodsRemardk)values(@ab,@ac,@ad,@ae,@aa,@bb,@vv,@dd,@gg)";MySqlCommandcmd=newMySqlCommand();cmd.Connection=connection;cmd.CommandText=sql;cmd.CommandType=CommandType.Text;cmd.Parameters.AddRange(sp);cmd.ExecuteNonQuery();MessageBox.Show("增加成功");}catch(Exceptionex){MessageBox.Show(ex.ToString());}}}privatevoidbutton5_Click(objectsender,EventArgse){stringGoodsId;GoodsId=textBox2.Text.Trim();MySqlParameter[]sp=newMySqlParameter[1];sp[0]=newMySqlParameter("@aaa",MySqlDbType.VarChar);sp[0].Value=GoodsId;using(MySqlConnectionconnection=newMySqlConnection(MyConnectionString)){try{connection.Open();stringsql="deletefromgoodsinfowhereGoodsId=@aaa";MySqlCommandcmd=newMySqlCommand();cmd.Connection=connection;cmd.CommandText=sql;cmd.CommandType=CommandType.Text;cmd.Parameters.AddRange(sp);cmd.ExecuteNonQuery();MessageBox.Show("删除成功");}catch(Exceptionex){MessageBox.Show(string.Format("出错,出错原因{0}"),ex.Message);}}}否否是是否进行操作图5.2后台管理操作程序盒图重新操作保存信息是操作是否成功否否是否选中数据进行操作是管理后台信息
6软件测试测试是为了发现程序中的错误而执行的程序。好的测试方案是极有可能发现迄今为止尚未发现的错误的测试方案,成功的测试是发现了至今为止尚未发现的错误的测试。为了能设计出有效的测试方案,软件工程师必须深入理解并正确运用软件测试的基本准则:所有测试都应该能追溯到用户需求。从用户角度看,最严重的错误是导致程序不能满足用户需求的哪些错误。应该预案在测试开始之前就制定出测试计划。实际上,一旦完成了需求模型就能够着手制定测试计划,在建立了设计模型之后就能够立即开始详细设计的测试方案。把pareto原理应用到软件测试中。Pareto原理说明,测试发现的错误当中的80%很可能是由程序中20%的模块造成的。完全测试是不可能的,测试需要终止。测试无法显示软件潜在的缺陷,”测试只能证明软件存在错误而不能证明软件没有错误”。最初的测试一般把焦点放在单个程序模块上,进一步测试的焦点则转向在集成的模块簇中寻找错误,最后在整个系统中寻找错误。在测试中不可能运行路径的每一种组合。然而,充分覆盖程序逻辑,并确保程序设计中使用的所有条件是有可能的。应由独立的第三方来构造测试。第三方测试最大的特点在于它的专业性、独立性、客观性和公正性。对于软件开发商来说,经过第三方测试机构的测试,不但能够经过专业化的测试手段发现软件错误,帮助开发商提升软件的品质,而且能够对软件有一个客观、科学的评价,有助于开发商认清自己产品的定位。对于行业主管部门以及软件使用者来说,由于第三方测试机构独立公正的地位,能够对被测试的软件有一个客观公正的评价,帮助用户选择合适、优秀的软件产品。充分注意测试中的群集现象。测试后程序残存的错误数目与该程序中已发现的错误数目或检错率成正比。不要在某个程序段中找到几个错误就误认为该程序段就没有错误而不再测试,相反应该对错误群集的程序段进行重点测试。6.1系统测试6.1.1单元测试单元测试是指对软件中的最小可测试单元进行检查和验证。对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单元指一个函数,Java里单元指一个类,图形化的软件中能够指一个窗口或一个菜单等。总的来说,单元就是人为规定的最小的被测功能模块。单元测试主要使用白盒测试技术,而且对多个模块的测试能够并行地进行。6.1.2集成测试集成测试是测试和组装软件的系统化技术,主要目标是发现与接口有关的问题。由模块组装成程序时有两种办法。一种方法是先分别测试每个模块,再把所有模块按设计要求放在一起结合成所要的程序,这种方法称为非渐增式测试方法;另一种方法是把下一个要测试的模块同已经测试好的那些模块结合起来进行测试,测试完以后再把下一个应该测试的模块结合起来进行测试。集成测试包括自顶向下集成和自底向上集成两种方法,自顶向下集成是从主控制模块开始,沿着程序的控制层次向下移动,逐步把各个模块结合起来。在把附属于(及最终附属于)主控制模块的那些模块组装到程序结构中去时,或者使用深度优先的策略,或者使用宽度优先的策略。自底向上集成从”原子”模块(即在软件结构最底层的模块)开始组装和测试。因为是从底部向上结合模块,总能得到所需的下层模块处理功能,因此不需要存根程序。6.2测试步骤在整个系统测试过程中,按以下4个步骤进行,即模块测试、联合测试、确认测试和系统测试。1.模块测试。主要是针对程序模块进行正确性检验的测试。单元测试的内容有:模块接口测试即对经过被测模块的数据流进行测试;局部数据结构测试,即设计测试用例检查数据类型说明、初始化、缺省值等方面的问题,还要查清全程数据对模块的影响;路径测试,即选择适当的测试用例,对模块中重要的执行路径进行测试,对基本执行路径和循环进行测试能够发现大量的路径错误;错误处理测试即检查模块的错误处理功能是否包含有错误或缺陷;边界测试,即要特别注意数据流、控制流中刚好等于、大于或小于确定的比较值时出错的可能性。这部分的测试能够发现详细设计和编程时犯下的错误,如某个变量未赋值、数组的上下界不对等。2.联合测试。在模块测试的基础上,需要将所有模块按照设计要求组装成为系统,然后按业务流程对集成的系统进行测试。可先一个模块一个模块的增加测试,直到集成为一个系统。这个测试过程能够发现概要设计时犯的错误。3.确认测试。又称为有效性测试,它的任务是验证软件的有效性,即验证软件的功能、性能及其它特性是否与用户的要求一致。这个测试过程最好由用户参与测试。4.系统测试。将经过确认测试的软件,在用户的实际环境(硬件环境、软件环境、数据、人员等)进行联合测试和确认测试。6.3测试数据的常见技术6.3.1白盒测试技术白盒测试技术主要包括逻辑覆盖和控制结构测试。所谓逻辑覆盖是对一系列测试的总称,这组测试过程逐渐进行越来越完整的通路测试。测试数据执行(或叫覆盖)程序逻辑的程度能够划分为以下不同覆盖标准:(1)语句覆盖。为了暴露程序中的错误,至少每个语句应该执行一次。语句覆盖的含义是,选择足够多的测试数据,使被测程序中的每个语句至少执行一次。(2)判定覆盖。又称分支覆盖,它的含义是,不但每个语句必须执行一次,而且每个判定的每种可能的结果都应该至少执行一次,也就是每个判定的每个分支都至少执行一次。(3)条件覆盖。条件覆盖的含义是,不但每个语句至少执行一次,而且是判定表示式中的每个条件都取到各种可能的结果。(4)判定/条件覆盖。它的含义是,选取足够多的测试数据,使得判定表示式中的每个条件都取到各种可能的值。(5)条件组合覆盖。它要求选取足够多的测试数据,使得每个判定表示式中条件的各种可能组合都至少出现一次。(6)路径覆盖。它的含义是,选取足够多的测试数据,使程序的每条可能路径至少执行一次。所谓
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业管理服务咨询服务简单合同
- 冲孔灌注桩施工劳务分包合同
- 三方合同补充协议书
- 资产买卖合同
- 给水、污水泵设备安装合同
- 地毯购销合同范本地毯购销合同
- 在线教育系统共建共享合同
- 产品销售合同范本集锦
- 医疗器械销售合同简易模板
- 社区团购平台搭建及运营合同
- 2024年潍坊工程职业学院单招职业适应性测试题库完美版
- GB/T 44823-2024绿色矿山评价通则
- 人教版英语高考试卷与参考答案(2024年)
- 红楼梦服饰文化
- 浙江省中小学心理健康教育课程标准
- 《共情的力量》课件
- 2022年中国电信维护岗位认证动力专业考试题库大全-上(单选、多选题)
- 水平二(四年级第一学期)体育《小足球(18课时)》大单元教学计划
- 《关于时间管理》课件
- 医药高等数学智慧树知到课后章节答案2023年下浙江中医药大学
- 城市道路智慧路灯项目 投标方案(技术标)
评论
0/150
提交评论