[TOC]
功能概述:
- 每个Student 对象存储一个学生的信息
- 查询功能:
- 修改功能:
- 增删信息:
- 展示全部:
项目结构:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| src └─com └─stu_info_manage ├─controller │ main.java │ UserInput.java │ ├─data │ Add_rm.java │ Change_info.java │ Info_Stroage.java │ Search.java │ Student.java │ └─service Add_rm.java ChangeInfo.java Search.java
|
实现:
首先创建一个Student标准JavaBean,包含各个get,set方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| package com.stu_info_manage.data;
public class Student { public String getName() { return name; }
public void setName(String name) { this.name = name; }
public int getAge() { return age; }
public void setAge(int age) { this.age = age; }
public String getId_num() {
return this.id_num; }
public void setId_num(String id_num) { this.id_num = id_num; }
public String getClass_info() { return class_info; }
public void setClass_info(String class_info) { this.class_info = class_info; }
private String name; private int age; private String id_num; private String class_info;
}
|
然后,根据标准Java管理系统结构,分出3个package:
- 表层:controller
- 服务层:service
- 数据层:dao(我写的data)
表层中,使用Userinputt类处理用户的输入输出:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207
| package com.stu_info_manage.controller; import com.stu_info_manage.data.Student; import com.stu_info_manage.service.Search;
import java.util.ArrayList; import java.util.Scanner;
public class UserInput {
public void print_init_info(){ while(true){ System.out.println("Welcome,输入你的操作"); System.out.println("1:查询\n2.修改\n3.添加\\删除\n4.列出所有"); Scanner init_sc = new Scanner(System.in); int init_choice = init_sc.nextInt();
if (init_choice ==1) { choice1_init();
} else if (init_choice == 2) {
choice2_init();
} else if (init_choice == 3) {
add_rm_stu_init(); } else if (init_choice == 4) {
show_all();
} else{ System.out.println("请重新输入"); } }
}
public void choice1_init(){
stu = new Student(); System.out.println("你想通过什么查询?,输入\n1.姓名\n2.学号"); Scanner choice1_sc = new Scanner(System.in); int choice1_choice = choice1_sc.nextInt(); if(choice1_choice == 1) { System.out.println("你选择从姓名查询"); garbage_char = choice1_sc.nextLine(); name = choice1_sc.nextLine(); stu_list = new ArrayList<>(); stu_list = Search.search_form_name(name); } if(choice1_choice == 2) { System.out.println("你选择从学号查询"); garbage_char = choice1_sc.nextLine(); id_num = choice1_sc.nextLine(); stu_list = new ArrayList<>(); stu_list = Search.search_form_id_num(id_num); } System.out.println("你的查询结果:"); for (int i = 0; i < stu_list.size(); i++) { stu = stu_list.get(i); System.out.println("name:"+stu.getName()+" id:"+stu.getId_num()+" age:"+stu.getAge()+" class:"+stu.getClass_info()); }
}
public void choice2_init(){ System.out.println("输入你想修改的人的学号"); Scanner choice2_sc = new Scanner(System.in); id_num = choice2_sc.nextLine(); System.out.println("你选择了学号为:"+id_num+" 的人"); System.out.println("请输入你想修改的信息:\n 1.姓名 \n 2.学号 \n 3.年龄 \n 4.班级"); int choice = choice2_sc.nextInt(); if(choice == 1){ System.out.println("你要将姓名改成什么:"); String trash = choice2_sc.nextLine(); String rename = choice2_sc.nextLine(); System.out.println("你想将姓名修改为 "+rename);
com.stu_info_manage.service.ChangeInfo changeInfo = new com.stu_info_manage.service.ChangeInfo();
boolean renamed = changeInfo.Rename(rename,id_num); if(renamed){ System.out.println("success!");
}else { System.out.println("error!"); }
} else if (choice == 2) { System.out.println("你想将学号改成什么?"); String trash = choice2_sc.nextLine(); String re_id_num = choice2_sc.nextLine(); System.out.println("你想将学号改成:"+re_id_num);
com.stu_info_manage.service.ChangeInfo changeInfo = new com.stu_info_manage.service.ChangeInfo(); System.out.println("before: "+id_num+" after: "+re_id_num); boolean re_id_numed = changeInfo.Re_id_num(id_num,re_id_num); if(re_id_numed){ System.out.println("success!");
}else { System.out.println("error!"); }
} else if (choice == 3) { System.out.println("你想将年龄改成什么?"); String trash = choice2_sc.nextLine(); int reage = choice2_sc.nextInt(); System.out.println("你想将年龄改为"+reage); com.stu_info_manage.service.ChangeInfo changeInfo = new com.stu_info_manage.service.ChangeInfo(); boolean reaged = changeInfo.Reage(reage,id_num); if(reaged){ System.out.println("success!");
}else { System.out.println("error!"); }
} else if (choice == 4) { System.out.println("你想将班级改成什么?"); String trash = choice2_sc.nextLine(); String reclass= choice2_sc.nextLine(); System.out.println("你想将班级改为"+reclass); com.stu_info_manage.service.ChangeInfo changeInfo = new com.stu_info_manage.service.ChangeInfo(); boolean reclassed = changeInfo.Reclass(reclass,id_num); if(reclassed){ System.out.println("success!");
}else { System.out.println("error!"); } }else {
} } public void add_rm_stu_init(){ System.out.println("加成员按1,减成员按2"); Scanner choice3_sc = new Scanner(System.in); int add_or_rm = choice3_sc.nextInt(); if(add_or_rm==1){ System.out.println("输入姓名"); String trush = choice3_sc.nextLine(); String add_name = choice3_sc.nextLine(); System.out.println("输入学号"); String add_id = choice3_sc.nextLine(); System.out.println("输入年龄"); int add_age = choice3_sc.nextInt(); System.out.println("输入班级"); trush = choice3_sc.nextLine(); String add_class = choice3_sc.nextLine(); System.out.println("你想添加:"+add_name+" "+add_id+" "+add_age+" "+add_class); com.stu_info_manage.service.Add_rm add_rm = new com.stu_info_manage.service.Add_rm(); boolean added = add_rm.add_item(add_name,add_id,add_age,add_class); if(added){ System.out.println("success!"); }else { System.out.println("error!"); }
} else if (add_or_rm==2) { System.out.println("输入你要删除的学号"); String trush = choice3_sc.nextLine(); String rm_id = choice3_sc.nextLine(); System.out.println("你想删除:"+rm_id); com.stu_info_manage.service.Add_rm add_rm = new com.stu_info_manage.service.Add_rm(); boolean rmed = add_rm.rm_item(rm_id); if(rmed){ System.out.println("success!"); }else { System.out.println("error!"); }
}
} public void show_all() { com.stu_info_manage.data.Info_Stroage.show_all(); }
private String name; private int age; private String id_num; private Student stu; private String garbage_char; private ArrayList<Student> stu_list; }
|
服务层中,分出 增删条目 / 修改信息 / 查找条目 三块,因为这个小系统服务层不用处理什么东西,所以基本是一个转接头的作用,不过还是写出来了框架:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| package com.stu_info_manage.service;
public class Add_rm { public boolean add_item(String add_name,String add_id_num,int add_age,String add_class) { boolean added = false; if(add_age>30) { added = false; }else { com.stu_info_manage.data.Add_rm add_rm = new com.stu_info_manage.data.Add_rm(); added = add_rm.add_item(add_name,add_id_num,add_age,add_class); } return added;
}
public boolean rm_item(String rm_id_num){ boolean rmed = false; com.stu_info_manage.data.Add_rm add_rm = new com.stu_info_manage.data.Add_rm(); rmed = add_rm.rm_item(rm_id_num);
return rmed; }
}
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
| package com.stu_info_manage.service;
public class ChangeInfo { public boolean Rename(String rename,String id_num) { this.rename = rename; this.id_num = id_num; com.stu_info_manage.data.Change_info change_info = new com.stu_info_manage.data.Change_info(); boolean renamed = change_info.Rename(this.id_num,this.rename);
return renamed;
}
public boolean Re_id_num(String id_num,String id_num_aft) { this.id_num = id_num; this.id_num_aft = id_num_aft; com.stu_info_manage.data.Change_info change_info = new com.stu_info_manage.data.Change_info(); boolean re_id_numed = change_info.Re_id_numed(this.id_num,this.id_num_aft);
return re_id_numed;
} public boolean Reage(int reage,String id_num) { this.reage = reage; this.id_num = id_num; com.stu_info_manage.data.Change_info change_info = new com.stu_info_manage.data.Change_info(); boolean reaged = change_info.Reage(this.id_num,this.reage);
return reaged;
} public boolean Reclass(String reclass,String id_num) { this.reclass = reclass; this.id_num = id_num; com.stu_info_manage.data.Change_info change_info = new com.stu_info_manage.data.Change_info(); boolean reclassed = change_info.Reclass(this.id_num,this.reclass);
return reclassed;
}
private String rename; private String reclass; private int reage; private String id_num; private String id_num_aft;
}
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| package com.stu_info_manage.service; import com.stu_info_manage.data.Student;
import java.util.ArrayList;
public class Search { public static ArrayList<Student> search_form_name(String name) { Search sh = new Search(); sh.name = name; com.stu_info_manage.data.Search sh_data = new com.stu_info_manage.data.Search(); sh.stu_list = new ArrayList<>(); sh.stu_list = sh_data.search_form_name(sh.name);
return sh.stu_list;
} public static ArrayList<Student> search_form_id_num(String id_num) { Search sh = new Search(); sh.id_num = id_num; com.stu_info_manage.data.Search sh_data = new com.stu_info_manage.data.Search(); sh.stu_list = new ArrayList<>(); sh.stu_list = sh_data.search_form_id_num(sh.id_num);
return sh.stu_list;
} private String name; private String id_num ; private int age; static private Student stu; private ArrayList<Student> stu_list; }
|
数据层同样分出三层,也相当于转接头,不予列出
最终数据处理在Info_stroage类中:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182
| package com.stu_info_manage.data; import java.util.ArrayList; import java.util.Arrays;
public class Info_Stroage { public static void init_example() { stu_null = new Student(); stu_null .setName("null"); stu_null.setAge(000); stu_null.setId_num("000");
students = new Student[100]; for (int i = 0; i < students.length; i++) { students[i] = new Student(); } students[0].setName("ctx"); students[0].setAge(20); students[0].setId_num("2023211949"); students[0].setClass_info("23dx0211");
students[2].setName("ctx"); students[2].setAge(21); students[2].setId_num("2023211950"); students[2].setClass_info("23dx0211");
students[1].setName("zwc"); students[1].setAge(20); students[1].setId_num("2023211940"); students[1].setClass_info("23dx0210");
stu_num = 3; }
public static ArrayList<Student> getStudents_name(String name) { stu_list = new ArrayList<>(); int stu_num = 0; for (int i = 0; i < students.length; i++) {
if (students[i].getName()!=null&&students[i].getName().equals(name)) { System.out.println("find the studrent:"+i); stu_list.add(students[i]); stu_num ++ ; }
}
if(stu_num==0){ System.out.println("stu_name_is_null"); stu_list.add(stu_null); }
return stu_list; }
public static ArrayList<Student> getStudents_id_num(String id_num) { stu_list = new ArrayList<>(); int stu_num = 0; for (int i = 0; i < students.length; i++) {
if (students[i].getId_num()!=null && students[i].getId_num().equals(id_num)) { System.out.println("find the studrent:"+i); stu_list.add(students[i]); stu_num++; }
} if(stu_num == 0) { System.out.println("the student is null"); stu_list.add(stu_null); }
return stu_list; }
public static boolean Rename(String id_num,String rename) { boolean renamed = false; for (int i = 0; i < students.length; i++) { if(students[i].getId_num()!=null&&students[i].getId_num().equals(id_num)) { students[i].setName(rename); renamed = true;
}
} return renamed; } public static boolean Re_id_num(String id_num_pre,String id_num_aft) { boolean re_id_numed = false; for (int i = 0; i < students.length; i++) { if(students[i].getId_num()!=null&&students[i].getId_num().equals(id_num_pre)) { System.out.println("find_stu"+i); students[i].setId_num(id_num_aft); re_id_numed = true;
}
} System.out.println(re_id_numed); return re_id_numed; } public static boolean Reage(String id_num,int reage) { boolean reaged = false; for (int i = 0; i < students.length; i++) { if(students[i].getId_num()!=null&&students[i].getId_num().equals(id_num)) { students[i].setAge(reage); reaged = true;
}
} return reaged; } public static boolean Reclass(String id_num,String reclass) { boolean reclassed = false; for (int i = 0; i < students.length; i++) { if(students[i].getId_num()!=null&&students[i].getId_num().equals(id_num)) { students[i].setClass_info(reclass); reclassed = true;
}
} return reclassed; }
public static boolean add_item(String add_name,String add_id_num,int add_age,String add_class) { boolean added = false; students[stu_num].setName(add_name); students[stu_num].setId_num(add_id_num); students[stu_num].setAge(add_age); students[stu_num].setClass_info(add_class); stu_num++; added = true; return added; }
public static boolean rm_item(String rm_id_num){ boolean rmed = false; int loc = 0; for (int i = 0; i < students.length; i++) { if(students[i].getId_num().equals(rm_id_num)) { loc = i; break; }
} for (int i = loc; i < stu_num; i++) { students[i] = students[i+1]; }
stu_num--; rmed = true; return rmed; }
public static void show_all() { System.out.println("total: "+stu_num); for (int i = 0; i < stu_num; i++) { System.out.println("name: "+students[i].getName()+" age: "+students[i].getAge()+" id: "+students[i].getId_num()+" class: "+students[i].getClass_info()); } } private static Student[] students; private static Student stu_null; private static ArrayList<Student> stu_list; private static int stu_num;
}
|
开发记录
1.ArrayList 的使用
在存储对象的时候,一开始想把对象存储在数组中,也就是对象数组,当然最后也是这么存的,但在查找类的构建过程中,意识到可能存在重名情况,因此不能固定返回一个Student对象,而应该返回一个数组
然而,数组的长度是不确定的,所以引入ArrayList可变长数组来进行对象的动态数目存储
1 2 3 4 5 6 7 8 9 10 11
| ArrayList<Student> stu_list = new ArrayList();
stu_list.add(stu_example);
public ArrayList<stduent> method() { }
|