Как создать набор с ID разницы - PullRequest
0 голосов
/ 19 июня 2019

Мне нужно создать сотрудников класса с атрибутами: идентификатор, имя пользователя, фамилия, возраст, ранг.Затем используйте элемент управления JavaFX, чтобы создать форму для ввода сотрудника в одну из коллекций набора.

Затем используйте JavaFX, чтобы создать форму для ввода сотрудника в одну из коллекций набора.В набор не следует добавлять сотрудников с одинаковым значением идентификатора.Эта проверка должна быть сделана через сопоставимый интерфейс.Поэтому, если пользователь пытается указать сотрудника с таким же идентификатором, как у уже работающей программы, необходимо отобразить сообщение об ошибке, или если это первый пользователь с этой программой идентификатора, должен показать сообщение о том, что пользователь успешно создан.

Итак, я создал форму с JavaFX для добавления сотрудников, но я не знаю, как поместить их в наборы наборов и как проверить. У кого-нибудь уже есть идентификатор, назначенный новому сотруднику?

Это просто код формы и некоторые ошибки, если пользователь не указал информацию о сотруднике.Я не знаю, как добавить сотрудника в наборы наборов и проверить, есть ли у кого-нибудь еще идентификатор, назначенный новому сотруднику

    public void start(Stage primaryStage) throws Exception {

    GridPane gridPane = createRegistrationFormPane();
    addUIControls(gridPane);
    Scene scene = new Scene(gridPane, 800, 500);
    primaryStage.setScene(scene);

    primaryStage.show();
}

private GridPane createRegistrationFormPane() {
    GridPane gridPane = new GridPane();

    gridPane.setAlignment(Pos.CENTER);

    gridPane.setPadding(new Insets(40, 40, 40, 40));

    gridPane.setHgap(10);

    gridPane.setVgap(10);

    ColumnConstraints columnOneConstraints = new ColumnConstraints(100, 100, Double.MAX_VALUE);
    columnOneConstraints.setHalignment(HPos.RIGHT);

    ColumnConstraints columnTwoConstrains = new ColumnConstraints(200, 200, Double.MAX_VALUE);
    columnTwoConstrains.setHgrow(Priority.ALWAYS);

    gridPane.getColumnConstraints().addAll(columnOneConstraints, columnTwoConstrains);

    return gridPane;
}

private void addUIControls(GridPane gridPane) {

    Label headerLabel = new Label("Dodavanje zaposlenog");
    headerLabel.setFont(Font.font("Arial", FontWeight.BOLD, 24));
    gridPane.add(headerLabel, 0, 0, 2, 1);
    GridPane.setHalignment(headerLabel, HPos.CENTER);
    GridPane.setMargin(headerLabel, new Insets(20, 0, 20, 0));

    Label idLabel = new Label("ID: ");
    gridPane.add(idLabel, 0, 1);

    TextField idField = new TextField();
    idField.setPrefHeight(40);
    gridPane.add(idField, 1, 1);

    Label imeLabel = new Label("Ime: ");
    gridPane.add(imeLabel, 0, 2);

    TextField imeField = new TextField();
    imeField.setPrefHeight(40);
    gridPane.add(imeField, 1, 2);

    Label prezimeLabel = new Label("Prezime: ");
    gridPane.add(prezimeLabel, 0, 3);

    TextField prezimeField = new TextField();
    prezimeField.setPrefHeight(40);
    gridPane.add(prezimeField, 1, 3);

    Label godineLabel = new Label("Godine: ");
    gridPane.add(godineLabel, 0, 4);

    TextField godineField = new TextField();
    godineField.setPrefHeight(40);
    gridPane.add(godineField, 1, 4);

    Label zvanjeLabel = new Label("Zvanje: ");
    gridPane.add(zvanjeLabel, 0, 5);

    TextField zvanjeField = new TextField();
    zvanjeField.setPrefHeight(40);
    gridPane.add(zvanjeField, 1, 5);

    Button submitButton = new Button("Dodaj");
    submitButton.setPrefHeight(40);
    submitButton.setDefaultButton(true);
    submitButton.setPrefWidth(100);
    gridPane.add(submitButton, 0, 6, 2, 1);
    GridPane.setHalignment(submitButton, HPos.CENTER);
    GridPane.setMargin(submitButton, new Insets(20, 0, 20, 0));

    submitButton.setOnAction(new EventHandler<ActionEvent>() {
        @Override
        public void handle(ActionEvent event) {
            if (idField.getText().isEmpty()) {
                showAlert(Alert.AlertType.ERROR, gridPane.getScene().getWindow(), "Greska", "Unesite ID zaposlenog");
                return;
            }
            if (imeField.getText().isEmpty()) {
                showAlert(Alert.AlertType.ERROR, gridPane.getScene().getWindow(), "Greska", "Unesite ime zaposlenog");
                return;
            }

            if (prezimeField.getText().isEmpty()) {
                showAlert(Alert.AlertType.ERROR, gridPane.getScene().getWindow(), "Greska", "Unesite prezime zaposlenog");
                return;
            }
            if (godineField.getText().isEmpty()) {
                showAlert(Alert.AlertType.ERROR, gridPane.getScene().getWindow(), "Greska", "Unesite godine zaposlenog");
                return;
            }
            if (zvanjeField.getText().isEmpty()) {
                showAlert(Alert.AlertType.ERROR, gridPane.getScene().getWindow(), "Greska", "Unesite zvanje zaposlenog");
                return;
            }

            showAlert(Alert.AlertType.CONFIRMATION, gridPane.getScene().getWindow(), "Uspesno ste dodali zaposlenog!", "Njegov ID je: " + idField.getText());
        }
    });
}

