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

注册






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服务中编写数据库操作
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中了