JAVA超市管理系统

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();
    }
}
  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于struts网上书店 JSP+Access论坛 网络招标信息管理系统 sql2000网络教学平台 mySQL超市管理系统 超市管理系统 教学管理系统 基于网络环境的选课系统 学生信息管理系统 新闻系统 新闻文章发布系统 考试系统 网络教学系统 网上书店系统 问卷管理... www.yateshi.com/service/13519.html 21K 2009-4-8 - 百度快照 求职java方向的web开发! - 程序员/软件工程师 - 58.com 2.熟悉STRUTS结构、MVC的开发;熟练Hibernate数据库持久层的开发及Spring。 3.能熟练应用多种JAVA应用服务器(Tomcat ,...武汉星星超市管理系统(2007-10-2007-12) 项目描述:对超市的货物、员工、财务进行管理 职责:模块开发,系统设计,数据... bj.58.com/tech/35220795x.shtml 11K 2009-2-13 - 百度快照 源码下载列表 - 纽纶网 | Nulung.com 600G IT资料,文档,书籍,... 1568_fjswpic12人气:超市管理系统\\数据库脚本和数据库备份超市管理系统\\数据库脚本和数据库备份-Supermarket ...所属分类:发布日期:2008-10-13文件大小:3845697提供者:StrutsNETBOOK6人气:一款网上书店的J2EE代码,采用STRUTS技术 ... www.dssz.net/100304-size-asc/1249.html 15K 2009-4-21 - 百度快照 新东方一搏职业培训学校 开发基于桌面的J2SE应用系统;(...2、MVC模式、Struts框架 3、...系统分析师。主要研究方向为软件项目管理、软件产品生命...曾主持参与铁路系统多个大型项目设计与开发,如全国铁路货车大修财务清算系统、车号标签自动识别系统、货车检修成本管理... www.hrbrcw.com/job/1920.aspx?jid=5165 53K 2009-4-22 - 百度快照
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值