《超市收银系统设计说明书(共38页).doc》由会员分享,可在线阅读,更多相关《超市收银系统设计说明书(共38页).doc(38页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上目 录摘 要随着经济的发展,人们的生活越来越好。日常用品的种类越来越多,超市的规模也越来越大,超市收银员的工作量也越来越大。为了适应超市规模的不断变化,减轻收银员的工作负担,根据超市的实际需要设计了一个具有开放体系结构的、易扩充的、易维护的、具有良好人机交互界面的超市收银系统,为超市的决策者和管理者提供超市的各种数据信息、方便的查询和高效便捷的管理。该超市收银系统包括前台操作和后台数据库,后台数据库包括入库记录、销售记录、商品信息、用户信息和会员信息,前台操作是收银、查询和修改商品信息。该系统采用C#实现,系统开发工具是VS2013。关键词:C#;VS2013;数据库
2、;超市收银专心-专注-专业1 可行性分析1.1问题描述本次课程设计实训要求在计算机网络,数据库和先进的开发平台上,利用现有的软件,配置一定的硬件,分析和设计一个具有开放体系结构的、易扩充的、易维护的、具有良好人机交互界面的超市收银系统,为超市的决策者和管理者提供充足的信息、快捷的查询和有效的管理方式,减少不必要的损失和浪费,提高超市管理的效率。1.2可行性研究的主要内容可行性研究的目的,就是用最小的代价在尽可能短的时间内确定问题是否能够解决。可行性研究实质上是要进行一次大大压缩简化了的系统分析和设计过程,也就是在较高层系上以较抽象的方式进行的系统分析和设计过程。在进行可行性研究时首先要进一步分
3、析和澄清问题定义。在问题定义阶段初步确定系统的规模和目标,如果正确就进一步加以肯定,如果有错误就应该及时改正,如果对目标约束和限制,必须把他们一一列出来。从系统逻辑模型出发,探索若干种可供选择的主要解法(即系统实现方案)。对于每种解法都应该仔细研究它的可行性,一般来说,至少应该从下述三个方面研究每种解法的可行性。1.2.1技术可行性技术可行性主要分析研究在现有技术条件的基础上是否能够实现该系统。目前电脑在中国已经得到普及,使用电脑的人数在快速增长。从事软件设计的人员的技术能力有了很大提高,可以实现该系统。1.2.2经济可行性经济可行性主要研究该系统的经济效益能否超过它的开发成本。目前在中国,到
4、超市进行购物的人流量是非常庞大的,由于超市提供的商品种类繁多,且大多是人们的日常必需品,所以人们对超市的依赖性非常强。在这样的背景下,为超市设计这样的一个系统,其经济效益是十分可观的。又由于通过网络传递销售信息可以不受距离的限制,因此可以节省大量的人力和物力,方便管理,由此可以减少不必要的开支,同时该系统可以提高超市的销售效率,即提高了超市的经济效益,所以从经济上完全是可行的。1.2.3操作可行性操作可行性主要研究系统的操作方式在该用户组织内是否可行。在当前的社会条件下,Internet网已经在中国全面覆盖,在中国各地,均可以通过硬件设备联网。而且各商业组织也拥有属于自己的内部局域网,所以该系
5、统可以实现联网。该系统在联网情况下,可以通过PC机访问系统的数据。所以该系统的操作方式符合该用户组织。1.3结论意见经过认真地研究,该系统完成了在技术可行性、经济可行性、操作可行性方面的可行性研究,该系统可以开发实现。因此,相信全系统的设计将会按时、高质量完成。所以,系统的设计开发是可以马上进行的。2项目开发计划2.1编写目的经过项目的可行性分析,得出项目可进一步进行下去的结论,在软件继续进一步的开发之前首先给出此软件项目计划。 2.2项目背景项目分析单位在接到项目分析员给出的项目可行性分析报告后,在本系统,即超市收银系统开发主管部门的统一规划下制定用于软件实质开发的软件项目计划,以使软件开发
6、单位理解软件开发要求,进行开发。 2.3项目概述超市收银系统主要功能包括:后台管理和前台操作,其中:后台管理主要包括:进货管理、销售管理、库存管理、相关业务的查询和系统维护等;进货管理:在数据库中存储有各种商品的供应商信息,当需要进货时,可以与供应商联系,同时数据库中会存储各种商品的每一次进货信息,并保持数据的时效性和完整性。销售管理主要包括:随时录入卖出商品信息,如名称,数量,单价等,及时更新数据库数据。 货架上商品卖到一定数量时,实时生成提货报告,并提供商品的库存信息,剩余信息。库存管理主要包括:生成库存报告、生成缺货报告、录入更新数据。在需要时(可每隔一个时间段查询一次) 生成商品库存情
7、况报告,实时报告商品库存情况,如库存量不足(小于某一自定的数量) 时,可生成缺货报告,并提供商品种类,来源等商品属性信息,方便采购人员进行商品采购。采购员采购商品后,及时录入商品信息等数据,在数据库中进行数据更新。前台操作主要包括:前台收银员权限严格控制,支持断网销售、连网销售两种模式,预留对条码扫描、票据打印机、顾显、钱箱、磁卡刷卡机、IC卡读写器、条码打印机、盘点机等POS外设的支持,可直接修改销售数量、单价、折扣等(权限控制),支持赠送(权限控制),会员卡、储值卡消费,收款抹零(权限控制),挂单/取单,前台查询商品、库存,删单、删行、查单(权限控制),特殊操作记录(防止前台作弊),支持电
8、子称散装商品销售,前台支持业务员录入计提,商品促销销售(按时间段),会员价、储值卡价销售,支持无库存商品销售,销售小票格式自定义(标题、脚注、明细格式等)。2.4项目开发计划1任务分解分三个大的阶段进行开发第一阶段完成本系统的数据流图跟E-R图。第二阶段完成概要设计跟详细设计。第三阶段书写文档。2关键问题各模块之间的联系和后台数据库的完成。使用目前的设备与现有开发技术完全可以开发出该系统,总的来说该项目没有较大的技术难点与其他的一些风险因素。对于出现的一些小难点总都能得到解决。2.5交付期限本系统的开发时限为两个星期,该系统的交付期限为2015年7月3日。3需求分析3.1任务需求分析前台操作包
9、括:商品录入:根据超巿业务特点制定相关功能,可以通过输入唯一编号、扫描条形码、商品名称等来实现精确的商品扫描录入。该扫描录入方法可以充分保证各种电脑操作水平层次的人员均能准确快速地进行商品扫描录入。收银业务:通过扫描条形码或者直接输入商品名称(对于同类多件商品采用一次录入加数量的方式)自动计算本次交易的总金额。在顾客付款后,自动计算找零,同时打印交易清单(包括交易的流水账号、每类商品的商品名、数量、该类商品的总金额、交易的时间、负责本次收银的员工号)。如果顾客是本店会员并持有本人会员卡,则在交易前先扫描会员卡,并对所购物品全部实行95折优惠,并将所购物品的总金额累计到该会员的总消费金额中。 会
10、员卡的有效期限为一年,满一年未续卡者,该会员卡将被注销。后台管理操作:进货管理: 根据销售情况及库存情况,自动制定进货计划(亦可手工制定修改),可以避免盲目进货造成商品积压。 按计划单有选择性地进行自动入库登记。 综合查询打印计划进货与入库记录及金额。销售管理: 商品正常销售、促销与限量、限期及禁止销售控制。 综合查询各种销售明细记录、各地收银员收银记录以及交结账情况等。 按多种方式统计生成销售排行榜,灵活察看和打印商品销售日、月、年报表。库存管理: 综合查询库存明细记录。 库存状态自动告警提示。如库存过剩、少货、缺货等。软件为您预警,避免库存商品积压损失和缺货。 库存自动盘点计算。人员管理:
11、员工、会员、供货商、厂商等基本信息登记管理。员工操作权限权利、客户销售权限管理。3.2系统流程图商品库存程序收银员收银商品销售程序进货报告生成程序商品库存信息文件进货报告输入购物信息显示销售信息显示订货信息图3.1系统流程图3.3系统构架图收银POS机查询数据/员工管理PC机打印机称装电子秤管理商品信息 PC机SQl Server服务器进货PC机超市前台管理者SQl Server服务器进货PC机图3.2系统构架图超市工作人员前台收银员管理部门进货部门数据库服务器进货PC机3.4数据流图、数据字典及实体联系图3.4.1数据流图产生销售记录产生进货单仓库管理员收银员更新库存信息进货员前台经理更新商
12、品信息D1 商品信息表D3 销售记录销售信息销售信息销售信息事务库存信息进货信息D2 进货信息进货单图3.3数据流图商品信息商品信息事务D4 商品信息表3.4.2数据字典 数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合。数据字典的作用是在软件分析和设计的过程中给人提供关于数据的描述信息。名称:销售清单别名:销售报表描述:对超市商品销售情况的描述定义:货物编号+名称+销售日期+数量+售价位置:输出到打印机 保存到磁盘名称:商品信息别名:商品单描述:超市销售商品的信息定义:商品编号+类型编号+商品名称+库存量+售价+报警值+商品规格+计量单位位置:输出到打印机 保存到
13、磁盘名称:用户信息别名:描述:该系统的使用者的信息定义:用户编号+姓名+密码+权限位置:输出到打印机 保存到磁盘名称:入库记录别名:进货报表描述:每次进货的货物描述定义:入库编号+货物编号+供应商编号+操作员+进价+数量位置:输出到打印机 保存到磁盘名称:会员信息信息表别名:商品编号描述:该超市所属会员的信息定义:会员编号+会员名+会员积分+会员等级+会员电话+会员起始日期位置:输出到打印机 保存到磁盘名称:供应商信息别名:供应商描述:和超市合作的供应商的信息定义:供应商编号+名称+联系人+地址+联系电话+传真+合作起始时间位置:输出到打印机 保存到磁盘3.4.3实体联系E-R图入库记录销售记
14、录供应商商品编号商品名称库存量计量单位报警值商品规格类别编号名称电话联系人供应地址商品名称数量售价总金额进价商品名称商品数量供应商编号进货销售供应商编号合作时间传真入库编号商品编号售价11111图3.4部分实体联系(E-R)图nn商品用户用户用户编号密码用户名权限会员用户会员编号会员名会员积分会员等级 电话会员起始日期图3.6会员实体ER图图3.5用户实体ER图4系统概要设计4.1总体设计经过需求分析阶段的工作,系统必须“做什么”已经清楚了,现在是决定“怎样做”的时候了。总体设计的基本目标就是回答“概括地说,系统应该如何实现”的问题。所以总体设计又称为概要设计。通过这个阶段的工作将划分出组成系
15、统的物理元素程序、文件、数据库、人工过程和文档等。总体设计的另一项任务是设计软件的结构,也就是要确定系统中的每个程序是由那些模块组成的,以及这些模块相互间的关系。4.2系统功能模块图超市收银系统查询修改商品信息收银进货管理销售管理库存管理前台操作后台数据库营业统计会员信息管理 图4.1系统功能模块图 4.3数据库概念设计 数据库一般分为三级模式:外模式、模式和内模式。外模式也就是不同用户所对的数据视图,它将数据库内部抽象的数据及其互相之间的关系表示为简单、直观的应用界面。模式是数据库中全部数据的逻辑结构和特征描述,通常以某种数据模型为基础。内模式是对数据的物理结构和存储方式的描述。在该系统中具
16、体的模式有:商品(商品编号,类型编号,商品名称,规格,计量单位,售价,库存量,报警值)用户(用户编号,用户名,密码,权限)入库记录(入库编号,商品编号,供应商编号,联系人,进价,数量)销售记录(商品编号,售价,销售数量,总金额)供应商(供应商编号,供应商名称,联系人,供应商电话,传真,地址,合作时间)会员(会员编号,会员名,会员积分,会员等级,电话,会员起始日期)4.4数据库逻辑结构设计在数据库设计中相当重要的一步就是将概念模型转化为计算机上DBMS所支持的数据模型,例如,将E-R图转化为关系模型,我们设计概念模型基本上都是一些抽象的关系,再在数据库设计的实现过程中,在计算机上有效地表示出这些
17、关系就成了数据库设计的关键。根据超市收银系统的功能要求,选取MySQL作为后台数据库。在上面的实体和实体之间的E-R图设计基础上,形成数据库中的表格及表格之间的关系。该数据库包括系统登录用户的基本信息保存在用户信息表里,其中对于用户编号,通过自增方式实现,无需用户手动编号,编号从1000起始。具体内容如下表所示:用户信息表包括:用户编号、用户名、密码和用户权限,具体如下: 表4.1用户信息表属性名 字段名类型长度Null备注编号UserIDInt20否主键姓名UserNamevarchar50否密码UserPasswordvarchar50否权限UserRightvarchar50否 会员信息
18、表包括了在该超市申请会员的消费者的信息,会员信息表包括:会员编号、会员名、积分、权限、联系电话和会员起始日期,具体内容如下: 表4.2会员信息表属性名字段名类型长度Null备注会员编号VipIdInt20否主键会员姓名VipNamevarchar50否积分VipScorevarchar50否等级VipRankvarchar50否电话VipNumbervarchar50否成为会员时间VipDatavarchar50否销售信息表包括:商品编号、售价、数量、总金额以及备注,具体内容如下:属性名字段名类型长度Null备注商品编号GoodsIdInt20否主键单价SellPricevarchar50否数
19、量GoodsNumvarchar50否总价zongsellvarchar50否备注Remarkvarchar50否销售时间DataTimevarchar50否 表4.3销售信息表商品信息表包括:商品编号、商品名称、商品类型、计量单位、规格、售价、库存 量、报警值和备注,具体内容如下表: 表4.4商品信息表 属性名字段名类型长度Null备注商品编号GoodsIdInt20否主键类型号TypeIdvarchar50否商品名称GoodsNamevarchar50否计量单位GoodsUnitvarchar50是规格GoodsNormvarchar50否售价GoodsSellpricevarchar50
20、否库存量GoodsNumvarchar50否报警值AlarmNumvarchar50否备注GoodsRemardkvarchar50是入库记录表包括:入库编号、商品编号、供应商编号、联系人、进价、数量以及备注,具体内容如下: 表4.5入库记录表属性名字段名类型长度Null备注入库编号StockIdInt20否主键商品编号GoodsIdvarchar50否外键供应商编号CompanyIdvarchar50否操作员Operatorvarchar50否进价GoodsPricevarchar50否入库时间DataTimevarchar50否数量GoodsNumvarchar50否备注Remarkvar
21、char50是 供应商信息表包括:供应商编号、供应商名称、联系人、电话、传真、地址、合作起始时间,具体内容如下表:表4.6供应商信息表属性名字段名类型长度Null备注供应商编号CompanyIdInt20否主键供应商名称CompanyNamevarchar50否联系人CompanyDirectorvarchar50否电话CompanyPhonevarchar50否传真CompanyFaxvarchar50否地址CompanyAddvarchar50否合作时间HzDataTimevarchar50否5详细设计详细设计阶段的根本目标是确定应该如何具体地实现所要求的系统,包括用户界面设计、程序过程设
22、计等步骤。也就是说,经过这个阶段的设计工作,应该得出对目标系统的精确描述,从而在编码阶段可以把这个描述直接翻译成某种设计语言书写的程序。详细设计阶段的任务不是具体的编写程序,而是要设计出程序的“蓝图”,以后程序员将根据这个“蓝图”写出实际的程序代码。5.1系统的主要功能该系统采用C/S结构,超市收银系统的主要功能包括:后台管理和前台操作。前台的主要功能是:(1)记录超市前台收银员的收银信息;(2)查询、修改商品信息;后台的主要功能是:(1)记录商品的入库记录;(2)管理商品的库存、价格等具体信息(3)记录商品的销售记录;(4)管理超市会员的会员信息;(5)管理登陆用户的信息。5.2人机界面设计
23、5.2.1一般交互设计一般交互设计涉及信息显示、数据输入和系统整体控制。(1) 保持一致性。为客户交互界面中的菜单选择、命令输入、数据显示以及众多的其他功能,使用一致的格式。(2) 提供信息的反馈。向用户及时提供视觉和听觉的信息反馈,以保证在用户和系统之间及时地建立双向通信。在本系统设计过程中,基本做到了信息的及时反馈,当用户操作完一步后系统会对数据库中的数据进行及时地显示。(3) 执行有较大影响的操作前提示用户确认。在设计过程中,如果用户要执行删除操作,以及对数据库的读写操作时,都会有窗体弹出询问继续操作或者予以提示。(4) 减少两次操作间需要记忆的内容。为了避免用户为下一步操作而记忆大量数
24、据,所以在设计过程中在需要数据传递的窗体中设置全局变量,来传递数据。(5) 提高对话、移动和思考的效率。尽量减少用户击键的次数,在设计时考虑用户屏幕的布局以减少用户鼠标移动的距离,尽量避免用户在操作中发生疑问的情况。(6) 允许犯错误。允许用户的误操作尽量不对系统造成伤害。(7) 按功能对动作分类,并据此设计屏幕布局。屏幕布局尽量将软件所具有的所有功能在主页面展示,界面一目了然。5.2.2信息显示设计系统在显示用户所需要的信息时应该尽量完整、清晰和易于理解。这样才能满足用户的需求。使用不同的方式显示信息:用文字、图形、声音,按位置、移动和大小,使用颜色和省略等方式传达信息。(1) 只显示与当前
25、工作有关的信息。在用户操作有关系统的特定功能的信息时,不必看到与之无关的数据、菜单和图形。(2) 使用便于用户迅速吸收数据的方式来表示数据。(3) 使用一致的标记、标准的缩写和可预知的颜色。显示的含义应该非常准确,用户无须参照其他信息源就能理解。(4) 产生有意义的错误信息。对于系统在运行过程中产生的错误尽量给用户返回一个容易理解的错误信息,以使用户保持对系统的信任,和系统的可用性。(5) 使用窗口分隔不同类型的信息。使用不同的窗口显示、保存不同类型的信息。(6) 高效率的使用显示屏。当使用多窗口时,应该有足够的空间使得每个窗口至少都能显示出一部分。5.2.3数据输入设计用户的大部分时间用在选
26、择菜单命令、键入数据和向系统提供输入。在系统中,键盘是主要的输入介质,但是鼠标等设备的也是重要的输入手段,所以,对于他们的数据输入操作有如下约定:(1) 尽量减少用户的输入动作。为了方便用户的使用,鼠标应当尽量减少操作的幅度。(2) 保持显示信息和输入信息之间的一致性。对于用户来说,要保证其输入的数据在显示上与其他显示的视觉特征(例如:文字大小、颜色、位置等)要一致。(3) 允许用户自定义输入。用户可能希望定义自己专用的命令或略去某些类型的警告信息和动作确认,人机界面应该为用户提供这样做的机制。(4) 交互应该是灵活的,并且可调整成用户最喜欢的输入方式。用户类型与喜欢的输入方式有关,不同的用户
27、喜欢不同的输入方式。(5) 使用当前动作语境中不适用的命令不起作用。这可使得用户不去做那些肯定会导致错误的动作。(6) 让用户控制交互流。用户应该能跳过不必要的动作,改变所需做的动作的顺序,以及在不退出程序的情况下从错误状态中恢复正常。(7) 消除冗余的输入。除非可能发生误解,否则不要要求用户指定输入数据的单位;尽可能提供默认值,绝对不要要求用户提供程序可以自动获得或计算出来的信息。对于不同类型的用户在登录到系统后,由于有不同的权限,所以在主界面中会有一些项目受到限制而无法使用,所以要使这些项目不发生作用,以保证系统安全。5.3程序设计过程程序过程设计主要是在借助过程设计工具的情况下,对程序的
28、具体实现过程进行设计。程序的主要部分设计在这个环节完成。在这个任务说明书中我们采用盒图的形式来表达程序的具体的设计过程,我们的系统设计为C/S结构,所以是客户端登陆系统的形式,盒图没有箭头,所以不允许随意转移控制,坚持使用盒图可以使程序员养成用用结构化的方式来思考问题。5.3.1登陆界面在用户登录时,在输入用户名和密码及用户类型的前提下将其与数据库中的数据进行比对,若一致,则打开主窗体;若不一致提示错误,并要求重新输入。注册后保存用户信息,登陆界面的的程序盒图如图5.1所示:/登陆界面的程序代码 private void button1_Click(object sender, EventAr
29、gs e) string MyConnectionString = Server=localhost; Database=chaoshi; Uid=root; Pwd=; Persist Security Info=True;Charset=utf8; string username = tbxUsr.Text.Trim(); string passwd = tbxPwr.Text.Trim(); string rol = comboBox1.Text.Trim(); string loginsql = SELECT * FROM user Where UserID= + username +
30、 and UserPassword= + passwd + and UserRight= + rol + ; MySqlConnection connection = new MySqlConnection(MyConnectionString); connection.Open(); MySqlCommand mycmd = new MySqlCommand(loginsql, connection); MySqlDataReader myread = mycmd.ExecuteReader(); try if (myread.HasRows) if (myread.Read() /Mess
31、ageBox.Show(登录成功); if (myreadUserID.ToString() = tbxUsr.Text & myreadUserPassword.ToString() = tbxPwr.Text & myreadUserRight.ToString() = 管理员) user = username; Form8 f3; f3 = new Form8(); f3.Show(); else if (myreadUserID.ToString() = tbxUsr.Text & myreadUserPassword.ToString() = tbxPwr.Text & myread
32、UserRight.ToString() = 员工) user = username; Form2 f2; f2 = new Form2(); f2.Show(); else MessageBox.Show(Please enter the correct user name and password!); catch (Exception ex) MessageBox.Show(string.Format(出错,出错原因0), ex.Message); finally connection.Close(); connection.Dispose(); mycmd.Dispose(); pri
33、vate void button2_Click(object sender, EventArgs e) this.Close(); private void textBox1_TextChanged(object sender, EventArgs e) private void Form1_Load(object sender, EventArgs e) 连接数据库否是用户名和密码输入提示输入否是账户是否存在提示错误显示提示框“登录成功”图5.1登陆界面程序盒图5.3.2后台管理操作对于系统的各项信息的管理属于后台管理,管理程序盒图如图5.2所示: private void button2_
34、Click_1(object sender, EventArgs e) string spbh = textBox2.Text.Trim(); string lx = textBox3.Text.Trim(); string mc = textBox4.Text.Trim(); string jldw = textBox5.Text.Trim(); string gg = textBox6.Text.Trim(); string sj = textBox7.Text.Trim(); string kcl = textBox9.Text.Trim(); string bjz = textBox1
35、0.Text.Trim(); string bz = textBox11.Text.Trim(); MySqlParameter sp = new MySqlParameter9; sp0 = new MySqlParameter(spbh, MySqlDbType.VarChar); sp0.Value = spbh; sp1 = new MySqlParameter(lx, MySqlDbType.VarChar); sp1.Value = lx; sp2 = new MySqlParameter(mc, MySqlDbType.VarChar); sp2.Value = mc; sp3
36、= new MySqlParameter(jldw, MySqlDbType.VarChar); sp3.Value = jldw; sp4 = new MySqlParameter(gg, MySqlDbType.VarChar); sp4.Value = gg; sp5 = new MySqlParameter(sj, MySqlDbType.VarChar); sp5.Value = sj; sp6 = new MySqlParameter(kcl, MySqlDbType.VarChar); sp6.Value = kcl; sp7 = new MySqlParameter(bjz,
37、MySqlDbType.VarChar); sp7.Value = bjz; sp8 = new MySqlParameter(bz, MySqlDbType.VarChar); sp8.Value = bz; using (MySqlConnection connection = new MySqlConnection(MyConnectionString) try connection.Open(); string sql = update goodsinfo set GoodsId=spbh,TypeId=lx,GoodsName=mc,GoodsUnit=jldw,GoodsNorm=gg,GoodsSellprice=sj,GoodsNum=kcl,AlarmNum=bjz,GoodsRemardk=bz where GoodsId=spbh; MySqlCommand cmd = new MySqlCommand(); cmd.Connection = connection; cmd.CommandText = sql; cmd.CommandType = CommandType.Text; cmd.Parameters.AddRange(sp); cmd.ExecuteNonQuery();