毕业设计(论文)-基于Android的餐饮预订系统设计与实现.doc_第1页
毕业设计(论文)-基于Android的餐饮预订系统设计与实现.doc_第2页
毕业设计(论文)-基于Android的餐饮预订系统设计与实现.doc_第3页
毕业设计(论文)-基于Android的餐饮预订系统设计与实现.doc_第4页
毕业设计(论文)-基于Android的餐饮预订系统设计与实现.doc_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

杭州电子科技大学本科毕业设计目 录1 引言11.1 课题背景11.2 国内外研究动态21.3 选题的意义32 技术简介52.1 Android介绍52.2 Eclipse介绍62.3 ASP.NET介绍62.4 SQL Server数据库72.5 C/S架构73 系统分析83.1 可行性分析83.2 功能需求分析94 系统设计134.1 概述134.2 系统架构设计134.3 模块结构及流程144.4 数据库设计165 系统实现195.1 Android环境搭建195.2 客户端实现195.3 服务器端实现256 系统测试296.1 测试环境296.2 测试内容296.3 测试结果297 总结与展望30致谢32参考文献331 引言1.1 课题背景21世纪,随着经济的发展,生活条件越来越好,人们对于生活娱乐相关服务的需求也越来越高,因此,我国的餐饮服务行业呈现了非常繁荣的景象【1】。但是,伴随经济增长而来的是越来越快的生活节奏,人们希望在更短的时间内得到更好的服务,以便节省时间做更多的事情。然而,传统的餐饮行业一直都是单纯的借助于人工来进行“饭店员工顾客”的相关交流,这种餐饮模式需要饭店来投入巨大的人力和物力资源。服务员要完成每天的迎接顾客、处理订单、为顾客分配座位等等工作,并将相关的信息记录在纸上,晚上下班之前还要进行当天的营业额的结算,很容易出现差错。而且,如果碰上客流高峰期,不仅饭店方面周转不开,顾客也要排队等候很长时间,给饭店带来不好的影响,也会耽误顾客大量的时间,给顾客带来不好的就餐体验,甚至因此而损失大量的客源。餐饮行业这种传统的经营方式与现代化的快节奏社会生活格格不入,对于饭店的行业竞争力的提高极为不利。全套设计加扣 3012250582而餐饮行业各个厂家也意识到传统的经营模式已经越来越难以满足当今社会的需求,为了提高企业的核心竞争力,纷纷改善自己的经营和管理方法,在饭店经营和技术创新上都耗费了很大的物力和财力。于是,产生了各种无线点餐系统,比如今年在国内很火的饿了么网站、美团和淘点点等等订餐网站。现在,无线点餐已经成为了一种时尚,并开始广泛的应用在世界各个餐饮机构中,而传统的纸笔记录的方式已经逐渐消失在我们的视野中。这些无线点餐系统有效的解放了餐饮结构员工的工作压力,让餐饮结构能够更合理的安排员工的工作,为各个餐饮机构节省了大量的人力和物力,还提高了餐饮机构的效率,同时为顾客节省了大量的时间,给顾客提供了全新而且更好的就餐购餐体验,在就餐高峰期也能为顾客提供更好的服务,大大提升了餐饮机构的市场竞争力。于此同时,随着通信技术的不断发展,各种基于网络的通信方式应运而生,移动终端越来越受到大众的欢迎。尤其是2007年美国谷歌公司推出Android操作系统并开放源码之后,越来越多的手机开始采用Android操作系统,2011年Android操作系统取代塞班系统成为全球市场占有率最高的手机操作系统。而谷歌公司开放Android源码的举措,更是使得各种基于该平台的移动APP被它的爱好者和开发者开发出来。而各种无线通信协议和技术的发展为Android应用的开发提供了更好的技术支持。所以,开发基于Android平台的网上订餐系统非常有必要,这种系统具备灵活性、方便性等特点,可以为餐饮机构创造更高的利润,提高餐饮机构的市场竞争力。1.2 国内外研究动态回首上个世纪,在计算机尚未普及之前,世界范围内的餐饮行业还是采用通过人工记录的传统方式在纸上存储就餐订餐的信息。而在八九十年代,由于计算机相关技术的改进,制造计算机的成本开始降低,个人计算机开始走入人们的日常生活,餐饮行业也逐渐开始采用计算机来进行记账和结算等工作,大大提高了工作效率。而在20世纪末期,计算机相关的技术飞速发展,局域网技术逐渐成熟,这就为基于局域网的智能点餐系统的出现提供了可能。而局域网智能点餐系统的成功和无线网络技术的发展也为无线的智能点餐系统打下了良好的基础。1.2.1 国外动态得益于较早的科技起步,欧美日国家经济发展一直领先国内,也更早的步入快节奏的社会生活,对于物质生活方面的服务要求也高,所以餐饮行业的技术革新也进行的较早。尤其是近些年,在各种通信协议和技术革新的支持下,无线点餐系统已经开始在各个餐饮机构出现,并有着越来越火的势头。西方的科技巨头德国早在2007就已经开始在餐饮行业进行技术性的改革,全球第一家全自动的餐厅就是在德国出现的。在这个自动餐厅中,从点餐到送菜,全部依靠自动的点餐、送餐设备来完成,完全没有人工的干预。这种新型的餐饮机构经营模式吸引了大量的客户,在创造了大量的利润的同时给予了就餐者全新的就餐体验。此后,各个国家的餐饮行业也开始引入这种模式,自动化的智能点餐系统逐渐开始向全世界的餐饮机构普及。在德国之后,亚洲的经济巨头日本也在餐饮领域进行了技术创兴和应用-开发了一个基于无线终端的智能化点餐系统。在该系统中,就餐者可以通过移动终端登录该系统进行点餐,点餐成功后,该系统会发射无线信号将相关的信息发送给服务器,厨师通过服务器得到就餐者的点餐信息,之后将做好的菜肴通过自动传输设备发送到餐桌旁供就餐者食用。而英国也不甘落后,率先发明了采用蓝牙技术进行点餐的智能点餐系统,客户不用在饭店等候就餐,而是根据系统提示的时间前往饭店进行就餐,大大节省了就餐者的时间,为饭店和顾客都提供了很大的方便。1.2.2 国内动态相较于国外起步很早的餐饮行业技术改革,我国的餐饮行业受经济和技术等各方面因素的限制,起步较晚。在21世纪初期,我国才开始进行餐饮行业的技术改革。但是国内经济水平的快速提升,餐饮行业也呈现出欣欣向荣的景象。近几年,基于网站的订餐系统的出现,对于我国餐饮行业的发展起到了极大的推动作用。在这类系统中,用户可以通过连接Internet网络,登入相应的网站进行点餐。这种点餐服务主要面向于外卖配送。这种方式大获成功的案例就是饿了么网站、美团外卖网站等网站。这些网站不必须注册、登陆,只需要顾客买下某个订单,输入所在地址和联系方式即可。这种方式不受距离的限制,你可以在北京为你在杭州的朋友点上一份东坡肉,无需你的朋友出门,就可以有新鲜的东坡肉下饭。这种订餐方式尤为受到国内大学生的欢迎。但是,基于移动手机终端的订餐系统并不是太多,还没有形成一个完善的产业链,国内餐饮行业在这个方面还有很大的进步空间。1.3 选题的意义传统的餐饮行业经营模式是“服务员顾客”模式,通过一对一的交流来完成订单,在这个过程中,顾客需要询问关于菜品信息与价格的内容,根据所得到的信息在考虑之后完成订单的确认;而服务员要给顾客解答相关的问题,还要将顾客所点菜品记录在纸上,最后在用户完成订单后将订单中的菜品种类交付给厨房,厨房才开始进行菜品的制作。在整个点餐过程中,浪费了顾客大量的时间,对于饭店,也造成了很大的人力方面的压力。尤其是就餐高峰期,饭店往往因为人员不足而导致许多顾客只能在一旁等待。这种经营模式不适合现代化快节奏的生活方式,难以给顾客良好的就餐体验,不利于饭店服务形象的提升,无法提高饭店在同行业内的市场竞争力。另一方面,随着宅男宅女的日益增多,外卖服务已经被大众普遍的接受,并逐渐成为一种新的就餐潮流。但是传统的外卖服务都是顾客打电话到餐饮机构进行购餐,而餐饮机构方面都是由人工进行信息的记录,在就餐高峰期很可能因为繁忙而将信息记录错误,给顾客带来不好的购餐体验,也给餐饮机构带来不必要的损失。而随着科学技术的发展,网络通信协议不断被开发出来并逐步的进行完善,无线网络几乎已经遍布全世界的各个角落。随之而来的是各种类型的移动终端便携设备的快速更新换代,为基于移动终端的各种应用程序也随之发展壮大,几乎涉及到人们生活和工作的方方面面。而移动智能手机一直在移动终端中占据有主导地位,基于智能手机平台的APP一直都深受大众的喜爱,基于该平台的网上餐饮系统也肯定具有广阔的应用市场。现在,市场上的手机的操作系统有谷歌公司的Android,另外还有美国苹果公司的IOS以及微软的Windows等几种,其中,Android的占有份额是最大的,独自占领了半壁江山【2】。而且Android是开放源码的,所以吸引了海量的软件设计师进行基于该系统的手机软件的研发,并且Android手机在价格方面一直都占据着很大的优势,能够满足普通大众的需求。因此,能够想象,Android系统必将在以后获得更大的成功。综上所述,基于Android的网上订餐系统的开发能够更好的满足人们对于餐饮行业的需求,使得餐饮机构为顾客带来更好的就餐购餐体验,提高餐饮机构的市场竞争力。2 技术简介2.1 Android介绍2.1.1 Android简介Android在英文中的翻译是“机器人”的意思,传入中国后,因为它的谐音,所以又被称为“安卓”。Android是世界著名的网络商业巨头Google在21世纪第六个年头发布的移动平台操作系统,它是在Linux系统基础上研发的,并且开放源码,主要应用于手机等移动智能便携设备。Android最开始是由现Google公司是副总裁Andy Rubin开发的,后来被谷歌收购。为了使Android被更多的人来应用,Google公司联合其他几十家大大小小的硬件、软件公司组建成为了开放手机联盟。所以,后来Android相关的研发都是由开放手机联盟来完成的。Android选用分层的系统体系,主要分成以下几个部分【3】。最底层就是Linux内核层,它是整个系统的基础,提供了基本功能;最高层为应用程序层,代码都是使用Java来实现的。中间的两个分别是程序框架和系统运行库,为开发人员进行移动应用的开发提供相关的组件和API。经过七年的发展,Android从最初的版本一步一步向前迈进,不断增加新的特性,扩展相关的功能。到现在,Android已经发布了近20个版本,目前最新SDK版本为Android 5.0。其中,市场占有率最高的版本为2.3。2.1.2 Android特性Android系统主要有下面介绍的几种特性【4】:1.支持组件的重用和替换的应用程序框架,我们可以对系统中的组件进行管理,对相关的应用程序进行添加或者删除。2.Dalvik虚拟机Android的代码都是通过Java实现的,Java文件经过编译之后再通过相关的处理变成Dalvik可以执行的文件,由Dalvik虚拟机来运行。3.内部集成浏览器该浏览器基于开源的WebKit引擎4.优化的图形库包括2D和3D图形库5.SQLite即内置的数据库,用来存储用户需要的数据信息6.多媒体支持包括常见的音频、视频和静态印象文件格式7.GSM电话依赖于硬件8.蓝牙Bluetooth,EDGE,3G,Wifi9.照相机,GPS,指南针和加速度计2.1.3 Android系统的四大组件在Android系统中,有4个常用的组件,下面来简单的介绍下它们:1.Activity 简介一个建立在Android上的应用程序中,通常有许多的Activity。每个Activity提供了一个图形界面,在上面添加相应的空间以对事件进行监听并作出响应。每个Activity都有一个状态值,通过系统来完成控制,用户是无法干涉的。这些Activity组成了一个Activity的栈,处于栈顶的那个Activity即为当前界面。2.Service 简介Service是运行在后台的服务程序。在使用Service之前需要创建一个继承自Service类的实现类,并在信息描述文件AndroidManifest.xml中对application 标签中进行相关信息的配置,然后调用Contex的startService()启动服务或者调用它的bindService()方法来绑定服务 。3.Broadcast Receiver 简介即广播接收器,其实也是一种对于事件的监听,属于后台组件。它可以对外部事件进行过滤,将需要的事件进行接收并根据接收到的信息作出响应。注册广播可以分为两种方式:第一种是静态注册,在信息描述文件中配置相应的信息;第二种是动态注册,需要在Activity的onResume()方法中进行广播接收器的注册。4.Content Provider简介即内容提供者,主要用于对外数据共享。通过它,应用程序之间的数据可以进行相互访问。其中的数据信息能够保存在SQLite中,也能存放在文件中。内容提供者的存在使得程序可以统一数据访问方式,为软件开发带来了便利。2.2 Eclipse介绍Eclipse是一个开放源码的、基于Java的可扩展平台,是一个框架和一组服务【5】。一般作为Java的开发环境用来进行Java软件的开发。但是,它不仅仅局限于Java语言的软件开发。在Eclipse里面,用户能够通过提供相关的插件进行其他语言的开发,比如在Eclipse中添加Android的相关组件,匹配相关SDK就可以进行Android项目的开发。此外,Eclipse中还可以对C/C+、PHP等多种编程语言的插件进行配置。2.3 ASP.NET介绍ASP.NET是美国微软公司开发的一种基于web服务器的动态网页技术。它的前身是ASP。ASP是微软在早期开发的,目的是为了将CGI替代,使用简单,方便。但是,由于ASP是面向过程的语言,不易于后期的维护和扩展,而且在大型项目中,性能无法到达应有的要求,所以微软公司开始着手对于ASP的改善。进过四、几年的不懈努力, ASP.NET被成功的开发出来,并逐渐取代ASP进行动态网页方面的开发。ASP.NET支持Java、Python、Ruby等多种语言的开发,但是最常用的语言是C#和VB.NET这两种。2.4 SQL Server数据库SQL Server是一种常用的关系型数据库(Relation Database)【6】,属于微软公司。在SQL Server中,数据保存在不同的数据表中,对于用户的CRUD操作都很方便,提高了编程的灵活性。在SQL Server中,开发人员可以根据自己的需求对数据类型进行定义;使用方便,便于用户掌握;与其他服务器连接机密,具备很好的性价比;可以保证良好的安全性。但是,SQL Server也有明显缺陷。首先,它只可以在Windows系统上运行,不支持其他如Linux等系统的开发;连接用户不能过多,否则会造成数据库系统的不稳定;等等。2.5 C/S架构C/S架构就是客户端/服务器架构【7】,是一种常用的软件设计结构,主要分为两层C/S结构和三层C/S结构。两层C/S结构把系统分成两个部分:即客户端和服务器。表示层和应用逻辑层被包装在一起,运行在客户端。三层C/S结构分为是表示层、中间层、数据层。表示层是用于展示用户图形界面,给用户提供一个与程序本身的切实交互,通过对事件的监听获取到用户对程序发出的指令与请求,发送到中间层。中间层则是负责将表示层发送过来的用户请求与指令进行处理,形成新的请求,再传递到数据层,在数据层根据得到的中间层的请求,进行CRUD操作,并将信息返回到中间层,最后中间层经过数据的封装将信息返回给表示层,表示层再与用户进行一个交互的动作。一般情况下,数据层通常是数据库服务器,实现着数据的存储和访问控制等,当前的这一层基本上都由专门的数据库管理软件来实现,例如本系统中使用到的SQL Server。 3 系统分析3.1 可行性分析可行性分析是进行一个项目开发不可或缺的准备工作,在通过可行性分析我们可以了解到将要开发的这款软件是否有好的发展前景,是否能够为使用者创造更好的价值,以及当前的科技水平下我们是否有对应的技术将这款软件开发出来等等。下面,我将从实用可行性和技术可行性两个方面进行简单的分析。3.1.1 实用可行性分析在进行一个系统开发之前必须考虑这个系统开发出来后有没有利用的价值空间,如果一个系统开发出来之后并不具备实用性,华而不实,那么开发这个系统就没有任何的意义了。因此,在开发系统之前,首先要对于系统的实用性进行析。我们学校坐落在杭州下沙大学城的中心地带,周边比较繁华,存在着各种各样的餐饮机构,附近学校的大学生经常在周边的餐厅中进行就餐或者订购外卖,这就为本系统的后期使用打下了良好的基础。经过了解,周边许多家餐饮机构并没有专门的系统进行订餐服务,还是沿袭着传统的经营模式,采用人工的方式进行营业,这就为本系统的使用提供了很好的机会。在这种情况下,如果餐厅使用该系统,那么必将加快餐厅的营业效率,节省餐厅的人力物力,也方便大学生们的就餐,给他们良好的就餐体验,那么餐厅的生意也将会很火,这样就能生成一个良好的商业循环。所以,该系统的开发在实用性方面没有问题。3.1.2 技术可行性分析对于一个项目的开发,如果仅仅考虑系统的实用性,而降其技术可行性的分析置之一旁,那么,在遇到难以解决的技术难题时,如果找不到解决的办法,该系统就只能处于空想的阶段,无法正常进行下去。所以,有必要在项目开发之前进行技术可行性的分析。对于这次课题,目的是开发一个基于android的网上订餐系统,不仅仅局限于本地服务,还需要做到客户端与服务器的网络通信,这样才能得到项目所需要的要求。因此,要考虑到一下几点:1.在该系统中需要对数据进行信息的增删改查等操作,这就需要一个存放数据的仓库。现在已经存在的存储数据的方式有文件、内存和数据库等,在此选用数据库作为数据的存储工具。2.饭店服务器端是搭建在网站上的,通过服务器进行数据的交换,进行数据库的连接,在此,根据市场上常用的开发软件和技术,选用ASP.NET进行网站的开发,通过IIS接受从web界面传来的请求,使用ADO.NET技术进行与数据库的连接操作。3.客户端是安装在移动终端上的,所以需要进行Android的开发,搭建环境,创建界面,使用Activity、Intent等组件来开发项目。然后在Android虚拟机上进行测试。综上所述,进行该系统的技术都已存在,在技术可行性方面没有问题。3.2 功能需求分析随着移动互联网时代的到来,各种通信协议也不断的被发明出来,各种移动终端也开始步入市场,尤其是移动智能手机慢慢的替代了早期的非智能移动通信设备,拥有手机的人的数量急剧增长,基于移动手机的各种应用软件也越来越多。考虑到Android手机的用户量,为了方便用户进行点餐就餐,在此提出了一种操作简便,功能齐全,占用资源少的网上订餐系统。于是提出本系统的主要功能。3.2.1 客户端概要功能分析客户端是面向顾客的,主要功能是菜品的预订,另外还需要其他一些附加的功能,具体有登陆功能,进行用户登陆;注册功能,用户只有在拥有权限的情况下才能进行登陆操作,所以需要没有用户权限的顾客在登陆之前进行用户的注册;菜品浏览功能,方便用户浏览该饭店内的菜品,相当于一个电子菜单;餐桌浏览功能,进行当前空闲餐桌浏览,方便那些想要在饭店内就餐的用户;购物车功能,将想要购买的菜品和预订的餐桌信心加入到购物车中,方便最后的结算;查看个人信息功能,方便用户进行个人信息的查看,并进行相关信息的修改;密码修改功能,进行个人密码的修改。综合上述功能分析,所以需要有以下几个界面:1.登陆界面需要有账号和密码的输入框进行信息的填入;登陆按钮,进行登陆功能的监听;注册按钮,进行注册请求的监听;后退按钮,关闭登陆界面的监听。2.注册界面需要有用户名、密码,方便用户填入注册信息;注册按钮,进行注册请求的监听;返回按钮,返回到登陆界面的监听。3.菜单界面登陆、注册按钮监听,跳转到登陆界面或者注册界面;用户信息菜单项,跳转到用户信息界面;修改密码菜单项,跳转到修改密码界面;我的外卖菜单项,跳转到我的外卖界面;我的预约菜单项,跳转到已预订餐桌界面;退出登陆菜单项,用于当前用户进行退出登陆的操作;点外卖按钮,跳转到菜品显示界面;订座位按钮,跳转到餐桌预订界面。4.显示菜品界面在此界面,需要展示菜品的信息,如菜品名称,菜品的图片,菜品的价格;下单按钮按钮,跳转到外卖购买界面;详情按钮,实现查看菜品详情的监听。添加和删减按钮,实现要购买的菜品数量的增减,并显示该菜品的数量;显示总共购买的菜品的数量并计算出总的价格进行显示。5.菜品详情界面该界面主要显示菜品的具体信息,包括菜品的名称,价格和具体的介绍,让顾客可以更清楚的了解该菜品的特点,在购买的时候做到心中有数。在此界面,加入订单按钮,可以使用户在了解该菜品的具体信息之后,根据个人的喜好选择是否购买该菜品。6.下单界面该界面方便用户在点好所需的菜品后进行最后的结算,将显示用户预订的菜品的名称、价格、数量以及总价,在此界面还可以输入备注,根据个人口味添加具体的要求;显示送餐地址,主要是显示地址和联系人的电话,可以点击这个信息框进入到修改信息界面,修改送餐地址和联系方式;下单按钮,在点击将生成订单,发送给服务器。7.餐桌显示界面该界面主要显示当前餐桌的情况,包括餐桌的编号,可容纳人数等,方便想到饭店内就餐的顾客提前了解餐桌情况并进行预订。选择按钮,方便用户可以选中某个餐桌,进行餐桌预订的确认。8.个人信息界面在此界面,将展示用户的用户名、地址、联系方式等基本信息,并可以进行修改;确认修改个人信息按钮,向后台发送修改个人信息修改请求,返回相应的提示信息。9.修改密码界面在此界面,用户可以进行密码的修改。用户需要输入原始密码、新密码和确认密码;修改按钮,向后台发送修改密码请求,返回相应的提示信息。10.我的外卖界面在此界面,将显示用户购买的菜品,主要显示菜品的名称,订单生成的时间和订单的状态。可以点击订单项,跳转到订单详情界面,显示详细的订单信息。11.订单详情界面在此界面,将显示用户某个订单项的详细信息,包括订单号,菜品名称以及其数量,送货地址和订单生成时间。如果该订单未结算,将显示取消订单按钮,用户可以进行取消订单的操作。12.我的预约界面在此界面,将显示用户餐桌预订的情况,显示订单号和订单状态以及订单生成时间等信息。3.2.2 服务器端概要功能分析服务器端是面向饭店的,方便饭店进行管理菜品、订单等相关信息,主要包括菜品管理功能,进行菜品的添加、删除和信息的修改,比如说调整价格等等;餐桌管理功能,进行餐桌的添加、删除等;餐桌订单管理功能,进行餐桌订单的状态修改,同时修改餐桌状态;菜品订单管理功能,进行订单状态的修改。综上所述功能,我们需要以下几个界面:1.菜品管理界面该界面显示菜单上所有菜品的编号、名称、详细信息、价格;添加按钮,进行菜品的添加;删除按钮,进行某个菜品的删除。2.餐桌管理界面该界面显示所有餐桌的编号、可容纳人数;添加按钮,进行餐桌的添加;删除按钮,进行某个餐桌的删除。3.餐桌订单管理界面该界面显示所有的餐桌订单,显示订单的编号,顾客的姓名、餐桌号、订单开始时间和订单结束时间。完成按钮,结算某个订单,并修改餐桌状态,删除按钮,可以用于删除已结束的订单。4.菜品订单管理界面该界面显示所有的菜品订单,显示订单的编号,用户的姓名、联系电话、送餐地址,订单开始时间、订单结束时间,订单的内容等信息,删除订单按钮,进行某条订单的删除;完成订单状态按钮,进行订单装态的修改。3.2.3 整体功能分析根据上述客户端概要功能分析和服务器端概要功能分析,可以得到客户端和服务器端需要实现的的基本功能。其中,客户端需要实现的功能有:登录、注册、浏览菜品、查看菜品详细信息、添加菜品到订单、查看餐桌、添加某个餐桌到订单、查看订单、确认和取消订单、查看个人信息、修改个人信息以及修改密码等功能。服务器端要实现的功能有:添加某个菜品、删除某个菜品、添加餐桌、删除餐桌以及餐桌订单管理和菜品订单管理等。根据上述功能分析,得到系统整体功能概述图。功能概述图如图3.1:图3.1 功能概述图4 系统设计4.1 概述经过前期对于当前餐饮行业现状的信息收集,再通过比较详细的系统分析之后,对于当前系统需要实现的功能已经有了清晰的认识,那么,接下来就开始总体的设计,主要包括系统架构、模块结构和数据库等的设计。4.2 系统架构设计4.2.1 系统设计原则要很好的完成设计,设计原则是必须的。该系统有很明晰的业务流程;并且需要处理的信息是记录信息;系统主要的使用者是顾客。根据这对这些具体的情况可以得出以下的系统设计原则【8】:1.实用性原则:这是设计软件之前需要考虑的最重要的原则。一款成功的软件,用户拿到手中,应该能解决他的实际问题,不然的话,这个系统做出来就会没人使用。2.可扩展性原则:系统需要具备一定的可扩展能力,以方便以后对系统进行一定的升级。如果系统不具备这个特点,那么如果客户想要添加某个功能,就只能从开开始做一个全新的系统,这种情况是开发者和客户都不愿意见到的。3.可靠性原则:系统应该具备一定的可靠性,在发生异常的时候应该有便于用户理解的提示,告诉用户出现异常的原因;也可以采取一定的应对措施,解决该异常。4.可维护性原则:系统应该具备一定的可维护性,方便后期的管理和功能的扩展。一款成功的软件,必须具备良好的可维护性。5.安全性原则:安全性在软件开发中是必须要考虑的因素。不仅要从系统的安全方面考虑,还要从用户的安全方面考虑,防止泄露用户信息。要提高安全性,系统必须具备可靠性,对信息进行严格的封装,也可以借助加密算法,对整个数据交换流程进行加密。4.2.2 系统结构设计本系统是一个针对某个餐饮机构的小型订餐系统,采用C/S的架构思想,餐饮机构提供一个小型机作为服务器,可以通过登录网站进行该餐厅的管理;客户端安装在Android平台上,通过连接服务器进行相关的操作。系统使用MVC的架构思想【9】,表示层与业务逻辑层进行分离,这样系统就有了更好的可维护性和可扩展性。MVC中的V即视图(view),相关的页面开发采用ASP.NET,C即控制(controller),从表现层读取相关数据,并想模型层发送数据,M即模型(model),处理相关的业务信息,信息通常保存在数据库中。操作系统采用目前市场中比较受欢迎的window7系统,数据库管理软件采用SQL Server数据库,服务器软件采用IIS【10】,数据库连接方面使用的是ADO.NET技术。4.3 模块结构及流程根据上面对客户端和服务器端功能的分析,将其中功能大致分为下面几个功能模块:一、客户端的登陆模块、注册模块、菜品模块、餐桌模块、个人信息模块和订单模块;二、服务器端的菜品管理模块、餐桌管理模块和餐桌订单模块以及菜品订单管理模块。4.3.1 客户端模块设计对于客户端来说,最核心的功能是购餐,前置条件是注册、登陆,中间还要经过菜品模块的过渡,最终要通过订单模块进行结算;另外还要有个人信息模块等辅助功能,使系统更能贴近用户的需求,增加用户的体验度。综合前面的陈述,得到客户端的模块概要设计表。客户端模块概要设计表如下:表4-1 客户端概要设计表客户端模块概要说明登陆模块实现用户登陆和退出注册模块实现注册功能菜品模块浏览菜品、查看菜品信息、加入订单餐桌模块查看餐桌、预订餐桌订单模块取消订单、浏览订单个人信息模块查看信息、修改信息和修改密码通过对于各个模块的划分,分析各个模块之间的联系,得到客户端流程图。客户端流程图如图4.1:图4.1 客户端流程图4.3.2 服务器端模块设计对于服务器端,考虑到一个餐饮机构的菜品和餐桌改变的并不频繁,所以,服务器端的主要功能是管理订单,另外还有其他的功能如菜品管理,餐桌管理等,方便用户进行菜单的修改和餐桌信息的修改。经过分析和总结,得出服务器端概要设计表。服务器端概要设计表如下:表4-2 服务器端概要设计表服务器模块概要说明菜品模块进行相关菜品的添加和删除操作餐桌模块实现餐桌的添加、删除功能订单模块实现餐桌订单和菜品订单的管理通过服务器端概要设计表,得到服务器端大概的流程图。服务器流程图如图4.2:图4.2 服务器端流程图4.4 数据库设计一个系统要想进行信息的传输就必须用到数据,数据可以存放在内存中、文件系统中,也可以存放在数据库中。就目前来看,市场上大部分的软件系统,其数据一般都存放在数据库中。数据库可以按照模型将数据组织起来,方便开发人员进行数据的CRUD,使得项目开发更加的便捷。数据库通过数据将系统的各个部分连接起来,使系统的各个部分联合成一个有机的整体。如果数据库设计做的不好,那么,在后期的项目开发中就会因为组织结构的不完善而给项目的开发带来不便,甚至会影响整个项目的进度,所以,前期的数据库设计尤为重要【11】。4.4.1 数据库的选择软件开发中常用的几种数据库分别是Oracle、MySQL、SQL Server、DB2,Sybase等【12】,其中DB2和Sybase适合进行大数据的软件开发,Oracle对服务器要求比较高,MySQL适合中小型企业进行软件开发,SQL Server对web开发提供了很好的支持。考虑到该系统的服务器端是基于web的,同时我在校期间学习的数据库就是SQL Server,对它的相关操作比较熟悉,所以,选择SQL Server作为该系统的数据库。4.4.2 数据库表及其结构在确定选择使用SQL Server数据库作为本系统的数据库之后,在充分分析本系统需求分析的基础上,针对本系统的各个模块建立了对应的数据表,根据各个数据表里面都建立了相应的主键(Primary Key),主表和从表之间通过外键来进行关联。同时,为了后期的扩展,尽量减少数据表与数据表之间的关系。数据库表如下:表4-3 数据库表数据表名称数据表字段用户表用户编号;姓名;密码;电话;地址菜品表编号;名字;介绍;单价,图片餐桌订单表订单编号;餐桌编号;用户编号;生成日期;结算日期餐桌表餐桌编号;餐桌状态;可坐人数外卖订单主表订单编号;用户编号;生成时间;结算时间外卖订单明细表订单编号;主表编号;菜品编号;菜品数量其中,用户表中,用户编号为主键;菜品表中,菜品编号为主键;餐桌表中,餐桌编号为主键;餐桌订单表中,订单编号为主键,餐桌编号、用户编号为订单表的外键;外卖订单表主表中,订单编号为主键,用户编号为外键;明细表中,订单标号为主键,主表编号、菜品编号为外键。以下几个表分别为数据库中几个数据表的具体字段表示:表4-4 用户表sysuser字段名称字段表示数据类型约束条件用户编号login_idvarcharPrimary key用户名namevarcharNot null,unique密码pwdvarcharNN电话phonevarcharNot null地址AddressvarcharNot null表4-5 菜品表 menu字段名称字段表示数据类型约束条件菜单编号idvarcharPrimary key菜品名称namevarcharNot null菜品介绍Detailvarchar菜品价格pricevarcharNN菜品图片imageUrlvarchar4-6 餐桌表 tables字段名称字段表示数据类型约束条件餐桌号idVarchar(10)PK餐桌状态statusvarcharCheck容纳人数sizeintNot null4-7 餐桌订单表 table_order字段名称字段表示数据类型约束条件订单编号idvarcharPrimary key餐桌编号TableidvarcharForeign key用户编号logidvarcharForeign key生成日期CreatetimedatetimeNN结算日期Endtimedatetime4-8 外卖订单主表 order_master字段名称字段表示数据类型约束条件订单编号IdVarcharPK用户编号LogidVarcharFK生成时间CreatetimeVarcharNn结算日期endtimevarchar4-9 外卖订单明细表 order_detail字段名称字段表示数据类型约束条件订单编号IdVarcharPk主表编号RefidVarcharFk菜品编号MenuidvarcharFk菜品数量numberint5 系统实现5.1 Android环境搭建要进行一个项目的开发,那么自然需要相应的开发环境才能实现,对于Android的开发,我们需要先配置它的环境。在搭建本系统的Android环境中需要使用的软件有:1.操作系统采用的Win7操作系统。2.软件包:Android SDK、ADT。3. IDE环境:需要使用Eclipse和ADT Ecplice4.2以上,本系统采用的是Android4.2版本的。4.JAVA的JDK以及JAVA运行环境JRE的安装搭建。5.2 客户端实现本项目分为2个工程,分别为HduDinnerHTTPClient2,Demo_hdu。其中HduDinnerHTTPClient2为HTTP交互工具类, Demo_hdu为主工程项目。其中,工具类采用了网上开源项目的代码实现的,Demo_hdu需要依赖工具类来实现具体的操作。下图为主工程项目的文件结构图:图5.1 客户端文件结构图其中,dinner根目录存放的是一些静态方法以及定义的一些变量,activity下放置了一个主页的类,base下定义了交互要用到的父类方法,food目录下是菜品相关的页面的类,table下放置了餐桌相关的页面的类,user下放置的是用户页面类;adapter下放置的是页面列表要用到的布局;model下存放的是实体类;task下存放的是交互请求需要用到的方法;widget和utils中存放了一些自定义的页面控件以及工具类;libs下存放开发所需的lib包;Res下是一些资源文件,包括图片,文字,按钮,颜色定义等等;AndroidManifest.xml中注册页面并定义了一些权限。5.2.1 HTTP请求的工具类实现本系统针对客户端与服务器之间的交互方式,采用的是HTTP协议方式,以JSON封装要传输的信息来实现客户端与服务器之间的信息交流的。本系统采用了第三方的一个开源软件包来实现HTTP协议,通过在项目中导入这个开源的jar包,调用其中的类和相关方法来实现HTTP请求并接收从服务器传来的数据。5.2.2 系统登录在登录界面有2个文本输入框,分别是账号与密码的文本输入框,以及2个按钮,通过一定的布局将其合理地分布并显示出来。当用户输入账号和密码时,首先会先判断用户名或者密码是否为空,如果其中有一项为空则会弹出信息提示框。 当输入的格式是合法的,在用户点击登录后,客户端将会把数据信息封装成JSON对象,并向服务器发送请求,去判断该用户名在数据库中是否存在以及登陆密码是否正确。在用户名或者密码不正确的情况下,会进行相关信息的提示;否则,登陆成功,跳转到主页界面。具体流程图如图5.1:图5.1 登陆功能流程图相关代码如下:图5.2 登陆功能代码图1图5.3 登陆功能代码图2图5.4 登陆功能代码图3其中的BaseLoadingActivity就是交互的基本类,继承这个类,当进行task交互的时候会自动滚动框,以及一些回调方法。OnCreate方法,每个activity创建都会调用这个方法,setContentView加载页面布局,BK.inject进行自动组件注册。HeaderView定义页面头部的标题,并集成回退的方法。UserLoginTask就是发起一个HTTP的请求,setParams为入参的方法,设置登陆的参数,请求完毕会回调parse方法对返回的json对象进行解析,并调用result方法返回主页界面,在主页界面中对页面进行刷新。客户端的其他功能的实现都和登陆功能的业务流程几乎相同,下面主要展示各个界面的表现和实现的功能。5.2.3 用户注册如果用户尚未注册,那么可以按下通过登陆界面中的注册按钮或者直接在主页界面点击注册按钮,通过Android的Activity的跳转机制从当前界面跳转到用户的注册界面,在注册界面实现新用户的注册。通过填写相应的需要注册的信息,点击注册按钮,会先进行判断是否输入合法,在判断输入合法后,再判断两次输入的密码是否相同,如果不相同,给出提示,如果相同,客户端会向服务器发送请求,首先会先判断该注册的新用户的用户名是否存在了,如果已经存在,则会返回提示信息“该用户已存在”,若用户名不存在,进行用户的注册,在用户表中插入用户信息,并返回注册成功的信息给客户端,并跳转到登陆界面。具体流程和代码与登陆操作相仿,在此不再赘述。5.2.4 主页界面等用户登陆成功后,会跳转到主页界面,并在主页界面显示用户的姓名。登陆后的主页界面如图5.5和5.6:图5.5 主页界面1图5.6 主页界面2这个界面是系统的开始界面,用户可以在这个界面跳转到登陆和注册界面。这个界面是通过在一个activity里面组合两个fragement实现的,用户可以进行手动的滑动,通过获取当前屏幕的宽度和两个主页界面的宽度,如果某个界面的宽度大于屏幕宽度的一半,就会跳转到这个界面。这个方法的具体实现定义在一个自定义的页面控制类SlidingMenu类中。主页界面的布局文件为layout_home_activity.xml,通过include导入主页界面1的布局文件。该布局采用了现行布局,在其中放入相关的button,并绑定相应的方法。通过点击按钮,实现相关页面的跳转。5.2.5 个人信息界面点击个人信息按钮,会跳转到个人信息界面。在此界面,将显示用户的姓名、联系电话和地址,存储信息的是3个可编辑的EditView,用户可以点解某个EditView进行信息的修改,点击修改按钮,会向服务器发送修改用户信息的请求,在服务器端进行数据库访问并进行信息的修改,返回结果到客户端,修改成功,将跳转到主页界面。5.2.6菜品展示界面点击主页界面的点外卖按钮,将跳转到菜品展示界面。在页面加载的时候,会向服务器请求菜品信息,将菜品信息保存在一个ArrayList当中,在这个过程中,需要ListItemFoddListAdapter自定义适配器【13】对菜品信息进行规范,使其按照想要的效果来展示。在这个界面中,可以显示所有的菜品,并显示每个菜品的名称,介绍和价格。点击菜品右下方的加号按钮,该菜品的数量就会加1,页面左下方的分数加1,并计算价格。如果某个菜品的分数大于0,就会显示一个减号按钮,用户可以根据喜好添加和减少某个菜品的分数。具体的实现如图5.7:图5.7 菜品显示界面计价实现图每个菜品信息的展示都是一个ListView,通过点击这个菜品的类别所在行,会跳转到一个新的Activity,该Activity将会显示该菜品的详细信息。该菜品的信息将会通过跳转时的传值操作获取并显示。用户在选择好菜品之后可以点击下单按钮,进入到下单界面。在这个界面,会显示送餐地址和联系方式,用户选中的菜品以及总的份数和总价。此外,用户还可以输入备注信息,提出一些更好的选择方案等。点击下单按钮,向服务器发送订单请求,请求成功,将在订单表中添加订单信息,用户可以在我的外卖界面中查看个人订单。另外,地址部分是一个ListView,用户可以点击整行跳转到信息修改界面进行信息的修改。5.2.7菜品订单界面用户可以在主页界面点击我的外卖按钮进入菜品订单界面(我的外卖),这个界面将用户所有的订单,每个订单信息放在一个ListView中,显示所点的菜品名称,订单状态和订单生成时间。点击这个ListView,将跳转到订单详情界面。在订单详情界面,将显示订单号,菜品名及份数,送餐地址和订单时间。如果该订单未完成,在订单详情下面将显示一个取消订单的按钮,点击该按钮可以取消订单。5.2.8餐桌展示界面和餐桌订单界面餐桌模块的操作和显示与菜品模块相同,界面也大同小异,所以在此不再介绍。5.2.9 客户端界面的跳转传值方式的实现在整个客户端中需要的界面之间的切换,实际就是每个Activity之间的跳转,在界面的跳转同时也需要实现互相之间的传值,因此,对于Activity的跳转传值,在整个客户端之间占得很重要,因此,在这里详细介绍一下Activity之间跳转传值的几种方式【14】。1.startActivity来传值在Android系统,我们可以从一个活动跳转到一个不同的活动,从而实现页面的切换效果,对于这个效果,我们可以通过startActivity()和Intent类来实现,Intent在Android中是非常重要的一个类,经常在传值切换操作中使用到这个类。调用setClass设置我们跳转的Acitivity从而达到跳转的目的。因此,对于不同Activity之间的传值,也是将需要传递的数据绑定到Intent的对象,然后使用putExtra()将数据绑定在上面,再在目标界面中调用getIntent()来得到上个界面的Intent对象,从而再从该对象中调用相关的方法来

温馨提示

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

评论

0/150

提交评论