小练习:模拟注册登录幸运抽奖的全过程
一. 三个主要功能
1. 注册
用户选择"注册"菜单,进入菜单功能。输入用户名和密码后,系统提示注册成功信息,并给出会员卡号。
2. 登录
注册成功后,用户选择"登录"菜单,进入登录功能。输入注册时的用户名和密码,登录成功,系统提示欢迎信息。如果用户名和密码输入错误,提示用户继续输入,最多有三次输入机会。
3. 幸运抽奖
登录成功后,用户选择"抽奖"菜单,进入幸运抽奖功能,输入会员卡号,系统生成4个四位随机数作为幸运数字。如果会员卡号是其中之一,则成为本日幸运会员,否则不是。
二. 需求分析
1. 菜单 (menu.java)
2. 注册 (reg.java)
3. 登录 (login.java)
4. 生成幸运卡号 (luckDraw.java)
5. 提示用户是否继续 (isContinue.java)
三. 代码编写
1. 主菜单
package cn.joky.luckyNumber;
import java.io.IOException;
import java.util.Scanner;
public class menu {
public static void myMenu() throws IOException
{
Scanner input = new Scanner(System.in);
int choice, flag = 0;
System.out.println("***** 欢迎进入抽奖系统 *****");
System.out.println("\t 1. 注册");
System.out.println("\t 2. 登陆");
System.out.println("\t 3. 抽奖");
System.out.println("******************************");
do
{
System.out.print("请选择菜单:");
// 判断输入的是否是数字
if(input.hasNextInt() == true)
{
flag = 1;
choice = input.nextInt();
switch(choice)
{
case 1:
reg.registerUsers(); // 注册
isContinue.Continue(); // 是否继续
break;
case 2:
login.Login(); // 登录
isContinue.Continue(); // 是否继续
break;
case 3:
luckDraw.LuckDraw(); // 抽奖
isContinue.Continue(); // 是否继续
break;
default:
System.out.println("无效的数字,请重新选择"); // 输入的 1、2、3 以外的数字
isContinue.Continue(); // 是否继续
flag = 0;
}
}
else
{
flag = 0;
System.out.println("无效的数字,请重新选择"); // 输入的是字母
isContinue.Continue(); // 是否继续
}
}while(flag == 0);
}
}
2. 注册
package cn.joky.luckyNumber;
import java.util.Scanner;
public class reg {
public static String[] userName = new String[50]; // 用户名
public static String[] Password = new String[50]; // 密码
public static int[] cardNum = new int[50]; // 卡号
public static int usersCount = 0; // 注册的用户个数
public static void registerUsers()
{
Scanner input = new Scanner(System.in);
System.out.println("[抽奖系统 > 注册]");
System.out.println("请填写个人注册信息:");
System.out.print("用户名:");
userName[usersCount] = input.next(); // 输入注册用户名
System.out.print("密 码:");
Password[usersCount] = input.next(); // 输入注册密码
cardNum[usersCount] = (int)(Math.random()*(9999-1000));
System.out.println("\n注册成功,请记好您的会员卡号:");
System.out.println("用户名 \t 密码 \t 会员卡号");
System.out.println( userName[usersCount] + " \t \t " + Password[usersCount] + " \t \t " + cardNum[usersCount] + "\n");
usersCount++;
}
}
3. 登录
package cn.joky.luckyNumber;
import java.io.IOException;
import java.util.Scanner;
public class login {
public static int isLogin = 0;
public static String loginUserName; // 登录用户名
public static String loginPassword; // 登录密码
public static int flag = 0; // 标记是否登录成功
public static void Login() throws IOException
{
Scanner input = new Scanner(System.in);
if(flag == 1)
{
System.out.print("您已登陆,不必重新登陆!");
isContinue.Continue();
return;
}
System.out.print("请输入用户名:");
loginUserName = input.next(); // 输入登录用户名
System.out.print("请输入密码:");
loginPassword = input.next(); // 输入登录密码
for(int i = 0; i < reg.usersCount; i++)
{
if(loginUserName.equals(reg.userName[i]) == true && loginPassword.equals(reg.Password[i]) == true)
{
System.out.println("欢迎您," + loginUserName);
isLogin = 1;
flag = 1;
break;
}
}
// flag的值为0,表示未登录成功
if(flag == 0)
{
System.out.println("用户名或密码输入错误!");
isContinue.Continue();
}
}
}
4. 生成幸运卡号
package cn.joky.luckyNumber;
import java.io.IOException;
public class luckDraw {
public static final int N = 4; // 幸运卡号的个数
public static int[] luckyNum = new int[N]; // 幸运卡号
public static int flag = 0; // 判断是否已生成过幸运卡号
public static void LuckDraw() throws IOException
{
if(login.isLogin == 0) // 判断用户是否已登录
{
System.out.print("您还未登陆,请登陆后再进行操作。按任意键返回主菜单!");
System.in.read();
menu.myMenu();
}
else
{
System.out.println("今天的幸运卡号为:");
for(int i = 0; i < N; i++)
{
if(flag == 0)
{
luckyNum[i] = (int)(Math.random()*(9999-1000));
for(int j = 0; j < i; j++)
{
if(luckyNum[i] == luckyNum[j])
{
i--;
break;
}
}
}
System.out.print("\t" + luckyNum[i]);
}
flag = 2; // 标示,已经进行过随机摇号
for(int i = 0; i < N; i++)
{
for(int j = 0; j < reg.usersCount; j++)
{
if(luckyNum[i] == reg.cardNum[j] && reg.userName[j] == login.loginUserName)
{
System.out.print("\n恭喜您成为今天的幸运会员!");
flag = 1;
}
}
}
if(flag != 1)
{
System.out.print("\n抱歉,您的卡号不是今天的幸运卡号!");
}
}
}
}
5. 提示用户是否继续
package cn.joky.luckyNumber;
import java.io.IOException;
public class isContinue {
public static void Continue() throws IOException
{
char con = 'Y';
System.out.print("继续吗?(Y/y继续,其他任意键退出)");
con = (char)System.in.read();
if(con == 'Y' || con == 'y')
{
menu.myMenu();
}
else
{
System.out.print("感谢使用,系统即将退出!");
System.exit(0);
}
}
}
6. 主程序
package cn.joky.luckyNumber;
import java.io.IOException;
public class game {
public static void main(String[] args) throws IOException
{
menu.myMenu();
}
}