Главная страница

Курсовая программирование. Пояснительная записка к курсовой работе по дисциплине Программирование 011. 00. 00 Пз


Скачать 0.66 Mb.
НазваниеПояснительная записка к курсовой работе по дисциплине Программирование 011. 00. 00 Пз
Дата28.02.2023
Размер0.66 Mb.
Формат файлаdocx
Имя файлаКурсовая программирование.docx
ТипПояснительная записка
#959489
страница4 из 5
1   2   3   4   5

Продолжение таблицы 2


15

main_menu_info

Меню работы с информацией





16

about_prog

Вывод на экран “О программе”





17

user_manual

Вывод на экран “Руководство пользователя”





18

task

Вывод на экран “Задание”





19

exit

Проверка сохранения файла при закрытие



exams* e, student* s, int n

20

input_number

Проверка корректного ввода

int

int min_value, int max_value, string error

21

copy_data

Копирование данных с одного массива в другой



student* (&s_n), student* (&s_o), int n

22

copy_sort

Копирование данных студента



student& s_n, student& s_o

5 Алгоритмизация

Функция main

  1. С помощью операторов выбора организуем меню с подменю, до тех пор, пока пользователь не выберет “выход”.

Функция file_menu

  1. При выборе пользователем чтения файла:

    1. Читаем файлы, если не читается, то выдаем ошибку и заново вызываем функции file_menu;

    2. При чтении файла считываем инфорацию об экзаменах, потом кол-во данных, и сами данные студентов;

  2. При выборе пользователем создания файла:

    1. Записываем информацию об экзаменах.

Функция main_menu

  1. "(0) Выход из программы. "

  2. "(1) Работа с файлом. "

  3. "(2) Работа с данными. "

  4. "(3) Информация. "

Функция main_menu_file

  1. "(0) Назад. "

  2. "(1) Посмотреть информацию данного файла. "

  3. "(2) Открытие/создание нового файла. "

  4. "(3) Сохранение. "

Функция print_data

  1. Печатаем данные об экзаменах;

  2. Печатаем данные студентов.

Функция save

  1. Начинаем запись файла;

  2. Записываем кол-во экзаменов и их названия для 1-4 курса;

  3. Записываем кол-во данных;

  4. Записываем по очереди данные массива структуры студентов.

Функция main_menu_data

  1. "(0) Назад. "

  2. "(1) Ввод данных. "

  3. "(2) Изменение данных. "

  4. "(3) Удаление данных. "

  5. "(4) Вывод списка группы. "

  6. "(5) Ведомости по курсам. "

  7. "(6) Поиск студента. "

  8. "(7) Сортировка. "

Функция input_student

  1. С помощью copy_data копируем в буфер основной массив;

  2. Выделяем основному массиву новую памать, на один больше, чем до этого;

  3. Из буфера копируем в основной;

  4. На последнее место вводим данные нового студента.

Функция change_student

  1. Выводим список студентов;

  2. Пользователь выбирает, какого студента необходимо изменить;

  3. Пользователь вводит новый значения для элемента массива структуры.

Функция delete_student

  1. Выводим список студентов;

  2. Пользователь выбирает, какого студента необходимо удалить;

  3. С помощью copy_data копируем в буфер основной массив;

  4. Выделяем основному массиву новую память, на один меньше, чем до этого;

  5. Проходим весь буфер и копируем его элементы в основной массив, а элемент, который удаляем, пропускаем.

Функция list_group

  1. Вводим группу;

  2. Выводим список студентов, подходящих под критерий.

Функция bill_course

  1. Вводим курс;

  2. Выбираем повышенную или обычную стипендию;

  3. Выводим список студентов, подходящих под критерии.

Функция search_student

  1. Вводим фамилию для поиска;

  2. Ищем количество совпадений;

  3. Если несколько совпадений, то просим пользователя выбрать про какого студента ему нужна информация;

  4. Выводим информацию о данном студенте.

Функция sort_student

  1. Выбираем способ сортировки;

  2. Сортируем с помощью copy_sort методом пузырька.

Функция main_menu_info

  1. "(0) Назад. "

  2. "(1) О программе. "

  3. "(2) Руководство пользователя. "

  4. "(3) Задание. "

Функция about_prog

  1. Построчно считываем файл.

  2. Выводим строки на экран.

Функция user_manual

  1. Построчно считываем файл.

  2. Выводим строки на экран.

Функция task

  1. Построчно считываем файл.

  2. Выводим строки на экран.

Функция exit

  1. Если данные изменялись, то спрашиваем пользователя о сохранении.

  2. Если пользователь выбирает сохранить файл, то вызываем save.

Функция input_number

  1. Ввод числа;

  2. Проверка корректности;

  3. Возвращаем значение, если оно корректно.

Функция copy_data

  1. Цикл от начала массива до конца;

  2. копируем структуру в другой массив.

Функция copy_sort

  1. Копируем все данные структуры элемента массива в другой.

6 Таблица тестов

Таблица 3 – тесты



Тестируемый модуль

Результат

Примечание

Некорректный ввод

1

input_number

Рисунок 2.

Принимаются значения 1 и 2 в данном меню

2

file_menu

Рисунок 3.

Был введен файл 2000.txt, которого не существует.

Корректный ввод

1

file_menu

Рисунок 4.

Файл был считан. Введённые данные проверим с помощью модуля print_data.

2

input_student

Рисунок 5.

Введём данные к данным на рисунке 4: Петров Иван Алексеевич, 2 курс, АСУб-19-2, 5.

Изменённые данные проверим с помощью модуля print_data.

3

change_student

Рисунок 6.

Изменим данные с рисунка 5 4-ого студента на: Петров Иван Алексеевич, 1 курс, АСУб-20-1, 5, 5, 5.

Изменённые данные проверим с помощью модуля print_data.

4

delete_student

Рисунок 7.

Удалим данные №1 с рисунка 6. Изменённые данные проверим с помощью модуля print_data.

5

sort_students

Рисунок 8.

Сделаем сортировку данных с рисунка 7 по фамилии. Изменённые данные проверим с помощью модуля print_data.

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); // Проверка сохранения при выходе
1   2   3   4   5


написать администратору сайта