此爲 用IO流寫入文件代替數據庫,編寫的DVD管理系統,實現了對DVD系統的增刪改查,這個第一次運行的時候會出現錯誤,因爲文件中什麼都沒有,所以靠IO流的讀取是讀不到東西的,系統就會拋出異常。所以運行之前,請自行加入一些數據,方能方便運行。
首先是DVD的屬性類:
public class Dvd implements java.io.Serializable{
private String num;
private String name;
private double price;
private int count;
public Dvd(String num, String name, double price, int count) {
super();
this.num = num;
this.name = name;
this.price = price;
this.count = count;
}
public Dvd(){}
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
public String getNum() {
return num;
}
public void setNum(String num) {
this.num = num;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
}
再次就是方法類:方法類通過對文件裏數據進行操作,實現數據庫保存功能,一讀一寫就是方便保存,不然會刷新文件裏的東西導致保存不住
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Iterator;
public class DvdBiz implements java.io.Serializable{
List<Dvd> addList = new ArrayList<Dvd>();
private Dvd dvd = new Dvd();
// 增 刪 改 查 四項功能
public void add(Dvd dvd){ //通過傳來的Dvd對象加入到list集合中然後寫入Dvd文件
Read();
addList.add(dvd);
write();
}
public boolean delete(String num){ // 刪除選中編號的DV
Read();
for(int i =0;i<addList.size();i++){
dvd = (Dvd) addList.get(i);
if(dvd.getNum().equals(num)){
addList.remove(i);
write();
return true;
}
}
return false;
}
public void show(){ // 光盤信息顯示
Read();
for(int i =0;i<addList.size();i++){
dvd = (Dvd) addList.get(i);
System.out.println("\t"+dvd.getNum()+"\t\t"+dvd.getName()
+"\t\t"+dvd.getPrice()+"\t\t"+dvd.getCount());
}
write();
}
public Dvd search(String num){//根據編號查詢是否存在此書,找到則返回Dvd的對象找不到則返回null
Read();
for(int i= 0;i<addList.size();i++){
dvd = (Dvd) addList.get(i);
if(dvd.getNum().equals(num)){
return dvd;
}
}
return null;
}
public Dvd change(String num,String name,double price,int count){ //根據編號修改圖書信息。。
Read();
for(int i= 0;i<addList.size();i++){
dvd = (Dvd) addList.get(i);
if(dvd.getNum().equals(num)){
dvd.setPrice(price);
dvd.setName(name);
dvd.setCount(count);
write();
return dvd;
}
}
return null;
}
public void Read(){ //讀取文件中存在的信息
ObjectInputStream ois = null;
FileInputStream fis = null;
File file = new File("E:\\haha\\Dvd.txt");
try {
fis = new FileInputStream(file);
ois = new ObjectInputStream(fis);
addList = (List)ois.readObject();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
ois.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public void write(){ //往文件裏寫入獲取到的信息
ObjectOutputStream oos = null;
FileOutputStream fos = null;
File file = new File("E:\\haha\\Dvd.txt");
try {
fos = new FileOutputStream(file);
oos = new ObjectOutputStream(fos);
if(file.exists()){
fos = new FileOutputStream(file);
oos = new ObjectOutputStream(fos);
oos.writeObject(addList);
}else{
file.createNewFile();
fos = new FileOutputStream(file);
oos = new ObjectOutputStream(fos);
oos.writeObject(addList);
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
oos.flush();
oos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
再就是界面類:
import java.util.Scanner;
public class DvdJsp implements java.io.Serializable{
private DvdBiz dz = new DvdBiz();
private Dvd dvd = new Dvd();
Scanner input = new Scanner(System.in);
public void main() {
System.out.println("========================" +
"======================================");
System.out.println("\tDVD編號\t\tDVD名稱\t\tDVD價格\t\t庫存");
dz.show();
System.out
.println("=======================" +
"=======================================");
while (true) {
System.out.println("\t\t\t\t 1.DVD查詢");
System.out.println("\t\t\t\t 2.DVD添加");
System.out.println("\t\t\t\t 3.DVD修改");
System.out.println("\t\t\t\t 4.DVD刪除");
System.out.print("\t\t請輸入您的將進行的操作:");
int in = input.nextInt();
String name;
String num;
double price;
int count;
boolean inFlog ;
switch(in){
case 1:
System.out.print("請輸入您要查詢的DVD編號:");
num = input.next();
dvd = dz.search(num);
if(dvd != null){
System.err.println("找到了,此光盤信息爲:");
System.out.println("\tDVD編號\tDVD名稱\tDVD價格\t庫存");
System.out.println("\t"+dvd.getNum()+"\t"+dvd.getName()
+"\t"+dvd.getPrice()+"\t"+dvd.getCount());
}else
System.err.println("未找到您要查詢的光盤信息!");
break;
case 2:
System.out.print("請輸入要添加的光盤編號:");
num = input.next();
System.out.print("請輸入要添加的光盤名稱:");
name = input.next();
System.out.print("請輸入要添加的光盤價格:");
price = input.nextDouble();
System.out.print("請輸入要添加的光盤庫存:");
count = input.nextInt();
dvd.setCount(count);
dvd.setName(name);
dvd.setNum(num);
dvd.setPrice(price);
dz.add(dvd);
break;
case 3:
System.out.print("請輸入要修改的光盤編號:");
num = input.next();
System.out.print("請輸入要修改的光盤名稱:");
name = input.next();
System.out.print("請輸入要修改的光盤價格:");
price = input.nextDouble();
System.out.print("請輸入要修改的光盤庫存:");
count = input.nextInt();
dvd = dz.change(num, name, price, count);
if(dvd!=null){
System.err.println("修改成功,修改後光盤的信息爲:");
System.out.println("\tDVD編號\t\tDVD名稱\t\tDVD價格\t\t庫存");
System.out.println("\t"+dvd.getNum()+"\t\t"+dvd.getName()
+"\t\t"+dvd.getPrice()+"\t\t"+dvd.getCount());
}else
System.err.println("沒有找到您要修改的光盤,請覈對後再修改!");
break;
case 4:
System.out.println("請輸入要刪除的光盤編號:");
num = input.next();
inFlog = dz.delete(num);
if(inFlog){
System.err.println("刪除成功!");
}else
System.err.println("沒找到!");
break;
default:
System.out.println("您的輸入有誤請重新選擇要進行的操作");
break;
}
}
}
}
最後就是測試類:
public class Test {
public static void main(String[] args){
DvdJsp dj = new DvdJsp();
dj.main();
}
}