К дипломной работе


НазваниеК дипломной работе
страница9/11
ТипДиплом
filling-form.ru > Туризм > Диплом
1   2   3   4   5   6   7   8   9   10   11

Приложение 2 Код приложения «GeneratorDB»



Класс Main
import java.awt.*;

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.FileReader;

import java.io.FileWriter;

import java.io.IOException;

import java.util.logging.Level;

import java.util.logging.Logger;

import javax.swing.table.DefaultTableModel;

import java.util.*;

import java.net.URL;

import java.sql.*;

import java.io.*;

import java.util.List;

import javax.swing.DefaultListModel;

import javax.swing.SpinnerNumberModel;

import java.lang.Object;

public class Main extends javax.swing.JFrame {

int products_max = 26;

DefaultTableModel model = new DefaultTableModel();

//Таблица, в которой в одном кортеже содержится один продукт

DefaultTableModel model_compact = new DefaultTableModel();

// Таблица, в которой в одном кортеже содержится весь список

продуктов входящих в данную транзакцию

SpinnerNumberModel spinnerTransNumber_model = new SpinnerNumberModel(100, 0, 100000, 1); // Количество добовляемых транзакций

SpinnerNumberModel spinnerNumElements_model = new SpinnerNumberModel(26,

1, 1000, 1); // Количество видов продуктов

SpinnerNumberModel spinnerMinElements_model = new SpinnerNumberModel(1,

1, 1000, 1); // Минимальное количество продуктов в одной транзакции

SpinnerNumberModel spinnerMaxElements_model = new SpinnerNumberModel(26,

1, 1000, 1);// Максимальное количество продуктов в одной транзакции

DefaultListModel products = new DefaultListModel();//Лист с видами

продуктов

DefaultListModel products_id = new DefaultListModel(); //

Лист с id продуктов которые присутствуют в базе

Map prod; // Отношение (название продукта, номер продукта)

Random generator = new Random();

String alphabet = "abcdefghijklmnopqrstuvwxyz"; // Виды продуктов (для

теста)

String shop[] = {"Молоко", "Хлеб", "Вода", "Пэпси", "Фанта",

"Сникерс", "Спрайт", "Баунти", "Марс", "Кефир",

"Бананы", "Огурцы", "Помидоры", "Яйца", "Картошка",

"Жидкость_для_мытья_посуды", "Шоколад", "Пицца",

"Орехи", "Лук"};

String product_name[] = new String[1000]; // Названия продуктов

int uid = 1, // ID записи

tid = 1; // ID транзакции

int new_num = 2; // Число колонок в model_compact

int product_count[] = new int[1000];// Количетво продуктов вида i в базе

boolean compact = false; // В компактном виде?

List newTrans = new ArrayList();

FileWriter fw;

BufferedWriter bw;

/** Creates new form Main */

public Main() {

this.setDefaultCloseOperation(this.EXIT_ON_CLOSE);

initComponents();

// Связывание моделей таблиц с элементами Swing

jTable.setModel(model);

jRowsNumber.setModel(spinnerTransNumber_model);

jNumElements.setModel(spinnerNumElements_model);

jMinElements.setModel(spinnerMinElements_model);

jMaxElements.setModel(spinnerMaxElements_model);

jVarList.setModel(products);

prod = new HashMap();

for (int i = 0; i < products_max; i++)

{

product_name[i] = String.valueOf(alphabet.charAt(i));

prod.put(String.valueOf(alphabet.charAt(i)), i);

}

refreshVars();

refreshAll();

}

private void initComponents() {
jAddingProductDialog = new javax.swing.JDialog();

jNewProductName = new javax.swing.JTextField();

jLabelProductName = new javax.swing.JLabel();

jAddProduct = new javax.swing.JButton();

jCancelAdding = new javax.swing.JButton();

jChangingProductsDialog = new javax.swing.JDialog();

jMakeAlphabet = new javax.swing.JButton();

jMake1000 = new javax.swing.JButton();

jMakeShopProducts = new javax.swing.JButton();

jCancelChanging = new javax.swing.JButton();

jScrollPane2 = new javax.swing.JScrollPane();

jTable = new javax.swing.JTable();

jRowsNumber = new javax.swing.JSpinner();

jDeleteRow = new javax.swing.JButton();

jNumElements = new javax.swing.JSpinner();

jLabelNumElements = new javax.swing.JLabel();

jRandomize = new javax.swing.JButton();

jLabelTransNum = new javax.swing.JLabel();

jMinElements = new javax.swing.JSpinner();

jMaxElements = new javax.swing.JSpinner();

jLabel2 = new javax.swing.JLabel();

jLabelMinElements = new javax.swing.JLabel();

jLabelMaxElements = new javax.swing.JLabel();

jSetDefaultModel = new javax.swing.JButton();

jCompact = new javax.swing.JToggleButton();

jPanel1 = new javax.swing.JPanel();

jScrollPane3 = new javax.swing.JScrollPane();

jVarList = new javax.swing.JList();

jAddVar = new javax.swing.JButton();

jDeleteVar = new javax.swing.JButton();

jClearTrans = new javax.swing.JButton();

jGenerate = new javax.swing.JButton();

jRandomPlace2 = new javax.swing.JRadioButton();

jOpenAdding = new javax.swing.JButton();

jDefaultProducts = new javax.swing.JButton();

jWrite = new javax.swing.JButton();

jWriteFile = new javax.swing.JTextField();

jOpen = new javax.swing.JButton();

jLabel1 = new javax.swing.JLabel();

jRandomPlace = new javax.swing.JRadioButton();

jNewTrans = new javax.swing.JTextField();

jConsole = new javax.swing.JLabel();

jState = new javax.swing.JProgressBar();

//панель для создания базы

SuperPanel=new javax.swing.JPanel();

UpPanel=new javax.swing.JPanel();

SuperPanel.setLayout(new BorderLayout());

UpPanel.setLayout(new GridBagLayout());

LPanel=new javax.swing.JPanel();

LPanel.setLayout(new GridBagLayout());

RPanel=new javax.swing.JPanel();

RPanel.setLayout(new GridBagLayout());

D1Panel=new javax.swing.JPanel();

D1Panel.setLayout(new GridBagLayout());

D2Panel=new javax.swing.JPanel();

D2Panel.setLayout(new GridBagLayout());

WriteLabel1=new javax.swing.JLabel();

WriteLabel2=new javax.swing.JLabel();

Field2=new javax.swing.JTextField();

//Расположение элементов и на панели

//Верхняя панель

jLabelNumElements.setText("Количество элементов");

jLabelTransNum.setText("Количество транзакций");

jLabel2.setText("Количество элементов в транзакции:");

jLabelMinElements.setText("Минимальное");

jLabelMaxElements.setText("Максимальное");

UpPanel.add(jLabelNumElements,new

GBC(0,0).setAnchor(GBC.WEST).setWeight(0,

0).setInsets(10,10,5,10));

UpPanel.add(jLabelTransNum,new GBC(0,1).setAnchor(GBC.WEST).

setWeight(0,0).setInsets(10,10,5,10));

UpPanel.add(jNumElements,new GBC(1,0).setFill(GBC.HORIZONTAL));

UpPanel.add(jRowsNumber,new GBC(1,1).setFill(GBC.HORIZONTAL));

UpPanel.add(jLabel2,new GBC(2,0,1,2).setInsets(10,10,5,10));

UpPanel.add(jLabelMinElements,new

GBC(3,0).setInsets(10,10,5,10));

UpPanel.add(jLabelMaxElements,new

GBC(3,1).setInsets(10,10,5,10));

UpPanel.add(jMinElements,new GBC(4,0).setWeight(100,

0).setAnchor(GBC.WEST));

UpPanel.add(jMaxElements,new GBC(4,1).setWeight(100,

0).setAnchor(GBC.WEST));

//Левая Панель
jSetDefaultModel.setText("Очистить");

jSetDefaultModel.addActionListener(new

java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

jSetDefaultModelActionPerformed(evt);

}

});
jCompact.setText("Скомпоновать");

jCompact.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

jCompactActionPerformed(evt);

}

});

jDeleteRow.setText("Удалить запись");

jDeleteRow.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

jDeleteRowActionPerformed(evt);

}

});
jRandomize.setText("Добавить случайные транзакции");

jRandomize.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

jRandomizeActionPerformed(evt);

}

});

jRandomPlace.setText("Случайное место");

jTable.setModel(new javax.swing.table.DefaultTableModel(

new Object [][] {
},

new String [] {
}

));

jTable.setCellSelectionEnabled(true);

jTable.setGridColor(new java.awt.Color(0, 0, 0));

jTable.setSelectionBackground(new java.awt.Color(204, 255, 204));

jTable.setSelectionForeground(new java.awt.Color(51, 51, 51));

jScrollPane2.setViewportView(jTable);

LPanel.add(jSetDefaultModel,new GBC(0,0).setInsets(5,10,5,0));

LPanel.add(jCompact,new GBC(1,0));

LPanel.add(jDeleteRow,new GBC(2,0).setAnchor(GBC.WEST).setWeight(100,0));

LPanel.add(jRandomize,new GBC(0,1,2,1).setInsets(5,10,5,0));

LPanel.add(jRandomPlace,new GBC(2,1).setAnchor(GBC.WEST).setWeight(100, 0));

LPanel.add(jScrollPane2,new GBC(0,2,3,3).setFill(GBC.BOTH).setWeight(100,

100).setInsets(5,10,10,10));

//Правая панель

jOpenAdding.setText("Добавить продукт");

jOpenAdding.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

jOpenAddingActionPerformed(evt);

}

});
jDefaultProducts.setText("Шаблоны");

jDefaultProducts.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

jDefaultProductsActionPerformed(evt);

}

});

jDeleteVar.setText("Удалить из базы");

jDeleteVar.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

jDeleteVarActionPerformed(evt);

}

});

jScrollPane3.setViewportView(jVarList);

jAddVar.setText("Добавить в транзакцию");

jAddVar.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

jAddVarActionPerformed(evt);

}

});

jClearTrans.setText("Очистить транзакцию");

jClearTrans.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

jClearTransActionPerformed(evt);

}

});

jGenerate.setText("Добавить");

jGenerate.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

jGenerateActionPerformed(evt);

}

});

jRandomPlace2.setText("Случайное место");

jWrite.setText("Записать");

jWrite.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

jWriteActionPerformed(evt);

}

});

jWriteFile.setText("");

WriteLabel1.setText("ODBC драйвер:");

WriteLabel2.setText("Имя базы:");

Field2.setText("");

RPanel.add(jOpenAdding,new GBC(0,0).setInsets(10,0,0,0));

RPanel.add(jDeleteVar,new GBC(1,0).setInsets(10,0,0,0).setAnchor(GBC.WEST));

RPanel.add(jDefaultProducts,new GBC(2,0).setInsets(10,0,0,10).setWeight(100,

0).setAnchor(GBC.WEST).setFill(GBC.NONE));

RPanel.add(jScrollPane3,new GBC(0,1,3,3).setFill(GBC.BOTH).setWeight(100,

100).setInsets(10,0,0,10));

RPanel.add(jWrite,new GBC(0,6).setInsets(5,20,10,0).setFill(GBC.HORIZONTAL));

RPanel.add(WriteLabel1,new GBC(1,6).setInsets(5,30,10,0).setAnchor(GBC.WEST));

RPanel.add(jWriteFile,newGBC(2,6).setInsets(5,0,10,10).

setFill(GBC.HORIZONTAL).setAnchor(GBC.WEST).setWeight(100,0));

RPanel.add(WriteLabel2,new GBC(1,7).setInsets(5,30,10,0).setAnchor(GBC.WEST));

RPanel.add(Field2,new GBC(2,7).setInsets(5,0,10,10).setFill(GBC.HORIZONTAL).

setAnchor(GBC.WEST).setWeight(100,0));

//Диалог добавления продукта

jAddingProductDialog.setResizable(false);

jLabelProductName.setText("Имя продукта");

jAddProduct.setText("Ок");

jAddProduct.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

jAddProductActionPerformed(evt);

}

});

jCancelAdding.setText("Отмена");

jCancelAdding.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

jCancelAddingActionPerformed(evt);

}

});

D1Panel.add(jLabelProductName,new GBC(0,0).setAnchor(GBC.WEST).setInsets(5, 10,

15, 10));

D1Panel.add(jNewProductName,new GBC(1,0).setWeight(100,

0).setFill(GBC.HORIZONTAL).setInsets(5, 0, 5, 10));

D1Panel.add(jAddProduct,new GBC(0,1).setAnchor(GBC.EAST).setInsets(0, 0, 0, 10));

D1Panel.add(jCancelAdding,new GBC(1,1).setAnchor(GBC.WEST));

jAddingProductDialog.add(D1Panel);

//Выбор элементов

jChangingProductsDialog.setResizable(false);

jMakeAlphabet.setText("Алфавит");

jMakeAlphabet.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

jMakeAlphabetActionPerformed(evt);

}

});
jMake1000.setText("1000 элементов");

jMake1000.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

jMake1000ActionPerformed(evt);

}

});
jMakeShopProducts.setText("Магазин");

jMakeShopProducts.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

jMakeShopProductsActionPerformed(evt);

}

});
jCancelChanging.setText("Отмена");

jCancelChanging.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

jCancelChangingActionPerformed(evt);

}

});

D2Panel.add(jMakeAlphabet,new GBC(0,0).setInsets(10,10,5,10).

setFill(GBC.HORIZONTAL));

D2Panel.add(jMake1000,new GBC(0,1).setInsets(5,10,5,10).setFill(GBC.HORIZONTAL));

D2Panel.add(jMakeShopProducts,new GBC(0,2).setInsets(5,10,5,10).

setFill(GBC.HORIZONTAL));

D2Panel.add(jCancelChanging,new GBC(0,3).setInsets(5,10,10,10).

setFill(GBC.HORIZONTAL));

jChangingProductsDialog.add(D2Panel);

SuperPanel.add(UpPanel,BorderLayout.NORTH);

SuperPanel.add(LPanel,BorderLayout.WEST);

