Android Studio实现一个点餐系统
创始人
2024-01-31 14:25:31
0

点餐系统

  • 作业要求
  • 效果
    • 登录注册
    • 欢迎页
    • 用户管理
    • 菜品种类管理
    • 菜品管理
    • 订单查询
    • 点餐
  • 源码导读
    • 手把手编写注册、用户管理板块
        • 新建实体类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中了

相关内容

热门资讯

规则之下谋共赢 中欧电动汽车贸...   中欧电动汽车贸易磋商,迎来关键转折。  1月12日,中国商务部用一则不到400字的通报,介绍了中...
“快递发货”“送货上门”……这... 岁末年初烟花爆竹进入销售旺季线上售卖、快递运输……警惕这些都是违法行为! 违法售卖、违法运输、寄递...
神舟二十号航天员“换乘”飞船返...   中新网北京1月16日电 (马帅莎 占康)1月16日,中国航天员科研训练中心在北京航天城举行神舟二...
尹锡悦紧急戒严系列案件首场宣判...   △韩国前总统尹锡悦(资料图)  当地时间16日下午,韩国首尔中央地方法院将就前总统尹锡悦发动紧急...
从概念到落地,“物理AI”的“...   “‘物理人工智能(物理AI)’的‘ChatGPT时刻’已经到来。”在不久前落下帷幕的美国拉斯维加...
精准滴灌中小民企,夯实经济内生...   1月15日,中国人民银行副行长邹澜在国新办新闻发布会上宣布,将合并使用支农支小再贷款与再贴现额度...
中方祝贺乌拉圭接任77国集团2...   中新网北京1月16日电 (记者 谢雁冰)中国外交部发言人郭嘉昆16日主持例行记者会。  有记者提...
一根细丝扛千钧   【瞧!我们的前沿科技】  国产高性能碳纤维量产落地——  一根细丝扛千钧  光明日报记者 崔兴毅...
从保障到服务:星相守与金医保的... 先看保障责任的核心导向,这是两者最直观的区别。星相守更偏向“基础保障的全面性”,核心责任覆盖住院、手...