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

Задача нетипизированным файлам с информацией об учениках музыкальной школы

06.02.2020, 07:16. Показов 2325. Ответов 3

Студворк — интернет-сервис помощи студентам
Задача звучит так: «Создать файл, содержащий информацию об учениках музыкальной школы. Вывести на экран список учеников музыкальной школы, которые учатся играть на скрипке. Указать также, сколько лет они занимаются музыкой и принимали ли участие в каких-либо конкурсах.
Не могу пока понять работу с файлами на C#, поэтому очень прошу Вашей помощи и может небольших объяснений
Очень буду благодарна!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.02.2020, 07:16
Ответы с готовыми решениями:

БД ученики музыкальной школы
Всем привет. Нужно сделать БД в Access. Предметная область Музычная школа, БД Ученики школы. ER-диаграма: Она правильна? ...

Распечатать список учеников музыкальной школы
Распечатать список учеников музыкальной школы, которые учатся играть на скрипке. Указать также, сколько лет они занимаются музыкой и...

Help! Где купить инструмент для музыкальной школы?
Всем привет!!! Сорри, если не тот топик. Господа, хочу отправить девочку в музшколу. Хочу найти более менее российскую гитару для обучения....

3
2810 / 1679 / 885
Регистрация: 14.04.2015
Сообщений: 5,723
06.02.2020, 09:22
Лучший ответ Сообщение было отмечено STASYRAY как решение

Решение

STASYRAY,
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
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
 
namespace ConsoleApp139
{
    class Program
    {
        static void Main(string[] args)
        {
            List<MusicSchoolStudents> musicSchoolStudents = new List<MusicSchoolStudents>()
            {
                new MusicSchoolStudents() { FIO = "Петров", Instrument = "гусли", DateStartOfTraining = new DateTime(2017, 1, 1), ParticipationInCompetitions = true },
                new MusicSchoolStudents() { FIO = "Иванов", Instrument = "дудка", DateStartOfTraining = new DateTime(2018, 1, 1), ParticipationInCompetitions = true },
                new MusicSchoolStudents() { FIO = "Сидоров", Instrument = "скрипка", DateStartOfTraining = new DateTime(2020, 1, 1), ParticipationInCompetitions = false },
                new MusicSchoolStudents() { FIO = "Степанов", Instrument = "фортепиано", DateStartOfTraining = new DateTime(2018, 1, 1), ParticipationInCompetitions = true },
                new MusicSchoolStudents() { FIO = "Михайлов", Instrument = "гитара", DateStartOfTraining = new DateTime(2019, 10, 1), ParticipationInCompetitions = false },
                new MusicSchoolStudents() { FIO = "Громов", Instrument = "скрипка", DateStartOfTraining = new DateTime(2016, 1, 1), ParticipationInCompetitions = true },
                new MusicSchoolStudents() { FIO = "Полетаев", Instrument = "баян", DateStartOfTraining = new DateTime(2019, 5, 1), ParticipationInCompetitions = false },
                new MusicSchoolStudents() { FIO = "Орлов", Instrument = "фортепиано", DateStartOfTraining = new DateTime(2014, 1, 1), ParticipationInCompetitions = true },
            };
 
            using (StreamWriter Writer = new StreamWriter(@"students.txt", true, Encoding.Default))
            {
                foreach (var Row in musicSchoolStudents)
                {
                    Writer.WriteLine(Row);
                }
            }
 
            musicSchoolStudents.Clear();
 
            string[] GetDataFromFile = File.ReadAllLines(@"students.txt", Encoding.Default);
            
            for (int x = 0;x < GetDataFromFile.Length; x++)
            {
                var Row = GetDataFromFile[x].Split(';');
 
                MusicSchoolStudents musicSchool = new MusicSchoolStudents()
                {
                     FIO = Row[0],
                     Instrument = Row[1],
                     DateStartOfTraining = Convert.ToDateTime(Row[2]),
                     ParticipationInCompetitions = Convert.ToBoolean(Row[3])
                };
 
                musicSchoolStudents.Add(musicSchool);
            }
            var GetStudents = musicSchoolStudents.Where(w => w.Instrument == "скрипка");
 
            foreach (var item in GetStudents)
            {
                Console.WriteLine($"Студент: {item.FIO}" +
                                  $", музыкальный инструмент: {item.Instrument}" +
                                  $", сколько занимаeтся (лет/года): {DateTime.Today.Year - item.DateStartOfTraining.Year}" +
                                  $", принимает участие в конкурсах: {item.ParticipationInCompetitions}");
            }
 
            File.Delete(@"students.txt");
        }
    }
 
    public class MusicSchoolStudents
    {
        public string FIO { get; set; }
        public string Instrument { get; set; }
        public DateTime DateStartOfTraining { get; set; }
        public bool ParticipationInCompetitions { get; set; }
 
        public override string ToString()
        {
            return $"{FIO};{Instrument};{DateStartOfTraining};{ParticipationInCompetitions}";
        }
    }
}
работа с файлами:
запись
чтение (уже с переводчиком)
можно переписать чтение из файла по-другому, для тренировки, по той ссылке, где и запись.
1
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
06.02.2020, 15:49
Лучший ответ Сообщение было отмечено STASYRAY как решение

Решение

Вот чем хороши студенческие задачи, так это незамутненной наивностью.

Тут удалось даже использовать метод количества полных лет из моей собственной JS-библиотеки
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
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
 
