從零開始學java 之 DVD的增刪改查管理系統(方法,界面,數據庫相分離)用IO流寫入文件代替數據庫

                  此爲 用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();
	}

}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章