Android Studio实现一个点餐系统

Posted 黑胡子大叔的小屋

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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快速添加,附下图)


新建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:app1000套安卓(Android)毕业设计(带论文)大作业实例快速下载 (Android Studio)

[课程设计]Scrum 1.4 多鱼点餐系统开发进度

[课程设计]Scrum 1.6 多鱼点餐系统开发进度

[课程设计]Scrum 多鱼点餐系统(团队交流日)

餐厅到店点餐系统(APP)

[课程设计]Scrum 1.3 多鱼点餐系统开发进度