Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
1 / 5 / 0
Регистрация: 16.10.2017
Сообщений: 170
1

Наследование. Класс "Человек" и "Школьник"

21.02.2018, 11:42. Показов 1588. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
задача:Создать класс “Человек” со следующими свойствами:
ФИО
возраст
пол

Класс должен содержать метод “Показать персональные данные”, выводящую на экран ФИО, возраст и пол.

Унаследовать от данного класса следующие дочерние классы со следующими свойствами и методами: дочерний класс-школьник, свойства-номер школы, номер класса. методы-показать информацию об учебе, изменить номер школы, изменить номер класса
Обеспечить возможность следующих действий:
Дать пользователю возможность создать произвольное количество объектов как родительского, так и дочернего класса (с экрана).
Дать пользователю возможность вывести на экран информацию обо всех созданных объектах.
Дать пользователю возможность воспользоваться всеми свойствами и методами как родительского, так и дочерних классов.
код:
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
class people
{
   public string fio;
   public int vozrast;
   public string pol;
   public people(string fio, int vozrast, string pol)
    {
        this.fio = fio;
        this.vozrast = vozrast;
        this.pol = pol;
    }
    public void info()
    {
        Console.WriteLine("Фамилия, имя, отчество" + fio);
        Console.WriteLine("Возраст" + vozrast);
        Console.WriteLine("Пол" + pol);
    }
}
class school : people
{
    int number;
    int klass;
    public school( int number, int klass)
    {
        this.number = number;
        this.klass = klass;
    }
    public void info_ycheba()
    {
        Console.WriteLine("номер школы" + number);
        Console.WriteLine("класс" + klass);
    }
    public void change_number()
    {
        Console.WriteLine("измените номер школы");
        this.number = Convert.ToInt32(Console.ReadLine());
    }
    public void change_klass()
    {
        Console.WriteLine("измените номер класса");
        this.klass = Convert.ToInt32(Console.ReadLine());
    }
}
    
namespace ConsoleApp4
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            { List<school> school1 = new List<school> ();
                string fio1;
                int vozrast1;
                string pol1;
                int number1;
                int klass1;
                Console.WriteLine("Добро пожаловать в базу данных школьников");
                Console.WriteLine("Вы можете внести произвольное количество данных в базу");
                Console.WriteLine("Сколько учащихся хотите добавить?");
                int n;
                n = Convert.ToInt32(Console.ReadLine());
                for (int i=0; i<n; i++)
                {
                    Console.WriteLine("Введите ФИО учащегося");
                    fio1 = Console.ReadLine();
                    Console.WriteLine("Введите возрат учащегося");
                    vozrast1 = Convert.ToInt32(Console.ReadLine());
                    Console.WriteLine("Введите пол учащегося, в формате м или ж");
                    pol1 = Console.ReadLine();
                    Console.WriteLine("Введите номер школы");
                    number1 = Convert.ToInt32(Console.ReadLine());
                    Console.WriteLine("Введите номер класса");
                    klass1 = Convert.ToInt32(Console.ReadLine());
                    school1.Add(new school(fio1, vozrast1, pol1, number1, klass1));
                }
                int c = 1;
                int v;
                while (c != 0)
                {
                    Console.WriteLine("Введите 1: вывести информацию обо всех созданных объектах.\nВведите 2: изменить номер школы.\nВведите 3: изменить номер класса.\nВведите 4: закрыть программу");
                    v = Convert.ToInt32(Console.ReadLine());
                    switch (v)
                    {
                        case 1:
                            {
                                foreach (school el in school1)
                                {
                                    el.info_ycheba();
                                }
                            };
                            break;
                        case 2:
                            {
                                int num;
                                Console.WriteLine("Введите номер того учащегося, номер школы которого хотите изменить");
                                num = Convert.ToInt32(Console.ReadLine());
                                school1[num - 1].change_number();
                            };
                            break;
                        case 3:
                            {
                                int num;
                                Console.WriteLine("Введите номер того учащегося, номер класса которого хотите изменить");
                                num = Convert.ToInt32(Console.ReadLine());
                                school1[num - 1].change_klass();
                            };
                            break;
                        case 4: c = 0; break;
                    }
                }
 
                } catch
            {
                Console.WriteLine("ошибка ввода");
                Console.ReadLine();
            }
            }
        }
    }
помогите исправить, не правильно наследую базовый класс
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.02.2018, 11:42
Ответы с готовыми решениями:

Наследование. Классы: Человек, Школьник, Студент, Аспирант, Докторант
Разработать программу с использованием наследования классов, реализующую классы: Человек – имя,...

Класс "Человек" и производный от него класс "Школьник"
ГОСПОДА помогите!! мне нужно создать на С# cделанная в консоли Классы: базовый .Человек. (Person)...

Создать класс Школьник
Создать класс Школьник следующей структуры: ФИО,Дата_Рождения- строки, класс, литер- число и символ...

Наследование: базовый класс «Учащийся» и производные классы «Школьник» и «Студент»
Создать базовый класс «Учащийся» и производные классы «Школьник» и «Студент». Создать массив...

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

7
315 / 244 / 149
Регистрация: 03.10.2017
Сообщений: 886
Записей в блоге: 1
21.02.2018, 11:43 2
Вставьте тег для кода, пожалуйста
1
1 / 5 / 0
Регистрация: 16.10.2017
Сообщений: 170
21.02.2018, 12:12  [ТС] 3
Masson1848, как?
1
151 / 148 / 103
Регистрация: 30.10.2016
Сообщений: 314
21.02.2018, 12:47 4
Цитата Сообщение от lukinyx99 Посмотреть сообщение
помогите исправить
В первом приближении, у Вас проблема с конструктором school, попробуйте заменить строку 23 на
C#
1
public school(string fio, int vozrast, string pol, int number, int klass) : base(fio, vozrast, pol)
И возьмите за правило классы и методы именовать с большой буквы.

Добавлено через 28 минут
Суть в том, что вы в 75 строке передаете конструктору 5 аргументов, при этом сам конструктор на 23 строке принимает только 2 из них. Поэтому Вам дополнительно необходимо организовать передачу через конструктор school дочернего класса еще трёх аргументов в конструктор people базового класса.

Кликните здесь для просмотра всего текста
Немного причесал Ваш код:
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
using System;
using System.Collections.Generic;
 
namespace ConsoleApp4
{
    class People
    {
        public string fio;
        public int vozrast;
        public string pol;
 
        public People(string fio, int vozrast, string pol)
        {
            this.fio = fio;
            this.vozrast = vozrast;
            this.pol = pol;
        }
 
        public void Info()
        {
            Console.Write("\nФамилия, имя, отчество: " + fio);
            Console.Write("\nВозраст: " + vozrast);
            Console.Write("\nПол: " + pol);
        }
    }
 
    class School : People
    {
        int number;
        int klass;
        public School(string fio, int vozrast, string pol, int number, int klass) : base(fio, vozrast, pol)
        {
            this.number = number;
            this.klass = klass;
        }
 
        public void Info_ycheba()
        {
            Console.Write("\nНомер школы: " + number);
            Console.Write("\nКласс: " + klass);
        }
 
        public void Change_number()
        {
            Console.Write("Измените номер школы: ");
            number = Convert.ToInt32(Console.ReadLine());
        }
 
        public void Change_klass()
        {
            Console.Write("Измените номер класса: ");
            klass = Convert.ToInt32(Console.ReadLine());
        }
    }
 
    class Program
    {
        static void Main()
        {
            try
            {
                List<School> school1 = new List<School>();
 
                Console.WriteLine("Добро пожаловать в базу данных школьников.");
                Console.WriteLine("Вы можете внести произвольное количество данных в базу.");
                Console.WriteLine("Сколько учащихся хотите добавить?");
 
                int n = Convert.ToInt32(Console.ReadLine());
 
                for (int i = 0; i < n; i++)
                {
                    Console.Write("\nВведите ФИО учащегося: ");
                    string fio1 = Console.ReadLine();
                    Console.Write("Введите возрат учащегося: ");
                    int vozrast1 = Convert.ToInt32(Console.ReadLine());
                    Console.Write("Введите пол учащегося, в формате м или ж: ");
                    string pol1 = Console.ReadLine();
                    Console.Write("Введите номер школы: ");
                    int number1 = Convert.ToInt32(Console.ReadLine());
                    Console.Write("Введите номер класса: ");
                    int klass1 = Convert.ToInt32(Console.ReadLine());
                    school1.Add(new School(fio1, vozrast1, pol1, number1, klass1));
                }
 
                int c = 1;
                while (c != 0)
                {
                    Console.WriteLine("\nВведите 1: вывести информацию обо всех созданных объектах.\n" +
                        "Введите 2: изменить номер школы.\n" +
                        "Введите 3: изменить номер класса.\n" +
                        "Введите 4: закрыть программу");
                    int v = Convert.ToInt32(Console.ReadLine());
                    switch (v)
                    {
                        case 1:
                            {
                                foreach (School el in school1)
                                {
                                    el.Info_ycheba();
                                }
                            };
                            break;
                        case 2:
                            {
                                int num;
                                Console.Write("Введите номер того учащегося, номер школы которого хотите изменить: ");
                                num = Convert.ToInt32(Console.ReadLine());
                                school1[num - 1].Change_number();
                            };
                            break;
                        case 3:
                            {
                                int num;
                                Console.Write("Введите номер того учащегося, номер класса которого хотите изменить: ");
                                num = Convert.ToInt32(Console.ReadLine());
                                school1[num - 1].Change_klass();
                            };
                            break;
                        case 4: c = 0; break;
                    }
                }
            }
            catch
            {
                Console.WriteLine("Ошибка ввода");
                Console.ReadLine();
            }
        }
    }
}
1
1 / 5 / 0
Регистрация: 16.10.2017
Сообщений: 170
21.02.2018, 13:13  [ТС] 5
willow300, спасибо. еще вопрос. у меня должна выводится информация обо всех заданных объектах, а выводится только информация:номер школы и класс. как исправить?
Цитата Сообщение от willow300 Посмотреть сообщение
foreach (School el in school1)
{
el.Info_ycheba();
1
151 / 148 / 103
Регистрация: 30.10.2016
Сообщений: 314
21.02.2018, 13:31 6
lukinyx99, просто добавьте вызов метода Info(), который выводит информацию о человеке
C#
1
2
3
4
5
foreach (School el in school1)
{
    el.Info();
    el.Info_ycheba();
}
1
1 / 5 / 0
Регистрация: 16.10.2017
Сообщений: 170
21.02.2018, 13:53  [ТС] 7
willow300, спасибо

Добавлено через 16 минут
willow300, и еще вопрос. маленький
Создать новый текстовый файл (с указанным именем по указанному пользователем пути).
вот так правильно: File.Create("D:\\new_file.txt"); ?
или " с указанным именем по указанному пользователем пути" значит, что путь и имя нужно вводить с консоли?
1
151 / 148 / 103
Регистрация: 30.10.2016
Сообщений: 314
21.02.2018, 14:17 8
lukinyx99, насколько я понял, нужно чтобы пользователь вводил имя и путь (но могу и ошибаться).
C#
1
2
3
4
5
6
7
8
9
Console.Write("Укажите имя файла для сохранения: ");
string fileName = Console.ReadLine();   // new_file
 
Console.Write("Укажите путь для сохранения: ");
string filePath = Console.ReadLine();   // D:\\
 
string pathName = filePath + fileName + ".txt";   // D:\\new_file.txt
 
File.Create(@pathName);
Важно, чтобы пользователь знал, как нужно корректно вводить путь.
1
21.02.2018, 14:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.02.2018, 14:17
Помогаю со студенческими работами здесь

Создать базовый класс "Человек" (параметры – имя, пол, возраст) и его наследников: "Школьник" и "Студент"
Создать базовый класс «Человек» (параметры – имя, пол, возраст) и его наследников: «Школьник» и...

Найти, сколько человек в классе выше, чем заданный школьник
Подскажите пожалуйста решение задачки. Дан рост школьника и рост его одноклассников. Надо найти,...

Создать класс Ученик и подклассы Школьник и Студент
Прошу помощи с созданием программы на Java. Никак не разберусь с классами и перегруженными методами...

Создать базовый класс «Учащийся» и производные классы «Школьник» и «Студент»
Создать базовый класс «Учащийся» и производные классы «Школьник» и «Студент». Создать массив...

Создать базовый класс «Учащийся» и производные классы «Школьник» и «Студент»
При выполнении данной работы необходимо определить базовый класс и производные от него классы....


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru