java基础学习结束,写一个学生信息管理系统,包括增加学生信息,删除学生信息,查找学生信息,更改学生信息.
增加学生信息
从键盘录入学生的基本信息,存入txt文件,达到持久化存储
删除学生信息
遍历集合中存储的信息,根据学生的学号删除学生xinx
查找学生信息
查找学生信息 查找全部 根据学号查找
修改学生信息
根据学号进行更改
代码:
学生类(Student)
package studentmassagesystem;
import java.io.Serializable;
/**
* Description:
* date: 2023/5/3 8:54
* @author fjp
* @version 1.0
*/
public class Student implements Serializable {
/**
* 学号
*/
private String id;
/**
* 姓名
*/
private String name;
/**
* 性别
*/
private String sex;
/**
* 电话
*/
private String phone;
/**
* 班级
*/
private String grade;
/**
* 学院
*/
private String collage;
public Student() {
}
public Student(String id ,String name, String sex, String phone, String grade, String collage) {
this.id = id;
this.name = name;
this.sex = sex;
this.phone = phone;
this.grade = grade;
this.collage = collage;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getGrade() {
return grade;
}
public void setGrade(String grade) {
this.grade = grade;
}
public String getCollage() {
return collage;
}
public void setCollage(String collage) {
this.collage = collage;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
@Override
public String toString() {
return id +"\t "+name+"\t"+sex+"\t "+phone+"\t "+grade+"\t "+collage+"\t";
}
}
工具类(实现具体的增删查改,创建输入输出流)
package studentmassagesystem;
import java.io.*;
import java.util.ArrayList;
import java.util.Scanner;
/**
* Description:
* date: 2023/5/3 9:01
* @author fjp
* @version 1.0
* 学生管理系统的工具类
*/
public class StudentUtil {
private static ArrayList<Student> list;
/**
* 创建一个输入流读取文件中的学生信息,完成持久化存储
* 添加学生信息,存储到文件中
* 静态代码块只执行一次
*/
static {
try {
//创建一个文件字节输入流,将student.txt的内容读取到程序,进行操作
FileInputStream fileInputStream = new FileInputStream("student.txt");
//将创建的输入流,转为对象输入流,这里要对Student进行操作
ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
//读取对象
Object object = objectInputStream.readObject();
//将读取到的对象赋值给Arraylist,这里是将内存地址给了list
list = (ArrayList<Student>) object;
} catch (Exception e) {
//list指向新的引用
list = new ArrayList<>();
}
}
public static void addMessage() {
keyBoard();
try {
writeFile();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("添加成功!");
}
/**
* 根据学号删除学生信息
*/
public static void deleteMessage(){
Scanner scanner = new Scanner(System.in);
System.out.println("请输入要删除的学生学号:");
String id = scanner.next();
for (Student student : list) {
if (student.getId().equals(id)){
list.remove(student);
System.out.println("删除成功");
try {
writeFile();
} catch (IOException e) {
e.printStackTrace();
}
return;
}
System.out.println("未找到学号为"+id+"的学生");
}
}
/**
* 查找所有学生信息
*/
public static void showMessage(){
System.out.println("学号\t"+"姓名\t" +"性别\t"+"电话\t"+"班级\t"+"学院\t");
for (Student student : list) {
System.out.println(student);
}
}
public static void showIdMessage(){
System.out.println("请输入要查找的学生学号:");
Scanner scanner = new Scanner(System.in);
String id = scanner.next();
for (Student student : list) {
if (student.getId().equals(id)){
System.out.println("学号\t"+"姓名\t" +"性别\t"+"电话\t"+"班级\t"+"学院\t");
System.out.println(student);
break;
}
System.out.println("未找到学号为"+id+"的学生");
}
}
/**
* 根据学号修改学信息
*/
public static void modifyMessage(){
Scanner scanner = new Scanner(System.in);
System.out.println("请输入要修改的学生学号:");
String id = scanner.next();
for (Student student : list) {
if (student.getId().equals(id)){
System.out.println("输入修改后的内容:");
System.out.println("姓名:");
String newName = scanner.next();
System.out.println("性别:");
String newSex = scanner.next();
System.out.println("电话:");
String newPhone = scanner.next();
System.out.println("班级:");
String newGrade = scanner.next();
System.out.println("学院:");
String newCollage = scanner.next();
student.setName(newName);
student.setSex(newSex);
student.setPhone(newPhone);
student.setGrade(newGrade);
student.setCollage(newCollage);
try {
writeFile();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("修改成功");
return;
}
System.out.println("未找到学号为"+id+"的学生");
}
}
/**
* 键盘输入的方法,从键盘录入学生信息
*/
public static void keyBoard(){
Scanner scanner = new Scanner(System.in);
System.out.println("请输入学生学号:");
String id = scanner.next();
//判断是否存在
for (Student student : list) {
if (student.getId().equals(id)){
System.out.println("该学生已存在,请重新输入");
keyBoard();
}
}
System.out.println("请输入学生姓名:");
String name = scanner.next();
System.out.println("请输入性别:");
String sex = scanner.next();
System.out.println("请输入联系方式:");
String phone = scanner.next();
System.out.println("请输入班级:");
String grade = scanner.next();
System.out.println("请输入学院:");
String collage = scanner.next();
Student student1 = new Student();
student1.setId(id);
student1.setName(name);
student1.setSex(sex);
student1.setPhone(phone);
student1.setGrade(grade);
student1.setCollage(collage);
list.add(student1);
}
/**
* 将list写入文本文件中
* @throws IOException
*/
private synchronized static void writeFile() throws IOException {
//创建文件输出流,对象输出流
FileOutputStream fileOutputStream =null;
ObjectOutputStream objectOutputStream = null;
//将内容写入到txt文件
fileOutputStream = new FileOutputStream("student.txt");
//文件输出流转对象输出流
objectOutputStream = new ObjectOutputStream(fileOutputStream);
//将list写入文件
objectOutputStream.writeObject(list);
//冲刷
objectOutputStream.flush();
//关闭资源
objectOutputStream.close();
fileOutputStream.close();
}
}
启动类(Application)
package studentmassagesystem;
import com.sun.org.apache.bcel.internal.generic.BREAKPOINT;
import java.util.Scanner;
/**
* Description:
* date: 2023/5/3 10:26
*
* @author fjp
* @version 1.0
*/
@SuppressWarnings("all")
public class Application {
public static void main(String[] args) {
while(true){
System.out.print("------------------------------------------------------------------\n");
System.out.print("| xxxxxx学生管理系统 |\n");
System.out.print("| 1.增加学生 2.删除学生 3.查找学生信息 4.修改学生信息 5.退出 |\n");
System.out.print("-------------------------------------------------------------------\n");
System.out.println("请输入要执行的操作(eg:1/2/3/4/5):");
Scanner scanner = new Scanner(System.in);
int tag = scanner.nextInt();
switch (tag){
case 1:
StudentUtil.addMessage();
break;
case 2:
StudentUtil.deleteMessage();
break;
case 3:
boolean tag1 = true;
while (tag1){
System.out.println("1.查找全部学生信息 2.根据学号查找 3.返回上一级");
int i = scanner.nextInt();
if (i==1){
StudentUtil.showMessage();
}
if (i==2){
StudentUtil.showIdMessage();
}
if (i==3){
tag1=false;
}
}
break;
case 4:
StudentUtil.modifyMessage();
break;
case 5:
return;
}
}
}
}
详情见我的个人博客:fenjiapeng.github.io