文字数:约1100字 阅读时间:约15分钟
此文章为学习总结类型,文字很多且皆为基础知识
此功能主要是在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;
}
}