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

  1. 员工管理系统(集合与IO流的结合使用 beta3.0 BufferedReader / ObjectOutputStream)

    Employee.java package cn.employee_io; public class Employee { private String empId; private String n ...

  2. 员工管理系统(集合与IO流的结合使用 beta2.0 ObjectInputStream/ ObjectOutputStream)

    package cn.employee; import java.io.Serializable; public class Employee implements Serializable{ pri ...

  3. 员工管理系统(集合与IO流的结合使用 beta4.0 ObjectInputStream/ ObjectOutputStream)

    package cn.employee_io; import java.io.Serializable; public class Employee implements Serializable{ ...

  4. 员工管理系统(集合与IO流的结合使用 beta1.0 ArrayList<Employee>)

    package cn.employee; public class Employee { private int empNo; private String name; private String ...

  5. Java集合、IO流、线程知识

    一.集合: 1. 集合框架: 1)Collection (1)List:有序的,有索引,元素可重复. (add(index, element).add(index, Collection).remov ...

  6. Properties集合与IO流

    package com.itheima.demo07.Prop; import java.io.FileOutputStream; import java.io.FileReader; import ...

  7. Java基础知识强化之IO流笔记53:IO流练习之 自定义类模拟BufferedReader的readLine()功能案例

    1. 用Reader模拟BufferedReader的readLine()功能:   readLine():一次读取一行,根据换行符判断是否结束,只返回内容,不返回换行符 2. 代码实现和思路分析: ...

  8. Java里的IO流里的FileReader里的BufferedReader读取并在前打印行数!

    哈哈!!我又来了!!这个里面没有运用readLine 的方法!!纯手打!! import java.io.BufferedReader; import java.io.FileNotFoundExce ...

  9. IO流学习笔记(二)之BufferedWriter与BufferedReader及实例Demo

    在之前的学习笔记(http://blog.csdn.net/megustas_jjc/article/details/72853059)中,FileWriter与FileReader的Demo使用的中 ...

随机推荐

  1. 跟着9张思维导图学JavaScript

    思维导图小tips 思维导图又叫心智图,是表达发射性思维的有效的图形思维工具 ,它简单却又极其有效,是一种革命性的思维工具.思维导图运用图文并重的技巧,把各级主题的关系用相互隶属与相关的层级图表现出来 ...

  2. Ansible 详细用法说明(二)

    setup:获取指定主机的facts. ===================================facts就是变量,内建变量 .每个主机的各种信息,cpu颗数.内存大小等.会存在fact ...

  3. EntityFramework中经常使用的数据改动方式

    上一篇文章里提到了 EntityFramework中经常使用的数据删除方式.那么改动对象值也有多种方式 第一种 相同是官方推荐的方式,先查询出来,再对要改动的字段赋值,这也应该是用的比較多的. 另外一 ...

  4. 运算符与类型转换 mogondb简介

    运算符与类型转换   1.运算符 (1)分类 算术运算符.关系运算符.逻辑运算符.位运算符.赋值运算符.其他运算符 >.算术运算符: 运算符 描述 + 把两个操作数相加 - 从第一个操作数中减去 ...

  5. 【翻译自mos文章】oracle db 中的用户账户被锁--查看oracle用户的尝试次数

    參考原文: Users Accounts Getting Locked. (Doc ID 791037.1) 事实上这个文章是为oracle 别的软件产品写的,只是涉及到user 锁定问题.那还是跟d ...

  6. Redis实践系列丨Codis数据迁移原理与优化

    Codis介绍 Codis 是一种Redis集群的实现方案,与Redis社区的Redis cluster类似,基于slot的分片机制构建一个更大的Redis节点集群,对于连接到codis的Redis客 ...

  7. Android之——监听手机开机事件

    转载请注明出处:http://blog.csdn.net/l1028386804/article/details/47028535 本文中,主要通过监听开机广播来达到监听手机开机状态的操作.在Andr ...

  8. Flask采用Virtualenv+Supervisor+Nginx部署应用

    Flask采用Virtualenv+Supervisor+Nginx部署应用 -- 首先是概念解释 WSGI服务器,负责我们的app与服务器的交互,常用的有Gunicorn Web服务器,是个HTTP ...

  9. python set dict tuple and list

    1 set 1.1 不变集合,frozenset 也就是说,集合中的元素不能删除,也不能增加. 1.2 两个集合之间的关系 isdisjoint()函数. 2 各个数据结构的不同显示 2.1 set ...

  10. Unable to resolve dependency for ':app@debug/compileClasspath': Could not resolve com.android.support.constraint:constraint-layout:1.1.0. Could not resolve com.android.support.constraint:constraint-l

    File->Settings->Build, Execution, Deployment->Gradle->取消选中 Offline work 按钮