Java抽奖,java实现概率抽奖
java基础教程栏目介绍实现用户抽奖方法:
如何解决写爬虫IP受阻的问题?立即使用。
JAVA实现用户抽奖
需求分析
1)实现登录、注册、抽奖三个基本功能。
2)登录:用户输入账号密码登录,输入账号后会匹配注册用户。如果输入的用户不存在,用户将退出,密码将输入三次。成功登录后,主界面会显示登录用户的账户信息。
3)注册:用户先输入账号名称,系统查询该名称是否存在。如果存在,则要求用户更改名称,否则,输入密码,并且密码需要6位数的字符串。注册成功后,系统会随机分配一个与现有用户不重复的四位身份证号码。
4)抽奖:功能实现的前提:用户必须登录。当这个前提满足时,系统从现有用户中随机抽取5个不同的用户标记为幸运用户,并判断正在登录的用户是否被选中。
5)数据存储:采用文件系统,导入java.io.*包,
6)数据结构:登录用户信息保存在ArrayList中,幸运用户号和id保存在hasmapString id中,长度为5,字符串名,其中id为Key,name为Value。
实现结果
1)登录:
2)注册:
3)抽奖:
注意事项
运行代码之前,请确保在user.txt中创建五个以上的用户。导入Java . util . scanner;导入Java . util . ArrayList;导入Java . io . *;导入Java . util . string tokenizer;公共类Dos {
静态布尔logined=false
公共静态void main(String[] args) {
User User=new User();
int k=0;
while( (k=Main(user))=1k5){
开关(k){
案例1:
system . out . print((k=user . log in(user))==-1?该用户不存在!\ n : );
System.out.print((k==-2)?===警告用户:[ user.userName ]已经登录,无需再次登录!\ n : );
打破;
案例二:
user . regist();
打破;
案例三:
user . getluckly();
打破;
默认值:system . exit(0);
}
}
}
静态int Main(用户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(登录?-[已登录]- (1)用户名: user.userName (2)用户帐号: user . userid :-[未登录]- (1)用户名:NaN (2)用户帐号:NaN );
system . out . println(=====================================);
System.out.print(###===#==请输入您的选择:);
return(新扫描仪(System.in))。nextInt();
} }公共类用户{
字符串userName,userId,userPwd
公共用户(){}
公共用户(字符串userName,字符串userId,字符串userPwd) {
this.userName=用户名;
this.userId=userId
this . user pwd=user pwd;
}
公共字符串getUserName() {
返回用户名;
}
public void setUserName(字符串用户名){
如果(!username . equals( ){
ArrayListString temp
this . userid=(temp=(new operator file(this . userName=userName))。getUserMess(0))。get(1);
this . user pwd=temp . get(2);
}
}
公共字符串getUserId() {
返回用户标识;
}
公共字符串setUserId() {
字符串userId=“”;
while((new operator file(userId=string。((int)(数学)的值。random()* 9000 1000))).getUserMess(1).size()0){ }
返回(这个。userId=userId);
}
公共字符串getUserPwd() {
返回密码
}
公共(同Internationalorganizations)国际组织登录(用户u) {
int输入时间=3;
扫描仪扫描仪=新扫描仪(系统。在);
操作符文件获取用户消息=新操作符文件();
System.out.print(======请输入您的用户名:);
字符串uName=
获取用户消息。setuser(uName=scanner。nextline());
ArrayList string user mess=获取用户消息。获取用户mess(0);
if(userMess.size()1)返回-1;//返回-1表示用户不存在
if (uName.equals(用户名))返回-2;//返回-2表示用户重复登录
System.out.print(======请输入您的登录密码:);
而(!scanner.next().等于(用户乱。get(2))输入乘以0)
System.out.print(===密码输入错误!((- inputTimes)0?您还剩"输入时间"次机会!:三次机会已经用完了!输入任意退出));
System.out.println(inputTimes0?==登录成功!您本次输入密码 4-输入次数次!:==登录失败!);
setUserName(inputTimes0?uName:" ");
Dos.logined=inputTimes0?真:假;
返回0;
}
public void regist() {
User u=new User();
扫描仪扫描仪=新扫描仪(系统。在);
System.out.print(===请输入新的用户名:);
字符串名称;
while(new operator file(name=scanner。nextline()).getUserMess(0).大小()0)
System.out.print(已存在此用户,注册失败!\n===请重新输入新的用户名:);
System.out.print(======请设置您的(六位数字)登录密码:);
String regex=[0-9]{6} ,pwd .
而(!(pwd=scanner.nextLine()).匹配(正则表达式))
System.out.print(==密码格式不正确,请重新设置您的(六位数字)登录密码:);
System.out.println(已为用户:(u.userName=name)生成唯一ID:“(u . user pwd=pwd));
(new operatorFile()).writeuser same(u);
System.out.println(======注册成功!);
}
public static HashMapString,String lucky users=new HashMap();
public void get lucky(){
如果(!Dos.logined) {
System.out.println(===警告:没有用户登录,无法抽奖!);
返回;
}
而(幸运用户。尺寸()5)
{
字符串id=
数组列表字符串u;
while((u=(new operator file(id=string。((int)(数学)的值。random()* 9000 1000))).getUserMess(1)).size()1){ }
幸运的用户。put(u . get(1),u . get(0));
}
迭代器iterator=lucklyUsers.entrySet().迭代器();
int no=1;
布尔幸运=错误
System.out.println(====恭喜以下用户获得幸运称号:);
while(iterator.hasNext()){
地图. Entry entry=(Map .entry)迭代器。next();
System.out.println(幸运用户[(否)]用户名: entry.getValue()用户编号:条目。getkey());
LUCKLY=entry.getKey().等于(this.userId)?真实:幸运地;
}
系统。出去。println(幸运?=========恭喜您在本次抽奖中获得幸运称号!:=========很遗憾,今日您未获奖!-_-!);
}
公共字符串toString(){
归还这个。用户名 this。userid 这个。用户pwd
} }公共类操作员文件{
字符串用户;
公共void setUser(字符串用户){
this.user=用户;
}
公共操作员文件(字符串用户){
this.user=用户;
}
public operatorFile() { }
公共数组列表字符串getuser mess(int index){
ArrayList string temp=new ArrayList string();
文件文件=新文件(用户。txt’);
字符串行="";
尝试{
缓冲读取器br=新缓冲读取器(新文件读取器(文件));
while ((line=br.readLine())!=空行!=\n){
在…之时clear();
string tokenizer sk=new string tokenizer(line);
while (sk.hasMoreTokens()) {
在…之时添加(sk。nexttoken());
}
if (temp.get(index)).等于(这个。用户))断;
}
}
catch(IOException e){}
return (line==null)?new ArrayList string():temp;
}
public void write User mess(User u){
尝试{
缓冲编写器bw=新缓冲编写器(新文件编写器(新文件(用户。txt’),true));
bw。write(u . tostring() \ n );
bw。close();
}
catch (IOException e){ }
}}
JAVA实现用户抽奖
需求分析
1)实现三个基本功能:登录、注册、抽奖。
2)登录:用户输入账号密码进行登录,输入账号后会匹配已注册的用户,若输入用户不存在则退出,密码有三次输入机会,登录成功后主界面会显示已登录用户的账号信息。
3)注册:用户首先输入账号名称,系统查询此名称是否存在,如存在则请求用户换一个名称,否则进入密码输入,密码要求6位数字字符串,注册成功后,系统随机分配一个与已有用户不重复的四位数字编号编号。
4)抽奖:功能实现前提:需有用户处于登录状态。该前提满足时,系统从已存在用户中随机抽取5位不同的用户标记为幸运用户,并判断正在登录状态的用户是否被抽中。
5)数据存储:采用文件系统,导入java.io.*包,
6)数据结构:登录用户信息保存于数组列表,幸运用户编号和编号保存于长度为5的HasMapString id,字符串名称其中编号为密钥、名称为价值。
实现结果
1)登录:
2)注册:
3)抽奖:
注意事项
运行代码之前务必在user.txt中创建五个以上的用户导入Java。util。扫描仪;导入Java。util。ArrayList导入Java。io。*;导入Java。util。字符串标记器;公共类Dos {
静态布尔logined=false
公共静态void main(String[] args) {
User User=new User();
int k=0;
while( (k=Main(user))=1k5){
开关(k){
案例1:
系统。出去。print((k=用户。登录(用户))==-1?此用户不存在!\ n : );
System.out.print((k==-2)?===警告用户:[用户。用户名]已处于登录状态,无需重复登录!\ n : );
打破;
案例二:
用户。regist();
打破;
案例三:
用户。getluckly();
打破;
默认值:系统。退出(0);
}
}
}
静态int Main(用户用户){
系统。出去。println( * * * * * * * * * * * * * * * * * * * * * * *);
系统。出去。println( * * * * * * * * * * * * * * * * * * * 主菜单********************);
系统。出去。println( * * * * * * * * * * * * * * * * * * * * * * *);
System.out.println(****** 1登录******);
System.out.println(****** 2注册******);
System.out.println(****** 3抽奖******);
System.out.println(****** 4退出******);
系统。出去。println( * * * * * * * * * * * * * * * * * * * * * * *);
系统。出去。println(===============================);
System.out.println(登录?-[已登录]- (1)用户名:用户。用户名(2)用户账号: user.userId:-[未登录]- (1)用户名:南(2)用户账号:NaN’);
系统。出去。println(===============================);
System.out.print(###==请输入您的选择:);
返回(新扫描仪(System.in).nextInt();
} }公共类用户{
字符串用户名,用户标识,用户密码
公共用户(){}
公共用户(字符串用户名,字符串用户Id,字符串userPwd) {
this .用户名=用户名;
this.userId=用户标识
这个。用户密码=用户密码;
}
公共字符串getUserName() {
返回用户名;
}
公共void setUserName(字符串用户名){
如果(!用户名。等于(“”){
数组列表字符串温度
这个。userid=(temp=(new operator file(this。用户名=用户名).getUserMess(0)).get(1);
这个。用户pwd=温度。get(2);
}
}
公共字符串getUserId() {
返回用户标识;
}
公共字符串setUserId() {
字符串userId=
while((new operator file(userId=string。((int)(数学)的值。random()* 9000 1000))).getUserMess(1).size()0){ }
返回(这个。userId=userId);
}
公共字符串getUserPwd() {
返回密码
}
公共(同Internationalorganizations)国际组织登录(用户u) {
int输入时间=3;
扫描仪扫描仪=新扫描仪(系统。在);
操作符文件获取用户消息=新操作符文件();
System.out.print(======请输入您的用户名:);
字符串uName=
获取用户消息。setuser(uName=scanner。nextline());
ArrayList string user mess=获取用户消息。获取用户mess(0);
if(userMess.size()1)返回-1;//返回-1表示用户不存在
if (uName.equals(用户名))返回-2;//返回-2表示用户重复登录
System.out.print(======请输入您的登录密码:);
而(!scanner.next().等于(用户乱。get(2))输入乘以0)
System.out.print(===密码输入错误!((- inputTimes)0?您还剩"输入时间"次机会!:三次机会已经用完了!输入任意退出));
System.out.println(inputTimes0?==登录成功!您本次输入密码 4-输入次数次!:==登录失败!);
setUserName(inputTimes0?uName:" ");
Dos.logined=inputTimes0?真:假;
返回0;
}
public void regist() {
User u=new User();
扫描仪扫描仪=新扫描仪(系统。在);
System.out.print(===请输入新的用户名:);
字符串名称;
while(new operator file(name=scanner。nextline()).getUserMess(0).大小()0)
System.out.print(已存在此用户,注册失败!\n===请重新输入新的用户名:);
System.out.print(======请设置您的(六位数字)登录密码:);
String regex=[0-9]{6} ,pwd .
而(!(pwd=scanner.nextLine()).匹配(正则表达式))
System.out.print(==密码格式不正确,请重新设置您的(六位数字)登录密码:);
System.out.println(已为用户:(u.userName=name)生成唯一ID:“(u . user pwd=pwd));
(new operatorFile()).writeuser same(u);
System.out.println(======注册成功!);
}
public static HashMapString,String lucky users=new HashMap();
public void get lucky(){
如果(!Dos.logined) {
System.out.println(===警告:没有用户登录,无法抽奖!);
返回;
}
而(幸运用户。尺寸()5)
{
字符串id=
数组列表字符串u;
while((u=(new operator file(id=string。((int)(数学)的值。random()* 9000 1000))).getUserMess(1)).size()1){ }
幸运的用户。put(u . get(1),u . get(0));
}
迭代器iterator=lucklyUsers.entrySet().迭代器();
int no=1;
布尔幸运=错误
System.out.println(====恭喜以下用户获得幸运称号:);
while(iterator.hasNext()){
地图. Entry entry=(Map .entry)迭代器。next();
System.out.println(幸运用户[(否)]用户名: entry.getValue()用户编号:条目。getkey());
LUCKLY=entry.getKey().等于(this.userId)?真实:幸运地;
}
系统。出去。println(幸运?=========恭喜您在本次抽奖中获得幸运称号!:=========很遗憾,今日您未获奖!-_-!);
}
公共字符串toString(){
归还这个。用户名 this。userid 这个。用户pwd
} }公共类操作员文件{
字符串用户;
公共void setUser(字符串用户){
this.user=用户;
}
公共操作员文件(字符串用户){
this.user=用户;
}
public operatorFile() { }
公共数组列表字符串getuser mess(int index){
ArrayList string temp=new ArrayList string();
文件文件=新文件(用户。txt’);
字符串行="";
尝试{
缓冲读取器br=新缓冲读取器(新文件读取器(文件));
while ((line=br.readLine())!=空行!=\n){
在…之时clear();
string tokenizer sk=new string tokenizer(line);
while (sk.hasMoreTokens()) {
在…之时添加(sk。nexttoken());
}
if (temp.get(index)).等于(这个。用户))断;
}
}
catch(IOException e){}
return (line==null)?new ArrayList string():temp;
}
public void write User mess(User u){
尝试{
缓冲编写器bw=新缓冲编写器(新文件编写器(新文件(用户。txt’),true));
bw。write(u . tostring() \ n );
bw。close();
}
catch (IOException e){ }
}}以上就是详解爪哇岛实现用户抽奖的详细内容,更多请关注我们其它相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。