Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.57/79: Рейтинг темы: голосов - 79, средняя оценка - 4.57
21 / 10 / 5
Регистрация: 07.01.2013
Сообщений: 222
1

Описать класс "Студент" с полями фамилия, имя, отчество, группа, дата рождения

21.04.2014, 11:54. Показов 15988. Ответов 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
struct Student
    {
        public string lastName;
        public string firstName;
        public string middleName;
 
        public string birth;
 
        public string group;
 
        public Student(string lastName, string firstName, string middleName, string birth, string group)
        {
            this.lastName = lastName;
            this.firstName = firstName;
            this.middleName = middleName;
            this.birth = birth;
            this.group = group;
        }
 
        public override string ToString()
        {
            return String.Format(" Фамилия: {0},  Имя: {1},  Отчество: {2},  Дата Рождения: {3},  Группа: {4}\n", 
                lastName, firstName, middleName, birth, group);
        }
    }


Класс Меню:

Кликните здесь для просмотра всего текста
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
class Menu
    {
        private int choice;
        private string ans;
 
        public int Choice
        {
            get { return choice;  }
        }
 
        public string Ans
        {
            get { return ans; }
        }
 
        public void Dialog()
        {
            Console.Write("\n> Вернуться в меню (y/n)? - ");
            ans = Console.ReadLine();
            Console.WriteLine();
            Console.WriteLine("\t ====================================================");
            Console.WriteLine("\t  Спасибо, что воспользовались нашей программой :).");
            Console.WriteLine("\t ====================================================");
            Console.WriteLine();
        }
 
        public void Display()
        {
            Console.Clear();
            Console.WriteLine();
            Console.WriteLine("\t ====================================================");
            Console.WriteLine("\t\t Система управления данными Студентов.");
            Console.WriteLine("\t ====================================================");
            Console.WriteLine();
            Console.WriteLine();
            Console.WriteLine("\t\t 1. Вывести список всех студентов.");
            Console.WriteLine("\t\t 2. Добавить нового студента.");
            Console.WriteLine("\t\t 3. Найти студента.");
            Console.WriteLine("\t\t 4. Удалить студента.");
            Console.WriteLine("\t\t 5. Выход.");
            Console.WriteLine();
            Console.Write("\t> Сделайте выбор: ");
            try
            {
                choice = Convert.ToInt32(Console.ReadLine());
            }
            catch (FormatException err)
            {
                Console.WriteLine("\n > Error, man!!! {0}", err.Message);
            }                        
        }
 
    }


Управляющий класс:

Кликните здесь для просмотра всего текста
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
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
class Driver
    {
        private Student[] arrStudent;
 
        private FileStream fileStream;
        private StreamReader streamReader;
        private StreamWriter streamWriter;
        DirectoryInfo dirInfo;
 
        private string filePath;
        private string buff;
 
        public ArrayList al = new ArrayList();
 
        public Driver(int size)
        {
            arrStudent = new Student[size];
            filePath = @"Data\students.txt";
            buff = "";
            dirInfo = new DirectoryInfo("Data");
            dirInfo.Create();
        }
 
        public void AdapterFill()
        {
            try
            {
                fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read);
                streamReader = new StreamReader(fileStream, Encoding.UTF8);
 
                buff = streamReader.ReadToEnd();
                if (buff == "")
                {
                    Console.WriteLine("\n> Список студентов пуст.");
                }
                else
                {
                    char[] splitChars = new char[] { '\n', '\r' };
 
                    int i = 0;
                    foreach (string line in buff.Split(splitChars, StringSplitOptions.RemoveEmptyEntries))
                    {
                        if (!string.IsNullOrEmpty(line.Trim()))
                        {
                            Console.WriteLine("{0}. {1}", (i + 1), line);
                        }                                                
                        i++;
                    }
                }
 
                streamReader.Close();
                fileStream.Close();
            }
            catch (IOException err)
            {
                Console.WriteLine("\n > {0}", err.Message);
            }
        }
 
        public void AdapterUpdate()
        {
            try
            {
                fileStream = new FileStream(filePath, FileMode.Append, FileAccess.Write);
                streamWriter = new StreamWriter(fileStream, Encoding.UTF8);
                foreach (var item in al)
                {
                    Student st = (Student)item;
                    streamWriter.WriteLine(st.ToString());
                }
            }
            catch (IOException err)
            {
                Console.WriteLine("\n > {0}", err.Message);
            }
            streamWriter.Close();
            fileStream.Close();
        }
 
        public void viewList()
        {
            AdapterFill();
        }
 
        public void addStudents(ArrayList al)
        {
            string lName;
            string fName;
            string mName;
            string birthDay;
            string _group;
            Console.Write("Введите фамилию студента:  ");
            lName = Console.ReadLine();
            Console.Write("Введите имя студента:  ");
            fName = Console.ReadLine();
            Console.Write("Введите очтчество студента:  ");
            mName = Console.ReadLine();
            Console.Write("Дату рождения:  ");
            birthDay = Console.ReadLine();
            Console.Write("Группа:  ");
            _group = Console.ReadLine();
            al.Add(new Student { lastName = lName, firstName = fName, middleName = mName, birth = birthDay, group = _group });
            AdapterUpdate();
        }
 
        public void findStudent()
        {
            Console.WriteLine("Введите фамилию:");
            string findLastName = Console.ReadLine();
            try
            {
                fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read);
                streamReader = new StreamReader(fileStream, Encoding.UTF8);
 
                buff = streamReader.ReadToEnd();
                if (buff == "")
                {
                    Console.WriteLine("\n> Список студентов пуст.");
                }
                else
                {
                    string pattern = findLastName;
                    char[] splitChars = new char[] { '\n', '\r' };
                    foreach (string line in buff.Split(splitChars, StringSplitOptions.RemoveEmptyEntries))
                    {
                        if (!string.IsNullOrEmpty(line.Trim()))
                        {
                            if (line.StartsWith(" Фамилия: " + pattern))
                            {
                                Console.WriteLine("Студент '{0}' найден: {1}.",
                                              pattern, line);
                            }
                            else
                                Console.WriteLine("Студент '{0}' не найден.", pattern);
                        }
                    }
                }
 
                streamReader.Close();
                fileStream.Close();
            }
            catch (IOException err)
            {
                Console.WriteLine("\n > {0}", err.Message);
            }
        }
 
        public void removeStudent()
        {
            viewList();
            int flag = 0;
            Console.WriteLine("Введите номмер студента, которого нужно удалить:  ");
            try
            {
                flag = Console.Read();
            }
            catch (Exception err)
            {
                Console.WriteLine("\n > {0}", err.Message);
            }
            try
            {
                string[] readText = System.IO.File.ReadAllLines(filePath);
                Array.Resize(ref readText, (readText.Length - 1));
                using (System.IO.StreamWriter file = new System.IO.StreamWriter(filePath, false))
                {
                    for (int i = 0; i < readText.Length; i++)
                    {
                        if (i != flag - 1)
                            streamWriter.WriteLine(readText[i]);
                    }
                }
            }
            catch (IOException err)
            {
                Console.WriteLine("\n > {0}", err.Message);
            }
            streamWriter.Close();     
        }        
    }


ну и класс Program:

Кликните здесь для просмотра всего текста
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
class Program
    {
        static void Main(string[] args)
        {
            Menu m = new Menu();
            Driver d = new Driver(10);
 
            do
            {
                m.Display();
                switch (m.Choice)
                {
                    case 1:
                        d.viewList();
                        break;
                    case 2:
                        d.addStudents(d.al);
                        break;
                    case 3:
                        d.findStudent();
                        break;
                    case 4:
                        d.removeStudent();
                        break;
                    case 5:                        
                        System.Environment.Exit(-1);
                        break;
                    default:
                        Console.WriteLine("\n> Ошибка выбора!");
                        break;
                }
            m.Dialog();
            }
            while(m.Ans == "y");
 
            Console.WriteLine();
        }
    }


Добавлено через 3 минуты
Ошибки, с которыми я столкнулся:
Во время добавления нового студента, в фаил дублируется первое добавление, дальше все нормально.
Проблемы с удалением студента.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.04.2014, 11:54
Ответы с готовыми решениями:

Класс студент с полями: год рождения, имя, фамилия, отчество, адрес и телефон.
Написать класс студент с полями: год рождения, имя, фамилия, отчество, адрес и телефон.

Определить класс "Пациент", предусмотрев в нем данные: фамилия, имя, год рождения, номер телефона
Здравствуйте! У меня возникли сложности с таким вопросом: Определить класс &quot;Пациент&quot;, предусмотрев...

Класс "Студент" и "Студенческая группа"
Класс «СТУДЕНТ» содержит закрытые поля: номер студенческого билета, фамилия, имя, отчество, дата...

Определите класс "Депозитный вклад", полями которого является сумма и дата последнего перерасчета
помогите с курсовой по c#. Тема:определите класс&quot;Депозитный вклад&quot;, полями которого является...

__________________

