点餐系统设计.docx
《点餐系统设计.docx》由会员分享,可在线阅读,更多相关《点餐系统设计.docx(20页珍藏版)》请在冰豆网上搜索。
![点餐系统设计.docx](https://file1.bdocx.com/fileroot1/2022-11/17/280851a0-e426-40cc-81a8-770482e69b78/280851a0-e426-40cc-81a8-770482e69b781.gif)
点餐系统设计
点餐系统设计
题目:
点餐系统的设计与实现
学号2015122103498姓名:
巩金明(40%)专业:
15信管一班
负责内容:
大部分代码编写(含关键部分)
学号2015122103523姓名:
楼轩宇(30%)专业:
15信管一班
负责内容:
需求分析以及总体设计
学号2015122103539姓名:
郭新波(30%)专业:
15信管一班
负责内容:
详细设计以及小部分代码编写
论文完成日期:
二Ο一七年六月四日
1、系统需求分析
客户端功能需求分析:
登录、注册:
使用者想要运行系统必须登录,如果未申请账号能够通过注册模块申请;
菜谱查询:
查询目前餐厅店菜单列表数据;
详情查询:
可以查询一个菜的全部数据,有价格、介绍和数量;
在线点餐:
支持用户在线下单点餐;
选择座位:
支持使用者在Android手机上选座位;
我的订单:
支持使能够查看自己已经下单的数据,能够删掉自己的订单;
人工服务:
客户端可以呼叫服务员;
服务端功能分析:
登录模块:
管理员登录使用系统;
菜谱管理:
管理员能够查看当前界面的数据,能够添加、修改或者删除一个菜谱数据;
用户管理:
管理员能够查看到当前系统已经存在的用户信息,能够删掉一个用户信息;
原材料管理:
管理员可以查看当前系统的原材料信息,可以添加、修改或者删除一个原材料信息,原材料库存较低时会警报;
订单管理:
管理员可以查看到当前的所有订单信息,可以修改订单状态,例如把一个进行中的订单修改为已经完成;
具体的系统功能全部作用如下图:
患,如,隐私安全、个人财产安全等等,虽然此次开发的系统简单,但是安全问题是每个系统都必须考虑的问题。
网上订餐系统中既要保护用户个人信息的安全,保证不被泄露,还要保证他们的财产安全。
只有具备安全措施的系统才能够让用户放心。
3、可扩展性原则
现在的科技发展速度之快,不仅是研发的快,更新换代的速度也令人惊讶,科技技术不断退陈旧新,因此,为了适应时代的发展速度,系统的可扩展能力也是开发过程中要考虑的事情。
那么如何提高系统的可扩展性呢?
这里就充分体现了设计在开发中的重要作用。
在软件设计的过程中,将网上订餐系统划分成不同的功能模块,并降低模块之间的耦合度来提高系统的扩展性。
4.2系统设计目标
在系统开发之前要对系统进行需求分析,功能概括,难点解析等等的工作,之后对于系统大概要完成什么目标,系统的界面和设计等问题的思考来满足用户的要求。
系统设计过程中将系统分解为很多不同的小的系统,然后对分成的小的系统的功能、技术进行分析讨论,制定规定,在之后的开发中,先开发小的系统之后进行整合,逐步完成开发。
本系统是设计目标是建立一个基于Android技术的点餐系统,可以满足用户对手机订餐的需求。
根据需求分析还有自己的生活体会,在线点餐系统一定要有以下基本的要求。
(1)界面看着新颖活力、大方美观,吸引用户。
(2)具有易调试性和没有bug性。
(3)用户能够方便的查看所有的食品信息和单个用户的详细信息内容。
(4)具有操作方便、功能完善的管理功能。
4.3系统总体结构设计
系统的总体结构设计是在软件开发之前必须要做好的一件基本工作,作为一个优秀的程序员不仅要有很强的编码能力,对于系统的总体结构的设计也要很精通。
做好系统的总体结构设计会让系统开发顺利进行,做到事半功倍。
在此次系统的总体结构设计过程中,系统分为客户端和服务端,客户端是可以在安卓智能手机上使用的,服务端采用Servlet提供服务,持久化层采用MySQL,因为MySQL的安装和配置都适合小型的系统。
在进行系统的总体设计之后紧接着就是数据库的需求设计。
系统整体框架采用C/S模式,即客户端/服务器模式,其中客户端一方面与用户交互,提供良好的用户界面,另一方面与服务器端进行数据交换。
服务器端向客户端提供数据。
管理员可以对数据进行增,删,改,查等操作。
5、系统详细设计与实现
5.1登模块的实现
本系统使用前用户需要登录验证,在登录界面中,通过继承一个Activity来实现,界面上的控件用到了EditText、Button和CheckBox等等组件,EditText主要用来实现用户帐号和密码的输入。
登录过程中用户需要输入账号与密码,并且经由登录按钮来表达登录意图,意图表达完成,系统会经由HTTP的过程将帐号与密码发送到服务器端验证,并返回服务端的验证结果,如果验证正确那么提示使用者登录完成,然后自行转入主界面;如果错误,那么提示使用者登录失败。
该界面具有保存密码成功,假如使用者在登录时勾选了“保存密码”复选框,则下次再进入到本界面用户将不需要再次输入密码,而只需要点击登录按钮即可实现登录操作,记住密码的过程是通过Android平台提供的SharedPreferences来实现的。
当然如果用户还没有登录账号,则能够通过“注册”选项链接到用户注册界面,从而注册一个新号码;
具体的实现效果如图所示:
实现的核心代码如下:
loginActivity的doInBackground的方法发起url请求,发送用户名,密码
protectedStringdoInBackground(String...params){
StringurlString=AppConstant.getUrl(getApplicationContext())+"ServletService?
Action=login";
urlString+="&loginid="+etLoginID.getText()+"&passwords="+etPassword.getText();
Stringjson=httpHelper.HttpRequest(urlString);
returnjson;
}
loginActivity的onPostExecute的方法获取服务器返回json,验证密码是否正确
loginActivity的dealLogin是当密码验证成功后跳转到DishesListActivity
OnLineUsermodel=newOnLineUser();
//设置登陆成功的用户属性
model.setId(jsonObject.getInt("id"));
model.setLoginid(etLoginID.getText().toString());
model.setName(jsonObject.getString("name"));
application.setLoginUser(model);
//弹出提示框
toastUtil.show(model.getName()+",登录成功");
//跳转到登陆成功页面
intent=newIntent(LoginActivity.this,DishesListActivity.class);
startActivity(intent);
5.2菜谱模块的实现
用户成功登陆进入系统之后可以查看到当前系统所有菜谱信息,包括菜谱的图片、名称、单价和详细介绍信息,系统用了一个ListView组件来显示系统的菜谱信息,同时用户也可以通过界面左上角的搜索按钮来搜索菜谱信息,用户点击一条信息之后可以查看一个菜谱的详细介绍。
具体的实现效果如图所示:
实现的核心代码如下:
//请求获取列表数据的代码
@Override
protectedStringdoInBackground(String...params){
Stringjson=null;
serverUrl=AppConstant.getUrl(getApplicationContext())+"ServletService?
Action=getdisheslist&shopid="
+shopid;
BaseUtil.LogII(serverUrl);
json=httpHelper.HttpRequest(serverUrl);
returnjson;
}
//解析列表数据,并设置适配器的代码
list=newArrayList();
if(!
TextUtils.isEmpty(result.trim())){
list=gson.fromJson(result,newTypeToken>(){}.getType());
}else{
toastUtil.show("没有数据");
}
adapter=newDishesAdapter(DishesListActivity.this,list);
listview1.setAdapter(adapter);
点击listview中的一项,会跳转到详情页面,这其中会根据id去调用webservice查询数据库获取到详情数据
//界面点击跳转的代码
listview1.setOnItemClickListener(newOnItemClickListener(){
@Override
publicvoidonItemClick(AdapterView
>parent,Viewview,intposition,longid){
intent=newIntent(DishesListActivity.this,GoodDetailActivity.class);
intent.putExtra("id",list.get(position).getId());
startActivity(intent);
}
});
menu的实现,设置menu按键的弹出事件
publicbooleanonCreateOptionsMenu(Menumenu){
super.onCreateOptionsMenu(menu);
menu.add(0,99,0,"人工服务").setIcon(R.drawable.icon_application);
menu.add(0,100,0,"注销登录").setIcon(R.drawable.icon_application);
menu.add(0,101,0,"个人信息").setIcon(R.drawable.icon_application);
menu.add(0,106,0,"我的订单").setIcon(R.drawable.icon_application);
menu.add(0,102,0,"退出").setIcon(R.drawable.icon_application);
returntrue;
}
menu选中触发的事件参考onOptionsItemSelected方法
选中人工服务按钮后,会执行humanServices方法
privatevoidhumanServices(){
finalString[]arg=newString[6];
for(inti=0;iarg[i]=(i+1)+"号桌";
}
newAlertDialog.Builder(this).setTitle("选择服务桌号").setItems(arg,newDialogInterface.OnClickLi