• 抽奖


    项目需求

    • 用户注册
      新用户输入用户名和密码注册用户。当用户注册成功后,可以为用户分配一个4位随机会员号。
      开发时为了方便测试,会员号设置为1位。
    • 用户登录
      用户输入用户名和密码登录系统,若无该用户提示用户名密码错误,重新登录。
    • 幸运抽奖
      用户登录成功后可以进入抽奖功能进行抽奖,系统随机生成五个幸运数字,若该用户会员号等于某数组则抽奖成功。
      1.0使用字符串数组
    import java.util.Random;
    import java.util.Scanner;
    public class User {
        static String[] user = new String[10] ;//用户名
        static String[] passwd = new String[10];//密码
        //static int[] ran = {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1} ;
        static int[] ran = new int[10];
        //会员号
        static boolean flag=false;//是否登陆成功
        static int cnt = 3;//登录次数
        static int i=0;//用户下标
        static int pos=0;//保存当前登录用户的下标
        static void print(){
            System.out.println("**欢迎使用抽奖系统**");
            System.out.println("*      1注册     *");
            System.out.println("*      2登录     *");
            System.out.println("*      3抽奖     *");
            System.out.println("*      4退出     *");
            System.out.println("*****************");
        }
        static boolean unContains(int[] arr,int a){//检查生成的随机数是否已生成过
            for(int j=0;j<arr.length;j++){
                if(arr[j]==a){
                    return false;
                }
            }
            return true;
        }
        static void signUp(Scanner scan){
            System.out.println("请输入用户名");
            user[i] = scan.next();
            System.out.println("请输入密码");
            passwd[i] = scan.next();
            Random r = new Random();
            int tempRan = r.nextInt(9000)+1000;//(max -min )+min
            while(!unContains(ran,tempRan))  tempRan = r.nextInt(9000)+1000;//每个用户会员号不同
            ran[i] = tempRan;
            System.out.println("注册成功!");
            System.out.println("用户名:" + user[i]+ " 密码:" + passwd[i] + " 会员号:" + ran[i]);
            i++;
        }
        static void signIn(Scanner scan){
            String str1,str2;
            System.out.println("请输入用户名");
            str1 = scan.next();
            System.out.println("请输入密码");
            str2 = scan.next();
            boolean juStr1 = false;
            boolean juStr2 = false;
            for(int j=0;j<10;j++){
                if(str1.equalsIgnoreCase(user[j])) {
                    juStr1 = true;
                    if(str2.equalsIgnoreCase(passwd[j])) {
                        juStr2 = true;
                        pos = j;
                        break;
                    }
                }
    
            }
                if (!juStr1||!juStr2) {
                    System.out.println("输入有误");
                    cnt--;
                    if (cnt == 0) {
                        System.out.println("三次机会已用完");
                        System.exit(0);
                    }
                } else {
                    System.out.println("登陆成功!");
                    flag = true;
    
               }
        }
    
        static void prize(){
            boolean tmp=false;
            Random r = new Random();
            int []arr = new int[5];
            int k = 1;
            arr[0] = r.nextInt(9000)+1000;//第一个不用检查 (max-min )+min
            while(k< arr.length){
                int a = r.nextInt(9000)+1000;
                if(unContains(arr,a))//生成的随机数之前没生成过
                    arr[k++] = a;
            }
            for(int j=0;j<5;j++){
                if(arr[j] == ran[pos]) tmp = true;
                System.out.print("中奖的号码:"+arr[j]+" ");
            }
            System.out.println();
            System.out.println("您的号码:"+ran[pos]);
            if(tmp) System.out.println("恭喜您中奖了!");
            else System.out.println("很遗憾,您未中奖!");
        }
        public static void main(String[] args) {
            Scanner scan= new Scanner(System.in);
            String str;
            do{
                print();
                int choose = scan.nextInt();
                switch (choose) {
                    case 1:
                        signUp(scan);//注册
                        break;
                    case 2:
                        signIn(scan);//登录
                        break;
                    case 3:
                        if(!flag){
                            System.out.println("请先登录!");
                            break;
                        }
                        prize();//抽奖
                        break;
                    case 4:
                        System.exit(0);//退出
                        break;
                    default:
                        System.out.println("输入有误!");
                }
                System.out.print("是否继续?y/n ");
                str = scan.next();
            }while(str.equalsIgnoreCase("y"));
            scan.close();
        }
    }
    
    • 2.0使用对象数组

    User类

    mport java.util.Scanner;
    import java.util.Random;
    public class User
    {
       private String name = null;
       private String passwd = null;
       private int no =-1;
       static Scanner input = new Scanner(System.in);
       public void setNo(int no){
           this.no = no;
       }
        public boolean judge2(int no){//判断会员号是否重复
            if(this.no==no) return true;
            return false;
        }
        public void signUp(){
            System.out.println("请输入用户名:");
            String name = input.next();
            this.name = name;
            System.out.println("请输入密码:");
            String passwd = input.next();
            this.passwd = passwd;
            System.out.println("注册成功!");
            System.out.println("用户名:" + this.name+ " 密码:" + this.passwd + " 会员号:" + this.no);
        }
    
        public boolean unContains(int[] arr,int a){//检查生成的随机数是否已生成过
            for (int j=0;j<arr.length;j++){
                if(arr[j]==a){
                    return false;
                }
            }
            return true;
        }
        public boolean judge(String name,String passwd) {
           if(name.equals(this.name)&&passwd.equals(this.passwd))
               return true;
    
           return false;
        }
    
        public void prize(){
            boolean tmp=false;
            Random r = new Random();
            int []arr = {-1,-1,-1,-1,-1};
            //int []arr = new int[5];//存放幸运号码
            int k = 1;
            arr[0] = r.nextInt(5);//第一个不用检查 (max-min )+min
            while(k< arr.length){
                int a = r.nextInt(5);
                if(unContains(arr,a))//生成的随机数之前没生成过
                    arr[k++] = a;
            }
            System.out.println("您的号码:"+this.no);
            for(int j=0;j<5;j++){
                if(arr[j] == this.no) tmp = true;
                System.out.print("中奖的号码:"+arr[j]+" ");
            }
            System.out.println("您的号码:"+this.no);
            if(tmp) System.out.println("恭喜您中奖了!");
            else System.out.println("很遗憾,您未中奖!");
        }
    }
    

    Main类

    import java.util.Scanner;
    import java.util.Random;
    public class Main {
       static Scanner input = new Scanner(System.in);
       static int pos =-1;//当前登录的用户
        public static void print() {
            System.out.println("**欢迎使用抽奖系统**");
            System.out.println("*      1注册     *");
            System.out.println("*      2登录     *");
            System.out.println("*      3抽奖     *");
            System.out.println("*      4退出     *");
            System.out.println("*****************");
        }
        public static boolean unContains(User[]user,int num){
            for(int j=0;j<10;j++){
                if(user[j].judge2(num)) return false;
            }
            return true;
        }
        public static void signIn(User[] user){
            out:do {
                System.out.println("请输入用户名:");
                String name = input.next();
                System.out.println("请输入密码:");
                String passwd = input.next();
                for (int j = 0; j < 10; j++) {
                    if (user[j].judge(name, passwd)) {
                        System.out.println("登陆成功");
                        pos = j;
                       break out;
                    }
                }
                System.out.println("输入有误,请重新输入!");
            }while(true);
        }
        public static void main(String[] args) {
            int i = 0;//标记用户下标
           Random r = new Random();
           int num ;
            User[] user = new User[10];
            for (int j = 0; j < 10; j++) {
                user[j] = new User();
            }
            String str;
            do {
                print();
                int choose = input.nextInt();
                switch (choose) {
                    case 1:
                        num = r.nextInt(5);
                        while(!unContains(user,num))
                               num = r.nextInt(5);
                        user[i].setNo(num);
                        user[i].signUp();
                        i++;
                        break;
                    case 2:
                        signIn(user);
                        break;
                    case 3:
                        if(pos == -1) {
                            System.out.println("请先登录!");
                            break;
                        }
                        else user[pos].prize();
                        break;
                    case 4:
                        System.exit(0);
                    default:
                        System.out.println("输入有误,请重新输入!");
                }
                System.out.println("continue?y/n");
                str = input.next();
            } while (str.equals("y"));
        }
    }
    
    

    运行结果

    注册五个用户,每个用户会员号不同

    image.png
    image.png
    image.png
    image.png
    image.png

    登录

    image.png

    抽奖

    抽出的5个幸运号码不同

    未登录的情况下

    image.png

    已登录的情况下

    image.png

    ljm要加油
  • 相关阅读:
    Java利用Base64编码和解码图片文件
    SQL查询结果列拼接成逗号分隔的字符串:group_concat
    两个正则表达式:匹配固定电话号码,匹配手机号码
    IDEA导入Junit jar包,在JavaSE的Module中使用Junit测试
    如何正确遍历删除List中的元素(普通for循环、增强for循环、迭代器iterator、removeIf+方法引用)
    Java Springboot 根据图片链接生成图片下载链接 及 多个图片打包zip下载链接
    fastjson List<> 转Json , Json 转List<>
    PHP结合memcacheq消息队列解决并发问题
    Redis与Memcached的区别
    yii2 中excel表导出
  • 原文地址:https://www.cnblogs.com/ljmmm1/p/14249027.html
Copyright © 2020-2023  润新知