Записывайтесь на профессиональные курсы С#-разработчиков‌
20
985 / 883 / 353
Регистрация: 24.03.2014
Сообщений: 2,381
Записей в блоге: 2
21.04.2014, 12:09 2
Про удаление Вам, кажется в соседней теме сказали, проще будет перезаписать файл весь.
Также Вы открываете файл на добавление (FileMode.Append), а потом по новой проходите по всем студентам, конечно там дублироваться будет...
0
2141 / 1278 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
21.04.2014, 12:47 3
У вас в задании создать класс а не структуру
0
21 / 10 / 5
Регистрация: 07.01.2013
Сообщений: 222
24.04.2014, 18:00  [ТС] 4
После пару бессонных ночей, вот, все переделал.
Но есть ошибки, а именно IndexOutOfRangeException.
И никак не могу найти, где именно мой партак ((
Помогите.
вот все коды:

C#
1
class Program
Кликните здесь для просмотра всего текста
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
class Program
    {
        static void Main(string[] args)
        {
            MainMenu m = new MainMenu();
            StudentMenu sm = new StudentMenu();
 
            do
            {
                m.Display();
                switch (m.Choice)
                {
                    case 1:
                        sm.viewList();
                        break;
                    case 2:
                        sm.addStudent();
                        break;
                    case 3:
                        sm.findStudent();
                        break;
                    case 4:
                        sm.removeStudent();
                        break;
                    case 5:
                        sm.setRate();
                        break;
                    case 6:
                        sm.statistics();
                        break;
                    case 7:
                        sm.exit();
                        break;
                    default:
                        Console.WriteLine("\n> Ошибка выбора!");
                        break;
                }
                m.Dialog();
            }
            while (m.Ans == "y");
 
            Console.WriteLine();
        }
    }


C#
1
class Student
Кликните здесь для просмотра всего текста
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
[Serializable]
    public class Student : Human
    {
        private string group;
        private Dictionary<string, List<int>> rate;
 
        public Student()
        {
           rate = new Dictionary<string,List<int>>();
        }
 
        public List<int> this[string key]
        {
            get { return rate[key]; }
            set { rate.Add(key, value); }
        }
 
        public string Group
        {
            get { return group; }
            set { group = value; }
        }
 
        public bool EmptyRate()
        {
            if (rate.Count == 0)
                return true;
            return false;
        }
 
        public override string ToString()
        {
            return String.Format("\n\t---------------------------------------------------------------" +
                "\n\t\tИнформация о студенте: " +
                "\n\t---------------------------------------------------------------" +
                "\n\tФамилия: {0}\n\n\tИмя: {1}\n\n\tОтчество: {2}\n\n\tДата Рождения: {3}\n\n\tГруппа: {4}\n" +
                "\n\t---------------------------------------------------------------",
                LastName, FirstName, MiddleName, Birth, Group);
        }
    }


C#
1
class Human
Кликните здесь для просмотра всего текста
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
[Serializable]
    public abstract class Human
    {
        private string birth;
        private string firstName;
        private string lastName;
        private string middleName;
 
        public string Birth
        {
            get { return birth; }
            set { birth = value; }
        }
 
        public string FirstName
        {
            get { return firstName; }
            set { firstName = value; }
        }
 
        public string LastName
        {
            get { return lastName; }
            set { lastName = value; }
        }
 
        public string MiddleName
        {
            get { return middleName; }
            set { middleName = value; }
        }
    }


C#
1
class Driver
Кликните здесь для просмотра всего текста
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
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
[Serializable]
    public class Driver
    {
        private string buff;
        private string filePath;
 
        private int choise;
        private int count;
        
        private FileStream fileStream;
        private StreamWriter streamWriter;
        private StreamReader streamReader;
        private List<Student> arrStudents;
 
        public Driver()
        {
            filePath = @"..\..\students.dat";
            arrStudents = new List<Student>();
        }
 
        public Student this[int index]
        {
            get { return arrStudents[index]; }
            set { arrStudents.Add(value); }
        }
 
        public int Choise
        {
            get { return choise; }
            set { choise = value; }
        }
 
        public int Length
        {
            get { return arrStudents.Count; }
        }
 
        public bool adapterFill()
        {
            try
            {
                arrStudents.Clear();
 
                fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read);
                streamReader = new StreamReader(fileStream, Encoding.UTF8);
 
                buff = streamReader.ReadToEnd();
 
                string[] lines = buff.Split('\n');
                Array.Resize(ref lines, (lines.Length - 1));
                List<int> listing = new List<int>();
 
                if (buff.Trim() != "")
                {
                    count = 0;
 
                    foreach (string line in lines)
                    {
                        arrStudents.Add(new Student());
 
                        string[] words = line.Split(';');
 
                        arrStudents[count].LastName = words[0];
                        arrStudents[count].FirstName = words[1];
                        arrStudents[count].MiddleName = words[2];
                        arrStudents[count].Birth = words[3];
                        arrStudents[count].Group = words[4];
 
                        string[] programming = words[5].Split(',');
                        string[] administration = words[6].Split(',');
                        string[] design = words[7].Split(',');
 
                        for (int i = 0; i < programming.Length; ++i)
                            listing.Add(Convert.ToInt16(programming[i]));
                        arrStudents[count]["Программирование"] = listing.ToList();
                        listing.Clear();
 
                        for (int i = 0; i < administration.Length; ++i)
                            listing.Add(Convert.ToInt16(administration[i]));
                        arrStudents[count]["Админестрирование"] = listing.ToList();
                        listing.Clear();
 
                        for (int i = 0; i < design.Length; ++i)
                            listing.Add(Convert.ToInt16(design[i]));
                        arrStudents[count]["Дизайн"] = listing.ToList();
                        listing.Clear();
                    }
                }
 
                streamReader.Close();
                fileStream.Close();
                return true;
            }
            catch (IOException err)
            {
                Console.WriteLine("\n > {0}", err.Message);
            }
            return false;
        }
 
        public void adapterUpdate()
        {
            try
            {
                fileStream = new FileStream(filePath, FileMode.Truncate, FileAccess.Write);
                streamWriter = new StreamWriter(fileStream, Encoding.UTF8);
 
                for (int i = 0; i < arrStudents.Count; ++i)
                {
                    string line = "";
 
                    line += arrStudents[i].LastName + ";";
                    line += arrStudents[i].FirstName + ";";
                    line += arrStudents[i].MiddleName + ";";
                    line += arrStudents[i].Birth + ";";
                    line += arrStudents[i].Group + ";";
 
                    if (!arrStudents[i].EmptyRate())
                    {
                        for (int j = 0; j < arrStudents[count]["Программирование"].Count - 1; ++j)
                            line += arrStudents[i]["Программирование"][j] + ",";
                        line += arrStudents[i]["Программирование"][arrStudents[count]["Программирование"].Count - 1] + ",";
 
                        for (int j = 0; j < arrStudents[count]["Админестрирование"].Count - 1; ++j)
                            line += arrStudents[i]["Админестрирование"][j] + ",";
                        line += arrStudents[i]["Админестрирование"][arrStudents[count]["Админестрирование"].Count - 1] + ",";
 
                        for (int j = 0; j < arrStudents[count]["Дизайн"].Count - 1; ++j)
                            line += arrStudents[i]["Дизайн"][j] + ",";
                        line += arrStudents[i]["Дизайн"][arrStudents[count]["Дизайн"].Count - 1] + ",";
                    }
                    streamWriter.WriteLine(line);
                }
                streamWriter.Close();
                fileStream.Close();
            }
            catch (IOException err)
            {
                Console.WriteLine("\n > {0}", err.Message);
            }
        }
 
        public void addStudent(bool flag)
        {
            try
            {
                if (!flag)
                {
                    arrStudents.Add(new Student());
                    fillStudentForm(0);
                }
                else
                {
                    arrStudents.Add(new Student());
                    fillStudentForm(arrStudents.Count - 1);
                }
            }
            catch(Exception err)
            {
                Console.WriteLine("\n > {0}", err.Message);
            }
        }
 
        public void addRate(bool flag)
        {
            try
            {
                if (!flag)
                {
                    arrStudents.Add(new Student());
                    setRate(0);
                }
                else
                {
                    arrStudents.Add(new Student());
                    setRate(arrStudents.Count - 1);
                }
            }
            catch (Exception err)
            {
                Console.WriteLine("\n > {0}", err.Message);
            }
        }
 
        public void removeStudent(bool flag)
        {
            try
            {
                if (!flag)
                {
                    Console.Clear();
                    Console.WriteLine("Неверный ввод, попробуйте еще! ");
                    return;
                }
                else
                {
                    Console.WriteLine("Студент был удален из списка!");
                    arrStudents.RemoveAt(choise - 1);
                    adapterUpdate();
                }
            }
            catch (Exception err)
            {
                Console.WriteLine("\n > {0}", err.Message);
            }
        }
 
        public void fillStudentForm(int q)
        {
            List<int> listing = new List<int>();
            listing.Add(0);
 
            ConsoleColor tmpColorLN = Console.ForegroundColor;
            Console.ForegroundColor = ConsoleColor.Cyan;
            Console.Write("Введите фамилию студента:  ");
            Console.ForegroundColor = tmpColorLN;
            arrStudents[q].LastName = Console.ReadLine();
            Console.WriteLine();
 
            ConsoleColor tmpColorFN = Console.ForegroundColor;
            Console.ForegroundColor = ConsoleColor.Cyan;
            Console.Write("Введите имя студента:  ");
            Console.ForegroundColor = tmpColorFN;
            arrStudents[q].FirstName = Console.ReadLine();
            Console.WriteLine();
 
            ConsoleColor tmpColorMN = Console.ForegroundColor;
            Console.ForegroundColor = ConsoleColor.Cyan;
            Console.Write("Введите очтчество студента:  ");
            Console.ForegroundColor = tmpColorMN;
            arrStudents[q].MiddleName = Console.ReadLine();
            Console.WriteLine();
 
            ConsoleColor tmpColorB = Console.ForegroundColor;
            Console.ForegroundColor = ConsoleColor.Cyan;
            Console.Write("Дату рождения:  ");
            Console.ForegroundColor = tmpColorB;
            arrStudents[q].Birth = Console.ReadLine();
            Console.WriteLine();
 
            ConsoleColor tmpColorGr = Console.ForegroundColor;
            Console.ForegroundColor = ConsoleColor.Cyan;
            Console.Write("Группа:  ");
            Console.ForegroundColor = tmpColorGr;
            arrStudents[q].Group = Console.ReadLine();
            Console.WriteLine();
 
            arrStudents[q]["Программирование"] = listing;
            arrStudents[q]["Админестрирование"] = listing;
            arrStudents[q]["Дизайн"] = listing;
            adapterUpdate();
 
            Console.WriteLine("\n Студент был добавлен!");
        }
 
        public void findStudent(string findLastName)
        {            
            try
            {
                fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read);
                streamReader = new StreamReader(fileStream, Encoding.UTF8);
 
                Console.WriteLine("Введите фамилию:");
                findLastName = Console.ReadLine();
 
                buff = streamReader.ReadToEnd();
                if (buff == "")
                {
                    Console.WriteLine("\n> Список студентов пуст.");
                }
                else
                {
                    string pattern = findLastName;
                    char[] splitChars = new char[] { '\n', '\r' };
                    foreach (string line in buff.Split(splitChars, StringSplitOptions.RemoveEmptyEntries))
                    {
                        if (!string.IsNullOrEmpty(line.Trim()))
                        {
                            if (line.StartsWith(" Фамилия: " + pattern))
                            {
                                Console.WriteLine("Студент '{0}' найден: {1}.",
                                              pattern, line);
                            }
                            else
                                Console.WriteLine("Студент '{0}' не найден.", pattern);
                        }
                    }
                }
 
                streamReader.Close();
                fileStream.Close();
            }
            catch (IOException err)
            {
                Console.WriteLine("\n > {0}", err.Message);
            }
        }
 
        public void showStudent(int x, bool rate)
        {
            if (!rate)
            {
                Console.Clear();
                Console.WriteLine("Ошибка ввода, попробуйте еще!");
                return;
            }
            else
            {
                Console.Clear();
                Console.WriteLine(arrStudents[x]);
 
                Console.WriteLine("\n Оценки по Программированию: ");
                for (int i = 0; i < arrStudents[x]["Программирование"].Count - 1; ++i)
                    Console.Write("{0}, ", arrStudents[x]["Программирование"][i] + ",");
                Console.Write("{0}\n", arrStudents[x]["Программирование"][arrStudents[x]["Программирование"].Count - 1] + ",");
 
                Console.WriteLine("\n Оценки по Админестрированию: ");
                for (int i = 0; i < arrStudents[x]["Админестрирование"].Count - 1; ++i)
                    Console.Write("{0}, ", arrStudents[x]["Админестрирование"][i] + ",");
                Console.Write("{0}\n", arrStudents[x]["Админестрирование"][arrStudents[x]["Админестрирование"].Count - 1] + ",");
 
                Console.WriteLine("\n Оценки по Дизайну: ");
                for (int i = 0; i < arrStudents[x]["Дизайн"].Count - 1; ++i)
                    Console.Write("{0}, ", arrStudents[x]["Дизайн"][i] + ",");
                Console.Write("{0}\n", arrStudents[x]["Дизайн"][arrStudents[x]["Дизайн"].Count - 1] + ",");
            }
        }
 
        public void setRate(int r)
        {
            List<int> listingP = new List<int>();            
 
            List<int> listingA = new List<int>();
 
            List<int> listingD = new List<int>();
 
            ConsoleColor tmpColorLN = Console.ForegroundColor;
            Console.ForegroundColor = ConsoleColor.Cyan;
            Console.Write("Выставте оценки для студента:  ");
            Console.ForegroundColor = tmpColorLN;
            Console.WriteLine();
 
            ConsoleColor tmpColorP = Console.ForegroundColor;
            Console.ForegroundColor = ConsoleColor.Cyan;
            Console.Write("Программирование:  ");
            Console.ForegroundColor = tmpColorP;
            listingP.Add(Convert.ToInt16(Console.ReadLine()));
            Console.WriteLine();
 
            ConsoleColor tmpColorA = Console.ForegroundColor;
            Console.ForegroundColor = ConsoleColor.Cyan;
            Console.Write("Администрирование:  ");
            Console.ForegroundColor = tmpColorA;
            listingA.Add(Convert.ToInt16(Console.ReadLine()));
            Console.WriteLine();
 
            ConsoleColor tmpColorD = Console.ForegroundColor;
            Console.ForegroundColor = ConsoleColor.Cyan;
            Console.Write("Дизайн:  ");
            Console.ForegroundColor = tmpColorD;
            listingD.Add(Convert.ToInt16(Console.ReadLine()));
            Console.WriteLine();
 
            arrStudents[r]["Программирование"] = listingP;
            arrStudents[r]["Админестрирование"] = listingA;
            arrStudents[r]["Дизайн"] = listingD;
            adapterUpdate();
 
            Console.WriteLine("\n Оценки добавлены!");
        }
 
        public void showAverageRate(int x, bool rate)
        {
            if (!rate)
            {
                Console.Clear();
                Console.WriteLine("Ошибка ввода, попробуйте еще!");
                return;
            }
            else
            {
                Console.Clear();
                Console.WriteLine(arrStudents[x]);
 
                Console.WriteLine("\n Оценки по Программированию: ");
                for (int i = 0; i < arrStudents[x]["Программирование"].Count - 1; ++i)
                    Console.Write("{0}, ", arrStudents[x]["Программирование"][i] + ",");
                Console.Write("{0}\n", arrStudents[x]["Программирование"].Average() + ",");
 
                Console.WriteLine("\n Оценки по Админестрированию: ");
                for (int i = 0; i < arrStudents[x]["Админестрирование"].Count - 1; ++i)
                    Console.Write("{0}, ", arrStudents[x]["Админестрирование"][i] + ",");
                Console.Write("{0}\n", arrStudents[x]["Админестрирование"].Average() + ",");
 
                Console.WriteLine("\n Оценки по Дизайну: ");
                for (int i = 0; i < arrStudents[x]["Дизайн"].Count - 1; ++i)
                    Console.Write("{0}, ", arrStudents[x]["Дизайн"][i] + ",");
                Console.Write("{0}\n", arrStudents[x]["Дизайн"].Average() + ",");
            }
        }
 
        public bool showStudentList()
        {
            try
            {
                for (int i = 0; i < arrStudents.Count; ++i)
                    Console.WriteLine("{0}: {1}  {2}  {3}\n", (i + 1), arrStudents[i].LastName, arrStudents[i].FirstName, arrStudents[i].MiddleName);
                Console.WriteLine("\n > Выберите номер студента: ");
                Console.WriteLine();
 
                choise = Convert.ToInt16(Console.ReadLine());
                if (choise > 0 && choise <= arrStudents.Count)
                    return true;
            }
            catch (Exception err)
            {
                Console.WriteLine("\n > {0}", err.Message);
            }
            return false;
        }
    }


