员工管理系统(集合与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使用的中 ...
随机推荐
- D广搜
<span style="color:#330099;">/* D - 广搜 基础 Time Limit:1000MS Memory Limit:30000KB 64b ...
- javaEE之------ApectJ的切面技术===标签
如今比較流行了aop技术之中的一个========标签 实现步骤: 一,导入aop标签 方法,打开aop包.里面就有. watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5 ...
- Jenkins系列之-—05 节点配置
一.节点配置 1. 进入[系统管理]-[节点管理]-[新建节点],录入节点名,选择Permanent Agent,下一步录入节点详细配置信息,如下: Name:节点名称 Description:节点描 ...
- web 开发之js---ajax 异步处理
本文介绍了如何创建能够适应不同浏览器的XMLHttpRequest实例,建立和发送请求,并响应服务器.您将开始接触最基本和基础性的有关Ajax的全部对象和编程方法:XMLHttpRequest对象.该 ...
- 列表和元组的基本操作,for遍历,range
1,list(增删改查):列表可以装大量数据,不限制数据的类型(int,str,bool, list,tuple,dict,set),表示方法用[ ],list和sttr有区别,list可以直接在原 ...
- Java类加载机制?
深入研究Java类加载机制 类加载是Java程序运行的第一步,研究类的加载有助于了解JVM执行过程,并指导开发者采取更有效的措施配合程序执行. 研究类加载机制的第二个目的是让程序能动态的控制类加载,比 ...
- eclipse自动创建项目出错Cannot change version of project facet Dynamic Web Module to 2.3.
Cannot change version of project facet Dynamic Web Module to 2.3. step1:修改properties step2:修改web.xml ...
- 深入探析c# Socket
最近浏览了几篇有关Socket发送消息的文章,发现大家对Socket Send方法理解有所偏差,现将自己在开发过程中对Socket的领悟写出来,以供大家参考. (一)架构 基于TCP协议的Socket ...
- Error: Target id 'android-5' is not valid. Use 'android list targets' to get the target ids.
输入命令: lianxumacdeMac-mini-2:hello-jni lianxumac$ android list targets Available Android targets: --- ...
- Masonry 比例(multipliedBy)
前言 说到iOS自动布局,有很多的解决办法.有的人使用xib/storyboard自动布局,也有人使用frame来适配.对于前者,笔者并不喜欢,也不支持.对于后者,更是麻烦,到处计算高度.宽度等,千万 ...