[Java] 纯文本查看 复制代码
package kejian;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Scanner;
/*
* 学生管理系统IO版本
* 分析:
* 1.创建学生类,包含学号,姓名,年龄,居住地
* 2.创建一个存储学生的集合
* 3.打印功能菜单
* 4.获取用户输入的功能选项
* 5.根据用户输入的功能选项,选择对应的功能(switch,if)
* 输入1:调用查看所有学生的方法
* 输入2:调用添加学生的方法
* 输入3:调用删除学生的方法
* 输入4:调用修改学生的方法
* 输入5:退出系统
* 输入其它数字:提示用户"您输入的功能不存在,请重新输入!"
* 6.添加一个死循环,让功能重复执行3-5
*/
public class StudentManage {
public static void main(String[] args) throws IOException {
// 定义一个读写数据的文件路径
String fileName = "g.txt";
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 choose = sc.nextInt();
switch (choose) {
case 1:
findAllStudent(fileName);
break;
case 2:
addStudent(fileName);
break;
case 3:
deletStudent(fileName);
break;
case 4:
updateStudent(fileName);
break;
case 5:
System.out.println("程序已经结束");
System.exit(0);// 终止当前正在执行的Java虚拟机 0:正常终止,其它数字:异常终止
break;
default:
System.out.println("您输入的功能不存在,请重新输入");
break;
}
}
}
// 定义一个把集合中的数据写到文件中的方法
public static void writeDate(String fileName, ArrayList<Student> list) throws IOException {
// 创建一个字符输出缓冲流对象,并绑定目的地、
BufferedWriter bw = new BufferedWriter(new FileWriter(fileName));
// 遍历集合,
for (int i = 0; i < list.size(); i++) {
Student s = list.get(i);
// 创建一个字符串增加器
StringBuilder b = new StringBuilder();
b.append(s.getName()).append(",").append(s.getID()).append(",").append(s.getAge()).append(",")
.append(s.getAddress());
bw.write(b.toString());
// 换行
bw.newLine();
// 刷新,提高效率
bw.flush();
}
bw.close();
}
// 定义一个把文件中的内容存储到集合中的方法
public static void readDate(String fileName, ArrayList<Student> list) throws IOException {
// 创建字符输入缓冲流对象,并绑定数据源
BufferedReader br = new BufferedReader(new FileReader(fileName));
// 定义一个变量
String line;
// 调用一次读取一行的方法
while ((line = br.readLine()) != null) {
// 调用字符串分割的方法
String[] arr = line.split(",");
// 创建学生对象并赋值
Student s = new Student(arr[0], arr[1], arr[2], arr[3]);
// 往集合中添加元素
list.add(s);
}
br.close();
}
// 定义一个修改学生的方法
public static void updateStudent(String fileName) throws IOException {
// 创建一个存储学生的集合
ArrayList<Student> list = new ArrayList<Student>();
// 调用从文件中存储到集合的方法
readDate(fileName, list);
// 键盘录入要修改的学生学号
Scanner sc = new Scanner(System.in);
System.out.println("请输入要修改的学生学号");
String ID = sc.nextLine();
for (int i = 0; i < list.size(); i++) {
Student s = list.get(i);
String thisID = s.getID();
if (ID.equals(thisID)) {
System.out.println("请输入学生的新姓名");
String name = sc.nextLine();
System.out.println("请输入学生的新年龄");
String age = sc.nextLine();
System.out.println("请输入学生的新居住地");
String address = sc.nextLine();
s.setName(name);
s.setAge(age);
s.setAddress(address);
// 调用把集合中的数据存储到文件中的方法
writeDate(fileName, list);
// 给用户提示,修改成功
System.out.println("学生修改成功");
return;
}
System.out.println("您输入的学生学号不存在,请重新输入");
}
}
// 定义一个删除学生的方法
public static void deletStudent(String fileName) throws IOException {
// 创建一个存储学生的集合
ArrayList<Student> list = new ArrayList<Student>();
// 调用从文件中读取数据存储到集合的方法
readDate(fileName, list);
// 键盘录入要删除的学生学号
Scanner sc = new Scanner(System.in);
System.out.println("请输入要删除的学生学号");
String ID = sc.nextLine();
// 遍历集合、
for (int i = 0; i < list.size(); i++) {
String thisID = list.get(i).getID();
if (ID.equals(thisID)) {
list.remove(i);
// 调用把集合中元素写到文件中的方法
writeDate(fileName, list);
System.out.println("删除成功");
return;
}
}
System.out.println("您输入的学号不存在,请重新输入");
}
// 定义一个添加学生的方法
public static void addStudent(String fileName) throws IOException {
// 创建一个存储学生的集合,用于存储从文件中读取的数据
ArrayList<Student> list = new ArrayList<Student>();
// 调用把文件中的内容添加到集合中的方法
readDate(fileName, list);
Scanner sc = new Scanner(System.in);
// 输入学号
String ID;
// 使用死循环,让输入学号的动作可以重复进行
while (true) {
System.out.println("请输入学生的学号:");
ID = sc.nextLine();
// 定义一个标记
boolean flag = false;
//判断集合是为空
if(list.size() == 0){
System.out.println("请添加学生后,在执行此操作");
return ;
}else {
// 遍历集合
for (int i = 0; i < list.size(); i++) {
Student s = list.get(i);
if (ID.equals(s.getID())) {
flag = true;
break;
}
if (flag) {
System.out.println("您输入的学号已经被占用,请重新输入");
} else {
break;
}
}
}
System.out.println("请输入学生的姓名");
String name = sc.nextLine();
System.out.println("请输入学生的年龄");
String age = sc.nextLine();
System.out.println("请输入学生的居住地");
String address = sc.nextLine();
// 创建学生对象
Student s = new Student(name, ID, age, address);
list.add(s);
// 调用把集合中的数据存储到文件中的方法
writeDate(fileName, list);
System.out.println("学生添加成功");
}
}
// 定义查看所有学生的方法
public static void findAllStudent(String fileName) throws IOException {
ArrayList<Student> list = new ArrayList<Student>();
// 调用集合存储文件内容的方法
readDate(fileName, list);
if (list.size() == 0) {
System.out.println("请添加学生在执行此操作");
} else {
// 打印表头
System.out.println("姓名\t学号\t年龄\t居住地");
// 遍历集合
for (int i = 0; i < list.size(); i++) {
Student s = list.get(i);
System.out.println(s.getName() + "\t" + s.getID() + "\t" + s.getAge() + "\t" + s.getAddress());
}
}
}
}