从零开始学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();
	}

}


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