1. 程式人生 > >java中利用IO流實現簡單的圖書管理系統(利用陣列和IO實現)

java中利用IO流實現簡單的圖書管理系統(利用陣列和IO實現)

這個案例,主要對陣列及IO流進行總結!

利用IO流實現簡單的圖書管理系統,在控制檯上列印!

功能:1,檢視所有書籍

  2,新增書籍

3,刪除書籍

4,修改書籍

5,退出


package com.baojian.bookStore;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.util.Scanner;
/*
 * 實體類,主要利用陣列,和IO流,對兩個知識點進行加強
 */
public class Book {
	private int id;
	// 書名
	private String name ;
	// 作者
	private String authorName;
	// 價格
	private double price ;
	// 書的數量
	private int num;
	// 用於從控制檯輸入內容
	Scanner scan = new Scanner(System.in); 
	// 確定庫存數為20
	final static int SIZE = 20;
	// 建立一個長度為20的陣列,用於存放書籍
	Book[] books = new Book[SIZE];
	// 存放當前圖書數量
	static int count = 0;
	public Book() {
		super();
	}
	public Book(int id,String name, String authorName, double price, int num) {
		super();
		this.id = id;
		this.name = name;
		this.authorName = authorName;
		this.price = price;
		this.num = num;
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public double getPrice() {
		return price;
	}
	public void setPrice(double price) {
		this.price = price;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getAuthorName() {
		return authorName;
	}
	public void setAuthorName(String authorName) {
		this.authorName = authorName;
	}
	
	public int getNum() {
		return num;
	}
	public void setNum(int num) {
		this.num = num;
	}
	//檢視圖書列表
	public void list() throws IOException{
		// 從檔案中讀出資料
		books = Service.readData();
		// 如果count為0,說明系統裡面還沒有書籍
		if(count == 0 ){
	       System.out.println("圖書管理系統中還沒有輸入書籍,快去新增吧!");
		} else {  
			// 如果有書籍則遍歷書籍
			System.out.println("圖書編號\t\t" + "書名\t\t" + "作者\t\t" + "價格\t\t" + "數量\t\t");
			for (int i = 0; i < count; i++)  {  
				System.out.print(books[i].getId() + "\t\t");
				System.out.print(books[i].getName() + "\t\t");
				System.out.print(books[i].getAuthorName() + "\t\t");
				System.out.print(books[i].getPrice() + "\t\t");
				System.out.println(books[i].getNum() + "\t\t");
				// 確保書的種類不能多於20種
				//count++;
			}
		}
	}  
	//新增圖書
	public void add() throws IOException {  
		System.out.println("----------------------------");
        if (count < SIZE)  {
        	// System.out.println("請輸入圖書編號:");
        	int id = count;
            System.out.println("請輸入圖書名稱:");  
            String name = scan.next();  
            System.out.println("請輸入作者:");  
            String authorName = scan.next();  
            System.out.println("請輸入單價:");  
            double price = scan.nextDouble(); 
            System.out.println("請輸入圖書數量:");  
            int num = scan.nextInt();
            Book book = new Book(id,name,authorName,price,num);  
            books[count] = book;
            // 儲存已經新增的書籍到文字文件中
            Service.saveBook(books[count]);
            count++;  
            System.out.println("新增成功!");   
        } else {  
            System.out.println("書庫已滿!");  
        }     
	}  
	//刪除圖書
	public void delete() throws IOException{  
		System.out.println("----------------------------");
		System.out.println("請輸入要刪除書籍的id:"); 
	    //list();
	    int id = scan.nextInt();             
	    for(int i = id; i < count - 1 ; i++){
		    //用for迴圈的形式實現對陣列的刪除
	    	books[i+1].setId(i);
		    books[i]=books[i+1];
		}
	    System.out.println("刪除成功!");  
	    count--;  
	    // 重寫寫到檔案裡面
	    Service service = new Service();
	    service.saveBook(books);
	}  
	//修改圖書
	public void update() throws IOException{
		 System.out.println("----------------------------");
	     System.out.println("請輸入需要修改的圖書編號:"); 
	     int id = scan.nextInt();
	     System.out.println("請輸入圖書名稱:");  
         String name = scan.next();  
         System.out.println("請輸入作者:");  
         String authorName = scan.next();  
         System.out.println("請輸入單價:");  
         double price = scan.nextDouble(); 
         System.out.println("請輸入圖書數量:"); 
         int num = scan.nextInt();
         Book book = new Book(id,name, authorName, price, num);
         // 修改該書籍的資料
         books[id] = book;
         Service.saveBook(books);
         System.out.println("修改成功!");
	}
}
package com.baojian.bookStore;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;

/*
 * 用於向讀取和寫入資料
 */
public class Service {
	private static final int SIZE = 20;
	// 此方法用於從文字檔案中讀出資料,封裝成book物件,存到books中
	public static Book[] readData() throws IOException {
		// 建立一個Book型別的陣列,用於存放讀取出來的資料封裝成的Book物件
		Book[] readBooks = new Book[SIZE];
		// 建立一個字串用於存放讀取出來的資料
		String data = "";
		// 建立一個字元緩衝輸入流物件
		BufferedReader br = new BufferedReader(new FileReader("c:\\bookData.txt"));
		// 用於控制存放陣列的下標
		int id = 0;
		// 每次度一行,如果有內容繼續讀取
		while ((data = br.readLine()) != null) {
			String[] dataArr = data.split(":");
			// 建立Book物件
			Book book = new Book();
			// 第一個字串用於設定id
			//System.out.println(Integer.parseInt(dataArr[0].trim()));
			book.setId(id);
			// 第二個字串用於設定name
			book.setName(dataArr[1]);
			// 第三個字串用於設定author
			book.setAuthorName(dataArr[2]);
			// 第四個字串用於設定價格
			book.setPrice(Double.parseDouble(dataArr[3]));
			// 第五個字串用於設定存量
			book.setNum(Integer.parseInt(dataArr[4]));
			// 給陣列中的元素賦值
			readBooks[id] = book;
			
			id++;
		}
		// 確定資料個數,就是書籍的種類
		Book.count = id;
		br.close();
		// 返回讀取到的資料
		return readBooks;
	}
	
	// 將新新增的書籍儲存到文字文件中
	public static void saveBook(Book book) throws IOException {
		// 建立字元輸入緩衝流物件
		// BufferedWriter bw = new BufferedWriter(new FileWriter("c:\\bookData.txt",true));
		// FileWriter fw = new FileWriter("c:\\bookData.txt",true);
		FileOutputStream fos = new FileOutputStream("c:\\bookData.txt",true);
		// 將book中的資料拼接成字串
		StringBuffer data = new StringBuffer();
		// 獲取書籍的id值
		data.append( "\r\n" + book.getId() + ":");
		// 獲取書名
		data.append(book.getName() + ":");
		// 獲取作者名
		data.append(book.getAuthorName() + ":");
		// 獲取價格
		data.append(book.getPrice() + ":");
		// 獲取庫存數
		data.append(book.getNum() + "");
		// 建立資料字串
		String dataStr = data.toString();
		byte[] buf = dataStr.getBytes();
		// 控制寫入資料的長度
		int len = buf.length;
		fos.write(buf, 0, len);
		fos.close();
		// System.out.println("寫入成功!");
	}
	// 重寫saveBook方法用於刪除和更新後向檔案寫資料
	public static void saveBook(Book[] books) throws IOException{
		// 建立字元輸入緩衝流物件
		// BufferedWriter bw = new BufferedWriter(new FileWriter("c:\\bookData.txt",true));
		// FileWriter fw = new FileWriter("c:\\bookData.txt",true);
		FileOutputStream fos = new FileOutputStream("c:\\bookData.txt");
		// 存放資料
		StringBuffer data = new StringBuffer();
		//String data = "";
		for(int i = 0;i < Book.count;i++){
			if(i == 0){
				data.append(books[i].getId() + ":");
				// 獲取書名
				data.append(books[i].getName() + ":");
				// 獲取作者名
				data.append(books[i].getAuthorName() + ":");
				// 獲取價格
				data.append(books[i].getPrice() + ":");
				// 獲取庫存數
				data.append(books[i].getNum() + "");
			}else{
				data.append( "\r\n" + books[i].getId() + ":");
				// 獲取書名
				data.append(books[i].getName() + ":");
				// 獲取作者名
				data.append(books[i].getAuthorName() + ":");
				// 獲取價格
				data.append(books[i].getPrice() + ":");
				// 獲取庫存數
				data.append(books[i].getNum() + "");
			}
		}
		// 建立資料字串
		String dataStr = data.toString();
		byte[] buf = dataStr.getBytes();
		// 控制寫入資料的長度
		int len = buf.length;
		fos.write(buf, 0, len);
		fos.close();
	}
}
package com.baojian.bookStore;

import java.util.Scanner;
/*
 * 管理員實體類
 */
public class User {
	// 使用者名稱
	private String userName ;
	// 密碼
	private String password ;
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	//登入方法
	public void login (){
		Scanner sc = new Scanner(System.in);
		while(true){
			User user = new User();
			System.out.println("請輸入使用者名稱:");
			// 從控制檯上輸入使用者名稱
			user.setUserName(sc.nextLine());
			System.out.println("請輸入密碼:");
			// 從控制檯上輸入密碼
			user.setPassword(sc.nextLine());
			if(user.getUserName().equals("張三") && user.getPassword().equals("123")){
				System.out.println("登陸成功!歡迎【" + user.getUserName() + "】使用閱山管理系統");
				break;
			}else{
				System.out.println("登入失敗!請重新登入:");
				login();
			}
		}
			
		  
	}


}
package com.baojian.bookStore;


import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Scanner;
/*
 * 測試類,用於測試功能
 */
public class Test {
	public static void main(String[] args) throws IOException {
		@SuppressWarnings("resource")
		Scanner sc = new Scanner(System.in);
		User user = new User();
		Book book = new Book();
		//進行登入
		user.login();
		while(true){
			System.out.println("請輸入數字進行操作:1.檢視圖書列表 2.新增圖書 3.刪除圖書 4.修改圖書  5.退出本系統");
		    int num = sc.nextInt();
			switch(num){
	 		case 1 :
	 			// 檢視圖書列表
	 			book.list();
				break;
			case 2:
				book.add();
				break;
			case 3:
				System.out.println("----------------------------");
				book.list();
				book.delete();
				break;
			case 4:
				System.out.println("----------------------------");
				book.list();
				book.update();
				break;
			case 5:
				System.out.println("已退出系統!");
				//break aa;
				return;
			default:
		    	System.out.println("您輸入的數字不符合要求!");
		    	break;
			}
		}
		
	}


}

文字寫入格式為:

完成案例測試效果:

相關推薦

java利用IO實現簡單圖書管理系統利用陣列IO實現

這個案例,主要對陣列及IO流進行總結! 利用IO流實現簡單的圖書管理系統,在控制檯上列印! 功能:1,檢視所有書籍   2,新增書籍 3,刪除書籍 4,修改書籍 5,退出 package com.baojian.bookStore; import java.io.Buf

wxpython實現簡單圖書管理系統

用wxpython實現的簡單圖書管理系統,可以實現增加圖書,刪除圖書,修改圖書,檢視圖書。後臺資料庫為mysql資料庫,採用的pymysql連線資料庫。系統介面如下: 程式碼如下: 1.書本類程式碼 #author = liuwei date

利用java實現基於文字的圖書管理系統有介面

我覺得最難的一部分就是如何實現實現增刪改查 增加:使用write直接向檔案寫入資料即可 刪除:例如通過圖書號(x)找到圖書資料,刪除圖書資料。要想實現此功能,利用一個字元陣列(Arraylist)儲存文字每行資料,分割文字每一行資料(每一行分割成書號,書名,價格等資訊等等,

利用C語言簡單實現庫存管理系統本地檔案生成形式儲存

問題描述: 庫存管理系統是廠家、商城、商場等的管理商品資訊不可缺少的部分,利用這個系統,可以更好地管理商品的資訊。 本系統的功能: 新增、修改、刪除庫存商品資訊,商品資訊包括:編號、名稱、類別、數量、產地等; 進貨或售出商品後,相應的庫存商品數量應該有所改

JAVA高階特性——迷你圖書管理系統DOM4J操作儲存集合的物件

  要求:使用XML儲存圖書資訊,使用DOM4J操作XML,進行圖書的增刪改查。 使用技術:XML/DOM4j/集合/物件     部分實現效果如果下:  實現思路   首先需要建立一個圖書類(Book類),儲存圖書的屬性(屬性和XML檔案一致,因

Java常見的設計模式---簡單工廠模式、工廠方法模式單例模式

在講設計模式之前,我們首先來說一下面向物件思想的設計原則,在實際的開發中,我們要想更深入的瞭解面向物件思想,就必須熟悉前人總結過的面向物件的思想的設計原則:1.單一職責原則:“高內聚,低耦合”,也就是說,每個類應該只有一個職責,對外只能提供一種功能,而引起類變化的原因應該只有

java WebSocket實現簡單的聊天室包括群發點對點聊天

今天突然看到了WebSocket然後就網上找了一個例子,然後修改了下,實現了簡單的聊天室,包括群聊和點對點聊天。 使用的程式碼如下 jsp程式碼: <%@ page language="java" import="java.util.*" pageEncoding="

Java swing實現圖書管理系統高階版

大家好,今天給大家演示一下由Java swing實現的圖書管理系統,此前給大家演示過一個版本,這個版本作為升級版,比上一個版本功能複雜了不少,這個版本環境還是跟上一個一樣,jdk版本不限,資料庫為mysql,可匯入到eclipse或myeclipse裡執行,下面我們來演示執行

用ArrayList<E>實現簡單學生管理系統

package ArrayTest; /* * 用arrayList<E>去實現學生管理系統 */ import java.util.ArrayList; import java.util.Scanner; public class StudentSystemList { //

手把手教你做jsp servlet mysql實現圖書管理系統附帶視訊開發教程完整原始碼

上一個教程我們做的是對資料庫框架底層原理的講解,然後教大家做了一個自己的資料庫框架,這次我們做的這個圖書管理系統就是用我們上個教程自己寫的資料庫框架,整個專案做完框架執行的很穩定,沒有出現任何問題。如果你還沒有學習我們的那個資料庫框架教程的話我建議你還是先去學習那個資料庫框架的教程,地址是:ht

老師規定的不用選單寫的簡單圖書管理系統

#include<bits/stdc++.h> using namespace std; class Time { int month,day; public: Time (int b,int c) { month=b;day=c;

用ArrayList實現簡單學生管理系統

package ArrayTest; /* * 用arrayList<E>去實現學生管理系統 */ import java.util.ArrayList; import java.util.Scanner; public class StudentSyst

基於java圖書管理系統英文

OOD大作業 完全按照軟體工程思路製作文件:需求分析-詳細設計-測試-使用者手冊 僅實現基本功能,詳情介紹可以見文件 由於時間很短,這個工程只是個demo,系統和文件都有需要改進的地方(尤其是測試部分),不過可以提供課程完成思路。

[原始碼和文件分享]基於C語言和SQL SERVER資料庫實現圖書管理系統

摘 要 本文根據《資料庫應用系統設計》課程要求而做。選擇圖書館管理系統設計與開發是因為覺得圖書館管理系統對我們的幫助很大,並且經常去圖書館,對圖書館的大部分功能及流程還是比較瞭解,而且現在有些地方可能還不夠完善。這次課程設計目標是建立一個比較好的圖書館管理系統,方便學生查詢,方便管理員管理,節省

使用JDBC實現簡單的寵物系統增刪改查

BaseDao類(jdbc實現資料庫連線,增刪改查功能) package dao2; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import

[java原始碼] Java Web 文章管理系統Jsp+Ajax+JDBC+MySql實現

本示例是使用JavaWeb技術實現一個簡單的文章管理系統(新聞管理系統)其中主要功能如下: 使用者和管理員登入使用者釋出新文章、文章詳情檢視、文章修改、文章刪除與恢復使用者檢視他人對自己授權的文章及其文章資訊使用者將自己的文章對他人進行授權管理員對普通使用者新發

圖書管理系統Java + MySQL

(完整程式碼+實訓報告): https://download.csdn.net/download/qq_35793285/10896342 (完整程式碼):   https://pan.baidu.com/s/1B0kV-_nCQ4MkRmPclqaK7A 提取碼

基於JAVA圖書管理系統jsp+mysql+tomcat

這裡分享一個java web 專案,是一個基於JAVA 的圖書管理系統 本系統使用JSP+MySQL+Tomcat開發完成,由於開發時間過短,功能不甚完善,前臺頁面也不怎麼美觀,但是麻雀雖小,五臟俱全

資料結構 結構體 利用順序表寫的圖書管理系統

圖書管理系統 ,可以增刪查改,VS2013編譯#include<iostream>#include <iomanip>#include "string"using namespace std;#define OK 1#define ERROR 0#de

圖書管理系統:使用sql拼裝實現批量刪除

1、批量刪除之前,首先需要實現的是全選全不選 //完成全選,全不選的功能 //對於dom原生的屬性,應當使用prpo進行修改,而對於自定義的屬性使用attr進行修改