SuperPanel.add(RPanel,BorderLayout.EAST);

this.add(SuperPanel);

pack();
// Добавление колонки

// Добавление транзакций в таблицу model

private void jGenerateActionPerformed(java.awt.event.ActionEvent evt) {//GEN-

int random; // Курсор указывающий на место, куда будет вставляться новая

транзакция

if (newTrans.size() == 0 && jVarList.getSelectedIndex() == -1)

return;

jConsole.setText("Добавление транзакций...");

jConsole.paintImmediately(0, 0, 2000, 50);

jState.setMinimum(0);

jState.setMaximum(spinnerTransNumber_model.getNumber().intValue());

jState.setStringPainted(true);

jState.setValue(0);

if (jVarList.getSelectedIndex() != -1) // Если есть выделенные продукты в списке

{

newTrans.clear();

int listSelected[] = jVarList.getSelectedIndices();

for (int j = 0; j < listSelected.length; j++)

{

newTrans.add(product_name[listSelected[j]]);

}

jNewTrans.setText(newTrans.toString());

}

for (int i = 0; i < spinnerTransNumber_model.getNumber().intValue(); i++)

{

if (jRandomPlace2.isSelected() && model.getRowCount() != 0)

{

random = generator.nextInt(model.getRowCount());

while (random != 0 && model.getValueAt(random-1,

0).toString().equals(model.getValueAt(random, 0).toString()))

random--;

}

else

random = 0;

for (int j = 0; j < newTrans.size(); j++)

{

Object toBeAdded[] = new Object[2];

toBeAdded[0] = tid;

toBeAdded[1]= newTrans.get(j);

if (jRandomPlace2.isSelected())

model.insertRow(random+j, toBeAdded);

else

model.addRow(toBeAdded);

product_count[Integer.valueOf(prod.get(newTrans.get(j).toString()).toString())]++;

}

tid++;

jState.setValue(i);

jState.paintImmediately(0, 0, 2000, 50);

}

jState.setValue(0);

jConsole.setText("");

if (compact)

compact();

else

refreshVars();

}//GEN-LAST:event_jGenerateActionPerformed
// Проверка на правильность заполнения полей

private boolean allIsCorrect() {

if (spinnerMaxElements_model.getNumber().intValue() >

spinnerNumElements_model.getNumber().intValue() ||

spinnerMinElements_model.getNumber().intValue() >

spinnerMaxElements_model.getNumber().intValue() ||

spinnerMinElements_model.getNumber().intValue() > products_max ||

spinnerMaxElements_model.getNumber().intValue() > products_max ||

spinnerNumElements_model.getNumber().intValue() > products_max)

return false;

return true;

}

// Удаление элемента из транзакции (только для не компактного режима)

private void jDeleteRowActionPerformed(java.awt.event.ActionEvent evt)

while (jTable.getSelectedRow() != -1)

{

product_count[

Integer.valueOf(

prod.get(

model.getValueAt(jTable.getSelectedRow(), 1).toString()

).toString()

)

]--;

model.removeRow(jTable.getSelectedRow());

}
refreshVars();

}

// Добавление случайных транзакций в таблицу model

private void jRandomizeActionPerformed(java.awt.event.ActionEvent evt) {

if (!allIsCorrect())

return;

List listElemenets = new ArrayList(); // Список имён продуктов, из которых выбирается

//следующий продукт случайным образом

Object[] toBeAdded = new Object[2]; // (номер транзакции, имя продукта) для следующего

добавления

int numElements,

minElements = spinnerMinElements_model.getNumber().intValue(),

maxElements = spinnerMaxElements_model.getNumber().intValue();

int random; // Курсор указывающий на место, куда будет вставляться новая транзакция

jConsole.setText("Добавление случайных транзакций...");

jConsole.paintImmediately(0, 0, 2000, 50);

jState.setMinimum(0);

jState.setMaximum(spinnerTransNumber_model.getNumber().intValue());

jState.setStringPainted(true);

jState.setValue(0);

for (int i = 0; i < spinnerTransNumber_model.getNumber().intValue(); i++) // Цикл по количиству

транзакций

{
listElemenets.clear();

// Заполнение списка продуктов

if (jVarList.getSelectedIndex() != -1) // Если есть выделенные продукты в списке

{

int listSelected[] = jVarList.getSelectedIndices();

for (int j = 0; j < listSelected.length; j++)

{

listElemenets.add(product_name[listSelected[j]]);

//listElemenets_id.add(listSelected[j]);

}

if (minElements > listSelected.length)

minElements = listSelected.length;

if (maxElements > listSelected.length)

maxElements = listSelected.length;

}

else // Если нет выделенных продуктов в списке

{
for (int j = 0; j < spinnerNumElements_model.getNumber().intValue(); j++)

listElemenets.add(product_name[j]);

}

// Генерация числа продуктов в транзакции

numElements = generator.nextInt( maxElements -

minElements + 1 )

+

minElements;

// Вставка новых транзакций

if (jRandomPlace.isSelected() && model.getRowCount() != 0)

{

random = generator.nextInt(model.getRowCount());

while (random != 0 && model.getValueAt(random-1, 0).toString().equals(model.getValueAt(random, 0).toString()))

random--;

}

else

random = 0;

for (int k = 0; k < numElements; k++)

{

int element = generator.nextInt(listElemenets.size());

toBeAdded[0] = tid;

toBeAdded[1] = listElemenets.get(element);

product_count[Integer.valueOf(prod.get(listElemenets.get(element).toString()).toString())]++;

if (jRandomPlace.isSelected())

model.insertRow(random + k, toBeAdded);

else

model.addRow(toBeAdded);

listElemenets.remove(element);

}

tid++;

jState.setValue(i);

jState.paintImmediately(0, 0, 2000, 50);

}

jState.setValue(0);

jConsole.setText("");

if (compact)

compact();

else

refreshVars();


// Запись в базу

private void jWriteActionPerformed(java.awt.event.ActionEvent evt) {

Connection con;

String ProdApp;

String BufUniqKey;

int Buf;

String UpdTrans;

if ((jWriteFile.getText().equals("") || Field2.getText().equals(""))==false) {

try {

String CreateDB="CREATE DATABASE "+Field2.getText();

//String CreateTov="use "+Field2.getText()+"; CREATE TABLE TOVARS(UNIQKEY varchars(10) primary key);";

String CreateTov="CREATE TABLE "+Field2.getText()+".TOVARS(UNIQKEY varchar(10) primary key,TITLE varchar(50) NOT NULL )";

String CreateTrans="CREATE TABLE "+Field2.getText()+".TRANS(TID varchar(10), ELEM varchar(10) references "+Field2.getText()+".TOVARS(UNIQKEY))";

String url = "jdbc:odbc:"+jWriteFile.getText()+";";

Class.forName ("sun.jdbc.odbc.JdbcOdbcDriver");
DriverManager.setLogStream(System.out);

con = DriverManager.getConnection (

url,"" ,"" );

DatabaseMetaData dma = con.getMetaData ();

Statement stmt = con.createStatement ();

stmt.executeUpdate (CreateDB);

stmt.executeUpdate(CreateTov);

//заполнение таблицы товаров;

for (int i = 0; i < products_max; i++)

{

Buf=i+1;

ProdApp="INSERT INTO "+Field2.getText()+".TOVARS (UNIQKEY, TITLE) VALUES ('"+Buf+"', '"+product_name[i]+"')";

stmt.executeUpdate(ProdApp);

}

//Таблица транзакций

stmt.executeUpdate (CreateTrans);

for (int j = 0; j < model.getRowCount(); j++) // Цикл по записям в model

{

BufUniqKey="";

for (int i = 0; i < products_max; i++){

if(model.getValueAt(j, 1).toString().equalsIgnoreCase(product_name[i])){

BufUniqKey= Integer.toString(i+1);

}

}

System.out.println("Trans "+model.getValueAt(j, 0).toString()+"="+BufUniqKey);

UpdTrans="INSERT INTO "+Field2.getText()+".TRANS (TID, ELEM) VALUES ('"+model.getValueAt(j, 0).toString()+"', '"+BufUniqKey+"')";

stmt.executeUpdate (UpdTrans);

}

}

catch (java.lang.Exception ex) {
// Получив некоторые другие типы exception, распечатаем их.
ex.printStackTrace ();

}

}


// Заполнение таблицы по шаблону addColumns(tid, random)

private void clearModel(DefaultTableModel model) {

model.setRowCount(0);

model.setColumnCount(0);

model.addColumn("TID");

model.addColumn("Product");

}

// Очистка таблиц

private void refreshAll() {

clearModel(model);

clearModel(model_compact);

jNewTrans.setText(newTrans.toString());

for (int i = 0; i < products_max; i++)

product_count[i] = 0;

}

private void jSetDefaultModelActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jSetDefaultModelActionPerformed

refreshAll();

refreshVars();

}
// Удаление продукта

private void jDeleteVarActionPerformed(java.awt.event.ActionEvent evt) {

if (jVarList.getSelectedIndex() == -1)

return;

String selectedIndex = product_name[

Integer.valueOf(

products_id.getElementAt(

jVarList.getSelectedIndex()

).toString()

)

];

for (int i = model.getRowCount()-1; i >= 0; i--)

if (model.getValueAt(i, 1).toString().equals( selectedIndex ))

model.removeRow(i);

product_count[Integer.valueOf(products_id.getElementAt(jVarList.getSelectedIndex()).toString())] = 0;

products_id.remove(jVarList.getSelectedIndex());

if (compact)

compact();

else

refreshVars();

}
// Переход к виду model_compact (в одной записи все продукты транзакции)

private void compact() {

if (model.getRowCount() == 0)

{

model_compact.setRowCount(0);

return;

}

jConsole.setText("Компоновка...");

jConsole.paintImmediately(0, 0, 2000, 50);

jState.setMinimum(0);

jState.setMaximum(model.getRowCount());

jState.setStringPainted(true);

jState.setValue(0);

String last_tid;

Object obj[] = new Object[2];

model_compact.setRowCount(0);

model_compact.setColumnCount(0);

model_compact.addColumn("TID");

model_compact.addColumn("Product");
SortedSet products_ = new TreeSet();
last_tid = model.getValueAt(0, 0).toString();

for (int j = 0; j < model.getRowCount(); j++) // Цикл по записям в model

{

if (model.getValueAt(j, 0).toString().equalsIgnoreCase(last_tid)) // Если продолжается транзакция

{

products_.add(model.getValueAt(j, 1).toString());

}

else // Если новая транзакция

{

obj[0] = last_tid;

obj[1] = products_.toString();

model_compact.addRow(obj);

last_tid = model.getValueAt(j, 0).toString();

products_.clear();

products_.add(model.getValueAt(j, 1).toString());

}

jState.setValue(j);

jState.repaint();

jState.paintImmediately(0, 0, 2000, 50);

}

// Добавление последней транзакции

obj[0] = last_tid;

obj[1] = products_.toString();

model_compact.addRow(obj);

refreshVars();

jState.setValue(0);

jConsole.setText("");

}
// Перевод базы данных в компактный вид (нажатие кнопки)

private void jCompactActionPerformed(java.awt.event.ActionEvent evt) {

if (!compact)

{

compact();

jTable.setModel(model_compact);

compact = true;

}

else

{

jTable.setModel(model);

compact = false;

}

jDeleteRow.setEnabled(!compact);

}//GEN-LAST:event_jCompactActionPerformed
// Обновление списка элементов

private void refreshVars() {

String buf;

products.clear();

products_id.clear();

for (int i = 0; i < products_max; i++)

//if (product_count[i] != 0)

{

buf = (i+1) + ". " + product_name[i] + "(" + product_count[i] + ")";

products.addElement(buf);

products_id.addElement(i);

}

}
private void formMouseReleased(java.awt.event.MouseEvent evt) {

refreshVars();

jConsole.setText("");

}
// Добавление переменной в новую транзакцию

private void jAddVarActionPerformed(java.awt.event.ActionEvent evt) {

if (jVarList.getSelectedIndex() == -1 || newTrans.contains(product_name[Integer.valueOf(products_id.getElementAt(jVarList.getSelectedIndex()).toString())]))

return;

int listSelected[] = jVarList.getSelectedIndices();

for (int j = 0; j < listSelected.length; j++)

{

newTrans.add(product_name[listSelected[j]]);

}

jNewTrans.setText(newTrans.toString());

}
// Очистка списка элементов в новой транзакции

private void jClearTransActionPerformed(java.awt.event.ActionEvent evt) {

newTrans.clear();

jNewTrans.setText("");

}
// Чтение базы данных из файла

private void jOpenActionPerformed(java.awt.event.ActionEvent evt) {

FileReader fr = null;

try {

fr = new FileReader(jWriteFile.getText());

BufferedReader br = new BufferedReader(fr);
int tranNum = 1;

String s = br.readLine();

Object[] o = new Object[2];

while (s != null)

{

StringTokenizer dataLine = new StringTokenizer(s);

int tranSize = dataLine.countTokens();

for (int i = 0; i < tranSize; i++)

{

o[0] = tranNum;

o[1] = dataLine.nextToken();

model.addRow(o);

}

tranNum++;

s = br.readLine();

}

} catch (IOException ex) {

Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);

} finally {

try {

fr.close();

} catch (IOException ex) {

Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);

}

}

}
// Отмена добавления (закрытие окна)

private void jCancelAddingActionPerformed(java.awt.event.ActionEvent evt) {

jAddingProductDialog.setVisible(false);

}
// Добавление нового типа продукта

private void jAddProductActionPerformed(java.awt.event.ActionEvent evt) {

if (products_max >= 1000)

return;

for (int i = 0; i < products_max; i++)

if (product_name[i].equalsIgnoreCase(jNewProductName.getText()))

return;

product_name[products_max] = String.valueOf(jNewProductName.getText());

prod.put(String.valueOf(jNewProductName.getText()), products_max);

products_max++;

jAddingProductDialog.setVisible(false);

refreshVars();

}

// Открытие окна для добавления нового типа продукта

private void jOpenAddingActionPerformed(java.awt.event.ActionEvent evt) {

jAddingProductDialog.setSize(330, 100);

jAddingProductDialog.setVisible(true);

refreshVars();

}//GEN-LAST:event_jOpenAddingActionPerformed
private void jDefaultProductsActionPerformed(java.awt.event.ActionEvent evt) {

jChangingProductsDialog.setSize(155, 180);

jChangingProductsDialog.setVisible(true);

}
private void jMake1000ActionPerformed(java.awt.event.ActionEvent evt) {

products_max = 1000;

for (int i = 0; i < products_max; i++)

{

product_name[i] = "e" + (i+1);

prod.put(product_name[i], i);

}

jChangingProductsDialog.setVisible(false);

spinnerNumElements_model.setValue(products_max);

spinnerMaxElements_model.setValue(products_max);

refreshVars();

}//GEN-LAST:event_jMake1000ActionPerformed
private void jCancelChangingActionPerformed(java.awt.event.ActionEvent evt) {

jChangingProductsDialog.setVisible(false);

}
private void jMakeAlphabetActionPerformed(java.awt.event.ActionEvent evt) {

products_max = 26;

for (int i = 0; i < products_max; i++)

{

product_name[i] = String.valueOf(alphabet.charAt(i));

prod.put(String.valueOf(alphabet.charAt(i)), i);

}

jChangingProductsDialog.setVisible(false);

spinnerNumElements_model.setValue(products_max);

spinnerMaxElements_model.setValue(products_max);

refreshVars();

}
private void jMakeShopProductsActionPerformed(java.awt.event.ActionEvent evt) {

products_max = shop.length;

for (int i = 0; i < products_max; i++)

{

product_name[i] = shop[i];

prod.put(shop[i], i);

}

jChangingProductsDialog.setVisible(false);

spinnerNumElements_model.setValue(products_max);

spinnerMaxElements_model.setValue(products_max);

refreshVars();

}

public static void main(String args[]) {

java.awt.EventQueue.invokeLater(new Runnable() {

public void run() {

new Main().setVisible(true);

}

});

}

// Variables declaration - do not modify//GEN-BEGIN:variables

private javax.swing.JButton jAddProduct;

private javax.swing.JButton jAddVar;

private javax.swing.JDialog jAddingProductDialog;

private javax.swing.JButton jCancelAdding;

private javax.swing.JButton jCancelChanging;

private javax.swing.JDialog jChangingProductsDialog;

private javax.swing.JButton jClearTrans;

private javax.swing.JToggleButton jCompact;

private javax.swing.JLabel jConsole;

private javax.swing.JButton jDefaultProducts;

private javax.swing.JButton jDeleteRow;

private javax.swing.JButton jDeleteVar;

private javax.swing.JButton jGenerate;

private javax.swing.JLabel jLabel1;

private javax.swing.JLabel jLabel2;

private javax.swing.JLabel jLabelMaxElements;

private javax.swing.JLabel jLabelMinElements;

private javax.swing.JLabel jLabelNumElements;

private javax.swing.JLabel jLabelProductName;

private javax.swing.JLabel jLabelTransNum;

private javax.swing.JButton jMake1000;

private javax.swing.JButton jMakeAlphabet;

private javax.swing.JButton jMakeShopProducts;

private javax.swing.JSpinner jMaxElements;

private javax.swing.JSpinner jMinElements;

private javax.swing.JTextField jNewProductName;

private javax.swing.JTextField jNewTrans;

private javax.swing.JSpinner jNumElements;

private javax.swing.JButton jOpen;

private javax.swing.JButton jOpenAdding;

private javax.swing.JPanel jPanel1;

private javax.swing.JRadioButton jRandomPlace;

private javax.swing.JRadioButton jRandomPlace2;

private javax.swing.JButton jRandomize;

private javax.swing.JSpinner jRowsNumber;

private javax.swing.JScrollPane jScrollPane2;

private javax.swing.JScrollPane jScrollPane3;

private javax.swing.JButton jSetDefaultModel;

private javax.swing.JProgressBar jState;

private javax.swing.JTable jTable;

private javax.swing.JList jVarList;

private javax.swing.JButton jWrite;

private javax.swing.JTextField jWriteFile;

private javax.swing.JPanel SuperPanel;

private javax.swing.JPanel UpPanel;

private javax.swing.JPanel LPanel;

private javax.swing.JPanel RPanel;

private javax.swing.JPanel D1Panel;

private javax.swing.JPanel D2Panel;

private javax.swing.JLabel WriteLabel1;

private javax.swing.JLabel WriteLabel2;

private javax.swing.JTextField Field2;

}

Класс GBC

Взят с сайта http://horstmann.com

/*

GBC - A convenience class to tame the GridBagLayout
Copyright (C) 2002 Cay S. Horstmann (http://horstmann.com)
This program is free software; you can redistribute it and/or modify

it under the terms of the GNU General Public License as published by

the Free Software Foundation; either version 2 of the License, or

(at your option) any later version.
This program is distributed in the hope that it will be useful,

but WITHOUT ANY WARRANTY; without even the implied warranty of

MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the

GNU General Public License for more details.
You should have received a copy of the GNU General Public License

along with this program; if not, write to the Free Software

Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

*/
import java.awt.*;
/**

This class simplifies the use of the GridBagConstraints

class.

*/

public class GBC extends GridBagConstraints

{

/**

Constructs a GBC with a given gridx and gridy position and

all other grid bag constraint values set to the default.

@param gridx the gridx position

@param gridy the gridy position

*/

public GBC(int gridx, int gridy)

{

this.gridx = gridx;

this.gridy = gridy;

}
/**

Constructs a GBC with given gridx, gridy, gridwidth, gridheight

and all other grid bag constraint values set to the default.

@param gridx the gridx position

@param gridy the gridy position

@param gridwidth the cell span in x-direction

@param gridheight the cell span in y-direction

*/

public GBC(int gridx, int gridy, int gridwidth, int gridheight)

{

this.gridx = gridx;

this.gridy = gridy;

this.gridwidth = gridwidth;

this.gridheight = gridheight;

}
/**

Sets the anchor.

@param anchor the anchor value

@return this object for further modification

*/

public GBC setAnchor(int anchor)

{

this.anchor = anchor;

return this;

}

/**

Sets the fill direction.

@param fill the fill direction

@return this object for further modification

*/

public GBC setFill(int fill)

{

this.fill = fill;

return this;

}
/**

Sets the cell weights.

@param weightx the cell weight in x-direction

@param weighty the cell weight in y-direction

@return this object for further modification

*/

public GBC setWeight(double weightx, double weighty)

{

this.weightx = weightx;

this.weighty = weighty;

return this;

}
/**

Sets the insets of this cell.

@param distance the spacing to use in all directions

@return this object for further modification

*/

public GBC setInsets(int distance)

{

this.insets = new Insets(distance, distance, distance, distance);

return this;

}
/**

Sets the insets of this cell.

@param top the spacing to use on top

@param left the spacing to use to the left

@param bottom the spacing to use on the bottom

@param right the spacing to use to the right

@return this object for further modification

*/

public GBC setInsets(int top, int left, int bottom, int right)

{

this.insets = new Insets(top, left, bottom, right);

return this;

}
/**

Sets the internal padding

@param ipadx the internal padding in x-direction
@param ipady the internal padding in y-direction

@return this object for further modification

*/

public GBC setIpad(int ipadx, int ipady)

{

this.ipadx = ipadx;

this.ipady = ipady;

return this;

}

}

1   2   3   4   5   6   7   8   9   10   11

Похожие:

К дипломной работе iconДипломная работа студента кафедры «Прикладная математика»
Во время выполнения дипломной работы студент развивает навыки ведения самостоятельной научно-исследовательской работы, овладевает...

К дипломной работе iconОбразец заявления об изменении темы дипломной работы
Прошу разрешить мне изменить тему дипломной (курсовой) работы с «Развитие познавательного интереса младших школьников во внеклассной...

К дипломной работе iconПоложение
О выпускной квалификационной (дипломной) работе дипломированного специалиста, обучающегося на факультете физической культуры ниу...

К дипломной работе icon3 1 общие требования, предъявляемые к дипломной работе
Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования

К дипломной работе iconТребования и методические рекомендации
Правила оформления дипломной работы (подготовлены на основе Положения о выпускной квалификационной работе). 15

К дипломной работе iconМетодические основы организации выполнения дипломной работы Цель...
Выполнение дипломной работы является заключительным этапом обучения студентов. Дипломная работа представляет собой самостоятельную...

К дипломной работе iconВ дипломной работе мной были поставлены такие задачи как
Исторические этапы становления туроператорской деятельности в России и зарубежных странах

К дипломной работе iconДипломной работе будет рассмотрена тема «Документационное обеспечение...
В дипломной работе будет рассмотрена тема «Документационное обеспечение деятельности государственного учреждения (на примере гу со...

К дипломной работе iconО выпускной квалификационной (дипломной) работе (очная, заочная формы обучения)
Настоящее положение разработано в соответствии с положением об итоговой государственной аттестации выпускников гбоу впо вгма им....

К дипломной работе iconМетодические рекомендации по подготовке, оформлению и защите курсовых...
Особое внимание уделено выбору темы и организации выполнения дипломной работы, ее плану и структуре; подготовке дипломной работы...

Вы можете разместить ссылку на наш сайт:


Все бланки и формы на filling-form.ru




При копировании материала укажите ссылку © 2019
контакты
filling-form.ru

Поиск