版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第1章开发环境介绍1.1JAVA编程环境介绍1.1.1JAVA介绍Java,是由SunMicrosystems公司于1995年5月推出的Java程序设计语言和Java平台的总称。Java有以下特点:第一,平台无关性,Java能运行于不同的平台。Java引进虚拟机原理,并运行于虚拟机,可以在Windows操作系统、Linux操作系统以及Mac操作系统中运行。使用Java编写的程序能在世界范围内共享。第二,安全性,学过C++的人,再学Java,就感觉比较容易,因为他们的编程模式很类似。不同的是,操作存储器地址被C++保留,但是被java抛弃,,运行程序的时候,操作系统自主的对内存进行分配,这样可以使系统安全,防止被通过指针的病毒所感染。第三,面向对象,Java也是面向对象编程,类中对数据进行封装,利用这种方便性,使程序更加简洁性和便于维护性。Java具有很多有关对象的特性,比如类的封装性和继承性,使用这些特性,只需编译一次程序代码,然后通过上述特性反复利用。程序员只需把主要精力用在类和接口的设计和应用上。第四,分布式,在扩展TCP/IP网络平台上建立Java。为了使网络上的文件和使用本机一样方便,可以用库函数提供的方法,这些方法是用HTTP和FTP协议传送和接受信息。第五,健壮性。在编译和运行时,Java可以有效的检查错误。许多开发早期出现的错误可以通过类型检查发现。为了能有效的减少内存出错的可能性,Java自己操纵内存。为了实现避免了覆盖数据的可能,Java还实现了真数组,Null指针检测、数组边界检测、异常出口、Bytecode校验等功能也在Java中得到体现,通过使用这些功能特征,Java应用程序的开发周期大大得到改善。[2]。Java的诞生是对传统计算机模式的挑战,对计算机软件开发和软件产业都产生了深远的影响:(1).软件要能满足软件平台上互相操作,也要满足具有可伸缩性和重用性并可即插即用等分布式计算模式的需求,同时也要满足软件4A目标要求,也就是能达到任何人在任何地方在任何时间对任何电子设备都能应用。(2).CORBA国际标准软件体系结构和多层应用体系框架,是从构建开发方法中崛起的。Java.2平台和.NET平台两大派系也在此基础上形成,推动了整个IT业的发展。(3).对软件产业和工业企业都产生了深远的影响,软件从以开发为中心转到了以服务为中心。中间提供商,构件提供商,服务器软件以及咨询服务商出现。企业必须重塑自我,B2B的电子商务将带动整个新经济市场,使企业获得新的价值,新的增长,新的商机,新的管理。(4).重视了开发团队的文化培养,注重协作,创作,责任,诚信。开发各个阶段的重要技术都利用平台的基础设施服务,重视使用第三方构件集成,对软件开发带来了新的革命。总之,目前以看到了Java对信息时代的重要性,未来还会不断发展,Java在应用方面将会有更广阔的前景。1.1.2JAVA环境配置SUN公司提供了多种操作系统下的JDK,这里我是在基于Windows平台下的(C:\ProgramFiles\Java\jdk1.5.0_06)安装目录,其中bin子目录中包含了所有相关的可执行文件。下面就以J2SDK+Tomcat作为java引擎方案介绍在WindowsXP操作系统下配置过程。1.软件准备先从官方网站下载J2SDK和Tomcat软件,jdk-1_5_0_10-windows-i586-p.exe和apache-tomcat-5.5.20.exe以及ORACLE数据库的安装文件OracleXEUniv.exe.2.安装J2SDK(1)在Windows下,直接运行下载的jdk-1_5_0_10-windows-i586-p.exe文件,根据装向导安装到一个目录下,例如安装到C:\jdk1.5.0_10。(2)添加环境变量用鼠标单击“我的电脑”图标,在弹出的快捷菜单中选择[属性]→[系统特性]→[高级]→[环境变量]命令,在弹出的对话框中即可编辑系统的环境变量。添加JAVA_HOME、PATH、JRE_HOME和CLASSPATH四个变量,变量值如下:JAVA_HOME=C:\ProgramFiles\Java\jdk1.5.0_06。Path=%JAVA_HOME%\bin;%CATALINA_HOME%\common\lib;%JAVA_HOME%\jre\bin;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem。JRE_HOME=C:\ProgramFiles\Java\jdk1.5.0_06\jre。CLASSPATH=.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;%CATALINA_HOME%\common\lib。3.jakarta-tomcat-5.0.28的安装直接运行下载的jakarta-tomcat-5.0.28.exe文件,按照一般的Windows程序安装步骤即可安装好Tomcat,安装时,它会自动寻找J2SDK的位置。Tomcat成功启动后,在浏览器中输入http://localhost:8080,如果出现Tomcat安装成功界面则说明安装成功。添加CATALINA_HOME、CLASSPATH、Path三个变量,变量值如下:CATALINA_HOME=C:\ProgramFiles\ApacheSoftwareFoundation\Tomcat5.0CLASSPATH=.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;%CATALINA_HOME%\common\lib;Path=C:\oraclexe\app\oracle\product\10.2.0\server\bin;%JAVA_HOME%\bin;%CATALINA_HOME%\common\lib;%JAVA_HOME%\jre\bin;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem4.MySQL的安装直接运行下载的exe文件,按照一般的Windows程序安装步骤即可安装好,安装时,它会自动寻找J2SDK的位置。安装的时候输入用户名:root,密码:root。并选utf-8编码,否则数据库中不能输入汉字。安装完成之后。还可以安装个NavicatliteforMySQL方面于用户图形界面操作。1.2Android概述1.2.1Android的产生Android是“机器人”的意思,是Google公司于2007年11月5日发布的一个基于Linux平台的开源手机操作系统。同日,Google宣布组建了一个全球性的联盟组织。这一联盟支持Google可能发布的手机操作系统或应用软件,共同开发名为Android的开放源代码的移动系统。该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。目前,最新版本为Android2.4Gingerbread和Android3.0Honeycomb。Android是基于Linux内核的操作系统,是Google公司在2007年11月5日公布的手机操作系统。早期由原名为"Android"的公司开发,谷歌在2005年收购"Android.Inc"后,继续进行对Android系统开发运营,它采用了软件堆层(softwarestack,又名软件叠层)的架构,主要分为三部分。底层Linux内核只提供基本功能,其他的应用软件则由各公司自行开发,部分程序以Java编写。2011年初数据显示,仅正式上市两年的操作系统Android已经超越称霸十年的塞班系统,使之跃居全球最受欢迎的智能手机平台。现在,Android系统不但应用于智能手机,也在平板电脑市场急速扩张。采用Android系统主要厂商包括台湾的HTC,(第一台谷歌的手机G1由HTC生产代工)美国摩托罗拉,SE等,另外还有中国大陆厂商如:华为、中兴、联想等。1.2.2Android的平台架构Android平台采用了整合的策略思想,包括底层Linux操作系统、中间层得中间件和上层的Java应用程序。Android操作系统的体系机构分四层,由上而下依次是应用程序、应用程序框架、核心类库和Linux内核。其中在第三层还包括Android应用环境[4]。Android以Java为编程语言,不同的方向,都有不同的变化,其中Activity等同于J2ME的MIDlet,一个Activity类(class)负责创建视图(Window),Activity代表一个活动,也就是在foreground前台视图,后台运行的程序叫做Service。由ServiceConnection连接AIDL,使之互通,达到同时运行多个程序的效果。如果运行中的Activity全部画面被其他Activity取代时,该Activity便被停止(stopped),甚至被系统清除(kill)。Android的中间层多以Java实现,并且采用特殊的Dalvik虚拟机(DalvikVirtualMachine)。Dalvik虚拟机是一种Java虚拟机,也是一种虚拟指令相对较少的“暂存器型态”(RegisterBased)的Java虚拟机。多个实例(instance)都可以运行在Dalvik虚拟机上,每个Android应用程序都和一个的Dalvik虚拟机相互对应,实现一对一的管理,优化程序在系统上的运行。Dalvik虚拟机运行的是一种.dex格式的文件,并不像Java程序,运行Java字节码(Bytecode)。发布的时候,附带着打包Android中一系列核心应用程序包,该应用程序包包括很多常用的程序,比如联系人管理程序,地图,短信程序等。利用JAVA语言来编写Android程序。开发人员可以对核心应用程序所使用的API进行完全访问。这种方式可以在重用组件方面得到简化;任何一个应用程序虽然都要遵循框架的安全性限制,但可以使用其他程序提供的功能或接口,也可以发布自己的功能或接口。同样,这种方式也让用户替换程序组件更加便捷。一系列的服务隐藏在系统和程序的背后,其中包括:丰富而又可扩展的视图(Views),可以用来构建应用程序,它包括列表(lists),网格(grids),文本框(textboxes),按钮(buttons),甚至可嵌入的web浏览器;内容提供器(ContentProviders)使得应用程序可以访问另一个应用程序的数据(如联系人数据库),或者共享它们自己的数据;资源管理器(ResourceManager)提供非代码资源的访问,如本地字符串,图形,和布局文件(layoutfiles);通知管理器(NotificationManager)使得应用程序可以在状态栏中显示自定义的提示信息;活动管理器(ActivityManager)用来管理应用程序生命周期并提供常用的导航回退功能。Android包含一些C/C++库,这些库能被Android系统中不同的组件使用。它们通过Android应用程序框架为开发者提供服务。以下是一些核心库:系统C库-一个从BSD继承来的标准C系统函数库(libc),它是专门为基于embeddedlinux的设备定制的。Android的核心系统服务依赖于Linux2.6内核,如安全性,内存管理,网络协议栈和驱动模型。Linux内核也同时作为硬件和软件栈之间的抽象层。1.2.3AndroidSDK的开发环境SDK:(softwaredevelopmentkit)软件开发工具包。被软件开发工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。因此,AndroidSDk指的既是Android专属的软件开发工具包。MyEclipse是现今国内企业流行的基于Eclipse的商业开发工具。Eclipse(官方网站:/)是IBM公司主导下的一款开源免费的可以做基础Java项目开发的工具,然而大多数基于Eclipse二次开发的实用开发工具例如MyEclipse,IBMWSAD,BEAWorkshop,Jbuilder2007等等都是商业产品[3],有别于Eclipse自身开放免费的大旗,这些软件不能免费使用,例如MyEclipse6.0只有30天的试用期,过期之后需要付费使用。因为Java开发工具领域的四分五裂,至今仍然没有一款IDE(IntegratedDevelopmentEnvironment,集成开发环境)可以真正媲美微软的VisualStudio系列。MyEclipse集成开发环境,可以到网站上去下载,直接安装就行。获得AndroidSDK:Android的SDK比较的大,可以通过Android系统推荐使用的方式软件升级获得Android包。第一步:获得android-sdk——r04-windows.zip。第二步:运行SDKSetup.exe程序,下载实际的AndroidSDK。在MyEclipse中安装ADT:有个比较简单的方法就是在ADT包下建一个eclipse包里面放ADT的2个文件。然后一起放入MyEclipse安装包下的dropins文件中就可以了。安装好后,需要在MyEclipse中配置AndroidSDK。进入MyEclipse环境后,选择“Window”>”Preference”,从左侧中选择SDK的安装路径点击”OK”就完成了。1.3Tomact概述1.3.1Tomcat的简介Tomcat是Apache软件基金会(ApacheSoftwareFoundation)的Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。由于有了Sun的参与和支持,最新的Servlet和JSP规范总是能在Tomcat中得到体现,最新的Servlet2.4和JSP2.0规范在Tomcat5中得到了极大的支持。Tomcat具备很多优点,不仅运用了先进的继续、还具有稳定的性能,最重要的是免费,不仅获得部分软件开发商的认可,而且很多Java爱好者也十分喜欢,从而变成当下使用比较广泛的Web应用服务器。Tomcat是一个轻量级应用服务器,是开发和调试JSP程序的首选,并在并发数不是很大的情况下以及中小型系统中使用广泛。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache服务器,可利用它响应对HTML页面的访问请求。实际上Tomcat部分是Apache服务器的扩展,但它是独立运行的,所以当你运行tomcat时,它实际上作为一个与Apache独立的进程单独运行的。1.3.2Tomcat的安装首先下载Tomcat(/)。找到自己安装的JDK路径,最好关闭防火墙。然后,配置tomcat的环境变量。我配置的环境变量为CATALINA_HOMED:\Tomcat5.0classpath;E:\jdk\lib\tools.jar;E:\jdk\lib\dt.jar;JAVA_HOME;E:\jdk\PATH;E:\jdk\bin。TOMCAT_HOME的为D:\Tomcat5.0。其中java装在E\jdk下面,tomcat装在D:\Tomcat5.0。最后,启动tomcat,在其安装路径下,bin文件夹里,双击startup.bat,在IE里输入http://localhost:8080,若能显示tomcat的页面,则说明配置成功。1.4Mysql数据库介绍数据库是数据和数据库对象的集合,其中数据库对象指表(Table)、视图(View)、存储过程(StoredProcedure)和触发器(Trigger)等。数据库通过SQL(StructuredQueryLanguage)来对数据进行操作和管理,这里包括一些基本的操作如select、delete、insert、update语句。ADO(ActiveXDataObjects)是微软开发数据库应用程序的数据库访问技术。它被设计用来同新的数据库访问层OLEDBProvider一起协同工作,以提供通用数据访问(UniversalDataMySQL)。OLEDB是一个底层的数据库访问接口,用它可以访问各种数据源,包括传统的关系数据库。ADO封装了OLEDB程序中使用的大量COM接口,所以是一种高层访问技术。关于数据库管理系统和接口的原理如图2所示。MySQL是一个快速、多线程、多用户的小型关系型数据库管理系统。它支持正规的SQL查询语言和采用多种数据类型,能对数据进行各种详细的查询等。MySQL提供了一全套的数据库创建和访问机制,通过很直观的方式就可以创建、访问、修改数据库的表和项,并且能建立它们之间的各种数据关系。MySQL系列从90年代就发展起来,经过了多年的反展,它已经成为非常成熟的技术,面向中小型企业级应用。MySQL数据库的特点是数据库文件小而简单,不需要运行或者启动数据库服务进程就可以使用。通常MySQL数据库文件可以随网页文件一起方便地放在网站的目录中,正是由于这些特点,MySQL数据库通常被用来作为网站开发的数据库支持技术。对MySQL数据库的管理采用图形化管理工具phpMyAdmin。phpMyAdmin是一个用PHP编写的、基于Web的、跨平台的MySQL管理程序,支持简体中文,使用Web浏览器作为管理界面。通过phpMyAdmin可以进行绝大部分的MySQL操作,包括对数据库级操作,表级操作,以及数据管理等。图1-1数据库管理系统和接口的原理
第2章需求分析2.1需求分析重要性需求分析是程序设计中最关键的一个步骤,是其它步骤的基础。其主要任务是“为了解决这个问题,目标系统必须做什么”。主要确定目标系统有哪些功能。在这个步骤里程序员在用户那里搜集所有的将要开发的系统的需求信息,并且把这些信息编写成为用户和程序员都可以认可的需求说明书。需求分析特别重要。在软件工程的历史中,很长时间里人们一直认为在整个软件工程中简单一个步骤就是需求分析,但在随着时间的推移,它变成整个过程中最关键的一个的观念被越来越多的人认识到。为了使软件功能和性能的总体概念描述为具体的软件需求规格说明,只有使用软件需求分析,也才能为后期的软件开发奠定了基础。很多事实表明,当很多失败的大型应用系统在分析原因的时候,突然会发现,一切都是失败的需求分析导致的:不彻底或者不完善的需求分析,归结于需求分析的方法使用不当,,使得开发这需要不停地重复对需求进行分析,也使得设计、编码、测试等环节无法顺利进行下去;客户和我们配合不好,导致客户对需求认知不明,客户不断变化的需求,同样无法顺利进行设计、编码、测试等环节。软件的需求分析是软件开发前的第一个阶段,也是关系到软件开发成败的关键步骤,在整个软件开发的过程中,可以说这个阶段所要占用的时间是相当大的。如果需求分析做好了,那么在以后的软件设计过程中,可以省去不少的时间。该街道不是确定系统怎样的完成它的工作,而仅仅是确定系统必须完成哪些工作,也是对目标系统提出完整、正确、清晰、具体的要求。准确说明开发什么是软件开发中最困难的地方。编写出详细技术需求是概念性工作中最困难的地方,所有面向用户、面向机器和其它软件系统的接口定义也包括其中。同时这也是一旦做错,将最终会给系统带来极大损害的部分,并且如果以后也很难再对它进行修改。目前,国内产品的庞杂,一家企业可能有几个系统并立运行,它们之间接口是系统开发人员最头痛的问题。对于商业最终用户应用程序,企业信息系统和软件作为一个大系统的一部分的产品是显而易见的。但是对于我们开发人员来说,并没有编写出客户认可的需求文档,我们如何知道项目于何时结束?而如果我们不知道什么对客户来说是重要的,那我们又如何能使客户感到满意呢?然而,软件需求也包括哪些不是用于商业目的的。例如库、组件和工具这些供开发小组内部使用的软件。当然你可能偶尔勿需文档说明就能与其他人意见较为一致,但更常见的是出现重复返工这种不可避免的后果,而重新编制代码的代价远远超过重写一份需求文档的代价。2.2功能需求通过对市场的调研并进行分析,了解到了系统的需求。本系统是的基于网络订餐系统,最终是要提供一个平台,不同餐厅可以选择加入,并且发布自己的菜价信息;用户通过手机注册账号,然后登录我们提供的平台,选择自己喜欢的和合适的菜价进行点菜,同时也可进行收藏,最后当菜做好以后,用户订购的菜品会由我们专门的配送人员送到用户的手中。这么做的目的可让餐厅提供更好的服务,足不出户,订购自己喜爱的菜价。餐厅也可以在网络上查看订单,根据自己的营销策略定价,进行宣传,扩大影响,增加销量。本系统的功能说明如下:点菜管理:这个功能属于后台管理员的功能。主要包括:菜单查询、添加新菜、删除和修改菜单。用户进入系统后可以对菜谱进行浏览,并且可以查看菜谱的详细信息。在这里餐厅可以完成添加新菜,对过去的菜单进行查询、修改和删除等操作。用户登录:输入用户名和密码后通过系统验证即可进入订餐系统。点餐功能:点餐功能模块是本系统中一个重要的功能模块。用户选择自己满意的菜谱后,输入座位号,点击订餐按钮即可完成订餐操作。这里还可以对自己喜爱的菜进行收藏或者取消收藏,收藏功能方便以后快捷点餐。信息功能:包括更新个人信息与修改密码功能。用户登录系统后在主界面点击点击信息按钮即可进入修改个人信息界面,进行个人信息与密码的更新。2.3性能需求好的架构设计应该具有以下几点:第一点,良好的模块化。每个模块职责明晰,模块之间的送耦合,模块内部高聚合并合理地实现信息隐藏;第二,适应功能需求的变化,适应技术的变化。应该保持应用相关模块和领域通用模块的分离,技术平台相关模块和独立于具体技术的模块分离从而达到"隔离变化"的效果;第三,对数据的良好规划;第四,明确灵活的部署规划。性能需求可能来自用户。因为用户不光要功能,用户也需要质量。如性能,易用性等软件质量属性;质量属性差的软件系统大多数是不会成功的。因此在架构设计时,应该牢记软件的使用者用户,不仅要满足用户的提出的功能要求,也要达到用户期望的质量。一般的性能需求的要求是界面友好,运行时间满足使用要求,安全性得到安全保证。就实际情况,在高系统配置、高网络带宽很容易得到保证的情况下,我们最需要考虑的性能需求就是系统安全性问题。对于本系统的综合要求如下:(1)系统应建立友好的界面,既要操作简单、直观、灵活,又要易于学习掌握;开发订餐系统目的是为了用户能够方便的进行订餐。如果操作复杂,就失去了推广价值。(2)系统在输入用户名以及密码时,应具有自动识别的功能,以帮助用户改正错误。(3)系统在确定用户名和密码后,在正确连接数据库后,首先应对用户名和密码进行检验,若没有此用户名应给出相应的提示;系统应具有界面相互转换的功能,在每一个模块之间应具有相互转换的功能,而无需用户退回主界面重新选择。系统应具有良好的安全性。
(4)系统可扩充、易维护。系统应充分考虑到用户对点餐购物车的增删改查等,具备一定的扩充能力。系统的模块化程度要高,软件维护要方便。2.4可行性分析外卖点餐系统基于餐厅规模越来越大,日常管理日益增多,因特网的广泛应用而使人们的订餐方式有所不同,为了方便管理及便利广大消费者,特开发此系统,以提高工作效率增加餐厅收益。所开发系统是对现在管理模式的一个完全改变,开发系统不仅提高了服务质量,办事效率,使客户更全面的了解菜品的相关信息实现实时以及跨地域订餐,而且节省了开支,可以带来更加丰厚的收益。扩大用户使用范围,使用户在不同时间不同餐厅都可以用此系统订餐;
但采用系统后,需要对使用系统的人员进行培训,不过,由于系统界面友好,易于掌握,所以不会花费太多时间和精力。就目前使用的开发技术来说建议系统的功能目标应该能够达到,利用现有的技术在规定的期限内能基本完成。
第3章总体设计3.1总体设计重要性总体设计又称为概要设计或初步设计。通过这个阶段的工作将划分出组成系统的物理元素——程序、文件、数据库、人工过程和文档等等,但是每个物理元素仍然处于黑盒子级,这些黑盒子里的具体内容将在以后仔细设计。总体设计阶段的另一项重要任务是设计软件的结构,也就是要确定系统中每个程序是由哪些模块组成的,以及这些模块相互间的关系。可以在全局高度上进行总体设计,花较少成本,多种可能的系统实现方案和软件结构要在较抽象的层次上进行分析和对比,从中选出最佳方案和最合理的软件结构,从而用较低成本开发出较高质量的软件系统。系统总体结构设计是要根据系统分析的要求和组主的实际情况来对新系统的总体结构形式和可利用的阻援进行大致的设计,是宏观上的规划。在需求分析的阶段,“做什么”这个思路以及非常明白了,接下来,在总体设计阶段要做的就是“怎么做”。在总体设计阶段应该将系统的物理元素划分出来——程序、文件、数据库、人工过程和文档等等。总体设计的另一个重要的任务就是设计软件的结构,也就是要确定系统中的每个程序是由哪些模块组成的,以及着些模块间的相互关系。在进行软件结构设计时应该遵循的重要的原理是模块独立原理,也就是说,软件应该由一组完成相对独立的子功能的模块组成,这些模块彼此之间的接口关系应该尽量简单。软件结构包括两部分。程序的模块结构和数据的结构,软件的体系结构通过一个划分过程来完成。该划分过程从需求分析确立的目标系统的模型出发,对整个问题进行分割,使其每个部分用一个或几个软件成份加以解决。进行总体设计可以站在全局的高度上,花较少的成本,从较抽象的层次上分析对比都种可能的系统实现方案和软件结构,从中选取最佳方案和最合理的软件结构,从而用比较低的成本开发出较高质量的软件系统。3.2系统架构图系统架构图属于系统设计阶段,系统架构图只是这个阶段一个产物,要正确的、合理的画系统架构图需要全面的理解用户需求以及业务流程,当理解了这些东西后,剩下的就是如何进行表达了,一般而言,可以参照RUP的用例驱动来进行逻辑架构,开发架构等设计工作,系统架构图可以反应在各个视图里面,我估计你所说的系统架构图是属于逻辑架构里面,比如分多少层,每层分多少模块等。至于,绘制的工具,有很多很多。在本次系统设计中选择微软的Visio这一UML建模工具。Android客户端通过网络通信访问后台服务,后台采用JDBC访问数据库。用户在Android手机客户端进行操作如订餐,发送订单等与后台数据库进行交互时,首先通过移动通信网络,采用HTTP协议把数据传入后台服务器中。后台服务器通过对数据库的增、删、改、查操作。数据库,将数据显示给后台服务器。后台服务器取得数据后,将数据通过移动无线网络,采用Http协议返回给客户端,完成用户的操作。本系统的系统构架图如图3.1:数据库后台服务Android数据库后台服务Android客户端图3.1基于Android平台的手机点餐系统架构图3.3数据模型图数据模型是对客观事物及其联系的逻辑组织描述。数据(data)是描述事物的符号记录。模型(Model)是现实世界的抽象。数据模型(DataModel)是数据特征的抽象,是数据库管理的教学形式框架。数据库系统中用以提供信息表示和操作手段的形式构架。数据模型包括数据库数据的结构部分、数据库数据的操作部分和数据库数据的约束条件。数据模型按不同的应用层次分成三种类型:分别是概念数据模型、逻辑数据模型、物理数据模型。数据模型表述了数据库中的数据内容及其关联方式,体现了数据库的逻辑结构。数据模型对于数据库系统很重要,不同的数据模型就是用不同的数据组织形式来表达实体及其联系。数据模型中的实体(Entity),也称为实例,对应现实世界中可区别于其他对象的“事件”或“事物”。例如,公司中的每个员工,家里中的每个家具。有些实体类型可以有几组属性充当标识符,选定其中一组属性作为实体类型的主标识符,其他的作为次标识符。本系统的数据模型概念模型图如图3.2:图3.2基于Android平台的外卖点餐系统数据模型图3.4程序流程图流程图是用几何图形将一个过程的各步骤的逻辑关系展示出来的一种图示技术。只要有过程,就有流程。过程是将一组输入转化为输出的相互关联的活动,流程图就是描述这个活动的图解。流程图对于现有过程,设计新的过程改进原有过程具有积极的作用。在流程图内,每一个框代表一道工序,流程线则表示两相邻工序之间的衔接关系,这是一个有向线,其方向用它上面的箭头标识,用以指示工序进展的方向.显然,在工序流程图上不允许出现几道工序首尾相连的圈图或循环回路,当然对每道工序还可以再细分,还可以画出更精细的统筹图,这一点完全类似于算法的流程图表示:自顶向下,逐步细化.程序流程图是一种用规定的图形,指向线及文字说明来准确表示算法的图形,具有直观、形象的特点,能清楚地展现算法的逻辑结构.画程序框图的规则:使用标准的框图符号;框图一般按从上到下,从左到右的方向画;除判断框外,大多数程序框图的符号只有一个进入点和一个退出点,而判断框是具有超过一个退出点的唯一符号.通过程序流程图我们便知道该程序是怎么运行的,运行的步骤是什么,用户该怎么去操作。用户想快速的使用和熟悉系统最好的方法就是看流程图。因为图简洁、明了。流程程序图是方法研究改进工作方法的有用工具。不论作业研究过程中运用何种技术,流程程序图总是必经的一步,它是应用最普遍的一种工具。在本次系统设计中,程序流程是这样的:首先用户进入系统后,需要用户进行登录。用户登录后,便进入餐厅餐单的浏览界面。用户可以浏览到菜谱的图片,价格,以及简单描述。也可以点击查看详情,可以对查单进行一个比较全面的了解。用户可以根据自己的喜好。可以通过价格分类,进行菜单的查询。在这个主界面中,每个餐单的下面有个选择框可以进行订购喜欢的菜肴。选购完成后输入自己的座位号进行确定。最后发生订单到服务器。这时候我们就可以等待享受美食了。用户对于自己喜欢的菜可以添加收藏,便于日后快速点菜。本系统的流程图如图3.3所示:图3.3系统流程图
第4章详细设计4.1资源规划资源一层含义是指一国或一定地区内拥有的物力、财力、人力等各种物质要素的总称。分为自然资源和社会资源两大类。而资源的一个含义指计算机系统中的硬件和软件的总称。如存储器、中央处理机、输入和输出设备、数据库、各种系统程序等。由操作系统进行系统的、有效的管理和调度,以提高计算机系统的工作效率。现在我所要将的资源则是软件方面的系统程序包资源。资源规划的定义一是指确定开展项目活动需要何种资源(人力、设备、材料、资金)以及所需数量的规划。百度百科中还有一个定义是根据可持续发展的原则,对资源的开发利用与保护方案,作出比选与安排的活动过程。资源规划是系统资源建设与开发利用的基础和关键。当前,程序员对开发系统资源建设与开发利用的重要性已有充分的认识,并做了大量的工作,但对系统资源规划的重要性重视不够。为了更有效地利用系统资源,必须重视和加强对系统资源的规划。本系统的主要功能可以分为二大类:一是Activity界面的展示设计;二是通过网络访问服务器数据。Activity界面的展示设计是通过设置各个界面对应的xml文件来实现的。而网络访问服务器数据,则采用http通讯协议,请求结果以拼接字符串的方式返回,在客户端通过截取字符串获得返回数据。4.2系统数据库设计数据库技术是信息资源管理最有效的手段。数据库设计(DatabaseDesign)是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求(信息要求和处理要求)。数据库设计在需求分析阶段中,需要综合各个用户的应用需求(现实世界的需求)。在概念设计阶段:形成独立于机器和各DBMS产品的概念模式(信息世界模型),用E-R图来描述。在逻辑设计阶段:将E-R图转换成具体的数据库产品支持的数据模型,如关系模型,形成数据库逻辑模式。然后根据用户处理的要求,安全性的考虑,在基本表的基础上再建立必要的视图形成数据的外模式。分析和表达用户需求的方法主要包括自顶向下和自底向上两类方法。自顶向下的结构化分析方法(StructuredAnalysis,简称SA方法)从最上层的系统组织机构入手,采用逐层分解的方式分析系统,并把每一层用数据流图和数据字典描述。在概念模型设计好后,将概念结构转换为某个DBMS所支持的数据模型(例如关系模型),并对其进行优化。最后为逻辑数据模型选取一个最适合应用环境的物理结构(包括存储结构和存取方法)。根据DBMS特点和处理的需要,进行物理存储安排,设计索引,形成数据库内模式。在数据库实施阶段中运用DBMS提供的数据语言,根据逻辑设计和物理设计的结果建立数据库,编制与调试应用程序,组织数据入库,并进行试运行。对于一个高性能的应用程序来说,数据库设计的规范设计非常重要。要使得数据库设计规范,就要把数据库的关系和性能看的很重要。除了性能以外的问题,就是维护的问题了,数据库应该易于维护。这包括只存储数量有限的(如果有的话)重复性数据。本系统服务端采用MySQL数据库,在该系统中一共有很多张表,部分表单介绍如下:表4-1wct_bill表FieldNameFieldTypeSizeNullidint11NOTNULLgidsvarchar100DEFAULTNULLpircevarchar100DEFAULTNULLuservarchar100DEFAULTNULLuidvarchar100DEFAULTNULLshopvarchar100DEFAULTNULLbillvarchar2000DEFAULTNULLopenidvarchar255DEFAULTNULLndatevarchar255DEFAULTNULLtotalvarchar255DEFAULTNULLwayvarchar50DEFAULTNULLgnamesvarchar500DEFAULTNULL表4-2wct_good表FieldNameFieldTypeSizeNullidint10NOTNULLgnamevarchar100DEFAULTNULLpricevarchar10DEFAULTNULLjifenvarchar10DEFAULTNULLnotevarchar500DEFAULTNULLtypevarchar50DEFAULTNULLimgvarchar500DEFAULTNULLcountvarchar10DEFAULTNULLtypeidvarchar10DEFAULTNULLxiaoliangint10DEFAULTNULL表4-3wct_user表FieldNameFieldTypeSizeNullidint10NOTNULLusernamevarchar50DEFAULTNULLpasswdvarchar50DEFAULTNULLroletypevarchar50DEFAULTNULLemailvarchar200DEFAULTNULLaddressvarchar200DEFAULTNULLtelvarchar50DEFAULTNULLqqvarchar20DEFAULTNULLwechatvarchar20DEFAULTNULLsexvarchar20DEFAULTNULL4.3界面设计界面设计是非常重要的,因为产品是给客户用的而客户第一次接触第一眼看到的就是这个产品是什么样子的。如果一个产品你说功能上有多好,多强大而界面上却很糟糕,给用户的感觉非常不好,估计用户就没心情再看下去了。所以我们要给用户一个好的体验,让用户第一感觉也觉得是非常不错的。界面与用户的交互也是非常友好的,用户才会继续关注和使用。美总是给人一种愉快的心情,所以每个产品都必须把界面做好,并且能够通过一种交互的形式告诉用户怎么使用。登录界面:采用对话框的形式,用户输入正确的用户名和密码就可以进入。并且对用户名和密码进行了为空的验证。登录界面如图4.1所示:图4.1用户登录界面图选择餐厅界面:采用对话框的形式,进入系统,首先要选择一个想要点餐的餐厅。其界面如图如图4.2所示:图4.2选择餐厅界面图选择好餐厅后,在开始点餐前,要先选择好菜单,输入自己的座位号点击订餐即可。其界面如图4.3所示:图4.3选择餐厅界面图购物车界面:采用对话框的形式,选择好相应的菜单,点击确定添加到购物车。其界面如图4.4所示:图4.4选择餐厅界面图我的订单界面。在购物车界面完成购物,点击提交订单按钮后,点击【我的订单】按钮进入我的订单界面更新菜单界面如图4.5所示:图4.5我的订单界面图
第5章系统实现5.1后台编码实现后台的实现采用JDBC访问后台数据库,Servlet响应HttpRequest请求,并返回响应结果。采用MVC+DAO的设计模式及分层开发思想。5.1.1登录模块实现创建servlet类响应请求,该类通过request.getParameter()方法获取请求参数,调用登录方法,并根据数据库结果返回响应信息。服务器端登录代码。publicvoidlogin(){ Stringusername=request.getParameter("username"); Stringpasswd=request.getParameter("passwd"); Usertu=newUser(); tu.setUsername(username); tu.setPasswd(passwd); Useru=userService.find(tu); if(u!=null){ session.put("roletype",u.getRoletype()); session.put("username",u.getUsername()); session.put("userid",u.getId()+"");session.put("sid",u.getSid()); render("success"); }else{ render("fail"); } } publicStringlogout(){ session.clear(); return"login"; }}5.1.2菜品管理实现这里通过request.getParameter()方法获取请求参数,调用菜品信息查询方法,依据数据库查询结果返回评价信息,实现代码如下: publicclassGoodActionextendsIdeaAction{ @Resource privateGoodServicegoodService; @Resource privateTypeServicetypeService; privatestaticfinallongserialVersionUID=-3218238026025256103L; privateGoodgood; privateTypetype; publicTypegetType(){ returntype; } publicvoidsetType(Typetype){ this.type=type; } publicGoodgetGood(){ returngood; } publicvoidsetGood(Goodgood){ this.good=good; } publicStringgood(){ returnSUCCESS; }publicStringgoodshop(){return"goodshop";} publicStringtype(){ return"type"; } 5.1.3类别管理实现这里通过request.getParameter()方法来判断传过来实现功能的判断过程,然后通过各类条件来实现流程的扭转,实现代码如下:publicvoidaddType(){ Stringaction=request.getParameter("action"); if(type!=null){ if(action.equals("add")){ typeService.save(type); render("操作成功!"); }else{ Stringid=request.getParameter("id"); type.setId(Integer.parseInt(id)); typeService.update(type); render("操作成功!"); } } }5.1.4商铺管理实现这里通过request.getParameter()方法来判断传过来实现功能的判断过程,然后通过各类条件来实现流程的扭转,实现代码如下:publicclassShopActionextendsIdeaAction{ @Resource privateShopServiceshopService;@ResourceprivateUserServiceuserService; privatestaticfinallongserialVersionUID=-3218238026025256103L;privateGsongson=newGson(); privateShopshop; publicShopgetShop(){ returnshop; } publicvoidsetShop(Shopshop){ this.shop=shop; } publicStringshop(){ returnSUCCESS; }5.1.5订单管理实现这里通过request.getParameter()方法来判断传过来实现功能的判断过程,然后通过各类条件来实现流程的扭转,实现代码如下:publicclassBillActionextendsIdeaAction{ @Resource privateBillServicebillService; privatestaticfinallongserialVersionUID=-3218238026025256103L; privateBillbill; publicBillgetBill(){ returnbill; } publicvoidsetBill(Billbill){ this.bill=bill; } publicStringbill(){ returnSUCCESS; } publicvoidgetList(){ Stringbillname=request.getParameter("sgname"); Stringsort=request.getParameter("sort"); Stringorder=request.getParameter("order"); Pagepage=newPage(); MapparamsMap=newHashMap();Stringroletype=(String)session.get("roletype");if(roletype.equals("3")){Stringsid=(String)session.get("sid");paramsMap.put("sid",sid);} paramsMap.put("billname",billname); paramsMap.put("sort","orderby"+sort+""+order); StringpageNo=(String)this.request.getParameter("page"); StringpageSizes=(String)this.request.getParameter("rows"); if(pageNo==null){ page.setPageSize(10); page.setPageNo(1); }else{ page.setPageSize(Integer.parseInt(pageSizes)); page.setPageNo(Integer.parseInt(pageNo)); } page=billService.findByPage(page,paramsMap); Gsonjson=newGson(); Map<String,Object>map=newHashMap<String,Object>(); map.put("total",page.getTotal()); map.put("rows",page.getList()); render(json.toJson(map)); } 5.1.6用户管理管理实现这里通过request.getParameter()方法来判断传过来实现功能的判断过程,然后通过各类条件来实现流程的扭转,实现代码如下:publicclassUserActionextendsIdeaAction{ @Resource privateUserServiceuserService; privatestaticfinallongserialVersionUID=-3218238026025256103L; privateUseruser; publicUsergetUser(){ returnuser; } publicvoidsetUser(Useruser){ this.user=user; } publicStringuser(){ returnSUCCESS; } publicvoidgetList(){ Stringusername=request.getParameter("susername"); Stringsort=request.getParameter("sort"); Stringorder=request.getParameter("order"); Pagepage=newPage(); MapparamsMap=newHashMap(); paramsMap.put("username",username); paramsMap.put("sort","orderby"+sort+""+order); StringpageNo=(String)this.request.getParameter("page"); StringpageSizes=(String)this.request.getParameter("rows"); if(pageNo==null){ page.setPageSize(10); page.setPageNo(1); }else{ page.setPageSize(Integer.parseInt(pageSizes)); page.setPageNo(Integer.parseInt(pageNo)); } page=userService.findByPage(page,paramsMap); Gsonjson=newGson(); Map<String,Object>map=newHashMap<String,Object>(); map.put("total",page.getTotal()); map.put("rows",page.getList()); render(json.toJson(map)); } publicvoidadd(){ Stringaction=request.getParameter("action"); if(user!=null){ if(action.equals("add")){ userService.save(user); render("操作成功!"); }else{ Stringid=request.getParameter("id"); user.setId(Integer.parseInt(id)); userService.update(user); render("操作成功!"); } } }5.2后台管理实现效果图后台管理界面实现效果如下图所示。图5-1登陆效果图图
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论