员工管理系统(集合与IO流的结合使用 beta5.0 BufferedReader/ BufferedWriter)
package cn.gee;
public class Emp {
private String id;//员工编号 一般是唯一的
private String sname;
private int age;
private float salary;
public Emp(){
}
public Emp(String id, String sname, int age, float salary) {
super();
this.id = id;
this.sname = sname;
this.age = age;
this.salary = salary;
}
@Override
public String toString() {
return id+","+sname+","+ age + "," + salary;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public float getSalary() {
return salary;
}
public void setSalary(float salary) {
this.salary = salary;
}
}
Emp.java
package cn.gee; import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.LinkedList;
import java.util.List; /**
* 1.每个员工信息 一条一条 写到文件中
* 2.把多个员工(集合)一起写进去或者读出来
* @author y
*
*/
public class EmpBussiness {
List<Emp> emps=new LinkedList<Emp>(); public EmpBussiness() throws IOException{
init();
}
private void init() throws IOException{
read();
}
//获得已有的员工信息
private void read() throws IOException{
FileReader fr=new FileReader("C:\\zhougb\\08\\08\\08\\emps.txt");
BufferedReader br=new BufferedReader(fr);
String empStr=null;
while((empStr=br.readLine())!=null){
String[] empStrs=empStr.split(",");
emps.add(new Emp(empStrs[0],empStrs[1],Integer.parseInt(empStrs[2]),Float.parseFloat(empStrs[3])));
}
fr.close();
br.close();
} public void write() throws IOException{
FileWriter fw=new FileWriter("C:\\zhougb\\08\\08\\08\\emps.txt");
BufferedWriter bw=new BufferedWriter(fw);
for(Emp e:emps){
bw.write(e.toString());
bw.newLine();
}
bw.flush();
fw.close();
bw.close();
} //添加员工
public void add(Emp emp) throws IOException{
// read();
emps.add(emp);
write(); } //查询所有员工
public List<Emp> selectAll() throws IOException{
//read();
return emps;
} //查询单个员工
public Emp select(String id){ for(Emp e:emps){
System.out.println("EmpBussiness.select()"+e.getId());
if(id.equals(e.getId())){
return e;
}
}
return null;
}
//删除单个员工
public boolean delete(String id) throws IOException{ for(Emp e:emps){
if(id.equals(e.getId())){
emps.remove(e);
write();
return true;
}
} return false;
} /**修改员工:
* 1.不论属性有没有值,都覆盖旧的数据
* 2.如果属性没有值,那么旧的数据就不覆盖
* @param nemp
* @return
*/
public boolean update(Emp nemp){
boolean ret=false;
for(Emp e:emps){
if(nemp.getId().equals(e.getId())){
e.setAge(nemp.getAge());
e.setSalary(nemp.getSalary());
e.setSname(nemp.getSname());
ret= true;
}
}
return ret;
}
}
EmpBussiness.java
package cn.gee; import java.io.IOException;
import java.util.List;
import java.util.Random;
import java.util.Scanner; public class View {
public static void main(String[] args) throws IOException {
EmpBussiness empBussiness=new EmpBussiness();
System.out.println("------------------------------员工管理系统beta1.0--------------------------");
System.out.println("1:添加员工 2:查询员工 3:删除员工 4:修改员工 5:所有员工 6:退出系统");
Scanner sc=new Scanner(System.in);
int choice=sc.nextInt();
while(choice<6){
switch (choice) {
case 1:
System.out.println("请输入名称:");
String sname=sc.next();
System.out.println("请输入年龄:");
int age=sc.nextInt();
System.out.println("请输入薪资:");
float salary=sc.nextFloat();
empBussiness.add(new Emp(Math.round(Math.random()*10000)+"",sname,age,salary));
System.out.println("添加成功~");
break;
case 2:
System.out.println("请输入编号:");
String id=sc.next();
System.out.println("员工编号 员工姓名 员工年龄 员工薪资");
System.out.println(doShow(empBussiness.select(id)));
break;
case 3:
System.out.println("请输入编号:");
String did=sc.next();
empBussiness.delete(did);
System.out.println("删除成功~");
break;
case 4:
//empBussiness.delete(sc.next());
break;
case 5:
System.out.println("员工编号 员工姓名 员工年龄 员工薪资");
StringBuilder sb=new StringBuilder();
List<Emp> emps=empBussiness.selectAll();
for(Emp e:emps){
sb.append(doShow(e));
} System.out.println(sb);
break;
case 6:
return ; }
choice=sc.nextInt();
} } private static String doShow(Emp e){
StringBuilder sb=new StringBuilder();
sb.append(e.getId()+" ");
sb.append(e.getSname()+" ");
sb.append(e.getAge()+" ");
sb.append(e.getSalary()+" ");
sb.append("\n");
return sb.toString();
} }
View.java
员工管理系统(集合与IO流的结合使用 beta5.0 BufferedReader/ BufferedWriter)的更多相关文章
- 员工管理系统(集合与IO流的结合使用 beta3.0 BufferedReader / ObjectOutputStream)
Employee.java package cn.employee_io; public class Employee { private String empId; private String n ...
- 员工管理系统(集合与IO流的结合使用 beta2.0 ObjectInputStream/ ObjectOutputStream)
package cn.employee; import java.io.Serializable; public class Employee implements Serializable{ pri ...
- 员工管理系统(集合与IO流的结合使用 beta4.0 ObjectInputStream/ ObjectOutputStream)
package cn.employee_io; import java.io.Serializable; public class Employee implements Serializable{ ...
- 员工管理系统(集合与IO流的结合使用 beta1.0 ArrayList<Employee>)
package cn.employee; public class Employee { private int empNo; private String name; private String ...
- Java集合、IO流、线程知识
一.集合: 1. 集合框架: 1)Collection (1)List:有序的,有索引,元素可重复. (add(index, element).add(index, Collection).remov ...
- Properties集合与IO流
package com.itheima.demo07.Prop; import java.io.FileOutputStream; import java.io.FileReader; import ...
- Java基础知识强化之IO流笔记53:IO流练习之 自定义类模拟BufferedReader的readLine()功能案例
1. 用Reader模拟BufferedReader的readLine()功能: readLine():一次读取一行,根据换行符判断是否结束,只返回内容,不返回换行符 2. 代码实现和思路分析: ...
- Java里的IO流里的FileReader里的BufferedReader读取并在前打印行数!
哈哈!!我又来了!!这个里面没有运用readLine 的方法!!纯手打!! import java.io.BufferedReader; import java.io.FileNotFoundExce ...
- IO流学习笔记(二)之BufferedWriter与BufferedReader及实例Demo
在之前的学习笔记(http://blog.csdn.net/megustas_jjc/article/details/72853059)中,FileWriter与FileReader的Demo使用的中 ...
随机推荐
- Office文档如何转换 PDF 转 DOC XLS
1 使用Adobe Acrobat Pro,打开任意PDF都可以转换为XLSX格式(似乎没找到XLS) 2 如果你转换之后的东西无法打开,则先转换成DOC,然后再把DOC全选复制粘贴到XLS即可 ...
- Deepin-安装vscode
安装方式有两种: 1.通过命令安装 sudo apt-get install vscode 2.通过deb或rpm包安装 我们是Debian系列的系统,所以用deb包,关于红帽系统,请使用rpm包. ...
- hdu 5087 Revenge of LIS II ( LIS ,第二长子序列)
链接:hdu 5087 题意:求第二大的最长升序子序列 分析:这里的第二大指的是,全部的递增子序列的长度(包含相等的), 从大到小排序后.排在第二的长度 cid=546" style=&qu ...
- Windows 8.1更新变化
在上个月微软公布了Windows 8.1更新(KB2919355),假设大家使用的是Windows 8.1的系统,而且启用了自己主动更新,那这个更新就会被自己主动安装.伴随着这个更新,微软同一时 ...
- 2016-2017 ACM-ICPC Southwestern European Regional Programming Contest (SWERC 2016) E.Passwords AC自动机+dp
题目链接:点这里 题意: 让你构造一个长度范围在[A,B]之间 字符串(大小写字母,数字),问你有多少种方案 需要满足条件一下: 1:构成串中至少包含一个数字,一个大写字母,一个小写字母: 2:不 ...
- java8--IO工具类(java疯狂讲义3复习笔记)
Paths类 public static void pathTest(){ Path path = Paths.get("~"); System.out.println(path) ...
- C 项目案例实践(1)数据结构之链表(0)
链表是通过一组任意的存储单元来存储线性表中的数据元素的,那么怎样表示出数据元素之间的线性关系呢?为建立数据元素之间的线性关系,对每个数据元素ai,除了存放数据元素的自身信息ai之外,还需要存放和ai一 ...
- FOUNDATION OF ASYNCHRONOUS PROGRAMMING
The async and await keywords are just a compiler feature. The compiler creates code by using the Tas ...
- CRM2011部署问题小结
1 CRM2011部署当插件太多,并且文件太多的时候选择硬盘部署 2 在生产环境这样复杂的CRM2011部署环境的时候弄清楚每台CRM服务器的结构是很重要的弟一步 3 一定要注意DMZ区和内网隔离的, ...
- Object Query Language (OQL) query 基本使用
OQL是对java堆内存进行查询分析 使用方法: 1.查看java线程id jps -lvm 上图红框中的为pid: 2.运行命令-导出堆内存信息-会生成一份文件在你本地 jmap -dump:liv ...