Java實(shí)現(xiàn)超市會(huì)員管理系統(tǒng)
本文實(shí)例為大家分享了Java實(shí)現(xiàn)超市會(huì)員管理系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下
要求:借助集合框架及實(shí)用類實(shí)現(xiàn)該系統(tǒng)
1、積分累計(jì)
2、積分兌換
3、查詢剩余積分
4、修改密碼
5、開卡
6、退出
執(zhí)行結(jié)果:
開卡、積分累計(jì)部分:

兌換積分、查詢剩余積分部分:

修改密碼、使用新密碼查詢部分:

退出部分:

實(shí)現(xiàn)思路:
1、創(chuàng)建會(huì)員用戶類:
- 用戶名、密碼、會(huì)員卡號(hào)(隨機(jī)生成)、注冊(cè)日期、積分
2、創(chuàng)建超市業(yè)務(wù)類:
- 菜單展示
- 業(yè)務(wù)選擇 積分存取方法、積分兌換方法、積分查詢方法、修改密碼方法、開卡方法
- 判斷集合中是否存在查詢?cè)胤椒ǎㄓ捎谄渌椒ㄖ芯霈F(xiàn)此方法中的代碼,即將其提取出來(lái)另列為一個(gè)方法)
3、測(cè)試類
源碼:
會(huì)員用戶類
package cn.zyq.Aug0203;
/**
?* 會(huì)員用戶類
?* @author admin
?*
?*/
public class Member {
?? ?//姓名
?? ?private String name;
?? ?//密碼
?? ?private String pwd;
?? ?//會(huì)員卡號(hào)
?? ?private String id;
?? ?//注冊(cè)日期
?? ?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;
?? ?}?? ?
}超市業(yè)務(wù)類
package cn.zyq.Aug0203;
/**
?* 超市業(yè)務(wù)類
?*/
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--------------------歡迎進(jìn)入會(huì)員管理系統(tǒng)--------------------\n");
?? ??? ?System.out.println("1.積分累計(jì) ? ? ?2.積分兌換 ? ? ?3.查詢剩余積分 ? ? ?4.修改密碼 ? ? ?5.開卡 ? ? ? ? ? ?6.退出");
?? ??? ?System.out.println("\n-------------------------------------------------------");
?? ??? ?System.out.println();
?? ??? ?System.out.print("請(qǐng)選擇您要進(jìn)行的操作:");
?? ??? ?choose(sc.nextInt());
?? ?}
?? ?
?? ?/**
?? ? * 用戶選擇的業(yè)務(wù)
?? ? * ?@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("請(qǐng)輸入您消費(fèi)的金額(一元一積分):");
?? ??? ??? ?int score = sc.nextInt();
?? ??? ??? ?m.setScore(m.getScore()+score);
?? ??? ??? ?System.out.println("積分增加成功,目前您的積分為:"+m.getScore());
?? ??? ??? ?System.out.println("積分累計(jì)成功!");
?? ??? ?}else {
?? ??? ??? ?System.out.println("積分累計(jì)失敗,您輸入的信息有誤!");
?? ??? ?}
?? ?}
?? ?
?? ?/**
?? ? * 積分兌換
?? ? */
?? ?public void useScore() {
?? ??? ?
?? ??? ?Member m = check();
?? ??? ?if(m!=null) {
?? ??? ??? ?System.out.print("請(qǐng)輸入您需要兌換使用的積分(100積分抵用1元,不足100的積分不做抵用):");
?? ??? ??? ?int score = sc.nextInt();
?? ??? ??? ?if(m.getScore()>=100 && score>=100 && score<=m.getScore()) {
?? ??? ??? ??? ?m.setScore(m.getScore()-score);
?? ??? ??? ??? ?System.out.println("您本次消費(fèi)抵用金額為:"+score/100);
?? ??? ??? ??? ?System.out.println("兌換積分成功!");
?? ??? ??? ?}else {
?? ??? ??? ??? ?System.out.println("兌換積分失敗,賬戶積分不足或需要兌換積分大于剩余積分!");
?? ??? ??? ?}
?? ??? ?}else {
?? ??? ??? ?System.out.println("賬號(hào)信息不匹配,無(wú)法兌換積分!");
?? ??? ?}
?? ?}
?? ?
?? ?/**
?? ? * 查詢剩余積分
?? ? */
?? ?public void search() {
?? ??? ?
?? ??? ?Member m = check();
?? ??? ?if(m!=null) {
?? ??? ??? ?System.out.println("姓名\t會(huì)員卡號(hào)\t剩余積分\t開卡日期");
?? ??? ??? ?System.out.println(m.getName()+"\t"+m.getId()+"\t"+m.getScore()+"\t"+m.getRegistData());
?? ??? ?}else {
?? ??? ??? ?System.out.println("輸入的賬號(hào)信息不匹配!");
?? ??? ?}
?? ?}
?? ?
?? ?/**
?? ? * 修改密碼
?? ? */
?? ?public void updatePwd() {
?? ??? ?
?? ??? ?Member m = check();
?? ??? ?if(m!=null) {
?? ??? ??? ?System.out.print("請(qǐng)輸入您的新密碼:");
?? ??? ??? ?String pwd = sc.next();
?? ??? ??? ?
?? ??? ??? ?//重新設(shè)置密碼
?? ??? ??? ?m.setPwd(pwd);
?? ??? ??? ?System.out.println("密碼修改成功!");
?? ??? ?}else {
?? ??? ??? ?System.out.println("輸入的賬號(hào)信息不匹配,無(wú)法進(jìn)行此業(yè)務(wù)!");
?? ??? ?}
?? ?}
?? ?
?? ?
?? ?/**
?? ? * 積分兌換
?? ? */
?? ?public void regist() {
?? ??? ?System.out.print("歡迎使用本超市會(huì)員卡,請(qǐng)輸入您的姓名:");
?? ??? ?String name = sc.next();
?? ??? ?System.out.print("請(qǐng)?jiān)O(shè)置您的密碼(要求密碼長(zhǎng)度大于6):");
?? ??? ?String pwd = sc.next();
?? ??? ?//判斷密碼是否合法
?? ??? ?boolean flag = false;
?? ??? ?while(!flag) {
?? ??? ??? ?if(pwd.length()<6) {
?? ??? ??? ??? ?flag = false;
?? ??? ??? ??? ?System.out.print("密碼長(zhǎng)度小于6位,請(qǐng)重新輸入密碼:");
?? ??? ??? ??? ?pwd = sc.next();
?? ??? ??? ?}
?? ??? ??? ?else {
?? ??? ??? ??? ?flag = true;
?? ??? ??? ?}
?? ??? ?}
?? ??? ?
?? ??? ?//生成一個(gè)八位數(shù)的隨機(jī)會(huì)員卡號(hào)
?? ??? ?Random random = new Random();
?? ??? ?int rand = random.nextInt(999999);
?? ??? ?String id = String.valueOf(rand);
?? ??? ?//判斷會(huì)員卡是否已存在
?? ??? ?for(Member m:list) {
?? ??? ??? ?if(m.getId()==id) {
?? ??? ??? ??? ?rand = random.nextInt(99999999);
?? ??? ??? ??? ?id = String.valueOf(rand);
?? ??? ??? ?}
?? ??? ?}
?? ??? ?
?? ??? ?//注冊(cè)日期
?? ??? ?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("恭喜你成為本超市會(huì)員,系統(tǒng)贈(zèng)送您100積分,您的會(huì)員卡號(hào)為:"+id+",請(qǐng)牢記卡號(hào)和密碼!");
?? ??? ?
?? ?}
?? ?
?? ?/**
?? ? * 信息檢測(cè),list中是否存有指定用戶信息
?? ? */
?? ?public Member check() {
?? ??? ?System.out.print("請(qǐng)輸入您的會(huì)員卡號(hào):");
?? ??? ?String id = sc.next();
?? ??? ?System.out.print("請(qǐng)輸入您的密碼:");
?? ??? ?String pwd = sc.next();
?? ??? ?for(Member m:list) {
?? ??? ??? ?if(m.getId().equals(id) && m.getPwd().equals(pwd)) {
?? ??? ??? ??? ?return m;
?? ??? ??? ?}
?? ??? ?}
?? ??? ?return null;
?? ?}
}測(cè)試類
package cn.zyq.Aug0203;
/**
?* 測(cè)試類
?* @author admin
?*
?*/
public class Test {
?? ?public static void main(String[] args) {
?? ??? ?Business business = new Business();
?? ??? ?business.init();
?? ?}
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
詳解Java如何通過Socket實(shí)現(xiàn)查詢IP
在本文中,我們來(lái)學(xué)習(xí)下如何找到連接到服務(wù)器的客戶端計(jì)算機(jī)的IP地址。我們將創(chuàng)建一個(gè)簡(jiǎn)單的客戶端-服務(wù)器場(chǎng)景,讓我們探索用于TCP/IP通信的java.net?API,感興趣的可以了解一下2022-10-10
詳解Spring Data JPA中Repository的接口查詢方法
repository代理有兩種方式從方法名中派生出特定存儲(chǔ)查詢:通過直接從方法名派生查詢和通過使用一個(gè)手動(dòng)定義的查詢。本文將通過示例詳細(xì)講解Spring Data JPA中Repository的接口查詢方法,需要的可以參考一下2022-04-04
關(guān)于Java HashMap自動(dòng)排序的簡(jiǎn)單剖析
這篇文章主要給大家介紹了關(guān)于Java HashMap自動(dòng)排序的簡(jiǎn)單剖析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
JFreeChart實(shí)現(xiàn)實(shí)時(shí)曲線圖
這篇文章主要為大家詳細(xì)介紹了JFreeChart實(shí)現(xiàn)實(shí)時(shí)曲線圖的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-06-06
Springboot項(xiàng)目編寫測(cè)試單元完整步驟記錄
這篇文章主要介紹了如何使用JUnit編寫Spring?Boot項(xiàng)目中的測(cè)試單元,包括引入依賴、配置文件設(shè)置、啟動(dòng)文件創(chuàng)建以及編寫測(cè)試類的步驟,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2025-03-03
nacos客戶端一致性hash負(fù)載需求實(shí)現(xiàn)
這篇文章主要介紹了nacos客戶端一致性hash負(fù)載的需求實(shí)現(xiàn)過程及步驟詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2022-02-02
詳解Java的堆內(nèi)存與棧內(nèi)存的存儲(chǔ)機(jī)制
這篇文章主要介紹了Java的堆內(nèi)存與棧內(nèi)存的存儲(chǔ)機(jī)制,包括JVM的內(nèi)存優(yōu)化和GC等相關(guān)方面內(nèi)容,需要的朋友可以參考下2016-01-01
解決Springboot2.1.x配置Activiti7單獨(dú)數(shù)據(jù)源問題
這篇文章主要介紹了Springboot2.1.x配置Activiti7單獨(dú)數(shù)據(jù)源問題,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-09-09
Java中如何模擬HTTP請(qǐng)求并驗(yàn)證功能
要模擬HTTP請(qǐng)求并驗(yàn)證功能,你可以使用Spring Boot提供的MockMvc工具,它允許我們?cè)跊]有實(shí)際啟動(dòng)HTTP服務(wù)器的情況下測(cè)試Spring MVC控制器,下面給大家分享如何模擬HTTP請(qǐng)求并驗(yàn)證功能,感興趣的朋友一起看看吧2024-05-05

