使用泛型集合实现超市会员管理系统
需求说明:
综合运用流程控集合框架、制、类和对象等实现超市会员管理系统,包括系统菜单展示、会员卡积分累计、会员卡积分兑换、查询特定会员卡剩余积分、修改密码及办理会员卡、退出系统等功能。具体要求如下:
- 实现系统菜单展示。超市会员管理系统欢迎菜单展示效果如下:
用户输入1-6之外的数字时,需要给出操作提示,并提示用户重新选择。
2.会员卡积分累计。实现特定会员卡的积分累计,累计原则为:消费1元累计1积分。
如果会员卡和会员密码输入后,查询无此会员,需要给出错误提示
3.会员卡积分兑换。会员购物时可以使用会员卡积分抵消部分消费金额,抵消规则为:100积分抵用0.1元,不足100的积分不做抵用。
如果会员卡号和密码有误,需要给出错误提示,
如果会员卡剩余积分不够会员期望兑换积分,需要给出提示,
4.查询特定会员卡剩余积分,
如果会员卡号和密码有误,需要给出错误提示
5.修改密码。
会员卡号和密码输入有误,不允许修改,并给出提示
6.办理会员卡。每成功开通一个会员卡,系统免费赠送该卡100积分。效果如图:(注:此处会员卡号需要用户手工输入,后续课程功能升级)
7.退出系统
代码如下:
1.会员类
package cn.homework;
/**
* 会员类
*/
public class Member {
private String membername;//会员名
private int memberid;//会员卡号
private String password;//会员密码
private int integral;//会员积分
public Member() {
}
public Member(String membername, int memberid, String password, int integral) {
this.membername = membername;
this.memberid = memberid;
this.password = password;
this.integral = integral;
}
public Member(String membername, int memberid, int integral) {
this.membername = membername;
this.memberid = memberid;
this.integral = integral;
}
public String getMembername() {
return membername;
}
public void setMembername(String membername) {
this.membername = membername;
}
public int getMemberid() {
return memberid;
}
public void setMemberid(int memberid) {
this.memberid = memberid;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public int getIntegral() {
return integral;
}
public void setIntegral(int integral) {
this.integral = integral;
}
@Override
public String toString() {
return
"用户名:" + membername + '\''+
"\t会员卡号:" + memberid +
"\t积分:" + integral;
}
}
2.业务类
package cn.homework;
import java.util.*;
/**
* 业务类
*/
public class Operation {
static Scanner input;
static String exit;
static Set<Member> list = new HashSet<>();
public static void main(String[] args) {
input=new Scanner(System.in);
int loop = -1;//用户选择
int choose1;
do{
//打印菜单
System.out.println("********************************************************************");
System.out.println("1.积分累计\t2.积分兑换\t3.剩余积分查询\t4.修改密码\t5.开卡\t6.退出");
System.out.println("********************************************************************");
System.out.print("请选择:");
choose1 = input.nextInt();
switch (choose1){
case 1:
//积分累计
if(method1()){
System.out.println("累计成功");
}else{
System.out.println("累计失败");
}
System.out.println("是否退出?(n/y)");
exit = input.next();
if (!exit.equalsIgnoreCase("n")){
loop=1;
}
break;
case 2:
//
method2();
System.out.println("是否退出?(n/y)");
exit = input.next();
if (!exit.equalsIgnoreCase("n")){
loop=1;
}
break;
case 3:
//
method3();
break;
case 4:
//
method4();
break;
case 5:
//开卡
method5();
System.out.println("是否退出?(n/y)");
exit = input.next();
if (!exit.equalsIgnoreCase("n")){
loop=1;
}
break;
case 6:
System.out.println("是否退出?(n/y)");
exit = input.next();
if (!exit.equalsIgnoreCase("n")){
loop=1;
}
//
break;
default:
break;
}
}while (loop==-1);
}
//方法2积分兑换
public static void method2(){
System.out.println("请输入你的卡号");
int userid=input.nextInt();
System.out.println("请输入你的密码");
String psw=input.next();
Member member = method(userid,psw);
if (member==null){
System.out.println("对不起,用户名或密码不正确无法兑换");
}else {
if (member.getIntegral() < 100) {
System.out.println("积分不足,无法兑换");
} else {
System.out.println("请输入您的兑换的积分");
int intergral = input.nextInt();
double dismoney = intergral/1000;
System.out.println("本次优惠"+dismoney);
}
}
}
//积分查询
public static void method3(){
System.out.println("请输入你的卡号");
int userid=input.nextInt();
System.out.println("请输入你的密码");
String psw=input.next();
Member member = method(userid,psw);
if (member==null){
System.out.println("对不起,用户名或密码不正确无法累计");
}else{
System.out.println("用户名:"+member.getMembername()+"\t卡号:"+member.getMemberid()+"\t积分:"+member.getIntegral());
}
}
//方法4修改密码;
public static void method4(){
System.out.println("请输入你的卡号");
int userid=input.nextInt();
System.out.println("请输入你的密码");
String psw=input.next();
Member member = method(userid,psw);
do{
if (member==null){
System.out.println("对不起,用户名或密码不正确无法修改");
System.out.println("请重新输入");
}else{
System.out.println("请输入新密码");
String newPassword = input.next();
if(!member.getPassword().equals(newPassword )) {
member.setPassword(newPassword);
System.out.println("\t密码修改成功!请牢记你的密码!");
break;
}else {
System.out.println("\t新密码不能之前密码相同!");
continue;
}
}
}while (true);
}
//方法5开卡
public static void method5(){
//产生六位随机卡号
Random random = new Random();
int i = random.nextInt(999999);
//输入用户名和密码
System.out.print("请输入姓名:");
String name = input.next();
System.out.print("请输入密码:");
String password = input.next();
int integral1 = 0;
integral1+=100;//开卡成功积分+100
Member member = new Member(name,i,password,integral1);
//创建集合存放用户信息
list.add(member);
System.out.println("********************************************************************");
System.out.println("恭喜开卡成功,赠送积分100");
System.out.println("用户名:"+name+"\t卡号:"+i+"\t积分:"+integral1);
}static boolean falg;
//方法1积分累计
public static boolean method1(){
falg= true;//判断
System.out.println("请输入你的卡号");
int userid=input.nextInt();
System.out.println("请输入你的密码");
String psw=input.next();
Member member = method(userid,psw);
if (member==null){
System.out.println("对不起,用户名或密码不正确无法累计");
falg =false;
}else{
System.out.println("请输入您的消费金额");
int money = input.nextInt();
member.setIntegral(member.getIntegral()+money);
}
return falg;
}
/**
* 判断会员是否存在
* @return
*/
public static Member method(int memberid,String passwprd){
for (Member member : list) {
if(member.getMemberid()==memberid && passwprd.equals(member.getPassword())){
System.out.println(member.toString());
return member;
}
}
return null;
}
}
功能截图如下:
开卡:
剩余积分查询:
积分累计:
修改密码:
积分兑换: