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

Иерархия классов(задача решена, есть нюансы)

18.06.2017, 19:42. Показов 1459. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Разработать иeрapхию клaccов для учeтa пeрсoнaла вузa(препoдаватель, вспoмогaтельный пepcoнaл, руководство, студент, аспирант, мaгистрант. Нa укaзaннyю дaту вывести списoк всего персoнала, cгруперованный пo категориям. Для сoтрудников вывести стаж работы.


Извинения приношу за г-код, но сроки жмут. Задача решена, нужно указать на ошибки. Если кто-то может сам исправить, буду очень признателен.

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
142
143
144
145
146
147
148
149
150
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ticket312
{
    class Person {
        public int[] staj= {2,3,4};
    }
    class Prepod : Person {
        public string status = "Преподаватели:";
        public string[] firstname = { "Стас", "Олег", "Антон" };
        public string[] lastname = { "Антипов", "Доставевский", "Нестеренко" };
        public DateTime[] dateTimes = new DateTime[]
        {
            new DateTime(2017, 10, 1),
            new DateTime(2010, 10, 2),
            new DateTime(2017, 10, 3),
        };
    }
    class VspomogPers : Person {
        public string status = "Вспомогательный персонал: ";
    }
 
    class Uborka : VspomogPers {
        public string statusUb = "Уборщиц: ";
        public string[] firstname = { "Алена", "Полина", "Женя" };
        public string[] lastname = { "Мотвеенко", "Гагарина", "Петрова" };
        public DateTime[] dateTimes = new DateTime[]
        {
            new DateTime(2010, 10, 1),
            new DateTime(2010, 10, 2),
            new DateTime(2017, 10, 3),
        };
    }
    class Rucovodstvo : Person {
        public string status = "Руководство: ";
 
        public string[] firstname = { "Стас", "Олег", "Антон" };
        public string[] lastname = { "Кепа", "Лизогуб", "Макаров" };
        public DateTime[] dateTimes = new DateTime[]
        {
            new DateTime(2010, 10, 1),
            new DateTime(2007, 10, 2),
            new DateTime(2017, 10, 3),
        };
    }
    class Student : Person {
        public string status = "Студент: ";
        public string[] firstname = { "Стас", "Олег", "Антон" };
        public string[] lastname = { "Ab4", "Cd4", "Ee4" };
        public DateTime[] dateTimes = new DateTime[]
        {
            new DateTime(2010, 10, 1),
            new DateTime(2017, 10, 2),
            new DateTime(2017, 10, 3),
        };
    }
    class Aspirant : Person {
        public string status = "Аспиранты: ";
        public string[] firstname = { "Стас", "Олег", "Антон" };
        public string[] lastname = { "Ab5", "Cd5", "Ee5" };
        public DateTime[] dateTimes = new DateTime[]
        {
            new DateTime(2010, 10, 1),
            new DateTime(2017, 10, 2),
            new DateTime(2017, 10, 3),
        };
    }
    class Magistrant : Person {
        public string status = "Магистранты";
        public string[] firstname = { "Стас", "Олег", "Антон" };
        public string[] lastname = { "Ab6", "Cd6", "Ee6" };
        public DateTime[] dateTimes = new DateTime[]
        {
            new DateTime(2017, 10, 1),
            new DateTime(2017, 10, 2),
            new DateTime(2011, 10, 3),
        };
    }
    class Program
    {
 
        static void Main(string[] args)
        {
            VspomogPers vspomogPers = new VspomogPers();
            Prepod prepod = new Prepod();
            Rucovodstvo rucovodstvo = new Rucovodstvo();
            Magistrant magistrant = new Magistrant();
            Student student = new Student();
            Aspirant aspirant = new Aspirant();
            Uborka uborka = new Uborka();
            DateTime defaultDateTime = new DateTime(2014, 10, 3);
 
            Console.WriteLine(prepod.status);
            for (int i = 0; i < 3; i++)
            {
                if (prepod.dateTimes[i] < defaultDateTime)
                {
                    Console.WriteLine("Имя: {0} {1} Стаж {2}", prepod.firstname[i], prepod.lastname[i], prepod.staj[i]);
                }
            }
            Console.WriteLine(uborka.status);
            Console.WriteLine(uborka.statusUb);
            for (int i = 0; i < 3; i++)
            {
                if (uborka.dateTimes[i] < defaultDateTime)
                {
                    Console.WriteLine("Имя: {0} {1} Стаж {2}", uborka.firstname[i], uborka.lastname[i], uborka.staj[i]);
                }
            }
            Console.WriteLine(rucovodstvo.status);
            for (int i = 0; i < 3; i++)
            {
                if (rucovodstvo.dateTimes[i] < defaultDateTime)
                {
                    Console.WriteLine("Имя: {0} {1} Стаж {2}", rucovodstvo.firstname[i], rucovodstvo.lastname[i], rucovodstvo.staj[i]);
                }
            }
            Console.WriteLine(magistrant.status);
            for (int i = 0; i < 3; i++)
            {
                if (magistrant.dateTimes[i] < defaultDateTime)
                {
                    Console.WriteLine("Имя: {0} {1} Стаж {2}", magistrant.firstname[i], magistrant.lastname[i], magistrant.staj[i]);
                }
            }
            Console.WriteLine(student.status);
            for (int i = 0; i < 3; i++)
            {
                if (student.dateTimes[i] < defaultDateTime)
                {
                    Console.WriteLine("Имя: {0} {1} Стаж {2}", student.firstname[i], student.lastname[i], student.staj[i]);
                }
            }
            Console.WriteLine(aspirant.status);
            for (int i = 0; i < 3; i++)
            {
                if (aspirant.dateTimes[i] < defaultDateTime)
                {
                    Console.WriteLine("Имя: {0} {1} Стаж {2}", aspirant.firstname[i], aspirant.lastname[i], aspirant.staj[i]);
                }
            }
            Console.ReadKey();
        }
    }
}
Добавлено через 5 минут
возможно нужно что-то подправить под LINQ
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.06.2017, 19:42
Ответы с готовыми решениями:

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

Задача решена, но есть сомнения по алгоритму решения
Приветствую форумчан, решил задачу, вроде бы все совпадает по проверкам, однако, не дает покоя вопрос. Обязательно ли всегда использовать...

Иерархия классов
Помогите, пожалуйста, надо создать иерархию классов: класс строка -&gt; класс строка-идентификатор -&gt; битовая строка отдельные объекты...

8
30 / 47 / 19
Регистрация: 23.10.2014
Сообщений: 1,001
18.06.2017, 19:55
Цитата Сообщение от c_gvn_code Посмотреть сообщение
нужно указать на ошибки.
Какие-то конкретно? Что-то не компилируется или работает не так как надо? Уточняй. А так вообще код ужасен. Я бы его весь переписал. Начать с того что хардкодить данные - плохой тон. Их лучше было хранить рядом в файле - например в xml-ке или json, запускать программу с аргументом - именем файла и подгружать его. Потом - убрать все массивы из классов, вместо этого сделать массивы объектов этих классов. Потом дату запрашивать ввод с клавиатуры например или передавать тоже в аргументах вызова. Ну и наконец стиль кода: имена полей пиши с большой буквы - так принято в C# и никогда не используй транслит нигде. Забудь про него вообще. Учи английский или пользуйся переводчиком и пиши имена классов, полей и пр. на английском.
0
0 / 0 / 0
Регистрация: 20.10.2015
Сообщений: 59
18.06.2017, 19:57  [ТС]
Dark Byte, не ошибки, просто из говнокода в человеческий не знаю как привести, как правильно сделать иерархию классов. Понимаю, что у меня она реализована неправильно, но на какую изменить не понимаю. Не понимаю, зачем она здесь вообще нужна.
0
30 / 47 / 19
Регистрация: 23.10.2014
Сообщений: 1,001
18.06.2017, 20:06
Цитата Сообщение от c_gvn_code Посмотреть сообщение
пeрсoнaла вузa(препoдаватель, вспoмогaтельный пepcoнaл, руководство, студент, аспирант, мaгистрант.
Довольно странная формулировка, ведь студентов, магистрантов и аспирантов никак нельзя отнести к персоналу. Они лишь обучаются, а персонал - это те кто работают в вузе. Вообще мягко говоря не самый удачный пример для иерархии классов.
0
0 / 0 / 0
Регистрация: 20.10.2015
Сообщений: 59
18.06.2017, 20:16  [ТС]
Dark Byte, я привел точную формулировку задания. Так как иерархию реализовать, подскажете/не подскажете?

Обучающиеся
и от них наследуемые классы студенты и магистранты
Персонал
и от них классы уборщицы и преподователи
или как?
0
30 / 47 / 19
Регистрация: 23.10.2014
Сообщений: 1,001
18.06.2017, 20:20
Лучший ответ Сообщение было отмечено c_gvn_code как решение

Решение

Ну например как-то так. И неважно что некоторые классы пустые. Смысл ведь в том чтобы показать иерархию классов. Впрочем можешь попробовать им придумать еще какие-то свойства...

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
abstract class Person
{
    public string Firstname { get; set; }
    
    public string Lastname { get; set; }
}
 
abstract class Staff : Person
{
    public int Experience { get; set; }
    
    public string Position { get; set; }
}
 
class Teacher : Staff
{
}
 
class Support : Staff
{
}
 
class Management : Staff
{
}
 
abstract class Student : Person
{
}
 
class Bachelor : Student
{
}
 
class Graduate : Student
{
}
 
class Postgraduate : Student
{
}
1
0 / 0 / 0
Регистрация: 20.10.2015
Сообщений: 59
18.06.2017, 20:28  [ТС]
Цитата Сообщение от Dark Byte Посмотреть сообщение
Ну например как-то так. И неважно что некоторые классы пустые. Смысл ведь в том чтобы показать иерархию классов. Впрочем можешь попробовать им придумать еще какие-то свойства...
Принято, спасибо, а что насчет самого хранения? Как хранить людей и выводить их потом по категориям? Хранить для простоты я взялся в массиве.

Добавлено через 2 минуты
Я не понимаю как хранить и что хранить в наследуемых классах, чтобы это было правильно
0
30 / 47 / 19
Регистрация: 23.10.2014
Сообщений: 1,001
18.06.2017, 20:37
Цитата Сообщение от c_gvn_code Посмотреть сообщение
Принято, спасибо, а что насчет самого хранения? Как хранить людей и выводить их потом по категориям? Хранить для простоты я взялся в массиве.
Я же сказал - храни в xml или json все. Это не сложно. Вот примеры сериализации/десериализации в xml и json.
0
0 / 0 / 0
Регистрация: 20.10.2015
Сообщений: 59
18.06.2017, 21:27  [ТС]
Dark Byte,
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApplication2
{
    abstract class Person
    {
        public string Firstname { get; set; }
 
        public string Lastname { get; set; }
    }
 
    abstract class Staff : Person
    {
        public int Experience { get; set; }
 
        public string Position { get; set; }
    }
 
    class Teacher : Staff
    {
   
    }
 
    class Support : Staff
    {
    }
 
    class Management : Staff
    {
    }
 
    abstract class Student : Person
    {
    }
 
    class Bachelor : Student
    {
    }
 
    class Graduate : Student
    {
    }
 
    class Postgraduate : Student
    {
    }
    class Program
    {
        static void Main(string[] args)
        {
            List<Teacher> person = new List<Teacher>();
            person.Add(new Teacher() { Firstname = "Stas", Lastname = "Klimenkov", Experience = 1 });
            person.Add(new Teacher() { Firstname = "Stas2", Lastname = "Klimenkov2", Experience = 2 });
            
            foreach (Teacher aTeacher in person)
            {
                Console.WriteLine(aTeacher);
            }
            Console.ReadKey();
        }
    }
}
Лучше в List пока, все правильно?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.06.2017, 21:27
Помогаю со студенческими работами здесь

Иерархия классов
Здравствуйте! Есть следующее задание на С++ (лаб. работа) 1. Определить иерархию классов . 2. Определить в классе статическую...

Иерархия классов
Учет проведения военно-морских учений Создайте иерархию классов, представленную на рисунке. Создать класс «Военно-морские учения...

иерархия классов
Помогите разобраться: Даны фигуры: точка, окружность, астроида, дельтоид. Разработайте иерархию классов таким образом, чтобы эти фигуры...

Иерархия классов
Пожалуйста помогите написать программу: Иерархия классов: служащий, персона, рабочий, инженер; Вариант запроса: количество служащих со...

Иерархия классов
Разработать иерархию классов «Отрезок», «Квадрат», «Куб». Реализовать методы задания и доступа и изменения параметров объектов этих...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Инструменты 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 и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru