Форум программистов, компьютерный форум CyberForum.ru

Создание структуры Список студентов - C++

Восстановить пароль Регистрация
 
Nansy17
0 / 0 / 0
Регистрация: 30.09.2013
Сообщений: 12
10.11.2013, 20:28     Создание структуры Список студентов #1
Нужна помощь. Есть в методичке пример создания Ведомости студентов. Код:
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
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
 
FILE *fl;
typedef struct
{
char fio[30];
unsigned char matem;
unsigned char oaip;
} TStudent;
TStudent stud[30];
char name[20]; // Имя файла
int nst = 0; // Число введенных структур
int Menu(); // Создание меню
void Nnf(); // Ввод имени файла
void Newf(); // Создание нового файла
void Spisok(); // Формирование файла
void Opf(); // Открытие файла
void Resc(); // Вывод результата на экран
void Resf();
int main()
{
while (true)
{
switch (Menu())
{
case 1: Nnf(); break;
case 2: Newf(); break;
case 3: Spisok(); break;
case 4: Opf(); break;
case 5: Resc(); break;
case 6: Resf(); break;
case 7: return 0;
default: puts("Viberite pravilno!");
}
puts ("Press any key to continue");
getch (); // Ожидание нажатия любой клавиши
system ("cls"); // Очистка экрана
}
}
 
int Menu() // Меню
{
cout << "VIBERITE:" << endl;
cout << "1. Vvod file name" << endl;
cout << "2. New file" << endl;
cout << "3. Vvesti spisok" << endl;
cout << "4. Open file" << endl;
cout << "5. Vivesti result" << endl;
cout << "6. Vivesti v fail" << endl;
cout << "7. Exit" << endl;
int i;
cin >> i; // Ввод выбранного пункта меню
return i;
}
void Nnf() // Ввод имени файла
{
cout << "Vvedite file name" << endl;
cin >> name;
}
void Newf() // Создание нового файла
{
    if ((fl = fopen(name,"wb")) == NULL)
{
cout << "Oshibka pri sozdanii" << endl;
exit(1);
}
cout << "OK" << endl;
fclose(fl);
}
void Spisok() // Ввод данных в файла
{
if ((fl = fopen(name,"rb+")) == NULL)
{
cout << "Oshibka pri sozdanii" << endl;
exit(1);
}
cout << "Vvedite chislo studentov" << endl;
cin >> nst;
for (int i=0; i<nst; i++)
{
cout << "Vvedite imya: ";
cin >> stud[i].fio;
cout << "Vvedite otcenku po matematike: ";
cin >> stud[i].matem;
cout << "Vvedite otcenku po OAiP: ";
cin >> stud[i].oaip;
fwrite (&stud[i], sizeof(TStudent), 1, fl);
}
fclose (fl);
}
void Opf() // Открытие бинарного файла
{
if ((fl = fopen (name,"rb")) == NULL)
{
cout << "Oshibka pri otkritii" << endl;
exit(1);
}
nst = 0;
TStudent std;
while (true)
{
    int nwrt = fread (&std, sizeof(TStudent), 1, fl);
if (nwrt != 1) break;
stud[nst] = std;
cout << stud[nst].fio << " " << stud[nst].matem << " "
<< stud[nst].oaip << endl;
nst++;
}
fclose(fl);
}
void Resc() // Вывод результата на экран
{
for (int i=0; i<nst; i++)
if (stud[i].oaip == '9')
cout << stud[i].fio << endl;
}
void Resf() // Вывод результата в текстовый файл
{
char namet[30];
FILE *ft;
cout << "Vvedite imya faila" << endl;
cin >> namet;
if ((ft = fopen (namet,"w")) == NULL)
{
cout << "Oshibka pri sozdanii" << endl;
exit(1);
}
char s[80];
for (int i=0; i<nst; i++)
if (stud[i].oaip == '9')
{
strcpy (s, stud[i].fio);
strcat (s, "\n"); // Добавление разделителя строк
fputs (s, ft);
}
fclose(ft);
}
Почему при нажатии 2 или 3 я ничего не могу сделать. Может предварительно создается какой-то текстовый файл, который подгружается программой? Не могу понять, что сделать надо.

Добавлено через 2 минуты
Мое задание звучит так:
Составить программу формирования файла, содержащего Ведомость студентов, сдававших сессию, содержит ФИО и оценки по четырем предметам. Вывести список студентов, сдавших сессию со средним
баллом больше 7.В программе предусмотреть сохранение вводимых данных в файле и возможность чтения из ранее сохраненного файла. Вывести результаты на экран и в текстовой файл.

Добавлено через 29 минут
HELP!!!

Добавлено через 32 минуты
Ну помогите, пожалуйста
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.11.2013, 20:28     Создание структуры Список студентов
Посмотрите здесь:

Структуры: Списки студентов C++
C++ Структуры. Вывести фамилии студентов.
C++ Структуры: Вывести список из 10 студентов с наибольшим количеством пропусков
C++ Структуры: На основе данных входного файла составить список студентов
Структуры. Составить список студентов в произвольной последовательности, а вывести на экран по группам C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
10.11.2013, 21:16     Создание структуры Список студентов #2
Цитата Сообщение от Nansy17 Посмотреть сообщение
Почему при нажатии 2 или 3 я ничего не могу сделать.
Сначала нажать 1 и ввести имя создаваемого файла.
Nansy17
0 / 0 / 0
Регистрация: 30.09.2013
Сообщений: 12
10.11.2013, 22:04  [ТС]     Создание структуры Список студентов #3
С этим вопросом разобралась, необходимо было подключить ещё 1 библиотеку #include <io.h>.
Остяется вопрос, какую часть кода заменить на код с
Цитата Сообщение от Nansy17 Посмотреть сообщение
Вывести список студентов, сдавших сессию со средним
баллом больше 7
И как прописать код к этому условию.
Nansy17
0 / 0 / 0
Регистрация: 30.09.2013
Сообщений: 12
11.11.2013, 22:28  [ТС]     Создание структуры Список студентов #4
Цитата Сообщение от Nansy17 Посмотреть сообщение
Вывести список студентов, сдавших сессию со средним
баллом больше 7
Помогите!!!
Yandex
Объявления
11.11.2013, 22:28     Создание структуры Список студентов
Ответ Создать тему
Опции темы

Текущее время: 11:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru