Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 23.03.2014
Сообщений: 5

Задача по node list (управление работниками)

29.03.2014, 10:02. Показов 1384. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте товарищи программисты. Если не сложно и есть интерес, помогите пожалуйста решить задачу.

Нужно подготовить маленькую программу, которая позволяет пользователю вводить через два текстовых поля фамилию и зарплату и через третье поле вводить индекс (позиция работника в листе). Также будут несколько кнопок необходимых для операций с данными.
1. Добавлять работника Х в динамический лист(NoeudListe) через текстовое поле кнопкой добавить. Перед добавление работника необходимо проверить, не существует ли такой в лист (метод existe).
2.Транспортировать лист в файл Excel.
3. Проверять зарплату работника с помощью имени и по индексу (нужно окно, если работник не существует)
4. Модифицировать зарплату (кнопка «модифицировать» и окно ок/отменить).
5. Удалять работника из листа
6. Иметь возможность посчитать зарплаты максимальную, минимальную, среднюю и повышение согласно проценту (1%, 2%, 5%) для последней операции необходимо предусмотреть изменения в листе.
Что уже сделано?
Графический интерфейс(частично) не есть проблема закончу сам.
Могу создать файл Exel но не могу передать туда данные.
Есть класс работник.
Класс NodeList должен иметь такую структуру
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
class NoeudListe
{
private Object element;
// Указатель к следующему узлу
private NoeudListe suivant;
// Конструктор
public NoeudListe(Object pElement, NoeudListe pSuivant)
{
this.setElement(pElement);
this.setSuivant(pSuivant);
}
public NoeudListe(Object pElement)
{
this(pElement, null);
}
public Object getElement()
{
return element; }
// Получить указатель на следующий узел
public NoeudListe getSuivant()
{
return suivant;
}
// Обновление элементов в узле
public void setElement(Object pElement)
{
this.element = pElement;
}
// Обновление указателя на другой узел
public void setSuivant(NoeudListe pSuivant)
{
suivant = pSuivant;
}
}
класс list


Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
public class Liste {
 
    // Pointeur de tête de la liste
    protected NoeudListe tete = null;
 
    // Constructeur par défaut
    public Liste() {
        this.tete = null;
    }
 
    public boolean estVide() {
        return this.tete == null;
    }
 
    // Ajouter (insérer) les éléments
    public void ajouterElement(Object obj, int pos) {
        int i = 1;
        NoeudListe courant = null;
        if (pos == 1) {
            ajouterDebut(obj);
        } else {
            courant = getNoeud(pos - 1);
            if (courant != null) {
                courant.setSuivant(new NoeudListe(obj, courant.getSuivant()));
            } else {
                throw new IndexOutOfBoundsException();
            }
        }
    }
 
    public int getTaille() {
 
        NoeudListe courant = null;
        int compteur = 0;
 
        if (this.estVide()) {
            courant = this.tete;
 
            while (courant != null) {
                courant = courant.getSuivant();
                compteur++;
            }
        }
        return compteur;
    }
 
    public void ajouterDebut(Object obj) {
        this.tete = new NoeudListe(obj, this.tete);
 
    }
 
    public Object enleverDebut() throws RuntimeException {
        
        Object retour = null;
 
        if (!this.estVide()) {
            retour = this.tete.getElement();
            this.tete = this.tete.getSuivant();
        } else {
            throw new RuntimeException();
        }
 
        return retour;
    }
    
    public Object enleverFin() throws RuntimeException
    {
        Object retour = null;
        NoeudListe courant = null;
 
        if (!this.estVide())
        {
            // Si un seul element
            if (this.tete.getSuivant() == null)
            {
                retour = this.tete.getElement();
                this.tete = null;
            }
            else
            {
                // On se rend à l'avant dernier
                courant = getNoeud(getTaille() - 1);
                retour = courant.getSuivant().getElement();
                courant.setSuivant(null);
            }
        }
        else
        {
            throw new RuntimeException();
        }
 
        return retour;
    }
 
    
 
    protected NoeudListe getNoeud(int pos) {
        NoeudListe retour = null;
        NoeudListe courant = null;
        int i = 1;
        if ((!this.estVide()) && (pos > 0)) {
            // Initialisation du pointeur de parcourt
            courant = this.tete;
            // Boucle de recherche
            while ((courant.getSuivant() != null) && (i < pos)) {
                courant = courant.getSuivant();
                i++;
            }
            // Pointer le noeud
            if (i == pos) {
                retour = courant;
            }
        }
        return retour;
    }
 
    // Afficher les éléments de la liste
    public Object getElement(int pos) throws IndexOutOfBoundsException {
        Object objRetour = null;
        NoeudListe courant = this.getNoeud(pos);
        if (courant != null) {
            objRetour = courant.getElement();
        } else {
            throw new IndexOutOfBoundsException();
        }
        return objRetour;
    }
 
    public int getPosition(Object obj) {
        NoeudListe courant = null;
        int pos = 0;
        int i = 1;
 
        if (!this.estVide()) {
            courant = this.tete;
 
            // Boucle de recherche
            while ((courant.getSuivant() != null)
                    && (!courant.getElement().equals(obj))) {
                courant = courant.getSuivant();
                i++;
            }
 
            // A-t-on trouvé l'objet?
            if (courant.getElement().equals(obj)) {
                pos = i;
            }
        }
 
        return pos;
 
    }
 
}
Спасибо.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.03.2014, 10:02
Ответы с готовыми решениями:

