需求分析

1)实现三个基本功能:登录、注册、抽奖。

2)登录:用户输入账号密码进行登录,输入账号后会匹配已注册的用户,若输入用户不存在则退出,密码有三次输入机会,登录成功后主界面会显示已登录用户的账号信息。

3)注册:用户首先输入账号名称,系统查询此名称是否存在,如存在则请求用户换一个名称,否则进入密码输入,密码要求6位数字字符串,注册成功后,系统随机分配一个与已有用户不重复的四位数字id编号。

4)抽奖:功能实现前提:需有用户处于登录状态。该前提满足时,系统从已存在用户中随机抽取5位不同的用户标记为幸运用户,并判断正在登录状态的用户是否被抽中。

5)数据存储:采用文件系统,导入java.io.*包,

6)数据结构:登录用户信息保存于ArrayList,幸运用户编号和id保存于长度为5的HasMap其中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("")) {

ArrayListtemp;

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());

ArrayListuserMess=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 HashMaplucklyUsers=new HashMap<>();

public void getLuckly() {

if (!Dos.logined) {

System.out.println("===>警告:没有用户登录,无法抽奖!");

return ;

}

while(lucklyUsers.size()<5)

{

String id="";

ArrayListu;

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 ArrayListgetUserMess(int index){

ArrayListtemp=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实现用户抽奖功能(附完整代码)的文章就介绍到这了,更多相关JAVA实现用户抽奖内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

java登录注册抽奖完整代码_JAVA实现用户抽奖功能(附完整代码)相关推荐

  1. java实现红包要多少钱_Java实现抢红包算法,附完整代码(公平版和手速版)

    当我们在群里抢红包时真的是手速越快红包金额越大吗? 答案当然是并不是,都说了是拼手气,岂能是拼手速! 不过也可以有拼手速的方法 二倍均值法(公平版) 这是一种很合理很公平的抢红包算法了,绝对不会让你拼 ...

  2. java抽奖_JAVA实现用户抽奖功能(附完整代码)

    需求分析 1)实现三个基本功能:登录.注册.抽奖. 2)登录:用户输入账号密码进行登录,输入账号后会匹配已注册的用户,若输入用户不存在则退出,密码有三次输入机会,登录成功后主界面会显示已登录用户的账号 ...

  3. java+登录window域认证网页_Java 实现 QQ 登陆

    1. 前言 2. 后台设计 2.1. 数据库设计 2.2. 鉴权流程 3. QQ登陆 3.1. 实名认证 3.2. 创建应用 3.3. 引导用户登录 3.4. 拿到accessToken 3.5. 获 ...

  4. Java 登录注册系统 【java基础案例教程 案例2-6】

    案例要求 编写程序实现简单的登录注册系统.程序包括以下4个功能. 1)登录功能,用户输入正确的账号密码可成功登录 2)注册功能,输入用户名和密码进行注册 3)查看功能,查看所有的用户名和密码 4)退出 ...

  5. C#仿qq窗体项目 登录 注册 聊天 点赞 更换头像 添加好友 删除好友 基础功能

    C#仿qq窗体项目 登录 注册 聊天 点赞 更换头像 添加好友 删除好友 基础功能这里写自定义目录标题 话不多说直接上图片: 学校第一学期结业项目 采用环境: sqlserver2008 vs2010 ...

  6. Python实现自动翻译功能 - 附完整代码

    Python实现自动翻译功能 - 附完整代码 随着全球化的不断深入,越来越多的人需要跨越语言障碍进行交流.机器翻译技术的出现为这一问题提供了有效的解决方案.今天,我们将通过Python实现一个自动翻译 ...

  7. java登录注册功能怎么实现_使用Java代码实现登录注册功能

    实现思路:分别创建5个包和5个类{cn.f.pojo(User.java):cn.f.Dao(UserDao.java):cn.f.Dao.impl(UserDaoImpl.java): cn.f.g ...

  8. 五子棋java百度文库_JAVA课程设计 五子棋(内附完整代码).doc

    JAVA课程设计 五子棋(内附完整代码) JAVA课程设计 设计题目:五子棋游戏 简要的介绍五子棋 五子棋的起源 五子棋,又被称为"连五子.五子连.串珠.五目.五目碰.五格.五石.五法.五联 ...

  9. java 秒杀代码_Java秒杀系统实战系列~商品秒杀代码实战

    摘要: 本篇博文是"Java秒杀系统实战系列文章"的第六篇,本篇博文我们将进入整个秒杀系统核心功能模块的代码开发,即"商品秒杀"功能模块的代码实战. 内容: & ...

最新文章

  1. express项目创建步骤
  2. Windows Server 2008常见的安全设置
  3. Java Proxy和CGLIB动态代理原理
  4. 面向对象三大特性,六个原则
  5. linux 命令(3)echo
  6. python list 深复制_Python列表的深复制和浅复制示例详解
  7. 2.11.1.移植前的准备工作
  8. inline 内联函数详解 内联函数与宏定义的区别
  9. tomcat4 请求的处理——初步分析
  10. 小红书 “红”到翻车:你的骚操作闪了我的腰?
  11. 海康GB28181接入SRS服务器,实现低延迟直播
  12. 蚂蚁金服测试开发工程师面试
  13. [Groovy]Groovy with Ant Task
  14. cntv客户端_cntv网络电视_cntv官方下载-太平洋下载中心
  15. html5qq空间代码作业,免费QQ空间背景代码大全(高手整理)
  16. 文档服务器 件排名,十大服务器排名
  17. win7计算机搜不到无线网,怎么解决win7笔记本搜索不到WiFi
  18. 冬瓜哥祝大家新年快乐!
  19. 【读者来信】培训完没有类似的工作经验,该如何找工作?
  20. anistropic filer

热门文章

  1. 【kafka原理】kafka Log存储解析以及索引机制
  2. ChatGPT 爆红后,估值 290 亿美元的 Open AI 要被收购?
  3. 电子元件-稳压器件(稳压管/TL431/LDO/DCDC)
  4. 先行发生原则(happens-before)介绍
  5. Nacos小坑——启动异常以及正常启动后账号密码错误问题解决
  6. sql 查询时间数据
  7. 在IP网络中,P、PE、CE代表意思
  8. 基于http的cookie和JSON储存
  9. 3点钟无眠区块链社区讨论成果汇总
  10. mysql中prepare_MySQL PREPARE语句