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

Страницы работы

Содержание работы

Задача №1.

ДАНО:          Список студентов группы, где о каждом известно следующее:

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

Пол

Адрес

ТРЕБУЕТСЯ:          Выбрать студентов мужского пола, которым исполнилось 18 лет.

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

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

РЕШЕНИЕ:

//include <stdio.h>

struct anketa         /* Объявление структуры нового типа (anketa), */

{ int num; int n;      /* описание полей (элементов) структуры       */

char Fam[20];

int dd,mm,yyyy;

char pol[2];

char address[40];

} M[30];          /* Объявление массива М, состоящего   */

/* из 30 элементов типа struct anketa */

main()

{ int key=0;

do  {  printf(“\n             Меню               ”);

printf(“\n         1 - Ввод               ”);

printf(“\n         2 - Вывод              ”);

printf(“\n         3 - Конец              ”);

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

scanf(“%d”,&key);

switch(key)

{ case 1: n=vvod(); break;   /* Обработка события выбора пункта меню- при */

case 2: vivod(n); break;   /* вводе номера пункта происходит выполнение */

case 3: break;                   /* ф-ции, указанной в соотв. операторе case  */

default: printf(“\n Неверный номер!”);

}

} while (key!=3);

printf(“\n Конец программы.”);

}

int vvod()

{ int i, n =0

printf(“\n Сколько анкет ввести?”);

scanf(“%d”, &n);

for(i=0,i<n;i++)

{ printf(“\n Ввод %d-ой анкеты”,i+1);

printf(“\n Num: ”);  scanf(“%d”,&M[i].num);

printf(“\n Fam: ”);  scanf(“%s”,&M[i].Fam);

printf(“\n Data rozhdeniya: ”); 

printf(“\n Day: ”);  scanf(“%d”,&M[i].dd);

printf(“\n Month: ”);  scanf(“%d”,&M[i].mm);

printf(“\n Year: ”);  scanf(“%d”,&M[i].yyyy);

printf(“\n Pol: ”);  scanf(“%s”,&M[i].pol);

printf(“\n Address: ”);  scanf(“%s”,&M[i].address);

}

return n;

}

void vivod(int n) { int i;

printf(“\n Список студентов- мужского пола, старше 18 лет    ”);

printf(“\n ------------------------------------------------- ”);

printf(“\n | Номер | | Дата рождения | Пол | Адрес | ”);

printf(“\n ------------------------------------------------- ”);

for(i=0,i<n;i++)

{ if((M[i].pol==’M’)&&((M[i].yyyy+18)>=2010))         /* Отбор по условию и     */

printf(“\n|%5d|%-20.19s|%2d.%2d.%4d|%3s|%40.40s|”,  /* печать данных студентов*/

M[i].num, M[i].Fam, M[i].dd, M[i].mm, M[i].yyyy, M[i].pol, M[i].address);

}

}

Задача №2

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

И.О.

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

Пол

Адрес

ТРЕБУЕТСЯ:            Разработать программу ввода, сохранения в файле и печати в табличном виде анкетных данных студентов с помощью средств языка С++

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

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

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

РЕШЕНИЕ:

//include <stdio.h>

//include <iostream.h>

//include <fstream.h>

//include <string.h>

char group[8]= “\0”; char otchet[10]= “Print.txt”;

struct anketa         /* Объявление структуры нового типа (anketa), */

{ int num; int n;       /* описание полей (элементов) структуры       */

char Fam[20];

int dd,mm,yyyy;

char pol[2];

char address[40];

friend istream& operator >> (istream& is, anketa &dan);

friend ofstream& operator << (ofstream& ofs, anketa &dan);

friend ostream& operator << (ostream& os, anketa &dan);

}

// Переопределение стандартной операции при помощи операторной функции

istream& operator >> (istream& is, anketa& dan)

{ cout << “\n Num:”; is>>dan.num;

cout << “\n Fam:”; is>>dan.Fam;

cout << “\n Data rozhdeniya:”;

cout << “\n Day:”; is>>dan.dd;

cout << “\n Month:”; is>>dan.mm;

cout << “\n Year:”; is>>dan.yyyy;

cout << “\n Pol:”; is>>dan.pol;

cout << “\n Address:”; is>>dan.address;

return is;

}

ostream& operator << (ostream& os, anketa& dan)

{ char str[80];                                  

sprintf(str, “\n|%5d|%20.20s|%2d.%2d.%4d|%3s|%40.40s|”,

dan.num, dan.Fam, dan.dd, dan.mm, dan.yyyy, dan.pol, dan.address);

str[79]= ‘\0’;

os<<str;

return os;

}

ofstream& operator << (ofstream& ofs, anketa& dan)

{ char str[80];

sprintf(str, “\n|%5d|%20.20s|%2d.%2d.%4d|%3s|%40.40s|”,

dan.num, dan.Fam, dan.dd, dan.mm, dan.yyyy, dan.pol, dan.address);

str[79]= ‘\0’;

ofs<<str;

Похожие материалы

Информация о работе

Предмет:
Базы данных
Тип:
Ответы на экзаменационные билеты
Размер файла:
538 Kb
Скачали:
0