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()恭喜您在本次抽奖中获得幸运称号!:=========>很遗憾,今日您未获奖 !-_-!); } 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()恭喜您在本次抽奖中获得幸运称号!:=========>很遗憾,今日您未获奖 !-_-!); } 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实现用户抽奖的详细内容。