概述
//学生类
public class Student {
private String id;
private String name;
private String age;
private String address;
public Student() {
}
public Student(String id, String name, String age, String address) {
this.id = id;
this.name = name;
this.age = age;
this.address = address;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
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;
/*
* 这是一个学生系统测试类
* 分析:
* 界面设计
* 添加学生
* 修改学生
* 删除学生
* 退出系统
*/
public class StudentManagerTest {
public static void main(String[] args) throws IOException {
String fileName = "students.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 退出系统");
Scanner sc = new Scanner(System.in);
System.out.println("请输入你的选择:");
String choice = sc.nextLine();
switch(choice){
case "1":
//1 查看所有学生信息
findAllStudent(fileName);
break;
case "2":
//2 添加学生
addStudent(fileName);
break;
case "3":
//3 修改学生
updateStudent(fileName);
break;
case "4":
deleteStudent(fileName);
//4 删除学生
break;
case "5":
//5 退出系统
default:
System.out.println("谢谢你的使用!");
System.exit(0);
break;
}
}
}
/**
* 将文件中的内容添加到集合
* @param fileName
* @param list
* @throws IOException
*/
public static void readData(String fileName,ArrayList<Student> list) throws IOException{
BufferedReader br = new BufferedReader(new FileReader(fileName));
String 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.setAddress(str[3]);
list.add(s);
}
br.close();
}
public static void writeData(String fileName,ArrayList<Student> list) throws IOException{
//创建缓冲输出流
BufferedWriter bw = new BufferedWriter(new FileWriter(fileName));
//遍历集合
for(int i = 0;i<list.size();i++){
//得到每个学生对象数据
Student stu = list.get(i);
//创建StringBuilder对象
StringBuilder sb = new StringBuilder();
//字符串的拼接
sb.append(stu.getId()).append("---").append(stu.getName()).append("---").append(stu.getAge()).append("---").append(stu.getAddress());
//转换为String类型并写入缓冲流中
bw.write(sb.toString());
//BufferedWriter不自带换行,要手动换行
bw.newLine();
//刷新
bw.flush();
}
bw.close();
}
/**
* 方法功能:修改学生
* 返回值类型:void
* 参数列表:ArrayList<Student> array
* @param array
* @throws IOException
*/
public static void updateStudent(String fileName) throws IOException{
ArrayList<Student> array = new ArrayList<Student>();
readData(fileName,array);
Scanner sc = new Scanner(System.in);
System.out.println("请输入你要修改的学生的学号:");
String id = sc.nextLine();
//定义一个索引
int index = -1;
//遍历
for(int i = 0;i<array.size();i++){
//获取集合中的每一个元素
Student s = array.get(i);
//如果输入的id与集合中的id一致
if(s.getId().equals(id)){
//更改索引值
index = i;
//退出循环
break;
}
}
//index==-1:表示集合中没有对应得索引值
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(id, name, age, address);
array.set(index, s);
System.out.println("修改学生信息成功");
}
writeData(fileName,array);
}
/**
*
* 方法功能:删除学生
* 返回值:void
* 参数列表:ArrayList<Student> array
* @throws IOException
*/
public static void deleteStudent(String fileName) throws IOException{
ArrayList<Student> array = new ArrayList<Student>();
readData(fileName,array);
Scanner sc = new Scanner(System.in);
System.out.println("请输入你要删除的学生的学号:");
String id = sc.nextLine();
//定义一个索引
int index = -1;
//遍历
for(int i = 0;i<array.size();i++){
//获取集合中的每一个元素
Student s = array.get(i);
//如果输入的id与集合中的id一致
if(s.getId().equals(id)){
//更改索引值
index = i;
//退出循环
break;
}
}
//index==-1:表示集合中没有对应得索引值
if(index==-1){
System.out.println("对不起,你所要删除的学生的学号不存在,请重新选择");
}else{
//表示有对应的索引,则删除索引对应的元素
array.remove(index);
System.out.println("删除学生成功");
}
writeData(fileName,array);
}
/**
*
* 方法的功能:添加学生
* 返回值:void
* 参数列表:ArrayList<Student> array
* @throws IOException
*/
public static void addStudent(String fileName) throws IOException{
ArrayList<Student> array = new ArrayList<Student>();
//读文件中的数据
readData(fileName,array);
Scanner sc = new Scanner(System.in);
//解决学号重复问题
String id;
while(true){
System.out.println("请输入学生学号:");
id = sc.nextLine();
//定义标记,初始值表示没有重复的学号
boolean flag = false;
for(int i = 0;i<array.size();i++){
Student s= array.get(i);
if(s.getId().equals(id)){
flag = true;//表示有重复的学号
}
}
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.setAddress(address);
//再将学生对象添加到集合
array.add(s);
System.out.println("添加学生成功");
//将数据写入到文件中
writeData(fileName,array);
}
/**
* 方法功能: 查看所有学生信息
* 返回值:void
* 参数列表:ArrayList<Student> array
* @throws IOException
*/
public static void findAllStudent(String fileName) throws IOException{
//如果集合中没有存储信息,则给出提示,并结束方法体
ArrayList<Student> array = new ArrayList<Student>();
readData(fileName,array);
if(array.size()==0){
System.out.println("对不起,还没有任何学生信息,请重新进行你的选择");
//结束方法体
return;
}
System.out.println("学号tt姓名t年龄t居住地");
//遍历集合
for(int i = 0;i <array.size();i++){
//获取每个学生的信息
Student s = array.get(i);
//打印
System.out.println(s.getId()+"t"+s.getName()+"t"+s.getAge()+"t"+s.getAddress());
}
}
}
最后
以上就是诚心溪流为你收集整理的学生管理系统IO版的全部内容,希望文章能够帮你解决学生管理系统IO版所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复