Android Studio实现一个点餐系统
Posted 黑胡子大叔的小屋
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android Studio实现一个点餐系统相关的知识,希望对你有一定的参考价值。
写在前面
需要源码的可以联系我:lzlv58787(50¥)
点餐系统
作业要求
功能:
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
xml以上是关于Android Studio实现一个点餐系统的主要内容,如果未能解决你的问题,请参考以下文章