Курсовая программирование. Пояснительная записка к курсовой работе по дисциплине Программирование 011. 00. 00 Пз
Скачать 0.66 Mb.
|
Продолжение таблицы 2
5 Алгоритмизация Функция main С помощью операторов выбора организуем меню с подменю, до тех пор, пока пользователь не выберет “выход”. Функция file_menu При выборе пользователем чтения файла: Читаем файлы, если не читается, то выдаем ошибку и заново вызываем функции file_menu; При чтении файла считываем инфорацию об экзаменах, потом кол-во данных, и сами данные студентов; При выборе пользователем создания файла: Записываем информацию об экзаменах. Функция main_menu "(0) Выход из программы. " "(1) Работа с файлом. " "(2) Работа с данными. " "(3) Информация. " Функция main_menu_file "(0) Назад. " "(1) Посмотреть информацию данного файла. " "(2) Открытие/создание нового файла. " "(3) Сохранение. " Функция print_data Печатаем данные об экзаменах; Печатаем данные студентов. Функция save Начинаем запись файла; Записываем кол-во экзаменов и их названия для 1-4 курса; Записываем кол-во данных; Записываем по очереди данные массива структуры студентов. Функция main_menu_data "(0) Назад. " "(1) Ввод данных. " "(2) Изменение данных. " "(3) Удаление данных. " "(4) Вывод списка группы. " "(5) Ведомости по курсам. " "(6) Поиск студента. " "(7) Сортировка. " Функция input_student С помощью copy_data копируем в буфер основной массив; Выделяем основному массиву новую памать, на один больше, чем до этого; Из буфера копируем в основной; На последнее место вводим данные нового студента. Функция change_student Выводим список студентов; Пользователь выбирает, какого студента необходимо изменить; Пользователь вводит новый значения для элемента массива структуры. Функция delete_student Выводим список студентов; Пользователь выбирает, какого студента необходимо удалить; С помощью copy_data копируем в буфер основной массив; Выделяем основному массиву новую память, на один меньше, чем до этого; Проходим весь буфер и копируем его элементы в основной массив, а элемент, который удаляем, пропускаем. Функция list_group Вводим группу; Выводим список студентов, подходящих под критерий. Функция bill_course Вводим курс; Выбираем повышенную или обычную стипендию; Выводим список студентов, подходящих под критерии. Функция search_student Вводим фамилию для поиска; Ищем количество совпадений; Если несколько совпадений, то просим пользователя выбрать про какого студента ему нужна информация; Выводим информацию о данном студенте. Функция sort_student Выбираем способ сортировки; Сортируем с помощью copy_sort методом пузырька. Функция main_menu_info "(0) Назад. " "(1) О программе. " "(2) Руководство пользователя. " "(3) Задание. " Функция about_prog Построчно считываем файл. Выводим строки на экран. Функция user_manual Построчно считываем файл. Выводим строки на экран. Функция task Построчно считываем файл. Выводим строки на экран. Функция exit Если данные изменялись, то спрашиваем пользователя о сохранении. Если пользователь выбирает сохранить файл, то вызываем save. Функция input_number Ввод числа; Проверка корректности; Возвращаем значение, если оно корректно. Функция copy_data Цикл от начала массива до конца; копируем структуру в другой массив. Функция copy_sort Копируем все данные структуры элемента массива в другой. 6 Таблица тестов Таблица 3 – тесты
7 Результаты тестирования Рисунок 1 – ошибка ввода Рисунок 2 – открытие несуществующего файла Рисунок 3 – чтение файла Рисунок 4 – добавление данных Рисунок 5 – изменение данных Рисунок 6 – удаление данных Рисунок 7 – сортировка 8 Результат работы программы Рисунок 1 – вывод списка группы с данными Рисунок 2 – вывод ведомости по 1 курсу на повышенную стипендию Рисунок 3 – поиск студента по фамилии 9 Код main.cpp #include "Functions.h" int point_menu; void main_menu() { // Основное меню system("cls"); cout << "Выберите действие: " << endl << "(0) Выход из программы. " << endl << "(1) Работа с файлом. " << endl << "(2) Работа с данными. " << endl << "(3) Информация. " << endl << "Ваш выбор: "; point_menu = input_number(0, 3, "Ошибка ввода! Повторите попытку: "); system("cls"); } void main_menu_file() { system("cls"); cout << "Выберите действие: " << endl << "(0) Назад. " << endl << "(1) Посмотреть информацию данного файла. " << endl << "(2) Открытие/создание нового файла. " << endl << "(3) Сохранение. " << endl << "Ваш выбор: "; point_menu = input_number(0, 3, "Ошибка ввода! Повторите попытку: "); system("cls"); } void main_menu_data() { system("cls"); cout << "Выберите действие: " << endl << "(0) Назад. " << endl << "(1) Ввод данных. " << endl << "(2) Изменение данных. " << endl << "(3) Удаление данных. " << endl << "(4) Вывод списка группы. " << endl << "(5) Ведомости по курсам. " << endl << "(6) Поиск студента. " << endl << "(7) Сортировка. " << endl << "Ваш выбор: "; point_menu = input_number(0, 7, "Ошибка ввода! Повторите попытку: "); system("cls"); } void main_menu_info() { system("cls"); cout << "Выберите действие: " << endl << "(0) Назад. " << endl << "(1) О программе. " << endl << "(2) Руководство пользователя. " << endl << "(3) Задание. " << endl << "Ваш выбор: "; point_menu = input_number(0, 3, "Ошибка ввода! Повторите попытку: "); system("cls"); } void main() { // Руссификация SetConsoleCP(1251); SetConsoleOutputCP(1251); int amount_data = 0; student* s = new student[amount_data]; exams* e = new exams[4]; file_menu(e, s, amount_data); main_menu(); while (point_menu != 0) { switch (point_menu) { case 1: main_menu_file(); while (point_menu != 0) { switch (point_menu) { case 1: print_data(e, s, amount_data); break; case 2: exit(e,s,amount_data); file_menu(e, s, amount_data); break; case 3: save(e, s, amount_data); break; } main_menu_file(); } break; case 2: main_menu_data(); while (point_menu != 0) { switch (point_menu) { case 1: input_student(e, s, amount_data); break; case 2: if (amount_data > 0) { change_student(e, s, amount_data); } else { cout << "Нет данных! " << endl << endl; } break; case 3: if (amount_data > 0) { delete_student(e, s, amount_data); } else { cout << "Нет данных! " << endl << endl; } break; case 4: if (amount_data > 0) { list_group(e, s, amount_data); } else { cout << "Нет данных! " << endl << endl; } break; case 5: if (amount_data > 0) { bill_course(e, s, amount_data); } else { cout << "Нет данных! " << endl << endl; } break; case 6: if (amount_data > 0) { search_student(e, s, amount_data); } else { cout << "Нет данных! " << endl << endl; } break; case 7: if (amount_data > 0) { sort_students(s, amount_data); } else { cout << "Нет данных! " << endl << endl; } break; } main_menu_data(); } break; case 3: main_menu_info(); while (point_menu != 0) { switch (point_menu) { case 1: about_prog(); break; case 2: user_manual(); break; case 3: task(); break; } main_menu_info(); } break; } main_menu(); } exit(e, s, amount_data); delete[] e; delete[] s; } Functions.h #pragma once #include #include #include #include using namespace std; struct exams { // Структура экзаменов int number_exams; string exam_1, exam_2, exam_3, exam_4; }; struct student { // Структура студентов string surname, name, patronymic; int course; string group; double assessment_1{}; double assessment_2{}; double assessment_3{}; double assessment_4{}; double average_assessment; }; // Прототипы функции void file_menu(exams* (&e), student* (&s), int& n); // Меню открытия/создания файла void print_data(exams* e, student* s, int n); // Данные файла int input_number(int min_value, int max_value, string error); // Проверка ввода void input_student(exams* (&e), student* (&s), int& n); // Ввод данных студентов void change_student(exams* (&e), student* (&s), int n); // Изменение данных студентов void delete_student(exams* (&e), student* (&s), int& n); // Удаление данных студентов void list_group(exams* e, student* s, int n); // Вывод списка группы void bill_course(exams* e, student* s, int n); // Ведомость по курсам void search_student(exams* e, student* s, int n); // Поиск студента void sort_students(student* s, int n); // Сортировка void save(exams* e, student* s, int n); // Сохранение void about_prog(); // О программе void user_manual(); // Руководство пользователя void task(); // Задание void copy_data(student* (&s_n), student* (&s_o), int n); // Копирование для удаления/добавления void copy_sort(student& s_n, student& s_o); // Копирование для сортировки void exit(exams* e, student* s, int n); // Проверка сохранения при выходе |