Разработка программы, обеспечивающую с помощью средств языка С++ ввод анкетных данных студентов и вывод в табличном виде списка студентов, отобранных по заданному условию, страница 2

return ofs;

}

main()

{ int key=0;

do  {  cout << “\n             Меню               ”;

cout << “\n         1 - Ввод               ”;

cout << “\n         2 - Вывод              ”;

cout << “\n         3 - Конец              ”;

cout << “\n  Введите номер пункта меню:    ”;

cin >> key;

switch(key)

{  case 1: cout << “\n Введите группу”; /* Обработка события выбора пункта */

cin >> group;                /* меню- при вводе номера пункта   */

vvod(); break;               /* происходит выполнение функции,  */

case 2: vivod(n); break;             /* указанной в соотв. операт. case */

case 3: break;            

default: cout << “\n Неверный номер!”;

}

} while (key!=3);

cout << “\n Конец программы.”;

}

vvod()

{ int i, n =0

struct anketa A;

cout << “\n Сколько анкет ввести? ”;

cin >> n;

ofstream fout;                        // Создание 1 потока с именем fout для вывода

fout.open(group, ios::out|ios::app);  /* Связывание потока с файлом (group) и */

for(i=0;i<n;i++)                    /* определение режимов работы с ним     */

{ cout << “\n Ввод ” << i+1 << “-ой анкеты”;

cin >> A;

fout.write((char*)&A,sizeof(struct anketa)); /* Вставка записи размером struct */

/* anketa в из области памяти по  */

/* указат. &A в поток вывода fout */

} fout.close();                       // Закрытие потока, разрыв связи с файлом

}

void vivod() { struct anketa A;

ofstream fout(otchet,ios::out);

fout << “список студентов группы ” << group;

ifstream fin;

fin.open(group, ios::binary);

while(!fin.read((char*)&A, sizeof(struct anketa)).eof())

{ fout<< A;

}

fout.close();}

\

Задача №3

ДАНО:            Файл, имя которого совпадает с названием группы, предназначен для хранения анкетных данных студентов и имеет следующую структуру:

Фамилия И.О.

Дата Рождения

Пол

Адрес

ТРЕБУЕТСЯ:            По этим данным создать и распечатать экзаменационную ведомость в виде таблицы со следующей структурой строки:

Фамилия И.О.

Оценка

Дата

Подпись преподавателя

ОГРАНИЧЕНИЯ:

·  разработать программу подготовки экзаменационных ведомостей на языке С++;

·  ввод, вывод и работу с файлами организовать через потоки;

·  разработать операторную функцию для вывода на печать строки таблицы 2;

·  при подготовке экзаменационной ведомости использовать списковые структуры типа очередь.

РЕШЕНИЕ:

//include <stdio.h>

//include <string.h>

//include <iostream.h>

//include <fstream.h>

struct student

{int num;

char FIO[20];

int dd,mm,yyyy;

char pol[2];

char adr[40];

//istream& operator >>(istream& is,student& dan);

//ofstream& operator <<(ofstream&ofs,student& dan);

};

struct vedomost

{int num;

char FIO[20];

char ocenka[10];

chat data[10];

char podpis [20];

ofstream& operator <<(ofstream&ofs,vedomost&sv);

};

ofstream operator<<(ofstream&ofs,vedomost&sv)

{char probel[20]=”____________________”;

char str[80];

sprintf(str,”\n |%5d|%-20.20S|%10.10S|%10.10S|%20.20S|”, sv.num,sv.FIO,probel,probel,probel);

ofs <<str;

return ofs;}

struct ELIST {struct student s;               описание

struct ELIST *next; };        списковой структуры

#define line “\n______________________________________ _”

#define shapka “\n |Номер| Фамилия| оценка | Дата | Подпись|”

#define zag “\n Экзаменационная ведомость группы”

char group[10];

struct ELIST *head=Ø ,*ref=Ø, *last=Ø;

void main ()

{ int key;

do {cout << “\n   МЕНЮ “

<< “\n               “

<< “\n 1-открытие базы данных “

<< “\n 2-распечатать БД “

<< “\n 3- распечатать ведомость“

<< “\n 4- Выход“ ;

cout <<” \n Введите пункт меню: “;

cin >>key;

switch (key)

{case 1: BDOpen(); break;

case 2: BDprint(); break;