项目演示

  • 添加学生
  • 删除学生
  • 修改学生
  • 查看所有学生
  • 退出

实现思路

  1. 定义学生类
  2. 主界面代码编写
  3. 添加学生的代码编写
  4. 查看学生的代码编写
  5. 删除学生的代码编写
  6. 修改学生的代码编写

定义学生类

学生类:

  • Student

成员变量:

  • 学号:sid

  • 姓名:name

  • 年龄:age

  • 居住地:address

构造方法:

  • 无参构造

  • 带四个参数的构造

成员方法:

  • 每个成员变量对应给出的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
46
47
48
49
50
51
52
53
54
55
56
57
/*
学生类
*/
public class Student {
//学号
private String sid;
//姓名
private String name;
//年龄
private String age;
//地址
private String address;

//无参构造方法
public Student() {
}

//带参构造方法
public Student(String sid, String name, String age, String address) {
this.sid = sid;
this.name = name;
this.age = age;
this.address = address;
}

public String getSid() {
return sid;
}

public void setSid(String sid) {
this.sid = sid;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getAge() {
return age;
}

public void setAge(String age) {
this.age = age;
}

public String getAddress() {
return address;
}

public void setAddress(String address) {
this.address = address;
}
}

主界面的代码编写

思路:

  1. 用输出语句完成主界面的编写

  2. 用Scanner实现键盘录入数据

  3. 用switch语句完成操作的选择

  4. 用循环完成再次回到主界面

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
public static void main(String[] args) {
//创建集合对象
ArrayList<Student> array = new ArrayList<Student>();

//用循环完成再次回到主界面
while (true) {
//用输出语句完成主界面的编写
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("请输入你的选择");

//用Scanner实现键盘录入数据
Scanner sc = new Scanner(System.in);
String line = sc.nextLine();

//用switch语句完成操作的选择
switch (line) {
//调用方法
case "1":
// System.out.println("添加学生");
addStudent(array);
break;
case "2":
// System.out.println("删除学生");
deleteStudent(array);
break;
case "3":
// System.out.println("修改学生");
updateStudent(array);
break;
case "4":
// System.out.println("查看所有学生");
findAllStudent(array);
break;
case "5":
System.out.println("谢谢使用");
// break;
System.exit(0); //JVM退出
}
}
}

添加学生的代码编写

思路:

  1. 键盘录入选择添加学生

  2. 定义一个方法,用于添加学生

    1. 显示提示信息,提示要输入何种信息
    2. 键盘录入学生对象所需要的数据
    3. 创建学生对象,把键盘录入的数据赋值给学生对象的成员变量
    4. 将学生对象添加到集合中(保存)
    5. 给出添加成功提示
  3. 调用方法

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
public static void addStudent(ArrayList<Student> array) {
//键盘录入学生对象所需要的数据,提示要输入何种信息
Scanner sc = new Scanner(System.in);

//为了让sid在while循环外面被访问到,我们就把他定义在循环外
String sid;

//为了能让程序能够回到这里,我们使用循环实现
while(true) {
System.out.println("请输入学生学号");
sid = sc.nextLine();

boolean flag = isUsed(array, sid);
if (flag) {
System.out.println("你输入的学号已经被使用,请重新输入");
}else{
break;
}
}
System.out.println("请输入学生姓名");
String name = sc.nextLine();
System.out.println("请输入学生年龄");
String age = sc.nextLine();
System.out.println("请输入学生居住地");
String address = sc.nextLine();

//创建学生对象,把键盘录入的数据赋值给学生对象的成员变量
Student s = new Student();
s.setSid(sid);
s.setName(name);
s.setAge(age);
s.setAddress(address);

//将学生对象添加到集合中(保存)
array.add(s);

//给出添加成功提示
System.out.println("添加学生成功");

}

查看学生的代码编写

思路:

  1. 用键盘录入选择查看所有学生信息

  2. 定义一个方法,用于查看学生信息

    1. 判断集合中是否有数据,如果没有显示提示信息
    2. 显示表头信息
    3. 将集合中数据取出按照对应格式显示学生信息
  3. 调用方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public static void findAllStudent(ArrayList<Student> array) {
//判断集合中是否有数据,如果没有显示提示信息
if (array.size() == 0) {
System.out.println("无信息,请先添加信息再查询");
//为了让程序不在往下执行,给出return;
return;
}
//显示表头信息
// \t是tab建
System.out.println("学号\t\t姓名\t\t年龄\t\t居住地");

//将集合中数据去除按照对应格式显示学生信息,年龄显示补充“岁”
for (int i = 0; i < array.size(); i++) {
Student s = array.get(i);
System.out.println(s.getSid() + "\t" + s.getName() + "\t" + s.getAge() + "\t" + s.getAddress());
}
}

删除学生的代码编写

思路:

  1. 用键盘录入选择删除学生信息

  2. 定义一个方法,用于删除学生信息

