#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
struct student
{
char fam[15]; // фамилиия студента
char prname[10]; // имя предмета
int oc;// оценка
int N;
};
void myMenu()
{
cout << "\n1 - Исходный список студентов." << endl;
cout << "2 - Занести оценки по предметам." << endl;
cout << "3 - Добавьте новую фамилию в список студентов." << endl;
cout << "4 - Исключить фамилию студета из списка." << endl;
cout << "5 - Сохранить." << endl;
cout << "0 - Выход." << endl;
cout << "----------------" << endl;
cout << "Выберите пункт: ";
return;
}
void Table(student* Table, int size) {
int i;
cout << " N | Студенты | Предметы | " << endl;
cout << "---------------------------------------" << endl;
for (i = 0; i < size; i++) {
cout << " " << setw(3) << Table.N << " | " << setw(15) << Table.fam << setw(15) << Table.prname << " | "<<endl;
}
cout << endl << "Для продолжения нажмите Enter.";
_getch();
return;
}
int main()
{
student* st;
char path[256];
int n = 1;
int tint, i;
ifstream f;
setlocale(LC_ALL,"Rus");
cout << "Введите имя файла (quit - выйти) : ";
while (true) {
cin >> path;
if (!strcmp(path,"quit")) return 0;
f.open(path);
if (f.fail()) cout << endl << "Файл '" << path << "' не найден." << endl << "Введите имя файла (quit - выйти) : ";
else break;
}
bool b=0;
char strline[_MAX_PATH];
do
{
f.getline(strline,_MAX_PATH);
for (int i=0;i<_MAX_PATH;i++)
if ((strline!=' ')&&(strline!='\t')) b=1;
if (b)
n++;
}
while (!f.eof());
st = (student*)malloc(n*sizeof(student)); //выделили память точно под количество cтудентов в таблице
if (!st)
{ cout << endl << "Ошибка выделения памяти!" << endl; _getch(); free(st); return -1; }
f.seekg(0, ios::beg);//возвращам курсор в начало файла
for (i = 0; i < n; i++)
{
f >> st.N>>st.fam // фамилии
>>st.prname; // предметы студентов; //читаем из файла порядковые номера студентов
}
f.close();
cout << endl << "Данные успешно загружены из файла. Для продолжения нажмите Enter";
_getch();
while (true) {
myMenu();
cin >> tint;
switch(tint)
{
case 0:
{
free(st);
return 0;
}
case 1:
{
Table(st, n);
break;
}
}
free(st);
return 0;
}
}
БД Студенты
Вопрос как вывести исходный список студентов и предметов на экран с использованием таблицы. Вот как понял фамилии и имена предметов все это матрица.
с этим кодом выводится хреново, в разброс .
Код: