Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Программирование на Java часть 2

.pdf
Скачиваний:
134
Добавлен:
16.03.2016
Размер:
3.07 Mб
Скачать

goodsInOrdersFrame.add(new

TableGoodsInOrdersPanel(db,Integer.valueOf(table.getValueAt(table.getSelected Row(), 0).toString())));

goodsInOrdersFrame.setVisible(true);

goodsInOrdersFrame.setResizable(false);

}

});

change.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) { if (table.getSelectedRow() != -1) {

DaoOrders dor = new DaoOrders(db); try {

dor.update(new Orders(Integer.valueOf(table.getValueAt(table.getSelectedRow(), 0).toString()),

table.getValueAt(table.getSelectedRow(), 3).toString())); DaoUsers daoUser = new DaoUsers(db);

if (table.getValueAt(table.getSelectedRow(), 3).toString().equals("reject")) {

daoUser.updateBalance(new Users(table.getValueAt(table.getSelectedRow(), 1).toString(),

Integer.valueOf(table.getValueAt(table.getSelectedRow(), 2).toString())));

}

} catch (SQLException ex) { JOptionPane.showMessageDialog(panel, "Incorrect data. Input

prosessing, payed or reject");

}

updateTable(); } else {

JOptionPane.showMessageDialog(panel, "Select the line you want to change");

}

}

});

}

@Override

public void createTable() { try {

table = new MyTable(db.query("select orders.orders_id,users.login, orders.total_cost,payment from orders JOIN users ON orders.users_id=users.users_id order by orders.orders_id")) {

@Override

161

public boolean isCellEditable(int row, int column) { if (column == 3) {

return true; } else {

return false;

}

}

};

} catch (SQLException ex) {

JOptionPane.showMessageDialog(this, "Error creating table\n" + ex, "Error", JOptionPane.ERROR_MESSAGE);

}

}

}

package by.belhard.user_interface.tables_panel;

import by.belhard.mysql.DB;

import by.belhard.user_interface.MyTable; import java.sql.SQLException;

import javax.swing.JOptionPane;

public class TableGoodsInOrdersPanel extends TablePanel {

private int orders_id;

public TableGoodsInOrdersPanel(DB db, int users_id) { super(db);

this.orders_id = users_id; initComponents(); scroll.setSize(250, 200); remove(add); remove(delete); remove(change);

}

@Override

public void action() {

}

@Override

public void createTable() { try {

162

table = new MyTable(db.query("SELECT goods.name, goods_in_orders.count from goods JOIN goods_in_orders ON goods.goods_id=goods_in_orders.goods_id where goods_in_orders.orders_id=" + orders_id)) {

@Override

public boolean isCellEditable(int row, int column) { return false;

}

};

} catch (SQLException ex) {

JOptionPane.showMessageDialog(this, "Error creating table\n" + ex, "Error", JOptionPane.ERROR_MESSAGE);

}

}

}

Все панели с таблицами добавлены к панели с вкладками на

AdminFrame.

Листинг 4.15

package by.belhard.user_interface;

import by.belhard.mysql.DB;

import by.belhard.user_interface.tables_panel.*; import javax.swing.*;

import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener;

public class AdminFrame extends JFrame {

private DB db;

private TablePanel panelUsers, panelGoods, panelOrders; private JTabbedPane tabbedTables;

public AdminFrame(DB db) { this.db = db;

setSize(750, 480); setTitle("AdminFrame"); setLocationRelativeTo(null);

setDefaultCloseOperation(EXIT_ON_CLOSE); initComponents();

action();

setVisible(true);

163

}

private void initComponents() { panelUsers = new TableUsersPanel(db);

panelGoods = new TableGoodsPanel(db); panelOrders = new TableOrdersPanel(db); tabbedTables = new JTabbedPane(); tabbedTables.add("Users", panelUsers); tabbedTables.add("Goods", panelGoods); tabbedTables.add("Orders", panelOrders); add(tabbedTables);

}

private void action() { tabbedTables.addChangeListener(new ChangeListener() {

@Override

public void stateChanged(ChangeEvent e) { panelUsers.updateTable(); panelGoods.updateTable(); panelOrders.updateTable();

}

});

}

}

Тема 4.7 Демонстрация работы приложения

При запуске проекта выводится StartFrame. В текстовые поля вводим путь к MySQL серверу, логин и пароль для входа.

Create приводит к созданию базы банных. Если создание прошло успешно появится окно с подтверждением, если база не установилась – окно с ошибкой. Delete удаляет базу данных.

164

После установки базы данных жмем Connect и поподаем в LoginFrame. Если пользователя ещѐ нет в системе, то он может зарегистрироваться через

RegistrationFrame.

ВLoginFrame вводим логин и пароль и в зависимости от роли попадаем

вUserFrame или в AdminFrame. В UserFrame пользователь видит все товары и может сделать заказ на сумму, не более его баланса.

165

В AdminFrame есть возможность видеть и редактировать все таблицы.

166

Данный проект является учебным, поэтому его ещѐ можно расширять, сделать более дружественным интерфейс и добавить проверки на корректность вводимых данных. Данный проект поможет Вам написать свой итоговый проект и успешно закончить базовый курс по Java.

167

Задания на итоговый проект:

Разработать приложение с пользовательским интерфейсом, работающее

сбазой данных.

1)Система Факультатив. Преподаватель объявляет запись на Курс. Студент записывается на Курс, обучается и по окончании Преподаватель выставляет Оценку, которая сохраняется в Архиве. Студентов, Преподавателей и Курсов при обучении может быть несколько.

2)Система Платежи. Клиент имеет Счет в банке и Кредитную Карту (КК). Клиент может оплатить Заказ, сделать платеж на другой Счет, заблокировать КК и аннулировать Счет. Администратор может заблокировать КК за превышение кредита.

3)Система Больница. Пациенту назначается лечащий Врач. Врач может сделать назначение Пациенту (процедуры, лекарства, операции). Медсестра или другой Врач выполняют назначение. Пациент может быть выписан из Больницы по окончании лечения, при нарушении режима или при иных обстоятельствах.

4)Система Вступительные экзамены. Абитуриент регистрируется на Факультет, сдает Экзамены. Преподаватель выставляет Оценку. Система подсчитывает средний балл и определяет Абитуриентов, зачисленных в учебное заведение.

5)Система Библиотека. Читатель оформляет Заказ на Книгу. Система осуществляет поиск в Каталоге. Библиотекарь выдает Читателю Книгу на абонемент или в читальный зал. При невозвращении Книги Читателем он может быть занесен Администратором в «черный список».

6)Система Конструкторское бюро. Заказчик представляет Техническое Задание (ТЗ) на проектирование многоэтажного Дома. Конструктор регистрирует ТЗ, определяет стоимость проектирования и строительства, выставляет Заказчику Счет за проектирование и создает Бригаду Конструкторов для выполнения Проекта.

7)Система Телефонная станция. Абонент оплачивает Счет за разговоры и Услуги, может попросить Администратора сменить номер и отказаться от услуг. Администратор изменяет номер, Услуги и временно отключает Абонента за неуплату.

8)Система Автобаза. Диспетчер распределяет заявки на Рейсы между Водителями и назначает для этого Автомобиль. Водитель может сделать заявку на ремонт. Диспетчер может отстранить Водителя от работы. Водитель делает отметку о выполнении Рейса и состоянии Автомобиля.

9)Система Интернет-магазин. Администратор добавляет информацию о Товаре. Клиент делает и оплачивает Заказ на Товары. Администратор регистрирует Продажу и может занести неплательщиков в «черный список».

10)Система Железнодорожная касса. Пассажир делает Заявку на станцию назначения, время и дату поездки. Система регистрирует Заявку и осуществляет поиск подходящего Поезда. Пассажир делает выбор Поезда и

168

получает Счет на оплату. Администратор вводит номера Поездов, промежуточные и конечные станции, цены.

11)Система Городской транспорт. На Маршрут назначаются Автобус, Троллейбус или Трамвай. Транспортные средства должны двигаться с определенным для каждого Маршрута интервалом. При поломке на Маршрут должен выходить резервный транспорт или увеличиваться интервал движения.

12)Система Аэрофлот. Администратор формирует летную Бригаду (пилоты, штурман, радист, стюардессы) на Рейс. Каждый Рейс выполняется Самолетом с определенной вместимостью и дальностью полета. Рейс может быть отменен из-за погодных условий в Аэропорту отлета или назначения. Аэропорт назначения может быть изменен в полете из-за технических неисправностей, о которых сообщил командир.

13)Система Периодические издания. Читатель может сделать Заявку, предварительно выбрав периодические Издания из списка. Система подсчитывает сумму для оплаты. Читатель оплачивает заявку. Администратор добавляет Заявку в «черный список», если Клиент не оплачивает еѐ в определѐнный срок.

14)Система Заказ гостиницы. Клиент оставляет Заявку на Номер, указав количество мест в номере, класс апартаментов и время пребывания. Администратор рассматривает Заявку, подтверждает или отклоняет еѐ. Результат просматривает Клиент. В случае подтверждения Заявки Клиент оплачивает услуги.

15)Система Жилищно-коммунальные услуги. Квартиросъемщик отправляет Заявку, в которой указывает род работ, масштаб и желаемое время выполнения. Диспетчер формирует соответствующую Бригаду и регистрирует еѐ в Плане работ. Диспетчер может отклонить Заявку в случае занятости всех Бригад.

16)Система Прокат автомобилей. Клиент выбирает Автомобиль из списка доступных, заполняет форму Заказа, указывая паспортные данные, срок аренды. Администратор может отклонить Заявку, указав причины отказа. При подтверждении Заявки Клиент оплачивает Заказ. Система выписывает сумму. В случае повреждения Автомобиля Клиентом Администратор вносит соответствующие пометки.

169

ЗАКЛЮЧЕНИЕ

В настоящее время Java один из наиболее популярных и перспективных языков, область применения которого с каждым днем становится все шире. Изучив данное методическое пособие, Вы получили лишь базовые знания по JavaSE – сделали первый шаг на пути изучения этого широко востребованного языка. Изучив основы языка, у Вас есть два варианта продолжения Вашего обучения и развития:

изучить JavaEE на ―Продвинутом курсе по Java‖ и заниматься разработкой под web;

изучить JavaME на ―Программировании под Android‖ и заниматься разработкой приложений под платформу Android.

Каждый выбирает то, что ближе ему. Главное не останавливаться в развитии и продолжать обучение, набраться опыта и стать успешным Javaпрограммистом.

Если у Вас возникли какие-либо вопросы, замечания или предложения по данному методическому пособию, то присылайте их на адрес

KarsekaEV@tut.by.

С уважением, Елена Белая

170