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. 033.Kubernetes集群安全-API Server认证及授权

    一 Kubernetes集群安全 1.1 安全机制 Kubernetes通过一系列机制来实现集群的安全控制,其中包括API Server的认证授权.准入控制机制及保护敏感信息的Secret机制等.集群 ...

  2. js获取按钮的文字

    button按钮有两种情况: 1 <input type="button" id="button" value="button"> ...

  3. vue-autoui自匹配webapi的UI控件

    vue-autoui 是一款基于vue和element扩展的一个自动化UI控件,它主要提供两个控件封装分别是auto-form和auto-grid; 通过这两个控件可以完成大多数的信息输入和查询输出的 ...

  4. CF57C Array

    题目传送门 题目大意(摘自洛谷) 描述 对于长度为n的数组A,A中只包含从1到n的整数(可重复).如果A单调不上升或单调不下降,A就可称为美丽的. 找出在长度为n时,有几个美丽的A. 输入 一个整数n ...

  5. Linux软件安装之JDK的安装

    JDK的安装 1.1. 下载JDK,此处版本是1.8u131,实际操作以自己具体版本为准 先查看Linux系统是多少位(32位/64位):getconf LONG_BIT 然后去官网下载JDK [jd ...

  6. F版本SpringCloud 3—大白话Eureka服务注册与发现

    引用:服务注册与发现,就像是租房子一样 前言 今天洛阳下雨了,唉,没有想到有裹上了羽绒服,不穿冷穿了热的尴尬温度.上学工作这么多年都在外面,家里竟然没有一件春天的外套. 日常闲聊之后,开始今天的芝士环 ...

  7. IdentityServer4源码解析_1_项目结构

    目录 IdentityServer4源码解析_1_项目结构 IdentityServer4源码解析_2_元数据接口 IdentityServer4源码解析_3_认证接口 IdentityServer4 ...

  8. Cisco 综合配置(一)

    要求: 1.内网所有PC及服务器都能访问外网 2.外网通过公网地址 202.101.100.3 访问内网服务器的Telnet服务 配置: PC.服务器都配置好自己的IP和默认网关:192.168.1. ...

  9. 【开源】使用Angular9和TypeScript开发RPG游戏(补充了Buffer技能)

    RPG系统构造 通过对于斗罗大陆小说的游戏化过程,熟悉Angular的结构以及使用TypeScript的面向对象开发方法. Github项目源代码地址 RPG系统构造 ver0.02 2020/03/ ...

  10. 七大Github机器学习热门项目

    译者 | 小韩 来源 | analyticsvidhya.com[磐创AI导读]:让我们一起来看下近期热门的机器学习Github仓库,包括了自然语言处理(NLP).计算机视觉(CV)与大数据等多个领域 ...