员工管理系统(集合与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不能访问文件内容本身.如果需要访问文件内容本身,则需要使用输入 ...
随机推荐
- [外文理解] DDD创始人Eric Vans:要实现DDD原始意图,必须CQRS+Event Sourcing架构。
原文:http://www.infoq.com/interviews/Technology-Influences-DDD# 要实现DDD(domain drive design 领域驱动设计)原始意 ...
- 自己定义Gradle插件之"Hello World"
自己定义Gradle插件之"Hello World" 0.新建一个用于开发这个插件的目录 1.确定Plugin id Plugin id一般定义为java 包名. 由字母和数字及& ...
- Unity5的关卡切换
本文章由cartzhang编写,转载请注明出处. 全部权利保留. 文章链接:http://blog.csdn.net/cartzhang/article/details/51055584 作者:car ...
- excel 学习
最近越來越感覺到熟練運用office軟件是一門很深的學問,以前一直忽視了這個技能,因爲從來都不覺得這個有什麼技術難度.正是因爲這樣想,所以才一直沒能去好好研究使用這套工具.現在卻覺得有必要學習,在於: ...
- 【iOS进阶】UIWebview加载搜狐视频,自动跳回客户端 问题解决
UIWebview加载搜狐视频,自动跳回搜狐客户端 问题解决 当我们用UIWebview(iOS端)加载网页视频的时候,会发现,当真机上有搜狐客户端的时候,会自动跳转到搜狐客户端进行播放,这样的体验对 ...
- YTU 2912: 圆柱体的C++
2912: 圆柱体的C++ 时间限制: 1 Sec 内存限制: 128 MB 提交: 333 解决: 133 题目描述 小明的弟弟加入的C++兴趣小组,组长布置的第一个任务就是将已有的C程序改写成 ...
- 织梦dedecms将指定图片自动生成指定尺寸的小图、缩略图、图片的方法
对于普通企业网站来讲,织梦原来的程序只是提供了一个缩略图,但是这样对于一些相对来说图片会比较多的网站来说,图片太大当缩略图会导致网站整体的访问速度,所以我今天就来教你织梦把一张大图转换成生成一张小图或 ...
- linux永久或临时修改dns
1.临时修改网卡DNS地址 sudo vim /etc/resolv.conf 改为如下内容: nameserver 8.8.8.8 #修改成你的主DNS nameserver 8.8.4.4 #修改 ...
- AutoIT: 下载文件函数
Func down() $Size=InetGetSize($a[$j][]);获得FTP上的文件的大小 InetGet($a[$j][],$a[$j][],,);下载 ProgressOn(],), ...
- OAuth学习总结
1.为什么需要OAuth? 新浪微博就是你的家.偶尔你会想让一些人(第三方应用)去你的家里帮你做一些事,或取点东西.你可以复制一把钥匙(用户名和密码)给他们,但这里有三个问题: 1)别人拿了钥匙后可以 ...