Проектирование собственной базы данных

Автор работы: Пользователь скрыл имя, 18 Марта 2015 в 11:09, курсовая работа

Описание работы

Целью курсового проектирования является приобретение практических
навыков по созданию систем автоматизированного сбора и обработки
данных, информации.
Основным содержанием данной работы являются: на этапе проектирования –
разработка информационно – логической (концептуальной) модели базы, на
этапе разработки и создания – конструирование структуры объектов, их
создание, тестирование.

Содержание работы

ВВЕДЕНИЕ
1. ЗАДАНИЕ ПО ВЫБРАННОМУ ВАРИАНТУ
2. АНАЛИЗ ПРЕДМЕТНОЙ ОБЛАСТИ
2.1
Определение объектов и связей между ними
2.2
Нормализация отношений
2.3
Построение концептуальной модели данных
2.4
Построение реляционной модели базы данных
3. ОПИСАНИЕ СПОСОБОВ РЕАЛИЗАЦИИ ЗАПРОСОВ
4. РЕАЛИЗАЦИЯ ЗАПРОСОВ
5. ОПИСАНИЕ ИНТЕРФЕЙСА
5.1.
Описание групп пользователей
5.2.
Описание интерфейса
6. КОНТРОЛЬНЫЙ ПРИМЕР
ВЫВОДЫ
СПИСОК ЛИТЕРАТУРЫ

Файлы: 1 файл

КРБД.pdf

— 348.33 Кб (Скачать файл)
Page 1
СОДЕРЖАНИЕ
АННОТАЦИЯ
ВВЕДЕНИЕ
1. ЗАДАНИЕ ПО ВЫБРАННОМУ ВАРИАНТУ
2. АНАЛИЗ ПРЕДМЕТНОЙ ОБЛАСТИ
2.1
Определение объектов и связей между ними
2.2
Нормализация отношений
2.3
Построение концептуальной модели данных
2.4
Построение реляционной модели базы данных
3. ОПИСАНИЕ СПОСОБОВ РЕАЛИЗАЦИИ ЗАПРОСОВ
4. РЕАЛИЗАЦИЯ ЗАПРОСОВ
5. ОПИСАНИЕ ИНТЕРФЕЙСА
5.1.
Описание групп пользователей
5.2.
Описание интерфейса
6. КОНТРОЛЬНЫЙ ПРИМЕР
ВЫВОДЫ
СПИСОК ЛИТЕРАТУРЫ

Page 2

АННОТАЦИЯ
Целью курсового проектирования является приобретение практических
навыков по созданию систем автоматизированного сбора и обработки
данных, информации.
Основным содержанием данной работы являются: на этапе проектирования –
разработка информационно – логической (концептуальной) модели базы, на
этапе разработки и создания – конструирование структуры объектов, их
создание, тестирование. Разработка алгоритма и его реализация для решения
простейшей задачи пользователя.
Проектирование базы данных на основе системы управления базами данных
MySQL, для удобства использования был разработан интерфейс на Java в
Netbeans.

Page 3

ВВЕДЕНИЕ
Данная курсовая работа посвящена проектированию собственной базы
данных. Проектирование охватывает три основные области:

Проектирование конкретных объектов, которые будут реализованы в
базе данных. Для MySQL это такие объекты, как таблицы, представления, и
т.д.
 Проектирование конкретных экранных элементов управления,
отчетов и программ, которые будут сопровождать данные в базе данных, и
обеспечивать редактирование этих данных.
 При определенных обстоятельствах в процессе проектирования
также необходимо учитывать конкретную среду или технологию – например,
топологию сети, конфигурацию аппаратных средств, использование
архитектуры клиент/сервер, параллельной обработки или распределенной
архитектуры базы данных.
При проектировании каждой из областей есть свои нюансы, которые
разработчику следует учитывать. Например, при проектировании таблиц
базы и установки связи между ними следует позаботиться как о целостности
данных базы, так и о совместимости типов при подключении к этой базе
разнообразных приложений и клиентов.
При разработке интерфейса пользователя следует обратить внимание на
критерий удобства работы пользователя с базой. Интерфейс должен быть
доброжелателен даже к неопытному пользователю.

Page 4

1. ЗАДАНИЕ ПО ВЫБРАННОМУ ВАРИАНТУ
Предметная область: «Химчистка».
Возможные виды деятельности:

прием у клиентов заказов на выполнение работ над вещами.

учет работы сотрудников.

учет выполнения услуг.

Учет реактивов.

Page 5

2. АНАЛИЗ ПРЕДМЕТНОЙ ОБЛАСТИ
2.1
Определение объектов и связей между ними
Определены следующие объекты в БД:

Action

Cheque

Client

Employee

Journal

Post

Reagent

Service

Servreag
Эти объекты имеют следующие информационные характеристики:

Объект Action – Идентификатор, Описание, Идентификатор
Пользователя

Объект Cheque – Идентификатор, Дата сдачи, Дата Получения,
Идентификатор клиента, Идентификатор сотрудника, Идентификатор
услуги.

Объект Client – Идентификатор, Фамилия, Имя, Адрес, Номер
паспорта

Объект Employee – Идентификатор, Фамилия, Имя, Адрес, Номер
паспорта, Идентификатор должности, Логин, Пароль

Объект Journal – Время, Дата, Идентификатор действия

Объект Post – Идентификатор, Наименование, Зарплата

Объект Reagent – Идентификатор, Наименование, Стоимость

Page 6


Объект
Service – Идентификатор,
Идентификатор реактива,
Наименование, Стоимость

Объект Servreag – Идентификатор , Идентификатор услуги,
Идентификатор реактива, Количество
2.2 Между объектами выявлены следующие взаимосвязи:

Один клиент может получить 1 чек. Связь 1:1

На одной должности могут работать несколько сотрудников.
Связь 1:М.

Каждый реактив можно использовать в нескольких услугах.
Связь М:N.

Каждый сотрудник может обслуживать несколько клиентов.
Связь М:N.

Каждый сотрудник может заказывать несколько услуг. Связь М:N.

Каждый сотрудник может один раз заходить в систему. Связь
1:М.

Каждый сотрудник может выполнять несколько услуг. Связь М:N.

Page 7

2.3 Нормализация отношений
Перечисленные ранее объекты имеют атрибуты, совпадающие с их
информационными характеристиками.
Action – Идентификатор

Cheque – Идентификатор

Client – Идентификатор

Employee – Идентификатор

Journal – нету, т. к. является связующим звеном

Post — Идентификатор

Reagent – Идентификатор

Service – Идентификатор
Servreag – нету, т.к является связующим звеном.
2.2
Построение концептуальной модели данных
Концептуальная модель данных для предметной области "Химчистка"
представлена в приложении 1. Концептуальная модель представляет объекты
предметной области, их атрибуты и взаимосвязи между объектами.
Ключевые атрибуты подчеркнуты.
2.3
Построение реляционной модели базы данных
Чтобы получить реляционную модель, следует выполнить такие
действия:

для связей 1:N добавить специальное поле в таблицу со стороны
"многие" (внешний ключ), которое служит для ссылки на таблицу,
находящуюся со стороны "один"

для связей М:N необходимо создать дополнительную таблицу,
которая содержит первичные ключи таблиц из взаимосвязи, а также

Page 8

дополнительные атрибуты, относящиеся к составному объекту, который
определяет эту взаимосвязь.
В результате получена структура базы данных, которая будет физически
храниться в памяти компьютера. Реляционная модель базы данных
представлена в приложении 2.

Page 9

3. ОПИСАНИЕ СПОСОБОВ РЕАЛИЗАЦИИ ЗАПРОСОВ
1.1) Список сотрудников, которые работают на данной должности
SELECT employee.surname, post.name FROM employee LEFT JOIN post ON
post.Id
= employee.Id_post WHERE (((post.Id) = 2)) ORDER BY
employee.Name;
1.2) Список сервисов в котором исользуется данный реагент
SELECT service.desription, reagent.name FROM service LEFT JOIN reagent
ON
reagent.Id = service.Id_reag WHERE (((reag.Id) = 2))
ORDER
BY service.descriprion;
2.1) Найти всех клиентов, чья фамилия начинается на заданную букву
SELECT surname, name from client WHERE surname LIKE 'M%';
2.2) Найти все сотрудников, которые начинаются на заданную букву
SELECT surname, name from reagent WHERE surname LIKE 'M%';
3.1) Список услуг было оказано за июнь
SELECT service.descript, client.surname, cheque.dateout FROM client
RIGHT JOIN (service left join
cheque ON service.id = cheque.id_ser) on
client.id = cheque.id_cl WHERE (((cheque.Dateout) Between '2013.06.01'
And '2013.06.31'));
3.2)Список клиентов обслуженных за июнь
SELECT service.descript, client.surname FROM client RIGHT JOIN (service
left join
cheque ON service.id = cheque.id_ser) on client.id =
cheque.id_cl
WHERE
(((cheque.Dateout)
Between
'2013.06.01'
And
'2013.06.31'));
4.1) Сколько клиентов было обслужено за последний месяц
SELECT count(distinct cheque.id_cl) as count FROM cheque WHERE
MONTH(dateOut) = MONTH(NOW()) AND YEAR(dateOut) = YEAR(NOW());
4.2) Сколько услуг оказано за месяц
SELECT Count(cheque.Id_ser) AS count FROM cheque WHERE MONTH(dateOut)
= MONTH(NOW()) AND YEAR(dateOut) = YEAR(NOW());
5.1) Сколько услуг заказал каждый клиент
SELECT Client.Surname, Count(Cheque.id_cl) FROM Client JOIN Cheque ON
Client.id= Cheque.id_cl GROUP BY Client.surname;
5.2) Сколько реактивов использовалось на каждую услугу
SELECT Service.descript, Count(Servreag.Id_reag) AS Count FROM Service
LEFT JOIN Servreag ON Service.Id=Servreag.Id_serv GROUP BY
service.descript;
6.1) Кто из клиентов обслуживался дольше всех
select client.surname from client inner join cheque on client.id =
cheque.id_cl where (dateOut-dateIn) >= all ( select (dateOut – dateIn)
from cheque);

Page 10

6.2) Самый дорогой реагент
SELECT name, cost FROM reagent where cost >= ALL (SELECT cost FROM
reagent);
7.1)Для каждой должности вывести сотрудника, который обслужил максимальное
количество клиентов.
SELECT post.post_name, employee.surname, count(cheque.id_emp) from post
right JOIN ( employee LEFT JOIN cheque ON employee.id = cheque.id_emp)
ON post.id = employee.id_post group by employee.surname;
7.2) Вывести сотрудников, которые обслужили больше 1 клиента
SELECT employee.surname from employee where 2 = ( SELECT
count(cheque.id_emp) as count from cheque WHERE employee.id =
cheque.id_emp);
8.1) Какие реактивы не использовались
SELECT reagent.id, reagent.name FROM reagent LEFT JOIN service ON
reagent.id = service.id_reag WHERE ((reagent.id) Not In (SELECT id_reag
FROM service)) GROUP BY reagent.name;
8.2) На какие услуги не было запросов на этой недеде
SELECT service.descript from service left join cheque on cheque.id_ser
= service.id WHERE EXISTS (SELECT id_ser FROM cheque where
cheque.id_ser = service.id) =False and YEAR(dateout) = YEAR(NOW()) AND
WEEK(dateout, 1) = WEEK(NOW(), 1);
9.1) Вывести список зарплат с комментариями о размере
select post.post_name, post.salary, 'High salary' as comment from post
where salary > 3000 UNION select post.post_name, post.salary, 'Average
salary' as comment from post where salary < 3000 and salary >= 1000
UNION
select post.post_name, post.salary, 'Low salary' as comment
from post where salary < 1000;
9.2) Вывести список рективов с комментарями о размере цены
select name, cost, 'Expensive' as comment from reagent where cost > 100
UNION select name, cost, 'Average cost' as comment from reagent where
cost <= 100 and cost >50 UNION select name, cost, 'Cheap' as comment
from reagent where cost < 50;
Журнал был реализован с помощью триггера.
Create trigger view AFTER INSERT ON action FOR EACH ROW BEGIN INSERT
INTO journal set time = (select curtime()), date = (select curdate()),
row_id = NEW.actionID;

Page 11

4. РЕАЛИЗАЦИЯ ЗАПРОСОВ
Cписок сотрудников, которые работают на данной должности
Список сервисов, в котором используется данный реагент

Page 12

Найти всех сотрудник, чья фамилия начинается на заданную букву
Найти всех клиентов, чья фамилия начинается на заданную букву
Список услуг было оказано за июнь
Список клиентов, обслуженных за июнь

Page 13

Сколько клиентов было обслужено за последний месяц
Сколько услуг оказано за месяц
Сколько услуг заказал каждый клиент
Сколько реактивов использовалось на каждую услугу
Самый дорогой реагент
Вывести сотрудников, которые обслужили больше [кол-во] клиента(-ов)
Какие реактивы не использовались

Page 14

На какие услуги не было запросов
Вывести список зарплат с комментариями о размере
Вывести список реактивов с комментариями о размере цены

Page 15

5. ОПИСАНИЕ ИНТЕРФЕЙСА
5.1
Описание групп пользователей
В системе определены четыре группы пользователей – Директор,
Менеджер, Мойщик и Клиент.
Для каждой группы предусмотрены следующие возможности работы с
программой:
Директор – разрешено добавлять сотрудников, просматривать журнал,
доступ ко всем запросам.
Менеджер – может добавлять клиентов и работать с запросами
относительно них. Также ему открыт доступ к запросам Мойщика.
Оформляет заказ.
Мойщик – может добавлять реактивы и работать с запросами
касательно услуг и реактивов.
Клиент — может просматривать свой чек.
5.2
Описание интерфейса
Интерфейс реализован на языке программирования Java в Netbeans.
Первоначально загружается форма Авторизации. После ввода логина и
пароля, в зависимости от должности, открывается соответствующее окно. В
нем можно просматривать список, добавлять новую единицу и просматривать
запросы. Для ввода и просмотра данных созданы специальные элементы
управления, связанные с конкретными таблицами.
Права пользователей разделены за счет отображения разных форм, в
которых выполняются те или иные действия.

Page 16

6. КОНТРОЛЬНЫЙ ПРИМЕР
При запуске программы надо ввести имя пользователя и пароль.
При входе под Директором отображается форма следующего вида.
При входе под учетной записью менеджера отображается форма
следующего вида.

Page 17

Форма с запросами у всех одинаковая, только для Мойщика и
Менеджера закрыт доступ к определенным запросам.

Page 18

Директор может просмотреть Журнал , в котором указаны время и дата
совершенных действий пользователем.
Запросы были реализованы с помощью MySQL.
Менеджер оформляет заказ.

Page 19

Клиент также может пользоваться программой.
При нажатии «No» :
При нажатии “Yes” :
После ввода своей фамилии, клиент видит чек со своим именем. Если
нажать на ID сотрудника, то внизу в текстовое поле выведется его фамилия.

Page 20

ВЫВОД
В результате выполнения курсовой работы была получена
полнофункциональная система учета для предметной области "Концертный
зал". Были на практике углублены и закреплены знания из курса
"Организация баз данных и знаний". Работа была выполнена на Access
(составление основы базы – таблиц и связей между ними, проектирование
запросов, создание отчетов, разработка пользовательского интерфейса), с
использованием языка запросов SQL.
Также были получены практические навыки по ведению системы
авторизации и мониторинга пользователей программного обеспечения,
введен журнал ошибок.

Page 21

СПИСОК ЛИТЕРАТУРЫ
1. Бейли Л.К.: «Изучаем SQL», Санкт-Петербург, Петергофское шоссе, 73,
лит. А29. Налоговая льгота — общероссийский классификатор продукции ОК
005-93, том 2; 95 3005 — литература учебная.
2. Методичні вказівки до курсового проектування з дисципліни «Бази даних»
для студентів напряму 6.050103 – «Програмна інженерія» / Укл. С.Л.
Зіноватна. - Одеса; ОНПУ, 2014. - 18 с.

Page 22

ДОДАТОК 1
Подключение:
Connection conn = null;
PreparedStatement stmt = null;
ResultSet res = null ;
conn=DriverManager.getConnection( "jdbc:mysql://127.0.0.1:3306/drycleaning",
"root", "hjlbyf1@@3");
Авторизация :
try{
ACT = "Log in";
conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/drycleaning","root", "hjlbyf1@@3");
if(login.getText().length() != 0 || pass.getText().length() != 0){
String sql = "select id from employee where employee.login = ? and employee.pass = ? and employee.id_post
= 3; ";
stmt = conn.prepareStatement(sql);
stmt.setString(1, login.getText());
stmt.setString(2, pass.getText());
res = stmt.executeQuery();
String sqlman = "select id from employee where employee.login = ? and employee.pass = ? and
employee.id_post = 1; ";
stmt1 = conn.prepareStatement(sqlman);
stmt1.setString(1, login.getText());
stmt1.setString(2, pass.getText());
res1 = stmt1.executeQuery();
String sqlwash = "select id from employee where employee.login = ? and employee.pass = ? and
employee.id_post = 2; ";
stmt2 = conn.prepareStatement(sqlwash);
stmt2.setString(1, login.getText());
stmt2.setString(2, pass.getText());
res2 = stmt2.executeQuery();
if(res.next()){
Autho au = new Autho();
Director dr = new Director();
au.hide();
dr.setVisible(true);
dr.setDefaultCloseOperation(DISPOSE_ON_CLOSE);

Page 23

usID = res.getInt(1);
}
else if(res1.next()){
Manager mn = new Manager();
mn.setVisible(true);
usID = res1.getInt(1);
}
else if(res2.next()){
Washer washwash = new Washer();
washwash.setVisible(true);
usID = res2.getInt(1);
}
else JOptionPane.showMessageDialog(this, "Login or Password is invalid");
}
else JOptionPane.showMessageDialog(this, "You do not enter login or password!");
insAct = "insert into action values ("+ 0 + ", '" + ACT +"', " + usID +" )";
stmt.executeUpdate(insAct);
}
catch (Exception e ){
JOptionPane.showMessageDialog(this, res);
}
Класс Director:
try{
conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/drycleaning","root",
"hjlbyf1@@3");
String sql = "select employee.surname, employee.name, employee.adress, employee.phone,
employee.pasport, post.post_name from employee right join post on post.id = employee.id_post;";
stmt = conn.prepareStatement(sql);
res = stmt.executeQuery(sql);
Table_Emp.setModel(DbUtils.resultSetToTableModel(res));
}
catch(Exception e){
e.printStackTrace();
JOptionPane.showMessageDialog(this, "Error");
}
Класс Manager:
try{
String sql = "select * from client;";

Page 24

stmt = conn.prepareStatement(sql);
res = stmt.executeQuery(sql);
table_cl.setModel(DbUtils.resultSetToTableModel(res));
}
catch(Exception e){
e.printStackTrace();
JOptionPane.showMessageDialog(this, "Error");
}
Класс Reports:
public void ComPost(){
try{
conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/drycleaning","root",
"hjlbyf1@@3");
String comsql = "select post_name from post;";
stmt = conn.prepareStatement(comsql);
res = stmt.executeQuery(comsql);
while(res.next()){
String post_name = res.getString("post_name");
Reports.post_name1.addItem(post_name);
}
}catch(Exception e){
JOptionPane.showMessageDialog(null, "Error");
}
}
public void ComReag(){
try{
conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/drycleaning","root",
"hjlbyf1@@3");
String comsql = "select name from reagent;";
stmt = conn.prepareStatement(comsql);
res = stmt.executeQuery(comsql);

Page 25

while(res.next()){
String name = res.getString("name");
Reports.reaglist.addItem(name);
}
}
catch( Exception e){
JOptionPane.showMessageDialog(null, "Error");
}
}
private void buttonDActionPerformed(java.awt.event.ActionEvent evt) {
try{
conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/dry"
+ "cleaning","root", "hjlbyf1@@3");
String sql = "SELECT employee.surname, post.post_name FROM employee LEFT"
+ " JOIN post ON post.Id
= employee.Id_post WHERE ("
+ "((post.post_name) = '" + post_name1.getSelectedItem()+ "')) ORDER BY employee.Name; ";
stmt = conn.prepareStatement(sql);
res = stmt.executeQuery(sql);
table_res.setModel(DbUtils.resultSetToTableModel(res));
Autho.ACT = "Look through requests";
insAct = "insert into action values ("+ 0 + ", '" + ACT +"', " + Autho.usID+ " )";
stmt.executeUpdate(insAct);
}
catch(Exception e){
e.printStackTrace();
JOptionPane.showMessageDialog(this, "Error");
}
}
private void buttonD1ActionPerformed(java.awt.event.ActionEvent evt) {
try{
conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/dry"
+ "cleaning","root", "hjlbyf1@@3");
String sql = "SELECT surname, name from " + whom.getSelectedItem()+" WHERE surname LIKE '"
+letter.getSelectedItem()+ "%';";
stmt = conn.prepareStatement(sql);
res = stmt.executeQuery(sql);

Page 26

table_res.setModel(DbUtils.resultSetToTableModel(res));
Autho.ACT = "Look through requests";
insAct = "insert into action values ("+ 0 + ", '" + ACT +"', " + Autho.usID+ " )";
stmt.executeUpdate(insAct);
}
catch(Exception e){
e.printStackTrace();
JOptionPane.showMessageDialog(this, "Error");
}
}
private void buttonD2ActionPerformed(java.awt.event.ActionEvent evt) {
try{
conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/dry"
+ "cleaning","root", "hjlbyf1@@3");
String sql = "SELECT employee.surname, name from employee where " + num.getSelectedItem() +
"< ( SELECT count(cheque.id_emp) as count from cheque WHERE employee.id = cheque.id_emp);";
stmt = conn.prepareStatement(sql);
res = stmt.executeQuery(sql);
table_res.setModel(DbUtils.resultSetToTableModel(res));
Autho.ACT = "Look through requests";
insAct = "insert into action values ("+ 0 + ", '" + ACT +"', " + Autho.usID+ " )";
stmt.executeUpdate(insAct);
}
catch(Exception e){
e.printStackTrace();
JOptionPane.showMessageDialog(this, "Error");
}
}
private void post_name1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}

Page 27

private void jButton8ActionPerformed(java.awt.event.ActionEvent evt) {
try{
conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/dry"
+ "cleaning","root", "hjlbyf1@@3");
String sql = "SELECT service.descript, reagent.name FROM service LEFT JOIN reagent ON
reagent.Id = service.Id_reag WHERE (reagent.name) = '" + reaglist.getSelectedItem() +"' ORDER BY
service.descript;";
stmt = conn.prepareStatement(sql);
res = stmt.executeQuery(sql);
table_res.setModel(DbUtils.resultSetToTableModel(res));
Autho.ACT = "Look through requests";
insAct = "insert into action values ("+ 0 + ", '" + ACT +"', " + Autho.usID+ " )";
stmt.executeUpdate(insAct);
}
catch(Exception e){
e.printStackTrace();
JOptionPane.showMessageDialog(this, "Error");
}
}
private void jButton9ActionPerformed(java.awt.event.ActionEvent evt) {
try{
conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/dry"
+ "cleaning","root", "hjlbyf1@@3");
String sql = "SELECT Count(cheque.Id_ser) AS count FROM cheque WHERE MONTH(dateOut) =
MONTH(NOW()) AND YEAR(dateOut) = YEAR(NOW());";
stmt = conn.prepareStatement(sql);
res = stmt.executeQuery(sql);
table_res.setModel(DbUtils.resultSetToTableModel(res));
Autho.ACT = "Look through requests";
insAct = "insert into action values ("+ 0 + ", '" + ACT +"', " + Autho.usID+ " )";
stmt.executeUpdate(insAct);
}
catch(Exception e){
e.printStackTrace();
JOptionPane.showMessageDialog(this, "Error");

Page 28

}
}
private void fmonthActionPerformed(java.awt.event.ActionEvent evt) {
updateDayComboBox(((JComboBox)evt.getSource()).getSelectedIndex());
}
private void buttonM1ActionPerformed(java.awt.event.ActionEvent evt) {
try{
conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/dry"
+ "cleaning","root", "hjlbyf1@@3");
String sql = "SELECT service.descript, client.surname, cheque.dateout "
+ "FROM client RIGHT JOIN (service left join cheque ON "
+ "service.id = cheque.id_ser) on client.id = cheque.id_cl WHERE "
+ "(((cheque.Dateout) Between '"+ fyear.getSelectedItem() +"." + fmonth.getSelectedItem()+ "."+
fday.getSelectedItem() +" ' And '"+ tyear.getSelectedItem() +"." + tmonth.getSelectedItem()+ "."+
tday.getSelectedItem() +" '));";
stmt = conn.prepareStatement(sql);
res = stmt.executeQuery(sql);
table_res.setModel(DbUtils.resultSetToTableModel(res));
Autho.ACT = "Look through requests";
insAct = "insert into action values ("+ 0 + ", '" + ACT +"', " + Autho.usID+ " )";
stmt.executeUpdate(insAct);
}
catch(Exception e){
e.printStackTrace();
JOptionPane.showMessageDialog(this, "Error");
}
}
private void tmonthActionPerformed(java.awt.event.ActionEvent evt) {
updateDayComboBox1(((JComboBox)evt.getSource()).getSelectedIndex());
}
private void buttonM2ActionPerformed(java.awt.event.ActionEvent evt) {
try{
conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/dry"
+ "cleaning","root", "hjlbyf1@@3");

Page 29

String sql = "SELECT count(distinct cheque.id_cl) as count FROM cheque WHERE
MONTH(dateOut) = MONTH(NOW()) AND YEAR(dateOut) = YEAR(NOW());";
stmt = conn.prepareStatement(sql);
res = stmt.executeQuery(sql);
table_res.setModel(DbUtils.resultSetToTableModel(res));
Autho.ACT = "Look through requests";
insAct = "insert into action values ("+ 0 + ", '" + ACT +"', " + Autho.usID+ " )";
stmt.executeUpdate(insAct);
}
catch(Exception e){
e.printStackTrace();
JOptionPane.showMessageDialog(this, "Error");
}
}
private void buttonM3ActionPerformed(java.awt.event.ActionEvent evt) {
try{
conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/dry"
+ "cleaning","root", "hjlbyf1@@3");
String sql = "SELECT Client.Surname, Count(Cheque.id_cl) as 'Amount of services' FROM Client
JOIN Cheque ON Client.id= Cheque.id_cl GROUP BY Client.surname;";
stmt = conn.prepareStatement(sql);
res = stmt.executeQuery(sql);
table_res.setModel(DbUtils.resultSetToTableModel(res));
Autho.ACT = "Look through requests";
insAct = "insert into action values ("+ 0 + ", '" + ACT +"', " + Autho.usID+ " )";
stmt.executeUpdate(insAct);
}
catch(Exception e){
e.printStackTrace();
JOptionPane.showMessageDialog(this, "Error");
}
}
private void jButton10ActionPerformed(java.awt.event.ActionEvent evt) {
try{

Page 30

conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/dry"
+ "cleaning","root", "hjlbyf1@@3");
String sql = "SELECT Service.descript, Count(Servreag.Id_reag) AS Count FROM Service LEFT
JOIN Servreag ON Service.Id=Servreag.Id_serv GROUP BY service.descript;";
stmt = conn.prepareStatement(sql);
res = stmt.executeQuery(sql);
table_res.setModel(DbUtils.resultSetToTableModel(res));
Autho.ACT = "Look through requests";
insAct = "insert into action values ("+ 0 + ", '" + ACT +"', " + Autho.usID+ " )";
stmt.executeUpdate(insAct);
}
catch(Exception e){
e.printStackTrace();
JOptionPane.showMessageDialog(this, "Error");
}
}
private void jButton11ActionPerformed(java.awt.event.ActionEvent evt) {
try{
conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/dry"
+ "cleaning","root", "hjlbyf1@@3");
String sql = "SELECT name, cost FROM reagent where cost >= ALL (SELECT cost FROM reagent);";
stmt = conn.prepareStatement(sql);
res = stmt.executeQuery(sql);
table_res.setModel(DbUtils.resultSetToTableModel(res));
Autho.ACT = "Look through requests";
insAct = "insert into action values ("+ 0 + ", '" + ACT +"', " + Autho.usID+ " )";
stmt.executeUpdate(insAct);
}
catch(Exception e){
e.printStackTrace();
JOptionPane.showMessageDialog(this, "Error");
}
}
private void jButton12ActionPerformed(java.awt.event.ActionEvent evt) {

Page 31

try{
conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/dry"
+ "cleaning","root", "hjlbyf1@@3");
String sql = "SELECT reagent.name FROM reagent LEFT JOIN service ON reagent.id =
service.id_reag WHERE (reagent.id) Not In (SELECT id_reag FROM service) GROUP BY reagent.name;";
stmt = conn.prepareStatement(sql);
res = stmt.executeQuery(sql);
table_res.setModel(DbUtils.resultSetToTableModel(res));
Autho.ACT = "Look through requests";
insAct = "insert into action values ("+ 0 + ", '" + ACT +"', " + Autho.usID+ " )";
stmt.executeUpdate(insAct);
}
catch(Exception e){
e.printStackTrace();
JOptionPane.showMessageDialog(this, "Error");
}
}
private void jButton13ActionPerformed(java.awt.event.ActionEvent evt) {
try{
conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/dry"
+ "cleaning","root", "hjlbyf1@@3");
String sql = "SELECT service.descript from service left join cheque on cheque.id_ser = service.id
WHERE EXISTS (SELECT id_ser FROM cheque where cheque.id_ser = service.id) =False;";
stmt = conn.prepareStatement(sql);
res = stmt.executeQuery(sql);
table_res.setModel(DbUtils.resultSetToTableModel(res));
Autho.ACT = "Look through requests";
insAct = "insert into action values ("+ 0 + ", '" + ACT +"', " + Autho.usID+ " )";
stmt.executeUpdate(insAct);
}
catch(Exception e){
e.printStackTrace();
JOptionPane.showMessageDialog(this, "Error");
}
}

Page 32

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
try{
conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/dry"
+ "cleaning","root", "hjlbyf1@@3");
String sql = " select post.post_name, post.salary, 'High salary' as comment from post where salary >
3000 UNION select post.post_name, post.salary, 'Average salary' as comment from post where salary < 3000
and salary >= 1000 UNION select post.post_name, post.salary, 'Low salary' as comment from post where
salary < 1000;;";
stmt = conn.prepareStatement(sql);
res = stmt.executeQuery(sql);
table_res.setModel(DbUtils.resultSetToTableModel(res));
Autho.ACT = "Look through requests";
insAct = "insert into action values ("+ 0 + ", '" + ACT +"', " + Autho.usID+ " )";
stmt.executeUpdate(insAct);
}
catch(Exception e){
JOptionPane.showMessageDialog(this, "Error");
}
}
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
try{
conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/dry"
+ "cleaning","root", "hjlbyf1@@3");
String sql = "select name, cost, 'Expensive' as comment from reagent where cost > 100
UNION
select name, cost, 'Average cost' as comment from reagent where cost
<= 100 and cost >50 UNION
select name, cost, 'Cheap' as comment from
reagent where cost < 50; ";
stmt = conn.prepareStatement(sql);
res = stmt.executeQuery(sql);
table_res.setModel(DbUtils.resultSetToTableModel(res));
Autho.ACT = "Look through requests";
insAct = "insert into action values ("+ 0 + ", '" + ACT +"', " + Autho.usID+ " )";
stmt.executeUpdate(insAct);
}

Page 33

catch(Exception e){
JOptionPane.showMessageDialog(this, "Error");
}

Информация о работе Проектирование собственной базы данных