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 ...
随机推荐
- javascript 自动选中容器里的文字
前些时间有这么个需求,需要实现选中div里面的文字,选中了的文字可直接按ctrl+v(或者右键)实现黏贴操作. html代码: <div id="text" class=&q ...
- Python3学习之路~9.3 GIL、线程锁之Lock\Rlock\信号量、Event
一 Python GIL(Global Interpreter Lock) 全局解释器锁 如果一个主机是单核,此时同时启动10个线程,由于CPU执行了上下文的切换,让我们宏观上看上去它们是并行的,但实 ...
- 【原创】面试官:谈谈你对mysql联合索引的认识?
引言 本文预计分为两个部分: (1)联合索引部分的基础知识 在这个部分,我们温习一下联合索引的基础 (2)联合索引部分的实战题 在这个部分,列举几个我认为算是实战中的代表题,挑出来说说. 正文 基础 ...
- AI学习笔记:人工智能与机器学习概述
一.人工智能基本概念 1.1 基本概念 数据分析:对历史规律的展现.对未来数据的预测. 机器学习:机器学习是指从一系列的原始数据中找到规律,提取人们可以识别的特征,然后通过学习这些特征,最终产生一个模 ...
- 数据库-第三章 关系数据库标准语言SQL-3.3 数据查询
数据查询 例: 一.单表查询 1.定义 是指仅涉及一个表的查询 2.选择表中的若干列 查询指定列 例: 查询全部列 例: 查询经过计算的值 例: 3.选择表中的若干元组 消除取值重复的行 例: 查询满 ...
- 初步了解HTTP协议
1.HTTP简介 全称:Hyper Text Transfer Protocol,中文名:超文本传输协议. 功能:HTTP是客户端浏览器或其他程序与web服务器之间的应用层通信协议. 特点:a.支持 ...
- 图解kubernetes控制器StatefulSet核心实现原理
StatefulSet是k8s中有状态应用管理的标准实现,今天就一起来了解下其背后设计的场景与原理,从而了解其适用范围与场景 1. 基础概念 首先介绍有状态应用里面的需要考虑的一些基础的事情,然后在下 ...
- Worktile正式入驻飞书,助力企业轻松实现敏捷开发与协作
企业在敏捷研发中时常面临着交付延期.需求不匹配等问题,如何更高效地完成敏捷研发? Worktile携手飞书,为企业用户提供敏捷开发服务,帮助企业实现软件项目的需求管理.缺陷追踪.迭代规划与推进以及效能 ...
- IDEA 快捷键大全及常用插件
IDEA快捷键操作 颜色主题插件: **Material Theme UI Plugin ** 快捷键提醒: **Key Promoter X ** 查找Bug: QAPlig-FindBugs 热部 ...
- 高数解题神器:拍照上传就出答案,这个中国学霸做的AI厉害了 | Demo
一位叫Roger的中国学霸小哥的拍照做题程序mathAI一下子火了,这个AI,堪称数学解题神器. 输入一张包含手写数学题的图片,AI就能识别出输入的数学公式,然后给出计算结果. 不仅加减乘除基本运算, ...