基于Android手机终端点菜系统本科毕业论文.doc_第1页
基于Android手机终端点菜系统本科毕业论文.doc_第2页
基于Android手机终端点菜系统本科毕业论文.doc_第3页
基于Android手机终端点菜系统本科毕业论文.doc_第4页
基于Android手机终端点菜系统本科毕业论文.doc_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

* 2014 届本科毕业论文(设计) 论文(设计)题目: android手机终端点菜系统 学生姓名: * 所在院系: 信息工程学院 所学专业: 计算机科学与技术 导师姓名: * 完成时间: 2014-05-10 摘要 本课题所实现的电子点菜系统改变了传统的服务员和菜单的点菜模式,采用新颖的电子终端点菜系统,这种新式的方式使得餐馆更有档次和特色,对于其在同行业的竞争有着明显的帮助。本课题采用c/s开发模式,分为服务器端和android客户端的一些操作。在服务器端主要采用jsp动态网页技术,实现了后台餐馆一方对菜谱信息的管理和对顾客订单的处理。在客户端主要采用android技术实现了顾客对菜品的查找、分类查看、顾客对自己订单的选择和查看,顾客在确定订单之后可以提交给餐馆一方,使得餐馆一方得以查看并通知厨房做出菜品。关键词 android,mysql,jsp,javaabstractelectronic ordering system the realization of this project has changed the traditional service and menu menu mode,the novel electronic terminal order system,the new method makes the restaurant more grades and characteristics,this is very helpful for the same industry competition.this topic uses c/s development mode,divided into some operation server and android client.on the server side jsp dynamic webpage technology mainly uses,this has realized the backstage restaurant management side of the menu informationand customer order processing.the client uses the android technology to realize the customer on the foodsearch, classification and view view, of their customers the choice of orders,customers in the restaurant after the order is confirmed can be submitted to a party.this makes the restaurant side to see and notice the kitchen to make dishes.keywords android,mysql,jsp,java目 录1. 绪论11.1项目背景及意义11.2 android系统概述12. 系统理论和技术路线32.1 android四大组件32.2 c/s体系32.3 jsp和servlet42.4系统主要路线42.5 运行环境要求52.5.1 硬件环境52.5.2 软件环境53. 系统需求分析53.1各模块关系图53.2数据库设计63.2.1 数据库列表63.2.2数据库连接的实现73.3 功能需求描述113.4 主要开发工具133.4.1 myeclipse133.4.2 adt144. 软件系统设计154.1后台功能模块154.1.1后台登陆模块154.1.2后台菜品模块174.1.3后台订单模块194.2客户端功能模块204.2.1首页面模块204.2.2主功能模块214.2.3订单模块234.2.4游戏模块255. 结论26谢词27参考文献2811. 绪论1.1项目背景及意义 由于互联网的高速发展,而电子技术由于在外国比如说美国最先得到了发展并被用于生活的各个领域,而餐饮作为我们生活中的一个重要环节,它的发展也是非常迅猛的,以美国举例,从1999年的餐饮业的营业额3500多亿美元到2010年的6000多亿,由于人们对餐饮业的关注,所以电子技术对餐饮的影响非常大,所以像手机点菜系统的发展在美国已经逐渐得得到了普及。在我们国家,餐饮是人民非常关心的一个方向,但是点菜系统在餐饮业的普及还只是刚刚开始,现在仅仅是在一部分比较高档的餐厅出现,但是我们从餐饮业的发展不难看出,点菜系统的普及是肯定的。近几年,随着android和ios技术的发展,智能手机和平板不仅仅被广大的青年、青少年甚至儿童和老年人接受并使用,电子产品正在影响着我们生活的方方面面,而餐饮作为我们都必不可少的一部分也不可避免的和电子产品结合到了一起。手机、平板的点菜系统替代人工服务员的点菜方式不仅仅节省了大量的劳动力,降低了成本,而且还方便收银员对账单支出的管理,使得餐厅的财政能得到高效透明的管理,当然现代化的电子点菜方式相比较于传统的点菜员会得到广大消费者尤其是青年人的喜爱。 根据科技的发展对社会带来的影响,电子点菜系统必将取代传统的点菜模式,如今电子点菜系统已经在比较高档的餐厅中开始出现并被使用,电子点菜系统必将得到发展。1.2 android系统概述android最初是android公司创办,后由google公司收购,google希望将android创造成一个标准化的、可移动的移动电话平台,进而在移动互联网形成一个开放性的操作平台。2007年谷歌发布第一个android1.1版本,但并未得到市场的广泛支持,但是到2009年,android1.5版本的面世,android凭借“豪华”的界面和蓝牙支持,获得了大量的开发者支持。到目前为止,android已经超过ios在市场的占有量,国内大量的手机厂商开始生产android操作系统的手机,android已经成为世界上最主流的手机操作系统。0 图1-1 android系统的体系结构android系统的底层是建立在linux系统之上,总共包括linux内核、android运行时、函数库、应用程序框架、应用程序层。linux层为android提供了内存管理、网络协议栈、驱动模型、进程管理等核心系统服务。android运行时则是由两部分组成:android虚拟机和android核心库集,android核心库集提供了java语言核心库所能使用的绝大多数功能,而虚拟机则负责运行android应用程序。在这里要区分的是android和jvm是完全不同的,jvm永兴的是java字节码,也就是.class文件,而android虚拟机则运行的是专有的dex文件。函数库包含了一整套能被android应用程序框架所调用的库的集合,像android专有的轻量级数据库sqlite等,需要注意的是android应用程序并不1能直接调用这些库,需要经过应用程序框架来调用。android应用程序框架最主要的功能是提供了大量的api供开发者使用,不管是系统的应用程序还是开发者自己开发的应用程序都可以公平的调用它。应用程序层就是我们平时在手机上所见的包括系统提供的时钟浏览器、联系人等等还是自己下载的由开发者自己开发的android所有的应用程序。2. 系统理论和技术路线2.1 android四大组件 activity要实现的功能是用户交互的组件,它是用户可以看到的,一个activity可以包含多个ui组件并显示,例如textview、button、imageview、adapaterview等组件。service在地位上和activity是并列的,但是它和activity不同处在于service对于用户是不可见的,所以它不能和用户进行交互,因此service有自己的生命周期,并不依赖于一个activity,他的主要功能是为其他组件提供后台服务和监控其他组件的运行状态。broadcastreceiver从名字上说可以把其当做一个信息广播的接收组件,开发者通过集成父类broadcastreceiver来实现自己的功能。其它组件通过sendbroadcast()等方法来发送广播,子类broadcastreceiver通过onreceiver(context context,intent intent)方法来监听接收消息。contentprovider和其它三个组件最大不同在于其可以从其它app程序接口中取得其它app中的信息,最常见例子是:好多app需要读取我们手机联系人中的数据,而contentprovider就能提供这个需求。2.2 c/s体系 c/s即客户端/服务器端结构,如果说c/s就最好和b/s作比较,那具体的项目举例就是需要下载的qq客户端就属于c/s模式,而网页版的qq就属于b/s结构的项目。c/s结构中需要用户下载专有的客户端软件,而b/s模式,客户端不需要下载任何用户界面,从这一方面来说节约了开发成本,但是从安全性来说,c/s模式对于每个用户都有一个客户端,而b/s模式的客户端是被所有用户公用,而且不固定,所以来说,c/s比较b/s来说安全性相对较高。2.3 jsp和servlet servlet是作用在服务器端,其本质就是一个java类,它可以响应客户端的请求,并作出处理。servlet有它自己的生命周期,包括服务器对一个servlet的首次加载、对servlet的初始化、初始化后对客户端请求的响应、最后的销毁。对于servlet的初始化我们只能调用其里面的init()方法一次,以后再用都不会在调用这个方法,而当servlet销毁时,会调用destroy()这个方法。需要注意的是在后台项目里面,如果用到了servlet,对于每一个servlet我们需要在web-inf目录中的web.xml对其进行配置。在?问号位置放置此servlet的名字?一般和其name放置内容一致。在 /? 里面,一定要放置此servlet在项目中的位置路径。 jsp作为java的脚本语言,他其实也可以被当做是servlet,因为对于jsp语法,jsp引擎是先将其转换成servlet代码,然后才带入执行,jsp有自己的标签语言,像c标签库、s标签库等,jsp还有自己的内置对象,像request、response、session等。对于jsp的声明格式为,对于jsp的注释的格式为。 在本系统中我们主要是用到jsp中requset、response、session内置对象像servlet请求数据,servlet通过doget、dopost方法获取请求信息,并做处理,将处理后的信息传送给需要的jsp页面,jsp页面获取servlet传送过来的信息后将其输入在网页上。2.4系统主要路线 在数据库方面,我所设计的电子点菜系统用到的是mysql数据库,大致包括菜品表、菜品顺序表、优惠券表、用户表、管理员表、销售量表、意见反馈表;对于数据库的存储管理我们借助于navicat for mysql工具软件来实现。对于服务器端的设计,主要用html、css来实现,其中对于数据库的请求和获取数据库的信息并显示,主要会用到jsp语言来实现,如用jsp中jdbc技术来实现和数据库的连接,用jsp中一些内置对象request、response来处理http请求中各种参数的处理。通过servlet中doget()、dopost()方法来对jsp页面的请求信息进行处理,并反馈给相对应的jsp页面。对于android客户端应用程序的设计主要分三个功能。首先是应用程序的界面设计,我们会用到ui中的一些组件,像一些布局管理器、view、button按钮等。其次是界面间的内部通信,我们会用到intent、intentfilter来实现。最后是android和后台的通信我们会用到android的网络应用技术来实现,如用url来读取网络资源、relconnection来提交请求。2.5 运行环境要求 2.5.1 硬件环境 服务端:ie浏览器pad客户端:无特殊要求,因为android项目在设计时是按照建议七寸分辨率的屏幕来做,因此最好是选用这个尺寸大小的屏幕,在cpu主频上最好选用1.5mhz以上,如果主频太低,影响程序运行速度。2.5.2 软件环境服务端:mysql数据库、myeclipse 、android adtpad客户端:android4.1及以上,如果版本太低,那么一些在4.1以后新增的一些功能,因为app中用到,但是老版本不能识别,造成程序运行不了,所以尽量选用新版本的平板。3. 系统需求分析3.1各模块关系图此系统设计主要由以下各功能组成,分别包括后台服务器端和客户端的一些功能,在服务器端主要包括管理员的登陆、管理员对菜品信息的管理、管理员对订单信息的管理。在客户端所要实现的模块中,此app中所要实现的功能包括首页面的今日特色推荐、按照不同分类来进行菜品(包括荤菜、素材、价钱、酒品)显示、已点的菜品、登陆注册、个人信息和小游戏模块,系统所包含的模块如下图所示: 图2-1 系统模块3.2数据库设计3.2.1 数据库列表数据库我们采用mysql数据库,所需要建立的表有:(1)菜品表(dish)是为了可以在客户端可以实现对菜品按照不同类型的排序和查找。其中包括主键菜名(id)、菜名(dishname)、菜图(dishimage)、菜价(dishprice)、菜品所属类别(dishcategory)、菜品是否被推荐(isrecommend)、菜品的拼音拼写(spell)、菜品的拼音简拼(simplespell)。(2)菜单顺序表(dish_order)是主功能,是为了餐馆能正确有序的让厨房做出每道菜,并且可以使每道菜能正确送到每个餐桌。其中包括主键菜品所属上菜顺序(menunumber)、桌名(tableid)、菜品id(dishid)、菜名(dishname)、此类菜所点数量(dishcount)。(3)菜品的销售量表(dish_salevolume)主要是方便餐馆一方可以对每道菜进行统计,并可对此进行各方面的调整。其中包括主键为菜品id(dishid)此菜品的销售量(realsale)。(4)意见反馈表(feedback)主要是方便客户对菜的味道和餐馆的服务等提出意见。其中包括主键用户id(id)、此用户所提得意见(information)。(5)管理员表(manager)主要是为了餐馆一方在pc端登陆所用。其中包括主键管理员id(id)、登录名(username)、登录密码(userpassword)。(6)用户表(user)主要是为了实现对用户信息的存储。其中包括主键用户id(id)、登录名(username)、登录密码(password)。(7)优惠券表(user_coupon)主要是为了实现对优惠券信息的的管理。其中包括主键优惠券id(id)、优惠券所属用户的用户的id(userid)、优惠券有效开始日期(couponstarttime)、优惠券的份额(couponvalue)优惠券有效截止日期(couponendtime)。3.2.2数据库连接的实现对于数据库的连接,本系统用到的是java中的jdbc技术,jdbc为开发者提供很多核心的类库,并规范了连接数库的要求,包括对数据库的连接、对数据库的查询和各种操作、从数据库中获取数据。jdbc中有很多接口和常用类,我们主要用到的是drivermanager、connection、statement、resultset。当然我们通过jdbc技术和数据库进行连接时,对不同的数据库我们需要加载不同的驱动程序类,本系统我们用到的是mysql数据库,所以我们将mysql-connector-java的包导入程序即可保证与数据库的连接。 此系统采取mysql数据库,数据库的连接程序在后台padoeder_service程序src目录的util包中,首先我们现在src目录中建立一个名字为dbcperties的配置文件,里面存放数据库连接需要的连接名、url、数据库的用户名和密码。对于配置文件的使用可以方便其他使用者在不同的地方进行使用,其他使用者只需要在配置文件中重新改写不同的信息而不需要在代码中更改。drivermanager可以自动寻找相应的数据库驱动程序,并可以与之连接,drivermanager可以识别mysql数据库、sql server等数据库的驱动,drivermanager通过调用class.forname(”),接着我们通过drivermanager中的getconnection(string url,string user,string password)方法与数据库即可取得连接,在getconnection方法中的三个参数中,url对于不同的数据库有不同的url,url的组成包括协议、子协议、子名组成,由于本系统用的是mysql数据库,因此我们就用连接mysql数据库的url做例子,对于连接mysql的url为:jdbc:mysql:/:4417,在这里需要注意的是常用的数据库端口是3306,因为本人设置的是4417,因此在我们这里我的url中的端口号为4417。getconnection中的user和password分别为自己数据库对应的账号和密码,对于数据库的连接代码如下:public class dbutil public connection openconnection() properties prop = new properties();string driver = null;string url = null;string username = null;string password = null;string yhc_url= null;try prop.load(this.getclass().getclassloader().getresourceasstream( dbcperties);driver = prop.getproperty(driver);url = prop.getproperty(url);username = prop.getproperty(username);password = prop.getproperty(password); yhc_url = prop.getproperty(yhc_url);class.forname(driver);return drivermanager.getconnection(url, username, password); catch (exception e) e.printstacktrace();return null;public string geturl() properties prop = new properties();string yhc_url = null;try prop.load(this.getclass().getclassloader().getresourceasstream( dbcperties); yhc_url = prop.getproperty(yhc_url); return yhc_url; catch (exception e) e.printstacktrace();return null;配置文件dbcperties中所存放的信息如下:driver=com.mysql.jdbc.driverurl=jdbc:mysql:/:4417/e-menu?useunicode=true&charactere ncoding=utf-8username=rootpassword=123456jdbc中的另外一个常用接口connection代表与数据库驱动程序代表的连接,一个应用程序中可以与数据库有一个或者多个数据连接,connection可以向数据库输入数据库查询语句,数据库因此而能执行其输入的查询语句。statement作为jdbc的另外一个常用接口,他的出现主要是因为对数据库操作的语句,是封装在其中,它分为statement、preparedstatement、callablestatement三种对象,对于如果查询中没有参数,那么我们就可以使用statement对象中的executequery、executeupdate等方法对数据库进行查询、更新、增删等操作而如果查询的语句中如果限制条件中需要输入参数,那么我们就需要通过preparedstatement来对数据库进行操作,我们可以通过preparedstatement可以通过里面setstring(?,?)、setint(?,?)、setboolean(?,?)来对查询语句中的参数赋值,举例如下:string sql = select id,dishname,dishimage,dishprice,dishcategory,isrecommend,spell,simplespell,realsale from dish,dish_salevolume where dishid=id limit ?,? ;ps = conn.preparestatement(sql);ps.setint(1, pagenow);ps.setint(2, pagesize);callablestatement因为在本系统中并不常用,在这里就不做概述。resultset作为jdbc中另外一个重要的接口,他的主要功能是存储从数据库中查询获取的数据,resultset中常用的方法包括next()用来使光标移动到数据库记录的下一条,因为其这功能,我们可以在代码中判断数据库查询结果中的数据我们是否都取得完毕,如果取完,那么next()方法返回一个false,因此循环就可以截止了。举例如下:string sql = select id,dishname,dishimage,dishprice,dishcategory,isrecommend,spell,simplespell,realsale from dish,dish_salevolume where dishid=id limit ?,? ;ps = conn.preparestatement(sql);ps.setint(1, pagenow);ps.setint(2, pagesize);rs = ps.executequery();while(rs.next() dish = new dish();dish.setid(rs.getint(1);dish.setdishname(rs.getstring(2);dish.setdishimage(rs.getstring(3);dish.setdishprice(rs.getint(4);dish.setdishcategory(rs.getstring(5);dish.setisrecommand(rs.getboolean(6);dish.setspell(rs.getstring(7);dish.setsimplespell(rs.getstring(8);dish.setsalevolume(rs.getint(9);3.3 功能需求描述 下表主要对整个点菜系统所有的模块进行了描述,包括android端和服务器端功能的描述。包括每个模块要实现的功能,每个模块的优先级,每个模块的权限都进行了描述,像菜品类别分类显示、用户的登陆、在服务器端的管理员登录模块、服务器端对菜品的查找、修改、服务器端对订单的管理等等。具体各部分的功能如下表所示: 系统功能需求分析图 模块功能 优先级描述 权限说明 首页显示主界面 一级图片按钮的形式显示在界面;每个按钮跳入对应的界面; 运行程序后,直接进入; 菜品类别 荤菜系列海鲜系列素菜系列饭汤系列酒品饮料一级显示不同类别的菜品信息 今日推荐今日推荐一级显示店家每日推荐的菜品信息 本店热卖本店热卖一级根据销量显示菜品 用户登录用户登录/注册一级登录后可以保存和使用游戏中赢取的优惠卷登录后按钮转换成我的信息按钮 我的信息我的信息二级显示用户的优惠卷信息,数量等登录后才会显示 菜品搜索简易搜索语音搜索一级 根据菜品名称模糊搜索,不想打字也可语音搜索 已点的菜已点的菜二级 顾客已经提交的菜品信息更多娱乐游戏一级 给你展现一道本店的菜,让你来猜菜名,连续3道你就可以获取优惠券了每天机会只有一次哦! 获取优惠卷须 先登录周边查找一级 你可以利用百度地图,搜索附近的一些ktv、超市、酒店、娱乐场所等,解决餐后安排问题意见反馈二级消费者反馈对本餐厅的服务的满意度调查和意见退出程序二级退出本程序服务器登陆二级对菜品进行增删改查查看订单,桌号订单,结账后相应订单记录删除 登陆后可操作3.4 主要开发工具3.4.1 myeclipse对于myeclipse的解释,首先要说eclipse,eclipse是基于java语言且开放并且可以扩展的操作平台。eclipse包含了一个标准的插件集,包括java development tools 即jdt,eclipse有很多的优点。eclipse首先来说源码是开放的,所有的开发人员都可以研究它,另外,eclipse是可以扩展的,它不仅支持java的开发,还包括php、c等很多语言的开发和使用,只需要下载相应的插件即可。而且eclipse对于很多的平台都是支持的,像linux、windows等等。对于不同的平台,eclipse提供相对应的工具包。当然用eclipse来开发软件,更高效和迅速。myeclipse作为eclipse的扩展板,不仅继承了eclipse的所有功能,而且在我们的软件中,因其能很好的处理在javaee和数据库的开发,因而我们能利用javaee中jsp、javascript和数据库来实现我们软件中后台的功能。而且myeclipse还内嵌了tomcat,因此我们还可以直接将后台在其上进行发布。对于tomcat,他是一个免费的软件,我们可以通过其来发布自己的项目。对于项目的发布,我们可以自己手动的发布,亦可以通过myeclipse来发布。我们比较赞同手工的项目发布,因为我们可以定期的清理tomcat中已经不用的项目,而不需要每次发布一次项目都要将以前的项目都发布了,如果不定期清理,我们每次发布项目所浪费的时间会增大很多。在tomcat的目录文件中分好几个目录文件,像/bin是用来存放一些脚本文件、像/config中是存放一些配置文件、/logs中存放的是日志文件而我们手动发布项目时候我们只需要将完整的项目放到/webapps目录下面,然后启动tomcat,在浏览器中输入相对应的http:/localhost:8080/之后,如果出现tomcat的网页,那么就证明我们的tomcat启动成功,接下来在浏览器中输入我们项目的url,即可对项目进行查看。3.4.2 adtadt是eclipse中的一个插件,它可以快速让开发者创建一个android的项目和开发界面,而且其包括了android基本框架的api组件。总的来说,有了adt插件,我们可以更高效的来实现对android项目的开发。在adt中我们可以很方便的对客户端app进行调试,对于android项目的调试,可以有虚拟机和真机两种调试方法。在本系统中因为需要的是一个占用内存比较大,而且屏幕分辨率比较高的程序,所以我们选用真机来调试,选用真机来调试程序,首先需要下载此手机的驱动程序,如果用户嫌弃麻烦,那么可以直接下载360手机安装助手或者腾讯手机安装助手,然后用数据先连接手机,在pc端手机助手中会自动帮助手机安装客户端手机助手,我们接着打开系统设置-开发者选项-将允许usb调试、允许模拟位置、不锁定屏幕勾选,然后点击adt中的运行,选中自己的手机,接着,本系统app将自动安装到手机中,用户即可调试。假如说没有android真机,在其它android项目测试时,我们可以在android virtual device manager 中查看我们所建立的虚拟机,当然我们也可以根据自己项目要求新建立一个虚拟机,自由分配内存大小,但是假如有真机我们还是第一个选择真机,因为虚拟机在稳定性和快捷性上都不如真机,可能有些错误我们在虚拟机上面不一定调试不出来。在android adt的调试中,我们用专门的ddms进行调试,ddms主要分为设备面板,信息面板,信息输出面板。在设备面板中,我们可以查看当前在调试android项目所用的android机。在ddms中我们用到的最多的是信息输出面板中的logcat,当我们调试程序时,如果我们的程序有错误,我们可以在错误的地方抛出异常,而在logcat中有一功能saved filters,这就相当于系统为我们提供了一个过滤器,我们可以在新建一个自己需要的过滤器,以此来捕获自己项目中的错误,这个方法在项目初期调试运行期间后经常用到,当然强大的adt还为我们提供了在手机和电脑之间可以相互传送数据的功能,在ddms中如果我们项目中有用到sqlite数据库,我们还可以查看这个数据库中我们所存的数据。4. 软件系统设计4.1后台功能模块4.1.1后台登陆模块管理员登陆的模块主要通过jsp登陆页面向一个servlet提交管理员输入的用户名和密码。jsp页面所用的技术是一个form表单,form表单中的action属性对应相对应要验证登陆信息正确与否的一个servlet,而此servlet类通过集成httpservlet类,并通过doget、dopost方法中的request请求获取form表单中的管理员信息,servlet通过连接数据库进行验证,如果管理员登录信息合法,那么servlet通过doget方法中response方法直接跳转到后台管理主界面。servlet处理中的主要代码展示如下:public void doget(httpservletrequest request, httpservletresponse response)throws servletexception, ioexception response.setcontenttype(text/html;charset=utf-8);printwriter out = response.getwriter();httpsession session = request.getsession();string action = request.getparameter(action); system.out.println(action);managedao md = new managedaoimpl();md.deletecoupon();if(login.equals(action)string username = request.getparameter(username);string password = request.getparameter(userpassword);system.out.println(username+sdfc);out.print(username); boolean flag = md.check(username, password);if(flag)httpsession username = request.getsession(true);username.setattribute(username, username);system.out.println(username);response.sendredirect(manage/main.jsp);else/*out.print(登录失败);out.print(重新登录);system.out.println(登录失败);*/ response.sendredirect(manage/index.jsp?result=fail); 管理员登陆界面效果图如下:图4-1 后台登陆4.1.2后台菜品模块 后台菜品的管理主要是实现了一个对菜品进行分页的显示和对菜品进行修改、删除的功能。对菜品的分页显示的功能实现流程为:一个jsp页面通过page指令中的session向一个servlet传输当前页面(pagenow)和每页显示的菜品数(pagesize),servlet通过调用分页显示功能的函数将jsp页面需要的菜品数据传送回jsp页面,jsp页面通过c标签将数据显示到页面中,servlet获取jsp请求数据和向jsp传输和数据所用到的方法和后台管理员登陆时向servlet验证信息时用到的技术是一样的,因此在此就不做解释。而实现分页显示功能的函数部分代码如下:public pagebean findbypagedish(int pagesize, int pagenow) / todo auto-generated method stubdbutil util = new dbutil();connection conn = util.openconnection();pagebean pb = new pagebean();pb.setpagesize(pagesize);dish dish = null;int pagenow = (pagenow-1)*pagesize;try string sql = select id,dishname,dishimage,dishprice,dishcategory,isrecommend,spell,simplespell,realsale from dish,dish_salevolume where dishid=id limit ?,? ;ps = conn.preparestatement(sql);ps.setint(1, pagenow);ps.setint(2, pagesize);rs = ps.executequery();while(rs.next() dish = new dish();dish.setid(rs.getint(1);dish.setdishname(rs.getstring(2);dish.setdishimage(rs.getstring(3);dish.setdishprice(rs.getint(4);dish.setdishcategory(rs.getstring(5);dish.setisrecommand(rs.getboolean(6);dish.setspell(rs.getstring(7);dish.setsimplespell(rs.getstring(8);dish.setsalevolume(rs.getint(9);pb.getdish().add(dish);string sql2 = select count(distinct id) from dish;ps = conn.preparestatement(sql2);rs = ps.executequery();if(rs.next()pb.setpagesizes( rs.getint(1) ; catch (sqlexception e) / todo auto-generated catch blocke.printstacktrace();finallyclose();return pb;后台菜单管理界面效果图如下:图4-2 后台菜单管理4.1.3后台订单模块 后台订单的管理和后台菜品的管理所用到的技术是一样的,都是需要在jsp页面中对数据进行分页显示。二者不同在于订单管理请求的数据库表是dish,而后台订单的管理请求的数据库是dish_order,后台订单管理所要实现的功能包括对所有订单的查找,在顾客结账时候对数据库表dish_order中相应的数据进行清除。后台订单管理效果图如下:图4-3 后台订单管理4. 2客户端功能模块4.2.1首页面模块在首页面模块,我们主要实现的是通过一个gallery画廊视图组件来实现一个跑马灯的效果来自动显示存放在一个adapter对象中的一组菜品信息。当然我们会在adapter中每一个图片中加上一个onclicklistener,当顾客自己通过手势向左或者向右滑动的时候,gallery中会更换为adapter中存储的其它菜品图片。我们通过在里面存放每日推荐的菜品,然后顾客在首次打开客户端的时候,看到的就是餐饮方主打的菜品。接着顾客可以通过自己的需求进入主功能的模块。对于客户端首页面效果图如下:图4-4 客户端首页面4.2.2主功能模块在功能模块,我们实现的是一个类似于新闻浏览页面的界面,在上边界和左侧边界,我们选中不同的按钮,相应出来不同排序的界面。这种模式值得注意,一般因为手机的屏幕大小,我们不会让侧边界的功能模块出现,因为这样留给显示信息模块的位置就更小了,对于用户的体验就更不好了。因为我们本系统的设计是考虑到是在平板等尺寸比较大的android系统上运行,因此我们采用这种模式,这样的模式对于用户对于菜品的选择更方便。而为了实现这个功能,我们就需要用到fragment,对于fragment,我们可以把它认为是activity的一个片段,它有自己的生命周期,但是它的生命周期完全是建立在activity之上,activity销毁时,在他上面的fragment也会相应的销毁,activity暂停的时候,相应的fragment也会相应的销毁。因为fragment属于activity的一个子模块,所以二者可以进行通信。当然在主功能模块的菜品信息显示模块中,我们用到的是baseadapter,adapterview我们可以把它当做是一个存放列表的一个容器,他有很多的子类,如果他的子类能完成我们的功能时候,那么我们直接调用子类即可,像arrayadapter、simpleadapter、baseadapter,像第一个我们只能存放list集合的一组值性质的数据,而对于baseadapter我们可以最大限度得对各列表项进行封装,因此,我们所用的是基于对baseadapter进行继承而实现菜单的显示。而对于菜品信息的传送,当然我们是像数据库请求而获取的,具体的流程是,我们像每一个按键设置一个监听onclicklistener,当我们点击按钮时候,客户端通过urlconnection请求向服务器端进行请求,而服务器端的处理客户端请求的一个ser

温馨提示

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

评论

0/150

提交评论