要求:借助集合架構及實用類實作該系統
- 積分累計
- 積分兌換
- 查詢剩餘積分
- 修改密碼
- 開卡
- 退出
執行結果:
開卡、積分累計部分:
兌換積分、查詢剩餘積分部分:
修改密碼、使用新密碼查詢部分:
退出部分:
實作思路:
1、建立會員使用者類:
- 使用者名、密碼、會員卡号(随機生成)、注冊日期、積分
2、建立超市業務類:
- 菜單展示
- 業務選擇 積分存取方法、積分兌換方法、積分查詢方法、修改密碼方法、開卡方法
- 判斷集合中是否存在查詢元素方法(由于其他方法中均出現此方法中的代碼,即将其提取出來另列為一個方法)
3、測試類
源碼:
會員使用者類
package cn.zyq.Aug0203;
/**
* 會員使用者類
* @author admin
*
*/
public class Member {
//姓名
private String name;
//密碼
private String pwd;
//會員卡号
private String id;
//注冊日期
private String registData;
//積分
private int score;
public Member() {
}
public Member(String name, String pwd, String id, String registData, int score) {
super();
this.name = name;
this.pwd = pwd;
this.id = id;
this.registData = registData;
this.score = score;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getRegistData() {
return registData;
}
public void setRegistData(String registData) {
this.registData = registData;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
}
超市業務類
package cn.zyq.Aug0203;
/**
* 超市業務類
*/
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Random;
import java.util.Scanner;
public class Business {
Scanner sc = new Scanner(System.in);
List<Member> list = new ArrayList<Member>();
/**
* 使用者可選擇菜單
*/
public void init() {
System.out.println("\n--------------------歡迎進入會員管理系統--------------------\n");
System.out.println("1.積分累計 2.積分兌換 3.查詢剩餘積分 4.修改密碼 5.開卡 6.退出");
System.out.println("\n-------------------------------------------------------");
System.out.println();
System.out.print("請選擇您要進行的操作:");
choose(sc.nextInt());
}
/**
* 使用者選擇的業務
* @param num
*/
public void choose(int num) {
switch (num) {
case 1:
saveScore();
break;
case 2:
useScore();
break;
case 3:
search();
break;
case 4:
updatePwd();
break;
case 5:
regist();
break;
case 6:
System.out.println("歡迎下次光臨!");
System.exit(0);
break;
}
init();
}
/**
* 積分積累
*/
public void saveScore() {
Member m = check();
if(m!=null) {
System.out.print("請輸入您消費的金額(一進制一積分):");
int score = sc.nextInt();
m.setScore(m.getScore()+score);
System.out.println("積分增加成功,目前您的積分為:"+m.getScore());
System.out.println("積分累計成功!");
}else {
System.out.println("積分累計失敗,您輸入的資訊有誤!");
}
}
/**
* 積分兌換
*/
public void useScore() {
Member m = check();
if(m!=null) {
System.out.print("請輸入您需要兌換使用的積分(100積分抵用1元,不足100的積分不做抵用):");
int score = sc.nextInt();
if(m.getScore()>=100 && score>=100 && score<=m.getScore()) {
m.setScore(m.getScore()-score);
System.out.println("您本次消費抵用金額為:"+score/100);
System.out.println("兌換積分成功!");
}else {
System.out.println("兌換積分失敗,賬戶積分不足或需要兌換積分大于剩餘積分!");
}
}else {
System.out.println("賬号資訊不比對,無法兌換積分!");
}
}
/**
* 查詢剩餘積分
*/
public void search() {
Member m = check();
if(m!=null) {
System.out.println("姓名\t會員卡号\t剩餘積分\t開卡日期");
System.out.println(m.getName()+"\t"+m.getId()+"\t"+m.getScore()+"\t"+m.getRegistData());
}else {
System.out.println("輸入的賬号資訊不比對!");
}
}
/**
* 修改密碼
*/
public void updatePwd() {
Member m = check();
if(m!=null) {
System.out.print("請輸入您的新密碼:");
String pwd = sc.next();
//重新設定密碼
m.setPwd(pwd);
System.out.println("密碼修改成功!");
}else {
System.out.println("輸入的賬号資訊不比對,無法進行此業務!");
}
}
/**
* 積分兌換
*/
public void regist() {
System.out.print("歡迎使用本超市會員卡,請輸入您的姓名:");
String name = sc.next();
System.out.print("請設定您的密碼(要求密碼長度大于6):");
String pwd = sc.next();
//判斷密碼是否合法
boolean flag = false;
while(!flag) {
if(pwd.length()<6) {
flag = false;
System.out.print("密碼長度小于6位,請重新輸入密碼:");
pwd = sc.next();
}
else {
flag = true;
}
}
//生成一個八位數的随機會員卡号
Random random = new Random();
int rand = random.nextInt(999999);
String id = String.valueOf(rand);
//判斷會員卡是否已存在
for(Member m:list) {
if(m.getId()==id) {
rand = random.nextInt(99999999);
id = String.valueOf(rand);
}
}
//注冊日期
Date date = new Date();
SimpleDateFormat dateFormat= new SimpleDateFormat("yyyy-MM-dd :hh:mm:ss");
String registData = dateFormat.format(date);
//開卡送積分100;
int score = 100;
//将使用者記錄添加到清單
list.add(new Member(name, pwd, id, registData, score));
System.out.println("恭喜你成為本超市會員,系統贈送您100積分,您的會員卡号為:"+id+",請牢記卡号和密碼!");
}
/**
* 資訊檢測,list中是否存有指定使用者資訊
*/
public Member check() {
System.out.print("請輸入您的會員卡号:");
String id = sc.next();
System.out.print("請輸入您的密碼:");
String pwd = sc.next();
for(Member m:list) {
if(m.getId().equals(id) && m.getPwd().equals(pwd)) {
return m;
}
}
return null;
}
}
測試類
package cn.zyq.Aug0203;
/**
* 測試類
* @author admin
*
*/
public class Test {
public static void main(String[] args) {
Business business = new Business();
business.init();
}
}