Java基础知识章节梳理--综合练习之学生系统IO版(理论)

此功能主要是在eclipse控制台上进行测试和查看,所有我称之为“理论",里面是我按照前几段学习知识点的小总结。简单画了一下大致的功能梳理图


写这个主要目的是巩固以及加深这方面知识的理解,具体代码如下:


package com.myself.studen_manage;

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 Manage {
	/*
	 * 
	 * 为了方便阅读,全部代码写在一个类中。
	 * 定义方法都修饰成静态方法,以便main方法方便调用
	 * 存储的文件为了方法使用,直接放到了项目的根目录下
	 * 由于技术有限目前只能通过覆盖文件的方式进行数据的增删改
	 * student类中有四个属性分别为 学生id,学生姓名,学生年龄,学生居住地
	 */
	public static void main(String[] args) throws IOException, InterruptedException {
		//获取接盘录入
		Scanner sc = new Scanner(System.in);
		//判断集合是否为空
		boolean flag = isNull();
		//模拟软件的功能
		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  退出系统");
			//
			String id = sc.next();
			switch(id){
			case "1":
				//添加学生信息
				addStudent();
				break;
			case "2":
				//修改学生信息
				updateStudent();
				break;
			case "3":
				//删除学生信息
				deleteStudent();
				break;
			case "4":
					if(flag){
						System.out.println("里面空空如也,请添加数据");
						break;
					}
					System.out.println("请选择你想查询的内容:");
					System.out.println("1  查询个人信息");
					System.out.println("2  查询全体学生信息");
					int num = sc.nextInt();
					String name = null;
					switch(num){
					case 1:
						System.out.println("请输入你想查询的学生姓名:");
						name = sc.next();
					case 2:
						//查找学生信息
						findStudent(name);
						break;
					default:
						System.out.println("输入无效");
					}
					break;
			default:
				System.out.println("请输入正确序号!");
			}
			//获取当前线程(main)并休眠1秒
			Thread.currentThread().sleep(1000);
		}
	}
	//查看学生信息
	private static void findStudent(String name) throws IOException {
		ArrayList<Student> list = readDate();
		if(name!=null){
			for (int i = 0; i < list.size(); i++) {
				Student s = list.get(i);
				if(s.getSname().equals(name)){
					System.out.println("学号"+"\t"+"姓名"+"\t"+"年龄"+"\t"+"居住地");
					System.out.println(s.getSid()+"\t"+s.getSname()+"\t"
					+s.getAge()+"\t"+s.getAddress());
				}
			}
			return;
		}
		System.out.println("学号"+"\t"+"姓名"+"\t"+"年龄"+"\t"+"居住地");
		for (int i = 0; i < list.size(); i++) {
			Student s = list.get(i);
			System.out.println(s.getSid()+"\t"+s.getSname()+"\t"
					+s.getAge()+"\t"+s.getAddress());
		}
		
	}
	//删除学生信息
	private static void deleteStudent() throws IOException {
		ArrayList<Student> list = readDate();
		if(list==null){
			return;
		}
		System.out.println("请输入想要删除的学生ID:");
		Scanner sc = new Scanner(System.in);
		String id = sc.nextLine();
		for (int i = 0; i < list.size(); i++) {
			Student s = list.get(i);
			if(s.getSid().equals(id)){
				list.remove(i);
				writeDate(list);
				System.out.println("学生信息删除成功");
				return;
			}
		}
		System.out.println("没有找此ID");
	}
	//修改学生信息
	private static void updateStudent() throws IOException {
		ArrayList<Student> list = readDate();
		if(list==null){
			return;
		}
		System.out.println("请输入想要修改的学生ID:");
		Scanner sc = new Scanner(System.in);
		String id = sc.nextLine();
		for (int i = 0; i < list.size(); i++) {
			Student s = list.get(i);
			if(s.getSid().equals(id)){
				s = writeStudent();
				list.add(s);
				writeDate(list);
				System.out.println("学生信息修改成功");
				return;
			}
		}
		System.out.println("没有找此ID");
	}
	//添加学生信息
	private static void addStudent() throws IOException {
		Student student = writeStudent();
		//创建集合对象
		ArrayList<Student> list = readDate();
		//将student对象存入到集合中
		list.add(student);;
		writeDate(list);
		System.out.println("添加学生信息完成");
	}
	//从文件中读取到学生信息
	private static ArrayList<Student> readDate() throws IOException{
		ArrayList<Student> list = new ArrayList<>();
		//创建字符缓冲输入流对象
		BufferedReader br = new BufferedReader(new FileReader("student.txt"));
		String str = null;
		Student s = new Student();
		//获取一行数据
		while((str = br.readLine())!=null){
			//逻辑判断空字符串
			if(str.equals("")){
				continue;
			}
			//拆分字符串
			String[] str1 = str.split(",");
			s.setSid(str1[0]);
			s.setSname(str1[1]);
			s.setAge(Integer.parseInt(str1[2]));
			s.setAddress(str1[3]);
			list.add(s);
		}
		br.close();
		//获取集合长度并判断
		if(list.size()==0){
			System.out.println("里面空空如也,请添加数据");
			return null;
		}
		return list;
		
	}
	//将集合中的内容写入到文件中
	private static void writeDate(ArrayList<Student> list) throws IOException{
		//创建字符缓冲输出流对象
		BufferedWriter bw = new BufferedWriter(new FileWriter("student.txt"));	
		//创建字符缓冲流对象
		StringBuilder sb = new StringBuilder();
		for(int i = 0; i<list.size(); i++){
			Student s = list.get(i);
			//字符串拼接
			sb = sb.append(s.getSid()).append(",").append(s.getSname())
					.append(",").append(s.getAge()).append(",").append(s.getAddress());
			//将数据写入
			bw.write(sb.toString());
			//换行
			bw.newLine();
			//刷新资源
			bw.flush();
		}
		bw.close();
	}
	//便于浏览写学生信息专门放到一个方法里
	private static Student writeStudent(){
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入学生学号:");
		String sid = sc.nextLine();
		System.out.println("请输入学生姓名:");
		String sname = sc.nextLine();
		System.out.println("请输入学生年龄:");
		int age = sc.nextInt();
		System.out.println("请输入学生居住地:");
		String address = sc.nextLine();
		Student student = new Student(sid,sname,age,address);
		return student;
	}
	//判断是否为空
	private static boolean isNull() throws IOException{
		ArrayList<Student> list = readDate();
		if(list==null){
			return true;
		}
		return false;
	}
}

猜你喜欢

转载自blog.csdn.net/lbusters/article/details/80450181