Главная страница

Курсовая. Курсовая_Шрайбер. Курсовой проект по дисциплине корпоративные информационные системы на тему Автоматиз


Скачать 1.34 Mb.
НазваниеКурсовой проект по дисциплине корпоративные информационные системы на тему Автоматиз
АнкорКурсовая
Дата12.03.2023
Размер1.34 Mb.
Формат файлаdocx
Имя файлаКурсовая_Шрайбер.docx
ТипКурсовой проект
#982314
страница9 из 10
1   2   3   4   5   6   7   8   9   10

ЗАКЛЮЧЕНИЕ


В процессе исследования предметной области, проведённого во время разработки, был сделан вывод, что автоматизированная система распознавания бактерий на данный момент является необходимым программным обеспечением в каждой микробиологической лаборатории.

Все используемые методы утверждают, что дают результаты, очень сопоставимые с человеческими подсчётами, однако, они повышают объективность и сильно экономят время.

Было установлено, что распознавание бактерий, а также выявление их количественных и качественных характеристик является трудоёмким процессом, который связан с обработкой больших объёмов информации. Однако разработанная автоматизированная система позволит сократить затраты рабочего времени лаборантов в ходе выполнения данной задачи.

Результатом выполнения курсового проекта является автоматизированная система микробиологической лаборатории и метода микроскопирования. Данная система позволяет решать следующие задачи:

  • организация ввода эталонных показателей бактерий;

  • загрузка любых изображений из разных источников (веб-камера, интернет, локальное пространство);

  • распознавание бактерий;

  • проведение расчёта показателей (цвет в палитре RGB, расположение в пространстве, оттенок, контрастность, соседние расположения, форма, размер, количество, грамм, тип оболочки);

  • ведение историй любого рода записей;

  • проведение ранжирования показателей по каждому типу бактерии;

  • проведение анализа динамики по конкретному показателю и указанной бактерии с помощью графиков;

  • формирование отчётов и вывод их на печать (отчёт по отдельному показателю, итоговый отчёт за всё время работы).

Была проведена апробация функционирования в целях получения гарантии правильного функционирования программного продукта, а также выполнено экономическое обоснование проекта.

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ


  1. Mansberg, H. Автоматический счётчик частиц и бактериальных колоний. Наука 126, 1957 - 823-827 c;

  2. Кларк М.Л. и др. Недорогой, высокопроизводительный, автоматизированный подсчёт бактериальных колоний. Cytom. Часть А77, 2010 - 113 с;

  3. Соммер, К., Страйл, С., Коете, U. & Hamprecht, F. A. ilastik: набор инструментов для интерактивного обучения и сегментации. 8-й Международный симпозиум IEEE по биомедицинской визуализации, 2011 - 230-233 c;

  4. Ragotaman, S., Narasimhan, S., Basavaraj, M. G. & Dewar, R. Без контроля сегментации изображения шейных клеток с использованием модели гауссовой смеси. В работе конференции IEEE по компьютерному зрению и распознаванию моделей, 2016 - 70-75 c;

  5. Choudhry, P. Высокопроизводительный способ автоматизированного подсчета колоний и клеток с помощью цифрового анализа изображений на основе обнаружения краев. Плос Один 11, 2016 - 234-270 ;

  6. Хильсенбек, О. и др. Быстрее: удобный инструмент для сверхбыстрого и надежного сегментации ячеек в крупномасштабной микроскопии. Bioinforma, 2017 - 95-110 c;

  7. Ричард Хипп и база данных №1. [Электронный ресурс]. – Электрон. Текстовые дан. – Режим доступа https://antonz.ru/richard-hipp – Дата доступа: 15.03.2020;

  8. PHP: Установка - Manual. [Электронный ресурс]. – Электрон. Текстовые дан. – Режим доступа http://php.net/manual/ru/sqlite.installation.php - – Дата доступа: 15.03.2020;

  9. Алгоритмические основы построения растровой графики. 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::Dbase(){
if (db.isOpen()){
db.close();}}
bool Dbase::isOpen() const{
return db.isOpen();}
void Dbase::createTable(){
// bool success = false;
QSqlQuery query;
query.prepare("CREATE TABLE Admin ( FirstName TEXT NOT NULL, LastName TEXT NOT NULL, UserName TEXT NOT NULL UNIQUE, MobileNo TEXT NOT NULL, Email TEXT NOT NULL UNIQUE, Password TEXT NOT NULL )");
if (!query.exec()){
qDebug() « "Не удалось создать таблицу 'Admin': возможно, она имя пользователя уже используется";
//success = false;}
//return success;}
bool Dbase::addAdmin(const QString &fname, const QString &lname, const QString &username, const QString &mobileno, const QString &email, const QString &passwd){
bool success = false;
QSqlQuery qry;
qry.prepare("INSERT INTO Admin(FirstName,LastName,UserName,MobileNo,Email,Password)"" VALUES(:FirstName,:LastName,:UserName,:MobileNo,:Email,:Password)");
qry.bindValue(":FirstName",fname);
qry.bindValue(":LastName",lname);
qry.bindValue(":UserName",username);
qry.bindValue(":MobileNo",mobileno);
qry.bindValue(":Email",email);
qry.bindValue(":Password",passwd);
if(!qry.exec()){
qDebug() « "не удалось добавить администратора: " « qry.lastError();
}else{
success = true;}
return success;}
bool Dbase::unameExists(const QString &uname){
QSqlQuery checkQuery;
checkQuery.prepare("SELECT UserName FROM Admin WHERE UserName = (:uname)");
checkQuery.bindValue(":uname",uname);
if(checkQuery.exec()){
if(checkQuery.next()){
return true;}
}else{
qDebug()«"существует ли электронная почта? - запрос не удался "«checkQuery.lastError();}
return false;}
bool Dbase::emailExists(const QString &email){
QSqlQuery checkQuery;
checkQuery.prepare("SELECT Email FROM Admin WHERE Email = (:email)");
checkQuery.bindValue(":email",email);
if(checkQuery.exec()){
if(checkQuery.next()){
return true;}
}else{
qDebug()«"существует ли электронная почта? - запрос не удался "«checkQuery.lastError();}
return false;}
bool Dbase::userAuth(const QString &uname, const QString &pass)const{
bool exists = false;
QSqlQuery checkQuery;
checkQuery.prepare("SELECT UserName FROM Admin 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;}
QList Dbase::getAdminInfo(const QString& uname){
QList adminList;
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 adminList;
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 adminlist=getAdminInfo(uname);
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 Dbase::getLaboratorianInfo(const QString &uname){
QList laboratorianList;
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 laboratorianlist=getLaboratorianInfo(uname);
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::Dbase_admin(){
if(db.open()){db.close();}}
bool Dbase_admin::isOpen() const{
return db.isOpen();}
bool Dbase_admin::userAuth(const QString &uname, const QString &pass) const{
bool exists = false;
QSqlQuery checkQuery;
checkQuery.prepare("SELECT UserName FROM Admin WHERE UserName =:uname AND Password = :pass");
checkQuery.bindValue(":uname", uname);
checkQuery.bindValue(":pass", pass);
if (checkQuery.exec()){
if (checkQuery.next()){
qDebug()«"админ существует";
exists = true;}}else{
qDebug() « "таких пользователей не существует: " « checkQuery.lastError();}return exists;}
void Dbase_admin::createLaboratoryTable(){QSqlQuery qry;
qry.prepare("CREATE TABLE Laboratory(Name TEXT,VAT TEXT,Phone TEXT,Address TEXT,Email TEXT,Website TEXT)");
if (!qry.exec()){
qDebug() «"Не удалось создать таблицу, возможно, она имя пользователя уже используется";}else{
qDebug()«"Создание таблицы";}}
bool Dbase_admin::addLaboratoryDetails(const QString &name, const QString &vat, const QString &phone, const QString &address, const QString &email, const QString &website){
bool sucess=false;
QSqlQuery qry;
qry.prepare("INSERT INTO Laboratory(Name,VAT,Phone,Address,Email,Website) VALUES (:name,:vat,:phone,:address,:email,:website)");
qry.bindValue(":name",name);
qry.bindValue(":vat",vat);
qry.bindValue(":phone",phone);
qry.bindValue(":address",address);
qry.bindValue(":email",email);
qry.bindValue(":website",website);
if(!qry.exec()){
qDebug()«"Добавить запись не удалось"«qry.lastError();sucess=false;}else{
qDebug()«"Запись успешно добавлена";sucess=true;}return sucess;}bool Dbase_admin::getLaboratoryDetails(){
bool sucess=false;QSqlQuery qry;
qry.prepare("SELECT * FROM Laboratory");
if(!qry.exec()){sucess=false;}else{sucess=true;}return sucess;}QList
qry.prepare(QString("SELECT * FROM Laboratory"));if(!qry.exec()){
qDebug()«"Ошибка при получении данных"«qry.lastError();}else{if(qry.next()){
QString name=qry.value(0).toString();
QString vat=qry.value(1).toString();
QString phone=qry.value(2).toString();
QString address=qry.value(3).toString();
QString email=qry.value(4).toString();
QString website=qry.value(5).toString();
laboratorydetails.push_front(name);
laboratorydetails.push_front(vat);
laboratorydetails.push_front(phone);
laboratorydetails.push_front(address);
laboratorydetails.push_front(email);
laboratorydetails.push_front(website);}else{
qDebug()«"запрос не выполняется";}}return laboratorydetails;}
bool Dbase_admin::removeLaboratoryDetails(){bool sucess=false;QSqlQuery qry;
qry.prepare("DELETE FROM Laboratory");
if(qry.exec()){sucess=true;}else{sucess=false;
qDebug()«"не удалось удалить таблицу 'лабораторию'";}return sucess;}
void Dbase_admin::createLaboratorianTable(){QSqlQuery qry;
qry.prepare("CREATE TABLE Laboratorian(Name TEXT,UserName TEXT,Gender TEXT,Phone TEXT,Email TEXT,Password TEXT)");
if (!qry.exec()){qDebug() «"Не удалось создать таблицу, возможно, она имя пользователя ужеиспользуется";}else{
qDebug()«"Создание таблицы";}}

bool Dbase_admin::addLaboratorianDetails(const QString &name, const QString &uname,const QString &gender,const QString &phone, const QString &email, const QString &password){bool sucess=false;QSqlQuery qry;qry.prepare("INSERT INTO Laboratorian(Name,UserName,Gender,Phone,Email,Password) VALUES (:name,:uname,:gender,:phone,:email,:password)");
qry.bindValue(":name",name);

Программный код модуля «qbase_admin».

qry.bindValue(":uname",uname);
1   2   3   4   5   6   7   8   9   10


написать администратору сайта