DIPLOM (1204343), страница 7
Текст из файла (страница 7)
Рисунок 14 ‒ Календарный график выполнения работ
В связи с тем, что для внедрения програмнного модуля, рассматриваемого в данном проекте, не было затрат на основное и вспомогательное оборудование, то данные затраты для внедрения системы не учитывают. Также не принимаются в расчет затраты по подготовке и переподготовке кадров, затраты на создание информационной базы и затраты на приобретение типовых разработок.
Таким образом, при внедрении системы, рассматриваемой в данном проекте, затраты на его реализацию определяются затратами на оборудование и зарплату руководителю и инженер-программисту.
На разработку, отладку ПО, внедрения и оформление сопутствующей документации приходится 20 дней (без учета выходных). Проектом будет заниматься группа из 2 человек: руководитель и инженер-программиста.
При средней зарплате 25 000 рублей/месяц руководителя и инженера вычислим стоимость работы 1 день:
25 000/21 = 1200 рубля/день
Соответственно стоимость проекта обойдется:
1200·2·20=48 000 руб.
Планируется что проект окупит себя в течении двух лет.
Программный модуль для тестирования сотрудников был разработан для Краевого Государственного Бюджетного Учреждения Здравоохранения «Спасска стоматологическая поликлиника». В соответствии с техническим заданием дальнейшему продвижению программный продукт не подлежит, так как это заказной продукт – выполнен для КГБУЗ «Спасская СП» и его пользователями будут сотрудники данной организации.
Возможность его тиражирования и коммерческого распространения должна быть согласована с заказчиком.
ЗАКЛЮЧЕНИЕ
В современном обществе информационные технологии применяются в управлении организациями всех типов, действующих во всех сферах общественного производства.
Объектом исследования являлись системы компьютерного тестирования, используемые для контроля знаний.
Предметом исследования являлась разработка тестовой оболочки в среде Qt Creator.
Для достижения поставленной цели был выполнен ряд задач:
‒ разработана модель данных;
– рассмотренны вопросы проектирования программного средства;
– изучена и проанализирована предметная область;
– создан эскизный проект;
– выбраны программные средства для реализации проекта;
– выполнено технико-экономическое обоснование разработки.
В ходе выпускной квалификационной работы (ВКР) была разработана система компьютерного тестирования для контроля знаний персонала КГБУЗ «Спасская СП».
Материалы ВКР способствуют улучшению качества оказания медицинских услуг населению путем автоматизации проверки знаний как медицинских работников, так и работников отдела кадров, и бухгалтерии.
В результате ВКР был получен программный модуль, позволяющий не только проводить тестирование сотрудников стоматологической поликлиники, но формировать отчеты и статистику: как по каждому сотруднику, так и по периоду тестирования.
Список использованных источников
1 Гопкало, В.Н. Выпускная квалификационная работа. Общие требования и правила оформления: методическое пособие. / В.Н. Гопкало, О.А. Графский – Хабаровск: Изд-во ДВГУПС, 2010. – 82 с.
2 Технология разработки программного обеспечения: учебное пособие. 2-е изд. / С.Орлов ‒ СПб. Питер, 2003. ‒ 480с.
3 Александреску А. Современное проектирование на C++: пер. с англ. ‒
М.: Вильямс, 2002. ‒ 336 с.
4 Plemnek, A. А new generation library system project in Russia / А. Plemnek, 1996. – 378 p.
5 Приёмы объектно-ориентированного проектирования. Паттерны проекти- рования: пер. с англ. / Э. Гамма, Р. Хелм, Р. Джонсон, Дж. Влиссидес. ‒ СПб.: Питер, 2001. ‒ 368 с.
6 Qt. Профессиональное программирование. Разработка кроссплатформенных приложений на С++. / Саммерфилд М. ‒ СПб.: «Символ-Плюс», 2011. ‒ с.560.
10 ISO/IEC 14882:2003. Information Technology ‒ Programming Languages ‒ C++. ‒ 2-nd edition. ‒ ISO/IEC, 2003. ‒ 757 р.
11 ISO/IEC 9899:1999. Programming Languages ‒ C. ‒ ISO/IEC, 1999. ‒ 538 р.
12 Тестирующие программы для использования в сети Интернет. Открытое и дистанционное образование. / Казанская О.В., Русанов А.С., Макаревич Л.Г. ‒ 2001. ‒ 388 с.
13 Информационные технологии и компьютерные средства в образовании // Educational Technology & Society. / Кирилова Г.И. ‒ 2000. ‒ 250 с.
14 Экономика предприятия. / Волков О.И.: ‒ М.: ИНФРА-М, 2009. ‒ 150 с.
15 Основы управления проектами в компании. / Фунтов В.Н. ‒ СПб. Питер, 2008. ‒ 312 с.
16 Современные операционные системы. / Таненбаум Э. ‒ СПб.: Питер, 2010. ‒ 465 с.
17 Автоматизированное рабочее место в системе управления предприятием: Сборник научных трудов – СПб, 2002. – 278 с.
18 Миньков, С.Л. Технико-экономическое обоснование выполнения проекта: методическое пособие / С.Л. Миньков. – Томск: ТГУ, 2011. – 30 с.
19 Павловская, Т.А. C#. Программирование на языке высокого уровня. Учебник для вузов / Т.А. Павловская - СПб.: Питер, 2007. – 432 с.
20 Петцольд, Ч. Программирование для Microsoft Windows 8. 6-е изд. / Ч. Петцольд – 2013. – 1008с.
21 Постолит, А.В. Visual Studio .NET: Разработка приложений баз данных / А.В. Постолит – М.: БХВ-Петербург, 2003. – 389 с.
22 Базы данных. Интеллектуальная обработка информации / В.В.Корнеев, А.Ф.Гарев, С.В.Васютин и др.; Под редакцией В.В.Райх – М.: Нолидж, 2000. – 346 с.
23 Qt Creator официальная страница [Электронный ресурс] – Режим доступа: https://www.qt.io/ide/
24 Компиляторы и IDE [Электронный ресурс] – Режим доступа: http://www.raspberry-projects.com/pi/category/programming-in-c/compilers-and-ides
25 Microsoft Visual Studio описание продукта [Электронный ресурс] – Режим доступа: https://www.microsoft.com/rus/business/smb/products-list/visualstudio2010/
26 Обзор языка C++ [Электронный ресурс] – Режим доступа: https://msdn.microsoft.com/ru-ru/library/hh279654.aspx
27 Информационная безопасность и защита информации: учеб. пособие. ‒ 2-е изд.‒ М. / Баранова Е.К., Бабаш А.В. РИОР: ИНФРА-М, 2014. ‒ 256 с.
28 Организация ЭВМ и систем ‒ М. / Горнец Н.Н, Рощин А.Г., Соломенцев В.В. Академия, 2010. ‒ 316 с.
ПРИЛОЖЕНИЕ А
(рекомендуемое)
Код программы
#define MAINWINDOW_H
#include <QMainWindow>
#include <QFile>
#include <algorithm>
#include <utility>
#include <iostream>
#include <QMessageBox>
#include <QCloseEvent>
#include <QMenu>
#include <QLineEdit>
#include <QPushButton>
#include <QGridLayout>
#include <QLabel>
#include <QThread>
#include <QStatusBar>
#include <QtWidgets/QApplication>
#include <QPixMap>
#include <QCheckBox>
#include <QGroupBox>
#include <QRadioButton>
#include <memory>
#include <QTextEdit>
#include <QComboBox>
#include <QLineEdit>
#include <QDir>
#include <QStringList>
#include <QDirIterator>
#include <QStackedWidget>
#include <QScrollArea>
#include <QTimer>
#include <QDateTime>
#include <QSqlQuery>
#include <QSqlTableModel>
#include <QTableView>
#include <QSqlRecord>
#include <QSqlDatabase>
#include <QSqlError>
class SqllQuery;
extern SqllQuery *sqliQuery;
struct TestResult {
QString test_name;
QString user_name;
int total_question;
int skip_question;
int true_answers;
int false_answers;
int testing_time;
int elapsed_test_time;
};
#include <QSqlError>
class SqllQuery
{
// using lock_g = std::lock_guard<std::mutex>;
public:
SqllQuery()
{
db = QSqlDatabase::addDatabase("QSQLITE"); // not dbConnection
db.setDatabaseName(dbName);
db.open();
QSqlQuery query(db);
query.exec("create table IF NOT EXISTS `test_results` (\
`test_name` TEXT,\
`user_name` TEXT,\
`total_question` INTEGER NOT NULL,\
`skip_question` INTEGER NOT NULL,\
`true_answers` INTEGER NOT NULL,\
`false_answers` INTEGER NOT NULL,\
`testing_time` INTEGER NOT NULL,\
`elapsed_test_time` INTEGER NOT NULL\
)");
}//создает таблицу
//добовляет строку в базу данных после завершения теста
auto addData(const TestResult &data)
{
QSqlQuery query(db);
query.prepare("INSERT INTO `test_results`"
" (`test_name`, `user_name`, `total_question`, `skip_question`, `true_answers`, `false_answers`, `testing_time`, `elapsed_test_time`)"
" VALUES (:test_name, :user_name, :total_question, :skip_question, :true_answers, :false_answers, :testing_time, :elapsed_test_time)");
query.bindValue(":test_name", data.test_name.toStdString().c_str());
query.bindValue(":user_name", data.user_name.toStdString().c_str());
query.bindValue(":total_question", data.total_question);
query.bindValue(":skip_question", data.skip_question);
query.bindValue(":true_answers", data.true_answers);
query.bindValue(":false_answers", data.false_answers);
query.bindValue(":testing_time", data.testing_time);
query.bindValue(":elapsed_test_time", data.elapsed_test_time);
return query.exec();
}
auto& getDBHandle() {
return db;
}
// имя файла
private:
QSqlDatabase db;
QString dbName = "db.db";
};
// создает строку, путь к будущему тесту
inline
QString make_dir_name(const QString& testName)
{
return QString(QUESTIONS_DIR) + testName + "/";
}
//создает путь к текстовому файлу, с тестом
inline
QString make_file_name(int id, const QString& testName = "main")
{
return make_dir_name(testName) + std::to_string(id).c_str() + ".txt";
}
//создание даты тестирования
inline
QString string_time(uint t) {
return QDateTime::fromTime_t(t).toUTC().toString("hh:mm:ss");
}
template<class T> inline
T&& normalize_path(T&& data)
{
for (auto& it : data)
if (it == '\\')
it = '/';
return std::forward<T>(data);
}
inline auto remove_path(const QString& path)
{
auto index = path.lastIndexOf('/');
if (index < 0 || path.size() == 0)
return path;
return path.right(path.size()-index-1);
}
// список тестов
inline auto getTestsList()
{
std::vector<QString> ret;
QDirIterator it(QString(QUESTIONS_DIR), QDir::Dirs);
while (it.hasNext()) {
auto dir = remove_path(it.next());
if (dir == "." || dir == "..")
continue;
ret.push_back(dir);
}
return ret;
}
//удаление теста
inline bool removeTest(const QString& testName)
{
return QDir(make_dir_name(testName)).removeRecursively();
}
// удаление вопроса
inline bool remove_file(int id, const QString& testName)
{
auto fName = make_file_name(id, testName);
return QFile::remove(fName);
}
// хранение вопроса с ответами
class QuestionFileT
{
QString question;
QString correct_answer;
std::vector<QString> answers_list;
public:
QuestionFileT() = default;
~QuestionFileT() = default;
QuestionFileT& operator=(const QuestionFileT&) = default;
QuestionFileT& operator=(QuestionFileT&&) = default;
QuestionFileT(const QuestionFileT&) = default;
QuestionFileT(QuestionFileT&&) = default;
QuestionFileT(auto&& question1, auto&& correct_answer, auto&& answers_list)
: question(std::forward<decltype(question1)>(question1))
, correct_answer(std::forward<decltype(correct_answer)>(correct_answer))
, answers_list(std::forward<decltype(answers_list)>(answers_list))















