已阅读5页,还剩38页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本 科 生 毕 业 论 文题 目 小型餐馆排队系统设计与实现院 系: 软件学院 专 业: 嵌入式软件与系统 学生姓名: 学 号: 指导教师: ) (职 称)二一三 年 四 月- iv -摘 要随着移动互联网的飞速发展,市场上诞生了许多基于地理位置信息的有关美食和餐馆的移动端,这些应用主要用于给尚未决定消费地点的客户提供选择餐馆的信息以及相关优惠,却较少有此类应用:该应用可以向用餐高峰期时排队的客户提供当前排队状况。本论文通过观察分析目前小餐馆所使用的传统排队状态反馈方式,希望结合移动互联网的特性,探索设计一个简易的排队信息反馈系统来辅助传统的反馈方式。论文主要包括以下内容:(1)项目的开发背景及意义。该部分首先分析传统排队管理系统的优缺点,阐明移动应用开发的必要性,之后简述国内LBS餐馆应用的开发现状,并分析介绍国外几个优秀排队管理应用,最后确定系统使用范围、人群及目标。(2)本系统采用的几个核心技术PHP、mySQL、Android,以及使用该技术的优点。(3)运用UML对本系统进行需求分析建模,并用交互图描述用户查询排队信息、输入客户信息、删除排队客户、安排客户就餐的用户案例(4)设计系统的主要架构。系统主要采用C/S两层架构,客户端基于目前最流行的智能移动平台Android系统进行开发,服务端管理系统使用目前流行的Php服务器链接MySQL的架构。之后,对每个用例所需要的对象方法的调用流程进行分析并画出调用顺序图。(5)主要模块的算法和实现。(6)系统的开发环境、运行环境,并给出一个简易的运行环境搭建指南以及用户使用指南。(7)系统未来的优化方向以及可能的盈利方式。关键词:餐馆排队;Php;Android;mySQL。AbstractNowadays, mobile Internet is developing more rapidly than traditional Internet, a lot of LBS applications involved in food and restaurant become more and more popular in customer group. However, most of these apps are designed to offer restaurant information and coupons to help customer decide in which restaurant they will consume, it seems that seldom apps try to offer information of queuing status for customer. This paper is trying to observe and analyze some traditional queuing management and information feedback systems are widely used at present, finding out their disadvantage. On this basis, considering the characters of mobile internet, this paper will design a simply constructed system to assist the formal feedback system.This paper includes the following seven contents: (1) The background of this project and its purpose. In this part, this paper will firstly analyze the disadvantages of traditional queuing feedback methods and reveal the necessity of developing mobile app. Secondly, it will illustrate the current development situation of LBS food app in China before introducing several excellent foreign restaurant queuing apps have been used in a limited extent. (2) Core techniques are used in this projectPhp, MySQL and Android. (3) To use UML modeling to analyze demands and describe four primary use casesquerying queuing information, input customer information, delete specific customer information, lead customer into restaurant. (4) To design the main architecture of this system. This system adopt C/S architecture, client is developed in Android which is the most popular mobile system. The management sever is developed in php sever which is linked to MySQL database system. (5) The algorithm of the main module. (6) The development environment, operating environment and provide a simple user guide. (7) Methods to optimize this system in future and possible ways of moneymaking.Keywords: Restaurant Queuing; Php ; Android Client; MySQL Database System.目录第一章 前言11.1项目的背景和意义11.2研究开发现状分析21.3项目的目标和范围31.4论文结构简介3第二章技术与原理42.1Android42.2PHP52.3SQL 语言及MySQL数据库62.4UML建模技术6第三章需求建模73.1功能性需求概述73.1.1系统功能模块划分图83.1.2系统用例图83.2核心用例文档103.2.1用例列表103.2.2用例:UC01开始排队103.2.3用例:UC02初次查询113.2.4用例:UC04开始就餐123.3领域模型14第四章架构设计154.1系统架构154.1.1服务端架构164.2子系统的功能设计与结构184.2.1排队状况信息查询子系统184.2.2排队状况信息更新子系统184.2.3队列管理系统184.3业务用例的实现194.3.1查询排队信息、更新信息19第五章模块设计215.1客户端启动模块215.2客户取消就餐模块225.3获取信息模块235.4获取客户电话号码模块245.5定时器模块255.6更新信息模块26第六章部署与应用276.1系统环境配置276.1.1开发环境配置276.1.2运行环境配置276.2客户端部署286.3服务端部署29第七章结论30致谢31参考文献32第一章 前言本章为论文的第一部分,主要论述小型餐馆排队系统的背景与意义,通过研究与分析开发现状,确定该系统的开发目标和范围,最后简要介绍本论文的结构。1.1 项目的背景和意义移动互联网是当前信息技术领域的热门话题之一,它体现了“无处不在的网络、无所不能的业务”的思想,正在改变着人们的生活方式和工作方式,移动互联网使得人们可以通过随身携带的移动终端(智能手机、平板电脑等)随时随地乃至移动过程中获取互联网服务。12在众多智能设备操作系统中,目前市场上主要有苹果公司的IOS系统,谷歌公司的Android系统,Blackberry公司的黑莓系统以及微软公司的Windows Phone系统3。而在我国,Android系统占有最大的消费者份额。包括Android在内的大多智能设备相较于传统PC,拥有更多的传感器,更便于携带,不少开发者利用传感器的便利性开发了许多使消费者日常生活更加便利的移动应用,其中一大类别便是利用GPS、A-GPS进行定位的美食应用。4 Error! Reference source not found.当前市场上的许多美食应用主要是在消费者进行消费前提供餐馆信息给消费者,方便消费者做出最终的选择,然而在排队管理这个垂直市场上,大多数小型餐馆仍旧采用传统的叫号方式。小型餐馆排队系统正是以这个比较小的需求为切入点,希望能使餐馆的排队管理更加智能,也更加方便客户。现在的shopping mall,每到用餐高峰期,比较热门的餐馆门前总会排起长龙,而大多数顾客只能在餐馆门前等待叫号,因为如果中途在其他地方闲逛,很可能因为过号而需要重新排队。这种状况使得一些顾客不会选择已经有许多人排队的餐馆,间接造成餐馆损失了这一部分客户。另外,长时间的等待也会使顾客不耐烦,中途放弃排队或者认为该餐馆的服务较差。由此看来,如果可以利用顾客随身携带的android设备传递当前的排队状况信息,可以改善这一状况,使得餐馆得到更好的评价以及利润,同时也方便了顾客,该系统经过优化后也可以由此获取一定的利润。1.2研究开发现状分析经过在我国各大android电子市场(如豌豆荚、Google play、安卓市场)的调查,美食应用相当受消费者欢迎,下载量很大,国内各大互联网公司(腾讯、网易等)也都开发了相关应用来争夺市场份额。其中以以下几类应用为主:基于地理位置信息的美食发现和分享服务应用(例如大众点评、食神摇摇、好客美食、美食达人):这类应用向消费者提供了附近乃至同城餐馆的相关信息(如价格、地理位置、优惠等),同时消费者在就餐后可以根据口味、服务、环境等因素对餐馆做出评价,这些评价作为更多的消费者在进行决策时的参考信息;订餐应用(例如饿了么、易外卖):这一类美食应用主要为消费者提供订餐服务。移动应用的展示方式及效率高于传统的电话订餐方式。这两类美食应用相当多,但是却无法在消费者排队时提供实时的排队信息。目前许多小型餐馆使用的有以下方式:人工叫号方式,电子屏显示方式以及使用叫号器通知的方式。采用人工叫号方式的餐馆会在顾客排队时,先发给每位顾客一个带有序号的就餐牌,要求顾客在餐馆附近等待,由服务员喊号的方式通知顾客进入餐馆就餐。这种方式的优点在于布置十分简单,所采用的工具可以是最简单的纸笔,服务员不需要经过专门的培训。缺点在于叫喊的方式在嘈杂的环境下,部分顾客可能不会注意到,同时顾客也不能离餐馆太远(大概10米以内);采用电子屏显示方式比前一种稍好一些,但是顾客仍旧需要时刻观察电子屏显示的信息,同样的,顾客不能离餐馆太远(大概30米内);另外还有少部分采用专门的叫号器的餐馆,比如鲜芋仙以及仙芋小栈,这种方式避免了嘈杂的叫喊声,顾客也不用时刻注意餐馆是否进行叫号,缺点在于每一桌顾客都需要一个叫号器,初始的硬件投入成本较高。本论文借鉴叫号器的排队管理方式,将客户日常使用的android作为叫号器,节省了硬件投入成本,而且android客户端也方便餐馆随时更改反馈的信息。基于市场背景以及对已有方案的分析,为小型餐馆提供专门的排队管理系统具有一定的可行性。1.3项目的目标和范围该系统是在对现有的排队管理系统的分析的基础上,研究开发适合小型餐馆的基于android客户端的餐馆排队系统。通过本系统,客户可以查询目前在排队队伍中所处的位置,餐馆可以管理排队队列。此方式在提高餐馆排队管理效率的同时,也使客户有更好的就餐体验。该系统运用面向对象的分析与设计思想,整个系统操作简单,开发过程严格遵循软件工程的要求,做到模块化分析、模块化设计和代码编写的模块化。1.4论文结构简介本论文旨在设计一个提供专门的基于android的餐馆排队管理系统,文章结构如下:第一章:前言,包括项目的背景和意义、现状分析、项目目标和范围以及论文结构简介;第二章:技术与原理,简单描述开发本系统所采用的技术,包括Php服务器,MySQL数据库,Android客户端,UML建模方法;第三章:需求建模,通过软件工程方法建模,建立用例图、用例文档、活动图、领域模型以明确用户需求;第四章:架构设计,主要描述系统架构、用例实现的顺序图等;第五章:模块设计,描述主要类的说明及接口、介绍主要关键方法的算法、界面设计;第六章:部署与应用,描述系统的运行环境和网站的部署发布;第七章:总结,概括自己工作的优点、不足以及改进措施。第二章 技术与原理本章主要介绍开发本系统的C/S模式,以android应用作为客户端,php服务器作为后台管理,所采用的Mysql数据库以及JSON建构,最后简要介绍一下本系统所采用的建模方法UML。2.1 Android Android是一款基于Linux修订版本的移动操作系统。最初是由同名的Android公司于2005年开发的。尔后,Google收购了Android公司,并接管了它的整个开发团队。使用Android的主要优势在于Android系统是开放和免费的,而且提供了统一的应用程序开发方法。开发人员只需要为Android进行开发,开发出的应用程序可以运行在许多不同的设备上,只要这些设备使用的是Android系统。Android系统本身提供以下主要功能:连接性支持GSM/EDGE、Wifi、LTE、蓝牙等多种网络连接方式。消息传递支持SMS和MMS。Web浏览器基于开源的WebKit。硬件支持摄像头、电子罗盘、距离传感器、GPS(全球定位系统)、A-GPS等。多点触控支持多点触摸屏幕,支持电容屏和电阻屏。多任务支持多任务运行以及后台服务运行。tethering支持使用Wifi或者蓝牙将android设备作为优先/无线移动热点实现Internet连接共享。兼容性市场上有数以千计的不同android设备,但是android应用可以兼容大部分设备。另外许多廉价android设备使得android在发展中国家有很高的市场占有率,所开发的应用可以惠及更多用户6。2.2 PhpPHP,是英文超文本预处理语言Hypertext Preprocessor的缩写。PHP 是一种 HTML 内嵌式的语言,是一种在服务器端执行的嵌入HTML文档的脚本语言,语言的风格有类似于C语言,被广泛地运用。PHP能做很多事,但PHP主要是在Web开发中用于服务端的脚本程序。PHP需要安装PHP应用程序服务器去解释执行,是用来协助Web服务器工作的编程语言,也可以说是对Web服务器功能的扩展,并外挂在Web服务器上一起工作。PHP有以下主要功能:1.收集表单数据表单是网络编程中最常用的数据输入界面。表单通常在提交时可以使用GET或POST的方法将数据发送给PHP程序脚本。在PHP脚本中,可以以PHP变量的形式访问每一个表单域在PHP脚本中使用。2.生成动态网页PHP脚本程序可以根据用户在客户端的不同输入请求,在服务端运行该脚本后,动态输出用户请求的内容。客户端能接收到想得到的结果,但他们无法得知其背后的代码是如何运行的。3.字符串处理PHP把字符串作为一种基本的数据类型来处理。在PHP中提供了丰富的字符串处理函数,以及使用强大的正则表达式来对字符串或文本进行搜索、查找、匹配、替换等操作。6.支持大范围的数据库7.会话跟踪控制用户访问Web服务器通常是使用HTTP协议完成的,但它是一个无状态的协议,没有一个内建机制来维持两个事务之间的状态。也就是当一个用户在请求一个页面后再请求另外一个页面时,HTTP将无法告诉我们这两个请求是来自同一个用户。但是使用PHP可以使用会话控制思想在网站中跟踪一个用户,这样就可以很容易做到用户登录的支持,并根据某个用户的授权级别和个人喜好显示相应的内容,也可以根据会话控制记录该用户的行为。7 82.3 SQL 语言及MySQL数据库SQL是英文Structured Query Language的缩写,意思为结构化查询语言。SQL语言的主要功能就是同各种数据库建立联系,进行沟通。按照ANSI(美国国家标准协会)的规定,SQL 被作为关系型数据库管理系统的标准语言9。SQL 语句可以用来执行各种各样的操作,例如更新数据库中的数据,从数据库中提取数据等。目前,绝大多数流行的关系型数据库管理系统,如Oracle、Sybase、Microsoft SQL Server、Access等都采用了SQL语言标准。虽然很多数据库都对SQL语句进行了再开发和扩展,但是包括Select、Insert、Update、Delete、Create以及Drop 在内的标准的SQL 命令仍然可以被用来完成几乎所有的数据库操作10。MySQL数据库系统以其免费的、源代码开放、跨平台、使用方便、访问效率高、独特的权限系统等优秀特点,成为动态Web站点的主流数据库。PHP与MySQL都可在Windows, Linux, Unix等流行的操作系统下运行,所以基于PHP和MySQL的程序,在系统需要时,可以轻易地移植到不同的系统平台上。因此面对快速发展的互联网,PHP+MySQL成为Web开发长期规划的最好选择。MySQL主要优势是:1.速度快,稳定,使用容易,价格诱人,支持查询语言。2.性能优越,许多客户端可同时连接到服务器,多个客户机可同时使用多个数据库,可利用多个查询语句,并查看其查询结果,实现交互式地访问MySQL.3.连接性和安全性好,MySQL完全网络化,MySQL数据库可以在互联网的任何端口访问,还能进行访问控制。4.可移植性强,MySQL可以在不同版本的Unix系统中使用,同时也可以在Windows系统中使用。11 122.4 UML建模技术UML(Unified Modeling Language)是一种建模语言,是用来为面向对象开发的软件系统进行可视化描述、建造和文档编制的建模语言9。在面向对象分析过程中,强调的是在问题领域内发现和描述对象;在面向对象设计过程中,强调的是定义软件对象以及他们如何协作以实现需求。13 14- 6 -第三章 需求建模本章主要分析本系统的功能性需求,给出系统总用例图,总结用例列表,并从中列举几个核心用例描述用例文档和绘制其活动图,最后再分析本系统的领域模型。3.1 功能性需求概述角色需求客户1、排队登记的时候越简便越好,即使是第一次来改餐馆也能快速登记等候用餐。2、候餐时不必一直在餐馆门口等待,可以到餐馆附近的商店闲逛,可以随时查看当前的排队状况,自己可以估计时间,在快轮到自己时回到餐馆。3、如果在候餐过程中,觉得候餐时间过长或者想换餐馆,可以立即通知餐馆,取消候餐,而不必专门跑到餐馆前台。4、不容易因为错号而失去就餐机会餐馆1、登记用户排队以及安排用户就餐的流程越短越好。2、尽量节省人力。3、系统布置起来较简单,且成本较低廉。4、餐馆前保持整洁的环境,给顾客留下较好的影响。通过分析小型餐馆消费者在排队时的行为的基础上,参考国外现有比较成熟的基于IOS系统的排队管理系统以及传统的排队系统方案。系统的主要业务如下:(1)客户端:用户使用android设备可以查询自己是否在排队,有多少人排在其前面,从而估计自己的就餐时间。(2)后台:管理员负责将需要排队就餐的新客户加入系统的排队队列中,安排队伍最前面的客户用餐,查看排队队伍列表,并编辑该列表。3.1.1 系统功能模块划分图根据对系统需求的分析,将系统划分为四个模块,它们分别是:用户查询模块、管理员添加新用户模块、客户开始就餐模块、管理队列模块。系统功能模块结构如图3-1所示:排队管理系统用用户查询添添加用户购用户就餐订管理队列购取消就餐图3-1 系统功能模块划分图3.1.2 系统用例图用例图(use-case diagram)用于显示若干角色(actor)以及这些角色与系统提供的用例之间的连接关系。用例是系统提供的功能(即系统的具体用法)的描述。通常一个实际的用例是文本形式的描述,广泛应用于需求的发现和记录工作中,作为用例符号的文档性质。实际上,用例就是需求,主要是说明系统如何工作的功能性或行为性需求。按照“FURPS+”需求类型,用例强调了“F”,但也可以用于其他类型。15该系统的参与者主要分为以下两种角色:用户(正在排队的顾客)、管理者(餐馆的迎宾员)。该排队管理系统的用例如图3-2所示:图3-2 排队管理系统总用例图3.2 核心用例文档3.2.1 用例列表用例编号用例名称描述参与者UC01开始排队客户决定在餐馆用餐,开始排队客户,迎宾员UC02初次查询客户初次使用客户端查询其排队状况客户UC03再次查询客户使用客户端再次查看排队状况客户UC04开始就餐客户在迎宾员的引导下开始进入餐馆用餐客户,迎宾员UC05管理排队队列迎宾员对排队队列进行管理迎宾员UC06取消就餐客户向餐馆要求取消就餐,不再排队客户3.2.2 用例:UC01开始排队范围:小型餐馆排队管理系统级别:用户目标主要参与者:客户、迎宾员涉众及其关注点:用户:快捷地进行登记排队迎宾员:快捷地帮客户登记,安排客户开始排队前置条件:客户到达餐馆,见到迎宾员,餐馆无空位,需要排队后置条件:迎宾员提示客户已经开始排队主成功场景:1、客户到达餐馆,向迎宾员表达就餐意愿2、迎宾员询问客户电话号码3、客户告诉迎宾员自己的电话号码4、迎宾员点击“添加新客户”按钮5、迎宾员正确地输入客户的电话号码6、系统显示所输入的电话号码,提示确认7、迎宾员点击“确认”按钮8、系统提示成功添加9、迎宾员告诉客户“已经成功进行排队,请耐心进行等待,并可以随时打开android客户端查看排队进度”扩展:6a、迎宾员输入了错误的电话号码1、迎宾员点击“取消”按钮2、跳转到主成功场景步骤28a、系统提示号码错误或者号码为空,添加失败1、跳转到主成功场景步骤33.2.3 用例:UC02初次查询范围:小型餐馆排队管理系统级别:用户目标主要参与者:客户涉众及其关注点:客户:希望能够得到目前自己的排队状况。前置条件:用户已经成功排队,且客户的android设备上已经安装系统的客户端成功保证:客户端显示排队信息主成功场景:1、客户在android设备的启动器中点击该系统的客户端图标2、客户端成功启动3、客户在android设备下滑提示栏(notification bar)4、客户端显示“您前面还有x人在等待就餐”5、客户在android提示栏查看信息扩展:2a、客户端提示没有插入sim卡1、客户插入可用的sim卡2、跳转到步骤12b、客户端提示网络错误1、客户检查android客户端是否有成功的网络连接,客户端是否被网络防火墙屏蔽2、跳转到步骤12c、客户端提示“查找不到您的排队信息,请先到餐馆登记进行排队”1、跳转到用例“开始排队”3.2.4 用例:UC04开始就餐范围:小型餐馆排队管理系统级别:用户目标主要参与者:客户、迎宾员涉众及其关注点:客户:快速进入餐馆用餐迎宾员:引导客户进入就餐,并将客户从排队队列中删除前置条件:客户已加入用餐队列,客户回到餐馆前成功保证:用户进入餐馆就餐主成功场景:1、迎宾员询问客户电话号码。2、迎宾员点击“开始就餐”按钮。3、系统弹出确认对话框 。4、迎宾员点击“确认”。5、客户进入餐馆就餐。扩展:3a、迎宾员点击“取消”回到主成功场景步骤1UC01、02、04的活动图如图3-3所示:图3-3 UC01、UC02、UC04活动图3.2.5 领域模型领域模型是对领域内的概念类或现实世界中对象的可视化表示。本系统主要涉及用户、系统管理者、订单、菜品、留言板等主要对象。系统的领域模型如图3-4所示:图3-4 系统领域模型存在Waiting Customer、Restaurant、Waiting Message三个概念类,Waiting Customer的属性有姓名(name)和电话号码(phone number),类似的,Restaurant的属性是name,最后,waiting message的属性为简单的一个数字,即queue number。用于描述这样一个常见的场景,一个餐馆有多个排队候餐的顾客,每位顾客每隔一段时间就可以查询或者从餐馆接收到一条关于自己排队状况的信息(Waiting Message),这些信息告诉客户现在其前面还有多少个客户在等待。- 32 -第四章 架构设计4.1 系统架构本系统的整体架构如图4-1图4-1 餐馆排队管理系统整体架构图这个架构比较简单,也易于理解,左边的客户端模块和右边的服务端模块可以使用HTTP协议的GET/POST方法进行通信,客户端通过GET方法从服务端获取客户的排队信息。在本系统中,客户端向服务端发起查询请求使用的参数是客户端的电话号码,而服务端只需返回一个数字代表客户当前在排队队伍中所处位置即可。当然,考虑到未来可能对该系统的优化和拓展,也可以考虑使用基于HTTP的文本JSON协议来进行通信。有关的JSON格式的基础协议框架设计如下:“code”:”正确或错误代码号”,“message”:”提示将信息”,“result”:”返回内容”这个基础协议框架中的code字段主要用于给客户端来识别处理的结果,可以是数字;message字段用于说明返回的结果,使用字符串类型;result字段则为数据结果。之后,对于客户端,使用Android应用框架中的HTTP Client组建从服务端的HTTP API接口接收排队信息,之后交由Android UI界面层渲染界面并最终展示在客户面前。HTTP API接口和MySQL数据库之间的“API Debug后台”可以用于调试服务端的API接口。4.1.1 服务端架构本系统的服务端采用MVC的设计模式。所谓MVC模式,指的是一种划分系统功能的方法,它把一个应用的输入、处理、输出流程按照Model、View、Controller的方式进行分离,这样一个应用被分成三个层模型层、视图层和控件层。MVC设计模式的基本结构定义为:控制器,用来处理用户命令以及程序事件;模型,维护数据并提供数据访问方法;视图,数据的显示。将项目应用分成:Model(业务逻辑层及持久化层), View(视图层)和Controller(控制器层)这三个基本部分16。另外服务端将采用基于PHP官方框架Zend Framework和PHP模板引擎Smarty的Hush Framework。该框架沿用了Zend Framework的编码规范,同时去除了Zend Framework一些比较少用的类库,对一些效率不够高的地方进行优化。由此设计出的服务器的整体框架如图4-2.图4-2 服务器Hush Framework架构图在用户客户端向HTTP服务器发送HTTP请求后,服务器接收到请求就会调用这个框架程序来处理,由Hush Framework接管接下来的处理工作。首先,Hush Framework的请求分发器(Dispatcher)分析客户端发送过来的HTTP请求所包含的信息,并根据请求的URL地址来指定使用相应的控制器(Controller)来处理请求。(可以看出,这正像是MVC模式中的Controller层)然后,被指定的控制器会选择合适的模型类(Model)用于持久层数据的获取和存储,处理请求的业务逻辑,在逻辑处理完成后,控制器调用视图层(View)组合出最终的HTML代码。最后,服务器将排队信息通过HTTP协议返回给客户端,客户端再对接收到的排队信息进行处理,显示给用户。4.2 子系统的功能设计与结构4.3.1 排队状况信息查询子系统用户在android的启动器中打开客户端后,客户端首先检查用户的android设备是否有插入SIM卡,同时检查SIM卡的提供商,之后客户端检查用户的android设备是否有网络连接。因为客户端需要使用用户的电话号码向服务端查询排队信息,所以SIM卡和网络连接的存在是系统能正常运行的前提。确认了SIM卡和网络连接后,向服务端发起查询,得到该用户的当前排队信息(用户必须现在餐馆登记自己的号码才能索引到自己的信息),并创建一个android服务,使得排队信息常驻在android设备的提示栏上(notification bar),用户只要下拉提示栏就可以看到自己的排队信息,该应用没有常见的主界面,也不需要。同时用户可以点击提示栏上的“退出”按钮来退出客户端,如需再次查询,则重新打开客户端即可。4.3.2 排队状况信息更新子系统用户在首次启动android客户端后,如果没有手动退出,以后查看信息便不需要麻烦的启动客户端步骤。信息更新系统会每隔一段时间自动再次向服务器发起查询请求,并将查询到的信息显示在提示栏,用户只需下拉提示栏就可以看到最新的排队状况。4.3.3 队列管理系统迎宾员(系统管理员)可以在后台对当前队列进行管理。当有新客户需要排队时,询问客户的电话号码,并以电话号码作为客户标示,将客户加入到排队队列的队尾。当轮到某名顾客进入餐馆就餐时,迎宾员在可以将客户从排队队列的队首移除,代表客户已经开始就餐,不在排队队伍中了。最后,如果餐馆出于特殊需要,也可以把某名在队列中间的客户强行移除。4.3 业务用例的实现本系统采用顺序图来描述其主要业务用例的实现,由于篇幅有限,下面以查询排队信息以及更新信息两个主要用例进行分析(这两个用例密切相关)4.3.1 查询排队信息、更新信息图4-3描述了实现业务添加菜品信息的顺序图,其含义说明如下:用户打开客户端后,客户端的oncreate()函数会通过intent启动排队信息服务queueService,该android服务在用户手动退出应用程序前会一直在后台运行着。queueService.java首先向queueSIMCard对象发出查询请求,该对象会调用android系统的TelephoneManager的相关方法检查android设备是否存在SIM卡,SIM卡的号码以及运营商编号,queueSIMCard再生成SIMCardinfo对象作为返回信息给queueService。queueService由SIMCardinfo得到android设备的号码信息,使用HttpURLConnection向服务器发起查询请求,服务器方由SearchController控制器处理该请求,并调用SearchDAO层的接口,在数据库中查询得到该电话号码对应的队列位置序号。之后将信息返还给queueService,queueService服务再调用android的NotificationManager,将信息显示在提示栏上。图4-3 添加菜品信息顺序图第五章 模块设计5.1 客户端启动模块模块名称:客户端启动模块模块功能:客户在android设备上启动客户端。模块运行原理描述:该模块是客户端的主程序,该模块会对客户端进行初始化,检查SIM卡信息、网络连接状况,并启动信息更新服务,以及NotificationManager,在提示栏上显示信息。模块算法关键代码:public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); /setContentView(R.layout.activity_main); context = this; /检查 SIM 卡 boolean checkSim = true; /queueSimCard.checkSim(); if (!checkSim) String tipStr = context.getString(R.string.noSim); Toast.makeText(context, tipStr, Toast.LENGTH_LONG).show(); return; /检查网络 boolean checkNetwork = true; / queueNetwork.queueCheckNetwork(context); if (!checkNetwork) String tipStr = context.getString(R.string.checkNetwork); Toast.makeText(context, tipStr, Toast.LENGTH_LONG).show(); return; /启动服务 Intent serviceIntent = new Intent(); serviceIntent.setClass(getApplicationContext(), queueService.class); startService(serviceIntent); 5.2 客户取消就餐模块模块名称:客户取消就餐模块模块功能:用户可以通过点按按钮并确认,远程向餐馆服务端发送取消就餐的请求。模块运行原理描述:该模块主要用于产生取消就餐的信息,并产生提示框。模块算法关键代码:number = queueSimCard.getNativePhoneNumber();String tipStr = context.getString(R.string.cancelBooking);Builder dialog = new AlertDialog.Builder(this);dialog.setMessage(tipStr);dialog.setPositiveButton(确定, new OnClickListener()/取消public void onClick(DialogInterface arg0, int arg1) / TODO Auto-generated method stubString tipStr = context.getString(R.string.cancelUrl);String urlStr = String.format(tipStr, number);queueNetwork.queueGetContent(urlStr);finish(););dialog.setNegativeButton(取消, new OnClickListener()public void onClick(DialogInterface dialog, int which) / TODO Auto-generated method stubdialog.cancel();finish(););dialog.show();5.3 获取信息模块模块名称:获取信息模块功能:该模块用于向服务器请求获取排队信息。模块运行原理描述:该模块会利用queueCheckNetwork方法检查网络连接,当存在网络连接时,建立HTTP连接,向服务器发送请求,得到服务器的反馈后,关闭HTTP连接。模块算法关键代码:public static boolean queueCheckNetwork(Context context)boolean flag = false;ConnectivityManager cwjManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); if (cwjManager.getActiveNetworkInfo() != null)flag = cwjManager.getActiveNetworkInfo().isAvailable(); return flag;/* * 返回 json 数据格式 * * param urlStr * return */public static String queueGetContent(String urlStr) String resultData = null;try URL url = new URL(urlStr);HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();/ 得到读取的内容(流)InputStreamReader in = new InputStreamReader(urlConn.getInputStream();/ 为输出创建BufferedReaderBufferedReader buffer = new BufferedReader(in);5.4 获取客户电话号码模块模块名称:获取客户电话号码模块模块功能:该模块用于得到客户的电话号码,以作为客户的标示符。模块运行原理描述:利用android的PhoneManager得到Sim卡信息,返回电话号码的字符串给queueService模块。模块算法关键代码: telephonyManager = (TelephonyManager) context .getSystemService(Context.TELEPHONY_SERVICE); public static String getNativePhoneNumber() String NativePhoneNumber=null; NativePhoneNumber=telephonyManager.getLine1Number(); return NativePhoneNumber; public static String getProvidersName() String ProvidersName = null; / 返回唯一的用户ID;就是这张卡的编号神马的 IMSI = telephonyManager.getSubscriberId(); / IMSI号前面3位460是国家,紧接着后面2位00 02是中国移动,01是中国
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 商标公司合伙协议书
- 播放凉凉协议书
- 什么是反恐协议书
- 自动驾驶can协议书
- 协议书转换器原理
- 芝麻供种回收协议书
- 人行mq交互协议书
- 2025年量子计算在遗传学中的应用考核试卷
- 2025年旅游气象服务应用考核试卷
- 工业废水处理污泥减量化与资源化技术考核试卷
- 迈瑞心电监护仪使用流程
- 2025中国家庭教育服务行业发展现状及未来趋势报告
- 全国一等奖高一语文统编版必修下册《青蒿素:人类征服疾病的一小步》公开课精讲课件
- 2025年无线电广播接收设备行业分析报告及未来发展趋势预测
- 2025年小学五年级语文上学期期中综合测试试卷(含答案)
- 2025年脉石英行业分析报告及未来发展趋势预测
- 2025年汽车救援行业分析报告及未来发展趋势预测
- 雨课堂在线学堂《大唐兴衰》作业单元考核答案
- 无人机教学平台建设方案
- 2025年政治理论时政热点知识试题库(+答案)
- 江苏省徐州市云龙区2024-2025学年六年级上学期语文期中试卷(含答案)
评论
0/150
提交评论