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

Программа успеваемости учащихся

18.09.2021, 00:37. Показов 19369. Ответов 98
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Напишите программу которая отслеживает успеваемость учащихся
Она должна иметь следующие особенности
1.Меню с опциями добавления данных учени
2.Вывод данных на экран
3.Программа запрашивает имя студента
4.Программа добавляет в дневник оценки по четырем предметам(C#,Manual,English,History)
5.Программа определяет максимальную оценку по каждому предмету
6.Программа определяет минимальную оценку по каждому предмету
7.Программа определяет средний балл по всем предметам

Помогите пожалуйста.
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
class Program
    {
 
        static void Main(string[] args)
        {
            //Напишите программу которая отслеживает успеваемость учащихся
            //Она должна иметь следующие особенности
            //     1.Меню с опциями добавления данных ученика
            //     2.Вывод данных на экран
            //     3.Программа запрашивает имя студента
            //     4.Программа добавляет в дневник оценки по четырем предметам(C#,Manual,English,History)
            //     5.Программа определяет максимальную оценку по каждому предмету
            //     6.Программа определяет минимальную оценку по каждому предмету
            //     7.Программа определяет средний балл по всем предметам
 
            Console.OutputEncoding = Encoding.Unicode;
            Console.InputEncoding = Encoding.Unicode;
 
            Menu();
            int marks = AddMark();
            int midmark = MiddleMarks();
            int maxmark = MaxMark();
            int minmark = MinMark();
            List<string> students = new List<string>() {"Ira", "Inna", "Ima"};
        }
 
        static string Menu()
        {
            Console.WriteLine("С статистикой кокого студента желаете ознакомиться: Ira, Inna, Ima? ");
            string name = CheckName();
            Console.WriteLine("Выберите искомую операцию из следующих: ");
            Console.WriteLine("\top 1 - добавить оценку");
            Console.WriteLine("\top 2 - средний балл студента");
            Console.WriteLine("\top 3 - максимальная оценка");
            Console.WriteLine("\top 4 - минимальная оценка");
            Console.Write("Ваш выбор: ");
            char op;
            op = char.Parse(Console.ReadLine());
            switch (op)
            {
                case '1':
                    AddMark();
                    break;
                case '2':
                    MiddleMark();
                    break;
                case '3':
                   MaxMark();
                    break;
                case '4':
                    MinMark();
                    break;
                default:
                    Console.WriteLine("Не правильный ввод");
                    break;
            }
            Console.WriteLine(" Для выхода нажмите \"ESC\"");
            Console.ReadKey();
        }
        static string CheckName()
        {
            string name = " ";
 
            while (name == " ")
            {
                Console.WriteLine("Введите имя и нажмите \"Enter\"");
                name = Console.ReadLine().Trim();
                foreach (char x in name)
                {
                    if (!char.IsLetter(x))
                    {
                        name = " ";
                        Console.WriteLine("Wrong name. Try again.");
                        break;
                    }
                }
            }
            return name;
        }
        static int AddMark(int marks)
        {
           List<int> mark = new List<int>();
 
            if (marks > 0 && marks <= 100)
            {
                mark.Add(marks);
            }
            return marks;
        }
 
        static int MiddleMark(int midmark)
        {
 
        }
        static int MaxMark(int maxmark)
        {
 
        }
        static int MinMark(int minmark)
        {
 
        }
 
    }
    
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.09.2021, 00:37
Ответы с готовыми решениями:

Программа для отслеживания успеваемости школьника
Здравствуйте помагите пожалуйста написать программу для отслеживания успеваемости школьника используя листы . В ней должны быть следующие...

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

Необходимо, чтобы программа тестирования учащихся работала через локальную сеть
Доброго времени суток! Есть небольшая программка, написанная на C#, для тестирования учащихся (включающая создание и прохождение...

98
0 / 0 / 0
Регистрация: 21.06.2021
Сообщений: 175
18.09.2021, 21:20  [ТС]
Студворк — интернет-сервис помощи студентам
Отныне титул идиота года я присваиваю себе

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
namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
 
            //Создание студентов
            Student Ira = new("Ирина");
            Student Inna = new("Инна");
            Student Ima = new("Имма");
 
            //Запакуем всех студентов
            List<Student> Students = new(3) { Ira, Inna, Ima };
 
            //Выставление начальных оценок по предметам
            Ira.PutMark("C#", new int[] { 23, 15, 42 });
            Ira.PutMark("Manual", new int[] { 45, 60, 88 });
            Ira.PutMark("English", new int[] { 62, 65, 59, 52 });
            Ira.PutMark("History", new int[] { 54, 67, 77, 15 });
 
            Inna.PutMark("C#", new int[] { 36, 56, 82, 10 });
            Inna.PutMark("Manual", new int[] { 28, 34, 59, 43 });
            Inna.PutMark("English", new int[] { 14, 41, 8, 90 });
            Inna.PutMark("History", new int[] { 78, 61, 77, 55 });
 
            Ima.PutMark("C#", new int[] { 55, 52, 49, 78 });
            Ima.PutMark("Manual", new int[] { 64, 67, 32, 69 });
            Ima.PutMark("English", new int[] { 99, 100, 98, 89 });
            Ima.PutMark("History", new int[] { 31, 62, 18, 59 });
 
 
 
            //Выведем на консоль
            foreach (Student s in Students)
            {
                Console.WriteLine($"Имя студента: {s.Name}");
                Console.WriteLine("Оценки по предметам:");
                for (int i = 0; i < s.Subj.Count; i++)
                {
                    Console.Write($"{s.Subj[i].Theme}: ");
                    foreach (int marks in s.Subj[i].Mark)
                    {
                        Console.Write(marks + " ");
                        Console.WriteLine();
                        Console.WriteLine();
                    }
                }
                Console.WriteLine();
            }
            Console.WriteLine($"Max mark:\t{Ira.MaxMark}");
            Console.WriteLine($"Min mark:\t{Inna.MinMark}");
            Console.WriteLine($"Average mark:\t{Ima.AverageMark}");
 
        }
 
    }
 
 
    class Student
    {
        public string Name { get; private set; }
 
        //static string CheckName()
        //{
        //    string name = Console.ReadLine();
 
        //    while (name == " ")
        //    {
        //        Console.WriteLine("Введите имя и нажмите \"Enter\"");
        //        name = Console.ReadLine().Trim();
        //        foreach (char x in name)
        //        {
        //            if (!char.IsLetter(x))
        //            {
        //                name = " ";
        //                Console.WriteLine("Wrong name. Try again.");
        //                break;
        //            }
        //        }
        //    }
        //    return name;
        //}   кривая попытка написать проверку вводимого имени имени
 
        public List<Subject> Subj { get; private set; }
 
        public Student(string name)
        {
            Name = name;
            Subj = new(4)
            {
                new Subject("C#"),
                new Subject("Manual"),
                new Subject("English"),
                new Subject("History")
            };
        }
        //Можно ставить одну оценку
        public void PutMark(string theme, int mark)
        {
            if (mark < 0 && mark > 100)
            {
                throw new Exception("Оценка вне диапазона!");
            }
            foreach (Subject s in Subj)
            {
                if (theme == s.Theme)
                {
                    s.Mark.Add(mark);
                }
            }
        }
        //А можно ставить сразу несколько оценок
        public void PutMark(string theme, int[] mark)
        {
            foreach (int marks in mark)
            {
                if (marks < 0 && marks > 100)
                {
                    throw new Exception("Оценка вне диапазона!");
                }
                else
                {
                    foreach (Subject s in Subj)
                    {
                        if (theme == s.Theme)
                        {
                            s.Mark.Add(marks);
                        }
                   
                    }   
                }
            }
        }
    }
    class Subject
    {
        public string Theme { get; set; }
        public List<int> Mark { get; set; }
        public int MaxMark => Mark.Max();
        public int MinMark => Mark.Min();
        public double AverageMark => Mark.Average();
        public Subject(string theme)
        {
            Theme = theme;
            Mark = new();
        }
    }
0
 Аватар для zhunshun
768 / 496 / 216
Регистрация: 05.04.2015
Сообщений: 2,080
18.09.2021, 22:13
C#
1
2
3
Console.WriteLine($"Max mark:\t{Ira.Subj[1].MaxMark}");
            Console.WriteLine($"Min mark:\t{Inna.Subj[0].MinMark}");
            Console.WriteLine($"Average mark:\t{Ima.Subj[0].AverageMark}");
0
0 / 0 / 0
Регистрация: 21.06.2021
Сообщений: 175
18.09.2021, 22:26  [ТС]
А что это за индексы внутри, вы написали?
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3465 / 2785 / 576
Регистрация: 04.09.2018
Сообщений: 8,758
Записей в блоге: 3
18.09.2021, 22:53
HatakeIra, имя на предмет чего проверять пытаетесь?
0
0 / 0 / 0
Регистрация: 21.06.2021
Сообщений: 175
18.09.2021, 22:55  [ТС]
Короче, что я пыталась сделать: в задании ж есть условие ввода имени из этих 3 предложеных. Имя пытаюсь проверить на корректность ввода( Просят выбрать между Ирой,Иной,Имой и ввести выбранное имя. Вводят что то другое - ошибка. Водите заново)
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3465 / 2785 / 576
Регистрация: 04.09.2018
Сообщений: 8,758
Записей в блоге: 3
18.09.2021, 23:04
Т.е. не выбирать а вводить? (имена)
Максимальный балл:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
        class Subject
        {
            public string Theme { get; set; }
            public List<int> Mark { get; set; }
 
            public Subject( string theme )
            {
                Theme = theme;    
                Mark = new();
            }
 
 
            public int GetMax()
            {
                int max = Mark[ 0 ];
                foreach ( int i in Mark )
                    if ( i > max ) max = i;
                return max;
            }
        }
Майн:
C#
1
Console.WriteLine( "Максимальный балл Ирины по английскому: " + Ira.Subj[ 2 ].GetMax() );
Code
1
Максимальный балл Ирины по английскому: 65
Минимальный аналогично.
0
0 / 0 / 0
Регистрация: 21.06.2021
Сообщений: 175
18.09.2021, 23:09  [ТС]
wizard41,
Спасибо.
Короче в моей голове это выглядит так: В косоли всплывает: Здравствуйте, со статистикой какого студента желаете ознакомиться? Ира,Ина,Има? Сделайте выбор и нажмите ентер.
Потом после ввода имени: Вы выбрали студента Ира. Выберете опцию, которую хотите просмотреть. Выбор опций( просмотр всех предметов с оценками, простотр конкретного предмета, просмотр среднего по всем предметам, просмотр макса для квждого, минимального для каждого,)
Вы выбрари просмотр предмета С# для Иры.
(Вывод оценок)
Желаете добавить новую оценку в этот предмет?
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3465 / 2785 / 576
Регистрация: 04.09.2018
Сообщений: 8,758
Записей в блоге: 3
18.09.2021, 23:21
HatakeIra, общая картина (суть) программы ясна изначально.
Цитата Сообщение от HatakeIra Посмотреть сообщение
Ира,Ина,Има? Сделайте выбор и нажмите ентер.
Вопрос я задавал конкретно про это: то есть выбираем имя или вводим?
Если вводим, то какой смысл? Ведь мы заранее знаем имена трех студентов. Или это дополнительная проверка на знание алгоритмов сверки имен?
В таком случае нет необходимости в присвоении осмысленных имен классам учеников - можно их просто при создании по местить в List<>, а при вводе имени производить поиск в списке на предмет совпадения имени.
0
0 / 0 / 0
Регистрация: 21.06.2021
Сообщений: 175
18.09.2021, 23:36  [ТС]
Это как доп проверка на знание алгоритмов.

Добавлено через 2 минуты
wizard41,

Спасибо Вам большое за помощь и за терпение
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3465 / 2785 / 576
Регистрация: 04.09.2018
Сообщений: 8,758
Записей в блоге: 3
18.09.2021, 23:50
Тогда примерно так:
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
        static void Main( string[] args )
        {
            List<Student> stlist = new()
            {
                new Student( "Ирина" ),
                new Student( "Инна" ),
                new Student( "Имма" )
            };
 
 
            Console.Write( "Введите имя студента: " );
            string name = Console.ReadLine();
 
            for ( int i = 0; i < stlist.Count; i++ )
                if ( name == stlist[ i ].Name )
                {
                    Console.WriteLine( "Выбран студент: " + name );
                    goto Next;
                }
 
            Console.WriteLine( $"Студент с именем {name} не найден!" );
 
        Next:
 
            Console.Read();
        }
Code
1
2
Введите имя студента: Инна
Выбран студент: Инна
Code
1
2
Введите имя студента: Елена
Студент с именем Елена не найден!
0
0 / 0 / 0
Регистрация: 21.06.2021
Сообщений: 175
19.09.2021, 00:09  [ТС]
goto - Next это у нас переход к метке? Я правильно понимаю?
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3465 / 2785 / 576
Регистрация: 04.09.2018
Сообщений: 8,758
Записей в блоге: 3
19.09.2021, 00:20
Цитата Сообщение от HatakeIra Посмотреть сообщение
Next это у нас переход к метке?
точно так. За это вас преподаватель не заругает? А то переделаем.

Добавлено через 4 минуты
В цикле for проверяется совпадение на введенное имя с имеющимся в списке. Если таковое находится, то перескакиваем к метке Next:, там уже другая идиллия происходит. Если имени в списке нет, то мы выходим к
C#
1
Console.WriteLine( $"Студент с именем {name} не найден!" );
, которое сообщает что такого студента нет.
Ну и дальше по смыслу.

Добавлено через 5 минут
P.S.
Я просто не знаю каким уровнем сложности выполнять данную задачу. По мне, так я создал бы класс Students, наследованный от Student. И все проверки выполнял бы в нем. Или расширил бы функциональность класса Student.
0
0 / 0 / 0
Регистрация: 21.06.2021
Сообщений: 175
19.09.2021, 00:30  [ТС]
недеюсь что не наругает)) ну спросит- я обьясню.
уровень сложности - как можно проще, для человека, который с 16 августа вообще узнал что есть C#)))
то что сейчас вы делаете, я обяснить могу. ибо читала о таком.
хоть на этом мне спасибо, а то сижу -реву((
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3465 / 2785 / 576
Регистрация: 04.09.2018
Сообщений: 8,758
Записей в блоге: 3
19.09.2021, 00:39
Цитата Сообщение от HatakeIra Посмотреть сообщение
который с 16 августа вообще узнал что есть C#)))
это многое проясняет
Ладно, запилим что-нибудь работающее. Но завтра. А на сегодня вынужден откланяться...
0
0 / 0 / 0
Регистрация: 21.06.2021
Сообщений: 175
19.09.2021, 00:48  [ТС]
спасибо вам большое)))
спокойной ночи и до завтра.
)))

Добавлено через 6 минут
wizard41, ааа условия задания только что поменяли ( написать реализацию программы ТОЛЬКО с помощью методов, листов, словарей)

Преподаватели меня не любят(то они писали, специально - без регулярных выражений, когда я их в коде добавляла, а тут это)
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3465 / 2785 / 576
Регистрация: 04.09.2018
Сообщений: 8,758
Записей в блоге: 3
19.09.2021, 12:15
Цитата Сообщение от HatakeIra Посмотреть сообщение
с помощью методов, листов, словарей
Ну методы есть, листы тоже. Можно словарей добавить впридачу )

Добавлено через 1 минуту
Давайте предметы и оценки к ним сделаем через словарь.
0
0 / 0 / 0
Регистрация: 21.06.2021
Сообщений: 175
19.09.2021, 12:21  [ТС]
Давайте)
Смотрите, мы оценки в словарь просто записываем или добавляем через Add, или можно в словарь массив оценок запилить?
Или словарь с листом создать?
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3465 / 2785 / 576
Регистрация: 04.09.2018
Сообщений: 8,758
Записей в блоге: 3
19.09.2021, 12:24
C#
1
Dictionary<string, List<int>> Subject
Название предмета : список оценок к нему
1
0 / 0 / 0
Регистрация: 21.06.2021
Сообщений: 175
19.09.2021, 12:36  [ТС]
Спасибо большое за помощь. На часа 3-4 вынуждена убежать(еду в больницу к маме)
Как приеду сразу отпишусь. Спасибо. Я правда очень ценю вашу помощь.
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3465 / 2785 / 576
Регистрация: 04.09.2018
Сообщений: 8,758
Записей в блоге: 3
19.09.2021, 12:38
HatakeIra, для этого форум и существует.
Я пока набросаю что-нибудь...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.09.2021, 12:38

Программа учета успеваемости на С# 2008 (Windows Appkication)
Задание: Разработать программный модуль &quot;Учет успеваемости студентов&quot;, в которой должны содержаться формы: Предметы, Факультеты,...

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

Определение успеваемости учащихся
определения успеваемости учащихся

Определение успеваемости учащихся
определения успеваемости учащихся

Как проверить сайт БД об успеваемости учащихся на уязвимость
Вопрос у меня довольно серьезный . Как проверить сайт Базы Данных об успеваемости учащихся ? Чем можно проверить ?


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе. Самым главным критерием для меня было создание паролей, в котором отсутствуют знаки: | 1 l I Обработка содержит следующие. . .
Установка ChatGPT (Codex) на Windows без использования Microsoft Store
Fabien159 28.10.2026
Здравствуйте всем читающим! Опишу процесс установки ChatGPT (Codex) на Windows, если по каким-то причинам у вас не получается устанавить его через Microsoft Store. И так: 1. Скачиваем с. . .
Программное добавление префикса в нумерацию документов
Maks 27.10.2026
Реализация из решения ниже выполнена в самописной конфигурации на БСП (помощь начинающему коллеге). Задача: Программно добавить префикс в нумерацию документов. Решение: В модуле объекта. . .
После закрытия оутлука продолжает висеть процесс в диспетчере задач
Maks 27.10.2026
С недавнего времени в продакшене возникла проблема: при закрытии оутлука в диспетчере задач продолжал висеть процесс outlook. exe. Проблема возникла после установки MS Office 2021 LTSC на машинах, под. . .
Baragoz - DPS/HPS бот для WoW 3.3.5a, многоязычный
AmbA 26.10.2026
Хотите ещё ботов? У меня есть один! А я пока отдохну от него. https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=12062&stc=1&d=1793007952 Инструкция внутри. https:/ / youtu. be/ VpfFZSUDGnQ. . .
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности. Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru