超市管理系统

本文详细介绍了超市管理系统的设计步骤和系统组成。系统包括会员类、服务类和测试类。会员类包含会员信息如姓名、卡号、密码、积分及开卡日期。服务类用于管理会员,使用ArrayList存储会员,并实现积分累计、兑换、查询和密码修改等功能。测试类则用于验证系统功能。

超市管理系统

设计思路

一.设计步骤

系统需求
*
数据主体
*
会员对象
*
有一个会员类
*
存放不定数目的会员对象,使用集合
*
操作会员对象,需要一个服务类
*
用一个测试类测试系统

二.系统组成

1.会员类
*
属性:会员姓名,卡号,密码,积分,开卡日期
*
密码需要6位数字,后续需要判定密码长度,所以要定义为String类型使用length方法
*
构造方法

//会员类
public class HuiYuan {
     //会员姓名,卡号,密码,积分,开卡日期
     private String name;
     private int carID;
     private String mima;    //length属性,用String
     private int jifen;
     private String time;
     
     public HuiYuan() {      
     }    
     public HuiYuan(String name, int carID, String mima, int jifen, String time) {
          this.name = name;
          this.carID = carID;
          this.mima = mima;
          this.jifen = jifen;
          this.time = time;
     }
     public String getName() {
          return name;
     }
     public void setName(String name) {
          this.name = name;
     }
     public int getCarID() {
          return carID;
     }
     public void setCarID(int carID) {
          this.carID = carID;
     }
     public String getMima() {
          return mima;
     }
     public void setMima(String mima) {
          this.mima = mima;
     }
     public int getJifen() {
          return jifen;
     }
     public void setJifen(int jifen) {
          this.jifen = jifen;
     }
     public String getTime() {
          return time;
     }
     public void setTime(String time) {
          this.time = time;
     }
     
     
}

2.服务类
*
存放不定数目的会员对象,使用集合;后续要查询是否是否存在卡号,需要遍历,所以用ArrayList
*
流程框架方法
*
do{ }while( )循环,switch判断
*
开始菜单
*
积分累计
*
积分兑换
*
积分查询
*
修改密码
*
开卡
*
开始菜单方法:输出菜单
*
开卡方法
*
设置名字
*
设置随机卡号
*
生成随机卡号方法
*
设置密码
*
判断密码是否小于6位
*
设置积分
*
设置开卡日期
*
生成系统时间
*
将会员放入集合中
*
查询是否存在会员方法
*
遍历集合,判断
*
积分累计方法
*
输入卡号,密码,调用查询是否存在方法
*
设置新积分
*
积分兑换方法
*
输入卡号,密码,调用查询是否存在方法
*
判断积分是否小于卡内积分
*
设置新积分
*
积分查询方法
*
输入卡号,密码,调用查询是否存在方法
*
输出
*
修改密码方法
*
输入卡号,密码,调用查询是否存在方法
*
判断密码是否小于6位

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.Random;
import java.util.Scanner;
//业务类
public class Yewu {
     Scanner input=new Scanner(System.in);
     ArrayList<HuiYuan> huiyuanlist=new ArrayList<HuiYuan>();
     
     //开始
     public void start() {
          do {
              menu();
              int choose=input.nextInt();
              switch(choose) {
                   case 1:
                        //积分积累
                        if(savejifen()) {
                             System.out.println("积分累计成功!");
                        }else {
                             System.out.println("积分累计失败!");
                        }
                        continue;
                   case 2:
                        //积分兑换
                        if(duihuanjifen()) {
                             System.out.println("积分兑换成功!");
                        }else {
                             System.out.println("积分兑换失败!");
                        }
                        continue;
                   case 3:
                        //查询剩余积分
                        showjifen();
                        continue;
                   case 4:
                        //修改密码
                        if(xiugaimima()) {
                             System.out.println("密码修改成功!");
                        }else {
                             System.out.println("密码修改失败!");
                        }
                        continue;
                   case 5:
                        //开卡
                        kaika();
                        continue;
                   case 6:
                        //退出
                        System.out.println("感谢使用,欢迎下次使用!");
                        break;
                   default:
                        System.out.println("输入错误,请重新输入");
                        continue;
              }
              break;
          }while(true);
     }
     //开始菜单
     public void menu() {
          System.out.println("-----------------------欢迎进入超市系统------------------------------");
          System.out.println("1.积分积累    2.积分兑换     3.查询剩余积分  4.修改密码    5.开卡         6.退出");
          System.out.println("-----------------------------------------------------------------");
          System.out.println("请选择:");
     }
     //积分累计
     public boolean savejifen() {
          boolean flag1=true;
          System.out.println("请输入会员卡号");
          int id=input.nextInt();
          System.out.println("请输入会员密码");
          String SRmima=input.next();
          HuiYuan huiyuan=hashuiyuan(id,SRmima);
          if(huiyuan!=null) {
              System.out.println("请输入此次消费金额(1元1分)");
              int newjifen=input.nextInt();
               huiyuan.setJifen(huiyuan.getJifen()+newjifen);
              System.out.println("当前积分为:"+huiyuan.getJifen());
              flag1=true;
          }else {
              System.out.println("会员卡不存在或者密码错误,无法累计");
              flag1=false;
          }
          return flag1;
     }
     //积分兑换
     public boolean duihuanjifen() {
          boolean flag1=true;
          System.out.println("请输入会员卡号");
          int id=input.nextInt();
          System.out.println("请输入会员密码");
          String SRmima=input.next();
          HuiYuan huiyuan=hashuiyuan(id,SRmima);
          if(huiyuan!=null) {
              System.out.println("请输入此次消费要抵换的积分");
              int huanjifen=input.nextInt();
              if(huanjifen<=huiyuan.getJifen()) {
                   huiyuan.setJifen(huiyuan.getJifen()-huanjifen);
                   System.out.println("此次抵消"+huanjifen/100*0.1+"元");                 
              }else {
                   System.out.println("抱歉,积分不足,无法兑换");
              }
              flag1=true;
          }else {
              System.out.println("会员卡不存在或者密码错误,无法兑换");
              flag1=false;
          }
          return flag1;
     }
     //积分查询
     public void showjifen() {
          System.out.println("请输入会员卡号");
          int id=input.nextInt();
          System.out.println("请输入会员密码");
          String SRmima=input.next();
          HuiYuan huiyuan=hashuiyuan(id,SRmima);
          if(huiyuan!=null) {
              System.out.println("会员卡号:"+huiyuan.getCarID()+" 姓名:"+huiyuan.getName()+" 剩余积分:"+huiyuan.getJifen()+" 开卡日期:"+huiyuan.getTime());
          }else {
              System.out.println("会员卡不存在或者密码错误,无法查询");
          }
          
     }
     //修改密码
     public boolean xiugaimima() {
          boolean flag1=true;
          boolean flag2=true;
          System.out.println("请输入会员卡号");
          int id=input.nextInt();
          System.out.println("请输入会员密码");
          String SRmima=input.next();
          HuiYuan huiyuan=hashuiyuan(id,SRmima);
          if(huiyuan!=null) {
              do{
                   System.out.println("请输入不小于6位的新密码)");
                   String newmima=input.next();
                   if(newmima.length()>=6) {
                        huiyuan.setMima(newmima);
                        flag2=true;                       
                   }else {
                        System.out.println("会员卡号不能小于6位,请重新输入");
                        flag2=false;
                   }         
                   flag1=true;
              }while(!flag2);
          }else {
              System.out.println("会员卡不存在或者密码错误,无法修改!");
              flag1=false;
          }         
          return flag1;
     }
     //开卡
     public void kaika() {
          HuiYuan huiyuan=new HuiYuan();
          System.out.println("请输入会员姓名");
          huiyuan.setName(input.next());
          //会员卡号随机生成
           int carID=carID();
           huiyuan.setCarID(carID);
           //注册密码
           System.out.println("请输入注册密码");
               //保证密码大于6位
           String SRmima;
           boolean flag=true;
           do {
               SRmima=input.next();
               if(SRmima.length()<6) {
                    System.out.println("会员密码不能小于6位!请重新输入密码");
                    flag=false;
               }else {
                    flag=true;
                    huiyuan.setMima(SRmima);
               }
           }while(!flag);
           //每个卡默认开卡送100积分
           huiyuan.setJifen(100);
           //开卡日期
              //创建SimpleDateFormat(String pattern)对象
              SimpleDateFormat s=new SimpleDateFormat("yyyy-MM-dd");
              //调用SimpleDateFormat中的format方法将指定日期转换为指定文本
              Date d=new Date();
              String XTtime=s.format(d);
          huiyuan.setTime(XTtime);
          System.out.println("恭喜!会员开卡成功,系统赠送100积分,会员卡号是:"+huiyuan.getCarID());
          huiyuanlist.add(huiyuan);         //放入集合
          
          
     }
     //生成随机卡号
     public int carID() {
          Random it=new Random();
          int id=it.nextInt(99999999);
          for(HuiYuan a:huiyuanlist) {
              if(a.getCarID()==id) {
                   id=it.nextInt(99999999);
              }
          }
          return id;         
     }
     //查询当前会员是否存在,根据会员卡号和密码查询会员是否存在,存在返回会员,不存在返回null
     public HuiYuan hashuiyuan(int id,String SRmima) {
          for(HuiYuan b:huiyuanlist) {
               if(b.getCarID()==id&&b.getMima().equals(SRmima)) {
                   return b;
              }
          }
          return null;
     }
}

3.测试类
*
调用服务类

//测试类
public class Test {
     public static void main(String[] args) {
          Yewu coco=new Yewu();
          coco.start();
     }
}

五月 11, 2019. Created by XMind

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Abner G

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值