A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

简单学生管理系统,实现了学生的增删改查,使用了简单的IO流知识,黑马基础班的课程,进行了简单的改进.
[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;
		}
	}
}

}




您需要登录后才可以回帖 登录 | 加入黑马