当前位置: 首页 > news >正文

JAVA高级第五章,简易超市会员管理系统

文章目录

  • 前言
  • 一、Mangae类
  • 二、Card类
  • 三、Main类
  • 总结


前言

一个简单的超市会员管理系统,主要功能包括会员的注册、登录、积分累计、积分兑换、密码修改等操作。


一、Mangae类

package shop;import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;public class Manage {// 使用 HashSet 存储会员卡对象,确保每张卡的唯一性public Set<Card> cards = new HashSet<>();// 主服务方法,显示菜单并提供不同操作的选项public void service() {Scanner sc = new Scanner(System.in);int num;do {// 显示菜单,供用户选择不同操作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("请选择操作,输入6和其他退出");num = sc.nextInt();// 根据用户选择的操作执行相应功能switch (num) {case 1 -> {System.out.println("----------积分累计--------");Card user = login(sc);if (user != null) {System.out.println("请输入增加的积分");user.add(sc.nextInt());System.out.println("您当前剩余的积分为" + user.getIntegral());}}case 2 -> {System.out.println("-----------积分兑换------------");Card user = login(sc);if (user != null) {exchange(user, sc);}}case 3 -> {System.out.println("-----------查询剩余积分-----------");Card user = login(sc);if (user != null) {System.out.println("您当前剩余的积分为" + user.getIntegral());}}case 4 -> {System.out.println("----------修改密码---------------");Card user = login(sc);if (user != null) {changePassword(user, sc);}}case 5 -> {System.out.println("--------------------开卡-----------------");register(sc);}case 6 -> {}}}// 允许继续操作,直到选择退出while (num > 0 && num < 6);}// 登录功能,用户输入卡号和密码进行身份验证public Card login(Scanner sc) {// 如果没有会员卡,提示用户先开卡if (cards.isEmpty()) {System.out.println("您还没有开卡哦,请先去开卡");return null;}System.out.println("请输入卡号");Integer id = sc.nextInt();System.out.println("请输入密码");String password = sc.next();// 遍历所有卡片,查找匹配的卡号和密码for (Card card : cards) {if (card.getID().equals(id) && card.getPassWord().equals(password)) {System.out.println("登录成功");return card;}}// 如果登录失败,提示错误System.out.println("用户名或密码错误,登陆失败");return null;}// 兑换奖励操作private void tryExchange(Card card, int cost, String item) {// 如果积分不足,提示用户选择其他商品if (card.getIntegral() < cost) {System.out.println("不好意思您的积分不足,请选择其他商品~");} else {// 如果积分足够,完成兑换并减少对应积分System.out.println("兑换成功~" + item);System.out.println("当前剩余积分为" + card.delete(cost));}}// 提供兑换选项,允许用户根据积分选择商品public void exchange(Card card, Scanner sc) {System.out.println("请选择兑换的奖励");System.out.println("1.九阳豆浆机一个3000积分");System.out.println("2.牛奶一箱2000积分");System.out.println("3.夏凉被一套1000积分");System.out.println("4.鸡蛋三斤500积分");System.out.println("5.可乐一瓶100积分");System.out.println("输入其他退出");int num;do {num = sc.nextInt();switch (num) {case 1:tryExchange(card, 3000, "九阳豆浆机一个");break;case 2:tryExchange(card, 2000, "牛奶一箱");break;case 3:tryExchange(card, 1000, "夏凉被一套");break;case 4:tryExchange(card, 500, "鸡蛋三斤");break;case 5:tryExchange(card, 100, "可乐一瓶");break;}} while (num > 0 && num < 6);// 兑换结束,感谢用户使用System.out.println("兑换结束,欢迎下次光临,有更多惊喜");}// 修改密码功能,要求密码长度至少6位public void changePassword(Card user, Scanner sc) {String next;do {System.out.println("请输入新的密码(不少于6位数)");next = sc.next();if (next.length() < 6) {System.out.println("密码少于6位,请重新输入");} else {// 密码修改成功user.setPassWord(next);System.out.println("密码修改成功!");break;}} while (next.length() < 6);}// 开卡功能,用户输入用户名和密码并进行验证public void register(Scanner sc) {System.out.println("请输入用户名");String userName;do {userName = sc.next();if (userName.length() < 1) {System.out.println("用户名不能为空,请重新输入");}} while (userName.length() < 1);String password;String confirmPassword;do {System.out.println("请输入密码(不少于6位)");password = sc.next();if (password.length() < 6) {System.out.println("密码少于6位,请重新输入");} else {System.out.println("请再次输入密码");confirmPassword = sc.next();if (!password.equals(confirmPassword)) {System.out.println("两次密码输入不一致,请重新输入");password = "";}}} while (password.length() < 6);// 创建新的会员卡并添加到 cards 集合中Card card = new Card(userName, password);if (cards.add(card)) {System.out.println("开卡成功~");System.out.println("您的卡号为: " + card.getID());}}
}

二、Card类


package shop;import java.util.Objects;
import java.util.Random;public class Card {// 会员卡的ID,唯一标识private Integer ID;// 会员的用户名private String userName;// 会员的积分private Integer Integral;// 会员的密码private String passWord;// 默认构造函数public Card() {}// 构造函数,使用用户名和密码创建会员卡,自动生成IDpublic Card(String userName, String passWord) {Random r = new Random();// 随机生成一个8位数的卡号this.ID = r.nextInt(90000000) + 10000000;this.userName = userName;this.passWord = passWord;this.Integral = 0;  // 初始积分为0}// 带有ID、用户名、积分和密码的构造函数public Card(Integer ID, String userName, Integer integral, String passWord) {this.ID = ID;this.userName = userName;this.Integral = integral;this.passWord = passWord;}// 获取会员卡的IDpublic Integer getID() {return ID;}// 设置会员卡的IDpublic void setID(Integer ID) {this.ID = ID;}// 获取会员的用户名public String getUserName() {return userName;}// 设置会员的用户名public void setUserName(String userName) {this.userName = userName;}// 获取会员的积分public Integer getIntegral() {return Integral;}// 设置会员的积分public void setIntegral(Integer integral) {Integral = integral;}// 获取会员的密码public String getPassWord() {return passWord;}// 设置会员的密码public void setPassWord(String passWord) {this.passWord = passWord;}// 重写equals方法,用于比较两个会员卡是否相等(通过ID进行比较)@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;Card card = (Card) o;return Objects.equals(ID, card.ID);}// 重写hashCode方法,确保ID唯一@Overridepublic int hashCode() {return Objects.hash(ID);}// 增加积分的方法,确保输入的积分大于0public Integer add(Integer add) {do {if (add < 0) {System.out.println("您输入的不对哦,请输入大于0的数");} else {// 增加积分this.Integral += add;}} while (add < 0);  // 如果输入的积分小于0,要求重新输入return this.Integral;}// 扣除积分的方法public Integer delete(Integer del) {this.Integral -= del;  // 扣除积分return this.Integral;}
}

三、Main类

package shop;public class Main {// 程序的入口点public static void main(String[] args) {// 创建一个管理对象,用于执行相关操作Manage manage = new Manage();// 调用服务方法,执行管理操作manage.service();}
}

总结

本项目实现了一个简单的超市会员管理系统,主要功能包括:会员开卡、登录、积分累计、积分兑换、查询积分、修改密码等。系统通过面向对象的设计方式,结构清晰、逻辑完整,适合初学者学习 Java 基础知识和项目开发流程。

http://www.dtcms.com/a/285481.html

相关文章:

  • sqli-labs靶场通关笔记:第29-31关 HTTP参数污染
  • Android 应用保活思路
  • 小红书采集工具:无水印图片一键获取,同步采集笔记与评论
  • 银河麒麟高级服务器V10(ARM)安装人大金仓KingbaseES完整教程
  • 【unitrix】 6.7 基本结构体(types.rs)
  • IDEA插件离线安装
  • Vue3 Anime.js超级炫酷的网页动画库详解
  • 完整的 Meteor NPM 集成
  • 游戏常用运行库合集下载 - 提升游戏与软件体验
  • Nestjs框架: 基于TypeORM的多租户功能集成
  • Linux C 进程间通信基本操作
  • QT Windows 资源管理器的排序规则
  • 通俗易懂:什么是决策树?
  • 禁止拖动视频进度条来保障视频安全?
  • MBIST - Memory BIST会对memory进行清零吗?
  • QGIS二次开发环境搭建(qgis-3.28.6+qt5.15)
  • Telink BLE 低电压检测
  • AI IDE冲击下JetBrains作死,IDEA埋订阅陷阱
  • Redis中字符串类型的实现原理
  • 数据通信与计算机网络——模拟传输
  • websocket案例 599足球比分
  • 计算机网络知名端口分配全表(0-1023)
  • 网络原理——UDP
  • 【论文精读】基于共识的分布式量子分解算法用于考虑最优传输线切换的安全约束机组组合
  • 游戏盾在非游戏行业的应用:跨界守护网络安全的新利器
  • 初探 Web 环境下的 LLM 安全:攻击原理与风险边界
  • Mock 单元测试
  • 如何上传github(解决git的时候输入正确的账号密码,但提示认证失败)
  • 撤销和重做!支持数据驱动的事务机制啦(使用OpenGL+QT开发三维CAD)
  • LatentSync: 一键自动生成对嘴型的视频