ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
ВЫСШЕГО ОБРАЗОВАНИЯ
«ВОРОНЕЖСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»
(ГОУ ВО «ВГТУ»)
Факультет радиотехники и электроники
Кафедра «Радиоэлектронных устройств и систем»
КУРСОВАЯ РАБОТА по дисциплине «Информационные технологии»
Разработка ПО анализа занятости работоспособного населения
Разработали студенты группы РП-174 Кулешов М. С. Руководитель Сукачев А.И. 2018
Замечания руководителя.
Содержание 1. Замечания руководителя 2 2. Введение ………………………………………………………………………….….. 4 3. Основная часть ………………………………………………………….…………… 4 4. Краткие теоретические сведения 4 5. Основные классы 4 6. Заключение 4 7. Список литературы .. 5 8. Приложение А 6
9. Приложение Б 7 10. Приложение В 8 11. Приложение Г 10 12. Приложение Д 11 13. Приложение Е 14 14. Приложение Ж 16 15. Приложение И 25 16. Приложение К 26 17. Приложение Л 27 18. Приложение М 28
Введение:
Актуальность: 1) ПО по контролю занятости работоспособного населения
2) Интерфейс способен отслеживать и анализировать занятость работоспособного населения
Цель: Создать ПО анализа занятости работоспособног онаселения. Основная часть: Краткие теоретические сведения SQL:
SQL – декларативный язык программирования, применяемый для создания, модификации и управления данными в реляционной базе данных, управляемой соответствующей системой управления базами данных.
Краткие теоретические сведения Qt: QT – кроссплатформенный инструментарий разработки ПО на языке программирования С++. Позволяет запускать с его помощью ПО в большинстве современных операционных систем, путем простой компиляции программы для каждого ОС без изменения исходного кода. Включает в себя все основные классы, которые могут потребоваться при разработке прикладного программного обеспечения, начиная от элементов графического интерфейса и заканчивая классами для работы с сетью, базами данных и XML. Qt является полностью объектно-ориентированным, легко расширяемым и поддерживающим технику компонентного программирования.
Выбор основных классов графического интерфейса.
1) QtWidget – описание классов
2) QLayout - это базовый класс для менеджеров компоновки (компоновщиков). Это абстрактный базовый класс, от которого наследуются конкретные классы QBoxLayout, QGridLayout, которые будут использоваться в дальнейшем. Позволяет использовать компоновщики 3) QSqlTableModel – модель, которая позволяет работать с таблицами и заполняемая из базы данных
4) QTableView – класс, являющийся частью модели - представления и необходимый для показа sql таблиц 5) QPushButton – класс, представляющий из себя кнопку. Этот класс будет использоваться повсеместно и будет связываться со слотами, используя сигнал clicked(bool) 6) QLineEdit – класс, необходимый для добавления данных о событии 7) QDate – класс, который позволяет задать дату и ввести ее в таблицу. Посредством метода daysto() можно узнать разницу между датами в днях, что входит в формулу анализа 8) QSpinBox – предоставляет виджет счетчика
9) QStandartItemModel – модель представления, состоящяя из item
Вывод: В ходе выполнения курсовой работы, цель была достигнута. ПО анализа занятости работоспособного населения создано.
Список литературы.
1) Qt 5.3. Профессиональное программирование на C++, основная литература, http://revall.info/qt-5-3-professionalnoe-programmirovanie-na-c.html 2) Работа с основными классами http://sitev.ru/post/131 3) Задача занятости населения http://fb.ru/article/44728/proizvodstvenno-tehnicheskiy-otdel 4) Решаем программы https://moluch.ru/archive/117/32084/ 5) Язык программирования C++ http://cppstudio.com/cat/274/
ПРИЛОЖЕНИЕ А
(обязательное) Общая схема
ПРИЛОЖЕНИЕ Б
(обязательное) Добавить
ПРИЛОЖЕНИЕ В
(обязательное) mainwindow.cpp #include "mainwindow.h"
#include "ui_mainwindow.h"
#include
#include
#include
#include #define ACCESS "DRIVER={Microsoft Access Driver (*.mdb)};" "FIL={MS Access};DBQ=C:\\workes.mdb"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this); st = new Stat; data = QSqlDatabase::addDatabase("QODBC");
data.setDatabaseName(ACCESS);
if (!data.open())
{
QMessageBox::critical(this,"Error", data.lastError().text());
return;
} model = new QSqlTableModel(this);
model->setTable("workers");
model->select();
ui->tableView->setModel(model);
} MainWindow::MainWindow()
{
delete ui;
} void MainWindow::on_pushButton_clicked()
{
model->select();
} void MainWindow::on_pushButton_2_clicked()
{
model->removeRow(ui->tableView->currentIndex().row());
} void MainWindow::on_pushButton_3_clicked()
{
model->insertRow(model->rowCount());
} void MainWindow::on_pushButton_4_clicked()
{
for(int row =0; row<=model->rowCount(); row++)
{
QSqlRecord rec = model->record(row); if(rec.value("Год").toString()==ui->lineEdit->text())
{
QString a,b,c,d,e,f,y;
a = rec.value("СХ").toString();
b = rec.value("Образование").toString();
c = rec.value("Здравохранение").toString();
d = rec.value("Транспорт").toString();
e = rec.value("Рыболовство").toString();
f = rec.value("Строительство").toString();
y = rec.value("Год").toString();
st->select(a,b,c,e,d,f,y);
st->show();
return;
}
}
}
ПРИЛОЖЕНИЕ Г
(обязательное) mainwindow.h #ifndef MAINWINDOW_H
#define MAINWINDOW_H #include
#include "stat.h"
#include
#include
#include
#include
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT public:
explicit MainWindow(QWidget *parent = 0);
MainWindow(); private slots:
void on_pushButton_clicked(); void on_pushButton_2_clicked(); void on_pushButton_3_clicked(); void on_pushButton_4_clicked(); // void on_pushButton_5_clicked(); private:
Ui::MainWindow *ui;
QSqlDatabase data;
QSqlQueryModel query;
QSqlTableModel *model;
Stat *st;
}; #endif // MAINWINDOW_H
Приложение Д
(обязательное) mainwindow.ui
MainWindow
0
0
802
352
Занятость населения
20
10
741
151
20
180
141
23
Обновить
360
180
141
23
Удалить
190
180
141
23
Добавить
200
250
75
23
Отобразить
50
250
113
20
70
230
71
16
Введите год
0
0
802
21
TopToolBarArea
false
Приложение Е
(обязательные) stat.cpp
#include "stat.h"
#include "ui_stat.h"
Stat::Stat(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::Stat)
{
ui->setupUi(this);
} Stat::Stat()
{
delete ui;
} void Stat::select(QString a, QString b, QString c, QString d, QString e, QString f, QString y)
{
QString cx, ed, hl, car, fish, build;
cx = a; ed = b; hl = c; car = d; fish = e; build = f; double x;
x = cx.toDouble()+ed.toDouble()+hl.toDouble()+car.toDouble()+fish.toDouble()+build.toDouble(); QStringList horHed, vertHed;
horHed.append("Тыс. человек");
horHed.append("Занятость %"); vertHed.append("Всего");
vertHed.append("С/Х");
vertHed.append("Образование");
vertHed.append("Здравохранение");
vertHed.append("Транспорт");
vertHed.append("Рыболовство");
vertHed.append("Строительство"); model->setHorizontalHeaderLabels(horHed);
model->setVerticalHeaderLabels(vertHed); item = new QStandardItem(QString::number(x)); //1 строка
model->setItem(0,0,item);
item = new QStandardItem("100");
model->setItem(0,1,item); item = new QStandardItem(cx); // 2я
model->setItem(1,0,item);
item = new QStandardItem(QString::number(cx.toDouble()/x*100));
model->setItem(1,1,item); item = new QStandardItem(ed); //3я
model->setItem(2,0,item);
item = new QStandardItem(QString::number(ed.toDouble()/x*100));
model->setItem(2,1,item); item = new QStandardItem(hl); //4я
model->setItem(3,0,item);
item = new QStandardItem(QString::number(hl.toDouble()/x*100));
model->setItem(3,1,item); item = new QStandardItem(car); //5я
model->setItem(4,0,item);
item = new QStandardItem(QString::number(car.toDouble()/x*100));
model->setItem(4,1,item); item = new QStandardItem(fish); //6я
model->setItem(5,0,item);
item = new QStandardItem(QString::number(fish.toDouble()/x*100));
model->setItem(5,1,item); item = new QStandardItem(build); //7я
model->setItem(6,0,item);
item = new QStandardItem(QString::number(build.toDouble()/x*100));
model->setItem(6,1,item); ui->tableView->setModel(model);
ui->tableView->resizeRowsToContents();
ui->tableView->resizeColumnsToContents(); ui->label->setText("Информация за "+y+" год");
} void Stat::on_pushButton_clicked()
{
this->close();
}
ПРИЛОЖЕНИЕ Ж
(обязательное)
work.pro.user
EnvironmentId
{12c91ae4-c8ed-47bc-8ea6-5f1b09f53719}
ProjectExplorer.Project.ActiveTarget
0
ProjectExplorer.Project.EditorSettings
true
false
true
Cpp
CppGlobal
QmlJS
QmlJSGlobal
2
UTF-8
false
4
false
80
true
true
1
true
false
0
true
true
0
8
true
1
true
true
true
false
ProjectExplorer.Project.PluginSettings
ProjectExplorer.Project.Target.0
Desktop Qt 5.9.0 MinGW 32bit
Desktop Qt 5.9.0 MinGW 32bit
qt.59.win32_mingw53_kit
0
0
0
C:/Jobs/workes/build-work-Desktop_Qt_5_9_0_MinGW_32bit-Debug
true
qmake
QtProjectManager.QMakeBuildStep
true
false
false
false
true
Сборка
Qt4ProjectManager.MakeStep
false
2
Сборка
ProjectExplorer.BuildSteps.Build
true
Сборка
Qt4ProjectManager.MakeStep
true
clean
1
Очистка
ProjectExplorer.BuildSteps.Clean
2
false
Отладка
Qt4ProjectManager.Qt4BuildConfiguration
2
true
C:/Jobs/workes/build-work-Desktop_Qt_5_9_0_MinGW_32bit-Release
true
qmake
QtProjectManager.QMakeBuildStep
false
false
false
false
true
Сборка
Qt4ProjectManager.MakeStep
false
2
Сборка
ProjectExplorer.BuildSteps.Build
true
Сборка
Qt4ProjectManager.MakeStep
true
clean
1
Очистка
ProjectExplorer.BuildSteps.Clean
2
false
Выпуск
Qt4ProjectManager.Qt4BuildConfiguration
0
true
C:/Jobs/workes/build-work-Desktop_Qt_5_9_0_MinGW_32bit-Profile
true
qmake
QtProjectManager.QMakeBuildStep
true
false
true
false
true
Сборка
Qt4ProjectManager.MakeStep
false
2
Сборка
ProjectExplorer.BuildSteps.Build
true
Сборка
Qt4ProjectManager.MakeStep
true
clean
1
Очистка
ProjectExplorer.BuildSteps.Clean
2
false
Профилирование
Qt4ProjectManager.Qt4BuildConfiguration
0
true
3
0
Установка
ProjectExplorer.BuildSteps.Deploy
1
Локальная установка
ProjectExplorer.DefaultDeployConfiguration
1
false
false
1000
true
false
false
false
false
true
0.01
10
true
1
25
1
true
false
true
valgrind
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
work
Qt4ProjectManager.Qt4RunConfiguration:C:/Jobs/workes/work/work.pro
true
work.pro
false
C:/Jobs/workes/build-work-Desktop_Qt_5_9_0_MinGW_32bit-Debug
3768
false
true
false
false
true
1
ProjectExplorer.Project.TargetCount
1
ProjectExplorer.Project.Updater.FileVersion
18
Version
18
ПРИЛОЖЕНИЕ И
(обязательное) main.cpp #include "mainwindow.h"
#include int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show(); return a.exec();
}
ПРИЛОЖЕНИЕ К
(обязательное) stat.h #ifndef STAT_H
#define STAT_H #include
#include
#include
namespace Ui {
class Stat;
} class Stat : public QMainWindow
{
Q_OBJECT public:
explicit Stat(QWidget *parent = 0);
Stat();
void select(QString a, QString b, QString c, QString d, QString e, QString f, QString y);
private slots:
void on_pushButton_clicked(); private:
Ui::Stat *ui;
QStandardItem *item;
QStandardItemModel *model = new QStandardItemModel;
}; #endif // STAT_H
ПРИЛОЖЕНИЕ Л
(обязательное) stat.ui
Stat
0
0
345
351
Информация
104
260
111
31
Закрыть
10
50
311
191
30
15
291
21
10
Qt::LeftToRight
0
0
345
21
ПРИЛОЖЕНИЕ М
(обязательное) #-------------------------------------------------
#
# Project created by QtCreator 2018-06-01T22:16:13
#
#------------------------------------------------- QT += core gui sql greaterThan(QT_MAJOR_VERSION, 4): QT += widgets TARGET = work
TEMPLATE = app # The following define makes your compiler emit warnings if you use
# any feature of Qt which as been marked as deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS # You can also make your code fail to compile if you use deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
SOURCES += \
main.cpp \
mainwindow.cpp \
stat.cpp HEADERS += \
mainwindow.h \
stat.h FORMS += \
mainwindow.ui \
stat.ui
|