Курсовая работа: Разработка информационной системы салона по продаже мобильных телефонов

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

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 с.: ил. - (Проф.программирование);