订餐系统实验报告 课程名称: Android程序设计 班 级: 学 号: 姓 名: 任课教师: 程序功能与环境(服务器,手机实物照片,自己拍) 程序功能 餐厅订餐系统服务器,提供订餐服务





















订餐系统实验报告
课程名称: Android程序设计
班 级:
学 号:
姓 名:
任课教师:
程序功能与环境(服务器,手机实物照片,自己拍)程序功能餐厅订餐系统服务器,提供订餐服务餐厅订餐系统客户端,用户用来提交订单环境带有tomcat服务器的PC机一台,发布订餐服务支持安卓手机一部,测试客户端局域网环境,用来测试程序功能MVC架构用例,类图,(类图可以将文档页面放大了看)


数据与设计food.test.domainFood.java此类用于封装用户购买菜品的信息public int foodId; //菜品编号public String foodName; //菜品名称public float foodPrice; //菜品价格public int foodType; //菜品类型public String foodDescri; //菜品描述public String foodImage; //菜品图片——暂定为String类型用于存储图片名food.test.hylOrderListActivity.java此类为用户填写订购信息的Activity,用来处理订购信息,与用户进行交互,是连接用户和服务器的桥梁protected void onCreate(Bundle); //创建activity在onCreate函数中定义了两个按钮,并设置了监听函数:bsubmit.setOnClickListener(new OnClickListener() {//提交清单按钮被按下public void onClick(View v) {} //按钮被按下时触发private void callPost(Object[][] foods, String address,String email, String telephone, String suggest,String userId,String userName) {}//创建post方法,用来像服务端发送post请求};bcancel.setOnClickListener(new OnClickListener() {//取消按钮被按下。//用intent调用返回购物车界面Intent intent = new Intent(OrderListActivity.this,ShopCartShowAll.class);startActivity(intent);});protected Dialog onCreateDialog(int id); //创建对话框,用来显示用户提交信息的状态void onResume();//在视图按home键退出后,然后恢复时调用food.test.ldActivityComment.java此Activity是用来给用户填写对菜品的评论信息的,并提交到服务器设置了两个按钮bdone和brevert并设置监听,被点击时触发Bdone,提交信息Brever,重写信息ActivityMainInterface.java此类创建了选择菜单,用来选择对菜品进行评论@Overridepublic boolean onCreateOptionsMenu(Menu menu) {}//创建选择菜单@Overridepublic boolean onOptionsItemSelected(MenuItem item) {}//菜单项被点击时调用ActivityRegister.java此Activity类用来进行用户注册bdone.setOnClickListener(new OnClickListener();设置用户信息完成时提交信息按钮监听在public void onClick(View v);中测试用户名及密码是否为空,为空时给出提示,并判断两次输入的密码是否相同,并设置相同时跳转到用户登录界面即主界面OrderFoodLogin.java此类用于用户登录,并将用户信息提交到服务器进行匹配,并提示登录信息方法与上面的类似mp = new MediaPlayer();//播放音乐接下来的几个函数用来控制播放音乐food.test.sfpUserLogin.java此类用来创建显示用户登录状态的对话框,并通过toast给出登录状态信息private Dialog createLoginDialog(Context context){}//创建登录对话框@Overrideprotected Dialog onCreateDialog(int id); //重写创建对话框函数food.test.utilDButil.java此类为数据库工具类,用于对数据库的操作public DButil(Context context);//DButil的构造函数private void init();//数据库初始化函数public long addFood(ShopCart food); // 新增一条购买商品记录public Cursor getAllCartCursor();//查询所有的游标public ArrayList getAllShopCart();//得到购物车表里的所有数据public ArrayList<ShopCart> getFoodFromCart();//返回所有shopCart类型的ArrayListpublic int ModifyShopcart(int foodId,int foodnum,float foodsumprices ); //修改购物车中所有的数据public int deleteAllShopcart();//删除购物车中所有的数据public int deleteFood(String whereparam); //删除不需要的商品public ShopCart findFood(int foodid); //查找需要的商品public SQLiteDatabase getDB();//获取数据库连接public void close();//关闭数据库class MySQLiteHelper extends SQLiteOpenHelper{};//内部类,创建数据库辅助类HttpCallUtil.java此类封装了HTTP的连接public String getConntionPost(String url, String name,String psw,List data);// post请求public List putParam(List data);// 传递给服务端的数据,用Map进行封装public String getConntionGet(String url);// get请求public void getConntionImage(String url,ImageView iv);// 取得图片Util.java此类为工具类public Adapter initAdapter(Context context,ArrayList list,Cursor cur,int layout,String[] from,int[] to);// 实例化不同的适配器food.test.wjfModifyListCart.java此类用于修改购物车中的信息,比如订购的数量等Intent intent = getIntent(); //获取从购物车中传过来的信息foodid = intent.getIntExtra("foodid", 0); //拿到购物车中传过来的食品编号 foodIDfoodname = intent.getStringExtra("foodname");//拿到购物车中传过来的食品名称foodnamefoodnum=intent.getIntExtra("foodnum", 1); //拿到购物车中传过来的食品订购数量foodprice = intent.getFloatExtra("foodprice", 1.0f); //拿到购物车中传过来的食品单价foodpriccebmodify.setOnClickListener(new OnClickListener() {//设置修改按钮监听函数,设置当按钮被点击时修改食品的订购信息,并返回到购物车db.ModifyShopcart(foodid, foodnum, sumfoodprices); //对购物车中的食品进行修改Intent intent = new Intent(ModifyListCart.this, ShopCartShowAll.class);// //回到购物车界面startActivity(intent);ShopCart.java定义一个购物车的类,封装购物车的信息private int foodId;// 商品idprivate String foodName;// 商品名称private float foodPrice;// 商品单价private int foodNum;// 商品数量private float sumPrices;// 商品金额private int image;// 商品图片下面为每个变量设置set和get方法ShopCartAdd.java此类用于添加购物车,并设置跳转到购物车界面ShopCartShowAll.java此类用来显示购物车中的所有食品,并对食品进行增删操作db=new DButil(this); //初始化数据库shopcur=db.getAllCartCursor();//获得购物车中所有的游标shopcartList=db.getAllShopCart();//获取数据库中所有的数据for(int i=0;i<shopcartList.size();i++){food=(HashMap) shopcartList.get(i);Float prices= (Float) food.get("foodsumprices");//得到所有餐品总的金额totalprices+=prices;}private Dialog builder1(Context ctx) ;//创建修改,删除对话框,设置按钮监听private Dialog builder2(Context ctx);//创建确认删除对话框public boolean onCreateOptionsMenu(Menu menu);创建菜单功能,按菜单键弹出public boolean onOptionsItemSelected(MenuItem item);选择菜单项时触发ShowListCart.java显示购物车列表food.test.zqzutilFoodType.java默认为“肉食”FOOD_MEAT类GetNetWorkData.java从服务器获取有关主界面的所有数据public final static StringBuffer getConnectionPost(String url,HashMap<String, String> params);// url服务器端的URI地址, params发给服务端的请求参数,以键值对的形式封装名字和对应的值,其中params的名字键位应该跟服务端保持一致public final static ArrayList<Food> decodeResponseData(String sb);// 对服务器端的响应数据进行“解码”, sb服务器端的响应数据public static ArrayList<Food> decode(ArrayList<Food> resData, String itemStr);// 对图片的接收public static ArrayList<String> getAllFoodBitmapUrl(int foodType, String location, ArrayList<Food> foods);// return 对应菜品类型所有资源的URL的字符串public static String getAssignedFoodBitmapUrl(String location,String foodImage);// 获取指定资源的具体位置public static void setAssignedFoodBimapView(String url, ImageView foodImageView);//设置foodImageView视图ActivityShowFoodByType.javapublic Food selectedFood = new Food();// 用户在界面上选中的所有商品信息private ArrayList<Food> getServerFoodInfoByType(int flagType);// 根据菜品类型,获取服务器端的菜品信息private void prepareView();//准备显示在界面的数据public boolean onCreateOptionsMenu(Menu menu);// 添加功能Menu键public boolean onOptionsItemSelected(MenuItem item);// 监听用户选中事件private float getTotalMoney(float price, int number);// 计算(可能含小数位)总金额public final class ViewHolder{}// Bean对象,用来封装GridView中的一个数据public View getView(int position, View convertView, ViewGroup parent);// // 返回某一条数据的视图AndroidFoodMain.java此类用于在食品种类之间进行切换,包括肉食类,素食类,鲜汤类FoodDetail.java此类用于存放菜品的详细信息protected void onCreate(Bundle savedInstanceState);//创建Activitypublic String foodTypeTransform(int type);//获取食品的类型运行逻辑 (给出几个时序图,运行画面)注册4.1.1注册时序图
4.1.2 注册运行画面


登录登录时序图
登录运行画面

订餐订餐时序图

订餐运行画面









测试 功能,monkey测试基本功能测试上面的运行逻辑中已经给出基本运行效果,及功能演示,基本功能通过Monkey测试通过eclipse启动一个Android的emulator在命令行中输入:adb devices查看设备连接情况
在有设备连接的前提下,在命令行中输入:adb shell 进入shell界面
测试food.test程序#monkey -p food.test -v 20
改进的可能性界面显示效果,加入记录用户数据实现自动登录