ArrayLIst与学生管理系统
1 ArrayList类
1 概述
该类提供一种存储空间可变的存储模型,存储的数据容量可以发生变化。
我们可以用来做什么呢? 存储长度不定的数组。
- 格式:ArrayList< E >
- 可调整大小的数组实现
- < E > 是一种特殊的数据类型,泛型。
- 示例
import java.util.ArrayList;
public class test {
public static void main(String[] args) {
ArrayList list = new ArrayList();
//add 添加元素
list.add("java");
list.add(123);
list.add(false);
//返回此列表的元素数
System.out.println(list.size());
//移除元素
list.remove(2);
//修改元素,替换指定位置元素
list.set(0,"Java");
//返回列表中指定位置的元素
System.out.println(list.get(0));
//判断是否有某一指定元素
System.out.println(list.contains(123));
//遍历数组
System.out.println("----------------");
for(int i = 0 ; i < list.size() ; i++){
System.out.println(list.get(i));
}
}
}
3
Java
true
----------------
Java
123
2 存储字符串并遍历
需求:创建一个存储字符串的集合,存储3个字符串元素,使用程序实现在控制台遍历该集合
实现:
import java.util.ArrayList;
public class test {
public static void main(String[] args) {
//需求:创建一个存储字符串的集合,存储3个字符串元素
//使用程序实现在控制台遍历该集合
ArrayList<String>strList = new ArrayList<>();
//添加元素
strList.add("java");
strList.add("HTP");
strList.add("Spring");
//遍历
for(int i = 0 ; i < strList.size() ; i++){
System.out.println(strList.get(i));
}
System.out.println("--------------------");
//for增强遍历
for(String str : strList){
System.out.println(str);
}
}
}
运行结果:
java
HTP
Spring
--------------------
java
HTP
Spring
3 存储学生对象并遍历
需求:创建一个存储学生对象的集合,存储3个学生对象,使用程序实现在控制台遍历该集合
实现(方法1 数组):
//代码1
public class Student{
//存储学生对象并遍历
//需求:创建一个存储学生对象的集合,存储3个学生对象,使用程序实现在控制台遍历该集合
private String id;
private String name;
private int age;
public Student(String name, int age) {
this.name = name;
this.age = age;
}
public Student(String id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
public Student() {
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
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 void show(){
System.out.println(this.getId() + " " + this.getName() + " " + this.getAge());
}
}
//代码2
public class StudentTest {
public static void main(String[] args) {
//创建自定义类型的数组
Student[] stuArr = new Student[3];
stuArr[0] = new Student("001","小明",18);
Student stu = new Student();
stu.setId("002");
stu.setName("小红");
stu.setAge(16);
stuArr[1] = stu;
stuArr[2] = new Student("003","小王",19);
//遍历数组
for(Student student : stuArr){
student.show();
}
}
}
运行结果:
001 小明 25
002 小黑 26
-----------
001 小明 25
002 小黑 26
实现(方法2 ArrayList):
import java.util.ArrayList;
public class ArrayListStudent {
public static void main(String[] args) {
//创建一个容器
ArrayList<Student>list = new ArrayList<>();
list.add(new Student("001","小明",25));
Student student = new Student("002","小黑",26);
list.add(student);
for(int i = 0 ; i < list.size() ; i++){
list.get(i).show();
}
System.out.println("-----------");
for(Student stu : list){
stu.show();
}
}
}
运行结果:
001 小明 25
002 小黑 26
-----------
001 小明 25
002 小黑 26
Process finished with exit code 0
4 存储学生对象并遍历升级版
需求:创建一个存储学生对象的集合,存储3个学生对象,使用程序实现在控制台遍历该集合,学生的姓名和年龄来自于键盘录入
思路:
- 定义学生类,为了键盘录入数据方便,把学生类中的成员变量都定义为String类型
- 创建集合对象
- 键盘录入学生对象所需要的数据
- 创建学生对象,把键盘录入的数据赋值给学生对象的成员变量
- 往集合中添加学生对象
- 遍历集合,采用通用遍历格式实现
实现:
import java.util.ArrayList;
import java.util.Scanner;
public class StudentTest {
public static void main(String[] args) {
//创建自定义类型的数组
/*需求:创建一个存储学生对象的集合,存储3个学生对象,使用程序实现在控制台遍历该集合,学生的姓名和年龄来自于键盘录入
思路:
1. 定义学生类,为了键盘录入数据方便,把学生类中的成员变量都定义为String类型
2. 创建集合对象
3. 键盘录入学生对象所需要的数据
4. 创建学生对象,把键盘录入的数据赋值给学生对象的成员变量
5. 往集合中添加学生对象
6. 遍历集合,采用通用遍历格式实现*/
Student[] stuArr = new Student[3];
ArrayList<Student>list = new ArrayList<>();
Scanner sc = new Scanner(System.in);
//输入学生对象
for(int i = 0 ; i < 3 ; i++){
Student student = new Student();
System.out.println("输入学号:");
student.setId(sc.nextLine());
System.out.println("输入姓名: ");
student.setName(sc.nextLine());;
System.out.println("输入年龄: ");
student.setAge(sc.nextLine());
list.add(student);
}
for(Student student : list){
student.show();
}
}
}
运行结果:
输入学号:
001
输入姓名:
小明
输入年龄:
7
输入学号:
002
输入姓名:
小红
输入年龄:
8
输入学号:
003
输入姓名:
小黑
输入年龄:
8
001 小明 7
002 小红 8
003 小黑 8
2 学生管理系统
项目需求:
针对目前我们的所学内容,完成一个综合案例:学生管理系统!该系统主要功能如下:
- 添加学生:通过键盘录入学生信息,添加到集合中
- 删除学生:通过键盘录入要删除学生的学号,将该学生对象从集合中删除
- 修改学生:通过键盘录入要修改学生的学号,将该学生对象其他信息进行修改
- 查看学生:将集合中的学生对象信息进行展示
- 退出系统:结束程序
实现:
public class Student{
//存储学生对象并遍历
//需求:创建一个存储学生对象的集合,存储3个学生对象,使用程序实现在控制台遍历该集合
private String id;
private String name;
private String age;
private String live;
public Student(){
}
public Student(String id, String name, String age, String live) {
this.id = id;
this.name = name;
this.age = age;
this.live = live;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
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 getLive() {
return live;
}
public void setLive(String live) {
this.live = live;
}
public void show(){
System.out.println(this.getId() + " " + this.getName() + " " + this.getAge() + " " + this.getLive());
}
}
import java.util.ArrayList;
import java.util.Scanner;
public class StudentTest {
private static ArrayList<Student>list = new ArrayList<>();
//private static ArrayList<String> array = new ArrayList<String>();
public static void main(String[] args) {
/*针对目前我们的所学内容,完成一个综合案例:学生管理系统!该系统主要功能如下:
添加学生:通过键盘录入学生信息,添加到集合中
删除学生:通过键盘录入要删除学生的学号,将该学生对象从集合中删除
修改学生:通过键盘录入要修改学生的学号,将该学生对象其他信息进行修改
查看学生:将集合中的学生对象信息进行展示
退出系统:结束程序*/
systemUI();
}
public static void systemUI(){
while(true) {
//直到输入5才结束程序
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 sc = new Scanner(System.in);
int a = sc.nextInt();
if (a == 1) {
addStudent();
} else if (a == 2) {
deliteStudent();
} else if (a == 3) {
updateStudent();
} else if (a == 4) {
seeStudent();
} else if (a == 5) {
exitStudent();
}else{
System.out.println("输入有误,请重新输入");
}
}
}
public static void addStudent() {
Scanner sc = new Scanner(System.in);
String id;
Student student = new Student(); //注意位置
while(true){
System.out.println("请输入学号:");
id = sc.nextLine();
boolean flag = isUser(list,id);
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 stu = new Student();
student.setId(id);
student.setName(name);
student.setAge(age);
student.setLive(address);
list.add(student);
System.out.println("添加学生成功");
}
//方法:判断学号是否重复
public static boolean isUser(ArrayList<Student> list,String id){
boolean flag = false;
for(int i=0; i < list.size(); i++) {
Student s = list.get(i);
if(s.getId().equals(id)) {
flag = true;
break;
}
}
return flag;
}
public static void deliteStudent(){
Scanner sc = new Scanner(System.in);
System.out.println("输入要删除的学生ID:");
String id = sc.nextLine();
for(int i=0; i < list.size(); i++) {
Student s = list.get(i);
if(s.getId().equals(id)) {
list.remove(i);
System.out.println("删除成功");
break;
}else{
System.out.println("学号输入有误,请重新输入");
}
}
}
public static void updateStudent(){
Scanner sc = new Scanner(System.in);
System.out.println("输入要修改学生的ID");
String id = sc.nextLine();
int term = -1;
for(int i = 0;i < list.size() ; i++){
Student s = list.get(i);
if(s.getId().equals(id)){
term = i;
break;
}
}
if(term == -1){
System.out.println("输入的学号不存在,请重新输入");
}else{
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.setId(id);
s.setName(name);
s.setAge(age);
s.setLive(address);
//遍历集合修改对应的学生信息
for (int i = 0; i < list.size(); i++) {
Student student = list.get(i);
if (student.getId().equals(id)) {
list.set(i , s);
}
}
//给出修改成功提示
System.out.println("修改学生信息成功");
}
}
public static void seeStudent(){
for(Student stu : list){
stu.show();
}
}
public static void exitStudent(){
System.exit(0);
}
}
运行结果:
------欢迎来到学生管理系统------
1 添加学生
2 删除学生
3 修改学生
4 查看所有学生
5 退出
请输入你的选择:
1
请输入学号:
001
请输入学生姓名:
小明
请输入学生年龄:
8
请输入学生的地址:
山西省
添加学生成功
------欢迎来到学生管理系统------
1 添加学生
2 删除学生
3 修改学生
4 查看所有学生
5 退出
请输入你的选择:
1
请输入学号:
003
请输入学生姓名:
小红
请输入学生年龄:
7
请输入学生的地址:
河南省
添加学生成功
------欢迎来到学生管理系统------
1 添加学生
2 删除学生
3 修改学生
4 查看所有学生
5 退出
请输入你的选择:
1
请输入学号:
009
请输入学生姓名:
小黑
请输入学生年龄:
9
请输入学生的地址:
广东省
添加学生成功
------欢迎来到学生管理系统------
1 添加学生
2 删除学生
3 修改学生
4 查看所有学生
5 退出
请输入你的选择:
4
001 小明 8 山西省
003 小红 7 河南省
009 小黑 9 广东省
------欢迎来到学生管理系统------
1 添加学生
2 删除学生
3 修改学生
4 查看所有学生
5 退出
请输入你的选择:
2
输入要删除的学生ID:
001
删除成功
------欢迎来到学生管理系统------
1 添加学生
2 删除学生
3 修改学生
4 查看所有学生
5 退出
请输入你的选择:
4
003 小红 7 河南省
009 小黑 9 广东省
------欢迎来到学生管理系统------
1 添加学生
2 删除学生
3 修改学生
4 查看所有学生
5 退出
请输入你的选择:
3
输入要修改学生的ID
009
请输入学生新姓名:
小北
请输入学生新年龄:
11
请输入学生新居住地:
河北
修改学生信息成功
------欢迎来到学生管理系统------
1 添加学生
2 删除学生
3 修改学生
4 查看所有学生
5 退出
请输入你的选择:
4
003 小红 7 河南省
009 小北 11 河北
------欢迎来到学生管理系统------
1 添加学生
2 删除学生
3 修改学生
4 查看所有学生
5 退出
请输入你的选择:
5
Process finished with exit code 0