【餐饮店铺管理系统设计与实现(论文)15000字】_第1页
【餐饮店铺管理系统设计与实现(论文)15000字】_第2页
【餐饮店铺管理系统设计与实现(论文)15000字】_第3页
【餐饮店铺管理系统设计与实现(论文)15000字】_第4页
【餐饮店铺管理系统设计与实现(论文)15000字】_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

概述1.1系统设计的背景与意义随着人们生活水平的提高,餐饮行业也迎来了蓬勃发展。虽然吸引了大量资金流入,但是在人力资源的成本上依然居高不下,这使得以小型连锁为主的餐饮企业倍感压力。在互联网与电子支付的逐渐普及的背景下,餐饮行业作为对用户需求极为敏感的行业,虽然在许多方面已经完成了电子化的改造,但是这些系统通常只具备某个方面的功能,而且经常采用较老的实现方案,使得维护与二次开发难度高,数据无法快速直观的呈现给管理人员。大部分餐饮一体化管理系统都针对的是拥有一定规模的商家,虽然拥有非常完善的功能与技术支持,但是其购买、部署与培训的成本都相对较高。部分小型店家也希望能够完成完整的电子化改造,摆脱传统的账目管理方式。随着技术的发展,使得利用开源技术实现一套完整的支付+统计系统的成本大大降低。1.2可行性分析1.2.1经济可行性分析本次开发中使用的技术大多数是免费提供的,不需要进行购买。其中IntelliJIDEA通过申请学生身份获得了免费的旗舰版本程序授权。系统中使用的SSL证书通过工具自行签发。通过使用Java开发,系统可以部署在常见的个人电脑上,不需要额外的特殊设备。可以得到经济可行性上符合现状。1.2.2技术可行性分析本次主要选择主流的开源技术与应用软件进行开发工作,如SpringBoot,Hibernate等。这些技术已经经过大量厂商的检验,并且官方提供了详细的开发指导文档,完全可以满足本次开发的需求。Android作为目前市场占有率最大的移动操作系统,其开发工具和资源都十分充足。综上所述,系统在开发实现的过程中阻力较小。1.2.3市场可行性本项目主要面向的是小型个体与小型连锁餐饮企业。目前市场上低于50家门店的企业依然处于主流,且人力成本依然处于居高不下的情况[1]。通过利用新技术改造管理平台,可以改善大量的管理成本,且系统的部署也十分简单。由此对于普通商家具有良好的吸引力,市场前景广阔。1.3论文组织结构本文总共分为7章,文章的结构如下:第一章为概述,简要介绍了系统设计的设计背景与可行性分析,说明论文的总体结构。第二章对系统设计与开发过程中使用到的相关技术与应用软件,如SpringBoot和IntelliJIDEA等进行介绍。第三章对餐饮系统需要实现的需求和功能进行分析,梳理出系统主要的业务流程。第四章介绍系统的总体功能框架规划,以及分析系统数据库内实体表的设计目标并展示表结构第五章详细介绍了系统各个模块与功能的设计与实现过程。第六章说明了系统内各个功能的测试目标与重点,并展示系统中各功能的测试用例与测试结构第七章对系统实现的目标和功能进行总结,并对不足之处进行分析与检讨,提出后续可以改进的部分。1.4本章小结本章通过对当前餐饮行业现状的分析,介绍了系统设计与开发的背景,并通过技术可行性和经济可行性两方面对项目进行分析,为后续的设计提供参考。

开发核心技术2.1SpringBootSpringBoot是目前十分流行的开源Java开发框架Spring的衍生品。通过整合了Spring框架与第三方开发库,开发者可以在尽量少进行配置的情况下开发出一个独立的Spring微服务应用。由于内置了HTTP服务器,基于SpringBoot开发的程序也可以快速的完成部署。在此基础上,通过引入扩展,可以在不需要大量调试的情况下,完成对其他需要的开发依赖的整合。本次开发中使用的SpringMVC框架,SpringSecurity安全框架,MariaDB数据库驱动与HibernateORM的支持,就是通过这种形式完成的。2.2MariaDBMariaDB是一个从MySQL分支出的关系型数据库。由于MySQL成为甲骨文公司的产品后,其开源社区的发展前景受到威胁。因此原MySQL开发团队的部分成员选择从MySQL的开源代码上分支出新的版本,在保证大部分底层API与功能与MySQL兼容的基础上,继续以开源的方式继续维护。也由于其底层与MySQL兼容性强,其继承了MySQL的许多优点,大量Linux发行版也选择将MySQL替换为MariaDB,谷歌,Mozilla,维基媒体基金会也在产品中使用了MariaDB。本次开发中使用MariaDB的主要原因是,其在拥有MySQL优点的基础上,许可证较MySQL更加宽松。2.3HibernateHibernate是一个面向Java开发的开源对象关系映射(ORM,Object–relationalmapping)工具。通过映射,开发人员只需要维护对象就可以对数据库内的关系进行操作。同时Hibernate也集成了许多面向对象的查询模式,开发人员在大多数时候不需要维护数据库连接,也不需要编写SQL语句就可以对数据库进行操作。本次开发通过SpringDataJPA模块与Hibernate对JPA(JakartaPersistence,Java持久化API)的实现完成对数据库的操作。2.4AndroidAndroid是一个基于Linux内核的为触摸屏优化的开源移动操作系统。由于其宽松的授权许可,允许厂商自行定制以及对移动平台良好的兼容性,自2005年被谷歌收购以来,目前已经成为市场占有率最高的移动操作系统。通过Java语言和系统内置的接口,开发者可以轻松的完成对移动设备底层硬件的调用并开发出需要的软件。本次开发中的交易终端程序就使用Android作为平台,通过调用手机的NFC功能完成对会员卡的读取。2.5NFCNFC(Near-fieldcommunication,近距离无线通信)是一种可以让近距离的设备之间互相通信和传输数据的通信协议。通过使用NFC技术,移动设备可以模拟一张使用RFID技术的芯片卡,或读取RFID芯片,也可以在两个支持NFC技术的设备间快速传输数据。目前NFC技术已经广泛的应用在电子钱包,读卡器和移动支付领域。本次开发使用的交易终端就通过Android系统对NFC技术的支持,对RFID卡片进行读取,来获取用户卡片信息。使用的芯片为NTAG215。2.6IntelliJIDEAIntelliJIDEA是由捷克开发商JetBrains开发的一款面向Java开发的集成开发环境,包括免费开源的社区版以及付费闭源的旗舰版本。由于其功能丰富,拥有良好的扩展性,对版本管理工具的良好支持以及强大的代码分析功能,受到了许多开发者的青睐。谷歌也将其Android的官方开发工具由Eclipse迁移到了定制的IntelliJIDEA。本次开发使用的是通过学生授权申请获得的IntelliJIDEA旗舰版。2.7GitGit是一个使用C开发的开源分布式版本控制工具。通过Git,开发者可以快速地对代码的版本及历史进行管理。目前许多著名的开源项目都在通过Git进行协作。本次开发通过利用Git对开发工作进行管理,方便梳理开发进度与代码修改。2.8本章小结本章具体阐述了实现系统所需要的主要技术。对后端服务以及移动终端应用使用的核心技术进行简单的介绍,阐述在系统中的作用并简要的分析了其优势。本章还介绍了开发过程中主要使用的开发工具。

3系统分析3.1系统需求分析本系统的开发重点在于实现一套集成店铺人员管理,收银和账目查看管一体的系统。系统的用户包括了系统管理员,店铺管理员,店铺收银员,顾客四个角色。3.1.1系统管理员系统管理员主要职责为负责整个系统的运行和管理工作。作为系统的维护人员,通过登录功能鉴别身份后,可以通过用户管理模块和店铺管理模块对系统中的用户和店铺进行增加,删除,修改和查找操作。系统管理员用例图如图3-1所示。图3-1:系统管理员用例图3.1.2店铺管理员店铺管理人员负责对店铺的信息,商品信息,店铺内的成员进行管理。同时可以查询本店铺的交易流水信息。这些操作通过店铺管理模块,商品信息管理模块,交易查询模块,操作授权模块来完成。店铺管理员用例图如图3-2所示。图3-2:店铺管理员用例图3.1.3店铺收银人员店铺收银人员主要通过交易终端完成对会员卡的开卡与管理,完成收银操作。其中卡片管理可以在顾客要求的前提下完成对卡片的挂失和解除挂失,以及卡片的注销,卡片的充值等操作操作。店铺收银人员用例图如图3-3所示。图3-3:店铺收银人员用例图3.1.4顾客普通顾客可以在收银员完成开卡操作后,在后台使用指定的用户名和密码登录,对自己的个人信息进行修改,完成对状态正常卡片的充值操作,查询一定期限内的卡片交易记录与交易详情。顾客用例图如图3-4所示。图3-4:顾客用例图3.2功能模块分析1、后台管理功能模块(1)用户管理系统管理员通过用户管理功能对除普通顾客用户外的系统用户进行添加操作,重置用户密码,删除用户的操作。(2)店铺管理系统管理员可以对系统中存在的店铺进行管理。包括增加店铺,删除无用户绑定的店铺,修改店铺基础信息。(3)商品管理对店铺内的商品进行管理,包括添加商品,商品上下架,商品库存修改,商品删除。(4)成员管理成员管理模块用于店铺管理员对店铺成员进行管理,通过姓名对成员进行搜索以及权限授权操作。(5)交易流水查询店铺管理员登录后可以查看当前管理店铺的交易流水,或者通过指定的搜索条件对交易流水进行搜索。登录的顾客也可以对自己卡片的交易记录进行查询。(6)个人信息修改所有登录用户可以修改自己账户的个人信息,如姓名,生日,电话号码等。(7)充值顾客可以在开卡后使用自己的用户信息登录后台完成在线充值操作。2、交易终端功能模块(1)卡片管理卡片管理模块用于收银员进行会员卡开户,卡片充值,卡片挂失/解除挂失等与卡片相关的操作。也可以查询用户卡片最近的交易记录。(2)收银由收银员通过收银模块为用户点餐,并读取用户卡片完成扣款,将信息回传给系统后台。3.3系统功能流程1、系统后台登录流程用户访问登录页面,或被拦截器检测到不能继续访问当前页面(如会话过期,未登录,无权限),会被导向后台登录页面。用户在登录页面输入用户名和密码后,后台从数据库中查找是否有对应的用户信息,如果有则继续比较密码+盐的哈希值是否符合。如果验证成功,则跳转到系统主页。系统登录流程图如图3-5所示。图3-5:登录流程图2、收银流程顾客想要下单时,向收银员提出需要的菜品。由收银员在交易终端上选择对应的商品,确认无误后,提交下单请求。接着在终端上进行挥卡,终端读取卡片信息后,将信息提交给后台。后台对订单和卡片的相关信息进行验证(如卡片状态是否正常,卡片余额是否充足,商品库存是否充足),确认无误后,将订单信息和交易记录写入系统,同时返回交易结果给终端,完成收银流程。收银流程图如图3-6所示。图3-6:收银流程图3.4本章小结本章通过运用软件工程的知识,对系统完成了整体分析,并完成了系统大致功能模块的划分和系统核心流程的简要设计。指明了系统设计需要满足的要求和系统实现的目标。

4系统概要设计4.1系统总体框架系统根据使用者分为了管理后台和交易终端两个部分。管理后台主要由管理用户使用,负责完成对系统以及对店铺运营的信息查询和维护。交易终端由收银员使用,负责完成顾客会员卡的管理以及下单。本系统的功能框图如图4-1所示。图4-1:系统功能框图4.2系统实体设计通过对以上系统各模块的分析和整理,梳理出了对应的实体关系,并绘制出系统的E-R图。本系统的E-R图如图4-2所示:图4-2:系统E-R图接下来根据此E-R图进行数据库设计,本次使用的数据库为MariaDB,除卡片外,均采用系统生成的UUID作为主键。卡片使用厂商烧录的7位卡片ID作为主键。所有表均使用UTF8编码。每个表都增加创建时间与更新时间列,方便对记录进行排序与筛选。用户信息表(user)用户信息表主要存储用户在系统内验证身份的核心信息。为了保证密码安全,用户的密码信息使用blowfish算法进行加密,并根据每个用户生成单独的盐,避免数据泄露时泄露密码信息。每个用户可以绑定一个店铺,如果该用户为顾客和系统管理员,则该字段留空。每个用户也可以被管理员停用。删除时,用户的状态被设为-1。表4-1:用户信息表列名类型是否可为空描述uuidvarchar(64)否主键,用户IDusernamevarchar(20)否用户名password_hashvarchar(64)否密码哈希rolevarchar(20)否用户类型admin–系统管理员manager–店铺管理员worker–店铺收银员customer–顾客shop_uuidvarchar(64)是外键,所在店铺的IDis_enabledtinyint否账户是否启用0–否1–是statustinyint否账户状态1–正常-1–删除create_datedatetime否记录的创建时间update_datedatetime否记录的更新时间个人信息表(profile)个人信息表存储每个用户的个人信息。为了方便后期对个人信息的扩充,个人信息从用户信息表中拆分成单独的表。由于每个用户仅对应一条个人信息记录,用户信息记录的主键即为表的主键,表内目前存储包括姓名,性别,生日,性别,手机号码。表4-2:个人信息表列名类型是否可为空描述uuidvarchar(64)否主键,外键,与对应的用户的ID相同namevarchar(20)否姓名birthdaydate是生日gendertinyint否性别mobilevarchar(20)否电话号码create_datedatetime否记录的创建时间update_datedatetime否记录的更新时间店铺信息表(shop)店铺信息表存储系统中店铺的基本信息。包括店铺名,店铺位置(可选填写)。每个店铺有一个唯一的超级管理员,负责对店铺的管理。表4-3:店铺信息表列名类型是否可为空描述uuidvarchar(64)否主键,店铺IDnamevarchar(32)否店铺名locationvarchar(32)是店铺位置managervarchar(64)否外键,店铺管理员的用户IDstatustinyint否店铺状态1–正常-1–删除create_datedatetime否记录的创建时间update_datedatetime否记录的更新时间商品信息表(item)商品信息表存储每个店铺内存在的货品与相关的状态信息。包括商品名,商品价格,商品库存。同时数据库存储每个商品的拼音首字母,方便快速完成商品搜索。由于每个店铺间的商品是独立的,每个商品也单独存储所属的店铺的ID。每个商品都可以选择是否被上架,被下架的商品不可以在收银时被选择。表4-4:商品信息表列名类型是否可为空描述uuidvarchar(64)否主键,商品IDnamevarchar(20)否商品名称initialvarchar(20)否商品每个字的拼音的首字母,方便进行搜索pricedecimal(10,2)否商品价格stockint否商品库存数量descriptionvarchar(120)是商品描述信息is_enabledtinyint否是否上架0–否1–是statustinyint否商品状态1–正常-1–删除shop_uuidvarchar(64)否外键,商品所属店铺的IDcreate_datedatetime否记录的创建时间update_datedatetime否记录的更新时间卡片信息表(card)卡片信息表存储了系统内用户拥有的卡片及其当前状态。卡片ID为厂商烧写入芯片的8位16个字符的唯一卡号。每个用户只能拥有一张处于正常激活状态的卡片。处于挂失或过期状态不受限制。表4-5:卡片信息表列名类型是否可为空描述uuidvarchar(16)否主键,卡片IDbalancedecimal(10,2)否卡片余额user_uuidvarchar(64)否外键,卡片所属用户的ID表4-5(续):卡片信息表列名类型是否可为空描述statustinyint否卡片状态0–未激活1–正常5–挂失-1–注销valid_datedate否卡片有效日期create_datedatetime否记录的创建时间update_datedatetime否记录的更新时间交易记录表(transaction)交易记录表包括充值与消费等所有的金额变更记录。每笔交易中存储当前交易涉及的金额,交易类型(充值或消费),以及交易后卡片的余额。同时也记录了每笔交易所在的店铺以及收银员的信息。表4-6:交易记录表列名类型是否可为空描述uuidvarchar(64)否主键,交易记录IDcard_uuidvarchar(16)否外键,交易卡片IDamountdecimal(10,2)否交易金额balancedecimal(10,2)否交易后卡片的余额actiontinyint否交易类型0–消费1–充值shop_uuidvarchar(64)是外键,交易涉及的店铺ID,在线充值时可为空operator_uuidvarchar(64)是外键,负责交易的操作员,在线充值时可为空create_datedatetime否记录的创建时间update_datedatetime否记录的更新时间交易商品记录表(item_record)交易商品记录表保存了每次交易时购买的商品信息。包括涉及的交易ID,商品ID。由于商品价格可能随着之后的修改变化,表中也存储了购买时的商品价格和个数。表4-7:交易商品记录表列名类型是否可为空描述uuidvarchar(64)否主键,商品记录IDtransaction_uuidvarchar(64)否外键,交易IDitem_uuidvarchar(64)否外键,商品IDpricedecimal(10,2)否商品单价numint否商品个数statustinyint否记录状态0–正常-1–删除create_datedatetime否记录的创建时间update_datedatetime否记录的更新时间4.3本章小结本章完成了系统的功能模块划分,并通过绘制和分析E-R图完成了实体分析与数据表设计,为之后的详细设计梳理思路。

5系统详细设计与实现5.1安全性设计1、密码安全为了保障用户密码信息安全,在存储密码时使用blowfish算法。开发中使用了bcrypt的blowfish算法实现,对密码进行多次迭代加密,同时对每个密码生成不同的盐值,大大减小了暴力枚举破解成功的可能性,同时每次进行散列计算时,不会出现相同的结果,也避免了其他散列算法可以根据散列结果推测明文的问题。2、传输安全由于系统中涉及资金交易,如果客户端和服务期间传输的请求被恶意劫持并进行篡改,将会对用户和商家造成财产损失。为了避免此种情况发生,服务器与客户端之间的传输全程开启HTTPS,从而阻止对数据包的劫持,篡改等行为。由于TLS在配置不当的情况下,可能导致传输加密的有效性被削弱,依然有可能造成数据泄露(如贵宾犬漏洞),在进行服务器配置时,关闭了不推荐使用的密码套件,并阻止客户端申请回滚到有安全漏洞的传输协议。3、数据有效性验证为了保证存储数据的有效性,除了进行前端检测和数据库中约束外,在后端通过使用HibernateValidator,在域模型(即对象)上增加有效性验证,在减小编写重复的验证代码的基础上,进一步减少了无效数据进入系统的可能性。4、数据库注入防御数据库注入是在线系统中经常出现的问题,由于对用户的输入约束不当或对SQL进行直接拼接,导致SQL的功能被改变,或抛出异常来达到攻击者的目的。在开发过程中,除了可以直接通过ORM操作的数据外,也必然需要对SQL进行定制的功能。通过对编写的SQL进行预编译,避免用户输入数据混入SQL语句结构中,同时在正式运行时关闭调试信息输出,减小攻击者获得系统敏感数据的可能性。5.2用户登录当用户访问登录页面或拦截器检测到用户没有有效的登录信息时,系统会展示登录页面。用户将登录信息填写完整后,提交请求。通过实现UserDetailsService接口类的loadUserByUsername方法,将数据库中的用户信息接入验证。系统通过用户名搜索到用户之后,检测用户状态是否正常,如果用户被禁用,则无法正常登录。如果一切正常,则读取用户的密码哈希信息,通过设置的BCryptPasswordEncoder对用户输入的密码和数据库存储的密码进行校对。校对成功后,将用户信息写入SecurityContext以供后续调用,同时将页面导向系统主页。系统主页的菜单根据用户角色的不同,显示不同的功能。登录界面效果图如图5-1所示。图5-1:登陆界面效果图5.3个人信息修改通过个人信息页面,登录用户可以查看和修改账号密码和个人信息。为了保障安全,对个人信息修改时需要在页面输入用户当前密码,验证成功后,相应的修改才会生效。个人信息页面效果图如图5-2所示。图5-2:个人信息页面效果图5.4系统管理模块1、用户管理系统管理员可以在用户管理子模块中查看系统当前存在的用户信息。为了保证信息安全,系统管理员无法直接查看或修改用户密码,也不能直接修改用户的个人信息,但是用户可以调整工作人员的权限(即调整店铺管理员和店铺收银员的权限)。当用户忘记密码需要重置时,管理员需要通过“重置密码”按钮对密码进行重置。此时后台会随机产生一个新密码并写入数据库,同时返回给管理员。系统管理员也可以禁用某个账户,被禁用的账户无法登录,也无法进行任何操作,直到被启用为止。系统用户列表效果图如图5-3所示。图5-3:用户列表效果图2、店铺管理店铺管理子模块的主要功能为添加店铺信息、编辑店铺信息、删除店铺信息以及根据店铺名进行搜索。添加店铺时,需要输入店铺的基础信息,并指定店铺管理员。每个店铺拥有一个最高权限的管理员,可以对店铺的详细信息与人员进行修改。在删除店铺前,系统会检测店铺中除管理员外是否有其他人员存在,如有则提示错误,避免了误删除造成的灾难性后果。系统店铺列表效果图如图5-4所示。图5-4:店铺列表效果图5.5店铺管理模块1、店铺信息维护店铺管理员通过店铺信息维护功能,可以对除店铺管理员外的其他信息(如店铺名称,位置)等进行修改。店铺管理员打开此页面时,后端通过调取登录用户的信息,自动展示对应店铺的信息,保证其他店铺的ID信息不会被泄露。店铺信息维护页面效果图如图5-5所示。图5-5:店铺信息维护页面效果图2、成员管理成员管理模块展示了店铺管理员所在店铺的人员信息。店铺管理员可以将系统中尚未绑定店铺的,角色为工作人员的用户添加到当前店铺,或将当前店铺的员工解绑。成员管理模块也可以修改当前店铺成员绑定的卡片信息。成员列表效果图如图5-6所示。图5-6:成员列表效果图3、商品管理商品管理模块包括了添加商品,商品信息修改,商品上下架,商品搜索的功能。默认展示了当前店铺按时间顺序添加入系统的商品信息。通过搜索框,可以根据商品的名称进行搜索。点击进入商品详情页后,可以对商品的详细信息进行修改。商品列表效果图如图5-7所示。图5-7:商品列表效果图4、账目管理通过账目管理功能,管理员可以快速查看当天店铺交易情况的分析图表以及店铺的所有流水信息。通过选择时间区间,也可以完成指定时间段内交易的统计分析。流水信息列表效果图如图5-8所示。图5-8:流水信息列表效果图5.6顾客个人管理模块1、在线充值除了通过收银员当面对卡片进行充值外,顾客也可以在线对卡片进行充值。充值前系统会查询用户的卡片信息,自动选择当前可用的卡片进行充值操作。若用户当前无可用卡片,则提示用户需要先进行开卡。在线充值页面效果图如图5-9所示。图5-9:在线充值页面效果图2、交易记录查询顾客可以在交易记录查询页面查询当前有效卡片的充值与消费信息,也可以通过选择开始与截止日期筛选某一时间段内的交易信息。交易记录查询页面效果图如图5-10所示。图5-10:交易记录查询页面效果图5.7交易终端1、登录每次打开交易应用时,都会出现登录界面。如果用户是第一次登录,需要输入服务器地址,通信端口(可选)和登录密码信息。如果在用户信息填充不完整的情况下点击扫描卡片按钮,会提示用户需要补充完整才能登录。为了避免服务器信息泄露,登录信息都以掩码展示。交易终端登录界面效果图如图5-11所示。图5-11:交易终端登录界面效果图确认信息无误后,点击扫描卡片按钮,此时会启动NFCActivity,首先对设备对NFC的兼容性进行验证,如果当前设备无法读取卡片(设备不支持NFC或NFC未打开),将提示用户。如果NFC处于正常状态,Activity将开始拦截名为ACTION_TECH_DISCOVERED的Intent,并声明支持的NFC技术,之后注册拦截器,等待接收卡片信息。收银员进行挥卡,当系统扫描到卡片后,将会触发OnNewIntent方法。此时从Intent中读取卡片的ID信息,并将16进制的卡号转换为字符串。如果转换失败或卡片读取异常,将提示用户重试读卡。如果读取成功,将卡片ID信息放入额外信息中,并关闭NFCActivity。具体实现如下:overridefunonNewIntent(intent:Intent?){super.onNewIntent(intent)valtag:Tag?=intent!!.getParcelableExtra(NfcAdapter.EXTRA_TAG)valcardId:ByteArray?=MifareUltralight.get(tag)?.use{card->card.connect()card.tag.id}valcardIdString=StringBuffer()if(cardId!=null){for(bincardId){cardIdString.append(String.format("%02X",b))}}if(cardIdString.toString().isEmpty()){valmessage=findViewById<TextView>(R.id.NFCMessage)message.text="请重试"}else{setResult(Activity.RESULT_OK,Intent().putExtra("cardId",cardIdString.toString()))finish()}}之后的卡片读取都将调用NFCActivity,不再赘述。登录界面接收到卡片ID信息后,向服务后端发起请求,确认用户信息是否正确以及用户是否有登录权限。如用户信息错误或无权限,则提示用户登录信息错误。如验证成功,系统将保存登录信息,并跳转入主菜单页面。交易终端主菜单界面效果图如图5-12所示。图5-12:交易终端主菜单界面效果图2、会员卡管理(1)开卡在经过顾客同意后,收银员在系统中填写用户的基本信息,确认无误后,扫描一张未在系统内注册过的卡片,最后提交开卡信息。系统后端对提交的开卡信息在数据库中进行验证,确认系统中不存在用户名,手机号,卡号冲突的数据后,将用户信息存入数据库。开卡界面效果图如图5-13所示。图5-13:开卡界面效果图(2)充值收银员打开充值界面,首先完成卡片扫描。此时程序读取卡片的状态信息,如果卡片处于挂失,过期等异常情况,程序将弹出窗口提示,拒绝进行充值操作。若卡片信息正常,则由收银员输入充值金额,点击充值按钮,此时检测充值金额是否在合法范围内,确认无误则进入充值付款程序。确认付款成功后,程序向系统后端提交充值请求,系统后端修改卡片信息并写入充值记录,完成充值流程。充值界面效果图如图5-14所示。图5-14:充值界面效果图(3)续期每张卡片开卡时,默认会拥有三年的有效期,在过期后,卡片不可以再继续使用。在续期界面,收银员扫描顾客的卡片后,如果卡片处于挂失状态,则弹出警告,禁止进行操作。如卡片处于正常状态,收银员可以选择要续期的时间(或不选择,则续期时间为当前日期之后的三年),若选择的日期无效(早于今日),则弹出提示。确认无误后,点击续期按钮,即可完成续期操作。续期界面效果图如图5-15所示。图5-15:续期界面效果图(4)挂失/解除挂失如顾客的卡片丢失,在向收银员提供手机号或卡号信息后,收银员在挂失/解除挂失功能中进行搜索,如存在对应的卡片则进行挂失操作。解除挂失时,顾客需要携带被挂失的卡片,通过扫描确认状态为已挂失后,点击解除挂失按钮,卡片将还原为正常状态。挂失/解除挂失界面效果图如图5-16所示。图5-16:挂失/解除挂失界面效果图(5)注销如顾客不想再使用卡片,可以对卡片进行注销,系统会自动对卡片中的余额进行查询并进行退款操作。之后在系统中删除卡片以及对应的用户信息。注销界面效果图如图5-17所示。图5-17:注销界面效果图(6)查询消费记录收银员可以在查询消费记录界面通过扫描顾客的卡片,查询顾客最近的10条交易记录进行查询。查询消费记录页面效果图如图5-18所示。图5-18:查询消费记录页面效果图3、收银收银时,收银员打开点菜界面,根据顾客的要求将对应的菜品加入购物车。确认无误后,进行下单操作,此时扫描顾客的会员卡。读取卡片信息后,程序会先对消费金额和卡片余额做比较,若卡片余额不足,则弹出提示。若余额充足,则向后端提交下单请求。点菜页面效果图如图5-19所示。图5-19:点菜页面效果图后端收到请求后,对订单中的菜品库存进行检查,并扣除购买的数量。之后从卡片中扣除订单总金额,最终写入交易和交易详情数据。实现该功能时,通过启用SpringBoot的事务功能,保证在数据库操作中出现异常时(如商品数量不足,卡片余额不足),可以对所有修改进行回滚。保证了数据的完整性。5.8本章小结本章详细描述了系统的每个功能模块的业务流程以及实现逻辑,对重要功能展示相关的代码进行解释,通过结合界面截图,形象的阐述了主要功能点的设计思路。

6系统测试6.1用户登录功能测试用户登录功能是系统的主要入口,如果出现故障可能导致资源的越权访问和敏感信息的泄露。登录功能需要保证非授权用户和账户被禁用的用户无法登录系统。表6-1:用户登录功能测试表测试用例编号测试项目预计结果实际结果1使用http访问无法访问无法访问2用户名正确,密码正确登录成功登录成功3用户名正确,密码错误登录失败登录失败4用户名留空,输入密码无法登录无法登录5输入用户名,密码留空无法登录无法登录6使用被禁用的账户进行登录登录失败登录失败6.2个人信息修改功能测试个人信息修改时,主要需要保证用户输入数据的有效性。通过HTML在前端进行第一轮验证,之后在执行保存时进行第二轮验证,最后在写入数据库时通过约束进行第三轮验证。用户修改个人信息时也需要验证当前的密码信息,避免重要信息被恶意篡改。表6-2:个人信息修改功能测试表测试用例编号测试项目预计结果实际结果1输入原密码,新密码,确认密码修改成功修改成功2不输入原密码,输入新密码,确认密码修改失败修改失败3输入原密码,新密码,随意输入确认密码修改失败修改失败4输入原密码,不输入新密码,输入确认密码修改失败修改失败5输入原密码,修改姓名修改成功修改成功6不输入原密码,修改姓名修改失败修改失败7输入原密码,输入无效姓名修改失败修改失败8输入原密码,输入系统中已存在的手机号修改失败修改失败6.3系统管理模块测试1、用户管理用户管理功能是系统管理员完成用户维护的入口。除保障基础功能实现外,还应该保证用户信息的有效性。在修改用户信息的过程中,如用户角色为顾客,则应该禁止管理员进行角色的修改。表6-3:用户管理模块测试表测试用例编号测试项目预计结果实际结果1搜索框中输入“te”,“st”,“test”进行搜索搜索到用户“test”搜索到用户“test”2添加用户,任意必填项留空添加失败添加失败3修改店铺收营员“test”用户的角色修改成功修改成功4修改顾客“customer”的角色无此选项无此选项6禁用用户“test”操作成功操作成功7启用用户“test”操作成功操作成功8删除用户“test”操作成功操作成功2、店铺管理在店铺管理的测试中,重点需要保证提交数据时对店铺信息的有效性进行验证。包括系统内不得出现重名店铺,店铺位置可以留空。另外管理员在删除店铺时,如店铺内包含除管理者外的其他用户,应当提示并拒绝进行删除。表6-4:店铺管理模块测试表测试用例编号测试项目预计结果实际结果1添加店铺,填写所有必填字段添加成功添加成功2添加店铺,店铺名与现有店铺重复添加失败添加失败3添加店铺,不填写店铺名添加失败添加失败4修改店铺,输入合法店铺名修改成功修改成功5修改店铺,店铺名留空修改失败修改失败6删除店铺,店铺内无管理员外其他成员删除成功删除成功表6-4(续):店铺管理模块测试表测试用例编号测试项目预计结果实际结果7删除店铺,店铺内有其他成员删除失败删除失败6.4店铺管理模块测试1、店铺信息维护店铺管理员登录系统后,可以通过店铺信息维护页面完成对店铺信息的修改。此时页面中应当展示当前用户管理店铺的正确信息,并对提交的修改内容进行校验。表6-5:店铺信息维护功能测试表测试用例编号测试项目预计结果实际结果1修改店铺名修改成功修改成功2输入过长的店铺名输入被截取输入被截取3店铺名留空修改失败修改失败4修改店铺地址修改成功修改成功6输入过长的店铺地址输入被截取输入被截取7店铺地址留空修改成功修改成功2、成员管理成员管理功能主要提供系统管理员管理当前店铺内的成员以及查询相关信息的功能。店铺的管理员只能查看和修改当前店铺的成员信息。进行成员添加时,应当只能查看到系统中暂未绑定店铺的成员,其他成员应当被隐藏。表6-6:成员管理模块测试表测试用例编号测试项目预计结果实际结果1搜索“王”搜索到人员“王刚”搜索到人员“王刚”2添加成员界面只显示未绑定店铺用户是是3删除成员后,成员列表中无被删除的成员是是4编辑成员,填写未存在的卡片信息,保存保存成功保存成功表6-6(续):成员管理模块测试表测试用例编号测试项目预计结果实际结果6编辑成员,填写已存在的卡片信息保存失败保存失败3、商品管理商品管理功能负责完成对当前店铺商品库存信息的维护。测试的重点包括商品信息的合法性和库存信息的合法性。表6-7:商品管理模块测试表测试用例编号测试项目预计结果实际结果1搜索“米”搜索到商品“米饭”搜索到商品“米饭”2添加商品,填写所有信息添加成功添加成功3添加商品,随机必填字段留空添加失败添加失败4编辑商品,价格填写为0修改成功修改成功5编辑商品,库存输入-1修改失败修改失败6下架商品“可乐”操作成功操作成功7上架商品“可乐”操作成功操作成功8删除商品“可乐”操作成功操作成功4、流水查看流水查看页面是管理员快速查看当天交易的功能入口。在保障当天信息可以正常查看的基础上,还需要对时间段搜索的功能进行测试,保障功能的正常运行。表6-8:流水查看模块测试表测试用例编号测试项目预计结果实际结果1主界面显示今日统计图表是是2在筛选框中选择指定日期后查询显示指定日期区间的数据显示指定日期区间的数据6.5顾客个人管理模块测试顾客个人管理模块主要负责会员登录后完成个人信息的修改和查询。充值时需要通过读取登录用户的信息,找到有效的可充值卡片进行充值,否则应该及时提示用户当前状态无法充值。表6-9:在线充值功能测试表测试用例编号测试项目预计结果实际结果1用户无有效卡片无法充值无法充值2用户有有效卡片,输入有效充值金额充值成功充值成功3用户有有效卡片,输入无效充值金额充值失败充值失败6.6交易终端测试交易终端程序作为直接涉及交易的部分,出现问题时对系统的危害度大,有必要对每个功能点进行细致的测试。1、登录测试登录功能的目的主要是防止系统的未授权访问。登录时后端应当检查登录的用户信息,对于不具备登录资格以及账户无效的登录请求应该拒绝,并阻止操作者进入功能界面。表6-10:交易终端登录功能测试表测试用例编号测试项目预计结果实际结果1输入服务器地址,密钥,扫描管理员卡片登录成功登录成功2输入服务器地址,不输入密钥,扫描管理员卡片登录失败登录失败3输入服务器地址,密钥,扫描顾客卡片登录失败登录失败4输入服务器地址,密钥,扫描系统中不存在的卡片登录失败登录失败2、会员卡管理会员卡管理功能负责完成系统中对顾客卡片的各项管理操作。在操作过程中需要保证输入信息有效性以及卡片的有效性。在部分功能中还需要对卡片的异常使用情况(如挂失)进行提示,方便收银员及时了解卡片状态并停止相关操作。(1)开卡开卡时,程序需要在提交前对必填的信息进行检测,确保提交时必填项都已填写并符合系统内字段的规则。信息提交后,如出现用户名或手机号已被占用的情况,应该出现提示并停止开卡流程。表6-11:开卡功能测试表测试用例编号测试项目预计结果实际结果1填写所有字段,扫描新卡片开卡成功开卡成功2任意必填字段留空,扫描新卡片开卡失败开卡失败3填写所有字段,扫描已存在卡片开卡失败开卡失败4填写系统中存在的手机号,扫描新卡片开卡失败开卡失败5填写系统中存在的用户名,扫描新卡片开卡失败开卡失败(2)充值充值时应当在验证卡片有效性后才能进行。充值时收银员若输入了超过单次可充值金额,应当出现提示并停止充值流程。若充值后将超出卡片余额上限时,也应当出现提示并终止充值流程。表6-12:充值功能测试表测试用例编号测试项目预计结果实际结果1扫描正常卡片,输入正确金额充值成功充值成功2扫描正常卡片,输入无效金额充值失败充值失败3扫描正常卡片,输入正确金额,但充值后卡片余额超限充值失败充值失败4扫描挂失卡片,输入正确金额充值失败充值失败5扫描过期卡片,输入正确金额充值失败充值失败(3)续期进行卡片续期时,若卡片已被挂失,应当出现提示警告收银员,并禁止进行续期操作。续期时可以不选择日期,此时则自动续期至当前日期后的三年。若选择了早于今日的日期,系统应提示日期无效。表6-13:续期功能测试表测试用例编号测试项目预计结果实际结果1扫描正常卡片,输入正确日期续期成功续期成功表6-13(续):续期功能测试表测试用例编号测试项目预计结果实际结果2扫描正常卡片,不输入日期续期3年续期3年3扫描正常卡片,输入无效日期续期失败续期失败4扫描挂失卡片,输入正确日期续期失败续期失败5扫描过期卡片,输入正确日期续期成功续期成功(4)挂失/解除挂失进行挂失操作时,应该输入卡片ID或用户的手机号进行搜索,如直接扫描对应卡片,应当无法进行挂失操作。进行解除挂失操作时,应当扫描需要解除挂失的卡片,若通过搜索查找卡片,应当无法进行解除挂失操作。表6-14:挂失/解除挂失功能测试表测试用例编号测试项目预计结果实际结果1扫描正常卡片无需解除挂失无需解除挂失2解除挂失,扫描挂失卡片解除挂失成功解除挂失成功3搜索用户名test找到卡片信息找到卡片信息4搜索用户名null找不到卡片信息找不到卡片信息5搜索卡片TESTSIMPLECARD找到卡片信息找到卡片信息6搜索卡片MEIYOUCIKAPIAN找不到卡片信息找不到卡片信息7选择正常卡片进行挂失挂失成功挂失成功8选择挂失卡片进行挂失挂失失败挂失失败(5)注销注销卡片时,若系统中扫描到已经被挂失的卡片,需要警告收银员并禁止继续注销流程。若扫描的卡片处于正常状态或过期状态,则可以继续注销流程。表6-15:注销功能测试表测试用例编号测试项目预计结果实际结果1扫描正常卡片注销成功注销成功2扫描挂失卡片注销失败注销失败3扫描过期卡片注销成功注销成功4扫描不存在卡片注销失败注销失败(6)查询交易记录查询交易记录时,此时只要卡片存在于系统中,就应当展示卡片的相关信息和近期交易记录。若扫描的卡片在系统中不存在,则提示找不到卡片的相关信息和交易记录。表6-16:查询交易记录功能测试表测试用例编号测试项目预计结果实际结果1扫描正常卡片查询成功查询成功2扫描挂失卡片查询成功查询成功3扫描过期卡片查询成功查询成功4扫描不存在卡片查询失败查询失败3、收银收银功能供收银员完成下单操作。在此过程中涉及多个表数据的联动,因此设计了多次的信息验证避免出现信息异常。同时对使用挂失卡进行消费的行为需要及时警告收银员,保护顾客的财产。表6-17:收银功能测试表测试用例编号测试项目预计结果实际结果1添加库存充足商品到购物车添加成功添加成功2添加库存不足商品到购物车添加失败添加失败3结账时扫描额度充足卡片结账成功结账成功4结账时扫描额度不足卡片结账失败结账失败6结账时其中一个商品库存不足结账失败结账失败7结账时扫描过期卡片结账失败结账失败8结账时扫描挂失卡片结账失败结账失败

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论