package com.czz.text03;
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;
/*
* 使用文件保存多个学生信息,在程序中提供查询,添加,删除的功能
* 分析:
1.用info.txt文件保存学生信息
2.main方法中使用while循环不断的接收用户的操作
3.查询,添加,删除分别封装成方法
*/
publicclassStudentDemo {
static Scanner sc = new Scanner(System.in);
publicstaticvoid main(String[] args) throws Exception {
while (true) {
System.out.println();
System.out.println("请根据下面选项输入您想要的操作");
System.out.println("1.查询 2.删除 3.添加 4.显示 5.退出");
System.out.println("请输入您的选项: ");
intitem = sc.nextInt();
switch (item) {
case 1:
search();
break;
case 2:
System.out.println("删除");
delete();
break;
case 3:
add();
System.out.println("添加");
break;
case 4:
System.out.println("显示");
showAll();
break;
case 5:
System.out.println("感谢您的使用");
System.exit(-1);
break;
}
}
}
// 添加元素
privatestaticvoid add() throws Exception {
System.out.println("输入要添加的学号:");
Stringnum= sc.next();
if (!isExists(num)) {
System.out.println("输入姓名:");
Stringname= sc.next();
System.out.println("输入成绩:");
Stringscore= sc.next();
// 输出流
BufferedWriterbw = new BufferedWriter(new FileWriter("info.txt",true));
bw.write(num + "," + name + "," + score);
bw.newLine();
bw.flush();
bw.close();
System.out.println("添加成功");
}else{
System.out.println("你输入的学号已经存在.");
}
}
// 删除
privatestaticvoid delete() throws Exception, IOException,Exception {
System.out.println("输入将要删除掉的学号: ");
Stringnum= sc.next();
if (isExists(num)) {
BufferedReaderbr = new BufferedReader(new FileReader("info.txt"));
ArrayList<String>list= newArrayList<>();
Stringinfo= null;
while ((info = br.readLine()) != null) {
if (!info.startsWith(num)) {
list.add(info);
}
}
br.close();
// 将剩余的信息写回原文件
BufferedWriterbw = new BufferedWriter(new FileWriter("info.txt"));
for (String infos : list) {
bw.write(infos);
bw.newLine();
bw.flush();
}
bw.close();
System.out.println("删除成功");
}else{
System.out.println("你输入的学号不存在");
}
}
// 显示所有信息
privatestaticvoid showAll() throws Exception {
BufferedReaderbr= newBufferedReader(newFileReader("info.txt"));
System.out.println("学号\t姓名\t成绩");
Stringline= null;
while ((line = br.readLine()) != null) {
String[]split= line.split(",");
System.out.println(split[0] + "\t" + split[1] + "\t" + split[2]);
}
}
// 查找功能
privatestaticvoid search() throws Exception {
System.out.println("请输入要查询的学号:");
Stringnum= sc.next();
// 判断学号是否存在
if (isExists(num)) {
BufferedReaderbr= newBufferedReader(newFileReader("info.txt"));
Stringline= null;
while ((line = br.readLine()) != null) {
if (line.startsWith(num)) {
System.out.println("学号\t姓名\t成绩");
// 切割
String[]split= line.split(",");
System.out.println(split[0] + "\t" + split[1] + "\t" + split[2]);
}
}
}else{
System.out.println("您输入的学号不存在");
}
}
// 判断学号是否存在
privatestaticboolean isExists(String num) throws Exception {
BufferedReaderbr= newBufferedReader(newFileReader("info.txt"));
ArrayList<String>list= newArrayList<>();
Stringline= null;
while ((line = br.readLine()) != null) {
list.add(line);
}
// 遍历集合
for (String info : list) {
if (info.startsWith(num)) {
returntrue;
}
}
returnfalse;
}
}