WebClub - Всероссийский Клуб Веб-разработчиков
WebClub.RU » Архив » Создание и просмотр примитивной БД.

Создание и просмотр примитивной БД.


Дата публикации: 17-03-2013

//DB (RandomAccessFile)
import java.io.*;
import java.awt.*;
import java.awt.event.*;

public class DB_RAF extends Frame
implements WindowListener, ActionListener {
TextArea tData;
TextField tDay, tMonth, tYear;
Checkbox chState;
Button bWrite, bPrev, bNext;
Panel pN, pS;
int recNbr; //кол-во записей в базе и
int pointer; //номер текущей записи
RandomAccessFile f; //файл базы данных
char buf[]; //вспомогательный массив char

public DB_RAF(String s) { //Конструктор
super(s); //Создание элементов интерфейса
tData = new TextArea(); //и регистрация Listener'ов
tDay = new TextField(2);
tMonth = new TextField(2);
tYear = new TextField(4);
chState = new Checkbox();
bWrite = new Button("Add record");
bPrev = new Button("<");
bNext = new Button(">");
pN = new Panel(); pN.setBackground(Color.lightGray);
pN.add(tDay); pN.add(tMonth); pN.add(tYear); pN.add(chState);
add(pN, "North");
pS = new Panel(); pS.setBackground(Color.lightGray);
pS.add(bWrite); pS.add(bPrev); pS.add(bNext);
add(pS, "South"); 
add(tData, "Center");
addWindowListener(this);
bWrite.addActionListener(this);
bNext.addActionListener(this);
bPrev.addActionListener(this);
setBounds(50,50,300,200);
setVisible(true);
}

public static void main(String arg[]) {
DB_RAF db = new DB_RAF("DB (RandomAccessFile)");
db.buf = new char[100]; // создаем временный буфер
try { //открытие файла
db.f = new RandomAccessFile("db_raf.dat", "rw");
db.recNbr = db.f.readInt(); //чтение кол-ва записей с нулевой позиции
} catch(IOException ioe) {}
db.pointer = 0;
db.showRec(db.pointer); //показываем первую запись
}

public void actionPerformed(ActionEvent ae) {
if (ae.getSource()==bWrite) { //Добавление записи в файл
try {
f.seek(4+205*recNbr); //переход конец файла
//запись содержимого поля дня как байта:
f.writeByte(Byte.parseByte(tDay.getText().trim()));
//запись содержимого поля месяца как байта:
f.writeByte(Byte.parseByte(tMonth.getText().trim()));
//запись содержимого поля года как short:
f.writeShort(Short.parseShort(tYear.getText().trim()));
//запись состояния как boolean:
f.writeBoolean(chState.getState());
StringBuffer s = new StringBuffer(tData.getText().trim());
for (int i=0; i<100; i++) //заполнение врем. буфера
buf[i] = (i<s.length()) ? s.charAt(i) : 32;
//преобразование буфера в строку и запись ее в файл:
f.writeChars(new String(buf));
recNbr++; //увеличиваем счетчик записей на единицу
f.seek(0); f.writeInt(recNbr); //записываем в начало файла
} catch(IOException ioe) {}
}
//Показ след записи:
if (ae.getSource()==bNext && pointer<recNbr-1) {
pointer++; showRec(pointer);
}
//Показ предыдущей записи:
if (ae.getSource()==bPrev && pointer>0) {
pointer--; showRec(pointer);
}
}

public void showRec(int n) { //показ записи на экране
try {
f.seek(4+205*n); //переход на начало нужной записи
//читаем день, преобразуем в строку и заносим в поле:
tDay.setText(String.valueOf(f.readByte()));
//читаем месяц, преобразуем в строку и заносим в поле:
tMonth.setText(String.valueOf(f.readByte()));
//читаем год, преобразуем в строку и заносим в поле:
tYear.setText(String.valueOf(f.readShort()));
//читаем состояние, устанавливаем checkbox:
chState.setState(f.readBoolean());
//читаем в буфер 100 символов (200 байт):
for (int i=0; i<100; i++) buf[i] = f.readChar();
//преобразуем буфер в строку и заносим в текстовое поле:
tData.setText((new String(buf)).trim());
}
catch(IOException ioe) {}
}

//Реализация WindowListener:
public void windowClosing(WindowEvent we) {
//закрытие файла перед выходом из программы:
try {f.close();} catch(IOException ioe){} 
System.exit(0); 
}
public void windowClosed(WindowEvent wEvt){}
public void windowOpened(WindowEvent wEvt){}
public void windowIconified(WindowEvent wEvt){}
public void windowDeiconified(WindowEvent wEvt){}
public void windowActivated(WindowEvent wEvt){}
public void windowDeactivated(WindowEvent wEvt){}
}

Домен продается

Популярное

Не так давно в сети появился новый сервис, под названием Dead Man Zero. Этот сервис сделал...
Рынок социальных площадок уже давно стал стабильным. Несмотря на то, что время от времени...
Artisteer 4 – единственный в своем роде продукт, позволяющий автоматизировать работу над созданием...
Апрель 2024 (1)
Октябрь 2018 (14)
Февраль 2017 (3)
Январь 2017 (1)
Август 2016 (1)
Май 2016 (2)

Карта сайта: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41

Друзья сайта



Случайная цитата

Неизвестный автор:

"Хороший сайт сам себя хвалит."

Опрос

Какой текстовый редактор Вы используете?

OpenOffice
AbiWord
Notepad++
UltraEdit
PSPad
Microsoft Office
Microsoft Блокнот
Другой...