[Java] 纯文本查看 复制代码
package com.itheima_01;
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;
/*
* /*
* 这是我的学生管理系统的主类
*
* 步骤如下:
* A:定义学生类
* B:学生管理系统的主界面的代码编写
* C:学生管理系统的查看所有学生的代码编写
* D:学生管理系统的添加学生的代码编写
* E:学生管理系统的删除学生的代码编写
* F:学生管理系统的修改学生的代码编写
*/
public class StudentManager {
public static void main(String[] args) throws IOException {
String fileName="student.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);
String choiceString = sc.nextLine();
//用switch语句实现选择
switch(choiceString) {
case "1":
//查看所有学生
findAllStudent(fileName);
break;
case "2":
//添加学生
addStudent(fileName);
break;
case "3":
//删除学生
deleteStudent(fileName);
break;
case "4":
//修改学生
updateStudent(fileName);
break;
case "5":
default:
System.out.println("谢谢你的使用");
System.exit(0); //JVM退出
break;
}
}
}
//从文件读取数据到存储到集合
public static void readData(String fileName, ArrayList<Student> array) throws IOException{
//创建输入缓冲流对象
BufferedReader br=new BufferedReader(new FileReader(fileName));
String line;
//获得每一行的字符串,赋值给line
while((line=br.readLine())!=null){
//截取字符数组
String [] str=line.split(",");
//创建学生对象接收数据
Student s=new Student();
s.setId(str[0]);
s.setName(str[1]);
s.setAge(str[2]);
s.setAdress(str[3]);
//将获取到的数据存储到集合中
array.add(s);
}
br.close();
}
//把集合中的数据存储到文件中
public static void writeData(String fileName, ArrayList<Student> array) throws IOException{
//创建输出缓冲流对象
BufferedWriter bw=new BufferedWriter(new FileWriter(fileName));
//遍历集合,获取到数据
for(int x=0;x<array.size();x++){
//将集合中的每一行数据赋值给学生对象
Student s=array.get(x);
//创建StringBuilder对象用来拼接字符串
StringBuilder sb= new StringBuilder();
sb.append(s.getId()).append(",").append(s.getName()).append(",").append(s.getAge()).append(",").append(s.getAdress());
//写入文件中
bw.write(sb.toString());
bw.newLine();
bw.flush();
}
bw.close();
}
//查看所有学生的代码编写
public static void findAllStudent(String fileName) throws IOException{
//首先创建集合对象
ArrayList<Student> array=new ArrayList<>();
//获取到学生信息
readData(fileName,array);
//判断是否有数据
if(array.size()==0){
System.out.println("当前没有学生信息,请重新您的选择");
return;
}
System.out.println("学号\t\t姓名\t年龄\t地址");
//遍历集合获取数据
for(int x=0;x<array.size();x++){
//定义学生对象,用来存储学生信息
Student s=array.get(x);
System.out.println(s.getId()+"\t\t"+s.getName()+"\t"+s.getAge()+"\t"+s.getAdress());
}
}
//添加学生代码编码
public static void addStudent(String fileName) throws IOException{
//创建集合对象
ArrayList<Student> array=new ArrayList<>();
//从文件中读取数据
readData(fileName, array);
//创建键盘录入对象
Scanner sc= new Scanner(System.in);
//定义字符串类型的id,后面也需要使用,所以定义到循环外面
String id;
while(true){
System.out.println("请输入新的学生学号:");
id=sc.nextLine();
//定义布尔那类型的变量,用来判断
boolean flag=false;
//判断学号是否存在
//遍历集合获取元素
for(int x=0;x<array.size();x++){
//定义学生对象,获取到每一个学生
Student s=array.get(x);
//判断这个输入的id在学生对象中是否存在
if(s.getId().equals(id)){
flag=true;
break;//跳出for循环
}
}
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();
s.setId(id);
s.setName(name);
s.setAge(age);
s.setAdress(address);
//将学生对象存储到集合
array.add(s);
//将集合中的重新存储到文件中
writeData(fileName, array);
System.out.println("添加成功!");
}
//删除学生代码的编写
public static void deleteStudent(String fileName) throws IOException{
//首先定义一个集合
ArrayList<Student> array=new ArrayList<>();
//读取出学生信息
readData(fileName, array);
while(true){
//创建键盘录入对象
Scanner sc=new Scanner(System.in);
System.out.println("请输入您要删除的学号:");
String id=sc.nextLine();
//定义一个索引
int index=-1;
//遍历集合获取到元素
for(int x=0;x<array.size();x++){
Student s=array.get(x);
if(s.getId().equals(id)){
index=x;
break;
}
}
if(index==-1){
System.out.println("您所需要删除的学员信息不存在,请重新您的选择!");
}else{
array.remove(index);
//把集合中的文件重新写回到文件
writeData(fileName, array);
System.out.println("删除学生成功!");
break;
}
}
}
//修改学生代码的编写
public static void updateStudent(String fileName) throws IOException{
//创建集合对象
ArrayList<Student> array=new ArrayList<>();
//读取文件
readData(fileName, array);
//定义索引
int index=-1;
//创建键盘输入对象
Scanner sc=new Scanner(System.in);
String id;
while(true){
System.out.println("请输入您要修改的学生ID:");
id=sc.nextLine();
//遍历集合获取元素
for(int x=0;x<array.size();x++){
Student s=array.get(x);
if(s.getId().equals(id)){
index=x;
break;
}
}
if(index==-1){
System.out.println("您输入的不存在,请重新您的选择!");
}else{
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();
s.setId(id);
s.setName(name);
s.setAge(age);
s.setAdress(address);
//修改集合中的学生对象
array.set(index, s);
//将集合写入到文件中
writeData(fileName, array);
//给出提示
System.out.println("修改成功!");
break;
}
}
}
}