10.6 IoStudentManager
package day11_io_student.student_demo;
public class Student {
private String id;
private String name;
private String age;
private String address; public Student() {
} public Student(String id, String name, String age, String address) {
this.id = id;
this.name = name;
this.age = age;
this.address = address;
} 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 String getAge() {
return age;
} public void setAge(String age) {
this.age = age;
} public String getAddress() {
return address;
} public void setAddress(String address) {
this.address = address;
}
}
将学生管理方法中产生的数据记录(读写)到文件中。
package day11_io_student.student_demo; import java.io.*;
import java.util.ArrayList;
import java.util.Scanner;
/*
* iostudent增加了read和write两个方法,实现读写数据到文件的操作
* 除了查看学生只用到read方法,其他几个都对文件进行了改动所以在结束时要将改动部分写入文件中
* read、write方法和文件、集合关联(即参数引用)。增删改程序和文件关联。
* ArrayListd对象从只在main中new改为在各个方法中去new
* br和bw记得throw exception,close file*/
public class IoStudentManager {
public static void main(String[] args) throws IOException {
// ArrayList<Student> fileName = new ArrayList<Student>();
String fileName = "student.txt"; while(true) {
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 num = sc.nextLine(); switch(num) {
case "":
findAllStatus(fileName);
break;
case "":
addStatus(fileName);
break;
case "":
updateStatus(fileName);
break;
case "":
deleteStatus(fileName);
break;
case "":
default:
System.out.println("谢谢使用!");
System.exit();
break;
}
}
} //从集合写数据到文件
public static void writeData(String fileName,ArrayList<Student> arrayli) throws IOException {
BufferedWriter bw = new BufferedWriter(new FileWriter(fileName)); for(int i=;i<arrayli.size();i++) {
Student sn = arrayli.get(i);
StringBuilder sb = new StringBuilder();
sb.append(sn.getId()).append(",").append(sn.getName()).append(",").append(sn.getAge()).append(",").append(sn.getAddress()); bw.write(sb.toString());
bw.newLine();
bw.flush();
}
bw.close();
} //从文件读数据到集合
public static void readData(String fileName,ArrayList<Student> arrayli) throws IOException{
BufferedReader br = new BufferedReader(new FileReader(fileName)); String line;
while((line=br.readLine())!=null) {
String[] datasarray = line.split(",");
Student st = new Student(datasarray[],datasarray[],datasarray[],datasarray[]);
arrayli.add(st);
}
br.close();
} //查看学生
public static void findAllStatus(String fileName) throws IOException {
ArrayList<Student> arrayli = new ArrayList<Student>();
//从文件读取数据到集合
readData(fileName,arrayli); if(arrayli.size()==) {
System.out.println("学生不存在,请添加");
return;
} System.out.println("学号"+"\t"+"姓名"+"\t"+"年龄"+"\t"+"地址");
for(int i=;i<arrayli.size();i++) {
Student st = arrayli.get(i);
System.out.println(st.getId()+"\t"+st.getName()+"\t"+st.getAge()+"\t"+st.getAddress());
} } //添加学生
public static void addStatus(String fileName) throws IOException {
ArrayList<Student> arrayli = new ArrayList<Student>();
//从文件中读数据到集合
readData(fileName,arrayli); Scanner sc = new Scanner(System.in);
String ids; //判断id是否重复
while(true) {
System.out.println("请输入学号:");
ids = sc.nextLine(); //从集合中遍历学号,看学号是否已经存在
boolean tag=false;
for(int i=;i<arrayli.size();i++) {
Student sn = arrayli.get(i);
if(sn.getId().equals(ids)) {
tag = true;
break;
}
} if(tag) {
System.out.println("学号已经存在,请重新输入!");
}else {
break;
}
} System.out.println("请输入姓名:");
String names = sc.nextLine();
System.out.println("请输入年龄:");
String ages = sc.nextLine();
System.out.println("请输入地址:");
String adds = sc.nextLine(); //添加学生
Student st = new Student(ids,names,ages,adds);
arrayli.add(st); //把集合的数据重新写会文件
writeData(fileName,arrayli);
System.out.println("添加学生成功!");
} //修改学生
public static void updateStatus(String fileName) throws IOException {
ArrayList<Student> arrayli = new ArrayList<Student>();
//从文件中读数据到集合
readData(fileName,arrayli); Scanner sc = new Scanner(System.in);
String ids; while(true) {
System.out.println("请输入要改的学号:");
ids = sc.nextLine(); int len = -;
for(int i=;i<arrayli.size();i++) {
Student sn = arrayli.get(i);
if(sn.getId().equals(ids)) {
len = i;
}
} if(len==-) {
System.out.println("学生不存在");
}else {
System.out.println("请输入修改姓名:");
String names = sc.nextLine();
System.out.println("请输入修改年龄:");
String ages = sc.nextLine();
System.out.println("请输入修改地址:");
String adds = sc.nextLine(); //修改学生
Student st = new Student(ids,names,ages,adds);
arrayli.set(len,st); //把集合数据重新写回文件
writeData(fileName,arrayli);
System.out.println("修改学生成功!");
break;
}
}
} //删除学生
public static void deleteStatus(String fileName) throws IOException {
ArrayList<Student> arrayli = new ArrayList<Student>();
//从文件中读数据到集合
readData(fileName,arrayli); Scanner sc = new Scanner(System.in);
String ids; while(true) {
System.out.println("请输入要删除的学生:");
ids = sc.nextLine(); int num = -;
for(int i=;i<arrayli.size();i++) {
if(arrayli.get(i).getId().equals(ids)) {
num = i;
}
} if(num==-) {
System.out.println("学生不存在!");
}else {
arrayli.remove(num);
//把集合中的数据重新写回到文件
writeData(fileName, arrayli);
System.out.println("deleted!");
break;
}
} } }
10.6 IoStudentManager的更多相关文章
- Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part3:db安装和升级
Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part3:db安装和升级 环境:OEL 5.7 + Oracle 10.2.0.5 RAC 5.安装Database软件 5. ...
- Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part1:准备工作
Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part1:准备工作 环境:OEL 5.7 + Oracle 10.2.0.5 RAC 1.实施前准备工作 1.1 服务器安装操 ...
- ArcGIS 10.0紧凑型切片读写方法
首先介绍一下ArcGIS10.0的缓存机制: 切片方案 切片方案包括缓存的比例级别.切片尺寸和切片原点.这些属性定义缓存边界的存在位置,在某些客户端中叠加缓存时匹配这些属性十分重要.图像格式和抗锯齿等 ...
- CI Weekly #10 | 2017 DevOps 趋势预测
2016 年的最后几个工作日,我们对 flow.ci Android & iOS 项目做了一些优化与修复: iOS 镜像 cocoapods 版本更新: fir iOS上传插件时间问题修复: ...
- 10个最好用的HTML/CSS 工具、插件和资料库
大家在使用HTML/CSS开发项目的过程中,有使用过哪些工具,插件和库?下面介绍的10种HTML/CSS工具,插件和资料库,是国外程序员经常用到的. Firebug Lite FirebugLite ...
- 【Win 10 应用开发】启动远程设备上的应用
这个功能必须在“红石-1”(build 14393)以上的系统版中才能使用,运行在一台设备上的应用,可以通过URI来启动另一台设备上的应用.激活远程应用需要以下前提: 系统必须是build 14393 ...
- 在Ubuntu 16.10安装mysql workbench报未安装软件包 libpng12-0错误
1.安装mysql workbench,提示未安装软件包 libpng12-0 下载了MySQL Workbench 6.3.8 在安装的时候报错: -1ubu1604-amd64.deb 提示: ...
- Ubuntu 16.10 安装byzanz截取动态效果图工具
1.了解byzanz截取动态效果图工具 byzanz能制作文件小,清晰的GIF动态效果图,不足就是,目前只能通过输入命令方式来录制. byzanz主要的参数选项有: -d, --duration=SE ...
- Ubuntu 16.10 安装KolourPaint 4画图工具
KolourPaint 4画图工具简单实用,可以绘画.视频处理和图标编辑: • 绘画:绘制图表和“手绘” • 视频处理:编辑截图和照片;应用特效 • 图标编辑:绘画剪贴和标识透明化 1.在Ubuntu ...
随机推荐
- 如何在vue中修改动态标签中的样式和修改组件库样式
vue中修改动态标签中的样式和修改组件库样式 因为vue中的标签在渲染的时候,都会给标签加上id 所以你想在<style lang="scss" scoped>直接修改 ...
- JVM收集器简介
JVM GC收集器集合:
- HTML,CSS,JavaScript,json,xml之间的关系
1.浏览器工作原理: https://blog.csdn.net/Luncles/article/details/80320082 2.HTML,XML,JSON之间的关系: https://blog ...
- 洛谷P1957口算练习题题解
前言: 题目传送门:https://www.luogu.com.cn/problem/P1957 其实这很简单 纯模拟撒~~~~ 正文开始: _话说 ,就当本蒟蒻正高高兴兴的刷水题时,居然 碰到了这个 ...
- Python字符串及基本操作(入门必看)
基础入门的知识一直没有更新完,今天小张接着给大家带来入门级的字符串的常用操作.本文适合刚入门的小白,大佬们请绕过. 一.定义 字符串的意思就是“一串字符”,比如“Hello,Charlie”是一个字符 ...
- 【Java】 NullPointerException、ArrayIndexOutOfBoundsException、ClassCastException、ArrayIndexOutOfBoundsException、ArrayStoreException、ArithmeticException等没有异常堆栈信息
今天工作中,临时Fix一个bug,一看日志“java.lang.ClassCastException: null”相当懵逼,没有详细堆栈信息,这咋整.虽然根据上下文可以推测代码的大致位置,但不敢拍板确 ...
- 老板说,Vim宏都不会用,你的工作效率太低啦~
工作中,对于文本文件的编辑我们经常有这样的需求: 多次重复输入一段相同文本: 生成一段序列化的文本: 每行文本插入一句相同的文本. 除此之外,还有很多需要重复操作的动作.对于这些需求,如果我们人工去操 ...
- GitLab → 搭建中常遇的问题与日常维护
开心一刻 隔壁有一个80多岁的老大爷,昨天在小区的一棵树下发现一条黑色的蛇,冻僵了,大爷善心大发,就把蛇揣在了怀里,想给它一点温暖. 今天一大早看到大爷在树上挂了一个牌子,写到:不准随地大小便! 搭建 ...
- vscode vue 格式化 ESLint 检查 单引号 双引号 函数括号报错问题
vscode vue 格式化 最近重新搞了下电脑,重装了 vscode 软件,在用 vue 写项目的时候,照例开启了 ESLint 语法检查,但是发现在使用 vscode 格式化快捷键的时候(shif ...
- Api接口幂等设计
1,Api接口幂等设计,也就是要保证数据的唯一性,不允许有重复. 例如:rpc 远程调用,因为网络延迟,出现了调用了2次的情况. 表单连续点击,出现了重复提交. 接口暴露之后,会被模拟请求工具(Jem ...