IO流结合学生管理系统的练习

添加学生类信息到文本

public static void main(String[] args) throws IOException {
	// 定义学生类
	// 创建集合对象array
	ArrayList<Student> array = new ArrayList<Student>();
	addStudent(array);
	addStudent(array);
	addStudent(array);
		// 创建输出缓冲流
		BufferedWriter bw = new BufferedWriter(new FileWriter("babba.java", true));
		// 遍历集合对象array,
		for (int a = 0; a < array.size(); a++) {
			Student s = array.get(a);
			// 创建StringBuilder对象sb,用到他的append方法
			StringBuilder sb = new StringBuilder();
			sb.append(s.getId()).append(",").append(s.getName()).append(",").append(s.getAge());
			// 把上面的转换成String
			bw.write(sb.toString());
			bw.newLine();
			bw.flush();
			System.out.println(sb.toString());
		}
		bw.close();

}

public static void addStudent(ArrayList<Student> array) {
	// 创建键盘输入
	Scanner sc = new Scanner(System.in);

	String id;
	while (true) {
		// 创建变量接收数据
		System.out.println("id:");
		id = sc.nextLine();

		int index = -1;
		for (int a = 0; a < array.size(); a++) {
			Student s = array.get(a);
			if (s.getId().equals(id)) {
				index = a;
			}

		}
		if (index == -1) {
			break;
		} else {
			System.out.println("学号有重复");
			return;
		}
	}

	System.out.println("name:");
	String name = sc.nextLine();
	System.out.println("age:");
	String age = sc.nextLine();
	// 把上面的数据添加到学生类
	Student s = new Student();
	s.setId(id);
	s.setAge(age);
	s.setName(name);
	// 添加到集合
	array.add(s);
}

在这里插入图片描述

学生管理系统IO流版本

package com.StudentManager;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Scanner;

public class StudentManager {
	public static void main(String[] args) throws IOException {
		ArrayList<Student> array=new ArrayList<Student>();
		String filename="babba.java";
		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);
		String select=sc.nextLine();
		//选择项
		switch(select){
		case "1":
			findStudent(filename);
			break;
		case "2":
			addStudent(filename);
			break;
		case "3":
			updateStudent(filename);
			break;
		case "4":
			deleteStudent(filename);
			break;
		case "5":
			
		default:
			System.out.println("成功退出");
			System.exit(0);
		}
		}

	}
	
	//输入读取的方法
	public static void read(String filename,ArrayList<Student> array) throws IOException{
		//创建输入缓冲流
		BufferedReader br=new BufferedReader(new FileReader(filename));
		//创建一个变量接收
		String line;
		while((line=br.readLine())!=null){
			//创建数组对象strArray,用","分割原字符串,使其变成数组
			String[] strArray=line.split(",");
			Student s=new Student();
			//把上面变成数组的元素,用学生类方法存储
			s.setId(strArray[0]);
			s.setName(strArray[1]);
			s.setAge(strArray[2]);
			//把学生类对象存储的元素放进集合
			array.add(s);
			
		}
		br.close();
	}
	
	//输出写入的方法
	public static void writer(String filename,ArrayList<Student> array) throws IOException{
		//创建输出缓冲流
		BufferedWriter bw=new BufferedWriter(new FileWriter(filename));
		//循环,从集合中读取元素
		for(int a=0;a<array.size();a++){
			Student s=array.get(a);
			//创建对象sb,使用他的方法
			StringBuilder sb=new StringBuilder();
			//链式编写,组合起来存储
			sb.append(s.getId()).append(",").append(s.getName()).append(",").append(s.getAge());
			//把上面的转换成String类型,并输出写入对象bw
			bw.write(sb.toString());
			bw.newLine();
			bw.flush();
	
		}
		bw.close();
	}
	
	//查看所有学生
	public static void findStudent(String filename) throws IOException{
		//形参从原来的集合对象变成现在的文件路径对象
		//然后创建一个集合对象array
		ArrayList<Student> array=new ArrayList<Student>();
		//输入读取路径下的文件,存储到集合中
		read(filename,array);
		//判断集合数组长度,如果为0就返回上一层
		if(array.size()==0){
			System.out.println("系统中暂无资料,返回上一层");
			return;
		}
		System.out.println("学号\t姓名\t年龄");
		//循环遍历集合中数组
		for(int a=0;a<array.size();a++){
			Student s=array.get(a);
			System.out.println(s.getId()+"\t"+s.getName()+"\t"+s.getAge()+"\t");
		}
	}
	
	//添加学生信息
	public static void addStudent(String filename) throws IOException{
		//形参从原来的集合对象变成现在的文件路径对象
		//然后创建一个集合对象array
		ArrayList<Student> array=new ArrayList<Student>();
		//创建键盘输入对象sc
		Scanner sc=new Scanner(System.in);
		String id;
		while(true){
		//输入读取路径下的文件,存储到集合中
		read(filename,array);

		System.out.println("id:");
		id=sc.nextLine();
		
		int index=-1;
				for(int a=0;a<array.size();a++){
					Student s=array.get(a);
					if(s.getId().equals(id)){		
						index=a;
					}		
				}
				
				if(index==-1){
					break;
				}else{
					System.out.println("学号重复了");
				}
		}
		System.out.println("name:");
		String name=sc.nextLine();
		System.out.println("age:");
		String age=sc.nextLine();
		//把上面存储到学生类方法中
		Student s=new Student();
		s.setId(id);
		s.setName(name);
		s.setAge(age);
		//加入集合
		array.add(s);
		//最后,把集合存储的元素,输出写入到路径下的文件
		writer(filename,array);	
	}
	
	//修改学生信息
	public static void updateStudent(String filename) throws IOException{
		//创建集合
		ArrayList<Student> array=new ArrayList<Student>();
		//创建键盘输入
		Scanner sc=new Scanner(System.in);
		//输入读取
		read(filename,array);
		String id;
		while(true){
			System.out.println("id:");
			id=sc.nextLine();
			int index=-1;
			//循环判断是否有重复
			for(int a=0;a<array.size();a++){
				Student s=array.get(a);
				if(s.getId().equals(id)){
					index=a;							
				}
			}
			if(index==-1){
				System.out.println("不存在...");
			}else{
				System.out.println("name:");
				String name=sc.nextLine();
				System.out.println("age:");
				String age=sc.nextLine();
				Student s=new Student();
				s.setId(id);
				s.setName(name);
				s.setAge(age);
				array.set(index,s);
				System.out.println("修改成功");
				break;
			}
		}
		writer(filename,array);	
	}
	
	//删除学生信息
	public static void deleteStudent(String filename) throws IOException{
		//创建集合对象array
		ArrayList<Student> array=new ArrayList<Student>();
		//调用输入读取方法
		read(filename,array);
		//创建键盘输入
		Scanner sc=new Scanner(System.in);
		int index=-1;
		while(true){
			//创建变量id接收键盘输入的数据
			String id=sc.nextLine();
			for(int a=0;a<array.size();a++){
				Student s=array.get(a);
				if(s.getId().equals(id)){
					index=a;
				}
			}
			if(index==-1){
				System.out.println("not found");
			}else{
				array.remove(index);
				System.out.println("delete成功");
				break;
			}
		}
		//输出写入到文本
		writer(filename,array);
	}
	
}// 这个大括号是类的
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值