JAVA-练习(一)

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;
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值