小工具知识网

当前位置: 首页 > 行业知识 > Android Studio实现美食外卖系统

行业知识

Android Studio实现美食外卖系统

2026-11-01 10:48:57 来源:互联网转载

项目目录

  • 一、项目概述
  • 二、开发环境
  • 三、详细设计
    • 1、数据库设计
    • 2、增删改查
    • 3、数据源
      • (1)JSON文件
      • (2)JSON解析
      • 四、运行演示
      • 五、源码获取

        一、项目概述

        安卓美食外卖系统应用SQLite数据库、RecycleView列表、SharedPreferences存储、Adapter、Fragment等技术完成,对数据库的CRUD使用的淋漓尽致。启动应用,进入欢迎页面,选择新用户注册,注册成功后自动跳转至登录页面,选择记住密码则下次登录时免输账号和密码。登录成功进入主页面,底部导航栏默认显示店铺,进入任意店铺,显示商品的信息,点击商品图片显示详情,点击加入购物车,也可以在下方选择加减数量,或者清空购物车。在下方可以查看购物车中商品总数量和总价格,点击去结算进入支付页面。支付页面需要先选择收货地址,没有就要从我的导航栏中添加收货地址,然后进行支付;如果余额不足,则需要账户余额中进行充值。地址选择之后,余额也充足则支付成功,提交好订单。回到我的导航栏,在此可以更换头像、添加地址信息、充值账户余额、查看历史订单。长按可以删除地址信息和历史订单,还可以分享软件和退出登录。

        总体而言,系统设计逻辑清晰合理,用户提示丰富,使用体验良好,界面美观大方,功能齐全。

        二、开发环境

        三、详细设计

        1、数据库设计

        数据库名称为takeaway.db,数据表有4张,分别为:用户表、地址表、余额表和订单表。

        • 用户表:账号(主键)、密码
        • 地址表:账号、姓名、电话、详细地址(复合键)
        • 余额表:账号(主键)、金额
        • 订单表:账号、编号(主键)、日期、店铺、价格、内容
          public class MyDBOpenHelper extends SQLiteOpenHelper {    // 数据库文件名为takeaway.db,版本号为1    public MyDBOpenHelper(Context context) {        super(context, "takeaway.db", null, 1);    }    // 创建用户表User    public static final String CREATE_TABLE_USER = "create table User ("            + "account text primary key,"            + "password text)";    // 创建地址表Address,定义复合键为所有字段    public static final String CREATE_TABLE_ADDRESS = "create table Address ("            + "account text,"            + "name text,"            + "phone text,"            + "address text,"            + "CONSTRAINT composite_key primary key (account, name, phone, address))";    // 创建余额表Balance    public static final String CREATE_TABLE_BALANCE = "create table Balance ("            + "account text primary key,"            + "money text)";    // 创建订单表Order    public static final String CREATE_TABLE_ORDER = "create table MyOrder ("            + "account text,"            + "number text primary key,"            + "date text,"            + "shop text,"            + "price text,"            + "content text)";    // 数据库首次创建时创建数据表    @Override    public void onCreate(SQLiteDatabase db) {        db.execSQL(CREATE_TABLE_USER);        db.execSQL(CREATE_TABLE_ADDRESS);        db.execSQL(CREATE_TABLE_BALANCE);        db.execSQL(CREATE_TABLE_ORDER);    }    // 数据库版本升级    @Override    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {    }}

          2、增删改查

          所有应用往大了说都是通过数据库的增删改查来实现业务逻辑。我们以用于和Balance表交互的BalanceDao类为例。先定义一个Context对象,通常指的是应用程序或活动的上下文环境。在Android开发中,Context用于访问应用程序级别的资源和类以及调用应用程序级别的操作。再定义一个MyDBOpenHelper对象,它是一个自定义的帮助类,用于管理数据库的创建和版本管理。接着定义一个SQLiteDatabase对象,用于直接与数据库进行读写操作。

          BalanceDao构造函数,接收一个Context对象作为参数,并将其赋值给类的成员变量。open方法创建并打开数据库。首先尝试以写模式打开数据库,如果失败则以读模式打开。close方法关闭数据库连接,并将数据库引用设置为null。 addBalance方法接受一个Balance对象作为参数,并将其添加到Balance表中。 deleteBalance方法接受一个Balance对象作为参数,并从Balance表中删除与该账户相关联的记录。 updateBalance方法接受一个Balance对象作为参数,并更新Balance表中与该账户相关联的记录。 isExist方法检查指定账户是否已存在于Balance表中。queryBalance方法查询指定账户的余额,并返回相应的整数值。如果账户存在,则从结果集中获取余额并返回;如果不存在,则返回0。

          整个类的目的是提供一个接口来管理和操作存储在本地SQLite数据库中的账户余额数据。通过这些方法,开发者可以轻松地插入新记录、更新现有记录、查询特定账户的余额以及检查账户是否存在。

              // 添加余额信息    public void addBalance(Balance balance) {        ContentValues values = new ContentValues();        values.put("account", balance.getAccount());        values.put("money", balance.getMoney());        database.insert("Balance", null, values);    }    // 删除余额信息    public void deleteBalance(Balance balance) {        database.delete("Balance", "account = ?", new String[]{balance.getAccount()});    }    // 修改余额信息    public void updateBalance(Balance balance) {        ContentValues values = new ContentValues();        values.put("money", balance.getMoney());        database.update("Balance", values, "account = ?", new String[]{balance.getAccount()});    }    // 判断账号是否存在    public boolean isExist(String account) {        Cursor cursor = database.query("Balance", null, "account = ?", new String[]{ account }, null, null, null);        return cursor.getCount() > 0;    }    // 查询指定账号的余额信息    public int queryBalance(String account) {        // 查询Balance表中where指定列元素的记录        Cursor cursor = database.query("Balance", null, "account = ?", new String[]{ account }, null, null, null);        int money = 0;        if (cursor.getCount() > 0) {            cursor.moveToFirst();            money = cursor.getInt(cursor.getColumnIndex("money"));        }        cursor.close();        return money;    }

          3、数据源

          (1)JSON文件

          应用的数据源来自本地JSON文件。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。在Android开发中,JSON常用于存储和传输数据。Android提供了几种处理JSON的工具类,如JSONObject、JSONArray、JSONStringer和JSONTokener等,这些类位于org.json包下。

          JSON主要由两种结构组成:

          • 对象(Object):由一系列键值对组成的无序集合,使用大括号{}包围。
          • 数组(Array):由一系列值组成的有序集合,使用方括号[]包围。

            在res/raw目录中的takeway.json文件,可以对其中的JSON数组或JSON对象进行修改。

            (2)JSON解析

            在ShopFragment类中通过两个私有方法实现了JSON数据的读取和解析。首先,JSON2String方法读取了资源文件夹中的JSON文件并将其转换为字符串格式。接着,parseJSONWithJSONObject方法解析该JSON字符串,创建了一个Shop对象列表,其中每个Shop对象包含了商店的详细信息以及一个包含食品信息的Food对象列表。具体而言,通过JSONObject类遍历JSON数组,依次取出每个JSON对象。如果对象属性包含数组,再递归遍历,直至所有JSON对象取出存储到列表中。

               // 获取商店对象的JSON数组   JSONArray shopArray = new JSONArray(jsonString);   // 依次取出数组中的商店对象   for (int i = 0; i  

            四、运行演示

            Android Studio实现美食外卖系统

            五、源码获取

            以下两种方式都可以获取源代码:

            直接点击右侧链接下载源代码Android Studio实现美食外卖系统
            关注公众号《 萌新加油站 》后台回复:外卖

            Android项目专栏有你错过的精彩内容
            Android Studio实现订餐系统
            Android Studio实现考试管理系统
            Android Studio实现饮食搭配系统
            Android Studio实现星座配对系统
            Android Studio实现天气预报系统

            最后推荐4本可以改变命运的经典著作:

            1. 《寿康宝鉴》在线阅读白话文
            2. 《欲海回狂》在线阅读白话文
            3. 《阴律无情》在线阅读白话文
            4. 《了凡四训》在线阅读白话文
            5.    电子书百度网盘下载链接

上一篇:轻松解锁手机桌面!详细教程手把手教你解决!

下一篇:百度云服务器ip地址