Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 5.00/21: Рейтинг темы: голосов - 21, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 20.12.2014
Сообщений: 6

Создать структуру, описывающую сотрудника и организовать поиск

28.12.2014, 20:03. Показов 4446. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Создать структуру, описывающую сотрудника (ФИО, адрес, должность, оклад и т.д.). Создать класс для работы с данными о сотрудниках, который позволяет: хранить информацию о сотруднике, добавлять/удалять/изменять информацию о сотруднике.
дополнительно:
a. поиск сотрудника по должности и вывод информации о нем
b. поиск сотрудника с наибольшим окладом и вывод информации о нем

Не знаю как сделать дальше

C#
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
public struct Rabotnik
    {
        string fio;
        string adress;
        string doljnost;
        int oklad;
 
        public Rabotnik(string fio, string adress, string doljnost, int oklad)
            {
 
                this.fio = fio;
 
                this.adress = adress;
 
                this.doljnost= doljnost;
 
                this.oklad = oklad;
 
 
            }
 
 
    }
    class Employee
    {
    }

Прошу помогите, последнее задание до зачета.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.12.2014, 20:03
Ответы с готовыми решениями:

Создать структуру, описывающую улицу
Создать структуру, описывающую улицу (название, количество домов, длина, и т.д.). Создать класс для работы с данными об улицах, который...

Создать структуру, описывающую квартиру
• Создать структуру, описывающую квартиру (номер, ФИО владельца, количество жильцов, площадь в метрах, и т.д.). Создать класс для работы с...

Создать структуру, описывающую человека и сделать блок-схему
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace...

20
418 / 316 / 241
Регистрация: 29.05.2010
Сообщений: 796
Записей в блоге: 1
28.12.2014, 20:34
Можно так
C#
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
using System;
using System.Collections.Generic;
using System.Linq;
 
public struct Rabotnik
{
    public string fio { get; set; }
 
    public string adress { get; set; }
 
    public string doljnost { get; set; }
 
   public  int Oklad { get; set; }
 
    public Rabotnik(string fio, string adress, string doljnost, int oklad)
    {
        this=new Rabotnik();
        this.fio = fio;
 
        this.adress = adress;
 
        this.doljnost = doljnost;
 
        this.Oklad = oklad;
 
    }
 
    public override string ToString()
    {
        return this.fio + " " + this.doljnost+" " + this.Oklad + " " + this.adress;
    }
}
class Employee<T>:List<T>
{
 
}
 
class MyClass
{
    static void Main()
    {
        Employee<Rabotnik> em=new Employee<Rabotnik>();
        em.Add(new Rabotnik("Name1","Moscow","бухгалтер",1000));
        em.Add(new Rabotnik("Name2", "London", "бухгалтер", 2000));
        em.Add(new Rabotnik("Name3", "Minsk", "программист", 1500));
        foreach (var a in em)
        {
            Console.WriteLine(a); 
        }
       
        Console.WriteLine("Сотрудник с максимальным окладом {0}",em.OrderBy(a=>a.Oklad).Last());
        Console.WriteLine("Бухгалтеры");
        var q = em.Where(a => a.doljnost.Equals("бухгалтер"));
        foreach (var a in q)
        {
            Console.WriteLine(a); 
        }
        Console.ReadKey();
    }
}
0
0 / 0 / 0
Регистрация: 23.12.2014
Сообщений: 12
28.12.2014, 20:39
А как сделать чтобы можно было удалить изменить или добавить информацию?
0
418 / 316 / 241
Регистрация: 29.05.2010
Сообщений: 796
Записей в блоге: 1
28.12.2014, 20:47
Lendet,
C#
1
2
3
4
 
        em.Add();
        em.Remove()
        em.RemoveAt();
0
0 / 0 / 0
Регистрация: 20.12.2014
Сообщений: 6
28.12.2014, 20:52  [ТС]
Я конечно очень извиняюсь, но если тебе не сложно можешь написать как использовать эти методы, а то я уже ничего не понимаю.
0
 Аватар для magnusmax
97 / 90 / 61
Регистрация: 20.10.2013
Сообщений: 300
29.12.2014, 12:26
Уважаемый kypiwindy, а можно это сделать без списка?
0
Warrior
 Аватар для _exp10der_
500 / 427 / 177
Регистрация: 23.11.2014
Сообщений: 932
29.12.2014, 12:51
Реализовать интерфейс ICollection<Person>
ну или самому сделать обертку на простой массив и сделать методы для работы с ним
0
 Аватар для sysrepos
83 / 77 / 30
Регистрация: 08.08.2013
Сообщений: 461
Записей в блоге: 1
29.12.2014, 15:20
Цитата Сообщение от kypiwindy Посмотреть сообщение

C#
1
this=new Rabotnik();
можете пояснить что именно эта строчка делает в конструкторе?
0
Warrior
 Аватар для _exp10der_
500 / 427 / 177
Регистрация: 23.11.2014
Сообщений: 932
29.12.2014, 16:13
sysrepos,
C#
1
2
3
4
5
6
7
8
9
public struct Foo
{
    public int Value { get; set; }
 
    public Foo(int value)
    {
        this.Value = value;
    }
}

C#
1
2
3
4
5
6
7
8
9
public struct Foo
{
    public int Value { get; set; }
 
    public Foo(int value) : this()
    {
        this.Value = value;
    }
}
Устанавливать поля напрямую нельзя, т.к они анонимные, а свойства не разрешено применять до тех пор пока не будут установлены все поля.
0
16 / 16 / 9
Регистрация: 08.09.2014
Сообщений: 66
29.12.2014, 16:26
Для понимания почему это происходит, нужно понять разницу между типами значений и ссылочными типами,
советую книгу Эндрю Троэлсен "язык програмирования C#"
там весьма развёрнуто это всё объясняется.

структуры относятся к типу значений, но не все члены в структуре могут быть типами значений. а как вы должны знать, чтобы начать работать с ссылочными типами нужно их инициализировать. В данном случае нужно воспользоваться конструктором по умолчанию

в конструкторе
C#
1
this=new Rabotnik();
либо же, при переопределённом конструкторе можно вызвать конструктор по умолчанию
указав this() после описания конструктора таким образом вызвать конструктор по умолчанию, а после выполнить действия описанные в переопределённом конструкторе
C#
1
public Rabotnik(string fio, string adress, string doljnost, int oklad) : this()
для более уверенного продвижения в учёбе, нужно разобраться в основах. потому что дальше из за недопонимания фундаментальных основ, если так можно выразится. Будет сложнее и сложнее как снежный ком будут возникать вопросы. на которые будет сложнее находить ответ. а ответ это не всегда понимание.
0
Warrior
 Аватар для _exp10der_
500 / 427 / 177
Регистрация: 23.11.2014
Сообщений: 932
29.12.2014, 16:35
Хз эта книга сложна для понимания мне кажется лучше найти другую
0
16 / 16 / 9
Регистрация: 08.09.2014
Сообщений: 66
29.12.2014, 16:42
Да немного со скрипом идут некоторые темы. но азы очень развёрнуто даны.
0
 Аватар для sysrepos
83 / 77 / 30
Регистрация: 08.08.2013
Сообщений: 461
Записей в блоге: 1
29.12.2014, 16:53
я пока по Шилтду изучаю теорию, почитал про структуры, там про this() в конструкторе вроде нет ничего.
0
Warrior
 Аватар для _exp10der_
500 / 427 / 177
Регистрация: 23.11.2014
Сообщений: 932
29.12.2014, 18:07
https://ru.wikipedia.org/wiki/... 1%80%D1%82
C#: The Complete Reference (ISBN 0-07-213485-2, Osborne/McGraw Hill, 2002)
Ну сама книга вышла в 2002 году, а автоматически реализуемые свойства появились в C# 3.0 не думаю что книга сильно была переработана у нашего русского издателя) а может и ошибаюсь)
0
 Аватар для sysrepos
83 / 77 / 30
Регистрация: 08.08.2013
Сообщений: 461
Записей в блоге: 1
29.12.2014, 18:10
я читаю версию 2011 года, там было про автоматически реализуемые свойства.
А вот про this в конструкторе у структур ничего такого не нашел
0
16 / 16 / 9
Регистрация: 08.09.2014
Сообщений: 66
29.12.2014, 18:34
sysrepos,
this() это нужно смотреть там где рассказывают про конструкторы. и про построение цепочки вызовов конструкторов.

по Шилдту читать
"Вызов перегружаемого конструктора с помощью ключевого слова this" стр 245. издание 2011 года.

по Троельсену читать
"Построение цепочки вызовов конструкторов с использование this" стр 189

.........тут книга
Эндрю Троелсен. Язык программирования C# 5.0 и платформа .NET 4.5 (6 издание 2013)
0
 Аватар для sysrepos
83 / 77 / 30
Регистрация: 08.08.2013
Сообщений: 461
Записей в блоге: 1
29.12.2014, 20:15
rustammv, там вроде везде про конструкторы в классах, а тут вопрос про конструкторы в структурах
0
Warrior
 Аватар для _exp10der_
500 / 427 / 177
Регистрация: 23.11.2014
Сообщений: 932
29.12.2014, 20:42
sysrepos, http://www.ozon.ru/context/detail/id/27933250/ 243 страница. Очень хорошая книга но убогий перевод
0
 Аватар для sysrepos
83 / 77 / 30
Регистрация: 08.08.2013
Сообщений: 461
Записей в блоге: 1
30.12.2014, 00:27
вот что накатал по теме: (но пока без пункта b)

C#
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
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;
using System.Collections;
using System.IO;
 
 
public struct Rabotnik
{
    
       public string fio { get; set; }
     
       public string adress { get; set; }
     
       public string doljnost { get; set; }
     
       public  int Oklad { get; set; }
       
      // public int id { get; set; }
   
 
 
    public Rabotnik(string fio, string adress, string doljnost, int oklad)
    {
        this=new Rabotnik();
        this.fio = fio;
        this.adress = adress;
        this.doljnost = doljnost;
        this.Oklad = oklad;
 
    }
 
    public override string ToString()
    {
        return this.fio + " " + this.doljnost+" " + this.Oklad + " " + this.adress;
    }
 
}
    
    class BAZA {
        List<Rabotnik> ob=new List<Rabotnik>();
        
        public void ADD(string s1, string s2, string s3, int okl)  {
            
            Rabotnik r = new Rabotnik(s1, s2, s3, okl);
            ob.Add(r);
            
        }
        
        public void PRINT() {  //почему не делается печать через foreach
            Console.WriteLine("");
            Console.WriteLine("**********PRINT********");
            Console.WriteLine("");
            
            for (int i=0; i<ob.Count; i++) {
                
                Console.Write(ob[i].fio+" ");
                Console.Write(ob[i].doljnost+" ");
                Console.Write(ob[i].Oklad+" ");
                Console.WriteLine(ob[i].adress);
                
                }
            Console.WriteLine("");
            Console.WriteLine("**********PRINT********");
            Console.WriteLine("");
            
        }//PRINT
        
        public int FIND(string f) {  //Find
            int find_index=-1;
            
            for (int i=0; i<ob.Count; i++) {
                //Console.WriteLine(ob[i].doljnost);
                if (ob[i].doljnost==f) {
                    find_index=i;
                    break;
                }
                
            }
            if (find_index!=-1) {
                Console.WriteLine("найдено совпадение по полю профессия: " +f);
                Console.Write(ob[find_index].fio+" ");
                Console.Write(ob[find_index].doljnost+" ");
                Console.Write(ob[find_index].Oklad+" ");
                Console.WriteLine(ob[find_index].adress);
            }
            return find_index;
        }   //Find
        
        public void EDIT (string s1, string s2, string s3, int okl, int index)  {
        if ( (index>0) & (index<ob.Count)) {
            Rabotnik r2 = new Rabotnik(s1, s2, s3, okl);    
            ob[index]=r2;
            Console.WriteLine("отредактирована запись "+index);
            }
            else {
                Console.WriteLine("неверный индекс");
            }
 
        }
        
        public void DELETE (int index) {
            if ( (index>0) & (index<ob.Count)) {
                Console.WriteLine("удаление записи: "+index);
                Console.WriteLine(ob[index].fio);
                Console.WriteLine(ob[index].doljnost);
                Console.WriteLine(ob[index].Oklad);
                Console.WriteLine(ob[index].adress);
                Console.WriteLine("запись удалена");
                Console.WriteLine("");
                
                ob.RemoveRange(index, 1);
            }
            else {
                Console.WriteLine("неверный индекс");
            }
        }
    }//BAZA
    
////////////////////////////////////    
 
    class Demo {
        static void Main() {
            BAZA b = new BAZA();
            b.ADD("Иванов","Москва","юрист",1000);
            b.ADD("Петров","Питер","аналитик",2000);
            b.ADD("Некрасов","Пушкино","специалист",3000);
            b.ADD("Сергеев","Зеленоград","инженер",4000);
            b.PRINT();
            
            Console.WriteLine(b.FIND("инженер"));
            
            b.EDIT("Сергеев","старший инженер","Пушкино",9000,3);
            b.PRINT();
            
            Console.ReadLine();
                
        } //Main
        
    }
0
16 / 16 / 9
Регистрация: 08.09.2014
Сообщений: 66
30.12.2014, 10:58
sysrepos,
по троельсену читай со страницы 170 "типы значений и ссылочные типы"
а в частности стр 173 "типы значений содержащие ссылочные типы"

но начинать читать нужно хотя бы с 170 стр. для того чтобы можно было сложить всё в одну мозаику.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.12.2014, 10:58
Помогаю со студенческими работами здесь

Создать структуру, описывающую улицу (название, количество домов, длина, и т.д.)
Задание: Создать структуру, описывающую улицу (название, количество домов, длина, и т.д.). Создать класс для работы с данными об улицах,...

Создать структуру, описывающую человека и класс для работы с данными о людях
Создать структуру, описывающую человека (ФИО, возраст, пол, страна). Создать класс для работы с данными о людях, который позволяет: хранить...

Создать структуру, описывающую прямоугольник. Написать функции для работы с этой структурой
Добрый день! Есть такая задача: Создать структуру, описывающую прямоугольник. Написать функции для работы с этой структурой (например,...

Разработать структуру, описывающую координаты прямоугольника и его площадь
Разработать структуру, описывающую координаты и другие требуемые параметры прямоугольника с расчётом периметра и площади Добавлено...

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru