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的更多相关文章

  1. 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. ...

  2. 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 服务器安装操 ...

  3. ArcGIS 10.0紧凑型切片读写方法

    首先介绍一下ArcGIS10.0的缓存机制: 切片方案 切片方案包括缓存的比例级别.切片尺寸和切片原点.这些属性定义缓存边界的存在位置,在某些客户端中叠加缓存时匹配这些属性十分重要.图像格式和抗锯齿等 ...

  4. CI Weekly #10 | 2017 DevOps 趋势预测

    2016 年的最后几个工作日,我们对 flow.ci Android & iOS 项目做了一些优化与修复: iOS 镜像 cocoapods 版本更新: fir iOS上传插件时间问题修复: ...

  5. 10个最好用的HTML/CSS 工具、插件和资料库

    大家在使用HTML/CSS开发项目的过程中,有使用过哪些工具,插件和库?下面介绍的10种HTML/CSS工具,插件和资料库,是国外程序员经常用到的. Firebug Lite FirebugLite ...

  6. 【Win 10 应用开发】启动远程设备上的应用

    这个功能必须在“红石-1”(build 14393)以上的系统版中才能使用,运行在一台设备上的应用,可以通过URI来启动另一台设备上的应用.激活远程应用需要以下前提: 系统必须是build 14393 ...

  7. 在Ubuntu 16.10安装mysql workbench报未安装软件包 libpng12-0错误

    1.安装mysql workbench,提示未安装软件包 libpng12-0 下载了MySQL Workbench 6.3.8   在安装的时候报错: -1ubu1604-amd64.deb 提示: ...

  8. Ubuntu 16.10 安装byzanz截取动态效果图工具

    1.了解byzanz截取动态效果图工具 byzanz能制作文件小,清晰的GIF动态效果图,不足就是,目前只能通过输入命令方式来录制. byzanz主要的参数选项有: -d, --duration=SE ...

  9. Ubuntu 16.10 安装KolourPaint 4画图工具

    KolourPaint 4画图工具简单实用,可以绘画.视频处理和图标编辑: • 绘画:绘制图表和“手绘” • 视频处理:编辑截图和照片;应用特效 • 图标编辑:绘画剪贴和标识透明化 1.在Ubuntu ...

随机推荐

  1. [BUG]excel复制到input含有不可见内容(零宽字符)

    现象 excel手机号复制到input框子, length长度和可见长度不一致. "‭176xxxx1115‬" 长度是 13 而不是 11. 原因 手机号前后被 excel 插入 ...

  2. jQuery的简单用法(jQuery的简介,选择器,属性和css,文档处理)

    一.jQuery简介 1.1.  JS库 JavaScript 库封装了很多预定义的对象和实用函数.能帮助使用者建立有高难度交互客户端页面, 并且兼容各大浏览器. 1.2.  当前流行的 JavaSc ...

  3. [剑指offer]6.从尾到头打印链表+18.删除链表节点

    链表 6.从尾到头打印链表 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回). 方法一 迭代 创建空列表res,将链表值head.val依次存进res,返回翻转后的res 代码 cl ...

  4. 16. nested exception is com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "auditUnitName"

    org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver:handleHttpMessageNotRead ...

  5. 最通俗易懂的 HashMap 源码分析解读

    HashMap 作为最常用的集合类之一,有必要深入浅出的了解一下.这篇文章会深入到 HashMap 源码,刨析它的存储结构以及工作机制. 1. HashMap 的存储结构 HashMap 的数据存储结 ...

  6. 逻辑回归和sigmoid函数分类

    逻辑回归和sigmoid函数分类:容易欠拟合,分类精度不高,计算代价小,易于理解和实现 sigmoid函数与阶跃函数的区别在于:阶跃函数从0到1的跳跃在sigmoid函数中是一个逐渐的变化,而不是突变 ...

  7. python快速入门基础知识

    1.变量赋值与语句 #python 不需要手动指定变量类型.不需要分号 #To assign the value 365 to the variable days,we enter the varia ...

  8. 给Linux命令设置别名的几个步骤

    1.查看系统中的别名 alias 2.临时更改别名 alias rm='command not found.' 3.永久更改别名 vim /etc/profile ---> 最后一行添加 ali ...

  9. CSS3过渡结束监听事件,清除/修改表单元素的一些默认样式

    document.querySelector('div').addEventListener('transitionEnd',function(){ console.log('过度结束') }) 如果 ...

  10. HDU - 1962 二分图最大匹配模板(扑克牌得分最大)

    题意: 直接说数据,第一行给定几组数据,每一组数据的第一行是两个人扑克牌分别的数量,第一行是亚当的扑克牌,第二行是夏娃的扑克牌,每一个扑克牌的大小用两个字符来表示,第一个表示是几号扑克牌,第二个表示扑 ...