private void showAlert(Alert.AlertType alertType, Window owner, String title, String message) {
    Alert alert = new Alert(alertType);
    alert.setTitle(title);
    alert.setHeaderText(null);
    alert.setContentText(message);
    alert.initOwner(owner);
    alert.show();
}

public static void main(String[] args) {
    launch(args);
}
}

1 Ответ

0 голосов
/ 19 июня 2019

Сначала вам нужен новый класс под названием Employee для ваших сотрудников.Этот класс имеет поля сотрудника и получателя и установщика, чтобы использовать их.Это будет выглядеть примерно так:

public class Employee {
    private int ID;
    private String username;
    // ...

    /* getter and setter here */
}

Тогда вам нужно Set, чтобы добавить свои Employee объекты.Однако реализации интерфейса Set обычно используют метод equals(), чтобы проверить, содержит ли Set объект, который вы хотите добавить.Но поскольку в вашем задании сказано, что вы должны использовать тот, который использует интерфейс Comparable для сравнения объектов, вы должны использовать класс TreeSet.Но сначала ваш класс Employee должен реализовать интерфейс Comparable.Его единственный метод compareTo() будет использовать поле ID для упорядочивания / сортировки двух Employee объектов.Реализация может выглядеть так:

public class Employee implements Comparable<Employee> {
    //
    // ...
    //

    @Override
    public int compareTo(Employee o) {
        return this.ID - o.ID;
    } 
}

Теперь вы можете создать TreeSet объект и добавить к нему объекты.Вы также используете contains(), чтобы увидеть, есть ли уже сотрудник с таким же идентификатором.

Employee e1 = new Employee();
e1.setID(1);
e1.setUsername("foobar");

Employee e2 = new Employee();
e2.setID(1);                    // same ID
e2.setUsername("blabli");

Employee e3 = new Employee();
e3.setID(1);                    // also same ID
e3.setUsername("johndoe");

Set<Employee> employees = new TreeSet<Employee>();
employees.add(e1);
employees.add(e2);
employees.add(e3);

Даже если мы добавили трех сотрудников, созданный Set будет содержать только один объект.Используя contains(), вы можете проверить, существует ли уже Employee объект внутри Set.

System.out.println(employees.size());         // 1

System.out.println(employees.contains(e1));   // true
System.out.println(employees.contains(e2));   // true
System.out.println(employees.contains(e3));   // true

Даже если у нас есть три различных объекта Employee с разными именами пользователей, которые TreeSet рассматриваютвсе они равны из-за способа реализации метода compareTo().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...