C#
1
class StudentMenu
Кликните здесь для просмотра всего текста
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
 [Serializable]
    public class StudentMenu
    {
        Driver driver = new Driver();
 
        public void addStudent()
        {
            Console.Clear();
            Console.WriteLine("\n\t---------------------------------------------------------------");
            ConsoleColor tmpColor = Console.ForegroundColor;
            Console.ForegroundColor = ConsoleColor.DarkGreen;
            Console.WriteLine("\n\t\t Добавить нового студента:  ");
            Console.ForegroundColor = tmpColor;
            Console.WriteLine("\n\t---------------------------------------------------------------");
 
            driver.addStudent(driver.adapterFill());
        }
 
        public void findStudent()
        {
            Console.Clear();
            Console.WriteLine("\n\t---------------------------------------------------------------");
            ConsoleColor tmpColor = Console.ForegroundColor;
            Console.ForegroundColor = ConsoleColor.DarkGreen;
            Console.WriteLine("\n\t\t Найти студента:  ");
            Console.ForegroundColor = tmpColor;
            Console.WriteLine("\n\t---------------------------------------------------------------");
 
            Console.WriteLine("Для поиска студента, введите его фамилию: \n\n");
 
            string finder = Console.ReadLine();
 
            if (driver.adapterFill())
                driver.findStudent(finder);
        }
 
        public void removeStudent()
        {
            Console.Clear();
            Console.WriteLine("\n\t---------------------------------------------------------------");
            ConsoleColor tmpColor = Console.ForegroundColor;
            Console.ForegroundColor = ConsoleColor.DarkGreen;
            Console.WriteLine("\n\t\t Удалить студента из базы:  ");
            Console.ForegroundColor = tmpColor;
            Console.WriteLine("\n\t---------------------------------------------------------------");
 
            if (driver.adapterFill())
            {
                bool flag = driver.showStudentList();
                driver.removeStudent(flag);
            }
        }
 
        public void setRate()
        {
            Console.Clear();
            Console.WriteLine("\n\t---------------------------------------------------------------");
            ConsoleColor tmpColor = Console.ForegroundColor;
            Console.ForegroundColor = ConsoleColor.DarkGreen;
            Console.WriteLine("\n\t\t Выставить оценки:  ");
            Console.ForegroundColor = tmpColor;
            Console.WriteLine("\n\t---------------------------------------------------------------");
 
            driver.addRate(driver.adapterFill());
        }
 
        public void statistics()
        {
            Console.Clear();
            Console.WriteLine("\n\t---------------------------------------------------------------");
            ConsoleColor tmpColor = Console.ForegroundColor;
            Console.ForegroundColor = ConsoleColor.DarkGreen;
            Console.WriteLine("\n\t\t Статистика успеваемости студентов:  ");
            Console.ForegroundColor = tmpColor;
            Console.WriteLine("\n\t---------------------------------------------------------------");
 
            if (driver.adapterFill())
            {
                Student St = new Student();
                bool flag = St.EmptyRate();
 
                for (int i = 0; i < driver.Length; ++i)
                    Console.WriteLine("\n{0}: {1} {2} {3}\n}", (i + 1), driver[i].LastName, driver[i].FirstName, driver[i].MiddleName);
 
                Console.WriteLine("\n Выберите номер студента:  ");
                int num = Convert.ToInt16(Console.ReadLine());
 
                driver.showStudent(num, flag);
            }
        }
 
        public void exit()
        {
            System.Environment.Exit(-1);
        }
 
        public void viewList()
        {
            Console.Clear();
            Console.WriteLine("\n\t---------------------------------------------------------------");
            ConsoleColor tmpColor = Console.ForegroundColor;
            Console.ForegroundColor = ConsoleColor.DarkGreen;
            Console.WriteLine("\n\t\t Список студентов:  ");
            Console.ForegroundColor = tmpColor;
            Console.WriteLine("\n\t---------------------------------------------------------------");
 
            if (driver.adapterFill())
            {
                for (int i = 0; i < driver.Length; ++i)
                    Console.WriteLine("\n{0}: {1} {2} {3}\n}", (i + 1), driver[i].LastName, driver[i].FirstName, driver[i].MiddleName);
            }
        }
    }


