封装JavaBean
public class Student {
private String id;
private String name;
private Integer age;
public Student() {
super();
}
public Student(String id, String name, Integer age) {
super();
this.id = id;
this.name = name;
this.age = age;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
逻辑代码
package cn.itcast.Student01;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
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 Manager {
public static void main(String[] args) throws IOException {
//创建文件做持久化存储
File file=new File("student01.txt");
//如果文件不存在,则创建文件
if(!file.exists()){
file.createNewFile();
}
//获取集合
ArrayList<Student> arr=getBR();
Scanner sc=new Scanner(System.in);
//事先加载一遍文件的信息
checkAll(arr);
while(true){
Menu();
System.out.println("请输入命令:");
//用字符串接收。没有用数值接收,如果是数值接收输入字符串会抛异常。
String n=sc.next();
switch(n){
case "1":
add(sc,arr);
break;
case "2":
delete(sc,arr);
break;
case "3":
replace(sc,arr);
break;
case "4":
check(sc,arr);
break;
case "5":
System.out.println("退出系统,谢谢使用!");
//这里不需要break,system.exit()直接退出程序
System.exit(0);
default:
System.out.println("请输入正确的命令!");
break;
}
}
}
//查询方法
private static void check(Scanner sc, ArrayList<Student> arr) {
while(true){
System.out.println("请输入你要查询的学号:");
String id=sc.next();
for (int i = 0; i < arr.size(); i++) {
if(arr.get(i).getId().equals(id)){
System.out.println("学生学号"+"\t"+"学生姓名"+"\t"+"学生年龄");
System.out.println(arr.get(i).getId()+"\t"+arr.get(i).getName()+"\t"+arr.get(i).getAge());
return;
}
}
System.out.println("你要查询的学号不存在!");
}
}
//修改方法,这里没有修改学号,所以不要求学号是否重复
private static void replace(Scanner sc, ArrayList<Student> arr) throws IOException {
while(true){
System.out.println("请输入你要修改的学号:");
String id=sc.next();
for (int i = 0; i < arr.size(); i++) {
if(arr.get(i).getId().equals(id)){
System.out.println("请修改学生姓名:");
String name=sc.next();
System.out.println("请修改学生学号:");
int age=sc.nextInt();
arr.get(i).setName(name);
arr.get(i).setAge(age);
getBW(arr);
System.out.println("修改成功!");
checkAll(arr);
return;
}
}
System.out.println("你要修改的学号不存在!");
}
}
//删除方法
private static void delete(Scanner sc, ArrayList<Student> arr) throws IOException {
while(true){
System.out.println("请输入你要删除的学号:");
String id=sc.next();
for (int i = 0; i < arr.size(); i++) {
if(arr.get(i).getId().equals(id)){
arr.remove(i);
getBW(arr);
System.out.println("删除成功!");
checkAll(arr);
return;
}
}
System.out.println("你要删除的学号不存在!");
}
}
//添加方法
private static void add(Scanner sc, ArrayList<Student> arr) throws IOException {
while(true){
System.out.println("请输入你要添加的学号:");
String id=sc.next();
//判断学号是否重复
int count=0;
for (int i = 0; i < arr.size(); i++) {
if(arr.get(i).getId().equals(id)){
count++;
}
}
if(count==0){
System.out.println("请添加学生姓名:");
String name=sc.next();
System.out.println("请添加学生年龄:");
int age=sc.nextInt();
Student stu=new Student(id,name,age);
arr.add(stu);
getBW(arr);
System.out.println("添加成功!");
checkAll(arr);
return;
}
if(count!=0){
System.out.println("你要添加的学号已经存在,不能重复添加!");
}
}
}
//菜单方法
private static void Menu() {
System.out.println("1-->增加学生!");
System.out.println("2-->删除学生!");
System.out.println("3-->修改学生!");
System.out.println("4-->查询学生!");
System.out.println("5-->退出系统!");
}
//查询全部学生信息
private static void checkAll(ArrayList<Student> arr) {
System.out.println("学生学号"+"\t"+"学生姓名"+"\t"+"学生年龄");
for (int i = 0; i < arr.size(); i++) {
System.out.println(arr.get(i).getId()+"\t"+arr.get(i).getName()+"\t"+arr.get(i).getAge());
}
}
//写入到文本,实时更新数据
public static void getBW(ArrayList<Student> arr) throws IOException {
BufferedWriter bw=new BufferedWriter(new FileWriter("student01.txt"));
for (int i = 0; i < arr.size(); i++) {
bw.write(arr.get(i).getId()+"\t"+arr.get(i).getName()+"\t"+arr.get(i).getAge());
bw.newLine();
}
bw.close();
}
//创建集合来存储学生信息,后面的步骤都是来操作集合
private static ArrayList<Student> getBR() throws NumberFormatException, IOException {
ArrayList<Student> arr=new ArrayList<>();
//读取文本并循环遍历添加到集合
BufferedReader br=new BufferedReader(new FileReader("student01.txt"));
String line;
while((line=br.readLine()) !=null){
String[] str=line.split("\\t");
Student stu=new Student(str[0],str[1],Integer.valueOf(str[2]));
arr.add(stu);
}
br.close();
return arr;
}
}
这就是经常练习的增删改查案例