先是学生类的定义
package studentsystem;
public class Student {//方法用快捷键就行eclipse是shift+alt+s
private String sid;
private String name;
private int age;
private String address;
public Student(String sid, String name, int age, String address) {
super();
this.sid = sid;
this.name = name;
this.age = age;
this.address = address;
}
public Student() {
super();
// TODO Auto-generated constructor stub
}
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 int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
下面是主界面还有各种函数的类
package studentsystem;
import java.util.ArrayList;
import java.util.Scanner;
public class StudentManager {
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 sc = new Scanner(System.in);
int n= sc.nextInt();
switch(n) {
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("谢谢您使用本系统!");
sc.close();
System.exit(0);//java退出 也可用return
}//不能在下面用close关闭因为sc共用一个close
}
}
public static void addStudent(ArrayList<Student> array) {//集合
Scanner sc = new Scanner(System.in);
String sid;//定义在外面是为了让下面能够使用sid
while(true) {
System.out.println("请输入学生学号:");
sid = sc.nextLine();
if(isUsed(array,sid)) {
System.out.println("您输入的学号已经被使用,请重新输入!");
}else {
break;
}
}
System.out.println("请输入学生姓名:");
String name = sc.nextLine();
System.out.println("请输入学生年龄:");
int age = sc.nextInt();
System.out.println("请输入学生地址:");
String address = sc.next();//next和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也可以
}else {
System.out.println("学号\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();
for(int i=0;i<array.size();i++) {
Student s = array.get(i);
if(s.getSid().equals(sid)) {//equals比较的是值而不是比较的堆内存的地址
array.remove(i);
System.out.println("删除学生成功!");
break;
}
if(i==array.size()-1) {
System.out.println("您输入的学号不存在,请重新输入学号!");
break;
}
}
}
public static void updateStudent(ArrayList<Student> array) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入您要修改的学生的学号:");
String sid = sc.nextLine();
System.out.println("请输入学生新姓名:");
String name = sc.nextLine();
System.out.println("请输入学生新年龄:");
int age = sc.nextInt();
System.out.println("请输入学生新地址:");
String address = sc.next();//next和nextLine经典问题
Student st = new Student();
st.setName(name);
st.setAge(age);
st.setAddress(address);
for(int i=0;i<array.size();i++) {
Student s = array.get(i);
if(s.getSid().equals(sid)) {
st.setSid(s.getSid());
array.set(i, st);
System.out.println("修改学生信息成功");
break;
}
if(i==array.size()-1) {
System.out.println("您输入的学号不存在,请重新输入学号!");
break;
}
}
}
public static boolean isUsed(ArrayList<Student> array,String sid) {
boolean f = false;
for(int i=0;i<array.size();i++) {
Student s = array.get(i);
if(s.getSid().equals(sid)) {
f = true;
break;
}
}
return f;
}
}
next和nextLine区别可以在c站查一哈
代码还有的问题就是自定义方法里面的sc怎么close不会弄如果有懂的大神请留言谢谢!