Разработка информационной системы по учету объектов недвижимости

Заказать уникальную курсовую работу
Тип работы: Курсовая работа
Предмет: Программирование
  • 41 41 страница
  • 21 + 21 источник
  • Добавлена 01.12.2023
1 496 руб.
  • Содержание
  • Часть работы
  • Список литературы
СОДЕРЖАНИЕ
ВВЕДЕНИЕ 3
1. Обзор существующих информационных систем для учета объектов недвижимости 6
2. Анализ требований к разрабатываемой информационной системе 9
3. Проектирование базы данных 11
4. Разработка пользовательского интерфейса 13
5. Эксплуатация и сопровождение системы 19
5.1. Настройка базы данных. 19
5.2. Запуск проекта. 22
ЗАКЛЮЧЕНИЕ 25
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 28
Приложения 30
Приложение 1. Исходный код программы 30

Фрагмент для ознакомления

stage.Stage;import java.io.IOException;public class Main extends Application {@Overridepublic void start(Stage stage) throws IOException {FXMLLoaderfxmlLoader = new FXMLLoader(Main.class.getResource("main.fxml"));Scene scene = new Scene(fxmlLoader.load(), 1024, 500);stage.setTitle("Системапоучётуобъектовнедвижимости");stage.setScene(scene);stage.show();}public static void main(String[] args) {launch();}}КлассEstatepackage com.example.realestateobjects;import javafx.beans.property.*;public class Estate {//Учетныйномерpublic IntegerProperty personnelNumber;//Городpublic StringPropertycity;//Адресpublic StringPropertyaddress;//Назначениеpublic StringPropertytarget;//Общаяплощадьpublic DoublePropertytotal_area;//Владелецpublic StringPropertyowner;//Кадастроваястоимостьpublic DoublePropertycadastral_value; public int getPersonnelNumber() {return personnelNumber.get();}public IntegerProperty personnelNumberProperty() {return personnelNumber;}public void setPersonnelNumber(int personnelNumber) {this.personnelNumber.set(personnelNumber);}public String getCity() {return city.get();}public StringPropertycityProperty() {return city;}public void setCity(String city) {this.city.set(city);}public String getAddress() {return address.get();}public StringPropertyaddressProperty() {return address;}public void setAddress(String address) {this.address.set(address);}public String getTarget() {return target.get();}public StringPropertytargetProperty() {return target;}public void setTarget(String target) {this.target.set(target);}public double getTotal_area() {return total_area.get();}public DoublePropertytotal_areaProperty() {return total_area;}public void setTotal_area(double total_area) {this.total_area.set(total_area);}public String getOwner() {return owner.get();}public StringPropertyownerProperty() {return owner;}public void setOwner(String owner) {this.owner.set(owner);}public double getCadastral_value() {return cadastral_value.get();}public DoublePropertycadastral_valueProperty() {return cadastral_value;}public void setCadastral_value(double cadastral_value) {this.cadastral_value.set(cadastral_value);}public Estate(Integer personnelNumber, String city, String address, String target, Double total_area, String owner, Double cadastral_value) {this.personnelNumber= new SimpleIntegerProperty(this, "personnelNumber", personnelNumber);this.city= new SimpleStringProperty(this, "city", city);this.address= new SimpleStringProperty(this, "address", address);this.target= new SimpleStringProperty(this, "target", target);this.total_area= new SimpleDoubleProperty(this, "total_area", total_area);this.owner= new SimpleStringProperty(this, "owner", owner);this.cadastral_value= new SimpleDoubleProperty(this, "cadastral_value", cadastral_value);}}КлассDBMySQL – Отвечаетзаподключение к базе данныхpackage com.example.realestateobjects;import java.sql.*;import java.util.List;public class DBMySQL {private Connection con; private Statement stmt; private ResultSetrs; private String url; private String user; private String password; private String queryEstates; private String insertQuery; public DBMySQL() {/** jdbc - нашдрайверподключения * mysql - базаданных, внашемслучае MySQL * 192.168.1.38 - IP адреснашегосерверабазыданных. * user - имяпользователяБД * password - парольдляподключениякБД * query - подключениектойилиинойтаблице, внашемслучае estate */this.url = "jdbc:mysql://192.168.1.38:3306/real_estate_objects";this.user= "root";this.password= "root";this.queryEstates= "select id, city, address, target, total_ares, owner, cadastral_value from ";this.insertQuery= "INSERT INTO real_estate_objects.estate (id, city, address, target, total_ares, owner, cadastral_value) VALUES ";}//ОбновляемсписокучетанедвижимостиссервераБДpublic synchronized void getEstates(String nextQuery, List estates) {try {// ПодключениексерверуБДcon = DriverManager.getConnection(url, user, password);// ПодключениектаблицевБД, внашемслучаекnextQuerystmt= con.createStatement();rs= stmt.executeQuery(queryEstates+ nextQuery); while (rs.next()) {int personnelNumber = rs.getInt(1);String city = rs.getString(2);String address = rs.getString(3);String target = rs.getString(4); double total_area = rs.getDouble(5);String owner = rs.getString(6); double cadastral_value = rs.getDouble(7);estates.add(new Estate(personnelNumber, city, address, target, total_area, owner, cadastral_value));} } catch (SQLException ex) {ex.printStackTrace();} finally {try {con.close();stmt.close();rs.close();} catch (SQLException ex) {ex.printStackTrace();} } }//Добавляемновуюнедвижимостьвбазуpublic synchronized void setEstate(int personnelNumber, String city, String address, String target, double total_area, String owner, double cadastral_value) {//СтрокаподключениякБДString insertQueryPost = String.format("insert into real_estate_objects.estate(id, city, address, target, total_ares, owner, cadastral_value) values('%d','%s','%s','%s','%.0f','%s', '%.0f');", personnelNumber, city, address, target, total_area, owner, cadastral_value); try {// ПодключениексерверуБДcon = DriverManager.getConnection(url, user, password);// Добавлениеэлементоввтаблицуstmt= con.createStatement();stmt.executeUpdate(insertQueryPost);//Обрабатываемисключениянаслучайошибок} catch (SQLException ex) {//System.out.println("Введендубликатучетногономера, вбазудобавлятьсянебудет");ex.printStackTrace();} finally {try {con.close();stmt.close();} catch (SQLException ex) {ex.printStackTrace();} } }//Удаляемнедвижимостьизбазыданныхpublic synchronized void deleteEstate(int personnelNumber) {//СтрокаподключениякбазеString insertQueryPost = String.format("delete from real_estate_objects.estate where(id = '%d');", personnelNumber); try {// ПодключениексерверуБДcon = DriverManager.getConnection(url, user, password);// Добавлениеэлементоввтаблицуstmt= con.createStatement();stmt.executeUpdate(insertQueryPost);//Обрабатываемисключениянаслучайошибок} catch (SQLException ex) {ex.printStackTrace();} finally {try {con.close();stmt.close();} catch (SQLException ex) {ex.printStackTrace();} } }}КлассControllerDeleteEstatepackage com.example.realestateobjects;import javafx.fxml.FXML;import javafx.scene.control.Button;import javafx.scene.control.TextField;public class ControllerDeleteEstate {//СоздаемэкземплярнашейБДDBMySQLdbmysql= new DBMySQL();@FXMLprivate Button btnDelete;@FXMLprivate TextFieldfieldDelete;//Методдляудаления@FXMLprivate void createDelete(){try {if (!fieldDelete.getText().equals("")) {dbmysql.deleteEstate(Integer.parseInt(fieldDelete.getText()));} } catch (RuntimeException ex) {System.out.println("Веденнекорректныйучетныйномер");} }}КлассControllerAddEstatepackage com.example.realestateobjects;import javafx.fxml.FXML;import javafx.scene.control.Button;import javafx.scene.control.TextField;public class ControllerAddEstate {//СоздаемэкземплярнашейбазыданныхDBMySQLdbMySQL= new DBMySQL();//Кнопкадобавить@FXMLprivate Button btnAddEstateBD;//Строкиввода@FXMLprivate TextFieldfieldPersonnelNumber;@FXMLprivate TextFieldfieldCity;@FXMLprivate TextFieldfieldTarget;@FXMLprivate TextFieldfieldTotalArea;@FXMLprivate TextFieldfieldOwner;@FXMLprivate TextFieldfieldCadastralValue;@FXMLprivate TextFieldfieldAddress;//Методдляреализациикнопки "добавить"@FXMLprivate void createToInsert() {try {if (!fieldPersonnelNumber.getText().equals("") && !fieldCity.getText().equals("") && !fieldTarget.getText().equals("") && !fieldTotalArea.getText().equals("") && !fieldOwner.getText().equals("") && !fieldCadastralValue.getText().equals("") && !fieldAddress.getText().equals("") ) {dbMySQL.setEstate(Integer.parseInt(fieldPersonnelNumber.getText()), fieldCity.getText(), fieldAddress.getText(),fieldTarget.getText(), Double.parseDouble(fieldTotalArea.getText()),fieldOwner.getText(), Double.parseDouble(fieldCadastralValue.getText()));} } catch(RuntimeException ex) {System.out.println("Error incorrect data");} }}КлассControllerpackage com.example.realestateobjects;import javafx.collections.FXCollections;import javafx.collections.ObservableList;import javafx.fxml.FXML;import javafx.fxml.FXMLLoader;import javafx.scene.Scene;import javafx.scene.control.*;import javafx.stage.Stage;import java.io.IOException;import java.util.ArrayList;import java.util.List;public class Controller {private Stage stage= new Stage();//Данныепризапускеформ "Добавитьнедвижимость"private final String ADD_ESTATE = "AddEstate.fxml"; private final String addEstate= "Добавитьнедвижимость"; private int addHeight= 471; private int addWeight= 378;//Данныепризапускеформы "Удалитьнедвижимость"private final String DELETE_ESTATE = "DeleteEstate.fxml"; private final String deleteEstate= "Удалитьнедвижимость"; private int deleteHeight= 115; private int deleteWeight= 366;//СоздаемэкземплярданныхнедвижимостиList estates = new ArrayList<>();//СоздаемэкземплярданныхнедвижимостипослепоискаList estatesSearch= new ArrayList<>();//СоздаемэкземплярбазыданныхDBMySQLdbmysql= new DBMySQL();//Табличныеданныеprivate ObservableList estatesData= FXCollections.observableArrayList();@FXMLprivate TableColumn personnelNumber= new TableColumn("Учетныйномер");@FXMLprivate TableColumn city = new TableColumn("Город");@FXMLprivate TableColumn address = new TableColumn("Адрес");@FXMLprivate TableColumn target = new TableColumn("Назначение");@FXMLprivate TableColumn total_area= new TableColumn("Общаяплощадь, м2");@FXMLprivate TableColumn owner = new TableColumn("Владелец");@FXMLprivate TableColumn cadastral_value= new TableColumn("Кадастроваястоимость, руб");@FXMLprivate TableView tableEstates= new TableView();@FXMLprivate TextFieldtextField;//Кнопкапоисканедвижимостипогородам@FXMLprivate Button btnSearch;//Кнопкадобавить@FXMLprivate Button btnAdd;//Кнопкаудалить@FXMLprivate Button btnDelete;//Кнопкаобновить@FXMLprivate Button btnLoad;//Методдляпоисканедвижимостипогороду@FXMLprivate void createSearch() {if (!textField.getText().equals("")) {estatesData.clear(); for (Estate employee : estates) {if (employee.getCity().equals(textField.getText())) estatesData.add(employee);}tableEstates.setItems(estatesData);} }@FXMLprivate void createAction() throws IOException {startWindow(stage, addHeight, addWeight, ADD_ESTATE, addEstate);}@FXMLprivate void createDelete() throws IOException {startWindow(stage, deleteHeight, deleteWeight, DELETE_ESTATE, deleteEstate);}@FXMLprivate void createLoad() {estatesData.clear();estates.clear();dbmysql.getEstates("estate", estates); for(Estate estate: estates) {estatesData.add(estate);}tableEstates.setItems(estatesData);personnelNumber.setCellValueFactory(cellData -> cellData.getValue().personnelNumberProperty());city.setCellValueFactory(cellData -> cellData.getValue().cityProperty());address.setCellValueFactory(cellData -> cellData.getValue().addressProperty());target.setCellValueFactory(cellData -> cellData.getValue().targetProperty());total_area.setCellValueFactory(cellData -> cellData.getValue().total_areaProperty());owner.setCellValueFactory(cellData -> cellData.getValue().ownerProperty());cadastral_value.setCellValueFactory(cellData -> cellData.getValue().cadastral_valueProperty());}//Метод, которыйзапускаетформувзависимости, какуюкнопкунажали - "добавить", "удалить"public void startWindow(Stage stage, int height, int weight, String path, String title) throws IOException {FXMLLoaderfxmlLoader = new FXMLLoader(Main.class.getResource(path));Scene scene = new Scene(fxmlLoader.load(), weight, height);stage.setTitle(title);stage.setScene(scene);stage.show();}}

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

1 Прохоренок Н.А, Дронов В.А. HTML, JavaScript, PHP и MySQL Джентльменский набор Web – мастера. Санкт – Петербург, 2015. – 747 с.
2 Патрик Нимейер, Дэниэл Леук. Программирование на Java. Исчерпывающее руководство для профессионалов. Пер. с англ. Райтман С.А. Москва, 2014. – 1215 с.
3 Баранов И.С, Баранова Е.П, 1С:Предприятие 8. Управление торговыми операциями, Алгоритм, 2021. - 320 с.
4 Naeem Arif and Sheikh Muhammad Tauseef, SAP ERP Financials: Configuration and Design, SAP Press, 2020. - 653 с.
5 Keller Brian, SAP ABAP Programming, SAP Press, 2021. - 900 с.
6 Прохоренок Н.А, JavaFX. – СПБ.: БХВ-Петербург, 2020. – 768 с.
7 C. Gupta, Apache Maven: Beginner's Guide. Packt Publishing, 2014. - 500 с.
8 Herbert Schildt, Java: A Beginner's Guide. McGraw-Hill Education, 2014. - 720 с.
9 Joshua Bloch, Effective Java. Addison-Wesley Professional, 2017. - 416 с.
10 Kathy Sierra and Bert Bates. Head First Java. O’Reilly Media, 2005. - 720 с.
11 Brian Goetz, Java Concurrency in Practice. Addison-Wesley Professional, 2006. - 384 с.
12 Herbert Schildt, Java: The Complete Reference, McGraw-Hill Education, 2018. - 1312 с.
13 Bruce Eckel, Thinking in Java, Prentice Hall, 2006. - 1150 с.
14 Мартин Р, Чистый код: создание, анализ и рефакторинг. Библиотека программиста. – СПб.: 2015. – 464 с.
15 Scott Oaks, Java Performance: The Definitive Guide, O'Reilly Media, 2014. - 426 с.
16 Raoul-Gabriel Urma, Mario Fusco, and Alan Mycroft, Java 8 in Action: Lambdas, Streams, and functional-style programming, Manning Publications, 2014.ь- 424 с.
17 Paul Deitel and Harvey Deitel, Java: How to Program, Pearson, 2017. - 1232 с.
18 Ганди Р. Head First. Git: Пер. с англ. – СПб.: БХВ-Петербург. – 464 с.
19 Евдокимов А.А, Основы недвижимости: Понятие, классификация и структура - 280 с.
20 А.М. Юриков, И.А. Родионова, Управление недвижимостью: Теория и практика, Юрайт, 2019. - 384 с.
21 Pratik Patel, Java Database Programming with JDBC, O'Reilly Media, 2000. – 300 с.