一、系统功能框架

基于JAVA的学生管理系统_i++


提示:使用面向对象的方法设计各个方法类

基于JAVA的学生管理系统_字符串_02


基于JAVA的学生管理系统_i++_03


基于JAVA的学生管理系统_字符串_04


基于JAVA的学生管理系统_i++_05

二、具体代码

Student

package studentmanger03;

import java.io.Serializable;

public class Student implements Serializable {
private String name;
private int age;
private int score;

public Student(String name, int age, int score) {
this.name = name;
this.age = age;
this.score = score;
}


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 int getScore() {
return score;
}

public void setScore(int score) {
this.score = score;
}

public String studentToString() {
return this.getName()+"," +this.getAge()+","+this.getScore();
}
}

StudentManger

package studentmanger03;

import java.io.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class StudentManger {
static ArrayList<Student> students = new ArrayList<>();

//保存文件
public static void saveStudent(List<Student> students) {
BufferedWriter bw = null;
try {
bw = new BufferedWriter(new FileWriter("test.txt"));
} catch (IOException e) {
e.printStackTrace();
}
for (Student student : students) {
try {
bw.write(student.studentToString());
bw.newLine();
bw.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
try {
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}


//读文件
public static void readStu() {
//放入缓存区,为空
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader("test.txt"));
//开始循环
while (true) {
//读出来一行放入str字符串中
String str = null;
try {
str = br.readLine();
} catch (IOException e) {
e.printStackTrace();
}
//如果字符串是空了,就说明读完了,就break。
if (str == null) {
break;
}
//没读完的话,把字符串逗号前边的截取出来,截取的是名字
String[] splits = str.split(",");
//把读出来的新学生信息的三位截取出来放到学生集合里
students.add(new Student(splits[0], Integer.parseInt(splits[1]), Integer.parseInt(splits[2])));
}
}catch (IOException e) {
e.printStackTrace();
}finally {
//如果是空,在调用空.close方法就会报空指针异常,所以要先让他不等于空。
if (br != null) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}




}


public static Student createStu() {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入学生姓名");
String name = scanner.next();
System.out.println("请输入学生年龄");
int age = scanner.nextInt();
System.out.println("请输入学生成绩");
int score = scanner.nextInt();
Student student = new Student(name, age, score);
return student;
}

//菜单
public static void showMenu() {
System.out.println("************************\n" + "1. 增加学生\n" + "2. 展示学生\n" + "3. 修改信息\n" + "4. 删除学生\n" + "5. 按姓名查找\n" + "6. 退出\n"+ "************************");
}


//添加学生
public static void addStu() {
students.add(createStu());//集合中的添加方法
}

// 展示学生
public static void displayStudents() {
System.out.println("NAME AGE SOCRE");
//用i遍历,也可以用迭代器
for (int i = 0; i < students.size(); i++) {
System.out.println(students.get(i).getName() + " " + students.get(i).getAge() + " " + students.get(i).getScore());
}
}


//按姓名查找学生的展示
public static void showStudent(ArrayList<Student> students){
if(students.size()==0){
System.out.println("无学生数据");
}else{
System.out.println("姓名"+" "+"年龄"+" "+"成绩");
}
for(int i = 0;i<students.size();i++){
System.out.println(students.get(i).getName()+" "+students.get(i).getAge()+" "+students.get(i).getScore());
}
}

//按姓名查找学生
public static void nameFind(ArrayList<Student> students){
Scanner scanner = new Scanner(System.in);
System.out.println("请输入学生姓名:");
String name = scanner.next();
ArrayList<Student> arrayList = new ArrayList<>();
for (int i = 0; i < students.size();i++){
Student student = students.get(i);
if(student.getName().equals(name)){
arrayList.add(student);
}
}
showStudent(arrayList);
}



//修改学生
public static void changeStudent() {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入需要修改的学生序号:");
int changeNum = scanner.nextInt();
if (changeNum > students.size()) {
System.out.println("你输入的序号超过总人数");
} else {
//把添加学生的方法写进student对象中。
Student student = createStu();
//students.set是覆盖的意思,把添加好的学生覆盖到第changeNum-1中。
students.set(changeNum - 1, student);
}
}

//删除
public static void deleteStu() {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入需要删除的学生序号:");
int deleteNum = scanner.nextInt();
if (deleteNum > students.size()) {
System.out.println("输入有误");
} else {
students.remove(deleteNum - 1);
System.out.println("删除成功");
}
}

//退出
public static boolean exit() {
System.out.println("byebye");
return true;
}

//创建run方法
public static void run() {
StudentManger.readStu();
Scanner scanner = new Scanner(System.in);
boolean isExit = false;//如果是true,直接跳出。
while (!isExit) {
StudentManger.showMenu();
int choice = scanner.nextInt();
switch (choice) {
case 1:
StudentManger.addStu();
break;
case 2:
StudentManger.displayStudents();
break;
case 3:
StudentManger.changeStudent();
break;
case 4:
StudentManger.deleteStu();
break;
case 5:
nameFind(students);
break;
case 6:
isExit = StudentManger.exit();
saveStudent(students);
break;
}

}
}

public static void main(String[] args) {
StudentManger.run();
}
}