Вид формы в режиме проектирования показа на рисунке 3.

Рис. 3. Вид формы «О программе и авторе» в режиме проектирования
2.2 Написание программных модулей
После проектирования интерфейса пользователя приступаем к написанию программных функций на языке C++ в программном модуле главной формы приложения. Каждая функция является обработчиком соответствующего события и является методом соответствующего объекта.
Таким образом, для работы программы создаем обработчики следующих событий:
Ø FormCreate (создание формы) – выполняется формирование заголовков столбцов таблиц.
Ø N6Click (пункт меню «Создать») – выполняется очистка таблиц от текущего содержимого, количество строк обеих таблиц устанавливается в значение 2.
Ø N4Click (пункт меню «Открыть») – выполняется открытие файла с данными, их чтение, преобразование в текстовый формат и размещение в ячейках верхней таблицы, после этого выполняется закрытие файла и вывод сообщения, что данные успешно прочитаны из файла.
Ø N5Click (пункт меню «Сохранить») – выполняется перечет средних баллов, открытие файла для записи данных, чтение данных из ячеек верхней таблицы, их преобразование в соответствующий тип, контроль корректности данных (вывод соответствующего сообщения и прерывание процесса в случае обнаружения некорректности данных) и запись в файл, после этого выполняется закрытие файла и вывод сообщения, что данные успешно записаны в файл.
Ø N10Click (пункт меню «Выход») – выполняется закрытие главной формы и выход из программы.
Ø N8Click (пункт меню «Вычислить») – для каждой записи выполняется вычисление среднего балла за три экзамена и общего среднего балла между баллами за экзамены и баллом аттестата.
Ø N16Click (пункт меню «Поиск по городу») – выполняется выборка данных из верхней таблицы по наличию строки из компонента Edit1 (название города) в поле «Адрес» и вывод найденных строк в нижнюю таблицу, подсчитывается и выводится в компонент Label4 найденное количество записей.
Ø N11Click (пункт меню «Поиск по ср. баллу за экз.») – выполняется выборка данных из верхней таблицы, если значение поля «Средний балл за экзамены» больше либо равно значения, прочитанного из компонента Edit2 и вывод найденных строк в нижнюю таблицу, подсчитывается и выводится в компонент Label4 найденное количество записей.
Ø N2Click (пункт меню «Сортировка по общему ср. баллу») – выполняется сортировка данных верхней таблицы в порядке убывания общего среднего балла, сортировка выполняется пузырьковым методом, описанным в пункте 1.3.
Ø N13Click (пункт меню «Добавить строку») – выполняется добавление строки в верхнюю таблицу.
Ø N14Click (пункт меню «Удалить строку») – выполняется удаление текущей строки верхней таблицы.
Ø N12Click (пункт меню «Справка») – выполняется открытие формы «О программе и авторе» в модальном режиме.
Полные тексты обработчиков на языке C++ с комментариями распечатаны в Приложении.
Для второй формы «О программе и авторе» написание обработчиков не требуется.
2.3 Результаты тестирования программы
Для тестирования программы подготовили тестовые данные. Они вводятся в верхнюю таблицу и по команде меню Сохранить записываются в двоичный файл. Перед записью данных из таблицы в файл выполняется команда Вычислить, для вычисления средних баллов. Если во время записи в таблице будут обнаружены некорректные данные (пустые ячейки, или текст вместо чисел), то будет выдано соответствующее сообщение (см. рис. 4). Имя файла с тестовыми данными spisok. dat.

Рис. 4. Сообщение о некорректности данных в таблице
По команде меню Создать таблица с данными очищается.
По команде меню Открыть данные читаются из файла и отображаются в верхней таблице (см. рис. 5).
На рисунке видим, что вычисление средних баллов за экзамены и общего среднего балла выполняется правильно. Так для первой строки средний балл за экзамены равен: (6+8+4)/3 = 6,00; общий средний балл равен: (5,25+6,00) = 5,63.

Рис. 5. Тестовые данные в таблице
Протестируем поиск данных по заданному городу. Для этого введем в поле для ввода города: «Лида» и выполним команду Поиск по городу. Результат выборки показан на рис. 6. Отметим, что программа ищет не полное совпадение строк, а вхождение введенного значения «Лида» в поле «Адрес». Как видим из рисунка, выборка выполнилась правильно.
Протестируем поиск данных по среднему баллу за экзамен. Для этого введем в поле для ввода среднего балл: «7,00» и выполним команду Поиск по ср. баллу за экзамен. Результат выборки показан на рис. 7. Отметим, что программа ищет записи со значением поля «Средний балл за экзамены» >= введенного значения «7,00». Как видим из рисунка, выборка выполнилась правильно.
Протестируем сортировку данных в порядке убывания общего среднего балла. Для этого выполним команду Сортировка по общему ср. баллу. Результат сортировки показан на рис. 8. Как видим, операция выполнилась правильно.

Рис. 6. Результат поиска по городу «Лида»

Рис. 7. Результат поиска по «Средний балл за экзамены >=7,00»

Рис. 8. Результат сортировки в порядке убывания общего среднего балла
Таким образом, тестирование программы показало, что она работает правильно.
ЗАКЛЮЧЕНИЕ
В результате выполнения курсовой работы обобщены знания по управляющим операторам языка C++; получены практические навыки программирования задач с использованием записей и файлов в среде C++Builder.
Выполнены следующие действия:
1) постановка задачи в формализованном виде;
2) построение алгоритма решения задачи;
3) реализация алгоритма на ПК путем создания программы в среде C++Builder;
4) тестирование и отладка программы;
5) анализ полученных данных и формулировка выводов;
6) создание и оформление пояснительной записки.
Задание на курсовую работу выполнено в полном объеме.
CПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ
1. Березин, курс С и С++ / , . – М.: Диалог – МРТИ, 1999.
2. Демидович, алгоритмизации и программирования. Язык СИ / . – Минск : Бестпринт, 2001.
3. Керниган, Б. Язык программирования СИ / Б. Керниган, Д. Ритчи. – М.: Финансы и статистика, 1992.
4. Касаткин, программирование на языке СИ: от Турбо-С до Borland С++ / , : Справочное пособие. Минск : Выш. шк., 1992.
5. Страуструп, Б. Язык программирования C++ / Б. Страуструп: 2-е изд.: В 2 т. – Киев: ДиаСофт, 1993.
6. Больски, программирования СИ / : Справочник. – М.: Радио и связь. 1988.
7. Архангельский, в С++ Builder 6 / . – М.: ЗАО “Издательство БИНОМ”, 2002.
8. Юлин, к СИ / , . – Минск : Высш. шк., 1990.
9. Шилд, Г. Программирование на Borland С++ / Г. Шилд. – Минск : ПОПУРРИ, 1999.
10. Тимофеев, в среде С++ Builder 5 / . – М.: БИНОМ, 2000.
ПРИЛОЖЕНИЕ. ТЕКСТ ПРОГРАММНЫХ МОДУЛЕЙ
Модуль главной формы Unit1.cpp
//---------------------------------------------------------------------------
#include <vcl. h>
#pragma hdrstop
#include "Unit1.h"
#include <stdio. h>
#include <io. h>
#include <string. h>
#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//Структура записи:
struct sved {
int namber; //Порядковый номер.
char FIO[20]; //ФИО абитуриента.
char adres[30]; //Адрес.
int matem; //Оценка по математике.
int fizika; //Оценка по физике.
int lang; //Оценка по языку.
float sb_attestat;//Средний балл аттестата.
float sb_examen; //Средний балл по 3-м экзаменам (вычисляется).
float sredball; //Общий средний бал (вычисляется).
};
int size=sizeof(sved); //размер в байтах одной структуры (записи).
//Переменная - структуры:
struct sved sprav;
//Указатель на файл:
FILE *f;
//Имя файла:
AnsiString File_Zap;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N10Click(TObject *Sender)
{
//Выход:
Close();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
//Начальные действия при сосдании формы:
//Формирование заголовков столбцов:
StringGrid1->Cells[0][0]=" № п/п";
StringGrid2->Cells[0][0]=" № п/п";
StringGrid1->Cells[0][1]="1";
StringGrid2->Cells[0][1]="1";
StringGrid1->Cells[1][0]="ФИО";
StringGrid2->Cells[1][0]="ФИО";
StringGrid1->Cells[2][0]="Адрес";
StringGrid2->Cells[2][0]="Адрес";
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 |


