Android Studio实现一个点餐系统

作业要求

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

写在前面

源码需要加lzlv58787

效果

登录注册

登录
在这里插入图片描述

注册
在这里插入图片描述

欢迎页

在这里插入图片描述

用户管理

在这里插入图片描述

菜品种类管理

在这里插入图片描述

菜品管理

在这里插入图片描述

订单查询

在这里插入图片描述

点餐

在这里插入图片描述

后厨助手

在这里插入图片描述

源码导读

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快速添加,附下图)
}

在这里插入图片描述

新建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);
}

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);
    }
}

新建注册活动

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

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

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

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

在这里插入图片描述

<?xml version="1.0" encoding="utf-8"?>
<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>

编写功能代码

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();
                }
        }
    }
}
用户管理

活动新建、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);
    }

}

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();
    }
}

user_item.xml

<?xml version="1.0" encoding="utf-8"?>
<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>

在这里插入图片描述

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

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

  • 12
    点赞
  • 238
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值