基于数组之前的基础实现的小型用户管理系统

  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。
总结:写这个小系统用到了多层嵌套循环以及方法调用,以及数组的一些方法
看起来简单,再直播老师演示一遍后,自己跟着敲一遍后。再实际自己操作一遍
自己还是花费了很长时间,动手能力不强,自己所想以及操作不能切合实际
要多联系,多动手去实现一些代码。再就是能力有限,可能很多功能没有实现,
后面会用所学知识逐步完善。

 

posted @ 2021-06-21 21:46  求知律己  阅读(65)  评论(0编辑  收藏  举报