Java安卓开发外卖订餐系统专业课程设计_第1页
Java安卓开发外卖订餐系统专业课程设计_第2页
Java安卓开发外卖订餐系统专业课程设计_第3页
Java安卓开发外卖订餐系统专业课程设计_第4页
Java安卓开发外卖订餐系统专业课程设计_第5页
已阅读5页,还剩65页未读 继续免费阅读

下载本文档

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

文档简介

JAVA课程设计汇报

题目:外卖订餐系统

班级:姓名:学号:指导老师:日期:年月日

目录TOC\o"1-3"\u一、概述 11.1课程设计目标 11.2设计任务和要求 1二、需求分析汇报 21引言 21.1编写目标 21.2产品范围 22综合描述 22.1产品情况 22.2产品功效 22.3用户类和特征 32.4开发环境 32.5目标平台 33外部接口需求 43.1用户界面 43.2硬件接口 43.3软件接口 44系统功效需求 45其它非功效需求 55.1性能需求 55.2安全方法需求 55.3安全性需求 65.4软件质量属性 65.5业务规则 66分析模型 66.1数据流图 66.2用例图 96.3系统时序图和协作图 126.4系统活动图 16三、设计汇报 191设计概述 191.1 限制和约束 191.2设计标准和设计要求 192系统概要设计和分析 192.1系统功效设计 192.2子系统和模块 202.3系统犯错处理设计 232.4系统接口设计 232数据库设计 242.1数据库逻辑设计 242.2 基表设计 283系统具体设计和实现 303.1web端系统功效开发 303.2Android用户端功效开发 37四、软件测试汇报 431引言 432检验具体内容 432.1软件代码测试 432.2软件系统测试 453测试总结汇报 46五、用户操作手册 471引言 472软件概述 472.2功效 472.3性能 483运行环境 483.1硬件 483.2支持软件 484使用说明 494.1安装和初始化 494.2犯错和恢复 495运行说明 495.1web管理端 495.2 Android用户端 51六、项目开发总结汇报 56一、概述1.1课程设计目标经过此次课程设计,熟练掌握一个开发语言Java和开发环境——Eclipse。并掌握android手机用户端开发过程。开发语言熟练需要经过编写一定长度代码(1000~行代码)才能达成,开发环境熟练需要反复程序调试训练。加深对软件工程了解,训练编写程序良好习惯。包含:认真编写需求分析文档、做好系统功效设计、学会自己进行程序算法、数据结构设计、培养良好程序设计风格(模块划分、接口设计、函数和变量命名规则)和习惯(程序备份、版本更新和控制),提升软件测试、调试能力和技巧。经过此次课程设计,应该达成含有独立完成小型应用设计能力,含有编写较为规范软件设计文档能力。1.2设计任务和要求基于android外卖订餐系统设计和实现学习android开发;完成软件android用户端和web端开发和文档编写。二、需求分析汇报1引言1.1编写目标本需求分析汇报目标是规范化外卖订餐系统软件编写,意在于提升软件开发过程中能见度,便于对软件开发过程中控制和管理,同时提出了校园外卖订餐系统软件软件开发过程,并作为工作结果原始数据,同时也表明了软件共性,以期待能过取得更大范围应用。开发校园外卖订餐系统手机用户端意在于填补校园外卖手机用户端空缺,使同学用android智能手机就能够方便预定外卖,真正做到互联网全方位覆盖。1.2产品范围校园外卖订餐系统适适用于含有android智能手机用户,在使用本软件后,外卖订餐覆盖面更广,不会再因为身边没有电脑订外卖而发愁,真正做到方便同学,而且能够经过代理广告而使服务商取得额外收益。2综合描述2.1产品情况经过本系统,用户能够经过手机上网方法来订外卖,其特点以下:数据维护效率大大提升,轻易保管,假如丢失或犯错很轻易修复。系统数据全部存放在服务器数据库中,定时备份能够使数据一直保持完好。方便查询,节省劳动力。用户能够经过手机直接把自己想要订外卖存入数据库中,商店服务器端只需要少数管理人员来处理订单。用户能够经过手机随时随地订外卖,方便快捷,而且高效。2.2产品功效本预订系统包含Web端和Android用户端两部分。Web端关键实现外卖资源和订单管理功效,Android用户端实现用户登录注册、预订和查看订单功效。2.3用户类和特征用户类别用户特征超级管理员管理此系统一切可用功效。一般管理员外卖添加、处理订单等。用户登陆、注册、预定等。2.4开发环境开发此校园外卖订餐系统需要用到以下软件环境。Eclipse编程软件。Eclipse是一个相当著名开源JavaIDE,关键以其开放性、极为高效GUI、优异代码编辑器等著称,其项目包含很多多种多样子项目组,包含Eclipse插件、功效部件等,关键采取SWT界面库,支持多个本机界面风格。JDK1.7系统选此作为开发环境,因为JDK1.7版本是现在JDK最新版本,有很多开发者用到功效,能够经过不一样操作系统平台在官方网站上无偿下载使用。MicrosoftSQLServer数据库MicrosoftSQLServer是现在中小型应用开发中比较流行数据库,MicrosoftSQLServer在一定程度上确保了数据完整性和安全性。Tomcat7.0以上版本Tomcat是一个优异Web应用容器,运行稳定、可靠、效率高,而且是开源,能够从网上无偿下载,节省开发成本。Android系统Android系统平台手机功效强大,此系统开源、应用程序无界限,伴随Android手机普及,Android应用需求势必会越来越大,这是一个潜力巨大市场,会吸引无数软件开发厂商和开发者投身其中。2.5目标平台开发另外卖预订系统需要目标平台以下。服务器端浏览器,提议使用IE8.0及以上版本。手机平台为Android2.3或更高版本。3外部接口需求3.1用户界面采取图形用户界面(GUl)标准或产品系列风格:采取简约风格,利用页面布局技术,以蓝色作为主色调。将要使用在每一个屏幕(图形用户界面)上软件组件,包含:标准按钮;各个页面均包含导航链接:各个页面包含导航栏,方便用户进行页面切换多种显示格式要求,包含:不一样情况下文字对齐方法:表格居中对齐,段落居左对齐不一样情况下数字表现格式和对齐方法:表格居中对齐,段落居左对齐日期表现方法和格式:统一采取4位年2位月2位日,两两之间用“-”间隔。每一个操作全部有结果显示。3.2硬件接口使用通讯协议:TCP/IP协议3.3软件接口操作系统:Windows7数据库:SQLServer集成商业组件:eclipse3.7Tomcat7.0AndroidSDK4系统功效需求经过需求采集和需求分析,确定关键需求,本系统应该含有功效以下:Web端功效:管理员有权限限制,一般和超级管理员所操作管理层次不一样。管理员可更改密码,超级管理员可添加、删除一般管理员。能够添加外卖可预订资源,如菜单、饮料等,并填写外卖描述信息。能够添加外卖分类,并填写新分类描述信息。能够修改外卖状态,有货或缺货。能够对订单进行操作同时到用户端,第一时间通知用户。Android手机用户端功效:登录外卖android手机用户端,用户能够随时随地经过手机登录校园外卖用户端。注册账号,用户若没有账号,能够经过手机用户端进行注册成为系统会员。修改个人信息,假如用户个人信息发生了改变,用户能够经过手机登录方法方便地更改个人信息,这也为校园外卖管理用户信息资料提供了便利。预订资源,这是本系统最关键部分,用户能够经过本系统方便快捷地预订其想要外卖,这也是为用户提供最关键功效。查看订单,当用户想要查询预订结果,或想要了解订单具体信息时,经过手机用户端能够快速查看订单。5其它非功效需求5.1性能需求相互合作用户数量:无上限系统支持并发操作数量:统计相关信息无上限,设置相关信息时一时间只能有一个用户设置对应相关信息。通常操作响应时间应在3~5秒内,响应时间也应在可接收时间内完成,具体情况以网络速度为限制和实时系统时间关系:时间一一对应。容量需求(相对于服务器)存放器:2Gb数据库中表最大行数:无上限。5.2安全方法需求 系统用户经过用户名和密码方法来控制用户对数据访问和操作,不一样用户权限不一样,确保正确用户使用正确数据。5.3安全性需求每个用户在第一次登录后,必需更改她系统预置登录密码,系统预置登录密码不能重用。服务器要处理好和Internet链接借口,预防病毒传输和黑客攻击。5.4软件质量属性健壮性:系统应能够长时间无故障运行;易用性:web管理端界面应采取图形化操作方法,便于业务人员操作,确保中专以上文化程度人员能够无障碍操作;android用户端应采取图形化操作方法,确保熟悉手机操作各阶层用户使用。容错性:用户输错数据全部有提醒信息,含有很好容错性能;可扩展性:充足考虑到未来需求修改或增加,采取模块化设计,避免需求变更时大规模修改程序。5.5业务规则web管理端管理员对每个订单全部要进行处理,并提交处理结果反馈给android用户端。6分析模型6.1数据流图6.1.1顶层数据流图系统用户系统用户DF5超级管理员DF5超级管理员DF1DF1DF6校园外卖订餐系统DF6校园外卖订餐系统DF2DF7DF3DF7DF3一般管理员一般管理员DF8DF4系统数据库DF8DF4系统数据库图2-1系统顶层数据流图图2-1系统顶层数据流图数听说明:DF1:管理员输入数据,包含:一般管理员用户名,密码,等级信息DF2:操作结果和公共信息;DF3:管理人员输入到系统中数据,处理用户相关信息,处理外卖订单相关信息,添加外卖分类,添加外卖菜单新外卖,修改外卖信息,修改菜单信息。DF4:修改和查询菜单、外卖相关信息操作结果和公共信息;DF5:用户输入相关注册信息,用户订单信息,用户退订信息。DF6:修改和查询订单、外卖相关信息操作结果和公共信息;DF7:全部用户,一般管理员,超级管理员输入持久化数据,包含用户信息,管理员信息,订单信息,菜单信息,订单处理信息。DF8:全部用户,一般管理员,超级管理员输入持久化数据,包含用户信息,管理员信息,订单信息,菜单信息,订单处理信息结果显示,和修改查询相关信息所得到结果集。6.1.2一层数据流图系统用户超级管理员系统用户超级管理员DF5-1DF1DF5-1DF1DF5-2DF6-1DF2Android应用子系统DF5-2DF6-1DF2Android应用子系统子系统Web服务子系统DF3DF6-2DF3DF6-2DF7DF7系统数据库一般管理员系统数据库一般管理员DF4DF4图2-2系统一层数据流图图2-2系统一层数据流图数听说明:其中DF1,DF2,DF3,DF4,DF7,DF8同顶层数据流相同DF5分解为DF5-1和DF5-2.DF5-1为用户输入到Android应用子系统相关注册信息,用户订单信息,用户退订信息。DF5-2为从Android应用子系统到web服务子系统相关注册信息,用户订单信息,用户退订信息。DF6分解为DF6-1和DF6-2为web服务子系统返回到web服务子系统修改和查询订单、外卖相关信息操作结果和公共信息;DF6-1从Android应用子系统到用户修改和查询订单、外卖相关信息操作结果和公共信息;6.1.3二层数据流图本系统中,Android应用子系统相关数据流比较简单,不在具体分析。只对web服务子系统进行分解。前提:为图形简化,分析方便,不再考虑外部实体数据流,只考虑子系统内部数据流动,而且因为访客只有浏览公共信息权限,所以,公共信息浏览在下分析中不再出现,下分析模型只考虑登录用户功效和数据流向,而且因为数据流在上一层数据流图中有比较具体说明,在以后数据流图中除新出现数据流外,不再进行说明。菜单表菜单表1.5外卖菜单管理用户表,管理员表,菜单表1.5外卖菜单管理用户表,管理员表,菜单表1.4外卖订单处理1.4外卖订单处理1.3外卖分类管理1.3外卖分类管理外卖分类表外卖分类表1.1登录注册用户管理1.1登录注册用户管理各类用户各类用户1.2交互接口1.2交互接口管理员,用户表管理员,用户表Android应用子系统Android应用子系统图2-3web管理子系统数据流图图2-3web管理子系统数据流图6.2用例图图2-4管理员用例图用例说明:本系统管理员包含两类:继承自管理员,分别是超级管理员和一般管理员。超级管理员含有管理管理员功效,而一般管理员则负责本系统后台管理。图2-5总用例图用例说明:本系统有三类参与者:用户:使用本系统想外卖出售方订餐人超级管理员:管理管理员相关信息一般管理员:管理网站信息注册:注册用户申请网站会员资格下订单:挑选需要食品,向网站发送订单信息取消订单:对于预定好订单,不在需要时候,用户能够取消订单修改密码资料:登录以后修改相关密码信息,包含修改管理员和用户信息查询订单信息:申请订单以后,能够查询订单相关信息。管理管理员:超级管理员能够管理一般管理员信息,包含添加,修改,删除。添加外卖分类:在网站中,添加外卖分类信息,将菜品分类。添加外卖信息:在有外卖分类前提下,将外卖信息添加已存在外卖分类下。修改外卖分类:已添加外卖分类,修改,删除,查询存在相关信息修改外卖信息:已添加外卖信息,修改,删除,查询已存在相关信息处理订单:用户下订单以后,管理员处理订单图2-6用户用例图用例说明:修改密码资料:登录以后修改相关密码信息,包含修改管理员和用户信息管理管理员:超级管理员能够管理一般管理员信息,包含添加,修改,删除。添加外卖分类:在网站中,添加外卖分类信息,将菜品分类。添加外卖信息:在有外卖分类前提下,将外卖信息添加已存在外卖分类下。修改外卖分类:已添加外卖分类,修改,删除,查询存在相关信息修改外卖信息:已添加外卖信息,修改,删除,查询已存在相关信息处理订单:用户下订单以后,管理员处理订单图2-7超级管理员用例图用例说明:管理管理员:超级管理员能够管理一般管理员信息,包含添加,修改,删除。6.3系统时序图和协作图6.3.1管理员登录时序图和协作图图2-8登录系统时序图图2-9登录系统协作图说明:1,发送输入信息:发送给服务器2,查询并验证:查询数据库,验证发送数据正确性6.3.2管理员管理时序图和协作图图2-10管理员管理系统时序图图2-11管理员管理系统协作图说明:1输入各类信息,输入密码函数。2,增、删、改、查给类信息:增添删除修改查询,系统中用户、菜品分类、菜品等信息。3,显示:刷新页面函数4、通知通知管理员函数6.3.3用户操作时序图和协作图图2-12用户操作系统时序图图2-13用户操作系统协作图说明:1输入各类信息,输入密码函数。2,增、删、改、查给类信息:增添删除修改查询,系统中菜品,订单等信息。3,显示:刷新页面函数4、通知用户,通知用户函数6.4系统活动图本系统中,因为关键活动为用户订餐和一般管理员处理订单两个活动,所以,我们关键分析这两个活动。6.4.1用户订餐活动图图2-14用户订餐活动图6.4.2管理员处理订单活动图图2-15管理员处理订单活动图三、设计汇报1设计概述限制和约束本系统web管理端为B/S(浏览器/服务器)结构,采取JSP技术,系统框架为MVC模式,WWW服务器为TOMCAT7,数据库服务器为SQLSERVER,浏览器为IE8。1.2设计标准和设计要求系统环境:服务器端:Windows7操作系统,有IE8浏览器即可。用户端:智能手机android2.3系统安全性要求:只有授权用户才能登录系统,对于某个操作,需要含有对应权限才能进行操作。平台汉字化:采取GB2312编码标准;符合汉字使用习惯操作界面,全部和用户相关信息全部必需用汉字显示。数据库采取JDBC连接方法:以JDBC方法并使用标准SQL语句对数据库进行操作2系统概要设计和分析2.1系统功效设计此软件系统概要设计汇报是基于校园外卖订餐系统需求分析汇报所编写,意在根据用户需求开发出用户所需要软件。Web端功效:管理员有权限限制,一般和超级管理员所操作管理层次不一样。管理员可更改密码,超级管理员可添加、删除一般管理员。能够添加外卖可预订资源,如菜单、饮料等,并填写外卖描述信息。能够添加外卖分类,并填写新分类描述信息。能够修改外卖状态,有货或缺货。能够对订单进行操作同时到用户端,第一时间通知用户。Android手机用户端功效:登录外卖android手机用户端,用户能够随时随地经过手机登录校园外卖用户端。注册账号,用户若没有账号,能够经过手机用户端进行注册成为系统会员。修改个人信息,假如用户个人信息发生了改变,用户能够经过手机登录方法方便地更改个人信息,这也为校园外卖管理用户信息资料提供了便利。预订资源,这是本系统最关键部分,用户能够经过本系统方便快捷地预订其想要外卖,这也是为用户提供最关键功效。查看订单,当用户想要查询预订结果,或想要了解订单具体信息时,经过手机用户端能够快速查看订单。2.2子系统和模块校园外卖订餐管理系统含有两大子系统,android用户应用子系统和web管理子系统。2.2.1android用户应用子系统android用户应用子系统包含登陆注册模块、修改个人信息模块、外卖资源模块、订单模块。登陆注册模块包含用户注册和用户登录两大功效。NO.1用户注册基础功效用户填写个人信息进行注册。输入项用户名、密码、手机号码、送餐地址、性别、电子邮箱输出项注册成功、注册失败、用户名已存在等NO.2用户登录基础功效用户进行登录。输入项用户名、密码输出项登录成功、登录失败修改个人信息模块包含修改个人信息功效。NO.3修改个人信息基础功效用户登陆后对个人信息进行修改输入项密码、手机号码、送餐地址、性别、电子邮箱输出项修改成功、修改失败外卖资源模块包含查看外卖信息。NO.4查看外卖信息基础功效查看全部外卖信息。输入项无输出项名称、规格、价格、状态订单模块包含下订单、查询订单功效。NO.5下订单基础功效用户进行外卖订餐输入项要求送货时间、最晚到货时间输出项预订成功并显示订单信息NO.6查看订单基础功效对订单具体信息进行查看输入项无输出项订单编号、下单时间、送货状态2.2.2web管理子系统web管理子系统包含修改密码模块、管理员管理模块、外卖分类管理模块、外卖资源管理模块、订单管理模块。修改密码模块包含修改密码功效。NO.1修改密码基础功效修改自己密码输入项用户名、原密码、新密码、密码确定输出项修改成功、修改失败管理员管理模块包含添加管理员、删除管理员功效。NO.2添加管理员基础功效超级管理员添加一般管理员输入项登录名、登录密码输出项添加成功、添加失败NO.3删除管理员基础功效删除已经有一般管理员输入项无输出项删除成功、删除失败订单管理模块包含处理订单功效。NO.4处理订单基础功效对android用户端提交订单进行处理输入项预订成功、预定中、预定失败输出项字符串信息,通知用户端处理结果外卖分类管理模块包含添加外卖分类信息功效、修改外卖分类信息功效、删除外卖分类功效。NO.5添加外卖分类信息基础功效添加外卖类别信息输入项类名、图片、描述、备注输出项添加成功、添加失败NO.6修改外卖分类信息基础功效修改外卖分类信息输入项类名、图片、描述、备注输出项修改成功、修改失败NO.7删除外卖分类信息基础功效删除外卖分类信息输入项无输出项删除成功、删除失败外卖信息管理模块包含添加、修改、删除外卖资源信息功效。NO.8添加外卖资源信息基础功效添加外卖资源信息输入项名称、分类、规格、价格、描述、状态输出项添加成功、添加失败NO.9修改外卖资源信息基础功效修改外卖资源信息输入项名称、分类、规格、价格、描述、状态输出项修改成功、修改失败NO.10删除外卖资源信息基础功效删除外卖资源信息输入项名称、分类、规格、价格、描述、状态输出项删除成功、删除失败2.3系统犯错处理设计系统犯错出理设计关键经过两种方法来实现,一是JAVA程序中抛出异常;二是在程序中设置逻辑判定来实现。假如发生错误,将错误信息在后台输出,并将页面转到错误处理页面。2.4系统接口设计本系统接口关键分为三大类接口,一是和数据库服务器接口;二是各子系统及各页面间接口。2.4.1数据库服务器接口设计对于数据库服务器接口,采取主流JDBC接口,JDBC(JavaDataBaseConnectivity,java数据库连接)是一个用于实施SQL语句JavaAPI,能够为多个关系数据库提供统一访问,它由一组用Java语言编写类和接口组成。JDBC为工具/数据库开发人员提供了一个标准API,据此能够构建更高级工具和接口,使数据库开发人员能够用纯JavaAPI编写数据库应用程序。2.4.2系统内部接口设计系统内部接口通常采取WEB内部对象SESSION、REQUEST和POST来实现,当系统需要登录才能实施对应操作时,采取SESSION来传值,关键实现在服务器端代码内部中传值,具体实现方法关键经过两个函数来实现,一是session.setAttribute(),另一个是session.getAttribute();当系统需要从用户端向服务器端来传值时,用REQUEST和POST对象来实现。2数据库设计2.1数据库逻辑设计2.1.1数据库E-R图用户实体包含用户名、性别、密码、电子邮件、联络电话、送餐地址。用户名送餐地址用户名送餐地址性别性别密码用户密码用户电子邮件电子邮件联络电话联络电话图3-2用户实体E-R图管理员实体包含管理员登录名、性别、密码、管理员等级。密码密码管理员管理员等级管理员登录名管理员管理员登录名管理员图3-3管理员实体E-R图外卖分类实体包含管编号、类名、图片、规则描述、描述。描述编号描述编号图片图片类名外卖分类类名外卖分类规则描述规则描述图3-4外卖分类实体E-R图外卖菜单实体包含菜编号、菜等级、菜名、描述、所属分组、价格、状态。菜编号菜等级菜编号菜等级描述描述外卖菜单菜名外卖菜单菜名状态状态价格所属分组价格所属分组图3-5外卖菜单实体E-R图订单实体包含订单编号、提交人、处理人、订单状态、提交时间、备注信息。订单编号处理人订单编号处理人订单状态提交人订单订单状态提交人订单备注信息备注信息提交时间提交时间图3-6订单实体E-R图订单明细实体包含订单编号、所属订单号、菜单、处理状态、开始时间、结束时间。菜单订单编号菜单订单编号所属订单号订单明细处理状态所属订单号订单明细处理状态开始时间开始时间结束时间结束时间图3-7订单明细实体E-R图2.1.2数据库关系图图3-8数据库各表关系图说明:resource表中rgroup关联rgoup表中gidoinfo表中rgid关联resource表中rgid基表设计基表编号:1基表英文名称:adinfo基表汉字名称:管理员表字段编号字段名称数据类型主键是否为空说明1Adnamevarchar(20)是否管理员登陆名2Adpwdvarchar(20)否否管理员密码3Adlevelint否否管理员等级基表编号:2基表英文名称:users基表汉字名称:用户表字段编号字段名称数据类型主键是否为空说明1Unamevarchar(20)是否用户登录名2Pwdvarchar(20)否否登录密码3telNumvarchar(20)否否联络电话4realNamenvarchar(100)否否送货地址5Genderchar(10)否否性别(默认男)6Emailvarchar(40)否否电子邮件基表编号:3基表英文名称:rgroup基表汉字名称:外卖分类字段编号字段名称数据类型主键是否为空说明1gIdint是否编号2gNamenvarchar(10)否否类名3gImgvarchar(40)否否图片4gDetailnvarchar(200)否否描述5gOrderDetnvarchar(200)否否备注信息基表编号:4基表英文名称:resource基表汉字名称:菜单字段编号字段名称数据类型主键是否为空说明1Ridint是否菜编号2Rgroupint否否所属分组3Rgidnvarchar(20)是否菜名4Rlevelnvarchar(20)否否菜等级5Rmoneydouble否否价格6Rdetailnvarchar(100)否否描述7Rstatusnvarchar(20)否否状态(默认有货)基表编号:5基表英文名称:olist基表汉字名称:订单表字段编号字段名称数据类型主键是否为空说明1Oidint是否订单编号2Onamevarchar(20)否否提交人3Otimevarchar(20)否否提交时间4Odealvarchar(20)否否处理人(默认无)5Ostatusvarchar(20)否否订单状态(默认预定中)6oreasonvarchar(100)否否备注信息(默认无)基表编号:6基表英文名称:oinfo基表汉字名称:订单明细字段编号字段名称数据类型主键是否为空说明1Oridint是否预定编号2Oidint否否所属订单号3Rgidvarchar(20)否否菜单4Ftimevarchar(20)否否开始时间5Etimevarchar(20)否否结束时间6Ostatusvarchar(20)否否处理状态(默认预定中)备注:resource表中rgroup关联rgoup表中gidoinfo表中rgid关联resource表中rgid3系统具体设计和实现3.1web端系统功效开发3.1.1服务器端总框架服务器端各个jsp文件和servlet文件关系,以下图所表示:说明:ListServlet、OrderServlet和RegAndLoginServlet是控制器,负责处理服务器Web端管理员发来请求,DB是负责处理具体业务工具方法类,这些jsp文件在前台显示。动作编号动作内容a管理员登陆b修改管理员密码c删除管理员d添加管理员e重置管理员密码f添加分类g修改、删除分类h修改、删除外卖i添加外卖j修改、删除外卖k显示、处理订单3.1.2管理员登陆功效开发打开Web端登录页面,登录页面经过adindex.jsp实现,向控制器RegAndLoginServlet发出请求并处理其返回信息来实现管理员登录。开发RegAndLoginServlet,RegAndLoginServlet是校园外卖订餐系统关键控制器之一,管理员登录、注销、修改信息全部要经过RegAndLoginServlet处理并跳转。RegAndLoginServlet在Web端项目WEB-INF/classes目录下,实现关键代码以下:RegAndLoginServlet.javapublicclassRegAndLoginServletextendsHttpServlet{…… publicvoiddoPost(HttpServletRequestreq,HttpServletResponseres) throwsServletException,IOException{ req.setCharacterEncoding("gb2312"); res.setCharacterEncoding("gb2312"); //得到请求响应action Stringaction=req.getParameter("action"); //得到session对象 HttpSessionsession=req.getSession(true); PrintWriterpw=res.getWriter(); Stringmsg=""; if(action.equals("adlogin")){ session.removeAttribute("adname"); Stringadname=req.getParameter("adname").trim();//得到登陆名 Stringpwd=req.getParameter("pwd").trim();//得到登陆密码 //拼装从数据库得到登陆管理员密码SQL语句 Stringsqla="selectadpwdfromadinfowhereadname='"+adname +"'"; StringpwdFromDB=DB.getInfo(sqla);//实施查询得到正确密码 if(pwdFromDB!=null&&pwd.equals(pwdFromDB)){//登陆成功 session.setAttribute("adname",adname);//将登陆管理员保留进session msg="登陆成功。";//提醒登陆成功 }else{//登陆失败提醒 msg="错误用户名和密码,请重新登陆<br><br>"+"<ahref=adindex.jsp>重新登陆"; } //将信息发送到信息显示页面 req.setAttribute("msg",msg); req.getRequestDispatcher("adinfo.jsp").forward(req,res); }elseif(action.equals("adlogout")){//注销 session.removeAttribute("adname"); msg="退出成功。";//提醒注销成功 req.setAttribute("msg",msg); req.getRequestDispatcher("adinfo.jsp").forward(req,res); } }}3.1.3分类管理功效开发本模块包含功效关键有分类添加、修改和删除。管理员登录系统后,在分类管理页面即可修改和删除分组。分组管理页面是由adminGroup.jsp显示,管理员在adminGroup.jsp页面中选择"修改/删除",将向ListServlet发出请求,ListServlet处理该请求,关键代码以下:ListServlet.javapublicvoiddoPost(HttpServletRequestreq,HttpServletResponseres) throwsServletException,IOException{ req.setCharacterEncoding("gb2312");//设置req编码为gb2312 res.setCharacterEncoding("gb2312");//设置res编码为gb2312 Stringaction=req.getParameter("action");//得到请求响应action HttpSessionsession=req.getSession(true);//得到session对象 //得到登陆管理员ID StringadnameSes=(String)session.getAttribute("adname"); Stringmsg="";//申明消息字符串……}elseif(action.equals("editGroup")){//编辑分组 intgId=Integer.parseInt(req.getParameter("gId")); Vector<String>ginfo=DB.getGroupInfo(gId); req.setAttribute("ginfo",ginfo); req.getRequestDispatcher("GroupInfo.jsp").forward(req,res);……管理员登录系统后,在分组管理页面即可增加分组。分组管理页面是由adminGroup.jsp显示,管理员在adminGroup.jsp页面中选择"添加分组",将由addGroup.jsp向ListServlet发出请求,ListServlet处理该请求,关键代码以下:……}elseif(action.equals("addGroup")){ intgId=DB.getId("rgroup","gId");//得到添加分组ID //得到填写信息 StringgName=req.getParameter("gName"); StringgImg=req.getParameter("gImg"); StringgDetail=req.getParameter("gDetail"); StringgOrderDet=req.getParameter("gOrderDet");Stringsql="insertintorgroup(gId,gName,gImg,gDetail,gOrderDet)values(N'"+gId+"',N'"+gName+"',N'" +gImg +"',N'"+gDetail+"',N'"+gOrderDet+"')";//拼装SQL System.out.println(sql); if(DB.update(sql)>0){//实施更新 msg="添加分组成功<br><br><ahref=ListServlet?action=adminGroup>返回"; }else{ msg="未知错误,添加失败"; } this.forward(req,res,msg,"adinfo.jsp"); }……3.1.4外卖管理功效开发本模块包含功效关键有显示外卖信息、修改外卖信息、删除外卖信息、添加外卖和查询外卖。管理员登录系统后,外卖管理页面进行分页显示,需要开发页面有adminResource.jsp和adminFenYe.jsp,实现代码以下。adminResource.jsp……<%@includefile="adminRestop.jsp"%><%@includefile="adminFenYe.jsp"%>……上述代码为adminResource.jsp,在其实施完成后,页面跳转至adminFenYe.jsp,关键代码以下。adminFenYe.jsp<% Vector<String>list=(Vector<String>)session.getAttribute("list"); intgroup=Integer.parseInt(list.get(0)); StringgName=list.get(1);//得到分组名 StringcpStr=request.getParameter("cp"); intcurrPage=1;//设置默认目前页为第一页 if(cpStr!=null){ currPage=Integer.parseInt(cpStr.trim());//得到目前页 } intspan=5;//每页显示统计条数为5条 inttotalPage=DB.getTotal(span,group);//得到总页数%><% Vector<String[]>v=DB.getPageContent(currPage,span,group); intcolor=0;//改变每行颜色%>…… <% for(String[]s:v){ %> <trbgcolor=<%=color%2==0?"f7fbb9":"ffeeee"%>> <tdalign="center"><%=s[0]%></td> <tdalign="center"><%=s[6]%></td> <tdalign="center"><%=s[1]%></td> <tdalign="center"><fontcolor="red"size="3"><%=s[2]%>¥ </font></td> <tdalign="center"><%=s[3]%></td> <tdalign="center"><%=s[4]%></td> <tdalign="center"><ahref="ListServlet?action=editRes&&rid=<%=s[5]%>">修改/删除</a></td> </tr> <% color++; } %>…… <% if(currPage>1){ %><ahref="adminResource.jsp?cp=<%=curr1%>">>>上一页</a><% }…… <% // inttotalPage; for(inti=1;i<=totalPage;i++){ Strings=""; if(i==currPage){ s="selected"; } %> <optionvalue="<%=i%>"<%=s%>> 第<%=i%>页 </option> <% } %>…… <% if(currPage<totalPage){ %><ahref="adminResource.jsp?cp=<%=currPage+1%>">下一页>></a><% }%>……3.1.5订单管理功效开发本模块包含功效关键有显示订单、查询订单、处理订单。在订单管理功效开发实现前,首先开发出订单管理界面,addminOrder.jsp订单管理关键是依据不一样条件显示出不一样订单列表,并处理具体订单,这些功效经过向OrderServlet发出请求,OrderServlet处理请求关键代码以下:OrderServlet.java……elseif(action.equals("allOrders")){//按条件查询订单 if(session.getAttribute("adname")!=null){//管理员是否登陆 Stringsql="";//申明SQL引用 intconditon=Integer.parseInt(req.getParameter("condition")); switch(conditon){ case1://1表示全部订单 sql="select*fromolist"; break; case2://2表示已经处理订单…… break; case3://3表示未处理订单…… break; } Vector<String[]>list=Order_DB.getOrderList(sql); req.setAttribute("list",list);//将订单列表返回 req.getRequestDispatcher("adminOrders.jsp").forward(req,res); }else{ msg="请先登陆";//没有登陆提醒消息 req.setAttribute("msg",msg); req.getRequestDispatcher("adinfo.jsp").forward(req,res); } }elseif(action.equals("query")){//按编号查询订单 Vector<String[]>list=null; try{ intoid=Integer.parseInt(req.getParameter("oid")); Stringsql="select*fromolistwhereoid="+oid; list=Order_DB.getOrderList(sql); }catch(NumberFormatExceptionnfe)//输入订单号格式不正确 { list=newVector<String[]>(); }//返回一个空向量 req.setAttribute("list",list); req.getRequestDispatcher("adminOrders.jsp").forward(req,res); }elseif(action.equals("dealOrder")){//处理订单 Stringadname=(String)session.getAttribute("adname"); Stringreason=req.getParameter("reason"); Stringostatus=req.getParameter("ostatus"); intoid=Integer.parseInt(req.getParameter("oid")); //拼装SQL…… booleanb=DB.update(sqla,sqlb);//实施更新 if(b==true){ msg="订单处理成功<br><br>" +"<ahref='OrderServlet?action=allOrders&&condition=1'>返回"; }else{ msg="订单处剪发生错误,处理失败"; } req.setAttribute("msg",msg);//返回处理消息 req.getRequestDispatcher("adinfo.jsp").forward(req,res); } }3.2Android用户端功效开发3.2.1用户登录功效开发用户开启android用户端进入用户登录界面,用户能够直接输入用户名和密码进行登录,经过服务器验证以后进入本系统。下面介绍用户端登录功效实现,关键代码以下。MainActivity.javapublicvoidgotoLoginView(){ setContentView(R.layout.login); Buttonb=(Button)this.findViewById(R.id.loginButton01);//登录键监听 b.setOnClickListener(newOnClickListener(){ publicvoidonClick(Viewv){ //准备URL finalStringurl="http://"+IP_ADDRESS +":8080/DeliveryWeb/receive.jsp"; //准备参数列表 EditTextet1=(EditText)findViewById(R.id.loginEditText01); EditTextet2=(EditText)findViewById(R.id.loginEditText02); finalMap<String,String>params=newHashMap<String,String>(); params.put("params1",et1.getText().toString()); params.put("params2",et2.getText().toString()); Stringusername=et1.getText().toString(); //获取SharedPreferences SharedPreferencessp=MainActivity.this.getSharedPreferences( "actm",Context.MODE_PRIVATE); //从SharedPreferences中读取上次访问时间 Stringuname=sp.getString(username,//键值 null//默认值 ); SharedPreferences.Editoreditor=sp.edit(); editor.putString("uname",username); mit(); //} //发送数据 newThread(){ publicvoidrun(){ StringmsgStr=HttpUploadUtil.postWithoutFile(url, params);//将url和参数传给jsp Bundleb=newBundle(); //将内容字符串放进数据Bundle中 b.putString("msg",msgStr); //创建消息对象 Messagemsg=newMessage(); //设置数据Bundle到消息中 msg.setData(b); //设置消息what值 msg.what=Constant.LOGINVIEW; //发送消息 hd.sendMessage(msg); } }.start(); } }); Buttonre=(Button)this.findViewById(R.id.loginButton02);//注册键监听 re.setOnClickListener(newOnClickListener(){ publicvoidonClick(Viewv){ gotoRegister();//去注册界面 } }); curr=WhichView.LOGIN_VIEW; }……服务器端接收Android用户端传过来用户名和密码以后,对用户名和密码进行匹配判定,只有匹配成功以后方可进入主界面,不然返回登录失败提醒,关键代码以下:receive.jsp<%Stringparam1=request.getParameter("params1").trim();Stringparam2=request.getParameter("params2").trim();Stringuname=MyConverter.unescape(param1);Stringpwd=MyConverter.unescape(param2);Stringsqla="selectpwdfromuserswhereuname='"+uname+"'";if(DB.isExist(sqla)){ Stringsql="selectpwdfromuserswhereuname='"+uname+"'"; Stringpassword=DB.getInfo(sql).trim();//从数据库得到密码 if(pwd.equals(password)){ out.println(MyConverter.escape("登录成功")); } else{ out.println(MyConverter.escape("登录失败")); } }else{out.println(MyConverter.escape("用户不存在,请重新输入"));}%>用户端经过Handler消息处理器,依据消息what值实施对应代码,接收服务器端返回字符串,若接收字符串为"登录成功",则进入主界面;若接收字符串为"登录失败",则显示"登录失败"Toast,关键代码以下:MainActivity.javahd=newHandler(){ @Override publicvoidhandleMessage(Messagemsg){ //调用父类处理 super.handleMessage(msg); //获取消息中数据 Bundleb; b=msg.getData(); //获取内容字符串 StringmsgStr=b.getString("msg"); //依据消息what编号不一样,实施不一样业务逻辑 switch(msg.what){ caseConstant.GOTOLOGIN: gotoLoginView(); break; //将消息中内容提取出来显示在EditText中 caseConstant.LOGINVIEW: if(msgStr.equals("登录成功")){ Toast.makeText(MainActivity.this,"登录成功!", Toast.LENGTH_SHORT).show(); gotoMainView(); }else{ Toast.makeText(MainActivity.this,"登录失败", Toast.LENGTH_SHORT).show(); } break;3.2.2用户注册功效开发若用户没有账号,也能够经过单击登录界面注册按钮来进行注册,注册成功以后再进行登录,进入本系统主界面。单击注册按钮,进入注册界面,用户填写信息完成并经过用户端验证以后,将用户信息传给服务器端。服务器端取得用户信息后,首先判定用户名是否存在,若用户名存在,则提醒用户名已存在;若用户名不存在,则更新数据库中用户表,将用户注册信息添加到数据库中,关键代码以下:register.jsp<%Stringparam1=request.getParameter("yonghuming").trim();Stringparam2=request.getParameter("mm").trim();Stringparam3=request.getParameter("telnum").trim();Stringparam4=request.getParameter("realname").trim();Stringparam6=request.getParameter("sex").trim();Stringparam5=request.getParameter("email").trim();Stringyonghuming=MyConverter.unescape(param1);Stringmm=MyConverter.unescape(param2);Stringtelnum=MyConverter.unescape(param3);Stringrealname=MyConverter.unescape(param4);Stringemail=MyConverter.unescape(param5);Stringsex1=MyConverter.unescape(param6);System.out.print(sex1);Stringsqla="selectpwdfromuserswhereuname='"+yonghuming+"'";if(DB.isExist(sqla)){ out.println(MyConverter.escape("用户名已存在,请试试另一个!!!")); } else { Stringsql="insertintousersvalues('"+yonghuming+"','"+mm+"'"+ ",'"+telnum+"',N'"+realname+"','"+sex1+"','"+email+"')"; DB.update(sql); out.println(MyConverter.escape("注册成功,请输入用户名和密码以登录!")); }%>Android用户端收到服务器端传来提醒用户注册成功消息字符串以后,自动跳转至登录界面,用户输入注册用户名和密码进行登录,关键代码以下:MainActivity.java……caseConstant.REGISTER: //获取消息中数据 b=msg.getData(); //获取内容字符串 msgStr=b.getString("msg"); Toast.makeText(MainActivity.this,msgStr, Toast.LENGTH_SHORT).show(); System.out.println(msgStr); if(msgStr.equals("注册成功,请输入用户名和密码以登录!"))//假如从jsp得到字符串为登录成功,则转到首页 { gotoLoginView(); } break;……3.2.3显示和修改用户信息开发用户登录成功进入主界面以后,单击向右图形按钮,跳转至用户信息界面,此界面用于显示用户目前个人信息,用户能够依据需要修改包含密码在内个人信息。跳转到用户信息界面时,实施gotoUserInfo方法,系统将目前用户名传给服务器端。服务器端依据用户端传过来用户名,获取数据库中该用户个人信息,将其以字符串形式返回给用户端。用户端接收服务器端返回用户个人信息字符串,对字符串进行分割处理后分别显示到对应TextView中,供用户查看其个人信息。用户可能因为多种原因需要修改个人信息,更改TextView中内容后,单击更改信息按钮,经过用户端验证以后,将新用户信息发送给服务器端,就能够实现用户信息更改。发送到服务器端后,服务器端将取得数据存入数据库,实施SQL语句更新数据库中用户个人信息user表,并将更新结果返回给用户端。用户端取得服务器端返回字符串,并判定是否更新成功,若成功则跳转至登录界面,并提醒"更新成功,请重新登录!";若失败则显示"更新失败"。3.2.4显示全部外卖资源功效开发用户经过标题栏按键跳转到资源信息界面,显示全部外卖资源。在用户信息界面单击标题栏右侧图形按钮,或在订单信息界面单击标题栏左侧图形按钮时,服务器端从数据库中取得全部外卖信息返回给用户端。当界面跳转到全部资源信息显示界面时,向服务器端发送消息,服务器将用户端需要全部外卖信息进行处理以后以字符串形式返回给用户端。用户端接收服务器端传回参数字符串,调用initListViewf方法进行处理。依据list值判定显示界面类型方法。3.2.5订单列表功效开发在外卖信息界面单击标题栏右侧图形按钮时,跳转到订单列表界面,同时传给服务器端目前用户用户名,返回给Android用户端此用户全部订单信息,用户端将全部订单展现给用户。跳转至订单列表界面时,Android用户端将目前用户用户名发送给服务器,用于取得用户全部订单。服务器端取得用户端传来用户名后,调用DB_Order中getOrderListThree方法,取出此用户全部订单,将订单以字符串形式返回给用户端。用户端经过消息处理器取得服务器端传过来订单信息字符串,调用initListViewt方法对字符串进行处理后,将全部订单展现给用户。initListViewt用于将从服务器端取得内容显示在订单列表界面。3.2.6订单明细功效开发当用户想了解订单列表中某一订单具体信息时,单击此订单,就能够查看目前订单资源编号、订购起始时间、结束时间等具体信息。用户单击订单列表某一订单时,将订单编号传给服务器端。服务器端取得订单编号,从数据库中取出此订单具体信息返回给用户端。用户端经过消息处理器接收服务器端传过来订单信息字符串,经过分割处理,将各项订单信息展现给用户。3.2.7订单删除功效开发用户可能因为多种原因需要取消已下订单,本系统充足考虑到了用户需求。用户只需单击删除订单按钮,就能够删除选中订单。单击删除按钮,将需要删除订单编号和url传给服务器端。服务器端获取用户端传过来订单编号,调用删除订单方法将订单删除,并将处理结果返回给用户端。用户端接收服务器端返回订单处理结果,并将处理结果展现给用户。四、软件测试汇报1引言为了尽可能找出软件不足,提升软件质量,促进软件成功验收,专门制订了本纲领。其关键目标在于为所要进行测试工作制订多种必需准则和规范,和在相关方面协议基础上对测试工作进行合理组织和管理。2检验具体内容2.1软件代码测试2.2.1源代码通常性检验表4-1注释检验测试目标检验程序中注释是否规范,注释量是否达成要求测试方法和技术对代码进行检验完成标准能依据注释读懂代码并进行后面其它测试需考虑特殊事项无表4-2限制性检验测试目标在这个系统中,关键检测是否出现汉字乱码现象,时间是否能正常显示测试方法和技术用户端输入时间,观察服务器端是否正常显示。从数据库中读出汉字是否正常显示,无乱码现象。完成标准时间显示正常,无汉字乱码现象需考虑特殊事项无2.2.2软件一致性检验编译检验要求提交源代码在其要求编译环境中,能够重新编译无错误,而且能够完成对应功效,从而确定移交确实实是正确源代码。安装/卸载检验在新系统上用交付软件安装包重新安装各个模块,而且经过运行这些软件模块,能否完成对应功效,从而确定移交确实实是正确软件安装包。在安装后立即卸载所安装模块,而且检验是否能够做到根本卸载。2.2.3软件代码测试汇报表4-3web管理子系统测试用例编号01测试需求项Web管理端.06.12测试目标状态和测试数据状态达成预期要求序号测试项输入说明(操作)输出说明(预期结果)登陆系统输入预定正确用户名,密码输入错误用户名或密码直接输入空格进入用户选择页面显示“登录失败”显示“输入用户名和密码”注销管理员登陆后,点击注销显示“退出成功”管理员管理点击管理员管理点击添加管理员输入管理员信息点击删除管理员点击重置管理员密码输入管理员名称和新密码进入管理员列表页面进入管理员添加页面添加成功删除成功进入重置密码页面修改成功分类管理点击分类管理点击添加分类输入分类信息点击修改/删除按钮输入要修改分类信息点击删除按钮进入分类列表页面进入分类添加页面添加成功进入分类修改页面修改成功删除分类成功菜品管理点击外卖管理点击添加外卖输入外卖信息点击修改/删除按钮输入要修改外卖信息点击删除按钮进入外卖列表页面进入外卖添加页面添加成功进入外卖修改页面修改成功删除外卖信息成功订单管理点击订单管理点击添加外卖点击预定中、预订成功、预定失败进入订单列表页面进入外卖添加页面订单处理成功表4-3android用户端子系统测试用例编号02测试需求项Android用户端.06.12测试目标状态和测试数据状态达成预期要求序号测试项输入说明(操作)输出说明(预期结果)登陆系统输入预定正确用户名,密码输入错误用户名或密码直接输入空格进入首页显示“登录失败”显示“输入用户名和密码”注册用户进行信息注册显示“注册成功”修改用户信息点击右导航按钮修改用户信息进入用户信息页面修改成功外卖信息点击右导航按钮点击想订购外卖修改时间,点击预订进入外卖信息页面进入订购页面订购成功订单查看点击右导航按钮点击订单进入订单查看页面进入订单具体信息页面2.2软件系统测试(1)白盒测试:白盒测试法全方面了解程序内部逻辑结构、对全部逻辑路径进行测试。白盒测试法是穷举路径测试。在使用这一方案时,测试者必需检验程序内部结构,从检验程序逻辑着手,得出测试数据。贯穿程序独立路径数是天文数字。但即使每条路径全部测试了仍然可能有错误。第一,穷举路径测试决不能查出程序违反了设计规范,即程序本身是个错误程序。第二,穷举路径测试不可能查出程序中因遗漏路径而犯错。第三,穷举路径测试可能发觉不了部分和数据相关错误。(2)黑盒测试:黑盒测试也称功效测试,它是经过测试来检测每个功效是否全部能正常使用。在测试中,把程序看作一个不能打开黑盒子,在完全不考虑程序内部结构和内部特征情况下,在程序接口进行测试,它只检验程序功效是否根据需求规格说明书要求正常使用,程序是否能合适地接收输入数据而产生正确输出信息。黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,关键针对软件界面和软件功效进行测试。作为系统完成最终一个步骤,它是系统能否

温馨提示

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

评论

0/150

提交评论