欢迎光临散文网 会员登陆 & 注册

安卓APP源码和设计报告(含PPT)——订餐系统

2022-12-11 01:00 作者:ChatGPT云炬学长  | 我要投稿



课程名称: Android程序设计

班 级:

学 号:

姓 名:

任课教师:


  1. 程序功能与环境(服务器,手机实物照片,自己拍)

    1. 程序功能

      1. 餐厅订餐系统服务器,提供订餐服务

      2. 餐厅订餐系统客户端,用户用来提交订单


  1. 环境

    1. 带有tomcat服务器的PC机一台,发布订餐服务支持

    2. 安卓手机一部,测试客户端

    3. 局域网环境,用来测试程序功能



  1. MVC架构用例,类图,(类图可以将文档页面放大了看)



  1. 数据与设计

    1. food.test.domain

      1. Food.java
        此类用于封装用户购买菜品的信息
        public int foodId; //菜品编号
        public String foodName; //菜品名称
        public float foodPrice; //菜品价格
        public int foodType; //菜品类型
        public String foodDescri; //菜品描述
        public String foodImage; //菜品图片——暂定为String类型用于存储图片名


  1. food.test.hyl

    1. OrderListActivity.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键退出后,然后恢复时调用


  1. food.test.ld

    1. ActivityComment.java
      此Activity是用来给用户填写对菜品的评论信息的,并提交到服务器
      设置了两个按钮bdone和brevert并设置监听,被点击时触发
      Bdone,提交信息
      Brever,重写信息

    2. ActivityMainInterface.java
      此类创建了选择菜单,用来选择对菜品进行评论
      @Override
      public boolean onCreateOptionsMenu(Menu menu) {}//创建选择菜单
      @Override
      public boolean onOptionsItemSelected(MenuItem item) {}//菜单项被点击时调用

    3. ActivityRegister.java
      此Activity类用来进行用户注册
      bdone.setOnClickListener(new OnClickListener();设置用户信息完成时提交信息按钮监听
      在public void onClick(View v);中测试用户名及密码是否为空,为空时给出提示,并判断两次输入的密码是否相同
      ,并设置相同时跳转到用户登录界面即主界面

    4. OrderFoodLogin.java
      此类用于用户登录,并将用户信息提交到服务器进行匹配,并提示登录信息
      方法与上面的类似
      mp = new MediaPlayer();//播放音乐
      接下来的几个函数用来控制播放音乐


  1. food.test.sfp

    1. UserLogin.java
      此类用来创建显示用户登录状态的对话框,并通过toast给出登录状态信息
      private Dialog createLoginDialog(Context context){}//创建登录对话框
      @Override
      protected Dialog onCreateDialog(int id); //重写创建对话框函数


  1. food.test.util

    1. DButil.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类型的ArrayList
      public 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{};//内部类,创建数据库辅助类

    2. 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);// 取得图片

    3. Util.java
      此类为工具类
      public Adapter initAdapter(Context context,ArrayList list,Cursor cur,int layout,String[] from,int[] to);// 实例化不同的适配器


  1. food.test.wjf

    1. ModifyListCart.java
      此类用于修改购物车中的信息,比如订购的数量等
      Intent intent = getIntent(); //获取从购物车中传过来的信息
      foodid = intent.getIntExtra("foodid", 0); //拿到购物车中传过来的食品编号 foodID
      foodname = intent.getStringExtra("foodname");//拿到购物车中传过来的食品名称foodname
      foodnum=intent.getIntExtra("foodnum", 1); //拿到购物车中传过来的食品订购数量
      foodprice = intent.getFloatExtra("foodprice", 1.0f); //拿到购物车中传过来的食品单价foodpricce
      bmodify.setOnClickListener(new OnClickListener() {//设置修改按钮监听函数,设置当按钮被点击时修改食品的订购信息,并返回到购物车
      db.ModifyShopcart(foodid, foodnum, sumfoodprices); //对购物车中的食品进行修改
      Intent intent = new Intent(ModifyListCart.this, ShopCartShowAll.class);// //回到购物车界面
      startActivity(intent);

    2. ShopCart.java
      定义一个购物车的类,封装购物车的信息
      private int foodId;// 商品id
      private String foodName;// 商品名称
      private float foodPrice;// 商品单价
      private int foodNum;// 商品数量
      private float sumPrices;// 商品金额
      private int image;// 商品图片
      下面为每个变量设置set和get方法

    3. ShopCartAdd.java
      此类用于添加购物车,并设置跳转到购物车界面

    4. 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);选择菜单项时触发

    5. ShowListCart.java
      显示购物车列表


  1. food.test.zqz

    1. util

      1. FoodType.java
        默认为“肉食”FOOD_MEAT类

      2. 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视图


  1. ActivityShowFoodByType.java
    public 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);// // 返回某一条数据的视图

  2. AndroidFoodMain.java
    此类用于在食品种类之间进行切换,包括肉食类,素食类,鲜汤类

  3. FoodDetail.java
    此类用于存放菜品的详细信息
    protected void onCreate(Bundle savedInstanceState);//创建Activity
    public String foodTypeTransform(int type);//获取食品的类型

  1. 订餐运行画面












  1. 测试 功能,monkey测试

    1. 基本功能测试
      上面的运行逻辑中已经给出基本运行效果,及功能演示,基本功能通过

    2. Monkey测试

      1. 通过eclipse启动一个Android的emulator

      2. 在命令行中输入:adb devices查看设备连接情况

  1. 在有设备连接的前提下,在命令行中输入:adb shell 进入shell界面

  1. 测试food.test程序
    #monkey -p food.test -v 20



  1. 改进的可能性

界面显示效果,加入记录用户数据实现自动登录


安卓APP源码和设计报告(含PPT)——订餐系统的评论 (共 条)

分享到微博请遵守国家法律