需求:
在控制台实现简单的学生管理系统。控制台显示如下:
****************************
*Student Manage System*
****************************
* 1) Add
* 2) Delete
* 3) Select
* 4) Update
* 5) Show All
* 0) Quit
***************************
Please choose your choice: 1
input student name: zhangsan
input student age : 18
input student gender: male
Add Student success!
Please choose your choice: 5
Student: [name:zhangsan, age:18, gender:male]
代码实现:
首先我们需要创建一个标准的学生类,一个标准的学生类应该包含变量声明,有参构造方法、无参构造方法、以及get set方法。
public class Student {
private String name;
private int age;
private String gender;
public Student(){}
public Student(String name,int age,String gender){
this.name = name;
this.age = age;
this.gender = gender;
}
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 getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
@Override
public String toString() {
return "Student:[name:"+name+",age:"+age+",gender:"+gender+"]";
}
}
然后定义一个结构类StudentManage.java,把需要实现的功能方法写出来。(增删改查)
public class StudentManage {
private Student[] stus;
private int index = 0;
public StudentManage() {
}
public StudentManage(int size) {
stus = new Student[size];
}
//确认容量
private void ensureCapacity() {
if (index >= stus.length) {//添加更大容量的数组
Student[] stu1 = new Student[stus.length * 2];
//数组的拷贝
/* for (int i=0;i<stus.length;i++){
stu1[i] = stus[i];
}*/
System.arraycopy(stus, 0, stu1, 0, stus.length);//原数组,copy索引开始,目标数组,存放索引开始,存放长度
stus = stu1;
}
}
public boolean add(Student student) {
ensureCapacity();//每次添加前,确认容量是否足够
stus[index++] = student;
return true;
}
private int findPosByName(String name) {
int pos = -1;
for (int i = 0; i < index; i++) {
if (name.equals(stus[i].getName())) {//找到名字匹配的学生
pos = i; //记录当前学生的位置
break;
}
}
return pos;
}
public Student delete(String name) {
if (name == null || "".equals(name)) {
return null;
}
int pos = findPosByName(name);
Student result = null;
/* for (int i = 0; i < index; i++) {
Student student = stus[i];
if (name.equals(student.getName())) {//找到名字匹配的学生
pos = i; //记录当前学生的位置
result = student;
break;
}
}*/
//将找到的学生的位置向前移
if (pos != -1) {
result = stus[pos];
for (int i = pos; i < index - 1; i++) {
stus[i] = stus[i + 1];
}
stus[--index] = null;
}
return result;
}
public Student select(String name){
int pos = findPosByName(name);
if (pos!=-1){
return stus[pos];
}
return null;
}
public void update(Student student){
if (student.getName()==null||"".equals(student.getName())){
System.out.println("请给出学生姓名!");
return ;
}
int pos = findPosByName(student.getName());
if (pos!=-1){
stus[pos] = student;
}
}
public void showAll(){
for (int i=0;i<index;i++){
System.out.println(stus[i]);
}
}
}
最后创建一个测试类TestManager.java用来测试功能的实现
public class TestManager {
public static void main(String[] args) {
StudentManage studentManage = new StudentManage(10);
System.out.println("****************************");
System.out.println("*Student Manage System*");
System.out.println("****************************");
System.out.println("* 1) Add");
System.out.println("* 2) Delete");
System.out.println("* 3) Update");
System.out.println("* 4) Select");
System.out.println("* 5) Show All");
System.out.println("* 0) Quit");
System.out.println("****************************");
while (true) {
System.out.print("Please choose your choice:");
Scanner sc = new Scanner(System.in);//从标准输入读取
String choice = sc.nextLine();
switch (choice) {
case "1":
System.out.println("input student name: ");
String name = sc.nextLine();
System.out.println("input student age :");
String age = sc.nextLine();
System.out.println("input student gender:");
String gender = sc.nextLine();
Student student = new Student(name,Integer.parseInt(age),gender);
studentManage.add(student);
System.out.println("Add Student success!");
break;
case "2":
System.out.println("Please input student name:");
String name2 = sc.nextLine();
Student student1 = studentManage.delete(name2);
System.out.println("删除的学生为:"+student1);
break;
case "3":
System.out.println("input student name: ");
String name3 = sc.nextLine();
System.out.println("input student age :");
String age3 = sc.nextLine();
System.out.println("input student gender:");
String gender3 = sc.nextLine();
Student student3 = new Student(name3,Integer.parseInt(age3),gender3);
studentManage.update(student3);
break;
case "4":
System.out.println("Please input student name:");
String name4 = sc.nextLine();
System.out.println("查找到的学生信息为:"+studentManage.select(name4));
break;
case "5":
studentManage.showAll();
break;
case "6":
System.exit(0);
}
}
}
}