• 技术文章 >Java >Java基础

    详解JAVA实现用户抽奖

    coldplay.xixicoldplay.xixi2020-11-25 17:17:42转载2452

    java基础教程栏目介绍实现用户抽奖方法:

    JAVA实现用户抽奖

    需求分析

    1)实现三个基本功能:登录、注册、抽奖。
    2)登录:用户输入账号密码进行登录,输入账号后会匹配已注册的用户,若输入用户不存在则退出,密码有三次输入机会,登录成功后主界面会显示已登录用户的账号信息。
    3)注册:用户首先输入账号名称,系统查询此名称是否存在,如存在则请求用户换一个名称,否则进入密码输入,密码要求6位数字字符串,注册成功后,系统随机分配一个与已有用户不重复的四位数字id编号。
    4)抽奖:功能实现前提:需有用户处于登录状态。该前提满足时,系统从已存在用户中随机抽取5位不同的用户标记为幸运用户,并判断正在登录状态的用户是否被抽中。
    5)数据存储:采用文件系统,导入java.io.*包,
    6)数据结构:登录用户信息保存于ArrayList,幸运用户编号和id保存于长度为5的HasMap<String id,String name> 其中id为Key,name为Value。

    实现结果

    1)登录:
    2)注册:
    3)抽奖:

    注意事项

    	运行代码之前务必在user.txt中创建五个以上的用户。
    import java.util.Scanner;import java.util.ArrayList;import java.io.*;import java.util.StringTokenizer;public class Dos {
        static boolean logined=false;
        public static void main(String[] args) {
            User user=new User();
            int k=0;
            while( (k=Main(user))>=1&&k<5){
                switch (k){
                    case 1:
                        System.out.print((k=user.login(user))==-1?"此用户不存在!\n":"");
                        System.out.print((k==-2)?"===<<警告>>用户:["+user.userName+"]已处于登录状态,无需重复登录!\n":"");
                        break;
                    case 2:
                        user.regist();
                        break;
                    case 3:
                        user.getLuckly();
                        break;
                    default:System.exit(0);
                }
            }
        }
        static int Main(User user){
            System.out.println("**********************************************");
            System.out.println("********************主菜单********************");
            System.out.println("**********************************************");
            System.out.println("******          <1> 登   录             ******");
            System.out.println("******          <2> 注   册             ******");
            System.out.println("******          <3> 抽   奖             ******");
            System.out.println("******          <4> 退   出             ******");
            System.out.println("**********************************************");
            System.out.println("==============================================");
            System.out.println(logined ? "-[已登录]-  (1)用户名:"+user.userName+"   (2)用户账号:"+user.userId:"-[未登录]-   (1)用户名:NaN   (2)用户账号:NaN");
            System.out.println("==============================================");
            System.out.print("###===>请输入您的选择:");
            return (new Scanner(System.in)).nextInt();
        }}public class User{
        String userName,userId,userPwd;
        public User(){}
        public User(String userName, String userId, String userPwd) {
            this.userName = userName;
            this.userId = userId;
            this.userPwd = userPwd;
        }
        public String getUserName() {
            return userName;
        }
        public void setUserName(String userName) {
            if(!userName.equals("")) {
                ArrayList<String> temp;
                this.userId=(temp=(new operatorFile(this.userName = userName)).getUserMess(0)).get(1);
                this.userPwd=temp.get(2);
            }
        }
        public String getUserId() {
            return userId;
        }
        public String setUserId() {
            String userId="";
            while((new operatorFile(userId=String.valueOf ((int) (Math.random()*9000+1000)))).getUserMess(1).size()>0){ }
            return (this.userId = userId);
        }
        public String getUserPwd() {
            return userPwd;
        }
        public int login(User u) {
            int inputTimes=3;
            Scanner scanner=new Scanner(System.in);
            operatorFile getUserMessage=new operatorFile();
            System.out.print("======>请输入您的用户名:");
            String uName="";
            getUserMessage.setUser(uName=scanner.nextLine());
            ArrayList<String> userMess=getUserMessage.getUserMess(0);
            if(userMess.size()<1)       return -1;//返回-1表示用户不存在
            if (uName.equals(userName))     return -2;//返回-2表示用户重复登录
            System.out.print("======>请输入您的登录密码:");
            while(!scanner.next().equals(userMess.get(2))&&inputTimes>0)
                System.out.print("===>密码输入错误!"+((--inputTimes)>0?"您还剩"+inputTimes+"次机会!":"三次机会已经用完了!输入任意退出"));
            System.out.println(inputTimes>0?"==>登录成功!您本次输入密码"+(4-inputTimes)+"次!":"==>登录失败!");
            setUserName(inputTimes>0?uName:"");
            Dos.logined=inputTimes>0?true:false;
            return 0;
        }
        public void regist() {
            User u=new User();
            Scanner scanner=new Scanner(System.in);
            System.out.print("===>请输入新的用户名:");
            String name;
            while(new operatorFile(name=scanner.nextLine()).getUserMess(0).size() > 0)
                System.out.print("已存在此用户,注册失败!\n===>请重新输入新的用户名:");
            System.out.print("======>请设置您的(六位数字)登录密码:");
            String regex = "[0-9]{6}", pwd;
            while (!(pwd = scanner.nextLine()).matches(regex))
                System.out.print("==>密码格式不正确,请重新设置您的(六位数字)登录密码:");
            System.out.println("已为用户: "+(u.userName=name)+" 生成唯一ID: "+(u.userPwd=pwd));
            (new operatorFile()).writeUserMess(u);
            System.out.println("=======>注册成功!");
        }
        public static HashMap<String,String> lucklyUsers=new HashMap<>();
        public void getLuckly() {
            if (!Dos.logined)   {
                System.out.println("===>警告:没有用户登录,无法抽奖!");
                return ;
            }
            while(lucklyUsers.size()<5)
            {
                String id="";
                ArrayList<String> u;
                while((u=(new operatorFile(id=String.valueOf ((int) (Math.random()*9000+1000)))).getUserMess(1)).size()<1){ }
                lucklyUsers.put(u.get(1),u.get(0));
            }
            Iterator iterator=lucklyUsers.entrySet().iterator();
            int no=1;
            boolean LUCKLY=false;
            System.out.println("====>恭喜以下用户获得幸运称号:");
            while(iterator.hasNext()){
                Map.Entry entry=(Map.Entry) iterator.next();
                System.out.println("幸运用户["+(no++)+"]  用户名:"+entry.getValue()+"   用户编号:"+entry.getKey());
                LUCKLY = entry.getKey().equals(this.userId) ? true : LUCKLY;
            }
            System.out.println(LUCKLY?"=========>恭喜您在本次抽奖中获得幸运称号!":"=========>很遗憾,今日您未获奖 !-_-!");
        }
        public String toString(){
            return this.userName+" "+this.userId+" "+this.userPwd;
        }}public class operatorFile {
        String user;
        public void setUser(String user) {
            this.user = user;
        }
        public operatorFile(String user) {
            this.user = user;
        }
        public operatorFile() { }
        public ArrayList<String> getUserMess(int index){
            ArrayList<String> temp=new ArrayList<String>();
            File file=new File("user.txt");
            String line="";
            try{
                BufferedReader br=new BufferedReader(new FileReader(file));
                while ((line = br.readLine())!=null && line!="\n"){
                    temp.clear();
                    StringTokenizer sk=new StringTokenizer(line);
                    while (sk.hasMoreTokens()) {
                        temp.add(sk.nextToken());
                    }
                    if (temp.get(index).equals(this.user))  break;
                }
            }
            catch(IOException e){}
            return (line==null)?new ArrayList<String>():temp;
        }
        public void writeUserMess(User u){
            try{
                BufferedWriter bw=new BufferedWriter(new FileWriter(new File("user.txt"),true));
                bw.write(u.toString()+"\n");
                bw.close();
            }
            catch (IOException e){ }
        }}

    JAVA实现用户抽奖

    需求分析

    1)实现三个基本功能:登录、注册、抽奖。
    2)登录:用户输入账号密码进行登录,输入账号后会匹配已注册的用户,若输入用户不存在则退出,密码有三次输入机会,登录成功后主界面会显示已登录用户的账号信息。
    3)注册:用户首先输入账号名称,系统查询此名称是否存在,如存在则请求用户换一个名称,否则进入密码输入,密码要求6位数字字符串,注册成功后,系统随机分配一个与已有用户不重复的四位数字id编号。
    4)抽奖:功能实现前提:需有用户处于登录状态。该前提满足时,系统从已存在用户中随机抽取5位不同的用户标记为幸运用户,并判断正在登录状态的用户是否被抽中。
    5)数据存储:采用文件系统,导入java.io.*包,
    6)数据结构:登录用户信息保存于ArrayList,幸运用户编号和id保存于长度为5的HasMap<String id,String name> 其中id为Key,name为Value。

    实现结果

    1)登录:
    2)注册:
    3)抽奖:

    注意事项

    	运行代码之前务必在user.txt中创建五个以上的用户。
    import java.util.Scanner;import java.util.ArrayList;import java.io.*;import java.util.StringTokenizer;public class Dos {
        static boolean logined=false;
        public static void main(String[] args) {
            User user=new User();
            int k=0;
            while( (k=Main(user))>=1&&k<5){
                switch (k){
                    case 1:
                        System.out.print((k=user.login(user))==-1?"此用户不存在!\n":"");
                        System.out.print((k==-2)?"===<<警告>>用户:["+user.userName+"]已处于登录状态,无需重复登录!\n":"");
                        break;
                    case 2:
                        user.regist();
                        break;
                    case 3:
                        user.getLuckly();
                        break;
                    default:System.exit(0);
                }
            }
        }
        static int Main(User user){
            System.out.println("**********************************************");
            System.out.println("********************主菜单********************");
            System.out.println("**********************************************");
            System.out.println("******          <1> 登   录             ******");
            System.out.println("******          <2> 注   册             ******");
            System.out.println("******          <3> 抽   奖             ******");
            System.out.println("******          <4> 退   出             ******");
            System.out.println("**********************************************");
            System.out.println("==============================================");
            System.out.println(logined ? "-[已登录]-  (1)用户名:"+user.userName+"   (2)用户账号:"+user.userId:"-[未登录]-   (1)用户名:NaN   (2)用户账号:NaN");
            System.out.println("==============================================");
            System.out.print("###===>请输入您的选择:");
            return (new Scanner(System.in)).nextInt();
        }}public class User{
        String userName,userId,userPwd;
        public User(){}
        public User(String userName, String userId, String userPwd) {
            this.userName = userName;
            this.userId = userId;
            this.userPwd = userPwd;
        }
        public String getUserName() {
            return userName;
        }
        public void setUserName(String userName) {
            if(!userName.equals("")) {
                ArrayList<String> temp;
                this.userId=(temp=(new operatorFile(this.userName = userName)).getUserMess(0)).get(1);
                this.userPwd=temp.get(2);
            }
        }
        public String getUserId() {
            return userId;
        }
        public String setUserId() {
            String userId="";
            while((new operatorFile(userId=String.valueOf ((int) (Math.random()*9000+1000)))).getUserMess(1).size()>0){ }
            return (this.userId = userId);
        }
        public String getUserPwd() {
            return userPwd;
        }
        public int login(User u) {
            int inputTimes=3;
            Scanner scanner=new Scanner(System.in);
            operatorFile getUserMessage=new operatorFile();
            System.out.print("======>请输入您的用户名:");
            String uName="";
            getUserMessage.setUser(uName=scanner.nextLine());
            ArrayList<String> userMess=getUserMessage.getUserMess(0);
            if(userMess.size()<1)       return -1;//返回-1表示用户不存在
            if (uName.equals(userName))     return -2;//返回-2表示用户重复登录
            System.out.print("======>请输入您的登录密码:");
            while(!scanner.next().equals(userMess.get(2))&&inputTimes>0)
                System.out.print("===>密码输入错误!"+((--inputTimes)>0?"您还剩"+inputTimes+"次机会!":"三次机会已经用完了!输入任意退出"));
            System.out.println(inputTimes>0?"==>登录成功!您本次输入密码"+(4-inputTimes)+"次!":"==>登录失败!");
            setUserName(inputTimes>0?uName:"");
            Dos.logined=inputTimes>0?true:false;
            return 0;
        }
        public void regist() {
            User u=new User();
            Scanner scanner=new Scanner(System.in);
            System.out.print("===>请输入新的用户名:");
            String name;
            while(new operatorFile(name=scanner.nextLine()).getUserMess(0).size() > 0)
                System.out.print("已存在此用户,注册失败!\n===>请重新输入新的用户名:");
            System.out.print("======>请设置您的(六位数字)登录密码:");
            String regex = "[0-9]{6}", pwd;
            while (!(pwd = scanner.nextLine()).matches(regex))
                System.out.print("==>密码格式不正确,请重新设置您的(六位数字)登录密码:");
            System.out.println("已为用户: "+(u.userName=name)+" 生成唯一ID: "+(u.userPwd=pwd));
            (new operatorFile()).writeUserMess(u);
            System.out.println("=======>注册成功!");
        }
        public static HashMap<String,String> lucklyUsers=new HashMap<>();
        public void getLuckly() {
            if (!Dos.logined)   {
                System.out.println("===>警告:没有用户登录,无法抽奖!");
                return ;
            }
            while(lucklyUsers.size()<5)
            {
                String id="";
                ArrayList<String> u;
                while((u=(new operatorFile(id=String.valueOf ((int) (Math.random()*9000+1000)))).getUserMess(1)).size()<1){ }
                lucklyUsers.put(u.get(1),u.get(0));
            }
            Iterator iterator=lucklyUsers.entrySet().iterator();
            int no=1;
            boolean LUCKLY=false;
            System.out.println("====>恭喜以下用户获得幸运称号:");
            while(iterator.hasNext()){
                Map.Entry entry=(Map.Entry) iterator.next();
                System.out.println("幸运用户["+(no++)+"]  用户名:"+entry.getValue()+"   用户编号:"+entry.getKey());
                LUCKLY = entry.getKey().equals(this.userId) ? true : LUCKLY;
            }
            System.out.println(LUCKLY?"=========>恭喜您在本次抽奖中获得幸运称号!":"=========>很遗憾,今日您未获奖 !-_-!");
        }
        public String toString(){
            return this.userName+" "+this.userId+" "+this.userPwd;
        }}public class operatorFile {
        String user;
        public void setUser(String user) {
            this.user = user;
        }
        public operatorFile(String user) {
            this.user = user;
        }
        public operatorFile() { }
        public ArrayList<String> getUserMess(int index){
            ArrayList<String> temp=new ArrayList<String>();
            File file=new File("user.txt");
            String line="";
            try{
                BufferedReader br=new BufferedReader(new FileReader(file));
                while ((line = br.readLine())!=null && line!="\n"){
                    temp.clear();
                    StringTokenizer sk=new StringTokenizer(line);
                    while (sk.hasMoreTokens()) {
                        temp.add(sk.nextToken());
                    }
                    if (temp.get(index).equals(this.user))  break;
                }
            }
            catch(IOException e){}
            return (line==null)?new ArrayList<String>():temp;
        }
        public void writeUserMess(User u){
            try{
                BufferedWriter bw=new BufferedWriter(new FileWriter(new File("user.txt"),true));
                bw.write(u.toString()+"\n");
                bw.close();
            }
            catch (IOException e){ }
        }}

    相关免费学习推荐:java基础教程

    以上就是详解JAVA实现用户抽奖的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:CSDN,如有侵犯,请联系admin@php.cn删除
    专题推荐:JAVA 抽奖
    上一篇:java中创建线程的三种方法是什么? 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • PHP实现大转盘抽奖算法(代码实例)• PHP+jQuery开发简单翻牌抽奖的功能(代码实例)• 使用Redis完成抽奖功能• php如何实现抽奖程序
    1/1

    PHP中文网