namespace Question2580264_UntypedFile
{
    public class MusicSchoolStudent
    {
        public string FIO { get; set; }
        public string Instrument { get; set; }
        public DateTime DateStartOfTraining { get; set; }
        public bool ParticipationInCompetitions { get; set; }
    }
    class Program
    {
        static void Main(string[] args)
        {
            CreateDB();
 
            var students = LoadDB();
 
            var query = students.Where(e => e.Instrument == "скрипка")
                .Select(e => $"{e.FIO} Занимается музыкой, лет: {AllYears(DateTime.Today, e.DateStartOfTraining)}. {(e.ParticipationInCompetitions ? "Принимал" : "Не принимал")}");
 
            Console.WriteLine(string.Join("\n", query));
            Console.ReadKey();
        }
 
        /// <summary>
        /// Количество полных лет между двумя моментами времени
        /// </summary>
        /// <param name="date1">Первая дата</param>
        /// <param name="date2">Вторая дата</param>
        /// <returns></returns>
        static int AllYears(DateTime date1, DateTime date2)
        {
            if (date2 < date1)
            {
                var tmp1 = date2;
                date2 = date1;
                date1 = tmp1;
            }
            int year = date2.Year, // Год от большей даты
                month = date1.Month,
                day = date1.Day,
                hh = date1.Hour,
                mm = date1.Minute,
                ss = date1.Second,
                ms = date1.Millisecond,
                result = date2.Year - date1.Year; // Чистый результат в годах без корректировки
 
            // Если прибавляем годы, то количество дней в месяце любое
            var maxDay = DateTime.DaysInMonth(year, month);
            if (day > maxDay) day = maxDay;
 
            var tmp = new DateTime(year, month, day, hh, mm, ss, ms);
            
            return tmp > date2 ? result - 1 : result; ;
        }
 
 
        public static void CreateDB()
        {
            List<MusicSchoolStudent> musicSchoolStudents = new List<MusicSchoolStudent>()
            {
                new MusicSchoolStudent() { FIO = "Петров", Instrument = "гусли", DateStartOfTraining = new DateTime(2017, 1, 1), ParticipationInCompetitions = true },
                new MusicSchoolStudent() { FIO = "Иванов", Instrument = "дудка", DateStartOfTraining = new DateTime(2018, 1, 1), ParticipationInCompetitions = true },
                new MusicSchoolStudent() { FIO = "Сидоров", Instrument = "скрипка", DateStartOfTraining = new DateTime(2000, 2, 29), ParticipationInCompetitions = false },
                new MusicSchoolStudent() { FIO = "Степанов", Instrument = "фортепиано", DateStartOfTraining = new DateTime(2018, 1, 1), ParticipationInCompetitions = true },
                new MusicSchoolStudent() { FIO = "Михайлов", Instrument = "гитара", DateStartOfTraining = new DateTime(2019, 10, 1), ParticipationInCompetitions = false },
                new MusicSchoolStudent() { FIO = "Громов", Instrument = "скрипка", DateStartOfTraining = new DateTime(2016, 10, 15), ParticipationInCompetitions = true },
                new MusicSchoolStudent() { FIO = "Полетаев", Instrument = "баян", DateStartOfTraining = new DateTime(2019, 5, 1), ParticipationInCompetitions = false },
                new MusicSchoolStudent() { FIO = "Орлов", Instrument = "фортепиано", DateStartOfTraining = new DateTime(2014, 1, 1), ParticipationInCompetitions = true },
            };
 
            using (var fstream = File.OpenWrite("students.dat"))
            using (BinaryWriter bw = new BinaryWriter(fstream))
                foreach (var student in musicSchoolStudents)
                {
                    bw.Write(student.FIO);
                    bw.Write(student.Instrument);
                    bw.Write(student.DateStartOfTraining.ToBinary());
                    bw.Write(student.ParticipationInCompetitions);
                }
        }
 
        public static List<MusicSchoolStudent> LoadDB()
        {
            List<MusicSchoolStudent> musicSchoolStudents = new List<MusicSchoolStudent>();
            using (var fstream = File.OpenRead("students.dat"))
            using (BinaryReader br = new BinaryReader(fstream))
                while (br.BaseStream.Position < br.BaseStream.Length)
                {
                    var student = new MusicSchoolStudent();
                    student.FIO = br.ReadString();
                    student.Instrument = br.ReadString();
                    student.DateStartOfTraining = DateTime.FromBinary(br.ReadInt64());
                    student.ParticipationInCompetitions = br.ReadBoolean();
                    musicSchoolStudents.Add(student);
                }
            return musicSchoolStudents;
        }
    }
}
Нетипизированный файл - файл байтов из Паскаля.
Поэтому нельзя использовать методы .Net, а нужно брать методы Паскаля, например отсюда:
https://pas1.ru/untyped-file
1
0 / 0 / 0
Регистрация: 06.02.2020
Сообщений: 4
06.02.2020, 18:40  [ТС]
Спасибо Вам большое! Вы очень здорово помогли мне!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.02.2020, 18:40
Помогаю со студенческими работами здесь

В файл хранится информация об учениках школы;
В файл хранится информация об учениках школы;имя ,фамилия, дата рождение (число,месяц,год) и название класса(год обучения и буква). В новый...

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

Собрать в файле сведения о лучших учениках школы
Дан типизированный файл f в котором находится инф об ученика (Фамилия,номер класса, буква класса и оценки (мин 3)). Нужно собрать в файле g...

Собрать в файл g сведения о лучших учениках школы
Помогите пжл.решить задачу,ОЧЕНЬ НАДО!!!!!! Дан файл f, кот.содержит сведения об учениках школы:имя, фамилия и название класса (год...

Собрать в файле сведения о лучших учениках школы
Дан файл f (который мы изначально заполняем первой программой) (с помощью второй программы) Собрать в файле g сведения о лучших учениках...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru