最近在学习Java网络编程,写了一个图书管理系统练手。使用文件的输入和输出类实现对书记数据的保存和读取。
FileInputStream和FileOutputStream类为建立一个与文件相关的输入与输出流,提供从文件中读取或者写入一个字节或一组数据的方法。而ObjectOutputStream是用来输入对象。最后程序还有一点小问题,加入书籍会覆盖以前加入的书籍数据,之后有时间再修改。
package test;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Scanner;
public class Jmain {
/**
* @param args
*/
static int a;
static FileOutputStream nos=null;
static FileInputStream nis=null;
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
nos=new FileOutputStream("savenum.txt",true);
nis=new FileInputStream("savenum.txt");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
m();
}
public static void m(){
Scanner snr = new Scanner(System.in);
System.out.println("选择功能");
System.out.println("1 加入书籍");
System.out.println("2 查找书籍");
System.out.println("3 退出");
a=snr.nextInt();
d(a);
}
public static void d(int a){
int i=0,n,isbn,num=0;
Scanner sn = new Scanner(System.in);
switch(a){
case 1:{
System.out.println("输入需要加入的数量");
i=sn.nextInt();
try {
nos.write(i);
} catch (IOException e) {
e.printStackTrace();
}
inputbook.newb();
for(n=0;n<i;n++){
inputbook.input();
}
m();
}
case 2:{
try {
num=nis.read();
while(num==-1){
num+=nis.read();}
} catch (IOException e) {
e.printStackTrace();
}
//System.out.println(num);
System.out.println("输入isbn");
isbn=sn.nextInt();
findBook.fba();
// System.out.println(num);
for(n=0;n<num;n++){
findBook.fb(isbn);
}
m();
}
case 3:{
break;
}
}
}
}
package test;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.ObjectInputStream;
public class findBook {
static ObjectInputStream ois;
public static void fba(){
try {
ois=new ObjectInputStream(new FileInputStream("save.txt"));
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void fb(int isbn){
inputbook book=new inputbook() ;
try {
book=(inputbook) ois.readObject();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (ClassNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
if(isbn==book.isbn)
{
System.out.println("ISBN:");
System.out.println(book.isbn);
System.out.println("价格:");
System.out.println(book.price);
System.out.println("书名:");
System.out.println(book.name);
}
else
System.out.println("未找到记录");
}
}
package test;
import java.io.*;
import java.util.Scanner;
public class inputbook implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
int isbn;
int price;
String name;
public int getIsbn() {
return isbn;
}
public void setIsbn(int isbn) {
this.isbn = isbn;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
static ObjectOutputStream fos;
static int a=1;
public static void newb(){
try {
fos=new ObjectOutputStream(new FileOutputStream("save.txt"));
a=2;
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void input(){
int i,p;
String n;
// System.out.println(a);
Scanner scanner = new Scanner(System.in);
inputbook book=new inputbook() ;
System.out.println("请输入ISBN:");
i=scanner.nextInt();
// System.out.println(i);
book.setIsbn(i);
System.out.println("请输入书名:");
n=scanner.nextLine();
n=scanner.nextLine();
book.setName(n);
System.out.println("请输入价格:");
p=scanner.nextInt();
book.setPrice(p);
try {
fos.writeObject(book);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}