"Автоматизированная система поддержки принятия решений по оценке степени доверия - страница №7/7
Приложение 1
Список альтернатив
Альтернатива №1
Псевдоним: Forest
Дата регистрации: 01.01.2000
Номер телефона: 8 915 123 45 67
Адрес электронной почты: forest@bk.ru
ФИО:
Лесной Степан Петрович
Дата рождения:
11. 11. 1978
Место рождения: Москва
Адрес фактического проживания: Москва, Славянский бульвар 12 -14
Сведения о работе: трудоустроен, продавец, 2 года
Наличие судимости: не судим
Серия, номер паспорта : 45 98 123456
Кем выдан паспорт: ОВД «Домодедово»
Когда выдан паспорт: 11.12.1998
Годовой доход: 550 000
Альтернатива №2
Псевдоним: Ваня
Дата регистрации : 04.07.2011
Номер телефона : +375296575884
Адрес электронной почты: Vanya_Vanya@bk.ru
ФИО :
Михеев Иван Иванович
Дата рождения:
19. 10. 1983
Место рождения : Минск
Адрес фактического проживания: Минск, октябрьская площадь 33 -57
Сведения о работе: не трудоустроен
Наличие судимости: судим
Серия, номер паспорта : МР177355
Кем выдан паспорт : ОВД Октябрьский
Когда выдан паспорт : 15.12.1990
Годовой доход: 300 000
Альтернатива №3
Псевдоним : Supermen
Дата регистрации : 27.12.2012
Номер телефона : 8 905 958 57 88
Адрес электронной почты: Supermen@inbox.ru
ФИО :
Толя Василий Петрович
Дата рождения: 27.11.1980
Место рождения : Химки
Адрес фактического проживания:
Химки, южная 13
Сведения о работе:
не трудоустроен
Наличие судимости: не судим
Серия, номер паспорта :4600464607
Кем выдан паспорт : ОВД Химки
Когда выдан паспорт : 16.07.2000
Годовой доход: 68 000
Альтернатива №4
Псевдоним : Duncan
Дата регистрации : 16.04.1997
Номер телефона : 8 927 698 55 55
Адрес электронной почты: marina_duncan@inbox.ru
ФИО :
Дункан Марина Всеволодовна
Дата рождения: 23.06.1957
Место рождения : Кишинёв
Адрес фактического проживания:
Звенигород, Смотровая 7
Сведения о работе: трудоустроена, уборщица, 7 лет
Наличие судимости: Судима
Серия, номер паспорта : p458751
Кем выдан паспорт : посольство Молдавии
Когда выдан паспорт : 15.07.2003
Годовой баланс: 480 000
Альтернатива №5
Псевдоним : Печкин
Дата регистрации : 30.04.2003
Номер телефона : 8917773773
Адрес электронной почты : pechkin@bk.ru
ФИО : Печкин Артем Игоревич
Дата рождения: 13.08.1990
Место рождения: Москва
Адрес фактического проживания: Москва, Комсомольская 15-377
Сведения о работе: трудоустроен, официант, 1 год
Наличие судимости: не судим
Серия, номер паспорта : 4511333777
Кем выдан паспорт : ОВД Добрынинский
Когда выдан паспорт : 11.11.2011
Годовой доход: 310 000
Альтернатива №6
Псевдоним : Мария
Дата регистрации : 31.05.2006
Номер телефона : 89655554433
Адрес электронной почты : lubimaya@mail.ru
ФИО :
Морковь Мария Андреевна
Дата рождения: 27.10.1987
Место рождения : Киев
Адрес фактического проживания:
Киев, Космос 15а
Сведения о работе: трудоустроена, учительница, 3 года
Наличие судимости: условная
Серия, номер паспорта : ВВ888751
Кем выдан паспорт : МВД «города Киев»
Когда выдан паспорт : 25.12.2000
Годовой доход: 440 000
Альтернатива №7
Псевдоним : Маляр
Дата регистрации : 11.12.2007
Номер телефона : 8 985 358 14 75
Адрес электронной почты : malyar@inbox.ru
ФИО : Маляр Надежда Михайловна
Дата рождения: 19.11.1968
Место рождения: Москва
Адрес фактического проживания:
Вологда, Лесная 15-22
Сведения о работе: трудоустроена, маляр, 15 лет
Наличие судимости: не судим
Серия, номер паспорта : 45 97 368452
Кем выдан паспорт : ОВД «Орехово-Зуево»
Когда выдан паспорт : 19.11.2000
Годовой доход: 390 000
Альтернатива №8
Псевдоним : Рыбак
Дата регистрации : 17.07.2008
Номер телефона : 89177172934
Адрес электронной почты : RYBAk@inbox.ru
ФИО :
Карась Сергей Викторович
Дата рождения: 23.06.1972
Место рождения: Сочи
Адрес фактического проживания:
Астрахань, Бахчевая 33
Сведения о работе:
не трудоустроен, инвалид
Наличие судимости: не судим
Серия, номер паспорта : 1492449914
Кем выдан паспорт : ОВД Астрахань
Когда выдан паспорт : 25.10.1992
Годовой доход: 120 000
Альтернатива №9
Псевдоним : Пиво
Дата регистрации : 16.04.2013
Номер телефона : 8 985 7412589
Адрес электронной почты : volna@bk.ru
ФИО : Пиво Ольга Степановна
Дата рождения: 29.02.1994
Место рождения: Деревня Корни
Адрес фактического проживания:
Деревня Корни,54
Сведения о работе:
в поле, пахарь, 5 лет
Наличие судимости:
не судим
Серия, номер паспорта : 74041444474
Кем выдан паспорт : ОВД Тольятти
Когда выдан паспорт : 11.04.2004
Годовой доход: 200 000
Альтернатива №10
Псевдоним : Чайхана
Дата регистрации : 21.03.2013
Номер телефона :
8 916 789 6541
Адрес электронной почты : chayhana@bk.ru
ФИО : Чу Татьяна Ли
Дата рождения: 19.12.1977
Место рождения: Москва
Адрес фактического проживания:
Коломна, Греческая 17-1-13
Сведения о работе: трудоустроена, кафе-леди, 10 лет
Наличие судимости: условная
Серия, номер паспорта : 45 11 145698
Кем выдан паспорт : ОВД Коломны
Когда выдан паспорт : 14.01.2011
Годовой доход: 500 000
Альтернатива №11
Псевдоним : Capricorn7b
Дата регистрации : 21.11.2005
Номер телефона :
8 916 523 35 87
Адрес электронной почты:
Capri@mail.ru
ФИО :
Иволгин Гаврила Ардалионович
Дата рождения:
05. 10. 1978
Место рождения:
Санкт-Петербург
Адрес фактического проживания:
Санкт-Петербург, Остров 1 - 13
Сведения о работе: трудоустроен, ассистент генерального директора, 2 года
Наличие судимости: не судим
Серия, номер паспорта : 45 98 654321
Кем выдан паспорт : ОВД «Пулково»
Когда выдан паспорт : 02.08.2000
Годовой доход: 1 000 000
Альтернатива №12
Псевдоним : Foxyunix
Дата регистрации : 21.03.2003
Номер телефона :
8 926 583 44 97
Адрес электронной почты : FoxyuNix@mail.ru
ФИО :
Барашкина Анастасия Филипповна
Дата рождения:
06. 07. 1983
Место рождения: Санкт-Петербург
Адрес фактического проживания:
Санкт-Петербург, Крымская 11-99
Сведения о работе: трудоустроен, модель, 1 год
Наличие судимости: не судима
Серия, номер паспорта : 45 98 658751
Кем выдан паспорт : ОВД «Черная речка»
Когда выдан паспорт : 05.10.2002
Годовой доход: 700 000
Альтернатива №13
Псевдоним : tigra
Дата регистрации : 21.03.2004
Номер телефона :
8 926 588 48 97
Адрес электронной почты : lopatka@mail.ru
ФИО : Пурмель Игорь Владимирович
Дата рождения:
12. 12. 1962
Место рождения: Москва
Адрес фактического проживания:
Москва, Набережная 54-52
Сведения о работе: трудоустроен, инженер, 20 лет
Наличие судимости: судим
Серия, номер паспорта : 45 77 357781
Кем выдан паспорт : ОВД «Коломенский»
Когда выдан паспорт : 08.03.2010
Годовой доход: 300 000
Альтернатива №14
Псевдоним : losyara1975
Дата регистрации : 21.05.2001
Номер телефона :
8 903 482 42 17
Адрес электронной почты :
guro@mail.ru
ФИО :
Митрофанов Алексей Владимирович
Дата рождения:
12. 10. 1975
Место рождения: Москва
Адрес фактического проживания:
Москва,
Набережная 55-130
Сведения о работе: трудоустроен, полицейский, 10 лет
Наличие судимости: не судим
Серия, номер паспорта : 44 00 787251
Кем выдан паспорт : ОВД «Перово»
Когда выдан паспорт : 08.10.2000
Годовой доход: 500 000
Альтернатива №15
Псевдоним : knyaz
Дата регистрации : 11.02.2006
Номер телефона :
8 905 333 74 18
Адрес электронной почты :
knyaz@mail.ru
ФИО : Мышкин Лев Николаевич
Дата рождения:
10. 10. 1970
Место рождения: Москва
Адрес фактического проживания:
Москва,
Изюмская 21-1-78
Сведения о работе: трудоустроен, менеджер, 5 лет
Наличие судимости: не судим
Серия, номер паспорта : 44 04 148851
Кем выдан паспорт : ОВД «Измайлово»
Когда выдан паспорт : 08.05.2004
Годовой доход : 500 000
Альтернатива №16
Псевдоним : Zidan
Дата регистрации : 13.04.2009
Номер телефона :
8 915 254 54 78
Адрес электронной почты: nekto@gmail.ru
ФИО : Птицын Иван Петрович
Дата рождения:
10. 12. 1965
Место рождения: Москва
Адрес фактического проживания:
Москва,
Смоленская 19-19
Сведения о работе: трудоустроен, кассир, 15 лет
Наличие судимости: условная
Серия, номер паспорта : 44 03 144242
Кем выдан паспорт : ОВД «Лефортово»
Когда выдан паспорт : 08.07.2003
Годовой доход: 320 000
Альтернатива №17
Псевдоним : Brat
Дата регистрации : 03.11.2001
Номер телефона :
8 915 754 44 64
Адрес электронной почты:
booyan@gmail.ru
ФИО :
Рогожин Парфен Семенович
Дата рождения:
09. 05. 1969
Место рождения: Москва
Адрес фактического проживания:
Москва,
Смоленская 9-178
Сведения о работе: трудоустроен, предприниматель, 4 года
Наличие судимости: не судим
Серия, номер паспорта : 44 05 144242
Кем выдан паспорт : ОВД «Можайский»
Когда выдан паспорт : 18.07.2005
Годовой доход: 1300 000
Альтернатива №18
Псевдоним : Хирург
Дата регистрации : 12.06.2004
Номер телефона :
8 985 777 65 14
Адрес электронной почты:
vrach@mail.ru
ФИО :
Таранов Федор Васильевич
Дата рождения:
29. 07. 1981
Место рождения: Москва
Адрес фактического проживания:
Москва, Юбилейная 23
Сведения о работе: трудоустроен, фельдшер, 3 года
Наличие судимости: не судим
Серия, номер паспорта : 44 02 957942
Кем выдан паспорт : ОВД «Бутово»
Когда выдан паспорт : 28.12.2002
Годовой доход: 240 000
Альтернатива №19
Псевдоним : Вальс
Дата регистрации : 14.06.2012
Номер телефона :
8 915 747 79 30
Адрес электронной почты:
tanec@gmail.com
ФИО : Смирнова Наталья Андреевна
Дата рождения: 15.08.1950
Место рождения: Москва
Адрес фактического проживания:
Москва, Юбилейный проезд 7
Сведения о работе: трудоустроен, танцовщица, 30 лет
Наличие судимости: судима
Серия, номер паспорта : 47 02 943172
Кем выдан паспорт : ОВД «Кунцево»
Когда выдан паспорт : 01.07.2002
Годовой доход: 250 000
Приложение 2
Текст программы
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include
#include
#include
#include
#include
#include
#include
char situation_1[] = {1,1,1,1,1};
char situation_2[] = {2,1,1,2,2};
char situation_3[] = {2,2,2,2,2};
char situation_4[] = {3,2,3,3,2};
char situation_5[] = {3,3,3,3,3};
//********************* подсказка оператору ***********************
QString situationInfo[5];
int readSqlSetting(dbSettingMySql *setting)
{
QFile fileSetting("config.cfg");
QTextStream fileStream(&fileSetting);
if(!fileSetting.open(QIODevice::ReadOnly | QIODevice::Text))
{
QMessageBox::critical(NULL, "Ошибка", "Не удалось открыть файл настроек");
return ERR_CRITICAL;;
}
// пропуск строки коментария
fileStream.readLine();
//чтение строки настроек
strcpy_s(setting->host, 128, fileStream.readLine().toLocal8Bit().data());
fileStream.readLine();
// пропуск строки коментария
fileStream.readLine();
//чтение строки настроек
strcpy_s(setting->login, 128, fileStream.readLine().toLocal8Bit().data());
fileStream.readLine();
// пропуск строки коментария
fileStream.readLine();
//чтение строки настроек
strcpy_s(setting->password, 128, fileStream.readLine().toLocal8Bit().data());
fileStream.readLine();
// пропуск строки коментария
fileStream.readLine();
//чтение строки настроек
strcpy_s(setting->nameDB, 128, fileStream.readLine().toLocal8Bit().data());
fileStream.readLine();
// пропуск строки коментария
fileStream.readLine();
//чтение строки настроек
strcpy_s(setting->nameTablClients, 128, fileStream.readLine().toLocal8Bit().data());
fileStream.readLine();
// пропуск строки коментария
fileStream.readLine();
//чтение строки настроек
strcpy_s(setting->nameTablCLientsData, 128, fileStream.readLine().toLocal8Bit().data());
fileStream.readLine();
// пропуск строки коментария
fileStream.readLine();
//чтение строки настроек
strcpy_s(setting->nameTablVariantAccessRight, 128, fileStream.readLine().toLocal8Bit().data());
//закрытие файла
fileSetting.close();
return 0;
}
int writeSqlSetting(dbSettingMySql setting)
{
QFile fileSetting("config.cfg");
QTextStream fileStream(&fileSetting);
if(!fileSetting.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Truncate))
{
QMessageBox::critical(NULL, "Ошибка", "Не удалось открыть файл настроек");
return ERR_CRITICAL;;
}
// запись строки коментария
fileStream
//запись строки настроек
fileStream
fileStream
// запись строки коментария
fileStream
//запись строки настроек
fileStream
fileStream
// запись строки коментария
fileStream
//запись строки настроек
fileStream
fileStream
// запись строки коментария
fileStream
//запись строки настроек
fileStream
fileStream
// запись строки коментария
fileStream
//запись строки настроек
fileStream
fileStream
// запись строки коментария
fileStream
//запись строки настроек
fileStream
fileStream
// запись строки коментария
fileStream
//запись строки настроек
fileStream
fileStream
//закрытие файла
fileSetting.close();
return 0;
}
int dbSqlStart(dbSettingMySql *setting)
{
/*
if(setting->MySqlConnectDB == NULL)
{
QMessageBox::critical(NULL, "Ошибка", "Не удалось создать SQL подключение");
return ERR_CRITICAL;
}
*/
if(!mysql_real_connect(setting->MySqlConnectDB, setting->host, setting->login, setting->password, setting->nameDB, NULL, NULL, 0))
{
// Если нет возможности установить соединение с сервером
// базы данных выводим сообщение об ошибке
QMessageBox::critical(NULL, "Ошибка", "Сервер или база данных не доступны");
return ERR_CONNECT;
}
//результат запроса
MYSQL_RES *res;
//строка
//MYSQL_ROW row;
// Проверка существования таблицы
QString query("show tables like '");
query += QString(setting->nameTablClients) + "'";
if (mysql_query(setting->MySqlConnectDB, query.toLocal8Bit().data()))
{
QMessageBox::critical(NULL, "Ошибка", mysql_error(setting->MySqlConnectDB));
}
res = mysql_store_result(setting->MySqlConnectDB);
int colRow = (int)mysql_num_rows(res);
std::cerr if(colRow
{
QString tmp("Табица \"");
tmp += QString(setting->nameTablClients);
tmp += QString("\" недоступна, проверьте имена таблиц");
QMessageBox::critical(NULL, "Ошибка", tmp );
return ERR_CRITICAL;
}
// Проверка существования таблицы
query = "show tables like '";
query += QString(setting->nameTablCLientsData) + "'";
if (mysql_query(setting->MySqlConnectDB, query.toLocal8Bit().data()))
{
QMessageBox::critical(NULL, "Ошибка", mysql_error(setting->MySqlConnectDB));
}
res = mysql_store_result(setting->MySqlConnectDB);
colRow = (int)mysql_num_rows(res);
std::cerr if(colRow
{
QString tmp("Табица \"");
tmp += QString(setting->nameTablCLientsData);
tmp += QString("\" недоступна, проверьте имена таблиц");
QMessageBox::critical(NULL, "Ошибка", tmp );
return ERR_CRITICAL;
}
//установка русской кодировки
//mysql_query(setting->MySqlConnectDB, "SET NAMES 'utf8'");
//mysql_query(setting->MySqlConnectDB, "SET CHARACTER SET 'utf8'");
mysql_query(setting->MySqlConnectDB, "SET NAMES 'cp1251'");
mysql_query(setting->MySqlConnectDB, "SET CHARACTER SET 'cp1251'");
return 0; //OK
}
int computeSituation(userDataForSituation dataSituation, char *situationCoeff)
{
QDate res;
//******** время регистрации в системе *************************************
res.fromJulianDay(QDate::currentDate().toJulianDay() - dataSituation.dateReg.toJulianDay());
if(res.year() > 1)
{
situationCoeff[0] = 3;
}
else if(res.month()
{
situationCoeff[0] = 1;
}
else
{
situationCoeff[0] = 2;
}
//******** судимость *************************************
if(dataSituation.conviction == 0)
{
situationCoeff[1] = 3;
}
else if(dataSituation.conviction == 1)
{
situationCoeff[1] = 2;
}
else if(dataSituation.conviction == 2)
{
situationCoeff[1] = 1;
}
else
{
-1;
}
//******** время работы на последнем месте *************************************
if(dataSituation.dateWorking.isNull())
{
res.fromJulianDay(QDate::currentDate().toJulianDay() - dataSituation.dateWorking.toJulianDay());
if(res.year() > 3)
{
situationCoeff[2] = 3;
}
else if(res.year()
{
situationCoeff[2] = 2;
}
else
{
-1;
}
}
else
{
situationCoeff[3] = 1;
}
//******** возраст *************************************
res.fromJulianDay(QDate::currentDate().toJulianDay() - dataSituation.dateBurstDay.toJulianDay());
if(res.year() 70)
{
situationCoeff[3] = 1;
}
else if(res.year() 60)
{
situationCoeff[3] = 2;
}
else
{
situationCoeff[3] = 3;
}
//******** годовой доход т.р. *************************************
if(dataSituation.annualIncome >= 500)
{
situationCoeff[4] = 3;
}
else if(dataSituation.annualIncome
{
situationCoeff[4] = 1;
}
else
{
situationCoeff[4] = 2;
}
return 0;
}
int getCoef(userDataForSituation dataSituation)
{
char coeff[5];
computeSituation(dataSituation, coeff);
std::cerr
float distance1 = sqrt(pow((float)situation_1[0]-(float)coeff[0], 2) + pow((float)situation_1[1]-(float)coeff[1], 2) + \
pow((float)situation_1[2]-(float)coeff[2], 2) + pow((float)situation_1[3]-(float)coeff[3], 2) + \
pow((float)situation_1[4]-(float)coeff[4], 2));
float distance2 = sqrt(pow((float)situation_2[0]-(float)coeff[0], 2) + pow((float)situation_2[1]-(float)coeff[1], 2) + \
pow((float)situation_2[2]-(float)coeff[2], 2) + pow((float)situation_2[3]-(float)coeff[3], 2) + \
pow((float)situation_2[4]-(float)coeff[4], 2));
float distance3 = sqrt(pow((float)situation_3[0]-(float)coeff[0], 2) + pow((float)situation_3[1]-(float)coeff[1], 2) + \
pow((float)situation_3[2]-(float)coeff[2], 2) + pow((float)situation_3[3]-(float)coeff[3], 2) + \
pow((float)situation_3[4]-(float)coeff[4], 2));
float distance4 = sqrt(pow((float)situation_4[0]-(float)coeff[0], 2) + pow((float)situation_4[1]-(float)coeff[1], 2) + \
pow((float)situation_4[2]-(float)coeff[2], 2) + pow((float)situation_4[3]-(float)coeff[3], 2) + \
pow((float)situation_4[4]-(float)coeff[4], 2));
float distance5 = sqrt(pow((float)situation_5[0]-(float)coeff[0], 2) + pow((float)situation_5[1]-(float)coeff[1], 2) + \
pow((float)situation_5[2]-(float)coeff[2], 2) + pow((float)situation_5[3]-(float)coeff[3], 2) + \
pow((float)situation_5[4]-(float)coeff[4], 2));
float resDistance = 100000; //заведомо максимальное значение
int coef;
if(resDistance > distance1){ resDistance = distance1; coef = 1; }
if(resDistance > distance2){ resDistance = distance2; coef = 2; }
if(resDistance > distance3){ resDistance = distance3; coef = 3; }
if(resDistance > distance4){ resDistance = distance4; coef = 4; }
if(resDistance > distance5){ resDistance = distance5; coef = 5; }
return coef;
}
//************************* AppLogic.c****************************
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
// Устанвка свойств первой таблицы
model = new QStandardItemModel(0,5,this);
model->setHorizontalHeaderItem(0, new QStandardItem(QString("Номер\nучастника")));
model->setHorizontalHeaderItem(1, new QStandardItem(QString("Псевдоним")));
model->setHorizontalHeaderItem(2, new QStandardItem(QString("Номер\nтелефона")));
model->setHorizontalHeaderItem(3, new QStandardItem(QString("Электронная\nпочта")));
model->setHorizontalHeaderItem(4, new QStandardItem(QString("Коэффициент\nдоверия")));
ui->tableView->setModel(model);
ui->tableView->horizontalHeader()->setStretchLastSection(true);
ui->tableView->verticalHeader()->setDefaultSectionSize(20);
ui->tableView->setContextMenuPolicy(Qt::CustomContextMenu);
//ui->tableView->setEnabled(false);
// Установка свойств второй таблицы
model2 = new QStandardItemModel(0,2,this);
ui->tableView_2->setModel(model2);
ui->tableView_2->horizontalHeader()->setStretchLastSection(true);
ui->tableView_2->verticalHeader()->setDefaultSectionSize(20);
model2->setHorizontalHeaderItem(0, new QStandardItem(QString("Поле")));
model2->setHorizontalHeaderItem(1, new QStandardItem(QString("Данные")));
ui->tableView_2->horizontalHeader()->setDefaultSectionSize(200);
//ui->tableView_2->setEnabled(false);
/*
model.setHorizontalHeaderLabels(
QStringList()
QList rows = QList()
foreach(QStringList row, rows)
{
QList items;
foreach (QString text, row)
items.append(new QStandardItem(text));
model.appendRow(items);
} */
//****************Настройка базы данных*******************************
//инициализация структуры
mysql_init(&dbConectMySql);
//сохранение адреса dbConectMySql в настройки
dbSetting.MySqlConnectDB = &dbConectMySql;
//загрузка настроек из файла
readSqlSetting(&dbSetting);
//функция проверки доступности БД
dbSqlStart(&dbSetting);
memoListTable.append(QString("Номер в базе"));
memoListTable.append(QString("Фамилия"));
memoListTable.append(QString("Имя"));
memoListTable.append(QString("Отчество"));
memoListTable.append(QString("Дата рождения"));
memoListTable.append(QString("Место рождения"));
memoListTable.append(QString("Номер паспорта"));
memoListTable.append(QString("Дата выдачи паспорта"));
memoListTable.append(QString("Место выдачи паспорта"));
memoListTable.append(QString("Судимость"));
memoListTable.append(QString("Адрес места работы"));
memoListTable.append(QString("Годовой доход т.р."));
memoListTable.append(QString("Степень доверия"));
memoListTable.append(QString("Предоставление кредита"));
memoListTable.append(QString("Покупки в магазинах"));
memoListTable.append(QString("Банковские операции"));
memoListTable.append(QString("Размер предоставляемого кредита"));
situationInfo[4] = "Полное доверие = {3,3,3,3,3}\n"
"- может брать/давать кредит\n"
"- может оплачивать интернет услуги\n"
"- может выводить средства\n"
"- лимит 10000 $";
situationInfo[3] = "Достаточное доверие = {3,2,3,3,2}\n"
"- не может брать/давать кредит\n"
"- может оплачивать интернет услуги\n"
"- может выводить средства\n"
"- лимит 5000 $";
situationInfo[2] = "Средний уровень доверия = {2,2,2,2,2}\n"
"- не может брать/давать кредит\n"
"- может оплачивать интернет услуги\n"
"- может выводить средства\n"
"- лимит 1000$ долларов";
situationInfo[1] = "Низкий уровень доверия = {2,1,1,2,2}\n"
"- не может брать/давать кредит\n"
"- может оплачивать интернет услуги\n"
"- может выводить средства\n"
"- лимит 500 баксов";
situationInfo[0] = "Отсутствие доверия = {1,1,1,1,1}\n"
"- не может брать/давать кредит\n"
"- может оплачивать интернет услуги\n"
"- не может выводить средства\n"
"- лимит 0";
}
MainWindow::~MainWindow()
{
delete ui;
delete model;
delete model2;
mysql_close(&dbConectMySql);
memoListTable.clear();
}
// ПОИСК В БД
void MainWindow::on_commandLinkButton_pressed()
{
QString query("select idclients, login, tel, email, accessRights from clients join clientsData on clients.idclients = clientsdata.idclient ");
MYSQL_RES *res;
MYSQL_ROW row;
int isWheare = 0;
QString search;
//Фамилия
if(ui->lineEdit->text().length() > 2)
{
if(isWheare) {search.append(",");}
isWheare = 1;
search.append(" family = \"" + ui->lineEdit->text() + "\"");
}
else if(ui->lineEdit_2->text().length() > 2)
{
if(isWheare) {search.append(",");}
isWheare = 1;
search.append(" name = \"" + ui->lineEdit_2->text() + "\"");
}
else if(ui->lineEdit_3->text().length() > 2)
{
if(isWheare) {search.append(",");}
isWheare = 1;
search.append(" lastName = \"" + ui->lineEdit_3->text() + "\"");
}
else if(ui->lineEdit_4->text().length() > 2)
{
if(isWheare) {search.append(",");}
isWheare = 1;
search.append(" passportNum = \"" + ui->lineEdit_4->text() + "\"");
}
else if(ui->lineEdit_5->text().length() > 2)
{
if(isWheare) {search.append(",");}
isWheare = 1;
search.append(" email = \"" + ui->lineEdit_5->text() + "\"");
}
else if(ui->comboBox->currentIndex() > 0)
{
if(isWheare) {search.append(",");}
isWheare = 1;
search.append(" accessRights = \"" + QString::number(ui->comboBox->currentIndex()) + "\"");
}
// Добавление параметров поиска
if(isWheare)
{
query += " AND " + search;
}
if (mysql_query(&dbConectMySql, query.toLocal8Bit().data()))
{
QMessageBox::critical(NULL, "Ошибка", mysql_error(&dbConectMySql));
}
res = mysql_store_result(&dbConectMySql);
if(mysql_num_rows(res)
{
std::cerr
}
//удаление предыдущего результата
model->clear();
// вывод результата запроса
QList itemsTableTop;
while(row = mysql_fetch_row(res))
{
for (unsigned int i=0 ; i
{
itemsTableTop.append(new QStandardItem(row[i]));
std::cerr
}
model->appendRow(itemsTableTop);
itemsTableTop.clear();
}
ui->textEdit->setText(query);// return;
return;
}
void MainWindow::on_tableView_pressed(const QModelIndex &index)
{
userDataForSituation DataSituation;
//QModelIndex index;
if(model->rowCount()
QString idClientData = model->index(index.row(), 0).data().toString();
//формирование запроса на выборку
QString query("SELECT idclient, family, name, "
"lastName, dateBD, locationBD, passportNum, "
"passportDate, passportEmit, conviction, "
"jobAddress, annualIncome, confidence, giveCredit, PayAtTheStore, "
"banking, giveCreditSumRUR "
"FROM " + QString(dbSetting.nameTablCLientsData) + " join"
" " + QString(dbSetting.nameTablVariantAccessRight) + " ON "
" " + QString(dbSetting.nameTablCLientsData) + ".idClient = \"" + idClientData + \
"\" AND " + QString(dbSetting.nameTablVariantAccessRight) + ".idvariantAccessRight = " \
+ QString(dbSetting.nameTablCLientsData) + ".idCLient" );
ui->textEdit->setText(query);// return;
MYSQL_RES *res;
MYSQL_ROW row;
if (mysql_query(&dbConectMySql, query.toLocal8Bit().data()))
{
QMessageBox::critical(NULL, "Ошибка", mysql_error(&dbConectMySql));
return;
}
res = mysql_store_result(&dbConectMySql);
if(mysql_num_rows(res)
{
std::cerr
}
//удаление предыдущего результата
model2->clear();
// вывод результата запроса
QList itemsTableTop;
QListIterator strDataIter(memoListTable);
while(row = mysql_fetch_row(res))
{
for (unsigned int i=0 ; i
{
switch(i)
{
case 17: //дата регистрации в системе
DataSituation.dateReg = QDate::fromString(QString::fromLocal8Bit( row[i]), Qt::ISODate); // YYYY-MM-DD
break;
case 9: // судимость
DataSituation.conviction = (char)QString::fromLocal8Bit( row[i]).toInt();
break;
case 18: // стаж на последнем месте работы
DataSituation.dateWorking = QDate::fromString(QString::fromLocal8Bit( row[i]), Qt::ISODate); // YYYY-MM-DD
break;
case 4: // возраст
DataSituation.dateBurstDay = QDate::fromString(QString::fromLocal8Bit( row[i]), Qt::ISODate); // YYYY-MM-DD
break;
case 11: // годовой доход
DataSituation.annualIncome = QString::fromLocal8Bit( row[i]).toInt();
break;
default:
break;
}
itemsTableTop.append(new QStandardItem(strDataIter.next()));
if(i 15)
{
itemsTableTop.append(new QStandardItem(QString::fromLocal8Bit( row[i])));
}
else
{
QString tmp;
if(QString::fromLocal8Bit( row[i]) == "0")
{
tmp = "Нет";
}
else
{
tmp = "Да";
}
itemsTableTop.append(new QStandardItem(tmp));
}
model2->appendRow(itemsTableTop);
itemsTableTop.clear();
}
}
//вычисление степени доверия
int coefUser = getCoef(DataSituation);
model2->setItem(12,2,&QStandardItem(QString::number(coefUser)));
// информация оператору
ui->textEdit_2->setText(situationInfo[coefUser]);
}
int MainWindow::dbDeleteClientData(dbSettingMySql *setting, int idClient)
{
//формирование запроса на выборку
QString query("DELETE FROM " + QString(setting->nameTablClients) + " WHERE "
"idClients = " + QString::number(idClient));
ui->textEdit->setText(query);// return;
QString query2("DELETE FROM " + QString(setting->nameTablCLientsData) + " WHERE "
"idClient = " + QString::number(idClient));
ui->textEdit->setText(query2);// return;
MYSQL_RES *res;
MYSQL_ROW row;
if (mysql_query(&dbConectMySql, query.toLocal8Bit().data()))
{
QMessageBox::critical(NULL, "Ошибка", mysql_error(&dbConectMySql));
return ERR_QUERY;
}
if (mysql_query(&dbConectMySql, query2.toLocal8Bit().data()))
{
QMessageBox::critical(NULL, "Ошибка", mysql_error(&dbConectMySql));
return ERR_QUERY;
}
return 0;
}
void MainWindow::on_tableView_customContextMenuRequested(const QPoint &pos)
{
if(model->rowCount()
int selectedRow = ui->tableView->selectionModel()->currentIndex().row();
//numClient - ID выбранного клиента
QString idClientData = model->index(selectedRow, 0).data().toString();
QPushButton *popupButton = new QPushButton/*(tr("Pop&up Button"))*/;
QMenu *menu = new QMenu(this);
menu->addAction("Обновить данные клиента");
menu->insertSeparator(0);
menu->addAction("Удалить данные клиента");
popupButton->setMenu(menu);
QAction* selectedItem;
selectedItem = menu->exec(QCursor::pos());
if(selectedItem == NULL)
{
return;
}
if(selectedItem->text() == "Обновить данные клиента")
{
std::cerr
return;
}
if(selectedItem->text() == "Удалить данные клиента")
{
std::cerr
dbDeleteClientData(&dbSetting, idClientData.toInt());
model->removeRow(selectedRow);
return;
}
}
Приложение 3. Графическая часть.
6.Список использованной литературы.
[1] http://knowledge.allbest.ru/bank/2c0b65625a3bd68a4c43a88421306c37_0.html
[2] www.studmed.ru/docs/document24164/реферат-вербальный-анализ-принятия-решений
[3] http://lissianski.narod.ru/dwarch/dwarch.html
[4] http://ru.wikipedia.org/wiki/Метод Дельфи
[5] Системы поддержки принятия решений, конспект лекций МИЭМ
[6] www.rusdoc.ru/articles/elektrodengi--obzor_elektronnyx_platezhnyx_sistem_interneta
[7] Компьютерные технологии в бизнесе, региональный финансово экономический институт, Курск 2011
[8] http://ru.wikipedia.org/wiki/EasyPay
[9] ru.wikipedia.org/wiki/Иерархическая_модель_данных
[10] Информационные системы поддержки принятия управленческих решений. Конспект лекций. - Самара.:ГОУВПО ПГУТИ , 2011
[11] Атанасян Л.С., Бутузов В.Ф., Кадомцев С.Б., Киселева Л.С., Позняк Э.Г. Геометрия. Учебник для 10-11 классов средней школы.
[12] ru.wikipedia.org/wiki/Firebird
[13] www.coolreferat.com/Системы_электронных_платежей_интернета
[14].http://knowledge.allbest.ru/management
[15] Ларичев О.И. Теория и методы принятия решений, а так же хроника событий в Волшебных странах, Логос 2000
[16] ru.wikipedia.org/wiki/База_данных
[17] ru.wikipedia.org/wiki/Объектно-ориентированная_база_данных
[18] ru.wikipedia.org/wiki/Сетевая_модель_данных
[19] ru.wikipedia.org/wiki/Первичный_ключ
[20] ru.wikipedia.org/wiki/Microsoft_Access
[21] ru.wikipedia.org/wiki/MySQL
[22] ru.wikipedia.org/wiki/Microsoft_SQL_Server