任务:
为某商场开发一套幸运抽奖系统,客户首先注册成为商场会员,会员登录系统,参加抽奖活动
主要功能: 注册 登录 幸运抽奖
控制台程序,界面如下:
思路:要实现三个功能,将代码分为三个块写,首先实现注册功能,因为现在还没有学习数据库,所以直接使用一个变量去记录输入的账号与密码,然后再对比变量是否一致(待以后学习了连接数据库可以继续完善)。
登录功能,与注册时定义的两个变量进行对比,一致则标记为已登录,登录使用循环结构,给出三次机会。
抽奖功能,声明一个int类型的数组,然后向数组内存入随机数作为中奖号码,再进行遍历对比抽奖号码。
最后使用循环把三个模块连接起来。
实现代码如下:
import java.util.*;
class Project1
{
public static void main(String[] args)
{
//将需要使用到的一些变量先在循环外声明出来
boolean exit = true;//初始化循环变量,用于判断是否退出系统
String user = "";//记录注册的用户名
int pass = 0;//记录注册的密码
String user1 = "";//记录登录用户名
int pass1;//记录登录密码
int number = 0;//记录卡号
boolean judge = false;//记录是否已注册
boolean judge1 = false;//记录是否登录
do
{
System.out.println("**********欢迎进入奖客富翁系统**********");
System.out.println("\t\t1.注册\n\t\t2.登录\n\t\t3.抽奖");
System.out.println("****************************************");
System.out.print("请选择菜单:");
Scanner input = new Scanner(System.in);
int elect = input.nextInt();
if(elect!=1&&elect!=2&&elect!=3)//判断菜单选择是否正确
{
System.out.println("您的输入有误");
}else{
switch(elect)
{
//注册模块
case 1:{
System.out.print("[奖客富翁系统>注册]\n继续吗?y/n:");
String s1 = input.next();//判断继续或退出
exit = "y".equals(s1);
if(exit==true)
{
System.out.print("请填写个人用户信息\n用户名:");
user = input.next();
System.out.print("密码:");
pass = input.nextInt();
System.out.println("\n注册成功,请记好您的会员卡号");
Random random = new Random();
int kahao = random.nextInt(8999)+1000;//产生四位数随机数
judge=true; //标记为已成功注册
System.out.println("用户名\t密码\t卡号");
System.out.println(user+"\t"+pass+"\t"+kahao);
}else{
System.out.println("系统退出,谢谢使用");
}
//exit=false;
break;
}
//登录模块
case 2:{
if(judge==false) //如果未注册,提示用户未注册
{
System.out.println("抱歉,您还未注册!\n");
break;
}
int k = 2; //控制循环,总共有三次密码输入机会
do
{
System.out.print("[奖客富翁系统>登录]\n继续吗?y/n:");
String s21 = input.next();//实现退出选项
exit = "y".equals(s21);
if(exit==false)
{
System.out.println("系统退出,谢谢使用");
break;
}
System.out.print("请输入用户名:");
user1 = input.next();
System.out.print("\n请输入密码:");
pass1 = input.nextInt();
boolean a1 = user.equals(user1);
if(a1==true&&pass1==pass)
{
System.out.print("欢迎您:"+user+"\n继续吗?y/n:");
String s22 = input.next();//实现退出选项
exit = "y".equals(s22);
if(exit==false)
{
System.out.println("系统退出,谢谢使用");
break;
}
judge1=true; //标记为已登录
break;
}else{
System.out.println("您还剩余"+k+"次机会");
k--;
}
}while(k>=0);
break;
}
//抽奖模块
case 3:{
if(judge1==false)
{
System.out.println("抱歉,您还未登录!\n");
break;
}
System.out.print("[奖客富翁系统>登录]\n继续吗?y/n:");
String s31 = input.next(); //实现退出选项
exit = "y".equals(s31);
if(exit==false)
{
System.out.println("系统退出,谢谢使用");
break;
}
System.out.print("请输入会员卡号");
number = input.nextInt();
int[] arr = new int[5];
for(int i=0;i<arr.length;i++) //向数组录入四位数的随机数
{
Random random = new Random();
arr[i] = random.nextInt(8999)+1000;
}
System.out.print("本月幸运号码是:");
for(int a=0;a<arr.length;a++) //将选出的五个数输出到屏幕
{
System.out.print(arr[a]+" ");
}
boolean temp = true; //作为输出不中奖的条件
for(int b=0;b<arr.length;b++)
{
if(number==arr[b]) //判断为中奖
{
System.out.println("恭喜,您中奖了!!!");
temp = false; //中奖了,改变temp
break;
}
}
if(temp==true) //如果未中奖,temp值未改变则执行
{
System.out.println("抱歉,您不是本日幸运用户。\n继续吗?y/n:");
String s32 = input.next(); //实现退出选项
exit = "y".equals(s32);
if(exit==false)
{
System.out.println("系统退出,谢谢使用");
break;
}
}
break;
}
}
}
}while(exit==true);
}
}
后记:
第一次写超过百行的代码,虽然这在实际工作中是司空见惯的事情,但是对于我自己来说,是一个很大的进步,刚开始时思路都没哟,所以我把分析全都用笔写在了纸上,瞬间感觉清晰明了,首先要明确思路,光在脑子里想是不够的,纸和笔画图是最好的工具。