Курсовая. Курсовая_Шрайбер. Курсовой проект по дисциплине корпоративные информационные системы на тему Автоматиз
Скачать 1.34 Mb.
|
Dbase_admin(){ЗАКЛЮЧЕНИЕВ процессе исследования предметной области, проведённого во время разработки, был сделан вывод, что автоматизированная система распознавания бактерий на данный момент является необходимым программным обеспечением в каждой микробиологической лаборатории. Все используемые методы утверждают, что дают результаты, очень сопоставимые с человеческими подсчётами, однако, они повышают объективность и сильно экономят время. Было установлено, что распознавание бактерий, а также выявление их количественных и качественных характеристик является трудоёмким процессом, который связан с обработкой больших объёмов информации. Однако разработанная автоматизированная система позволит сократить затраты рабочего времени лаборантов в ходе выполнения данной задачи. Результатом выполнения курсового проекта является автоматизированная система микробиологической лаборатории и метода микроскопирования. Данная система позволяет решать следующие задачи: организация ввода эталонных показателей бактерий; загрузка любых изображений из разных источников (веб-камера, интернет, локальное пространство); распознавание бактерий; проведение расчёта показателей (цвет в палитре RGB, расположение в пространстве, оттенок, контрастность, соседние расположения, форма, размер, количество, грамм, тип оболочки); ведение историй любого рода записей; проведение ранжирования показателей по каждому типу бактерии; проведение анализа динамики по конкретному показателю и указанной бактерии с помощью графиков; формирование отчётов и вывод их на печать (отчёт по отдельному показателю, итоговый отчёт за всё время работы). Была проведена апробация функционирования в целях получения гарантии правильного функционирования программного продукта, а также выполнено экономическое обоснование проекта. СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВMansberg, H. Автоматический счётчик частиц и бактериальных колоний. Наука 126, 1957 - 823-827 c; Кларк М.Л. и др. Недорогой, высокопроизводительный, автоматизированный подсчёт бактериальных колоний. Cytom. Часть А77, 2010 - 113 с; Соммер, К., Страйл, С., Коете, U. & Hamprecht, F. A. ilastik: набор инструментов для интерактивного обучения и сегментации. 8-й Международный симпозиум IEEE по биомедицинской визуализации, 2011 - 230-233 c; Ragotaman, S., Narasimhan, S., Basavaraj, M. G. & Dewar, R. Без контроля сегментации изображения шейных клеток с использованием модели гауссовой смеси. В работе конференции IEEE по компьютерному зрению и распознаванию моделей, 2016 - 70-75 c; Choudhry, P. Высокопроизводительный способ автоматизированного подсчета колоний и клеток с помощью цифрового анализа изображений на основе обнаружения краев. Плос Один 11, 2016 - 234-270 ; Хильсенбек, О. и др. Быстрее: удобный инструмент для сверхбыстрого и надежного сегментации ячеек в крупномасштабной микроскопии. Bioinforma, 2017 - 95-110 c; Ричард Хипп и база данных №1. [Электронный ресурс]. – Электрон. Текстовые дан. – Режим доступа https://antonz.ru/richard-hipp – Дата доступа: 15.03.2020; PHP: Установка - Manual. [Электронный ресурс]. – Электрон. Текстовые дан. – Режим доступа http://php.net/manual/ru/sqlite.installation.php - – Дата доступа: 15.03.2020; Алгоритмические основы построения растровой графики. URL https://www.intuit.ru/studies/courses/993/163/lecture/4491 - Дата доступа: 15.03.2020. ПРИЛОЖЕНИЕ А Листинг программы Программный код модуля «dbase». #include #include #include #include #include #include Dbase::Dbase(const QString &path) {db = QSqlDatabase::addDatabase("QSQLITE"); db.setDatabaseName(path); if (!db.open()){ qDebug() « "Ошибка: сбой соединения с dbase"; }else{ qDebug() « "dbase: подключение в порядке";} }Dbase:: QList qDebug() « "админ in datavbase:"; QSqlQuery query; query.prepare("SELECT * FROM Admin WHERE UserName =:uname"); query.bindValue(":uname",uname); if(!query.exec()){ qDebug()«"Ошибка в запросе: "«query.lastError(); }else{ if(query.next()){ qDebug()«"Передача данных"; QString fname = query.value(0).toString(); QString lname = query.value(1).toString(); QString username = query.value(2).toString(); QString mobileno = query.value(3).toString(); QString email = query.value(4).toString(); QString passwd=query.value(5).toString(); adminList.push_front(fname); adminList.push_front(lname); adminList.push_front(username); adminList.push_front(mobileno); adminList.push_front(email); adminList.push_front(passwd);} else{ qDebug()«"Не удалось отправить данные";}} return adminList;} bool Dbase::getAdminInfo(){ QList QSqlQuery qry; qry.prepare("SELECT * FROM Admin"); if(qry.exec()){ if(qry.next()){ QString fname = qry.value(0).toString(); QString lname = qry.value(1).toString(); QString username = qry.value(2).toString(); QString mobileno = qry.value(3).toString(); QString email = qry.value(4).toString(); QString passwd=qry.value(5).toString(); adminList.push_front(fname); adminList.push_front(lname); adminList.push_front(username); adminList.push_front(mobileno); adminList.push_front(email); adminList.push_front(passwd);} if(adminList.count()==0){ return false;} else{ return true;}} else{ return false;} void Dbase::createAdmin_LoginTable(){ QSqlQuery query; query.prepare("CREATE TABLE Admin_Login ( FirstName TEXT, LastName TEXT, UserName TEXT UNIQUE, MobileNo TEXT , Email TEXT UNIQUE, Password TEXT)"); if (!query.exec()){ qDebug() « "Не удалось создать таблицу 'Admin_Login': возможно, она имя пользователя уже используется.";} else{ qDebug()«"создана Admin_LoginTable";}} void Dbase::addAdmin_Login(QString &uname){ QSqlQuery qry; //повторное использование данных из таблицы администратора QString fname,lname,username,mobileno,email,passwd; QList if(adminlist.isEmpty()){ qDebug()«"ошибка при повторном вводе данных администратора";} else{ qDebug()«"получены данные от админа"; //получение данных от админа passwd=adminlist.takeAt(0); email=adminlist.takeAt(0); mobileno=adminlist.takeAt(0); username=adminlist.takeAt(0); lname=adminlist.takeAt(0); fname=adminlist.takeAt(0); //Добавить запись в таблицу Admin_Login qry.prepare("INSERT INTO Admin_Login(FirstName,LastName,UserName,MobileNo,Email,Password) VALUES(:fname,:lname,:uname,:mobileno,:email,:passwd)"); qry.bindValue(":fname",fname); qry.bindValue(":lname",lname); qry.bindValue(":uname",username); qry.bindValue(":mobileno",mobileno); qry.bindValue(":email",email); qry.bindValue(":passwd",passwd); if(!qry.exec()){ qDebug() « "не удалось добавить администратора: " « qry.lastError(); }else{ //QMessageBox::information(this,"Admin_Login Table","Created"); qDebug()«"администратор добавлен успешно";}}} void Dbase::deleteAdmin_Login(){ QSqlQuery qry; qry.prepare("DROP TABLE Admin_Login"); if(qry.exec()){ qDebug()«"Таблица Admin_Login удалена";}else{ qDebug()«"Не удалось удалить таблицу";}} bool Dbase::laboratorianAuth(const QString &uname, const QString &pass)const{ bool exists = false; QSqlQuery checkQuery; checkQuery.prepare("SELECT UserName FROM Laboratorian WHERE UserName =:uname AND Password = :pass"); checkQuery.bindValue(":uname", uname); checkQuery.bindValue(":pass", pass); if (checkQuery.exec()){ if (checkQuery.next()){ exists = true;}}else{ qDebug() « "пользователя не существует: " « checkQuery.lastError();} return exists;} void Dbase::createLaboratorian_LoginTable(){ QSqlQuery query; query.prepare("CREATE TABLE Laboratorian_Login ( Name TEXT, UserName TEXT,Gender TEXT, Phone TEXT , Email TEXT, Password TEXT)"); if (!query.exec()){ qDebug() « "Не удалось создать таблицу 'Admin_Login': возможно, она имя пользователя уже используется.";}else{ qDebug()«"создана Admin_LoginTable";}} QList QList qDebug() « "лаборант в db:"; QSqlQuery query; query.prepare("SELECT * FROM Laboratorian WHERE UserName =:uname"); query.bindValue(":uname",uname); if(!query.exec()){ qDebug()«"Ошибка в запросе: "«query.lastError();}else{ if(query.next()){ qDebug()«"Передача данных"; QString name = query.value(0).toString(); QString username = query.value(1).toString(); QString gender=query.value(2).toString(); QString phone = query.value(3).toString(); QString email = query.value(4).toString(); QString passwd=query.value(5).toString(); laboratorianList.push_front(name); laboratorianList.push_front(username); laboratorianList.push_front(gender); laboratorianList.push_front(phone); laboratorianList.push_front(email); laboratorianList.push_front(passwd);}else{qDebug()«"Не удалось отправить данные";}}return laboratorianList;} void Dbase::addLaboratorian_Login(QString &uname){ QSqlQuery qry; //повторите данные из таблицы лаборанта QString name,username,gender,phone,email,passwd; QList if(laboratorianlist.isEmpty()){ qDebug()«"ошибка в добавлении информации о лаборанте";}else{ qDebug()«"получены данные от лаборанта"; //получение данных от лаборанта passwd=laboratorianlist.takeAt(0); email=laboratorianlist.takeAt(0); phone=laboratorianlist.takeAt(0); gender=laboratorianlist.takeAt(0); username=laboratorianlist.takeAt(0); name=laboratorianlist.takeAt(0); //Добавить запись в таблицу Laboratorian_Login qry.prepare("INSERT INTO Laboratorian_Login(Name,UserName,Gender,Phone,Email,Password) VALUES(:name,:uname,:gender,:phone,:email,:passwd)"); qry.bindValue(":name",name); qry.bindValue(":uname",username); qry.bindValue(":gender",gender); qry.bindValue(":phone",phone); qry.bindValue(":email",email); qry.bindValue(":passwd",passwd);}if(!qry.exec()){ qDebug() « "добавить лаборанта не удалось: " « qry.lastError();}else{ //QMessageBox::information(this,"Laboratorian_Login Table","Created"); qDebug()«"вам удалось добавить лаборанта";}} void Dbase::deleteLaboratorian_Login(){ QSqlQuery qry; qry.prepare("DROP TABLE Laboratorian_Login"); if(qry.exec()){ qDebug()«"Таблица laboratorian_Login удалена";{else{ qDebug()«"Не удалось удалить таблицу";}} #include "dbase_admin.h" #include #include #include #include Dbase_admin::Dbase_admin(const QString &path){ db=QSqlDatabase::addDatabase("QSQLITE"); db.setDatabaseName(path); if(!db.open()){ qDebug() «"Ошибка: подключение к базе данных";}else{ qDebug() «"Успех: подключение к базе данных";}} Dbase_admin:: |