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. HDU 5301 Buildings(2015多校第二场)

    Buildings Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Tota ...

  2. Linux登录自动切换root账户与历史命令优化

    1:当我们Linux系统优化完成,会使用oldboy用户远程连接CRT登录,每次连接都需要使用sudo su - 或者su - 输入密码登录,请问如何在CRT连接的时候自动的切换到root账户,(提示 ...

  3. HDU 2896 病毒侵袭 (AC自己主动机)

    pid=2896">http://acm.hdu.edu.cn/showproblem.php?pid=2896 病毒侵袭 Time Limit: 2000/1000 MS (Java ...

  4. asp.net mvc + javascript生成下载文件

    近期做的是对现有项目进行重构.WEB FROM改成MVC,其实也算是推倒重来了. 里面有一个导出功能,将数据输出成txt文件,供下载.原先的做法是有一个隐藏的iframe,在这个iframe的页面中设 ...

  5. 从Script到Code Blocks、Code Behind到MVC、MVP、MVVM(转载)

    http://www.cnblogs.com/indream/p/3602348.html 刚过去的周五(3-14)例行地主持了技术会议,主题正好是<UI层的设计模式——从Script.Code ...

  6. 【bzoj4401】块的计数

    首先,块的大小确定的话,可以发现方案最多只有1种 然后就可以O(nsqrt(n))搞,不过会TLE 接着我们又发现,一个节点可以作一个块的根,当且仅当该节点的size能被块的大小整除 然后就可以O(n ...

  7. MySQL 5.7 Keywords and Reserved Words

    https://dev.mysql.com/doc/refman/5.7/en/keywords.html#keywords-5-7-detailed-T

  8. 中小企业可参考的数据库架构-mysql篇

    引言 数据库在众多互联网公司中应用日益广泛,不同的公司,使用姿势不尽相同,尤其是大公司,各种自研架构,羡煞旁人.但是,作为中小企业,由于分工和团队规模限制,很难实现自研,大多数情况下,使用开源架构. ...

  9. JAVASCRIPT 和 AJax 实现局部验证

    JSP页面 <td width="10%" class="main_matter_td">真实姓名</td> <td width= ...

  10. mac系统下mysql5.7.13数据库编码查看和设置

    1.查看编码命令: mysql> show variables like '%character%'; +--------------------------+----------------- ...