利用集合框架实现-超市会员管理系统

借助集合框架来实现超市会员管理系统,实现以下功能:

1.开卡   2.积分累计   3.查询剩余积分   4.积分兑换   5.修改密码   6.退出

--------------------------------------------------------------------------------------------------

展示:

 

 

--------------------------------------------------------------------------------------------------

1.创建会员Member类

package dh05.test;
//会员类
public class Member {private String name;//会员名private int id;//会员卡号private String pwd;//会员密码private String firstDate;//开卡日期private int scores;//积分//构造函数-------------------------------public Member() {}public Member(String name, int id, String pwd, String firstDate, int scores) {this.name = name;this.id = id;this.pwd = pwd;this.firstDate = firstDate;this.scores = scores;}//-----------------------------------@Overridepublic String toString() {return "Member [会员名=" + name + ", 卡号=" + id + ", 密码=" + pwd + ", 开卡日期=" + firstDate + ", 积分="+ scores + "]";}//set&get-----------------------------public String getName() {return name;}public void setName(String name) {this.name = name;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getPwd() {return pwd;}public void setPwd(String pwd) {this.pwd = pwd;}public String getFirstDate() {return firstDate;}public void setFirstDate(String firstDate) {this.firstDate = firstDate;}public int getScores() {return scores;}public void setScores(int scores) {this.scores = scores;}}

--------------------------------------------------------------------------------------------------

2.创建会员服务类

部分分析:

  1. 每次进行操作的时候,都需要对集合中的数据进行查询,因此需要写查询会员是否存在集合的方法,便于后续操作的使用

    //验证会员是否存在
        public Member hasMember(Member m) {
            Member member = null;

            //如果输入的ID跟密码都正确,则证明该会员存在,可以进行下一步的操作
            for (Member everyMember : list) {
                if (m.getId() == everyMember.getId() && m.getPwd().equals(everyMember.getPwd())) {
                    member = everyMember;
                }
            }
            return member;
        }

  2. 循环打印系统信息便于操作

    //show方法
        public void show() {
            System.out.println("**********欢迎进入超市会员管理系统**********");
            System.out.println("1.开卡   2.积分累计   3.查询剩余积分   4.积分兑换   5.修改密码   6.退出");
            System.out.println("************************************");
            System.out.print("请选择:");
        }

  3. ​​​​​生成指定范围的随机数

