package com.Test; import java.util.Arrays; import java.util.Scanner; public class Test2 { /** 主要功能 注册 登录 幸运抽奖 需求说明 输出菜单 选择菜单编号,输出菜单信息 如果编号选择错误,输出“您的输入有误!” 需求说明 系统询问用户是否继续 如果用户选择继续,则可以继续选择菜单,否则程序结束,退出系统 需求说明 输入用户名和密码,系统产生4位随机数作为卡号。 注册成功,显示注册信息并修改注册标识为true 需求说明 输入注册时的用户名和密码,登录成功,提示欢迎信息 如果用户名和密码输入错误,提示用户继续输入,最多有 3次输入机会 需求说明 登录成功后,用户选择幸运抽奖菜单,进入幸运抽奖功能 输入会员卡号,系统生成5个4位随机数作为幸运数字 如果会员卡号是其中之一,则成为本日幸运会员;否则不是幸运会员 * @param args */ static int index=0; static String[][] users=new String[1024][3]; static Scanner input=new Scanner(System.in); public static void menu(){ System.out.println("*****************欢迎使用玩玩玩抽奖系统***************\n" + "*1、注册\n" + "*2、登陆\n" + "*3、幸运抽奖\n" + "*4、输入其他退出\n" + "****************************************************\n"); } public static String validateRegist(String id,String name){ /*if(name==null||name.equals("")){ return "注册失败,用户名不能为空!"; }*/ //键盘输入不需要非空验证 for(int i=0;i<=index;i++){ if(users[i][0]==null){ return "注册成功!"; }else if(users[i][1].equals(name)){ return "注册失败,该用户名已存在!"; }else if(users[i][0].equals(id)){ return "注册失败,系统id冲突!"; } } return "注册成功!"; } public static void main(String[] args){ while(true){ input=new Scanner(System.in); menu(); int i=0; try{ i=input.nextInt(); }catch(Exception e){ exit(); continue; } switch(i){ case 1: System.out.println("***********************玩玩玩抽奖系统>>用户注册**********************"); while(true){ System.out.println("请输入用户名:"); String name=input.next(); System.out.println("请输入密码:"); String password=input.next(); String id=String.valueOf((int)(Math.random()*9000+1000)); String message=validateRegist(id,name); boolean flag=message.equals("注册成功!"); if(flag){ users[index][0]=id; users[index][1]=name; users[index][2]=password; System.out.println("您的会员号是:"+id); index++; System.out.println(message); }else{ System.out.println(message);//不考虑数组越界的问题 continue; } System.out.println("输入1再次注册,输入其他数回到主菜单。"); try{ if(input.nextInt()!=1){ break; } }catch(Exception e){ break; } } break; case 2: boolean flag=false; while(!flag){ System.out.println("请输入用户名:"); String name=input.next(); System.out.println("请输入密码:"); String password=input.next(); for(int j=0;j<index;j++){ if(users[j][1].equals(name)&&users[j][2].equals(password)){ flag=true; break; } } if(flag){ System.out.println("登陆成功!"); }else{ System.out.println("登陆失败,无法识别的用户名和密码组合!"); System.out.println("输入1再试一次,输入其他数回到主菜单。"); try{ if(input.nextInt()!=1){ break; } }catch(Exception e){ break; } } } break; case 3: System.out.println("*********************玩玩玩抽奖系统>>幸运抽奖*****************"); while(true){ System.out.println("*1、输入幸运号进入抽奖\n" + "*2、找回幸运号\n" + "*输入其他返回主菜单"); int a=0; try{ a=input.nextInt(); switch(a){ case 1: System.out.println("请输入id"); String id=input.next(); if(!checkId(id)){ System.out.println("您输入的会员号不存在!"); break; } int k=0;//抽奖次数 while(k<3){ System.out.println("输入1抽奖:"); int cj=input.nextInt(); if(cj==1){ int returnmes=isLucklyid(id); if(returnmes!=-1){ System.out.println("恭喜您,您抽中了幸运奖,一颗恐龙蛋!"); }else{ System.out.println("很遗憾,您没有中奖!"); } k++; } } System.out.println("您的抽奖次数已经用完,每天只有3次机会哦!"); break; case 2: break; } }catch(Exception e){ break; } } break; default: exit(); } } } public static void exit(){ System.out.println("要退出系统吗?(s/n)"); //Scanner in=new Scanner(System.in); input=new Scanner(System.in); String goon=input.next(); if(goon.equals("s")){ System.out.println("谢谢使用!"); System.exit(0); } } public static int isLucklyid(String id){//不是幸运号输返回-1 String[] lucklyids=new String[5]; for(int i=0;i<5;i++){ lucklyids[i]=String.valueOf((int)(Math.random()*9000+1000)); } return Arrays.binarySearch(lucklyids, id); } public static boolean checkId(String id){//存在返回true,不存在返回false for(int i=0;i<index;i++){ if(users[i][0]==id){ return true; } } System.out.println(); for(int i=0;i<index;i++){ System.out.print(users[i][0]==id+"\t"); } return false; } }
几个总结:
做项目心不要太大,一点一点吃。
比如要求,先不要考虑什么键盘输入的值类型错误报异常或者用户使用中胡乱输入的情况。也可以先不考虑将注册的值全部存入数组中,使用变量接受,只考虑走一次的情况。在完成基本的要求后再在原来的基础上优化,清除bug。
定义String变量初始值的时候,如果可以的话,使用""替代null,因为null的话在一些应用中会报空指针。
时间: 2024-10-04 23:13:24