ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

JAVA超市管理系统

2022-01-13 11:00:40  阅读:126  来源: 互联网

标签:JAVA 管理系统 System 超市 user println public userNo out


import java.util.HashMap;
import java.util.Map;

// 用户数据访问类(提供对用户数据的CRUD操作:增删改查)
public class UserDao {

    // 全局变量:存储所有User的集合
    private Map<Integer,User> userMap = new HashMap<>();

    // 增
    public boolean addUser(User user){
        if(!userMap.containsKey(user.getUserNo())){
            userMap.put(user.getUserNo(),user);
            return true;
        }
        return false;
    }

    // 删
    public boolean deleteUser(int userNo){
        if(userMap.containsKey(userNo)){
            userMap.remove(userNo);
            return true;
        }
        return false;
    }

    // 改
    public boolean updateUser(User user){
        if(userMap.containsKey(user.getUserNo())){
            userMap.put(user.getUserNo(),user);
            return true;
        }
        return false;
    }

    // 查
    public User selectUser(int userNo,String userPwd){
        if(userMap.containsKey(userNo)){
            User user = userMap.get(userNo);
            if(userPwd.equalsIgnoreCase(user.getUserPwd())){
                return user;
            }
        }
        return null;
    }

    // 根据账户查询是否存在指定用户
    public boolean checkUserNoExists(int userNo){
        return userMap.containsKey(userNo);
    }
}
// 超市会员类
public class User {

    private String userName; // 用户名称
    private Integer userNo; // 用户账号(用于登录的唯一标识)
    private String userPwd; // 用户密码
    private Integer score; // 用户积分
    private Date createDate; // 开户日期(yyyy-MM-dd)

    public User() {
    }

    public User(String userName, Integer userNo, String userPwd, Integer score, Date createDate) {
        this.userName = userName;
        this.userNo = userNo;
        this.userPwd = userPwd;
        this.score = score;
        this.createDate = createDate;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public Integer getUserNo() {
        return userNo;
    }

    public void setUserNo(Integer userNo) {
        this.userNo = userNo;
    }

    public String getUserPwd() {
        return userPwd;
    }

    public void setUserPwd(String userPwd) {
        this.userPwd = userPwd;
    }

    public Integer getScore() {
        return score;
    }

    public void setScore(Integer score) {
        this.score = score;
    }

    public Date getCreateDate() {
        return createDate;
    }

    public void setCreateDate(Date createDate) {
        this.createDate = createDate;
    }
}
// 日期格式化工具类
public class DateFormatUtils {

    // 将日期对象格式化为yyyy-MM-dd字符格式
    public static String dateToString(Date date,String pattern){
        if(pattern == null) {
            pattern = "yyyy-MM-dd";
        }
        return new SimpleDateFormat(pattern).format(date);
    }
}
// 用户业务功能相关实现类
public class UserService {

    // service依赖dao提供的数据操作能力来完成自己的业务处理能力
    private UserDao userDao = new UserDao();
    private Scanner input = new Scanner(System.in);

    // 管理系统启动方法
    public void start(){
        System.out.println("*********欢迎使用超市会员管理系统***********");
        do {
           printMenu();
           int choiceId = input.nextInt();
           switch (choiceId){
               case 1:
                   addScore();
                   break;
               case 2:
                   useScore();
                   break;
               case 3:
                   changePwd();
                   break;
               case 4:
                   showScore();
                   break;
               case 5:
                   addUser();
                   break;
               case 6:
                   dropUser();
                   break;
               default:
                   System.out.println("谢谢使用!");
                   return;
           }
           System.out.println();
        }while (true);
    }
    // 打印菜单的方法
    private void printMenu(){
        System.out.println("***************");
        System.out.println("*1.积分累计    *");
        System.out.println("*2.积分兑换    *");
        System.out.println("*3.修改密码    *");
        System.out.println("*4.查询剩余积分 *");
        System.out.println("*5.开卡        *");
        System.out.println("*6.销卡        *");
        System.out.println("*7.退出        *");
        System.out.println("****************");
        System.out.print("请选择:");
    }

    // 用于用户身份的检查(登录)
    private User findUser(){
        System.out.print("请输入账户:");
        int userNo = input.nextInt();
        System.out.print("请输入密码:");
        String userPwd = input.next();
        // 调用Dao提供的“查”方法
        User user = userDao.selectUser(userNo,userPwd);
        if (user == null) {
            System.out.println("用户账户或密码错误!");
        }
        return user;
    }

    // 积分累计
    private void addScore(){
        // 先登录检查
        User user = findUser();
        if(user != null) {
            System.out.print("请输入本次消费金额(1元累计1积分)");
            double pay = input.nextDouble();
            // 对user积分属性进行修改
            user.setScore(user.getScore()+(int)pay);
            // 修改用户信息
            userDao.updateUser(user);
            System.out.println("用户积分累计成功!当前积分:" + user.getScore());
        }
    }

    // 积分兑换
    private void useScore(){
        // 先登录检查
        User user = findUser();
        if(user != null) {
            System.out.print("请输入本次要兑换的积分(100积分兑换0.1元,不足100积分不能兑换)");
            int payScore = input.nextInt();
            // 验证积分是否充足
            if(user.getScore() >= payScore){
                // 对user积分属性进行修改
                user.setScore(user.getScore() - payScore);
                // 修改用户信息
                userDao.updateUser(user);
                System.out.println("用户积分兑换成功!本次兑换支付金额:"
                        +(payScore * 0.001)+"元。当前剩余积分:" + user.getScore());
            } else {
                System.out.println("您没有足够的积分来兑换!现有积分:" + user.getScore());
            }

        }
    }

    // 查询剩余积分
    private void showScore(){
        // 先登录检查
        User user = findUser();
        if(user != null) {
            System.out.println("用户名称:" + user.getUserName());
            System.out.println("用户账户:" + user.getUserNo());
            System.out.println("剩余积分:" + user.getScore());
            System.out.println("开卡日期:" + DateFormatUtils.dateToString(user.getCreateDate(),null));
        }
    }

    // 修改密码
    private void changePwd(){
        // 先登录检查
        User user = findUser();
        if(user != null) {
            System.out.print("请输入新密码:");
            String newPwd = input.next();
            System.out.print("请再次输入新密码:");
            String rePwd = input.next();
            if(rePwd.equals(newPwd)){
                // 更新用户
                user.setUserPwd(newPwd);
                // 调用DAO更新用户
                userDao.updateUser(user);
                System.out.println("密码修改成功!");
            } else {
                System.out.println("两次输入密码不一致,修改失败!");
            }
        }
    }

    // 开卡
    private void addUser(){
        User user = new User();
        user.setCreateDate(new Date()); // 开卡日期
        user.setScore(100); // 开卡即送100积分
        System.out.print("请输入用户名:");
        user.setUserName(input.next());
        System.out.print("请输入开卡密码:"); // 参考修改密码进行二次密码确认,此处省略...
        user.setUserPwd(input.next());
        // 随机生成用户账户(2种方式:1,使用随机数  2,使用日期时间)
        // 检查生成的账户是否存在
        while(true) {
            Random random = new Random();
            int randomNo = random.nextInt(100000000);
            if(!userDao.checkUserNoExists(randomNo)){
                // 设置用户的账户(唯一性)
                user.setUserNo(randomNo);
                break;
            }
        }
        // 方式2:通过日期格式化+随机数生成唯一卡号
//        String randomDateNo = DateFormatUtils.dateToString(new Date(),"HHmmss");
//        randomDateNo+= new Random().nextInt(10000);
//        int randomNum = Integer.valueOf(randomDateNo); // 整数卡号

        // 添加用户
        userDao.addUser(user);
        System.out.println("用户开户成功!您的卡号:"+user.getUserNo()+",请牢记!");
    }

    // 销卡
    private void dropUser(){
        // 先登录检查
        User user = findUser();
        if(user != null) {
            userDao.deleteUser(user.getUserNo());
            System.out.println("用户销户成功!");
        }
    }
}
/**
测试类
 */
public class Main {

    public static void main(String[] args) {
        // 启动管理系统
        new UserService().start();
    }
}

标签:JAVA,管理系统,System,超市,user,println,public,userNo,out
来源: https://blog.csdn.net/weixin_57614141/article/details/122469110

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有