基于Android平台的菜谱实现

申明敬告: 本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。

文档介绍

基于Android平台的菜谱实现

基于Android平台的菜谱实现1需求分析随着手机的广泛普及,无线技术的突飞猛进,移动生活、移动办公逐渐由概念转变为现实,对于传统的餐饮业也产生了潜移默化的影响。目前,大多数餐厅仍然以传统的纸质菜单为主。但是,这种点菜方式存在诸多弊端:从消费者角度来讲,菜谱不能及时更新,导致菜谱信息陈旧,点菜时经常出现某菜品已下架等情况。用户需求:从餐厅老板来说,及时更新纸质的菜谱,无疑会增加餐厅的额外支出。为了改善传统纸质菜谱的弊端,将菜谱应用于手机客户端,为消费者带来更为便利的客户体验。而实时的菜品更新,不仅解决了纸质菜谱短时间内就出现脏、乱、差的问题,实现餐厅无纸化操作,而且潜在的提升了饭店的形象。功能需求:用户可以进入菜单界面选择菜品分类,进入相应的分类内,查看该分类中的菜品信息,并对菜品的等级程度进行评价,查询某特定菜品,也可添加新菜品,删除菜品等。2功能实现本APP基于自身的需求,同时对西北大学周围众多餐厅现状的合理分析,结合实际,设计并实现了一个基于移动手机平台的智能菜谱显示,该系统的设计基于Android智能操作系统,简单的SQLite数据库,实现了对菜品的增、删、查、改各个功能。消费者可以添加要点的菜品,在餐后可以对菜品的口味及好感程度进行具体化的评价,这样是对餐厅工作人员的一个回馈,同时也可以为其他消费者就餐提供建议。2.1主界面1、实现了对菜品的具体分类。如图2-1\n图2-1单击所选择的菜品分类,出现菜品的镜像显示,为消费者提供更为直观的视觉效果,有助于消费者做出选择。如图2-2\n图2-22、是进入菜品显示的入口,同时也显示了该软件的使用方法如图2-3:图2-32.2菜谱显示界面1、该类菜品中所有菜品的具体展示,菜品名称、菜品分类、菜品描述、菜品编号、以及菜品的星级评价,单选或多选菜品。如图2-4:图2-4\n2、搜索菜品菜谱显示界面会显示该分类下的所有菜品,当需要直接看到某单个菜品的具体消息时,可以通过搜索框,进行菜名的特定筛选。如图2-5图2-53、对菜品进行添加4、删除菜品当菜品长时间被消费者冷落,或者有不想再推出的菜品时,进行及时的删除。为消费者提供实时的消息。如图2-6:图2-6\n2.3菜品添加界面当有新的菜品推出时,进行及时的添加,为消费者提供更多选择。软件对菜品的分类给与明确的选择,给用户提供便利。如图2-7:图2-73编码3.1镜像显示publicclassMyMirrorGalleryActivityextendsActivity{publicMyMirrorGallerygallery;@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.my_gallery);//ActionBarActionBaractionBar=getActionBar();actionBar.setDisplayHomeAsUpEnabled(true);actionBar.setDisplayShowHomeEnabled(true);\nactionBar.hide();actionBar.show();//---showitagain---gallery=(MyMirrorGallery)findViewById(R.id.Mygallery);gallery.setAdapter(newMyAdapter(this));}@OverridepublicbooleanonCreateOptionsMenu(Menumenu){super.onCreateOptionsMenu(menu);CreateMenu(menu);returntrue;}@OverridepublicbooleanonOptionsItemSelected(MenuItemitem){returnMenuChoice(item);}privatevoidCreateMenu(Menumenu){MenuItemmnu1=menu.add(0,0,0,"详情显示");{mnu1.setIcon(R.drawable.ic_launcher);mnu1.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER|MenuItem.SHOW_AS_ACTION_WITH_TEXT);\n}MenuItemmnu2=menu.add(0,1,1,"软件所有权");{mnu2.setIcon(R.drawable.ic_launcher);mnu2.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER|MenuItem.SHOW_AS_ACTION_WITH_TEXT);}MenuItemmnu3=menu.add(0,2,2,"使用说明");{mnu3.setIcon(R.drawable.ic_launcher);mnu3.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER|MenuItem.SHOW_AS_ACTION_WITH_TEXT);}}privatebooleanMenuChoice(MenuItemitem){switch(item.getItemId()){caseandroid.R.id.home:Toast.makeText(this,"YouclickedontheApplicationicon",Toast.LENGTH_LONG).show();Intenti=newIntent(this,MyMirrorGalleryActivity.class);i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);\nstartActivity(i);returntrue;case0:Intenti2=newIntent(this,MenuActivity.class);i2.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);startActivity(i2);returntrue;case1:Toast.makeText(this,"软件说明:",Toast.LENGTH_LONG).show();newAlertDialog.Builder(MyMirrorGalleryActivity.this).setTitle("软件说明:").setMessage("软件著作:***\n适用范围:所有爱好美食的人\n").setPositiveButton("确定",null).show();returntrue;case2:Toast.makeText(this,"使用说明",Toast.LENGTH_LONG).show();newAlertDialog.Builder(MyMirrorGalleryActivity.this).setTitle("使用说明:").setMessage("使用方法:\n1.选择食物类型;\n2.查看食物\n3.选择心仪的菜品\n").setPositiveButton("确定",null).show();returntrue;}\nreturnfalse;}}3.2添加菜品publicclassAddFoodActivityextendsActivity{protectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.addfood);Spinner();Buttonbtn_save=(Button)findViewById(R.id.btn_save);btn_save.setOnClickListener(newOnClickListener(){publicvoidonClick(Viewv){//TODOAuto-generatedmethodstubEditTexteditText1_foodname=(EditText)findViewById(R.id.editText1_foodname);//EditTextspinner1=(EditText)findViewById(R.id.spinner1);SpinnerspinnerGroup=(Spinner)findViewById(R.id.spinner1);EditTexteditText1_describe=(EditText)findViewById(R.id.editText1_describe);Stringfoodname=editText1_foodname.getText().toString();//Stringeditspinner1=spinner1.getText().toString();Stringclassification=spinnerGroup.getSelectedItem().toString();Stringdescribe=editText1_describe.getText().toString();FoodMenufood=newFoodMenu(foodname,describe,classification);MenuServicedbOpenHelper=newMenuService(AddFoodActivity.this);dbOpenHelper.add(food);//修改Intenti=newIntent(AddFoodActivity.this,MenuActivity.class);\ni.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);startActivity(i);finish();}});}publicbooleanonCreateOptionsMenu(Menumenu){//Inflatethemenu;thisaddsitemstotheactionbarifitispresent.getMenuInflater().inflate(R.menu.add_food,menu);returntrue;}publicbooleanonOptionsItemSelected(MenuItemitem){//Handleactionbaritemclickshere.Theactionbarwill//automaticallyhandleclicksontheHome/Upbutton,solong//asyouspecifyaparentactivityinAndroidManifest.xml.intid=item.getItemId();if(id==R.id.action_settings){returntrue;}returnsuper.onOptionsItemSelected(item);}privatevoidSpinner(){//分组Spinner填充ArrayListgroup=newArrayList();group.add("粥品");group.add("派和糕点");\ngroup.add("膨化食品");group.add("酱菜辅料");group.add("敢爱敢做");group.add("饼干");//创建适配器ArrayAdapteradapter=newArrayAdapter(this,R.layout.item_spinner,R.id.item_style,group);//获得控件对象SpinnergroupSpinner=(Spinner)this.findViewById(R.id.spinner1);//设置spinner对象的数据适配器groupSpinner.setAdapter(adapter);groupSpinner.setPrompt("食物分类");}}3.3菜谱显示publicclassMenuActivityextendsActivity{privateArrayListcheckBox=newArrayList();privateboolean[]hasChecked;privateListViewlistView;privateRatingBarratBar;privateandroid.widget.SimpleAdapteradapter;privateList>listItems;privateInteger[]imgid={R.drawable.p1,R.drawable.p2,R.drawable.p3,R.drawable.p4,R.drawable.p5,};privateCheckBoxcheck;\n@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);//去除标题//this.requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(R.layout.showfood);//ActionBarActionBaractionBar=getActionBar();actionBar.setDisplayHomeAsUpEnabled(true);actionBar.setDisplayShowHomeEnabled(true);actionBar.show();//---showitagain---//获得搜索按钮对象ImageButtonsearchbtn=(ImageButton)findViewById(R.id.searchbtn);//searchButton注册监听事件searchbtn.setOnClickListener(newView.OnClickListener(){@OverridepublicvoidonClick(Viewv){//TODOAuto-generatedmethodstubEditTextsearchtext=(EditText)findViewById(R.id.editTextSearch);Stringname=searchtext.getText().toString();\nMenuServicems=newMenuService(MenuActivity.this);ArrayList>data1=newArrayList>();Listlist=ms.QueryAllData();for(FoodMenufoodmenu:list){foodmenu.getName().toString();if(name.equals(foodmenu.getName().toString())){HashMapfoodMap=newHashMap();foodMap.put("num",foodmenu.getNum());foodMap.put("name",foodmenu.getName());foodMap.put("classification",foodmenu.getClassification());foodMap.put("describe",foodmenu.getDescribe());data1.add(foodMap);}}inta[]=newint[]{R.id.tvno,R.id.tvfoodname,R.id.tvclassification,R.id.bdetail};adapter=newandroid.widget.SimpleAdapter(MenuActivity.this.getApplicationContext(),data1,R.layout.list_item2,newString[]{"num","name","classification","describe"},a);listView=(ListView)findViewById(R.id.listview);listView.setTextFilterEnabled(true);//将listView控件和adapter绑定listView.setAdapter(adapter);listView.setOnItemClickListener(newAdapterView.OnItemClickListener(){@OverridepublicvoidonItemClick(AdapterViewadapterView,Viewview,\nintposition,longid){//TODOAuto-generatedmethodstubHashMapitemMap=(HashMap)adapterView.getItemAtPosition(position);intnum=(Integer)itemMap.get("num");StringfoodName=(String)itemMap.get("foodName");StringfoodClassification=(String)itemMap.get("foodClassificatoin");Stringdescribe=(String)itemMap.get("describe");FoodMenufoodm=newFoodMenu();foodm.setNum(num);foodm.setName(foodName);foodm.setClassification(foodClassification);foodm.setDescribe(describe);Intentintent=newIntent();intent.putExtra("food",foodm);intent.setClass(MenuActivity.this,ShowInfoActivity.class);MenuActivity.this.startActivity(intent);}});}});MenuServicems=newMenuService(this);//查询所有的菜品Listlist=ms.QueryAllData();//创建一个ArrayList集合,用于存放拥有food信息的MAP集合ArrayList>data=newArrayList>();for(FoodMenufoodmenu:list){\nHashMapfoodMap=newHashMap();foodMap.put("num",foodmenu.getNum());foodMap.put("name",foodmenu.getName());foodMap.put("classification",foodmenu.getClassification());foodMap.put("describe",foodmenu.getDescribe());data.add(foodMap);}inta[]=newint[]{R.id.tvno,R.id.tvfoodname,R.id.tvclassification,R.id.bdetail};adapter=newandroid.widget.SimpleAdapter(this.getApplicationContext(),data,R.layout.list_item2,newString[]{"num","name","classification","describe"},a);listView=(ListView)findViewById(R.id.listview);listView.setTextFilterEnabled(true);//将listView控件和adapter绑定listView.setAdapter(adapter);listView.setOnItemClickListener(newAdapterView.OnItemClickListener(){@OverridepublicvoidonItemClick(AdapterViewadapterView,Viewview,intposition,longid){//TODOAuto-generatedmethodstubHashMapitemMap=(HashMap)adapterView.getItemAtPosition(position);intnum=(Integer)itemMap.get("num");StringfoodName=(String)itemMap.get("foodName");StringfoodClassification=(String)itemMap.get("foodClassificatoin");Stringdescribe=(String)itemMap.get("describe");FoodMenufoodm=newFoodMenu();foodm.setNum(num);foodm.setName(foodName);\nfoodm.setClassification(foodClassification);foodm.setDescribe(describe);Intentintent=newIntent();intent.putExtra("food",foodm);intent.setClass(MenuActivity.this,ShowInfoActivity.class);MenuActivity.this.startActivity(intent);}});check=(CheckBox)findViewById(R.id.check_item);check.setOnCheckedChangeListener(newCheckBox.OnCheckedChangeListener(){@OverridepublicvoidonCheckedChanged(CompoundButtonbuttonView,booleanisChecked){//记录食品选中状态if(isChecked){MenuServicems=newMenuService(MenuActivity.this);ms.delete(listView.getCheckedItemPosition());}}});}4测试1、模块测试主界面、菜品图片显示界面,菜品信息显示界面,添加界面等之间的跳转是否正常,界面之间的衔接是否合理。经过多次跳转的测试,均到了预期的效果。界面设计虽然精简,使得操作简单,但是界面缺少推送,使得信息太过单一,信息量太少,影响用户体验。2、单元测试\n增、删、查、改是否正常(1)测试增加功能:在添加界面添加一道新菜品:草莓蛋糕,点击保存后,菜品添加功能测试测试用例测试目的测试结果测试用例一添加草莓蛋糕选择分类是否实现成功选择分类测试用例二添加抹茶慕斯单击保存后是否成功添加到菜单,是否成功显示添加菜品的信息添加成功且信息正确(2)测试删除功能删除功能测试测试用例测试目的测试结果测试用例一选中草莓蛋糕是否将该菜品删除成功删除测试用例二清空菜单按钮单击后是否将菜单中所有菜品删除菜单清空(3)测试查询功能查询功能测试测试用例测试目的测试结果测试用例一选中草莓蛋糕是否将该菜品在菜单中单独显示单独显示测试用例二选中抹茶慕斯查询到的信息是否正确信息正确(4)等级评价测试评价功能测试测试用例测试目的测试结果测试用例一评价草莓蛋糕能否给出星级评价成功评级1、数据库测试测试添加的菜品是否成功记录到数据库中,删除的菜品是否在数据库中移除,经多次测试,每次添加的菜品均可添加到数据库表中,删除的菜品也会在表中消失。5期望本软件真正运用到市场时,仍存在很多问题\n。后期设计将食客与饭店分开成为两个独立的个体,但是之间的交互更为密切,功能更为明确。食客端订餐,评价菜品,查询菜品。而饭店用户端,可以对食客反馈的信息进行管理,对食客给与的建议进行整合,进行对菜品的改进以及调整。并且添加一些推送信息,给食客更丰富的资讯,带来更好的用户体验。
查看更多

相关文章

您可能关注的文档