Java怎么实现抽奖系统
发表于:2024-11-19 作者:千家信息网编辑
千家信息网最后更新 2024年11月19日,今天小编给大家分享一下Java怎么实现抽奖系统的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解
千家信息网最后更新 2024年11月19日Java怎么实现抽奖系统
今天小编给大家分享一下Java怎么实现抽奖系统的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
抽奖系统需求分析
1)实现抽奖系统的三大主要功能是登录、注册和抽奖。
2)登录需求指的是让用户输入其账号密码从而进行登录,用户输入其账号去匹配系统内已注册用户,如果输入账号不存在就退出,密码则能输入三次,登录成功后主界面会显示已登录用户的账号信息。
3)注册需求让用户先输入其账号,再有系统查询用户账号名是否已存在,如果已存在就让用户重新输入,不存在就进行下一步密码输入,密码的要求是6位数字字符串,用户注册成功后系统会随机分配与已有账号不一样的四位数字 id 编号。
4)抽奖需求功能实现的前提条件是要有用户处于已登录状态。当前提满足时系统从已存在用户中随机去抽取5位不同的用户标记为幸运用户,并接着判断此时在线的用户是否有被抽中。
5)数据存储采用的是文件系统,导入 java.io.*包,
6)登录用户信息保存在 ArrayList 中,幸运用户编号与 id 保存在长度为5的 HasMap
其中它的 id 为 Key,name 为 Value。
注意事项
在运行代码之前务必在 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 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 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 lucklyUsers=new HashMap<>(); public void getLuckly() { if (!Dos.logined) { System.out.println("===>警告:没有用户登录,无法抽奖!"); return ; } while(lucklyUsers.size()<5) { String id=""; ArrayList 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 getUserMess(int index){ ArrayList temp=new ArrayList(); 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():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怎么实现抽奖系统"这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注行业资讯频道。
用户
登录
输入
密码
系统
账号
用户名
幸运
成功
数字
知识
篇文章
需求
不同
代码
信息
内容
前提
功能
机会
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全与电子商务
删除数据库中所有数据
云服务器干嘛用
手机端数据库编辑
sap 数据库表
以网络安全为主题的文章题目
哪里可以租开手游的服务器
网络安全知识及网络危险应对
英雄联盟裁决之地服务器在第几个
宇柯互联网络科技苏波
洛阳市网络安全大队老城区
网络安全为人民知识普及社区
软件开发需要金额
西奥电梯服务器菜单说明
杭州桐庐众橙网络技术有限公司
医疗系统网络安全会议
数据库中保留一位小数函数
网络安全张潇
介质管理服务器
教师的网络技术
网络安全的后期发展
网络安全法属于特别法
网络安全宜通世纪
刀片服务器是什么
2020网络安全宣传周答题
java 操作数据库读写
广东互联网医疗科技有限公司
西奥电梯服务器菜单说明
可以使用户方便地定义数据库
牛油果数据库