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

news/2024/4/26 13:21:26/文章来源:https://blog.csdn.net/qq_44114187/article/details/131741660

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

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.luyixian.cn/news_show_331328.aspx

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

相关文章

图像处理学习笔记(一)

目录 图像处理学习笔记&#xff08;一&#xff09;一、基础知识1、彩色图像&#xff08;1&#xff09;RGB&#xff08;2&#xff09;HSV&#xff08;3&#xff09;HSI&#xff08;4&#xff09;CMYK&#xff08;5&#xff09;YUV&#xff08;6&#xff09;YCbCr 2、灰度图像3、…

14款奔驰R400升级ACC自适应巡航系统,增加您的行车安全性

有的时候你是否厌倦了不停的刹车、加油&#xff1f;是不是讨厌急刹车&#xff0c;为掌握不好车距而烦恼&#xff1f;如果是这样&#xff0c;那么就升级奔驰原厂ACC自适应式巡航控制系统&#xff0c;带排队自动辅助和行车距离警报功能&#xff0c;感受现代科技带给你的舒适安全和…

Python实现Excel文件拷贝图片到另一个的Excel文件(保持原有图片比例)

Python实现Excel文件拷贝图片到另一个的Excel文件&#xff08;保持原有图片比例&#xff09; 1、前言1.1 成功拷贝但是比例错误1.2 直接报错 2、解决办法3、号外 1、前言 今天朋友给我一个需求&#xff0c;需要把xlsx文件中的图片拷贝到另一个xlsx中&#xff0c;但是试过网上比…

Apache(httpd) 搭建笔记

Apache 搭建笔记 安装Apache HTTP服务器&#xff1a;启动Apache服务并设置开机自启 配置SSL证书配置Apache的SSL虚拟主机&#xff1a;重启Apache服务以使更改生效&#xff1a; 多站点配置第一个虚拟主机配置第二个虚拟主机创建每个站点的根目录&#xff1a; 强制跳转http>&g…

Midjourney助力交互设计师设计网站主页

Midjourney的一大核心优势是提供创意设计&#xff0c;这个功能也可以用在网站主页设计上&#xff0c;使用Midjourney prompt 应尽量简单&#xff0c;只需要以"web design for..." or "modern web design for..."开头即可 比如设计一个通用SAAS服务的初创企…

阿里云AliYun物联网平台使用-客户端API获取设备传感数据

一、前言 上一篇文章中&#xff0c;已经实现了虚拟数据上云&#xff0c;本文我们将进行上位机客户端的开发&#xff0c;即通过调用阿里云IOT物联网云平台的SDK&#xff0c;开发能获取传感器的遥感数据。 二、云平台操作 调用API需要用户的AccessKey Secret&#xff0c;这意味着…

因创始人被捕,Multichain停运!华人加密项目信任何在?

Multichain作为第四大加密货币桥梁&#xff0c;允许用户在八个区块链之间转移加密货币&#xff0c;并持有近16亿美元的投资者存款。对于运行在Fantom区块链上的DeFi而言&#xff0c;多链极为重要。 然而&#xff0c;跨链协议MultiChain5月下旬爆出“出金延迟或暂停”的灾情&…

产业大模型刚开卷,京东跑进“最后半公里”

点击关注 文&#xff5c;姚 悦 编&#xff5c;王一粟 “京东一直在探索哪些产品、技术、场景可以真正把大模型用起来&#xff0c;在我们内部的场景中反复验证后&#xff0c;才决定在7月份对外发布&#xff0c;现在我们在零售、健康、物流、金融等业务场景里已经积累了一些经…

Java使用JNI实现C文件的调用

1.使用IDEA新建工程 构建最基本的maven类型就行&#xff0c;文件结构如下&#xff1a; 其中最主要的类如下&#xff1a; package org.linx;public class TestJNI {static {/*** 加载jni库&#xff0c;有一个重要的点就是生成的为libnative.so&#xff0c;下面加载代码需要消…

【Maven三】——maven生命周期和插件

系列文章目录 Maven之POM介绍 maven命令上传jar包到nexus 【Maven二】——maven仓库 maven生命周期和插件 系列文章目录前言一、什么是生命周期&why1.三套生命周期2.clean生命周期3.default生命周期4.site生命周期5.命令行与生命周期 二、插件目标三、插件绑定1.内置绑定2…

将媒体公司资产迁移到 Amazon S3 的技术方案

随着媒体公司的发展&#xff0c;他们在仓库中积累了大量的旧磁带和未数字化的视频。这些资产可能很有价值&#xff0c;但以目前的形式很难访问和货币化。此外&#xff0c;将这些资产存储在仓库中既有风险又昂贵。 媒体企业可以通过将其资产迁移到云存储来解决这些问题&#xf…

【C++】面试基础搬运

c/c c三大特性 封装 最开始接触代码是C语言&#xff0c;那么开始写一些逻辑代码的时候会很麻烦&#xff0c;因为你要在函数中定义变量&#xff0c;然后按顺序写对应的逻辑&#xff0c;接着可以将逻辑封装成函数。当时会感觉很麻烦&#xff0c;因为很散装&#xff0c;知道后面…

Nacos报错Could not resolve placeholder ‘order.name‘ in value “${order.name}“怎么解决?

出现这个原因有两个&#xff1a; 1.首先在Nacos配置中心&#xff0c;写入yml配置文件的数据和后端服务在取数据的时候名称不一致 如下图&#xff0c;现在我的配置中心为order-service 看看其中的文件内容信息&#xff1a; 再看看后端是怎么取的&#xff1a; 看出上面错误了吗…

C# IEnumerator 用法

一、概述 IEnumerator 是所有非泛型枚举器的基接口。 其泛型等效项是 System.Collections.Generic.IEnumerator<T> 接口。 C# 语言的 foreach 语句&#xff08;在 Visual Basic 中为 for each&#xff09;隐藏了枚举数的复杂性。 因此&#xff0c;建议使用 foreach 而不…

[每周一更]-(第54期):Go的多版本管理工具

参考 https://zhuanlan.zhihu.com/p/611253641https://learnku.com/articles/78326 前文概要 Go语言从开始使用从1.13起步&#xff0c;随着泛型的支持&#xff0c;带领团队在转型Go的时候&#xff0c;做基础组件架构选型使用1.18&#xff0c;但是Go版本不断迭代想使用最新版本…

3Ds max入门教程:创建尼亚加拉大瀑布模型

推荐&#xff1a; NSDT场景编辑器助你快速搭建可二次开发的3D应用场景 初学者在3ds Max中为尼亚加拉大瀑布建模 这次您将学习通过几个简单的步骤在3ds max中对尼亚加拉大瀑布&#xff08;从远处看起来很逼真&#xff09;进行建模。所以&#xff0c;让我们开始吧&#xff01; …

Flutter:EasyLoading(loading加载、消息提示)

前言 官方虽然提供了内置的加载指示器和提示信息&#xff0c;但是功能比较简陋&#xff0c;这里推荐&#xff1a;flutter_easyloading CircularProgressIndicator CircularProgressIndicator()加粗样式 ScaffoldMessenger.of(context).showSnackBar(const SnackBar(// 提示…

怎么用电脑做动图?常见动图的制作方法

常见的gif图片有两种&#xff0c;一种是通过gif合成功能制作&#xff0c;另一种是由视频转gif动图&#xff0c;那么对于日常不是专业设计出身的小伙伴&#xff0c;该使用什么样的gif制作功能&#xff0c;能够满足两种动图制作呢&#xff1f;下面这款gif制作器&#xff08;https…

UE4 常用控制台命令

ue4执行控制台命令有两种方式&#xff0c;一是在运行时按~呼出控制台输入命令后回车执行&#xff0c;二是调用蓝图函数ExecuteConsoleCommand函数传入参数执行命令&#xff0c;需要注意shipping包无法执行控制台命令 常用命令&#xff1a; Stat FPS 显示帧率 Stat Slate 显示…

快速而简单的视频格式转换方法

在数字时代&#xff0c;我们经常需要将视频文件从一种格式转换为另一种格式。无论是因为兼容性问题&#xff0c;还是为了在特定设备上播放视频&#xff0c;视频格式转换是一项非常常见的任务。本文将介绍视频格式转换的基本知识和步骤。 首先&#xff0c;了解不同的视频格式非常…