import java.util.Arrays;
import java.util.Scanner;
public class Exercise {
static String[] names = {"张三","李四","王五","小明"};
static int[] ages= {22,20,25,22};
static String[] states= {"正常","正常","正常","正常"};
public static void main(String[] args) {
//初始化数据
//scanner对象只需要一个,不需要放到循环里
Scanner scanner =new Scanner(System.in);
int num;
do {
System.out.println("——————欢迎使用用户管理系统——————");
System.out.println("1.用户查询");
System.out.println("2.添加用户");
System.out.println("3.删除用户");
System.out.println("4.账号冻结");
System.out.println("5.账号解封");
System.out.println("6.退出系统");
System.out.print("请选择:");
num = scanner.nextInt();
switch(num) {
case 1:
System.out.println("查询用户操作");
//制表符\t
System.out.println("编号\t\t姓名\t\t年龄\t\t状态");
//数组长度一样只需要循环一次
for(int i = 0;i<names.length;i++) {
if(names[i]!=null) {
System.out.println((i+1)+"\t\t"+names[i]+"\t\t"+ages[i]+"\t\t"+states[i]);
}
}
System.out.print("输入0返回上级菜单");
num=scanner.nextInt();
break;
case 2:
System.out.println("---添加用户操作---");
System.out.print("请输入添加用户名:");
String name = scanner.next();
boolean flag = nameIsExist(name);
if(flag) {
System.out.println("添加的"+name+"已存在,请勿重复添加");
}else{
if(names[names.length-1]!=null) {
names=Arrays.copyOf(names,names.length+1);
names[names.length-1]=name;
System.out.println("请输入"+name+"的年龄:");
ages=Arrays.copyOf(ages,ages.length+1);
int age =scanner.nextInt();
ages[ages.length-1]=age;
states=Arrays.copyOf(states,states.length+1);
states[states.length-1]="正常";
System.out.println(name+"添加用户成功!");
}else {
//获得第一个为null的对象
int index = getFirstNull();
names[index]=name;
System.out.print("请输入"+name+"的年龄:");
int age = scanner.nextInt();
ages[index]=age;
states[index]="正常";
}
}
System.out.print("输入0返回上级菜单");
num=scanner.nextInt();
break;
case 3:
//判断数组的第一个元素是否为null,意在判定数组是否都为空
System.out.println("------删除用户------");
if(names[0]==null) {
System.out.println("用户已全部删除!");
}else {
System.out.print("请输入用户名:");
name=scanner.next();
if(nameIsExist(name)) {
int index = getIndex(name);
if(index>=0) {
//对数组进行循环,并且把对象向前移动一位
for(int i = index;i<names.length-1;i++) {
names[i]=names[i+1];
ages[i]=ages[i+1];
states[i]=states[i+1];
}
//把数组的最后以为置为空
names[names.length-1]=null;
ages[ages.length-1]=0;
states[states.length-1]=null;
}
System.out.println(name+"用户删除成功");
}else {
System.out.println(name+"账号不存在,请重新输入!");
}
}
System.out.print("输入0返回上级菜单");
num=scanner.nextInt();
break;
case 4:
System.out.println("------账号冻结------");
System.out.print("请输入要冻结的用户名:");
name=scanner.next();
//如果用户名存在
if(nameIsExist(name)) {
int index = getIndex(name);
String state = states[index];
//如果该账号已被冻结
if(state.equals("冻结")) {
System.out.println(name+"已被冻结,请勿重复操作");
}else {
states[index]="冻结";
System.out.println(name+"用户冻结成功");
}
}else {
System.out.println(name+"账号不存在,请重新输入!");
}
System.out.print("输入0返回上级菜单");
num=scanner.nextInt();
break;
case 5:
System.out.println("------账号解封------");
System.out.print("请输入需要解封的账号:");
name=scanner.next();
//如果账号存在
if(nameIsExist(name)) {
int index = getIndex(name);
String state = states[index];
if(state.equals("正常")) {
System.out.println(name+"用户正常,无需解封");
}else {
states[index]="正常";
System.out.println(name+"用户解封成功");
}
}else {
System.out.println(name+"账号不存在,请重新输入!");
}
System.out.print("输入0返回上级菜单");
num=scanner.nextInt();
break;
case 6:
System.out.println("------感谢使用本系统,再见------");
break;
}
}while(num<6);
}
//判断用户名是否存在
public static boolean nameIsExist(String name) {
for(int i = 0;i < names.length; i++) {
if(name.equals(names[i])) {
return true;
}
}
return false;
}
// 找到名字在数组中的下标
public static int getIndex(String name) {
for(int i = 0;i < names.length; i++) {
if(name.equals(names[i])) {
return i;
}
}
return -1;
}
//找到数组中第一个为空的下标
public static int getFirstNull() {
for(int i = 0;i < names.length; i++) {
if(names[i]==null) {
return i;
}
}
return -1;
}
}
JAVA-练习(一)
最新推荐文章于 2024-09-19 13:19:42 发布