ArrayList - это класс, позволяющий создавать списки, входит в состав библиотеки java.util. В Java объекты типа ArrayList иногда называют списочными массивами.
Exception
В мире программирования возникновение ошибок и непредвиденных ситуаций при выполнении программы называют исключением. В программе исключения могут возникать в результате неправильных действий пользователя, отсутствии необходимого ресурса на диске, или потери соединения с сервером по сети. Причинами исключений при выполнении программы также могут быть ошибки программирования или неправильное использование API. В отличие от нашего мира, программа должна четко знать, как поступать в такой ситуации. Для этого в Java предусмотрен механизм исключений.
Обработка исключений в Java основана на использовании в программе следующих ключевых слов:
· try - определяет блок кода, в котором может произойти исключение;
· catch - определяет блок кода, в котором происходит обработка исключения;
· finally - определяет блок кода, который является необязательным, но при его наличии выполняется в любом случае независимо от результатов выполнения блока try.
Эти ключевые слова используются для создания в программном коде специальных обрабатывающих конструкций: try{}catch, try{}catch{}finally, try{}finally{}.
· throw - используется для возбуждения исключения;
· throws - используется в сигнатуре методов для предупреждения, о том что метод может выбросить исключение.
PostgreSQL - программное обеспечение для структурированного хранения данных и получения доступа к этим данным при помощи SQL-запросов. Также подобный класс программ называют СУРБД (система управления реляционными базами данных). Преимущества PostgreSQL -- бесплатность и высокая скорость работы.
Maven -- фреймворк для автоматизации сборки проектов на основе описания их структуры в файлах на языке POM (англ. Project Object Model), являющемся подмножеством XML.
Глава 2. Практическая часть
2.1 Структура данных магазина по продаже мобильных телефонов
Классы:
Класс employee (сотрудники)-здесь хранится информация о сотрудниках
Surname - фамилия сотрудника
Name - имя
Address - адрес
PhoneNumber - телефонный номер сотрудника
Salary - зарплата
public class Employee {
private Integer id;
private Integer positionId;
private String surname;
private String name;
private String address;
private String phoneNumber;
private Integer salary;
public Employee() {
}
public Employee( String surname, String name, String address, String phoneNumber, Integer salary,Integer positionId) {
this.positionId = positionId;
this.surname = surname;
this.name = name;
this.address = address;
this.phoneNumber = phoneNumber;
this.salary = salary;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Integer getPositionId() {
return positionId;
}
public void setPositionId(Integer positionId) {
this.positionId = positionId;
}
public String getSurname() {
return surname;
}
public void setSurname(String surname) {
this.surname = surname;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getPhoneNumber() {
return phoneNumber;
}
public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
}
public Integer getSalary() {
return salary;
}
public void setSalary(Integer salary) {
this.salary = salary;
}
}
Класс Phone(телефон)- информация о телефонах
Model - модель телефона
Memory - память телефона
SimCount - количество симкарт
Firm - компания выпускающая телефон
Price - цена
Color - цвет телефона
CamPixels - качество камеры
IsSale - информация о наличии телефона на складе
public class Phone {
private Integer id;
private String model;
private Integer memory;
private Integer simCount;
private String firm;
private Integer price;
private String color;
private Integer camPixels;
private Boolean isSale;
public Phone() {
}
Класс Position(должность)
PositionName - название должности
public class Position {
private Integer id;
private String positionName;
public Position(String positionName) {
this.positionName = positionName;
}
public Intege getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getPositionName() {
return positionName;
}
public void setPositionName(String positionName) {
this.positionName = positionName;
}
}
Класс Sale(продажи) - информация о проданных товарах
EmployeeId - номер сотрудника, который продал телефон
SaleDate - дата продажи
PhoneId - номер(id) проданного телефона
public class Sale {
Integer id;
Integer employeeId;
Date saleDate;
Integer phoneId;
public Sale() {
}
public Sale( Integer employeeId, Integer phoneId) {
this.employeeId = employeeId;
this.phoneId = phoneId;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Integer getEmployeeId() {
return employeeId;
}
public void setEmployeeId(Integer employeeId) {
this.employeeId = employeeId;
}
public Date getSaleDate() {
return saleDate;
}
public void setSaleDate(Date saleDate) {
this.saleDate = saleDate;
}
public Integer getPhoneId() {
return phoneId;
}
public void setPhoneId(Integer phoneId) {
this.phoneId = phoneId;
}
}
2.2 Принцип работы магазина мобильных телефонов
Создаем соответствующие таблицы в базу данных:
create table employee_position(
id serial primary key,
position_name varchar not null
);
create table store_employee(
id serial primary key,
surname varchar not null,
first_name varchar not null,
address varchar,
phone_number varchar,
salary int,
position_id int references employee_position(id)
);
create table phone(
id serial primary key ,
model varchar not null,
memory int,
sim_count int,
firm varchar,
price int not null,
color varchar,
cam_pixels int,
isSale boolean
);
create table sale(
id serial primary key,
employee_id int references store_employee(id),
sale_date timestamp ,
phone_id int references phone(id)
);
Создаем импортированный класс Connection, который устанавливает соединение с базой данных
package connection;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class Connect {
private final static String url = "jdbc:postgresql://localhost:54321/";
private final static String user = "postgres";
private final static String password = "12345";
public static Connection connect() {
Connection conn = null;
try {
conn = DriverManager.getConnection(url, user, password);
} catch (SQLException e) {
System.out.println(e.getMessage());
}
return conn;
}
}
Создаем список , вводим запись в базу данных:
package database;
import connection.Connect;
import dto.Employee;
import java.sql.*;
import java.util.ArrayList;
public class EmployeeDatabase {
public ArrayList<Employee> addPosition(Employee emp) {
ArrayList<Employee> result = new ArrayList<Employee>();
String SQL = "insert into store_employee (surname,first_name,address,phone_number,salary,position_id) values (?,?,?,?,?,?)";
try (Connection conn = Connect.connect();
PreparedStatement stmt = conn.prepareStatement(SQL)) {
stmt.setString(1, emp.getSurname());
stmt.setString(2, emp.getName());
stmt.setString(3, emp.getAddress());
stmt.setString(4, emp.getPhoneNumber());
stmt.setInt(5, emp.getSalary());
stmt.setInt(6, emp.getPositionId());
stmt.executeUpdate();
result.add(emp);
System.out.println("Employee Successfully added");
} catch (SQLException ex) {
System.out.println(ex.getMessage());
}
return result;
}
public void getAllEmployee() {
String SQL = " Select * FROM store_employee";
try (Connection conn = Connect.connect();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(SQL)) {
while (rs.next()) {
System.out.print(rs.getInt("id") + " ");
System.out.print(rs.getString("surname") + " ");
System.out.print(rs.getString("first_name") + " ");
System.out.print(rs.getString("address") + " ");
System.out.print(", phone_number: "+rs.getString("phone_number") + " ");
System.out.print(", salary: "+rs.getInt("salary") + " ");
System.out.println(", position_id: "+rs.getInt("position_id") + " ");
}
} catch (SQLException ex) {
System.out.println(ex.getMessage());
}
}
public static int getEmployeeById(int id){
String SQL = "select count(*) from store_employee where id=?";
int count = 0;
try (Connection conn = Connect.connect();
PreparedStatement stmt = conn.prepareStatement(SQL);
) {
stmt.setInt(1, id);
try (ResultSet rs = stmt.executeQuery()) {
if (rs.next()) {
count++;
}
}
} catch (SQLException e) {
System.err.println(e.getMessage());
}
return count;
}
}
package database;
import connection.Connect;
import dto.Phone;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
public class PhoneDatabase {
public ArrayList<Phone> addPhone(Phone phone) {
ArrayList<Phone> result = new ArrayList<Phone>();
String SQL = "insert into phone (model,memory,sim_count,firm,price,color,cam_pixels,isSale)\n" +
"\tvalues (?,?,?,?,?,?,?,?);";
try (Connection conn = Connect.connect();
PreparedStatement stmt = conn.prepareStatement(SQL)) {
stmt.setString(1, phone.getModel());
stmt.setInt(2, phone.getMemory());
stmt.setInt(3, phone.getSimCount());
stmt.setString(4, phone.getFirm());
stmt.setInt(5, phone.getPrice());
stmt.setString(6, phone.getColor());
stmt.setInt(7, phone.getCamPixels());
stmt.setBoolean(8, false);
stmt.executeUpdate();
result.add(phone);
System.out.println("Phone successfully added in database");
} catch (SQLException ex) {
System.out.println(ex.getMessage());
}
return result;
}
public void getAllPhones() {
String SQL = " Select * FROM phone where isSale=false";
try (Connection conn = Connect.connect();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(SQL)) {
while (rs.next()) {
System.out.print(rs.getInt("id") + " ");
System.out.print("модель:"+rs.getString("model"));
System.out.print(", память: "+rs.getInt("memory") );
System.out.print(", Количество симкарт: "+rs.getInt("sim_count") + " ");
System.out.print( ",компания: "+rs.getString("firm"));
System.out.print(", цена: "+rs.getInt("price") );
System.out.print(", цвет: "+rs.getString("color") );
System.out.println(", мегапиксели: "+rs.getInt("cam_pixels"));
}
} catch (SQLException ex) {
System.out.println(ex.getMessage());
}
}
public static int buyPhoneById(int id) {
String SQL = "select count(*) from phone where id=?";
int count = 0;
try (Connection conn = Connect.connect();
PreparedStatement stmt = conn.prepareStatement(SQL);
) {
stmt.setInt(1, id);
try (ResultSet rs = stmt.executeQuery()) {
if (rs.next()) {
count++;
}
}
} catch (SQLException e) {
System.err.println(e.getMessage());
}
if (count != 0) {
setStatus(id);
}
return count;
}
private static void setStatus(int id) {
String SQL = "update phone set isSale = true where id =?";
try (Connection conn = Connect.connect();
PreparedStatement stmt = conn.prepareStatement(SQL)) {
stmt.setInt(1, id);
stmt.executeUpdate();
System.out.println("updated");
} catch (SQLException e) {
e.printStackTrace();
}
}
}
package database;
import connection.Connect;
import dto.Position;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
public class PositionDatabase {
public ArrayList<Position> addPosition(Position position) {
ArrayList<Position> result = new ArrayList<Position>();
String SQL = "insert into employee_position (position_name) values (?)";
try (Connection conn = Connect.connect();
PreparedStatement stmt = conn.prepareStatement(SQL)) {
stmt.setString(1, position.getPositionName());
stmt.executeUpdate();
result.add(position);
System.out.println("Position Successfully added");
} catch (SQLException ex) {
System.out.println(ex.getMessage());
}
return result;
}
public void getAllPositions() {
String SQL = " Select * FROM employee_position";
try (Connection conn = Connect.connect();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(SQL)) {
while (rs.next()) {
System.out.print(rs.getInt("id") + " ");
System.out.println(rs.getString("position_name") + " ");
}
} catch (SQLException ex) {
System.out.println(ex.getMessage());
}
}
}
package database;
import dto.Sale;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
import connection.Connect;
public class SaleDatabase {
public void addSale(Sale sale) {
if (PhoneDatabase.buyPhoneById(sale.getPhoneId()) == 1 && EmployeeDatabase.getEmployeeById(sale.getEmployeeId()) == 1) {
String SQL = "insert into sale (employee_id,phone_id,sale_date) values (?,?,now())";
try (Connection conn = Connect.connect();
PreparedStatement stmt = conn.prepareStatement(SQL)) {
stmt.setInt(1, sale.getEmployeeId());
stmt.setInt(2, sale.getPhoneId());
stmt.executeUpdate();
System.out.println("phone Successfully sailed");
} catch (SQLException ex) {
System.out.println(ex.getMessage());
}
}
else System.out.println("phone or employee not found");
}
public void getAllSales() {
String SQL = " Select * FROM sale";
try (Connection conn = Connect.connect();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(SQL)) {
while (rs.next()) {
System.out.print(rs.getInt("id") + " ");
System.out.print( "employee_id: "+rs.getInt("employee_id"));
System.out.print(", phone_id: "+rs.getInt("phone_id")) ;
System.out.println(", sale_date: "+rs.getDate("sale_date"));
}
} catch (SQLException ex) {
System.out.println(ex.getMessage());
}
}
}
import database.EmployeeDatabase;
import database.PhoneDatabase;
import database.PositionDatabase;
import database.SaleDatabase;
import dto.Employee;
import dto.Phone;
import dto.Position;
import dto.Sale;
import javax.print.attribute.standard.PDLOverrideSupported;
public class Main {
public static void main(String[] args) {
Phone phone=new Phone();
phone.setModel("");
System.out.println("Информация о телефонах, имеющихся в наличии: ");
PhoneDatabase phoneDB = new PhoneDatabase();
phoneDB.addPhone(new Phone("A110",64,2,"MI",22000,"Black",48));
phoneDB.addPhone(new Phone("S20",128,2,"Samsung",220000,"Gray",128));
phoneDB.addPhone(new Phone("12 pro max",256,2,"Iphone",100000,"White",64));
phoneDB.getAllPhones();
System.out.println();
System.out.println("Информация о должностях, имеющихся в сотовом магазине: ");
PositionDatabase positionDB = new PositionDatabase();
positionDB.addPosition(new Position("Seller"));
positionDB.addPosition(new Position("Founder"));
positionDB.getAllPositions();
System.out.println();
System.out.println("Информация о сотрудниках сотового магазина: ");
EmployeeDatabase employeeDB = new EmployeeDatabase();
employeeDB.addPosition(new Employee("Omurbekova","Nuraiym","Bishkek","+996777000000",70000,2));
employeeDB.addPosition(new Employee("Bakybaeva","Dayana","Bishkek","+996777000000",20000,1));
employeeDB.getAllEmployee();
System.out.println();
System.out.println("Информация о продажах: ");
SaleDatabase saleDB = new SaleDatabase();
saleDB.addSale(new Sale(2,3));
saleDB.getAllSales();
}
}
Заключение
В ходе выполнения курсовой работы я подробно изучила теорию разработки информационных систем. Описала использованные мной классы, операторы и т. д. Изучила PostgreSQL, которую использовала для реализации базы данных При создании приложения использовался сборщик проектов Maven. Опираясь на изученный материал, разработала код на языке java, реализовывающий общение клиент-сервер. В дальнейшем планируется доработка графического интерфейса, что повысит актуальность приложения.
Список использованной литературы
1. https://www.postgresql.org/
2. Гохберг, Г. С. Информационные технологии: учебник [Текст]/ Г. С. Гохберг, А. В. Зафиевский, А. А. Короткин. - М. Академия, 2010. - 207 с. -(Сред.проф.образование: Информатика и вычисл.техника);
3. https://javarush.ru/groups/posts/isklyucheniya-java
4. http://proglang.su/java/classes-and-objects
5. https://javarush.ru/groups/posts/konstruktory-v-java-1
6. Мезенцев, К. Н. Автоматизированные информационные системы: учебное пособие [Текст]/ К. Н. Мезенцев. - М.: Академия, 2010. - 208 с.;
7. Дронов, В. А. HTML 5, CSS 3 и Web 2.0: Разработка современных Web-сайтов [Текст]/В. А. Дронов. - СПб: БХВ-Петербург, 2011. - 416 с.: ил. - (Проф.программирование);