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)此方法中的代碼,即將其提取出來另列為一個(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)信息不匹配,無法兌換積分!"); ?? ??? ?} ?? ?} ?? ? ?? ?/** ?? ? * 查詢剩余積分 ?? ? */ ?? ?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)信息不匹配,無法進(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è)置您的密碼(要求密碼長度大于6):"); ?? ??? ?String pwd = sc.next(); ?? ??? ?//判斷密碼是否合法 ?? ??? ?boolean flag = false; ?? ??? ?while(!flag) { ?? ??? ??? ?if(pwd.length()<6) { ?? ??? ??? ??? ?flag = false; ?? ??? ??? ??? ?System.out.print("密碼長度小于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(); ?? ?} }
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
springboot寶塔簡(jiǎn)單部署的實(shí)現(xiàn)示例
通過使用Spring Boot,可以快速構(gòu)建出高效、可擴(kuò)展的應(yīng)用程序,而寶塔面板則提供了簡(jiǎn)單易用的網(wǎng)站管理和維護(hù)工具,本文將詳細(xì)介紹如何將Spring Boot應(yīng)用程序與寶塔面板進(jìn)行集成,實(shí)現(xiàn)自動(dòng)化部署、配置管理等操作2023-11-11Java基于自定義類加載器實(shí)現(xiàn)熱部署過程解析
這篇文章主要介紹了Java基于自定義類加載器實(shí)現(xiàn)熱部署過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03java 使用poi 導(dǎo)入Excel數(shù)據(jù)到數(shù)據(jù)庫的步驟
這篇文章主要介紹了java 使用poi 導(dǎo)入Excel 數(shù)據(jù)到數(shù)據(jù)庫的步驟,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下2020-12-12Java實(shí)現(xiàn)將PPT轉(zhuǎn)為OFD過程詳解
本文將通過Java后端程序代碼展示如何實(shí)現(xiàn)將PPT幻燈片轉(zhuǎn)成OFD格式,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)或工作有一定的幫助,需要的可以參考一下2022-01-01Java設(shè)計(jì)模式之抽象工廠模式簡(jiǎn)析
這篇文章主要介紹了Java設(shè)計(jì)模式之抽象工廠模式簡(jiǎn)析, 抽象工廠模式是工廠方法模式的升級(jí)版本,他用來創(chuàng)建一組相關(guān)或者相互依賴的對(duì)象,他與工廠方法模式的區(qū)別就在于,工廠方法模式針對(duì)的是一個(gè)產(chǎn)品等級(jí)結(jié)構(gòu),需要的朋友可以參考下2023-12-12SpringCloud gateway+zookeeper實(shí)現(xiàn)網(wǎng)關(guān)路由的詳細(xì)搭建
這篇文章主要介紹了SpringCloud gateway+zookeeper實(shí)現(xiàn)網(wǎng)關(guān)路由,本文通過圖文實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-08-08微服務(wù)領(lǐng)域Spring Boot自動(dòng)伸縮的實(shí)現(xiàn)方法
這篇文章主要給大家介紹了關(guān)于微服務(wù)領(lǐng)域Spring Boot自動(dòng)伸縮的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用spring boot具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-10-10Java并發(fā)編程中的生產(chǎn)者與消費(fèi)者模型簡(jiǎn)述
這篇文章主要介紹了Java并發(fā)編程中的生產(chǎn)者與消費(fèi)者模型簡(jiǎn)述,多線程并發(fā)是Java編程中最終要的部分之一,需要的朋友可以參考下2015-07-07