Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
25
Добавлен:
12.02.2018
Размер:
135.08 Кб
Скачать
  1. Способ реализации с файловым вводом/выводом

Подключены библиотеки fstream и windows.h, ctime. Первая используется для создания переменных типа ofstream (вывод в файл; если файла не существует, то он создается) и ifstream (считывание с файла). Отчеты сохраняются только в текстовый файл (.txt), база данных еще и в бинарный (.bin). Файлы имеют имена следующего вида:

<Тип отчета> <Дата> <Время>.<Расширение>

Тип может принимать значения:

  • DB – База данных;

  • AG – Среднее значение потока;

  • EP – Отличники потока;

  • HTTAG – Студенты, у которых средний балл выше среднего балла потока.

Например, DB May 6 2016 12:34:00.txt

Windows.h позволяет находить в какой-либо папке файлы с именами, подходящие критерию, который необходим разработчику.

Например:

file = FindFirstFile("./*.txt", &f);

//Находит в каталоге программы первый файл с расширением .txt

if (file != INVALID_HANDLE_VALUE) //Если такой файл найден, то

{

do

{

std::cout << " " << f.cFileName << std::endl;

//Выводим его имя в консоль

} while (FindNextFile(file, &f));

//Ищем следующий файл, удовлетворяющий условию

}

Текстовый вывод на примере создания отчета о среднем значении потока:

std::string type, date, time; //Используются для имени файла

type = "AG ";

date = __DATE__;

date += " ";

time = __TIME__;

type += date;

type += time;

std::string fdate = type + ".txt";

std::ofstream fout(fdate.c_str());

fout << "The average grade of feed: ";

fout << "\n" << aver; //Вывод значения в файл

fout.close(); //Закрытие файла

Бинарный вывод:

std::string bdate = type + ".bin"; //Имя файла

std::ofstream bout(bdate.c_str(), std::ios::binary | std::ios::out);

//Открытие/создание для бинарного ввода

bout.write((char*)p, sizeof(Group)); //Пример записи целой структуры

bout.write((char*)&t->name, sizeof(t->name)); //Запись поля структуры

Ввод выполняет аналогично, только вместо fout<< -> fin >>, bout.write(…) -> bin.read(…), где fout/fin, bout/bin имена переменных.

  1. Блок-схемы построения отчетов

Все три отчета строятся по похоже алгоритму, только в функция нахождения среднего балла потока не ссылается на другие функции. Блок-схема нахождения среднего арифметического балла:

  1. Интерфейс программы

Интерфейс программы выполнен в стиле «user friendly», т.е. при работе с программой пользователь знает с чем работает.

Перемещение в меню осуществляется с помощью стрелок на клавиатуре, выбор пункта – нажатием Enter. Ввода пунктов меню от пользователя не требуется.

Максимальный уровень меню 4. Основное меню состоит из 5 пунктов:

  • Feed – для работы с потоком;

  • Group – для работы с группами;

  • Student – для работы со студентами;

  • DataBase – для работы с базой данных в целом;

  • Exit – выход из программы.

Добавление первой группы в БД

Перемещение по списку групп

Контроль ввода

Еще примеры работы программы:

  1. Особенности

  • Проверка оценок на принадлежность к диапазону от 2 до 5;

  • Проверка введенных значений на принадлежность к целым числам, если происходит ввод для целочисленной переменной;

  • Проверка при добавлении студента на существование студента с таким же номером студенческого билета;

  • Сортировка студентов и групп по возрастанию при добавлении;

  • Перемещение в меню с помощью стрелок, выбор пункта меню нажатием Enter;

  • Поиск и вывод файлов в виде списка для загрузки БД;

  • Вывод списка групп и списка студентов также для выбора с помощью стрелок.

Соседние файлы в папке Спиридонов. Курсовая 2 семестр. Список групп, потока