C#
1
class MainMenu
Кликните здесь для просмотра всего текста
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
public class MainMenu
    {
        private int choice;
        private string ans;
 
        public int Choice
        {
            get { return choice; }
        }
 
        public string Ans
        {
            get { return ans; }
        }
 
        public void Dialog()
        {
            Console.Write("\n> Вернуться в меню (y/n)? - ");
            ans = Console.ReadLine();
            Console.WriteLine();
            Console.WriteLine("\t ====================================================");
            Console.WriteLine("\t  Спасибо, что воспользовались нашей программой :).");
            Console.WriteLine("\t ====================================================");
            Console.WriteLine();
        }
 
        public void Display()
        {
            Console.Clear();
            Console.WriteLine();
            Console.WriteLine("\t ====================================================");
            ConsoleColor tmpColor = Console.ForegroundColor;
            Console.ForegroundColor = ConsoleColor.DarkGreen;
            Console.WriteLine("\t\t Система управления данными Студентов.");
            Console.ForegroundColor = tmpColor;
            Console.WriteLine("\t ====================================================");
            Console.WriteLine();
            Console.WriteLine();
            ConsoleColor tmpColor1 = Console.ForegroundColor;
            Console.ForegroundColor = ConsoleColor.Cyan;
            Console.WriteLine("\t\t 1. Вывести список всех студентов.");
            Console.ForegroundColor = tmpColor1;
            ConsoleColor tmpColor2 = Console.ForegroundColor;
            Console.ForegroundColor = ConsoleColor.Cyan;
            Console.WriteLine("\t\t 2. Добавить нового студента.");
            Console.ForegroundColor = tmpColor2;
            ConsoleColor tmpColor3 = Console.ForegroundColor;
            Console.ForegroundColor = ConsoleColor.Cyan;
            Console.WriteLine("\t\t 3. Найти студента.");
            Console.ForegroundColor = tmpColor3;
            ConsoleColor tmpColor4 = Console.ForegroundColor;
            Console.ForegroundColor = ConsoleColor.Cyan;
            Console.WriteLine("\t\t 4. Удалить студента.");
            Console.ForegroundColor = tmpColor4;
            ConsoleColor tmpColor5 = Console.ForegroundColor;
            Console.ForegroundColor = ConsoleColor.Cyan;
            Console.WriteLine("\t\t 5. Выставить оценки.");
            Console.ForegroundColor = tmpColor5;
            ConsoleColor tmpColor6 = Console.ForegroundColor;
            Console.ForegroundColor = ConsoleColor.Cyan;
            Console.WriteLine("\t\t 6. Статистика.");
            Console.ForegroundColor = tmpColor6;
            ConsoleColor tmpColor7 = Console.ForegroundColor;
            Console.ForegroundColor = ConsoleColor.Cyan;
            Console.WriteLine("\t\t 7. Выход.");
            Console.ForegroundColor = tmpColor7;
            Console.WriteLine();
            ConsoleColor tmpColorVibor = Console.ForegroundColor;
            Console.ForegroundColor = ConsoleColor.Red;
            Console.Write("\t> Сделайте выбор: ");
            Console.ForegroundColor = tmpColorVibor;
            try
            {
                choice = Convert.ToInt32(Console.ReadLine());
            }
            catch (FormatException err)
            {
                Console.WriteLine("\n > Error, man!!! {0}", err.Message);
            }
        }
    }