    n=rand.nextInt(max-min+1)+min (范围)

详细代码如下:

//会员业务类import java.util.List;
import java.util.Random;
import java.util.Date;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Scanner;public class MemberSer {Scanner sc = new Scanner(System.in);List<Member> list = new ArrayList<Member>();// 建立集合,member泛型/** 1.开卡 ---》赠送积分100 2.积分累计 3.查询剩余积分 4.积分兑换 5.修改密码 6.退出*/public void start() {boolean isIn = true;do {show();switch (sc.nextInt()) {case 1:// 开卡newVIP();continue;case 2:// 积分累计if (addScores()) {System.out.println("积分累计成功!");}continue;case 3:// 查询剩余积分lookScores();continue;case 4:// 积分兑换excScores();continue;case 5:// 修改密码if (changePwd()) {System.out.println("密码修改成功!");}continue;case 6:// 退出System.out.println("感谢使用!");isIn = false;continue;default:System.out.println("输入有误,请重新输入!");continue;}} while (isIn);}//------------------------------------
//show方法public void show() {System.out.println("**********欢迎进入超市会员管理系统**********");System.out.println("1.开卡   2.积分累计   3.查询剩余积分   4.积分兑换   5.修改密码   6.退出");System.out.println("************************************");System.out.print("请选择:");}//验证会员是否存在public Member hasMember(Member m) {Member member = null;for (Member everyMember : list) {if (m.getId() == everyMember.getId() && m.getPwd().equals(everyMember.getPwd())) {member = everyMember;}}return member;}// 开卡方法public void newVIP() {Member member = new Member();// 定义member对象// 1.开卡 ---》赠送积分100// 生成随机卡号(6位卡号)System.out.print("请输入注册姓名:");member.setName(sc.next());System.out.print("请输入注册密码:");// 会员卡密码不能低于6位boolean bool = true;while (bool) {String pwd = sc.next();if (pwd.length() < 6) {System.out.print("密码长度不能小于6位,请重新输入密码:");continue;} else {member.setPwd(pwd);bool = false;}}// 记录第一次开卡时间Date date = new Date();// 格式化日期SimpleDateFormat formater = new SimpleDateFormat("yyyy年MM月dd日");String firstDate = formater.format(date);member.setFirstDate(firstDate);// 存第一次开卡时间member.setId(createID());// 存IDmember.setScores(100);// 初始化积分100// 将注册成功的会员添加到会员集合中,并提示开卡成功list.add(member);System.out.println("开卡成功,赠送100积分,您的会员卡号为:" + member.getId());}//生成会员卡号public int createID() {// 生成6位随机数// n=rand.nextInt(max-min+1)+min (范围)int min = 100000;int max = 999999;Random random = new Random();int newID = random.nextInt(max - min + 1) + min;// 保证生成的会员卡号和之前已有的的不重复for (Member member : list) {if (member.getId() == newID) {newID = random.nextInt(max - min + 1) + min;}}return newID;}//积分累计	public boolean addScores() {boolean bool = true;//累计积分是否成功Member member = new Member();System.out.print("请输入您的会员卡号:");member.setId(sc.nextInt());System.out.print("请输入您的会员密码:");member.setPwd(sc.next());member = hasMember(member);//找member对象if (member != null) {// 进行加的操作System.out.print("请输入本次消费金额(积分取整比率  1:1)");int money = sc.nextInt();member.setScores(member.getScores() + money);bool = true;System.out.println("积分累计成功,您当前的积分为:" + member.getScores());} else {System.out.println("会员卡号或密码错误,无法累计积分!");bool = false;}return bool;}//查询剩余积分public void lookScores() {Member member = new Member();System.out.print("请输入您的会员卡号:");member.setId(sc.nextInt());System.out.print("请输入您的会员密码:");member.setPwd(sc.next());member = hasMember(member);//找member对象if (member != null) {System.out.println("姓名\t会员卡号\t剩余积分\t开卡日期");System.out.println(member.getName()+"\t"+member.getId()+"\t"+member.getScores()+"\t"+member.getFirstDate());}else {System.out.println("您输入的额会员卡号或密码错误,无法查询积分!");}}
//积分兑换public boolean excScores() {boolean bool = true;//积分兑换是否完成Member member = new Member();System.out.print("请输入您的会员卡号:");member.setId(sc.nextInt());System.out.print("请输入您的会员密码:");member.setPwd(sc.next());member = hasMember(member);if (member != null) {System.out.print("请输入要兑换使用的积分(100积分抵用1元,不足100不能抵用):");int score = sc.nextInt();//对会员想要兑换的积分进行判断if (score<=member.getScores()) {//能兑换member.setScores(member.getScores()-score);System.out.println("您使用积分抵扣了"+score/100+"元");bool = true;}else {System.out.println("积分不够,无法抵扣!");bool = false;}}else {System.out.println("会员卡号或密码错误,无法完成积分兑换!!!!");bool = false;}return bool;}
//修改密码public boolean changePwd() {boolean bool = true;Member member = new Member();System.out.print("请输入您的会员卡号:");member.setId(sc.nextInt());System.out.print("请输入您的会员密码:");member.setPwd(sc.next());member = hasMember(member);// 找到会员对象才可以进行修改if (member != null) {System.out.print("请输入新的密码:");String newPwd;// 设置新的密码boolean bool1 = true;// 新的会员密码格式是否正确while (bool1) {newPwd = sc.next();if (newPwd.length() < 6) {System.out.print("密码长度不能小于6位,请重新输入密码:");continue;} else {member.setPwd(newPwd);bool1 = false;// 新设置的密码格式正确bool = true;// 密码修改成功}}} else {System.out.println("会员卡号或密码错误,无法修改密码。");bool = false;}return bool;}}

--------------------------------------------------------------------------------------------------

3.测试类

//测试类
/** 为某超市开发一个超市会员管理系统,实现会员的管理,具体实现功能如下:1.积分累计   2.积分兑换   3.查询剩余积分   4.修改密码   5.开卡   6.退出*/
public class Test {public static void main(String[] args) {MemberSer memberSer = new MemberSer();memberSer.start();}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/632.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【信号去噪和分类】基于小波的隐马尔可夫模型统计信号处理(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

C语言实现扫雷【经典】

前言   本篇文章要实现的是扫雷游戏&#xff0c;其代码实现与上一篇的三子棋游戏类同&#xff0c;都是在棋盘的基础上&#xff0c;与电脑进行对抗&#xff0c;不同的是&#xff0c;扫雷游戏一开始电脑就已经随机布置好了所有“雷”。 请戳 --->三子棋 扫雷游戏 1. 扫雷游…

MySQL每日一练——MySQL多表查询进阶挑战

目录 1、首先创建表 t_dept: t_emp: 2、插入数据 t_dept表&#xff1a; t_tmp表: 3、修改表 4、按条件查找 1、首先创建表 t_dept: CREATE TABLE t_dept (id INT(11) NOT NULL AUTO_INCREMENT,deptName VARCHAR(30) DEFAULT NULL,address VARCHAR(40) DEFAULT NULL,P…

Python结巴中文分词笔记

&#x1f4da; jieba库基本介绍 &#x1f310; jieba库概述 Jieba是一个流行的中文分词库&#xff0c;它能够将中文文本切分成词语&#xff0c;并对每个词语进行词性标注。中文分词是自然语言处理的重要步骤之一&#xff0c;它对于文本挖掘、信息检索、情感分析等任务具有重要…

Linux服务器丢包故障的解决思路及引申的TCP/IP协议栈理论

Linux服务器丢包故障的解决思路及引申的TCP/IP协议栈理论 我们使用Linux作为服务器操作系统时&#xff0c;为了达到高并发处理能力&#xff0c;充分利用机器性能&#xff0c;经常会进行一些内核参数的调整优化&#xff0c;但不合理的调整常常也会引起意想不到的其他问题&#x…

Elasticsearch原理剖析

一、 Elasticsearch结构 Elasticsearch集群方案由EsMaster、EsClient和EsNode1、EsNode2、EsNode3、EsNode4、EsNode5、EsNode6、EsNode7、EsNode8、EsNode9进程组成&#xff0c;如下图所示&#xff0c;模块说明如表下所示。 说明如表&#xff1a; 名称说明ClientClient使用H…

Android系统启动流程分析

当按下Android系统的开机电源按键时候&#xff0c;硬件会触发引导芯片&#xff0c;执行预定义的代码&#xff0c;然后加载引导程序(BootLoader)到RAM&#xff0c;Bootloader是Android系统起来前第一个程序&#xff0c;主要用来拉起Android系统程序&#xff0c;Android系统被拉起…

C# Linq 详解四

目录 概述 二十、SelectMany 二十一、Aggregate 二十二、DistinctBy 二十三、Reverse 二十四、SequenceEqual 二十五、Zip 二十六、SkipWhile 二十七、TakeWhile C# Linq 详解一 1.Where 2.Select 3.GroupBy 4.First / FirstOrDefault 5.Last / LastOrDefault C# Li…

排序子序列,倒置字符串讲解(图文并茂)

目录 1.排序子序列 2.倒置字符串 1.排序子序列 排序子序列_牛客笔试题_牛客网 (nowcoder.com) 首先题干中提到非递增序列和非递减序列&#xff0c;那么我们就要先弄明白什么是上述2种序列&#xff1a; 非递增序列&#xff1a;a[i] > a[i1] 如&#xff1a;3 2 1 或者 3 3 …

使用docker简单创建一个python容器

/root/docker_python目录结构&#xff1a; . |-- demo | -- main.py -- docker-compose.ymlmain.py内容&#xff1a; # codingutf-8 # -*- coding: utf-8 -*-if __name__ __main__:print("hello world")docker-compose.yml内容&#xff1a; version: "3&q…

注册中心技术Eureka、Nacos

说明&#xff1a;在微服务框架中&#xff0c;各个服务之间都是独立的。理论上来说&#xff0c;各个服务之间是可以直接通信的&#xff0c;但实际上因为服务之间通信需要管理和规划&#xff0c;如请求怎么负载均衡、请求怎么降级处理等等&#xff0c;所以就需要使用一个技术&…

Linux 常用命令

认识 Linux 目录结构 Linux 系统中&#xff0c;磁盘上的文件和目录被组成一棵目录树&#xff0c;每个节点都是目录或文件 Linux 是一个树形目录结构。Linux 上没有盘符概念&#xff0c;不分 C 盘等&#xff0c;根目录 \ 的地位相当与 Java 的 Object ——几个特殊的目录&…

uniapp快速开发小程序全流程

uniapp快速开发小程序全流程 完整项目代码&#xff1a;https://gitee.com/Zifasdfa/ziyi-app 欢迎fork与star 1 项目效果及环境准备 1.1 项目效果 本文主要使用uniapp实现一个简单的app应用 1.2 环境准备&项目初始化 ①node环境&#xff1a;去node.js官网下载稳定版的nod…

微服务之Eureka服务注册中⼼

关于务注册中⼼服 服务注册中⼼本质上是为了解耦服务提供者和服务消费者,尽可能量使两者联系可控在一定的范围外 1.在父项目下下引入 Spring Cloud 依赖 <dependencyManagement> <dependencies> <!-- SCN --> <dependency> <groupId> org.sp…

【网站 全选和单选】js 实现-点击全选按钮时,所有的按钮都会被选中或取消选中。

要实现的效果如图&#xff1a; 代码实现&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport…

Loki+promtail+Grafana监控docker容器日志

目标&#xff1a;监控docker容器的日志&#xff0c;适用于生产环境 效果&#xff1a; 需要的工具&#xff1a;Loki&#xff0c;promtail&#xff0c;Grafana 通过安装promtail容器收集日志&#xff0c;并把日志发送给loki存储处理&#xff0c;由Grafana展示日志。 参考官网的…

Windows bat隐藏运行窗口的几种方案

文章目录 一、背景二、测试数据三、隐藏bat运行窗口方案1. 使用VBScript脚本2. 使用mshta调用js或vbs脚本3. 将bat编译为exe程序4. 使用任务计划程序 一、背景 有些程序在执行批处理脚本时&#xff0c;可能会看到dos窗口&#xff0c;或者看到窗口一闪而过。如果批处理脚本执行…

(EMQX)STM32L+BC20+MQTT协议传输温湿度,ADC,电压,GPS数据到EMQX

1、材料准备 准备以下材料 2、设备连接 2.1 插入物联网卡&#xff0c;天线 首先把BC20核心板从开发板上拆下来 然后将物联卡放置在BC20核心板内 物联卡放置完成将BC20核心板重新插入到开发板内&#xff08;注意不要弄错方向&#xff09; 同时接入天线 2.2 连接ST-Link仿真…

Python 算法基础篇:大O符号表示法和常见时间复杂度分析

Python 算法基础篇&#xff1a;大 O 符号表示法和常见时间复杂度分析 引言 1. 大 O 符号表示法 a ) 大 O 符号的定义 b ) 示例代码 2. 常见时间复杂度分析总结 引言 在分析和比较算法的性能时&#xff0c;时间复杂度是一项重要的指标。而大 O 符号表示法是用来描述算法时间复杂…

动态规划01背包之416分割等和子集(第10道)

题目&#xff1a; 给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集&#xff0c;使得两个子集的元素和相等。 示例&#xff1a; 解法&#xff1a; 先复习一下01背包问题&#xff1a; dp[i][j]的含义&#xff1a;从下标为[0-i]的物品里…