• Android Studio实现一个点餐系统


    作业要求

    功能:
    1.数据管理
    菜品类别:凉菜;热菜;汤菜;主食;酒水
    菜品管理:菜品的编号;名称;价格;所属类别;备注
    餐桌管理:桌号;人数
    2.点餐
    新开桌:桌号->点餐
    加菜:桌号->点餐
    3.结账
    根据桌号结单(可显示点餐明细与价格)
    4.流水查阅
    根据时间段查阅销售额(某段时间的午餐、晚餐)
    某段时间菜品销量排序
    5.其他要求
    5.0 要求启动活动界面,启动活动居住显示:***点餐系统;学号+姓名
    5.1有界面的地方,标题栏:学号+姓名
    5.2界面逻辑设计合理漂亮
    5.3严禁抄袭,如有发现俩人都不及格

    效果

    登录注册

    登录
    在这里插入图片描述

    注册
    在这里插入图片描述

    欢迎页

    在这里插入图片描述

    用户管理

    在这里插入图片描述

    菜品种类管理

    在这里插入图片描述

    菜品管理

    在这里插入图片描述

    订单查询

    在这里插入图片描述

    点餐

    在这里插入图片描述

    后厨助手

    在这里插入图片描述

    源码导读

    activity
    BaseActivity 封装基础活动,方便对活动进行统一管理
    FoodList 菜品活动
    FoodTypeList 菜品分类或欧东
    Home 主页面活动
    Login 登录页活动
    OrderList 点菜活动
    OrderShow 订单展示活动
    Regist 注册活动
    UserList 用户管理活动
    adapter
    FoodAdapter 菜品适配器
    FoodOrderAdapter 订单页中的菜品适配器
    FoodSpinnerAdapter 菜品下拉适配器
    FoodTypeAdapter 菜品分类适配器
    OrderAdapter 订单适配器
    UserAdapter 用户适配器
    UserSpinnerAdapter 用户下拉适配器
    model 实体类
    Food
    FoodType
    Orders
    User
    service 服务
    FoodService
    FoodTypeService
    OrderService
    UserService
    utils 工具类
    ActivityCollector 活动控制器
    Result 结果集

    手把手编写注册、用户管理板块

    新建实体类User
    package com.example.test_01.model;
    
    import org.litepal.crud.LitePalSupport;
    
    import java.util.Date;
    import java.util.List;
    
    public class User extends LitePalSupport {
        private int id;
        private String username;
        private String nickname;
        private String password;
        private Date createTime;
        private Date updateTime;
        private int status;
        private List<Orders> ordersList;	// 用户跟订单是一对多
        // get、set方法省略(可以通过alt+insert快速添加,附下图)
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    在这里插入图片描述

    新建User服务

    User服务中编写数据库操作

    UserService接口

    public interface UserService{
        /**
         * @param user
         * @return 登录
         */
        public Result login(User user);
    
        /**
         * @param user
         * @return 注册
         */
        public Result regist(User user);
    
        /**
         * @return 用户列表
         */
        public List<User> list();
    
        /**
         * @param id
         * @return 根据用户Id删除用户
         */
        public Result delUserById(int id);
        /**
         * @param id 用户id
         * @return
         * @desc  列表
         */
        public User getUserById(int id);
        /**
         * @param username 用户名
         * @param pwd 密码
         * @return
         * @desc  列表
         */
        public List<User> getUserByUserNameAndPwd(String username,String pwd);
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38

    UserServiceImpl实现类

    /**
     * @Desc  用户相关服务实现
     */
    public class UserServiceImpl implements UserService{
        /**
         * @param user 用户
         * @return  登录成功与否
         */
        public Result login(User user){
            boolean isExited = LitePal.isExist(User.class,"username = ? and password = ?",user.getUsername(),user.getPassword());
            if(isExited)
                return Result.SUCCESS;
            else
                return Result.ERROR;
        }
    
        /**
         * @param user
         * @return 注册
         */
        public Result regist(User user){
            user.save();
            return Result.SUCCESS;
        }
    
        @Override
        public List<User> list() {
            List<User> userList = LitePal.findAll(User.class);
            for(int i = 0; i < userList.size();i++){
                Log.d(TAG, "list: User信息" + userList.get(i).toString());
            }
            return userList;
        }
    
        @Override
        public Result delUserById(int id) {
            LitePal.delete(User.class,id);
            return Result.SUCCESS;
        }
    
        @Override
        public User getUserById(int id) {
            return LitePal.find(User.class,id);
        }
    
        @Override
        public List<User> getUserByUserNameAndPwd(String username, String pwd) {
            return LitePal.where("username = ? and password = ?",username,pwd).find(User.class);
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    新建注册活动

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    新建完成后生成.java(功能代码)和.xml(样式)文件

    在这里插入图片描述
    在这里插入图片描述

    编写样式文件,添加控件,可以通过Design模式直观看到控件并加以调整,也可以托拉拽生成控件并赋值属性,还是挺方便的

    在这里插入图片描述

    
    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity"
        android:orientation="vertical">
    
        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="昵称" />
        <EditText
            android:id="@+id/input_nickname"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:ems="10"
            android:inputType="textPersonName" />
        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="用户名" />
        <EditText
            android:id="@+id/input_username"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:ems="10"
            android:inputType="textPersonName" />
        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="密码" />
        <EditText
            android:id="@+id/input_password"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:ems="10"
            android:inputType="textPassword" />
        <Button
            android:id="@+id/btn_regist"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="注册"/>
    
    LinearLayout>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47

    编写功能代码

    public class Regist extends BaseActivity implements View.OnClickListener {
    		// 声明控件
        EditText InputUsername;
        EditText InputNickname;
        EditText InputPassword;
        Button BtnRegist;
        UserService userService = new UserServiceImpl();
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_regist);
            // 控件实例化
            InputUsername = findViewById(R.id.input_username);
            InputPassword = findViewById(R.id.input_password);
            InputNickname = findViewById(R.id.input_nickname);
            // 控件添加监听
            BtnRegist = findViewById(R.id.btn_regist);
            BtnRegist.setOnClickListener(this);
        }
    
        @Override
        public void onClick(View view) {
        		// 处理监听事件
            switch (view.getId()){
                case R.id.btn_regist:
                		// 获取控件值
                    String Username = InputUsername.getText().toString();
                    String Password = InputPassword.getText().toString();
                    String Nickname = InputNickname.getText().toString();
                    // 新建并赋值用户实例
                    User user = new User();
                    user.setUsername(Username);
                    user.setPassword(Password);
                    user.setNickname(Nickname);
                    user.setCreateTime(new Date());
                    // 调用用户注册服务
                    Result rec = userService.regist(user);
                    if(rec == Result.SUCCESS){
                        // 注册成功
                        Toast.makeText(this,"注册成功",Toast.LENGTH_SHORT).show();
                        // 结束活动
                        finish();
                    }
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    用户管理

    活动新建、xml文件的编写同上述注册活动,不再过多赘述。用户列表展示用到了RecyclerView,之前总结过RecyclerView的使用,参考这篇博文:https://blog.csdn.net/lzl980111/article/details/106988364
    这里直接上功能代码并进行注释解释

    UserList.java

    
    public class UserList extends BaseActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
    
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_user_list);
    			 // 实例化 recyclerView 并添加配置器
            RecyclerView recyclerView = findViewById(R.id.rv_user_list);
            LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
            recyclerView.setLayoutManager(linearLayoutManager);
            UserAdapter userAdapter = new UserAdapter();
            recyclerView.setAdapter(userAdapter);
        }
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    UserAdapter.java适配器的代码

    package com.example.test_01.adapter;
    
    import static android.content.ContentValues.TAG;
    
    import android.util.Log;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.Button;
    import android.widget.TextView;
    
    import androidx.annotation.NonNull;
    import androidx.recyclerview.widget.RecyclerView;
    
    import com.example.test_01.R;
    import com.example.test_01.model.User;
    import com.example.test_01.service.UserService;
    import com.example.test_01.service.UserServiceImpl;
    
    import java.util.List;
    
    public class UserAdapter extends RecyclerView.Adapter <UserAdapter.ViewHolder> {
    
    		// userList用于存储RecyclerView中的数据信息
        private List<User> userList;
        private UserService userService = new UserServiceImpl();
    
    		// 声明并实例化控件信息
        static class ViewHolder extends RecyclerView.ViewHolder{
            TextView Username;
            Button BtnDel;
            public ViewHolder(@NonNull View itemView) {
                super(itemView);
                Username = itemView.findViewById(R.id.text_user_item_name);
                BtnDel = itemView.findViewById(R.id.btn_user_item_del);
            }
        }
    
        private void listUser(){
            userList = userService.list();
        }
    	 // 构造函数中直接赋值数据信息
        public UserAdapter() {
            listUser();
        }
    
        /**
         * @param parent
         * @param viewType
         * @return
         * @desc  用户点击删除事件
         */
        @NonNull
        @Override
        public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        	// 声明一个新的布局并赋值给 RecyclerView 的 item(每一项)
            View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.user_item,parent,false);
            ViewHolder holder = new ViewHolder(view);
            // 设置按钮点击事件
            holder.BtnDel.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    int position = holder.getAdapterPosition();
                    User user = userList.get(position);
                    userService.delUserById(user.getId());
    
                    // 删除后刷新显示
                    userList = userService.list();
                    notifyDataSetChanged();
                }
            });
            return holder;
        }
    
        @Override
        public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
            User user = userList.get(position);
            // 这里的Username是上面声明的控件
            holder.Username.setText(user.getUsername());
        }
    
        @Override
        public int getItemCount() {
            return userList.size();
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87

    user_item.xml

    
    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
    
        <TextView
            android:id="@+id/text_user_item_name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:gravity="center_horizontal"
            android:text="测试"
            android:layout_weight="1"
            android:textColor="#000000"
            android:textSize="20sp" />
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/btn_user_item_del"
            android:text="删除">Button>
    LinearLayout>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    在这里插入图片描述

    xml是新建的用于UserList的RecyclerView的每一项的布局,建在layout中了

    大学生资料站,一个面向大学生的资源共享平台
    在这里插入图片描述

  • 相关阅读:
    Spring创建、Bean对象的存储和读取
    阿里云——云服务器基础运维与管理
    windows消息的处理过程 消息队列
    WPF父窗口中的UserControl 使用DataContext 绑定对应的ViewModel
    django开发: 富文本编辑器TinyMCE的默认字体大小及一键排版功能
    linux vim用法
    Kafka数据同步原理详解
    朴素贝叶斯——垃圾邮件过滤
    JavaScript面试题整理(一)
    在vscode运行java代码
  • 原文地址:https://blog.csdn.net/lzl980111/article/details/127921268