㈠、Student类,有构造、封装等操作。
在创建成员变量后,可以通过
快捷键:Alt Insert
快速完成无参构造函数,有参构造函数,以及成员变量的get,set封装函数哦~
package Student;
public class Student {
private String age;
private String name;
public Student(){};
public void show(){
System.out.println(age+name); }
public Student(String age,String name){
this.name=name;
this.age=age; }
public void setAge(String age){
this.age=age;}
public String getAge(){
return age; }
public void setName(String name){
this.name=name; }
public String getName(){
return name; }
}
㈡、StudentTest测试类,也是运行的类。
大概思路就是:
一个主函数通过Switch功能选择,四个方法zeng(),shan(),gai(),cha()分别进行功能实现。
*其中用到了ArrayList<E>集合a来存储学生信息,不同于数组,它的长度可自由更改,具体用法参照另一篇文章:
我用#优快云#这个app发现了有技术含量的博客,小伙伴们求同去《Java速成(8/30)-集合类ArrayList<E>、泛型、增删查改》, 一起来围观吧 https://blog.youkuaiyun.com/m0_68079241/article/details/123625776?utm_source=app&app_version=5.2.1&code=app_1562916241&uLinkId=usr1mkqgl919blen
我们在增删改查学生信息时,一般通过new一个student类,创建对象s,令s=a.(i),以s为媒介执行一系列操作,而不用a(i),不方便*
[a.add(s)将s加入集合中。
a.remove(s)把集合中的s删掉。
a.set(j,s)替换j处s的信息。
s.getAge() s.getName()获取对象s的信息。]
[写到这里我才发现我代码全程输入错误年纪打的年级,还有就是对象s我有的时候打的ss]
①在主函数中:
while(true)循环语句,避免执行一次系统就结束掉。再通过default中的:System.exit(0);实现退出循环,终止程序。
②在增加功能zeng()中:
如果集合a.size()==0,说明暂无学生信息,可以直接添加。a.size()不为0,则通过for循环遍历集合a,判断学生信息是否已经存在,不存在继续添加,已存在报错提示!
③在删除,修改,查询功能中,先看a.size()是否为0,为0提醒暂无学生信息,先去添加。
④删除修改功能大同小异,通过for循环,遍历集合,对比键盘录入的信息i和集合里的每个对象的s.getAge()信息,找到集合a里j处的对象:
student s=a.get(j);
if(i.equals(s.getAge()) );
这里用到了equals,不同于“==”的是:
==对比地址,equals对比内容。
package Student;
import java.util.ArrayList;
import java.util.Scanner;
public class StudentTest {
public static void main(String[] args) {
ArrayList<Student> a = new ArrayList<>();
Scanner sc = new Scanner(System.in);
while (true) {
System.out.println("------学生管理系统---------");
System.out.println("--1增2删3改4查5退出 --");
System.out.println("--选择是: --");
System.out.println("------------------------");
int choice = sc.nextInt();
switch (choice) {
case 1:
zeng(a);
break;
case 2:
shan(a);
break;
case 3:
gai(a);
break;
case 4:
cha(a);
break;
default:
System.out.println("感谢使用!");
System.exit(0);//java虚拟机退出
break;
}
}
}
public static void zeng(ArrayList<Student> a) {
Student s = new Student();
Scanner sc = new Scanner(System.in);
System.out.println("你要录入的学生的年级:");
String ag = sc.nextLine();
System.out.println("姓名:");
String na = sc.nextLine();
if (a.size() == 0) {
s.setAge(ag);
s.setName(na);
a.add(s);
} else {
for (int j = 0; j < a.size(); j++) {
Student ss = a.get(j);
if (ag.equals(ss.getAge())) {
System.out.println("该年级已存在");
break;
} else if (j == a.size() - 1) {
s.setAge(ag);
s.setName(na);
a.add(s);
System.out.println("学生信息已添加成功!");
break;
}
}
}
System.out.println("继续增加请按1,退出增加请按2:");
int c = sc.nextInt();
if (c == 1) {
zeng(a);
}
}
public static void shan(ArrayList<Student> a) {
if (a.size() != 0) {
System.out.println("你要删除的学生的年级:");
Scanner sc = new Scanner(System.in);
String i = sc.nextLine();
for (int j = 0; j < a.size(); j++) {
Student ss = a.get(j);
if (i.equals(ss.getAge())) {
System.out.println("该学生的信息存在:年级和姓名是:" + ss.getAge() + "," + ss.getName());
a.remove(ss);
System.out.println("已删除!");
break;
} else if (j == a.size() - 1) {
System.out.println("该学生的信息不存在");
break;
}
}
System.out.println("继续删除请按1,退出删除请按2:");
int c = sc.nextInt();
if (c == 1) {
shan(a);
}
} else {
System.out.println("学生信息数据库为空,请先增加学生信息!");
}
}
public static void gai(ArrayList<Student> a) {
if (a.size() != 0) {
System.out.println("你要修改的学生的年级:");
Scanner sc = new Scanner(System.in);
String i = sc.nextLine();
for (int j = 0; j < a.size(); j++) {
Student ss = a.get(j);
{
if (i.equals(ss.getAge())) {
System.out.println("该学生的信息存在:年级和姓名是:" + ss.getAge() + "," + ss.getName());
System.out.println("请输入更改后的年级:");
String g = sc.nextLine();
System.out.println("请输入更改后的姓名:");
String n = sc.nextLine();
ss.setName(n);
ss.setAge(g);
a.set(j, ss);
System.out.println("更改成功!");
break;
} else if (j == a.size() - 1) {
System.out.println("该学生的信息不存在");
break;
}
}
}
System.out.println("继续修改请按1,退出修改请按2:");
int c = sc.nextInt();
if (c == 1) {
gai(a);
}
} else {
System.out.println("暂无学生信息,请先增加录入!");
}
}
public static void cha(ArrayList<Student> a) {
if (a.size() != 0) {
System.out.println("年级:");
Scanner sc = new Scanner(System.in);
String i = sc.nextLine();
for (int j = 0; j < a.size(); j++) {
Student ss = a.get(j);
if (i.equals(ss.getAge())) {
System.out.println("该学生的信息存在:年级和姓名是:" + ss.getAge() + "," + ss.getName());
break;
} else if (j == a.size() - 1) {
System.out.println("该学生的信息不存在");
break;
}
}
System.out.println("继续查询请按1,退出查询请按2:");
int c = sc.nextInt();
if (c == 1) {
cha(a);
} else {
}
} else {
System.out.println("暂无数据");
}
}
}
在每一个功能结束后我都会问是否重复这个功能,所以还有一个if语句。
另外代码写完一定很乱,怎么办?
全选,快捷键Ctrl+Alt+L可以帮你格式化~
他们是在同一个package--Student下的两个类,学生类和测试类。
运行软件为IDEA。环境java8
运行结果示意图: