基于数组之前的基础实现的小型用户管理系统
1 import java.util.Arrays; 2 import java.util.Scanner; 3 4 public class Test_StudentSystem { 5 static String []names = {"张三","李四","王五","刘六"}; 6 static int [] ages = {18,19,20,21}; 7 static String [] states = {"正常","正常","正常","正常"}; 8 public static void main(String[] args) { 9 int num; 10 do{ 11 System.out.println("1.查询用户"); 12 System.out.println("2.添加用户"); 13 System.out.println("3.删除用户"); 14 System.out.println("4.冻结用户"); 15 System.out.println("5.解冻用户"); 16 System.out.println("6.退出系统"); 17 System.out.print("请输入你的操作:"); 18 Scanner sc = new Scanner(System.in); 19 num = sc.nextInt(); 20 switch(num){ 21 case 1: 22 System.out.println("----查询用户----"); 23 for (int i = 0; i <names.length; i++) { 24 System.out.println("编号"+"\t"+"姓名"+"\t"+"年龄"+"\t"+"状态"); 25 System.out.println(" "+(i+1)+"\t"+"\t"+names[i]+"\t"+" "+ages[i]+"\t"+"\t"+states[i]); 26 } 27 System.out.print("请输入0返回上一级"); 28 num = sc.nextInt(); 29 break; 30 case 2: 31 System.out.println("----添加用户----"); 32 System.out.println("请输入用户姓名:"); 33 String name =sc.next(); 34 boolean ret = nameIsExist(name); 35 if(ret){ 36 System.out.println(name+"已经存在,请勿重复添加!"); 37 }else{ 38 if(names[names.length-1]!=null){ 39 names = Arrays.copyOf(names,names.length+1);//新创数组扩容 40 names[names.length-1] = name; 41 System.out.println("请输入用户年龄:"); 42 int age = sc.nextInt(); 43 ages = Arrays.copyOf(ages,ages.length+1); 44 ages[ages.length-1] = age; 45 System.out.println("请输入用户状态:"); 46 String state = sc.next(); 47 states = Arrays.copyOf(states,states.length+1); 48 states[states.length-1] = state; 49 System.out.println(name+"添加成功!"); 50 }else{ 51 int index = getFirstIndex(name); 52 if(index>=0){ 53 name =sc.next(); 54 System.out.println("请输入用户年龄:"); 55 int age = sc.nextInt(); 56 ages[index] = age; 57 System.out.println("请输入用户状态:"); 58 String state = sc.next(); 59 states[index] = state; 60 System.out.println(name+"添加成功!"); 61 } 62 } 63 } 64 System.out.print("请输入0返回上一级"); 65 num = sc.nextInt(); 66 break; 67 case 3: 68 System.out.println("----删除用户----"); 69 System.out.println("请输入删除用户姓名:"); 70 name = sc.next(); 71 if(names[0]==null){ 72 System.out.println("数组中没有元素,无法删除!"); 73 }else{ 74 if(!nameIsExist(name)){ 75 System.out.println(name+"不存在!"); 76 }else{ 77 int index = getIndex(name); 78 if(index==names.length-1){ 79 names[index] = null; 80 ages[index] = 0; 81 states[index] = null; 82 System.out.println(name+"删除成功!"); 83 }else{ 84 for (int i = index; i <names.length-1 ; i++) { 85 names[i] = names[i+1]; 86 names[i+1] = null;//删除元素,那么需要将后面的数组元素赋值给前面的数组元素 87 ages[i] = ages[i+1]; 88 ages[i+1] = 0; 89 states[i] = states[i+1]; 90 states[i+1] = null; 91 } 92 System.out.println(name+"删除成功!"); 93 } 94 } 95 } 96 System.out.print("请输入0返回上一级"); 97 num = sc.nextInt(); 98 break; 99 case 4: 100 System.out.println("----冻结用户----"); 101 System.out.println("请输入冻结用户名:"); 102 name = sc.next(); 103 if(!nameIsExist(name)){ 104 System.out.println(name+"不存在!"); 105 }else{ 106 int index = getIndex(name); 107 if(states[index].equals("冻结")){ 108 System.out.println(name+"已经被冻结,请勿重复操作!"); 109 }else{ 110 states[index] = "冻结"; 111 System.out.println(name+"冻结成功!"); 112 } 113 } 114 System.out.print("请输入0返回上一级"); 115 num = sc.nextInt(); 116 break; 117 case 5: 118 System.out.println("----解冻用户----"); 119 System.out.println("请输入解冻用户名:"); 120 name = sc.next(); 121 if(!nameIsExist(name)){ 122 System.out.println(name+"不存在!"); 123 }else{ 124 int index = getIndex(name); 125 if(states[index].equals("正常")){ 126 System.out.println(name+"正常状态,请勿重复操作!"); 127 }else{ 128 states[index] = "正常"; 129 System.out.println(name+"解冻成功!"); 130 } 131 } 132 System.out.print("请输入0返回上一级"); 133 num = sc.nextInt(); 134 break; 135 case 6: 136 System.out.println("----退出系统----"); 137 System.out.println("欢迎使用用户管理系统,再见!"); 138 System.out.print("请输入0返回上一级"); 139 num = sc.nextInt(); 140 break; 141 } 142 }while(num!=6); 143 } 144 public static boolean nameIsExist(String name){ 145 for (int i = 0; i <names.length ; i++) { 146 if(name.equals(names[i])){//输入的形参不能为空值,但是数组中的元素可能为空值, 147 // 所以不能拿形参通过equals方法来比较空值,故将空值拿来与形参比较 148 return true; 149 } 150 } 151 return false; 152 } 153 public static int getIndex(String name) { 154 for (int i = 0; i < names.length; i++) { 155 if (name.equals(names[i])) { 156 return i; 157 } 158 } 159 return -1; 160 } 161 public static int getFirstIndex(String name) { 162 for (int i = 0; i < names.length; i++) { 163 if (names[i] == null) {//两个空值比较不能使用equals方法 164 return i; 165 } 166 } 167 return -1; 168 } 169 }
基于Java中数组之前的知识做出的一个功能有限的用户管理系统:
1.查询用户:将系统中保存的全部用户信息在控制台打印输出
2.添加用户:向系统中天际新的用户信息,如果添加的用户已存在,给出提示信息
3.删除用户:输入用户名,进行删除操作,若输入的用户名不存在,给出提示信息
4.账号冻结:输入用户名,进行冻结操作,若输入的用户名不存在或者
该用户已经被冻结,给出相应提示
5.账号解冻:输入用户名,进行解冻操作,若输入的用户名不存在或者该用户状态
正常,给出相应的提示
6.退出系统:跳出循环,给出相应提示
第一步:定义三个数组存储三组数据分别为用户姓名、年龄、状态
注意:必须将这三组数组放在主方法外且声明为static,不然主方法无法访问
自己定义的方法也无法访问
第二步:总的框架,框架中包括①用户查询、②添加用户、③删除用户
、④冻结用户、5解冻用户、⑥退出系统等六个模块。
其中运用do-while();来控制每次都能返回菜单进行重复功能选择操作。
再通过键盘输入数字来进行菜单中的功能操作选择
第三步:完成输入数字通过switch-case函数等价匹配能进入相应操作功能
第四步:进行查询用户功能。
通过for循环以及数组都是存在相同元素的原理也就是下标都一样,个数都一样,
以此来控制循环条件,因为数组中元素相同,故个数也是相对应的
第五步:进行添加用户功能。
先通过自定义名字是否存在(nameIsExist)的方法判断名字是否存在,
如果已经存在name就输出name已存在,请勿重复添加。
之后再判断数组中的元素是否满了,如果满了,name就通过Arrays.copyoF方法
对旧数组进行新创建数组扩容,再将要添加的赋值给最后一个新添加的数组地址。
另外如果数组元素没有满的情况,那么就通过getFirstIndex方法,获得第一次数组
的null的下标,这个方法将返回null值数组下标,再通过手动输入的name对数组
null元素的地址赋值
第六步:进行删除用户功能。
先通过判断数组中的第一个元素是否为空,如果为空的话没那么数组中没有元素
故无法删除
如果数组中有元素,再判断数组中是否存在与输入数组元素相同的元素,如果存在
name就再判断,这个元素的位置,这个时候通过getIndex函数来返回数组下标
,如果这个下标为数组元素长度减去1,name就说明是最后一个元素,那么就将
三个数组最后一个元素值为空,String类型的空位null,int类型的空为0。
如果不是最后一个元素,那么就从删除元素的下标开始,将后一个的元素值赋值
给下标那个,给它覆盖,将后一个元素置为空。
第七步:进行冻结用户功能。
先判断冻结用户是否存在,如果不存在,就输出不存在
如果存在,通过getIndex函数获得与输入姓名相同的数组元素下标index
再判断这个元素是否被冻结过,如果是,那么就输出该用户已被冻结
请勿重复操作,如果没有被冻结,就通过index给该数组元素赋值冻结
第八步:进行解冻用户功能。
先判断解冻用户是否存在,如果不存在,就输出不存在
如果存在,通过getIndex函数获得与输入姓名相同的数组元素下标index
再判断这个元素是否正常状态,如果是,那么就输出该用户状态正常,
请勿重复操作,如果是冻结状态,就通过index给该数组元素赋值正常。
第九步:进行退出系统,将前面的do-while();while()赋值num!=6。
总结:写这个小系统用到了多层嵌套循环以及方法调用,以及数组的一些方法
看起来简单,再直播老师演示一遍后,自己跟着敲一遍后。再实际自己操作一遍
自己还是花费了很长时间,动手能力不强,自己所想以及操作不能切合实际
要多联系,多动手去实现一些代码。再就是能力有限,可能很多功能没有实现,
后面会用所学知识逐步完善。