    1. 显示提示信息
    2. 键盘录入要删除的学生学号
    3. 遍历集合将对应学生对象从集合中删除
    4. 给出删除成功提示
  3. 调用方法

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
public static void deleteStudent(ArrayList<Student> array) {
//键盘录入要删除的学生学号,显示提示信息
Scanner sc = new Scanner(System.in);

System.out.println("请输入你要删除的学生的学号");
String sid = sc.nextLine();

//遍历集合将对应的学生对象从集合中删除

int index = -1;
for (int i = 0; i < array.size(); i++) {
Student s = array.get(i);
if (s.getSid().equals(sid)) {
index = i;
break;
}
}
if (index == -1) {
System.out.println("该信息不存在,请重新输入");
} else {
array.remove(index);
//给出删除成功提示
System.out.println("删除学生成功");
}
}

修改学生的代码编写

思路:

  1. 用键盘录入选择修改学生的信息

  2. 定义一个方法,用于修改学生信息

    1. 显示提示信息
    2. 键盘录入要修改的学生学号
    3. 键盘录入要修改的学生信息
    4. 遍历集合修改对应的学生信息
    5. 给出修改成功提示
  3. 调用方法

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
public static void updateStudent(ArrayList<Student> array) {
//键盘录入要修改的学生学号,显示提示信息
Scanner sc = new Scanner(System.in);

System.out.println("请输入你要修改的学生的学号:");
String sid = sc.nextLine();

int index = -1;
for (int i = 0; i < array.size(); i++) {
Student student = array.get(i);
if (student.getSid().equals(sid)) {

index = i;
break;
}
}
if (index == -1) {
System.out.println("该信息不存在,请重新输入");
} else {

//键盘录入要修改的学生信息
System.out.println("请输入学生的新姓名");
String name = sc.nextLine();
System.out.println("请输入学生的新年龄");
String age = sc.nextLine();
System.out.println("请输入学生的新居住地");
String adress = sc.nextLine();

//创建学生对象
Student s = new Student();
s.setSid(sid);
s.setName(name);
s.setAge(age);
s.setAddress(adress);

//遍历集合修改对应的学生信息


if (index == -1) {
System.out.println("该信息不存在,请重新输入");
} else {
array.set(index, s);
//给出修改成功提示
System.out.println("修改学生成功");
}
}
}

解决删除/修改学生学号不存在问题

思路:

  1. 在删除/修改学生操作前,对学号是否存在进行判断

    1. 如果不存在,显示提示信息
    2. 如果存在,执行删除/修改操作
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int index = -1;
for (int i = 0; i < array.size(); i++) {
Student s = array.get(i);
if (s.getSid().equals(sid)) {
index = i;
break;
}
}
if (index == -1) {
System.out.println("该信息不存在,请重新输入");
} else {
array.remove(index);
//给出删除成功提示
System.out.println("删除学生成功");
}
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
int index = -1;
for (int i = 0; i < array.size(); i++) {
Student student = array.get(i);
if (student.getSid().equals(sid)) {

index = i;
break;
}
}
if (index == -1) {
System.out.println("该信息不存在,请重新输入");
} else {
//键盘录入要修改的学生信息
System.out.println("请输入学生的新姓名");
String name = sc.nextLine();
System.out.println("请输入学生的新年龄");
String age = sc.nextLine();
System.out.println("请输入学生的新居住地");
String adress = sc.nextLine();

//创建学生对象
Student s = new Student();
s.setSid(sid);
s.setName(name);
s.setAge(age);
s.setAddress(adress);

//遍历集合修改对应的学生信息


if (index == -1) {
System.out.println("该信息不存在,请重新输入");
} else {
array.set(index, s);
//给出修改成功提示
System.out.println("修改学生成功");
}
}

解决添加学号重复问题

思路:

  1. 定义一个方法,对学号是否被使用进行判断

    1. 如果与集合中的某一个学生学号相同,返回true
    2. 如果都不相同,返回false
  2. 在添加学生录入学号后调用该方法

    1. 如果返回true,弹出提示,重新输入学号
    2. 如果返回false,正常添加学生对象
1
2
3
4
5
6
7
8
9
10
11
12
13
public static boolean isUsed(ArrayList<Student> array,String sid){
//如果与集合中的某一个学生号相同,返回true;如果都不相同,返回false
boolean flag = false;

for (int i=0;i< array.size();i++){
Student s = array.get(i);
if (s.getSid().equals(sid)){
flag = true;
break;
}
}
return flag;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//为了让sid在while循环外面被访问到,我们就把他定义在循环外
String sid;

//为了能让程序能够回到这里,我们使用循环实现
while(true) {
System.out.println("请输入学生学号");
sid = sc.nextLine();

boolean flag = isUsed(array, sid);
if (flag) {
System.out.println("你输入的学号已经被使用,请重新输入");
}else{
break;
}
}
System.out.println("请输入学生姓名");

项目代码

学生类
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
/*
学生类
*/
public class Student {
//学号
private String sid;
//姓名
private String name;
//年龄
private String age;
//地址
private String address;

//无参构造方法
public Student() {
}

//带参构造方法
public Student(String sid, String name, String age, String address) {
this.sid = sid;
this.name = name;
this.age = age;
this.address = address;
}

public String getSid() {
return sid;
}

public void setSid(String sid) {
this.sid = sid;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getAge() {
return age;
}

public void setAge(String age) {
this.age = age;
}

public String getAddress() {
return address;
}

public void setAddress(String address) {
this.address = address;
}
}
测试类
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
import java.util.ArrayList;
import java.util.Scanner;

/*
学生管理系统
*/
public class StudentDemo {

public static void main(String[] args) {
//创建集合对象
ArrayList<Student> array = new ArrayList<Student>();

//用循环完成再次回到主界面
while (true) {
//用输出语句完成主界面的编写
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("请输入你的选择");

//用Scanner实现键盘录入数据
Scanner sc = new Scanner(System.in);
String line = sc.nextLine();

//用switch语句完成操作的选择
switch (line) {
//调用方法
case "1":
// System.out.println("添加学生");
addStudent(array);
break;
case "2":
// System.out.println("删除学生");
deleteStudent(array);
break;
case "3":
// System.out.println("修改学生");
updateStudent(array);
break;
case "4":
// System.out.println("查看所有学生");
findAllStudent(array);
break;
case "5":
System.out.println("谢谢使用");
// break;
System.exit(0); //JVM退出
}
}
}

//定义一个方法,用于添加学生
public static void addStudent(ArrayList<Student> array) {
//键盘录入学生对象所需要的数据,提示要输入何种信息
Scanner sc = new Scanner(System.in);

//为了让sid在while循环外面被访问到,我们就把他定义在循环外
String sid;

//为了能让程序能够回到这里,我们使用循环实现
while(true) {
System.out.println("请输入学生学号");
sid = sc.nextLine();

boolean flag = isUsed(array, sid);
if (flag) {
System.out.println("你输入的学号已经被使用,请重新输入");
}else{
break;
}
}
System.out.println("请输入学生姓名");
String name = sc.nextLine();
System.out.println("请输入学生年龄");
String age = sc.nextLine();
System.out.println("请输入学生居住地");
String address = sc.nextLine();

//创建学生对象,把键盘录入的数据赋值给学生对象的成员变量
Student s = new Student();
s.setSid(sid);
s.setName(name);
s.setAge(age);
s.setAddress(address);

//将学生对象添加到集合中(保存)
array.add(s);

//给出添加成功提示
System.out.println("添加学生成功");

}

//定义一个方法,用于查看所有学生
public static void findAllStudent(ArrayList<Student> array) {
//判断集合中是否有数据,如果没有显示提示信息
if (array.size() == 0) {
System.out.println("无信息,请先添加信息再查询");
//为了让程序不在往下执行,给出return;
return;
}
//显示表头信息
// \t是tab建
System.out.println("学号\t\t姓名\t\t年龄\t\t居住地");

//将集合中数据去除按照对应格式显示学生信息,年龄显示补充“岁”
for (int i = 0; i < array.size(); i++) {
Student s = array.get(i);
System.out.println(s.getSid() + "\t" + s.getName() + "\t" + s.getAge() + "\t" + s.getAddress());
}
}

//定义一个方法,用于删除学生
public static void deleteStudent(ArrayList<Student> array) {
//键盘录入要删除的学生学号,显示提示信息
Scanner sc = new Scanner(System.in);

System.out.println("请输入你要删除的学生的学号");
String sid = sc.nextLine();

//遍历集合将对应的学生对象从集合中删除

int index = -1;
for (int i = 0; i < array.size(); i++) {
Student s = array.get(i);
if (s.getSid().equals(sid)) {
index = i;
break;
}
}
if (index == -1) {
System.out.println("该信息不存在,请重新输入");
} else {
array.remove(index);
//给出删除成功提示
System.out.println("删除学生成功");
}
}

//定义一个方法,用于修改学生
public static void updateStudent(ArrayList<Student> array) {
//键盘录入要修改的学生学号,显示提示信息
Scanner sc = new Scanner(System.in);

System.out.println("请输入你要修改的学生的学号:");
String sid = sc.nextLine();

int index = -1;
for (int i = 0; i < array.size(); i++) {
Student student = array.get(i);
if (student.getSid().equals(sid)) {

index = i;
break;
}
}
if (index == -1) {
System.out.println("该信息不存在,请重新输入");
} else {

//键盘录入要修改的学生信息
System.out.println("请输入学生的新姓名");
String name = sc.nextLine();
System.out.println("请输入学生的新年龄");
String age = sc.nextLine();
System.out.println("请输入学生的新居住地");
String adress = sc.nextLine();

//创建学生对象
Student s = new Student();
s.setSid(sid);
s.setName(name);
s.setAge(age);
s.setAddress(adress);

//遍历集合修改对应的学生信息


if (index == -1) {
System.out.println("该信息不存在,请重新输入");
} else {
array.set(index, s);
//给出修改成功提示
System.out.println("修改学生成功");
}
}
}

//定义一个方法,判断学号是否被使用
public static boolean isUsed(ArrayList<Student> array,String sid){
//如果与集合中的某一个学生号相同,返回true;如果都不相同,返回false
boolean flag = false;

for (int i=0;i< array.size();i++){
Student s = array.get(i);
if (s.getSid().equals(sid)){
flag = true;
break;
}
}
return flag;
}
}