版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/k_korol/article/details/82831114
学生管理系统–对学生的基本信息进行增、删、改、查,之前使用集合完成的,程序运行数据才存在,这次使用文件来存储,可以使数据在硬盘中保存,该类需要项目的根目录下放个“student.txt”文件-------在控制台显示
主类:
import java.io.*;
import java.util.ArrayList;
import java.util.Scanner;
public class Demo {
public static void main(String[] args) {
System.out.println("【学生管理系统】");
Scanner sc = new Scanner(System.in);
while (true) {
System.out.println("请选择以下功能:");
System.out.println("1、添加 2、删除 3、修改 4、按学号查询 5、全部查询 6、退出");
int op = sc.nextInt();
switch (op) {
case 1:
addStudent(sc);
break;
case 2:
deleteStudent(sc);
break;
case 3:
updateStudent(sc);
break;
case 4:
findById(sc);
break;
case 5:
findAll();
break;
case 6:
System.out.println("谢谢使用,再见!");
System.exit(0);
default:
System.out.println("输入有误,请重新输入!");
}
}
}
private static void findAll() {
ArrayList<Student> stuList = readAll();
System.out.println("【查询结果】");
if (stuList == null || stuList.size() == 0) {
System.out.println("无数据!");
} else {
System.out.println("============================");
System.out.println("学号\t\t姓名\t\t性别\t\t年龄");
for (Student student : stuList) {
System.out.println(student.getStuNo() + "\t\t" + student.getStuName() + "\t\t"
+ student.getStuSex() + "\t\t" + student.getStuAge());
}
}
}
private static void findById(Scanner sc) {
ArrayList<Student> stuList = readAll();
System.out.println("请输入要查询的学号:");
int stuNo = sc.nextInt();
System.out.println("【查询结果】");
for (Student student : stuList) {
if (student.getStuNo() == stuNo) {
System.out.println("学号\t\t姓名\t\t性别\t\t年龄");
System.out.println(student.getStuNo() + "\t\t" + student.getStuName() + "\t\t"
+ student.getStuSex() + "\t\t" + student.getStuAge());
return;
}
}
System.out.println("学号:" + stuNo + "--没有找到!");
}
private static void updateStudent(Scanner sc) {
ArrayList<Student> stuList = readAll();
System.out.println("请输入要修改的学号:");
int stuNo = sc.nextInt();
for (Student student : stuList) {
if (student.getStuNo() == stuNo) {
System.out.println("请输入姓名:【输入0 保留原值】");
String name = sc.next();
System.out.println("请输入性别:【输入0 保留原值】");
String sex = sc.next();
System.out.println("请输入年龄:【输入0 保留原值】");
int age = sc.nextInt();
if (!"0".equals(name)) {
student.setStuName(name);
}
if (!"0".equals(sex)) {
student.setStuSex(sex);
}
if (age != 0) {
student.setStuAge(age);
}
System.out.println("修改成功!");
writeAll(stuList);
return;
}
}
System.out.println("学号:" + stuNo + "--没有找到!");
}
private static void deleteStudent(Scanner sc) {
ArrayList<Student> stuList = readAll();
System.out.println("请输入要删除的学号:");
int stuNo = sc.nextInt();
for (Student student : stuList) {
if (student.getStuNo() == stuNo) {
System.out.println(student);
System.out.println("确认是否删除【y/n】");
String s = sc.next();
if ("y".equalsIgnoreCase(s)) {
stuList.remove(student);
writeAll(stuList);
System.out.println("删除成功!");
return;
} else {
System.out.println("取消操作!");
return;
}
}
}
System.out.println("学号:"+stuNo+"--没有找到!");
}
private static void addStudent(Scanner sc) {
ArrayList<Student> stuList = readAll();
int stuNo = 0;
a:
while (true) {
System.out.println("请输入学号:");
stuNo = sc.nextInt();
for (Student student : stuList) {
if (student.getStuNo() == stuNo) {
System.out.println("学号:" + stuNo + "--已存在!");
continue a;
}
}
break;
}
System.out.println("请输入姓名:");
String name = sc.next();
System.out.println("请输入性别:");
String sex = sc.next();
System.out.println("请输入年龄:");
int age = sc.nextInt();
stuList.add(new Student(stuNo, name, sex, age));
writeAll(stuList);
System.out.println("添加成功!");
}
private static ArrayList<Student> readAll() {
ArrayList<Student> stuList = new ArrayList<>();
try (
BufferedReader in = new BufferedReader(new FileReader("student.txt"))
) {
String row = null;
while ((row = in.readLine()) != null) {
String[] arr = row.split(",");
Student student = new Student();
student.setStuNo(Integer.parseInt(arr[0]));
student.setStuName(arr[1]);
student.setStuSex(arr[2]);
student.setStuAge(Integer.parseInt(arr[3]));
stuList.add(student);
}
return stuList;
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
private static void writeAll(ArrayList<Student> stuList) {
try (
BufferedWriter out = new BufferedWriter(new FileWriter("student.txt"))
) {
for (Student student : stuList) {
out.write(student.getStuNo() + "," + student.getStuName() + "," + student.getStuSex() + "," + student.getStuAge());
out.newLine();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
学生类信息:
public class Student {
private int stuNo;
private String stuName;
private String stuSex;
private int stuAge;
public Student() {
}
public Student(int stuNo, String stuName, String stuSex, int stuAge) {
this.stuNo = stuNo;
this.stuName = stuName;
this.stuSex = stuSex;
this.stuAge = stuAge;
}
public int getStuNo() {
return stuNo;
}
public void setStuNo(int stuNo) {
this.stuNo = stuNo;
}
public String getStuName() {
return stuName;
}
public void setStuName(String stuName) {
this.stuName = stuName;
}
public String getStuSex() {
return stuSex;
}
public void setStuSex(String stuSex) {
this.stuSex = stuSex;
}
public int getStuAge() {
return stuAge;
}
public void setStuAge(int stuAge) {
this.stuAge = stuAge;
}
@Override
public String toString() {
return "Student{" +
"stuNo=" + stuNo +
", stuName='" + stuName + '\'' +
", stuSex='" + stuSex + '\'' +
", stuAge=" + stuAge +
'}';
}
}