Помогите, пожалуйста.
0
470 / 428 / 120
Регистрация: 05.01.2010
Сообщений: 1,803
24.04.2014, 18:27 5
ну там же указывается, в какой именно строке была ошибка)
0
21 / 10 / 5
Регистрация: 07.01.2013
Сообщений: 222
24.04.2014, 18:33  [ТС] 6
Да указывается, строка 80, класс Driver (
C#
1
string[] administration = words[6].Split(',');
)

Я уже столько сижу над этой работой, что у меня уже наверно замылился глаз, и не вижу очевидных вещей. Так что если поможете от меня огромное человеческое спасибо )
0
2141 / 1278 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
24.04.2014, 18:44 7
Аццкий Прогер, отэто ты наворотил

Аццкий Прогер, смотри
C#
1
2
3
4
5
6
7
8
9
10
string[] words = line.Split(';');
 
                        arrStudents[count].LastName = words[0];
                        arrStudents[count].FirstName = words[1];
                        arrStudents[count].MiddleName = words[2];
                        arrStudents[count].Birth = words[3];
                        arrStudents[count].Group = words[4];
 
                        string[] programming = words[5].Split(',');
                        string[] administration = words[6].Split(',');
ты в вордс загоняешь слова через разделитель
потом обращаешся к 6 элементу массива. значит его нет. проверь свои разделители . и вобще с разделителями так не делается
1
21 / 10 / 5
Регистрация: 07.01.2013
Сообщений: 222
24.04.2014, 19:13  [ТС] 8
Спасибо, сейчас будем дальше копаться ))