Сделать реализацию list (классы node и list) на шаблонах
Помогите написать прогу Необходимо: Сделать реализацию list (классы node и list) на шаблонах. 1.push_back 2.push_front 3.size ...

Удаление Node из Linked List
Всем привет, нужно написать функцию удаляющую обьект из Linked List. подпись функции: int remove(llist *list, node* item) ...

list view управление
у меня есть лист вью на шаблоне одна надпись и три кнопки, вот вопрос как управлять то этими кнопка как обрабатывать (ЗЫ знаю как...

3
29.03.2014, 21:25

Не по теме:

Славик, имена методов/классов на французском, это, конечно, круто, но лично я с трудом читаю это.

0
0 / 0 / 0
Регистрация: 23.03.2014
Сообщений: 5
30.03.2014, 08:41  [ТС]
Точно. Забыл перевести. Предметы у меня на французском. Кнопки редактирования нет. Переведу и выложу в новом виде.
0
0 / 0 / 0
Регистрация: 23.03.2014
Сообщений: 5
01.04.2014, 07:37  [ТС]
Код перевел.
1.Необходим метод проверки существования лист.
2.Метод проверки зарплаты работника с помощью имени и по индексу .
3.Метод модификации зарплаты.
4.Передача данных файл Exсel.
Метод подсчета зарплаты (максимальной, минимальной, средней) и повышение согласно проценту (1%, 2%, 5%).
класс Node

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
public class NodeList {
 
    private Object element;
 
    // Указатель к следующему узлу
    private NodeList next;
 
    // Конструктор
    public NodeList(Object pElement, NodeList pNext) {
        this.setElement(pElement);
        this.setNext(pNext);
    }
    // Конструктор узла (используется для метода 
    //добавлени элемента в конец списка)
    public NodeList(Object pElement) {
        this(pElement, null);
    }
 
    public Object getElement() {
        return element;
    }
 
    // Получить указатель на следующий узел
    public NodeList getNext() {
        return next;
    }
 
    // Обновление элементов в узле
    public void setElement(Object pElement) {
        this.element = pElement;
    }
 
    // Обновление указателя на другой узел
    public void setNext(NodeList pNext) {
        next = pNext;
    }
}
класс list

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
 public class List {
 
    // Указатель на начало списка
    protected NodeList top = null;
 
    // Конструктор по умолчанию
    public List() {
        this.top = null;
    }
 
    public boolean isEmpty() {
        return this.top == null;
    }
 
    // Добавить (вставка) элементы
    public void ajouterElement(Object obj, int pos) {
        int i = 1;
        NodeList current = null;
        if (pos == 1) {
            addBegins(obj);
        } else {
            current = getNode(pos - 1);
            if (current != null) {
                current.setNext(new NodeList(obj, current.getNext()));
            } else {
                throw new IndexOutOfBoundsException();
            }
        }
    }
 
    public void addBegins(Object obj) {
        this.top = new NodeList(obj, this.top);
    }
 
    protected NodeList getNode(int pos) {
        NodeList refund = null;
        NodeList courant = null;
        int i = 1;
        if ((!this.isEmpty()) && (pos > 0)) {
            // Инициализация указателя
            courant = this.top;
            // Цыкл поиска
            while ((courant.getNext() != null) && (i < pos)) {
                courant = courant.getNext();
                i++;
            }
            // Указатель узла
            if (i == pos) {
                refund = courant;
            }
        }
        return refund;
    }
 
    // Возвращает объект в списке для показа
    public Object getElement(int pos) throws IndexOutOfBoundsException {
        Object objReturn = null;
        NodeList courant = this.getNode(pos);
        if (courant != null) {
            objReturn = courant.getElement();
        } else {
            throw new IndexOutOfBoundsException();
        }
        return objReturn;
    }
 
}
класс работник

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
public class Employee {
 
    private String nom;
    private double salary;
 
    Employee(String nom, double salary) {
        this.nom = nom;
        this.salary = salary;
    }
 
    public void setNom(String nom) {
 
        this.nom = nom;
    }
 
    public String getNom() {
        return nom;
    }
 
    public void setSalary(double salary) {
 
        this.salary = salary;
    }
 
    public double getSalary() {
        return salary;
    }
 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.04.2014, 07:37
Помогаю со студенческими работами здесь

Создать класс Элемент списка (Node), а затем класс Список (List)
Задание: Создать класс Элемент списка (Node), а затем класс Список (List). В зависимости от варианта список должен быть одно или...

Парикмахерская с двумя работниками
Есть задание создать парикмахерскую с двумя работниками. Но в коде они просто приходят к нему и стригутся если свободно,если занято тогда...

Мониторинг за работниками в локальной сети
Добрый день знатоки. Начальство поставило задачу по установке монитора за деятельностью сотрудников (20-25 компов). Основные пожелания:...

Распределение работы между несколькими работниками
Задали по курсачу прогу на тему: &quot;Распределение работы между несколькими работниками&quot; И препод необъяснил даже что ему надо:) ...

Запрос в access: обслуживание кур работниками
Есть таблица Курицы. В этой таблице есть поле Работник, Порода, Количество_кур. Необходимо выполнить следующий запрос: Какое количество...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru