Android Studio实现一个点餐系统
创始人
2024-04-11 07:14:18

点餐系统

  • 作业要求
  • 效果
    • 登录注册
    • 欢迎页
    • 用户管理
    • 菜品种类管理
    • 菜品管理
    • 订单查询
    • 点餐
    • 后厨助手
  • 源码导读
    • 手把手编写注册、用户管理板块
        • 新建实体类User
        • 新建User服务
        • 新建注册活动
        • 用户管理

作业要求

功能:
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 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 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 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;elsereturn Result.ERROR;}/*** @param user* @return 注册*/public Result regist(User user){user.save();return Result.SUCCESS;}@Overridepublic List list() {List userList = LitePal.findAll(User.class);for(int i = 0; i < userList.size();i++){Log.d(TAG, "list: User信息" + userList.get(i).toString());}return userList;}@Overridepublic Result delUserById(int id) {LitePal.delete(User.class,id);return Result.SUCCESS;}@Overridepublic User getUserById(int id) {return LitePal.find(User.class,id);}@Overridepublic List getUserByUserNameAndPwd(String username, String pwd) {return LitePal.where("username = ? and password = ?",username,pwd).find(User.class);}
}

新建注册活动

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

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

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

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

在这里插入图片描述



编写功能代码

public class Regist extends BaseActivity implements View.OnClickListener {// 声明控件EditText InputUsername;EditText InputNickname;EditText InputPassword;Button BtnRegist;UserService userService = new UserServiceImpl();@Overrideprotected 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);}@Overridepublic 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 {@Overrideprotected 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  {// userList用于存储RecyclerView中的数据信息private List 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@Overridepublic 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() {@Overridepublic void onClick(View view) {int position = holder.getAdapterPosition();User user = userList.get(position);userService.delUserById(user.getId());// 删除后刷新显示userList = userService.list();notifyDataSetChanged();}});return holder;}@Overridepublic void onBindViewHolder(@NonNull ViewHolder holder, int position) {User user = userList.get(position);// 这里的Username是上面声明的控件holder.Username.setText(user.getUsername());}@Overridepublic int getItemCount() {return userList.size();}
}

user_item.xml



在这里插入图片描述

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

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...