美发店管理系统,跑起来以后readOobject()会报错ObjectInputStream$BlockDataInputStream.peekByte
package JavaProject;
import java.awt.EventQueue;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.Scanner;
/*
18、美发店管理系统
题目描述:
设计完成对美发店的简单管理。
功能需求:
(1) 定义顾客类,属性有:会员卡号、姓名、性别、电话等信息和相关的对属性做操作的行为。
(2) 定义员工类:属性有:编号、姓名、性别、电话、美发项目(理发、烫发、洗发)等信息和相关的对属性做操作的行为。
(3) 定义美发类:属性有各种美发项目的收费标准和相关的对属性做操作的行为。
(4) 定义一个管理类。
(5) 添加、删除、修改、查询顾客信息和雇员信息,要求编号要唯一,如果添加了重复编号的记录时,则提示数据添加重复并取消添加;删除、修改、查询时,如果没有对应人员记录,则提示“记录为空!”并返回操作。
(6) 使用外部文件或数据库存储相关数据。
*/
public class HairSalon {
static Scanner scan=new Scanner(System.in);
private int object;
private boolean i=true;
public static void main(String args[])
{
HairSalon newObject=new HairSalon();
System.out.println("1.客户\t 2.员工\t3.价格表\t请输入对象:");
newObject.object=scan.nextInt();//输入对象
if(newObject.object==1) newObject.Cu_set();
else if(newObject.object==2) newObject.Em_set();
}
public void Cu_set()
{
//对象是顾客时
J_Customer customer= new J_Customer();
System.out.println("1.添加\t2.删除\t3.修改\t4.查询\t请输入操作序号:");
int operate=scan.nextInt();//输入操作数
ObjectInputStream readFile=null;
ObjectOutputStream InFile=null;
try {
InFile = new ObjectOutputStream(new FileOutputStream("Customer.data"));
readFile=new ObjectInputStream(new FileInputStream("Customer.data"));
} catch (FileNotFoundException e1) {
e1.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
}
if(operate==1)//添加顾客信息
{
try {
customer.Cu_add(scan);
if(!customer.Cu_search(readFile, customer.Cu_CardNumber))
{
InFile.writeObject(customer);
InFile.flush();
customer.Cu_ouput();
}
else System.out.println("编号为"+customer.Cu_CardNumber+"已存在!");
}catch (IOException e) {
e.printStackTrace();
}
}
else if(operate==2)//删除顾客信息
{
try {
System.out.println("请输入您的VIP编码:");
String cardNumber=scan.nextLine();
if(customer.Cu_search(readFile, cardNumber))
{
J_Customer deleteCustomer=null;
try {
deleteCustomer = (J_Customer)(readFile.readObject());
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(deleteCustomer.Cu_CardNumber.equals(cardNumber));
{
customer.Cu_delete();
customer.Cu_ouput();
}
}
else System.out.println("查无编号为"+cardNumber+"的客户!");
} catch (IOException e) {
e.printStackTrace();
}
}
else if(operate==3)//修改
{
try {
System.out.println("请输入您的VIP编码:");
String cardNumber=scan.nextLine();
if(customer.Cu_search(readFile, cardNumber))
{
J_Customer deCustomer=null;
try {
deCustomer = (J_Customer)(readFile.readObject());
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
while(deCustomer.Cu_CardNumber.equals(cardNumber));
{
customer.Cu_add(scan);
InFile.writeObject(customer);
customer.Cu_ouput();
}
}
else System.out.println("查无编号为: "+cardNumber+"的客户信息!");
} catch (IOException e) {
e.printStackTrace();
}
}
else if(operate==4)//查询
{
try {
System.out.println("请输入您的VIP编码:");
String cardNumber=scan.nextLine();
if(customer.Cu_search(readFile, cardNumber))
{
J_Customer deCustomer=null;
try {
deCustomer = (J_Customer)(readFile.readObject());
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
while(deCustomer.Cu_CardNumber.equals(cardNumber)) customer.Cu_ouput();
}
else System.out.println("查无编号为: "+cardNumber+"的客户信息!");
}
catch (IOException e) {
e.printStackTrace();
}
}
}
public void Em_set()
{
J_Employee employee= new J_Employee();
System.out.println("1.添加\t2.删除\t3.修改\t4.查询\t请输入操作序号:");
int operate=scan.nextInt();//输入操作数
ObjectOutputStream InFile=null;
ObjectInputStream readFile=null;
try {
InFile = new ObjectOutputStream(new FileOutputStream("Employee.data"));
readFile=new ObjectInputStream(new FileInputStream("Employee.data"));
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
if(operate==1)//添加
{
try {
employee.Em_add(scan);
if(!employee.Em_search(readFile, employee.Em_CardNumber))
{
InFile.writeObject(employee);
InFile.flush();
employee.Em_ouput();
}
else System.out.println("编号"+employee.Em_CardNumber+"已存在!");
} catch (IOException e) {
e.printStackTrace();
}
}
else if(operate==2)//删除
{
try {
System.out.println("请输入您的VIP编码:");
String cardNumber=scan.nextLine();
if(employee.Em_search(readFile, cardNumber))
{
J_Employee deemployee=null;
try {
deemployee = (J_Employee)(readFile.readObject());
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
while(deemployee.Em_CardNumber.equals(cardNumber));
{
employee.Em_delete();
employee.Em_ouput();
}
}
else System.out.println("查无员工编号为: "+cardNumber+"的信息!");
} catch (IOException e) {
e.printStackTrace();
}
}
else if(operate==3)//修改
{
try {
System.out.println("请输入您的VIP编码:");
String cardNumber=scan.nextLine();
if(employee.Em_search(readFile, cardNumber))
{
J_Employee deemployee=null;
try {
deemployee = (J_Employee)(readFile.readObject());
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
while(deemployee.Em_CardNumber.equals(cardNumber));
{
employee.Em_add(scan);
InFile.writeObject(employee);
employee.Em_ouput();
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
else if(operate==4)
{
try {
System.out.println("请输入您的VIP编码:");
String cardNumber=scan.nextLine();
if(employee.Em_search(readFile, cardNumber))
{
J_Employee deemployee=null;
try {
deemployee = (J_Employee)(readFile.readObject());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
while(deemployee .Em_CardNumber.equals(cardNumber)); employee.Em_ouput();
}
}catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
class J_Customer implements Serializable
{
public String Cu_CardNumber;
public String Cu_Name;
public String Cu_Gender;
public String Cu_PhoneNumber;
public boolean Cu_search(ObjectInputStream f,String nu)//搜索文件是否有此号码
{
J_Customer c=null;
try {
do
{
c=(J_Customer)(f.readObject());
if(c.Cu_CardNumber.equals(nu)) return true;//找得到回复true
}while(true);
}
catch (ClassNotFoundException | IOException e) {
e.printStackTrace();
}
return false;//找不到回复false
}
public void Cu_ouput()
{
System.out.println("会员卡号 : "+Cu_CardNumber);
System.out.println("姓名 : "+Cu_Name);
System.out.println("性别 : "+Cu_Gender);
System.out.println("电话号码 : "+Cu_PhoneNumber);
}
public void Cu_add(Scanner scan)
{
System.out.print("请输入会员卡号:");
Cu_CardNumber=scan.next();
System.out.print("请输入姓名:");
Cu_Name=scan.next();
System.out.print("请输入性别:");
Cu_Gender=scan.next();
System.out.print("请输入电话号码:");
Cu_PhoneNumber=scan.next();
}
public void Cu_delete()
{
Cu_CardNumber=null;
Cu_Name=null;
Cu_Gender=null;
Cu_PhoneNumber=null;
}
}
class J_Employee implements Serializable
{
public String Em_CardNumber;
public String Em_Name;
public String Em_Gender;
public String Em_PhoneNumber;
public String Project;
public boolean Em_search(ObjectInputStream f,String nu)//搜索文件是否有此号码
{
J_Employee E=null;
try {
do
{
E=(J_Employee)(f.readObject());
if(E.Em_CardNumber.equals(nu)) return true;
}while(true);
}
catch (ClassNotFoundException | IOException e) {
e.printStackTrace();
}
return false;
}
public void Em_delete() {
Em_CardNumber=null;
Em_Name=null;
Em_Gender=null;
Em_PhoneNumber=null;
Project=null;
}
public void Em_ouput()
{
System.out.println("员工编号 : "+Em_CardNumber);
System.out.println("员工姓名 : "+Em_Name);
System.out.println("员工性别 : "+Em_Gender);
System.out.println("员工电话号码 : "+Em_PhoneNumber);
//????
System.out.println("员工项目: "+ Project);
}
public void Em_add(Scanner scan)
{
System.out.print("请输入员工编号:");
Em_CardNumber=scan.next();
System.out.print("请输入员工姓名:");
Em_Name=scan.next();
System.out.print("请输入员工性别:");
Em_Gender=scan.next();
System.out.print("请输入员工电话号码:");
Em_PhoneNumber=scan.next();
//?????
System.out.println("员工项目: ");
Project=scan.next();
}
}