Добавлено через 28 минут
Странно, с разделителями вроде все как нормально. Вот код, где они добавляются:
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
public void adapterUpdate()
        {
            try
            {
                fileStream = new FileStream(filePath, FileMode.Truncate, FileAccess.Write);
                streamWriter = new StreamWriter(fileStream, Encoding.UTF8);
 
                for (int i = 0; i < arrStudents.Count; ++i)
                {
                    string line = "";
 
                    line += arrStudents[i].LastName + ";";
                    line += arrStudents[i].FirstName + ";";
                    line += arrStudents[i].MiddleName + ";";
                    line += arrStudents[i].Birth + ";";
                    line += arrStudents[i].Group + ";";
 
                    if (!arrStudents[i].EmptyRate())
                    {
                        for (int j = 0; j < arrStudents[count]["Программирование"].Count - 1; ++j)
                            line += arrStudents[i]["Программирование"][j] + ",";
                        line += arrStudents[i]["Программирование"][arrStudents[count]["Программирование"].Count - 1] + ",";
 
                        for (int k = 0; k < arrStudents[count]["Администрирование"].Count - 1; ++k)
                            line += arrStudents[i]["Администрирование"][k] + ",";
                        line += arrStudents[i]["Администрирование"][arrStudents[count]["Администрирование"].Count - 1] + ",";
 
                        for (int o = 0; o < arrStudents[count]["Дизайн"].Count - 1; ++o)
                            line += arrStudents[i]["Дизайн"][o] + ",";
                        line += arrStudents[i]["Дизайн"][arrStudents[count]["Дизайн"].Count - 1] + ",";
                    }
                    streamWriter.WriteLine(line);
                }
                streamWriter.Close();
                fileStream.Close();
            }
            catch (IOException err)
            {
                Console.WriteLine("\n > {0}", err.Message);
            }
        }
0
470 / 428 / 120
Регистрация: 05.01.2010
Сообщений: 1,803
25.04.2014, 11:53 9
блин, по ощущениям как-то громоздко и как-то не так
а вообще, поставь точку останова выше места падения и глянь, сколько элементов в массиве words. если количество элементов меньше 7 - посмотри содержимое строки line, пройдись пошагово по методу добавления строк в lines, разберись, как она формируется и почему так.
как-то так в общих чертах
з.ы. судя по всему, не срабатывает условие if (!arrStudents[i].EmptyRate()), вследствие чего количество элементов в массиве words будет 6. а words[6] - это седьмой элемент массива
1
21 / 10 / 5
Регистрация: 07.01.2013
Сообщений: 222
26.04.2014, 12:49  [ТС] 10
Цитата Сообщение от valera_21 Посмотреть сообщение
а вообще, поставь точку останова выше места падения и глянь, сколько элементов в массиве words. если количество элементов меньше 7 - посмотри содержимое строки line, пройдись пошагово по методу добавления строк в lines, разберись, как она формируется и почему так.
Прошелся отладчиком. Вот что показывает: скриншоты ниже.

