Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Программирование на С++ в среде разработки Qt Creator. Учебно-методическое пособие

.pdf
Скачиваний:
0
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
☆
71
Таблица 10 - Ссуды, выданные банками
Название
банка
Выданные ссуды, тыс. руб.
2015
2016
2017
2018
2019
Гамма:Банк
2
35 570
12
...
.
...
...
...
...
Таблица 11 - Продажа путевок
Страна
Цена
путевки,
долл.
Количество проданных путевок
Апрель
Май
Июнь
Июль
Август
Сентябрь Греция
546
7
120
150
158
160
130
...
... ............
Таблица 12 - Добыча угля
Номер
бригады
Цена за
тонну
Добыча угля в смену, т
Понедельник
Вторник
Среда
Четверг
Пятница
1
198
50
40,5
36,2
48
33,5
...
...
...
...
...
...
.
Таблица 13 - Закупка чая
Тип чая
Форма
упаковки
Производит
ель
Цена, грн.
Количество
Сумма
Зеленый
Пачка
Riston
5,8
50
Черный
Пакетики
Edwin
4,7
23
Красный
Пакетики
Dilmah
6,9
56
Желтый
Пакетики
Edwin
4,4
32
Черный
Пачка
Ahmad
3,9
89
Желтый
Жесть
Dilmah
20,1
23
Черный
Фарфор
Edwin
25,4
76
...
...
...
...
...
..
Всего:
72
Таблица 14 - Варианты заданий
Вариант
Условие задачи
I
Текстовый файл содержит информацию о перенесенных инфекционных заболеваниях учащимися средней школы (табл. 7) .
Используя данные этого файла рассчитать «Среднюю заболеваемость за полугодие».
2
Текстовый файл содержит информацию о перенесенных инфекционных заболеваниях учащимися средней школы (табл. 7).
Используя данные этого файла найти «Минимальную заболеваемость за полугодие».
3
Текстовый файл содержит информацию, приведенную в табл.
8. Используя данные этого файла найти «Средний прирост
населения».
4
Текстовый файл содержит информацию, приведенную в табл. 8. Используя данные этого файла найти «Максимальный прирост населения».
5
Текстовый файл содержит информацию об успеваемости студентов некоторого факультета за все время обучения (табл.
9). Используя данные этого файла найти «Среднюю успеваемость».
6
Текстовый файл содержит информацию об успеваемости
студентов некоторого факультета за все время обучения (табл. 9). Используя данные этого файла найти студента с минимальным средним баллом.
7
Текстовый файл с информацией, приведенной в табл. 10.
Используя данные этого файла рассчитать «Общую сумму ссуд, выданных каждым банком».
8
Текстовый файл с информацией, приведенной в табл. 10. Используя данные этого файла найти информацию о банках с общей суммой ссуд менее 100 тыс.
9
Текстовый файл содержит информацию о продаже путевок некоторой туристической фирмой (табл. 11). Используя данные этого файла найти «Продано путевок на сумму». Вывести на экран информацию о странах, в которые продано больше всего путевок.
73
10
Текстовый файл содержит информацию о продаже путевок некоторой туристической фирмой (табл. 11). Используя данные этого файла найти информацию о странах, в которые продано больше всего путевок.
11
Текстовый файл содержит информацию о продаже путевок некоторой туристической фирмой (табл. 11). Используя данные этого файла найти «Среднее количество проданных путевок» в каждую страну.
12
Текстовый файл содержит информацию о каждом клиенте сберкассы:
• номер сберкнижки;
• фамилия, инициалы;
• год рождения;
• сумма вклада;
• приход;
• расход.
Используя данные этого файла найти «Итого».
13
Текстовый файл содержит информацию из табл. 12. Используя данные этого файла рассчитать «Итого добыто».
14
Текстовый файл содержит информацию из табл. 12. Используя данные этого файла рассчитать «Добыто на сумму».
15
В текстовом файле содержится информация о сотрудниках некоторого предприятия:
• фамилия, инициалы;
• год рождения;
• должность;
• стаж;
• оклад.
Используя данные этого файла рассчитать для каждого
сотрудника «Зарплата», плюсуя 10% к окладу, если стаж более 10 лет, и 15% – если более 20.
16
В текстовом файле содержится информация о сотрудниках некоторого предприятия:
• фамилия, инициалы;
• год рождения;
• должность;
• стаж;
• оклад.
Используя данные этого файла определить количество пенсионеров (старше 60 лет) и количество молодых специалистов (моложе 25 лет).
74
17
В текстовом файле содержится информация о сотрудниках некоторого предприятия:
• фамилия, инициалы;
• год рождения;
• должность;
• пол.
Используя данные этого файла посчитать количество женщины
старше 55 лет и мужчин старше 60 лет.
18
В текстовом файле содержится информация о сотрудниках некоторого НИИ:
• фамилия, инициалы;
• год рождения;
• ученая степень.
Используя данные этого файла посчитать количество молодых ученых (моложе 35 лет), имеющих ученую степень.
19
В текстовом файле содержится информация о сотрудниках некоторого НИИ:
• фамилия, инициалы;
• год рождения;
• ученая степень.
Используя данные этого файла посчитать количество сотрудников старше 40 лет без ученой степени.
20
В текстовом файле содержится информация о сотрудниках некоторого предприятия:
• фамилия, инициалы;
• должность;
• оклад.
Используя данные этого файла рассчитать для каждого сотрудника величину «Подоходный налог», учитывая, что он составляет 13% от оклада и «К выплате».
21
В текстовом файле содержится информация о сотрудниках некоторого предприятия:
• фамилия;
• инициалы;
• должность;
• название отдела;
• оклад.
Используя данные этого файла определить количество сотрудников с максимальной зарплатой.
75
22
В текстовом файле хранится информация о закупках чая (табл.
13). Используя данные этого файла рассчитать поле «Сумма» и графу «Всего».
23
В текстовом файле хранится информация о закупках чая (табл.
13). Используя данные этого файла найти данные фирмы с максимальным объемом продаж.
24
Текстовый файл содержит информацию о комплектации
компьютеров:
• тип процессора;
• объем ОЗУ (Гб);
• объем жесткого диска (Гб);
• наличие DVD привода (да/нет).
Используя данные этого файла найти информацию о
компьютерах с объемом жесткого диска более 600 Гб и ОЗУ более 16 Гб.
Содержание отчета:
1.Номер и тема лабораторной работы.
2.Вариант задания.
3. Блок-схема алгоритма обработки файла.
4. Текст программы.
5. Результаты работы программы.
6. Ответы на контрольные вопросы.
Показать отчет преподавателю.
Контрольные вопросы
1.Понятие файла.
2.Способ описания файла.
4.Стандартные функции для работы с файлами.
5.С помощью какой функции осуществляется подготовка файла для чтения?
6.С помощью каких функций выполняется чтение данных из файла?
7.Как распознать конец файла данных?
76
ЛАБОРАТОРНАЯ РАБОТА № 9
СОЗДАНИЕ ПРОСТЕЙШЕГО ГРАФИЧЕСКОГО ПРИЛОЖЕНИЯ
Цель работы: научиться создавать диалоговые окна с помощью Qt Designer
и писать простой обработчик событий с использованием библиотеки Qt. Научиться строить графики.
Лабораторная работа состоит из трех заданий.
Задание 1. Знакомство с Qt Designer
Создание проекта и компоновка элементов управления
Откройте Qt Creator, выберите Файл ► Создать файл или проект ►
Проекты ► Приложение(Qt) ► Приложение Qt Widgets, назовите проект,
например, Form1, нажмите Далее, систему сборки не меняйте. На следующем шаге задайте значения согласно рис.1. Нажмите несколько раз
Далее и Завершить.
Рисунок 1 - Создание приложения на основе класса QDialog
После создания проекта на экране появится содержимое файла main.cpp. В списке Проекты раскройте Формы и нажмите два раза на mydialog.ui. Откроется дизайнер форм. Перетащите с панели виджетов на форму виджеты Label и Push Button. Расставьте их так, как показано на рис. 2.
Рисунок 2 - Размещение виджетов на форме
77
Двойным нажатием по элементу PushButton введите текст «Вывод», а для Label пустой текст. Для улучшения внешнего вида элемента можете изменить свойства font и palette. для чего перейдите в Редактор свойств. В свойство windowTitle для формы введите текст «Первая форма». Для того чтобы увидеть, как будет выглядеть форма без компиляции проекта, выберите команду Инструменты ► Редактор форм ► Предпросмотр.
Обработка событий
Теперь необходимо добавить обработчик события нажатия кнопки (по терминологии Qt это называется сигнально-слотовым соединением). Для этого нажмите на ней правой кнопкой мыши, выберите Перейти к слоту..., значение clicked() не меняйте, затем OK. Откроется исходный код процедуры обработки (в Qt это именуется слотом). Приведите код к следующему виду:
void MyDialog::on_pushButton_clicked()
{
ui->label->setText("Привет, студент!!!");
}
Соберите и запустите проект. На экране появится окно:
Рисунок 3 - Запуск первого приложения
Взаимодействие трех элементов управления
Добавьте на форму еще три виджета: LineEdit, PushButten,TextLabel. Расставьте элементы примерно так:
Рисунок 4 - Добавление новых элементов
78
В label_2 введите текст «Место для вывода результатов», а в pushButton_2 текст «Расчет». При нажатии на кнопку значение, вводимое в текстовое поле, должно утраиваться и выводиться в надпись label_2. Создайте слот для обработки клика по кнопке pushButton_2. Приведите код к следующему виду:
void Dialog1::on_pushButton_2_clicked()
{
double x; // описание переменной X QString str=ui->lineEdit->text(); // запись в строку значения из LineEdit'а
x=str.toDouble(); // преобразование строки в число и запись в переменную Х x=x*3; // утроение значения Х
ui->label_2->setText("Утроенное значение X="+str.number(x)); // вывод в label
}
В результате сборки на экране появится такое окно:
Рисунок 5 - Взаимодействие трех виджетов
Задание 2. Программирование циклических алгоритмов
Разработаем приложение, которое вычисляет значения функции Y для всех значений аргумента X, где X изменяется от 2 до 4 с шагом 0,5. Функцию вычислить по формуле: 𝑌 = 3 ⋅ 𝑋2.
Для этого создайте новый проект Qt Widgets на базе класса QDialog и
назовите его, например, Form2. Перетащите на форму три надписи, три текстовых поля и одну кнопку. Расставьте элементы и настройте их свойства согласно рисунку 6.
79
Рисунок 6 - Менеджеры компоновки облегчают проектирование форм
В Qt Creator существуют менеджеры компоновки, которые позволяют подстраивать размер и положение виджетов на форме. Выделите одновременно одно из текстовых полей и соответствующую ему надпись и
нажмите на кнопку Скомпоновать по сетке , которая находится над формой. То же самое проделайте с остальными парами виджетов. Текстовые поля предназначены для задания параметров цикла. Кнопка должна инициировать процесс вычисления.
Приведите код к следующему виду:
void MyDialog::on_pushButton_clicked()
{
double start,end,step; // переменные для задания параметров цикла double x,y; // описание функции и аргумента QString s1,s2,s3; // строки для хранения промежуточных значений // инициализация переменных start,end,step значениями полей s1=ui->lineEdit->text(); start=s1.toDouble(); s2=ui->lineEdit_2->text(); end=s2.toDouble(); s3=ui->lineEdit_3->text(); step=s3.toDouble(); for(x=start;x<=end;x=x+step) // организация цикла { y=3*pow(x,2); // Вычисление функции по формуле
// Вывод x и y
QMessageBox::information(this,"Результат","x="+s1.number(x)+"\ty="+s1.number(y)); }
}
Для использования стандартных математических функций нужно
подключить заголовочный файл <cmath>. Окно сообщения требует подключения файла “QMessageBox”. Выполните компиляцию проекта и запустите его на выполнение. Вы должны получить примерно следующий результат:
80
Рисунок 7 - Значения функции выводятся в разных окнах
Недостатком решения является то, что каждое значение функции выводится в отдельное информационное окно. Используя операцию конкатенации сформируем строку вывода и выведем таблицу значений функции целиком. Для этого измените слот следующим образом:
void MyDialog::on_pushButton_clicked()
{
double start,end,step; double x,y; QString s1,s2,s3; QString str(""); // переменная-строка и ее очистка s1=ui->lineEdit->text(); start=s1.toDouble(); s2=ui->lineEdit_2->text(); end=s2.toDouble(); s3=ui->lineEdit_3->text(); step=s3.toDouble(); for(x=start;x<=end;x=x+step) { y=3*pow(x,2); str=str+"x="+s1.number(x)+"\ty="+s1.number(y)+"\n"; } QMessageBox::information(this,"Результат",str);
}
После компиляции вы получите таблицу следующего вида:
Рисунок 8 - Все значения функции в одном окне
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]