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. 还记得第一个看到的Flutter组件吗?

    注意:无特殊说明,Flutter版本及Dart版本如下: Flutter版本: 1.12.13+hotfix.5 Dart版本: 2.7.0 MaterialApp 在学习Flutter的过程中我们第 ...

  2. 从零开始学习R语言(一)——数据结构之“向量”(Vector)

    本文首发于知乎专栏:https://zhuanlan.zhihu.com/p/59688569 也同步更新于我的个人博客:https://www.cnblogs.com/nickwu/p/125370 ...

  3. shell编程之if语句

    shell编程之if判断 目录 shell编程之if判断 1.整数比较 2.字符串比较 3.举例 1.数字比较 2.字符串比较 4.Other 1.整数比较 -eq 等于,如:if [ "$ ...

  4. Grid Illumination

    2019-07-07 16:53:31 问题描述: 问题求解: 本题和n后问题很类似,所以最初的时候就直接套了n后的板子,MLE. public int[] gridIllumination(int ...

  5. 企业级自动化部署方案——ansible实现tomcat自动安装和配置

    共耗时10多个小时 思路一 总体设计 ansible-playbook目录结构 [root@ansible ~]# tree /etc/ansible/roles/tomcat /etc/ansibl ...

  6. 详解firewalld 和iptables

    在RHEL7里有几种防火墙共存:firewalld.iptables.ebtables,默认是使用firewalld来管理netfilter子系统,不过底层调用的命令仍然是iptables等. fir ...

  7. 50行代码实现GAN | 干货演练

    2014年,Ian Goodfellow和他的同事发表了一篇论文,向世界介绍了生成对抗网络(GAN).通过对计算图和博弈论的创新性组合,他们表明如果有足够的建模能力,两个相互对抗的模型可以通过普通的反 ...

  8. 8 个出没在 Linux 终端的诡异家伙

    这篇文章,我们一起来到 Linux 的诡异的一面-- 你知道吗?在我们日常使用的 Unix(和 Linux )及其各种各样的分支系统中,存在着一些诡异的命令或进程,它们让人毛骨悚然,有些确实是有害,但 ...

  9. SG函数(斐波那契博弈) Fibonacci again and again

    https://zhuanlan.zhihu.com/p/53948422 HDU - 1848 将这篇文章认真的看了一遍 ,虽然不是很懂 ,但是脑子里有了一个模型,链接里的图 (看的顺序 是 0,1 ...

  10. 从本地方法栈看到jni调用

    我们都知道java虚拟机所管理的内存区域包括方法区,堆,虚拟机栈,本地方法栈,程序计数器. 在<深入理解java虚拟机>中,周志明老师对虚拟机栈进行了讲解,但是对本地方法栈却一笔带过.今天 ...