database.java

来自「数据结构用java实现的一些源代码」· Java 代码 · 共 88 行

JAVA
88
字号
import java.io.*;public class Database {    private RandomAccessFile database;    private String fName = new String();;    private IOmethods io = new IOmethods();    Database() throws IOException {        System.out.print("File name: ");        fName = io.readLine();    }    private void add(DbObject d) throws IOException {        database = new RandomAccessFile(fName,"rw");        database.seek(database.length());        d.writeToFile(database);        database.close();    }    private void modify(DbObject d) throws IOException {        DbObject[] tmp = new DbObject[1];        d.copy(tmp);        database = new RandomAccessFile(fName,"rw");        while (database.getFilePointer() < database.length()) {            tmp[0].readFromFile(database);            if (tmp[0].equals(d)) {                 tmp[0].readFromConsole();                 database.seek(database.getFilePointer()-d.size());                 tmp[0].writeToFile(database);                 database.close();                 return;            }        }        database.close();        System.out.println("The record to be modified is not in the database");    }    private boolean find(DbObject d) throws IOException {        DbObject[] tmp = new DbObject[1];        d.copy(tmp);        database = new RandomAccessFile(fName,"r");        while (database.getFilePointer() < database.length()) {            tmp[0].readFromFile(database);            if (tmp[0].equals(d)) {                database.close();                return true;            }        }        database.close();        return false;    }    private void printDb(DbObject d) throws IOException {        database = new RandomAccessFile(fName,"r");        while (database.getFilePointer() < database.length()) {            d.readFromFile(database);            d.writeLegibly();            System.out.println();        }        database.close();    }    public void run(DbObject rec) throws IOException {        String option;        System.out.println("1. Add 2. Find 3. Modify a record; 4. Exit");        System.out.print("Enter an option: ");        option = io.readLine();        while (true) {            if (option.charAt(0) == '1') {                 rec.readFromConsole();                 add(rec);            }            else if (option.charAt(0) == '2') {                 rec.readKey();                 System.out.print("The record is ");                 if (find(rec) == false)                     System.out.print("not ");                 System.out.println("in the database");            }            else if (option.charAt(0) == '3') {                 rec.readKey();                 modify(rec);            }            else if (option.charAt(0) != '4')                 System.out.println("Wrong option");            else return;            printDb(rec);            System.out.print("Enter an option: ");            option = io.readLine();        }    }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?