员工管理系统(集合与IO流的结合使用 beta4.0 ObjectInputStream/ ObjectOutputStream)
package cn.employee_io;
import java.io.Serializable;
public class Employee implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
private String empId;
private String name;
private int age;
private double salary;
public Employee() {
super();
}
public Employee(String empId, String name, int age, double salary) {
super();
this.empId = empId;
this.name = name;
this.age = age;
this.salary = salary;
}
public String getEmpId() {
return empId;
}
public void setEmpId(String empId) {
this.empId = empId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((empId == null) ? 0 : empId.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Employee other = (Employee) obj;
if (empId == null) {
if (other.empId != null)
return false;
} else if (!empId.equals(other.empId))
return false;
return true;
}
public String toString() {
return empId + "," + name + "," + age+ "," + salary;
}
}
Employee.java
package cn.employee_io; import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.LinkedList;
import java.util.List; public class Service {
List<Employee> list = new LinkedList<Employee>();
File file = null;
ObjectInputStream ois = null;
ObjectOutputStream oos = null;
boolean flag=false; public Service() throws IOException, ClassNotFoundException {
reader();
} /**
* 读文件
* @throws IOException
* @throws ClassNotFoundException
*/
@SuppressWarnings("unchecked")
public void reader() throws IOException, ClassNotFoundException {//ObjectInputStream先写后读
file = new File("src/cn/employee_io/emp.txt");
if (!file.exists()) {
writer();
}else{
ois = new ObjectInputStream(new FileInputStream(file));
list = (List<Employee>) ois.readObject(); // 给list赋值
ois.close();
}
} /**
* 写文件
* @throws IOException
* @throws ClassNotFoundException
*/
public void writer() throws IOException, ClassNotFoundException {
file = new File("src/cn/employee_io/emp.txt");
oos = new ObjectOutputStream(new FileOutputStream(file));
oos.writeObject(list);
oos.flush();
oos.close();
} /**
* 添加员工
* @param e
* @throws ClassNotFoundException
* @throws IOException
*/
public void add(Employee e) throws ClassNotFoundException, IOException {
if (!list.contains(e)) {
list.add(e);
writer();
System.out.println("添加成功!");
} else {
System.out.println("添加失败!");
}
} /**
* 查询所有员工
*/
public void queryAll(){
System.out.println("编号 "+"姓名 "+"年龄 "+"薪资");
for(Employee e:list){
System.out.println(e.getEmpId()+" "+e.getName()+" "+e.getAge()+" "+e.getSalary());
}
} /**
* 查询单个员工
* @param empId
*/
public void query(String empId){
for(int i=0;i<list.size();i++){
if(list.get(i).getEmpId().equals(empId)){
System.out.println("编号 "+"姓名 "+"年龄 "+"薪资");
System.out.println(list.get(i).getEmpId()+" "+list.get(i).getName()+" "+list.get(i).getAge()+" "+list.get(i).getSalary());
}
}
} /**
* 删除员工
* @throws IOException
* @throws ClassNotFoundException
*/
public void delete(String empId) throws ClassNotFoundException, IOException{
for(int i=0;i<list.size();i++){
if(list.get(i).getEmpId().equals(empId)){
list.remove(list.get(i));
writer();
System.out.println("删除成功!");
break;
}
if((i==list.size()-1)&&(!list.get(i).getEmpId().equals(empId))){
System.out.println("删除失败!");
}
}
} /**
* 修改员工
* @throws IOException
* @throws ClassNotFoundException
*/
public void update(Employee emp) throws ClassNotFoundException, IOException{
for(int i=0;i<list.size();i++){
if(list.get(i).getEmpId().equals(emp.getEmpId())){
list.get(i).setName(emp.getName());
list.get(i).setAge(emp.getAge());
list.get(i).setSalary(emp.getSalary());
writer();
System.out.println("修改成功!");
}
if((i==list.size()-1)&&(!list.get(i).getEmpId().equals(emp.getEmpId()))){
System.out.println("修改失败!");
}
}
}
}
Service.java
package cn.employee_io; import java.io.IOException;
import java.util.Scanner; public class TestEmp {
static Scanner sc = new Scanner(System.in); static String empId;
static String name;
static int age;
static double salary;
static int num; public static void main(String[] args) throws ClassNotFoundException, IOException {
Service s=new Service(); ok: for (;;) {
printOptions();
num = sc.nextInt(); if (num < 1 || num > 6) {
System.out.println("输入有误,将重新开始选择!");
break ok;
} switch (num) {
case 1:
printEmpNo();
printName();
s.add(new Employee(empId,name,age,salary));
break;
case 2:
s.queryAll();
break;
case 3:
printEmpNo();
s.query(empId);
break;
case 4:
printEmpNo();
s.delete(empId);
break;
case 5:
printEmpNo();
printName();
s.update(new Employee(empId,name,age,salary));
break;
case 6:
return;
}
}
} public static void printOptions() {
System.out.println("***员工管理系统***");
System.out.println("1.添加员工");
System.out.println("2.查询所有员工");
System.out.println("3.查询员工");
System.out.println("4.删除员工");
System.out.println("5.修改员工");
System.out.println("6.退出");
System.out.println("请输入你要进行的操作:");
} public static void printEmpNo() {
System.out.println("请输入员工编号:");
empId = sc.next();
} public static void printName() {
System.out.println("请输入员工姓名:");
name = sc.next();
System.out.println("请输入员工年龄:");
age = sc.nextInt();
System.out.println("请输入员工薪资:");
salary=sc.nextDouble();
}
}
TestEmp.java
员工管理系统(集合与IO流的结合使用 beta4.0 ObjectInputStream/ ObjectOutputStream)的更多相关文章
- 员工管理系统(集合与IO流的结合使用 beta2.0 ObjectInputStream/ ObjectOutputStream)
package cn.employee; import java.io.Serializable; public class Employee implements Serializable{ pri ...
- 员工管理系统(集合与IO流的结合使用 beta3.0 BufferedReader / ObjectOutputStream)
Employee.java package cn.employee_io; public class Employee { private String empId; private String n ...
- 员工管理系统(集合与IO流的结合使用 beta5.0 BufferedReader/ BufferedWriter)
package cn.gee; public class Emp { private String id;//员工编号 一般是唯一的 private String sname; private int ...
- 员工管理系统(集合与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 ...
- Io流阶段大总结
字节流结构 输入流: ObjectInputStream:从文件中读取对象 FileInputStream:从文件中输入(读)字节 BufferedInputStream:底层有缓冲数组,在不定义数组 ...
- Java进阶 | IO流核心模块与基本原理
一.IO流与系统 IO技术在JDK中算是极其复杂的模块,其复杂的一个关键原因就是IO操作和系统内核的关联性,另外网络编程,文件管理都依赖IO技术,而且都是编程的难点,想要整体理解IO流,先从Linux ...
- Java IO流
File类 ·java.io.File类:文件和目录路径名的抽象表示形式,与平台无关 ·File能新建.删除.重命名文件和目录,但File不能访问文件内容本身.如果需要访问文件内容本身,则需要使用输入 ...
随机推荐
- mutex 的 可重入
在所有的线程同步方法中,恐怕互斥锁(mutex)的出场率远远高于其它方法.互斥锁的理解和基本使用方法都很容易,这里不做更多介绍了. Mutex可以分为递归锁(recursive mutex)和非递归锁 ...
- oracle 正则查询json返回报文中某个字段的值
接口返回报文为json 格式,如下: {"body":{"businessinfo":{"c1rate":"25.00" ...
- BestCoder Round #2 1001 TIANKENG’s restaurant
不得不说,bastcoder是个hack游戏啊.!. 题意:求最少要多少张椅子才干让全部来的客人有地方坐!! 就是一个区间的处理吧!!!和HDU 1556 我待水似流年.流年待我似水神似! ..! ...
- c语言实现输出一个数的每一位
比方输入1234.在屏幕上打印出1 2 3 4 代码展示: 方法一: #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #includ ...
- [读书笔记]《没人会告诉你的PPT真相》
这本书分了三部分.第一部分偏重于基础技能,其中分为三部分,打印.放映.保存.第二部分是进阶,分为模板下载.模板修改.增加自定义页面等.第三部分是打造商业范的PPT,分为商业范的特征,具体技能体现(重复 ...
- C ++模板的声明和实现为何要放在头文件中?
源: http://blog.csdn.net/lqk1985/archive/2008/10/24/3136364.aspx 如何组织编写模板程序 发表日期: 1/21/2003 12:28:58 ...
- redirect和rewrite
1 服务器端重定向 客户端想要访问的内容不在该服务器上,该服务器自己去另外的服务器请求到该内容,然后还是由该服务器将内容返回给客户端.称为rewrite. 2 客户端重定向 客户端想要访问的内容不在该 ...
- SVN服务器端的使用
SVN服务器端的使用 1.下载VirtualSVN Server,安装好后打开,右键Repository->新建->Repository创意一个版本库.默认点击下一步,输入要创建版本库的名 ...
- jquery 中cache为true与false 的区别
$.ajax({type: "get",cache: false,url: url,success: function (msg) { }}); cache为true与false ...
- Masonry remake更新约束
前言 说到iOS自动布局,有很多的解决办法.有的人使用xib/storyboard自动布局,也有人使用frame来适配.对于前者,笔者并不喜欢,也不支持.对于后者,更是麻烦,到处计算高度.宽度等,千万 ...