Как видно поле programming получает значение, а вот поле administration уходит в нулл, почему, не могу понять.

Уже перепробовал все что мог, ничего не помогает, крыша уже едет Выручайте, завтра нужно уже сдавать
0
Миниатюры
Описать класс "Студент" с полями фамилия, имя, отчество, группа, дата рождения   Описать класс "Студент" с полями фамилия, имя, отчество, группа, дата рождения  
21 / 10 / 5
Регистрация: 07.01.2013
Сообщений: 222
26.04.2014, 13:04  [ТС] 11
Если не ошибаюсь, то ошибка происходит по причине того, что в строке
C#
1
string[] programming = words[5].Split(',');
не срабатывает
C#
1
.Split(',')
и все значения записываются в string[] programming, и соответственно в других полях будет нулл. может из-за этого крах? Если да, то как решить сею дилемму?
0
656 / 526 / 137
Регистрация: 07.07.2011
Сообщений: 1,232
26.04.2014, 13:54 12
Аццкий Прогер, кидай весь проект в архиве.
1
21 / 10 / 5
Регистрация: 07.01.2013
Сообщений: 222
26.04.2014, 14:11  [ТС] 13
Цитата Сообщение от Дмитрий3241 Посмотреть сообщение
кидай весь проект в архиве.
Вот:
0
Вложения
Тип файла: 7z Ekzam.7z (36.7 Кб, 47 просмотров)
48 / 48 / 11
Регистрация: 13.08.2012
Сообщений: 97
26.04.2014, 14:52 14
В массиве у тебя шесть итемов, а ты обращаешься к седьмому
0
Миниатюры
Описать класс "Студент" с полями фамилия, имя, отчество, группа, дата рождения  
656 / 526 / 137
Регистрация: 07.07.2011
Сообщений: 1,232
26.04.2014, 14:55 15
Аццкий Прогер, у вас в файле нету 6 параметра, ну то есть он есть, но в программе это будет 5 так как нумерацию с нуля.

Добавлено через 53 секунды
Ниже по коду вы кстати еще и к 7 обратитесь, чего то же нету в файле.
0
21 / 10 / 5
Регистрация: 07.01.2013
Сообщений: 222
26.04.2014, 14:55  [ТС] 16
А как исправить?

были бы и другие, но я так понимаю, что сплит не срабатывает?
0
656 / 526 / 137
Регистрация: 07.07.2011
Сообщений: 1,232
26.04.2014, 14:56 17
Аццкий Прогер, добавить в файл еще 2 параметра через ;. Но все это зависит от того, что вы хотели сделать. Код сами этот писали? Или взяли где то?
0
21 / 10 / 5
Регистрация: 07.01.2013
Сообщений: 222
26.04.2014, 15:05  [ТС] 18
я просто не могу понять почему не срабатывает сплит в этой строке: programming = words[5].Split(',');




тогда в 5 элементе был бы 0, в 6 - 0 и в 7 тоже 0, а не три 0 в 5.

писал сам. а адаптеры по подсказкам знакомого, но видимо не все правильно понял.
0
48 / 48 / 11
Регистрация: 13.08.2012
Сообщений: 97
26.04.2014, 15:13 19
В этой строке все нормально
C#
1
string[] programming = words[5].Split(',');
Ошибка из-за того, что не существует Words[6]
C#
1
string[] administration = words[6].Split(',');
1
656 / 526 / 137
Регистрация: 07.07.2011
Сообщений: 1,232
26.04.2014, 15:26 20
Вот смотрите, у вас есть строка: "Иванов;Иван;Иванович;20-12-1986;a12;0,0,0;" вы ее разбиваете по ';' и результат пишите в words, получается в words у вас находятся такие строки:
[0] = Иванов
[1] = Иван
[2] = Иванович
[3] 20-12-1986
[4] = a12
[5] 0,0,0

Того имеем 6 элементов, далее вы пишите words[6] а его уже не существует, так как все что вам нужно находится на позиции [5], вам нужно еще раз поделить строку:
[5].Split(',')
И тогда вы получите следующие строки:
[5,0] = 0
[5,1] = 0
[5,2] = 0
Я так и предполагаю это и будут programming, design, administrator

Добавлено через 1 минуту
То есть писать вам надо так:
words[5].Split(',')[0] - programming
words[5].Split(',')[1] - administration
words[5].Split(',')[2] - design
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.04.2014, 15:26

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Описать класс "студенческая группа"
задание: описать класс &quot;студенческая группа&quot; в поиске нашел кое-что но объединить на форме не могу,...

Описать класс "студенческая группа"
Уважаемы господа!!! Помогите в написании программы. Описать класс ≪студенческая...

Описать класс "студенческая группа"
По заданию нужно Описать класс &quot;студенческая группа&quot;. Предусмотреть возможность работы с...

Описать класс "студенческая группа "
описать класс &quot;студенческая группа &quot;. предусмотреть возможность работы с переменным числом...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.