C# WindowsForms ООП (помогите с пунктами 4 и 5) [закрыт]

125
21 декабря 2020, 20:30
Закрыт. Данный вопрос необходимо конкретизировать. Ответы на него в данный момент не принимаются.

Хотите улучшить этот вопрос? Переформулируйте вопрос так, чтобы он был сосредоточен только на одной проблеме.

Закрыт 1 год назад.

Улучшить вопрос

(ВОПРОСЫ СНИЗУ)

Задание: 1) Определить класс Student, который имеет:

  • закрытое поле типа string, в котором хранятся данные студента;
  • закрытое поле типа string для информации о форме обучения;
  • закрытое поле типа int для номера группы;
  • закрытое поле типа int [] для информации об оценках (5 оценок) на экзаменах, которые получил студент.

2) В классе Student определить конструкторы:

  • конструктор c параметрами типа string, int, int [] для инициализации полей класса;
  • конструктор без параметров, инициализирующий поля класса значениями по умолчанию.

3) В классе Student определить свойства c методами get и set:

  • свойство типа string для доступа к полю с данными студента;
  • свойство типа string для доступа к полю с формой обучения;
  • свойство типа int для доступа к полю с номером группы;
  • свойство типа int [] для доступа к полю со списком оценок экзаменов.

4) В классе Student определить:

  • свойство типа double (только с методом get), в котором вычисляется средний балл как среднее значение оценок в списке сданных экзаменов;
  • метод void Add () для добавления нового студента;
  • перегруженную версию виртуального метода string ToString() для формирования строки со значениями всех полей класса, включая список оценок;
  • метод string ToShortString(), который формирует строку со значениями всех полей класса без списка оценок, но со значением среднего балла.

5) В обработчике события загрузке формы:

  • Создать 4 объекта типа Student.
  • Преобразовать данные в текстовый вид с помощью метода ToShortString() и вывести данные.
  • Преобразовать данные в текстовый вид с помощью метода ToString() и вывести данные.
  • Интерфейс разработать по своему усмотрению.

Я сделал 1-3 пункты. Заранее спасибо!

    class Student
    {
        private string info;
        private string form;
        private int groupNumber;
        private int[] marks = new int[4];
        public Student(string i, string f)
        {
            info = i;
            form = f;
        }
        public Student(int gN, int[] m)
        {
            groupNumber = gN;
            marks = m;
        }
        public Student()
        {
            info = "Carl Johnson";
            form = "Full-Time";
            groupNumber = 2;
            marks[0] = 5;
            marks[1] = 3;
            marks[2] = 4;
            marks[3] = 5;
        }
        public string Info
        {
            get
            {
                return info;
            }
            set
            {
                info = value;
            }
        }
        public string Form
        {
            get
            {
                return form;
            }
            set
            {
                form = value;
            }
        }
        public int GroupNuber
        {
            get
            {
                return groupNumber;
            }
            set
            {
                groupNumber = value;
            }
        }
        public int[] Marks
        {
            get
            {
                return marks;
            }
            set
            {
                marks = value;
            }
        }
    }

Вопросы:

  • Как сделать перегруженную версию виртуального метода string ToString()?
  • Я написал так, но не знаю, правильно ли?

    public override string ToString()
    {
        return Convert.ToString(MessageBox.Show($"ФИО: {info}\n Форма обучения: {form}\n Номер группы: {groupNumber}\n Оценки: {marks}\n"));
    }
    
  • Правильно ли я сделал пункт с методом ToShortString()?

    public string ToShortString()
    {
        return Convert.ToString(MessageBox.Show($"ФИО: {info}\n Форма обучения: {form}\n Номер группы: {groupNumber}\n Средний балл: {(marks[0] + marks[1] + marks[2] + marks[3]) / 4}"));
    }
    
  • Как именно нужно создать 4 объекта типа Student?

  • И как преобразовать данные в текстовый вид с помощью метода ToShortString() и ToString() и вывести данные?

Answer 1

Задание 1.

  • У вас в требовании 5 оценок, на данный момент вы ввели 4.

Задание 2.

  • У вас в требованиях конструктор с параметрами string, int, int [].
  • У вас в коде его нет, зато есть два лишних: public Student(string i, string f) и public Student(int gN, int[] m).

Задание 3.

  • Тут ошибок не вижу.

Задание 4.

  • Советую почитать и разобрать примеры по свойствам: https://metanit.com/sharp/tutorial/3.4.php
  • Метод toString() и toShortString()

Идея правильная, реализация неправильная.

  1. Вам нужно вернуть строку, вы же вызываете MessageBox.Show(...) и приводе к строке его вывод, получив текст "ОК". Вам нужен только возврат строки без MessageBox.Show(...);
  2. Вам нужно вернуть оценки, но просто вставив $".... {marks}" вы получите в итоге ".... System.Int[32]" поскольку массив при таком подходе не вернет список своих значений. Попробуйте пройтись в цикле по массиву и склеить строку.

Не забывайте, что можете писать в методах и свойствах более сложный код (просто пример):

public override string ToString()
{
    string result = "";
    for(int i = 0; i < 10; i++)
    {
        str += i + " ";
    }
    return str;
}

Задание 5. Дальше вам надо создать на форме многостраничное текстовое поле. В графическом конструкторе определить событие Load: https://metanit.com/sharp/windowsforms/2.4.php Перейти в код формы и создать там массив из 4 объектов Student, как вы делали это с массивом чисел в задании 1. Дальше вывести в текстовое воле все значения toString() объектов Student.

Попробуйте реализовать это по порядку и если какой-либо пункт не получится, то создайте отдельный вопрос. По крайней мере в вопросах вас никто не ограничивает, но если задавать их всем скопом в рамках одного вопроса, то выходят достаточно громоздкие ответы.

READ ALSO
reader.ReadString();

reader.ReadString();

Я создал xml документ

119
Как сделать, чтобы в динамическом списке имя объекту в списке давал пользователь?

Как сделать, чтобы в динамическом списке имя объекту в списке давал пользователь?

Есть динамический список, который добавляет объекты по их idИмя так же

110
Как настроить удаленное подключение к mysql?

Как настроить удаленное подключение к mysql?

Не получается подключиться удаленно к mysql серверу

101