Дипломная (вкр): Таблицы принятия решений в СУБД с табличной моделью данных

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

 i IN 1..v_action LOOP --записываем названия условий в массив

SELECT action INTO m_action(i) FROM metadatasid = c_sidaction_id = i;

END LOOP;

i IN 1..v_condition LOOP --записываем логические операции в массив

SELECT connection INTO m_connection(i) FROM metadatasid = c_sidcondition_id = i;LOOP;

COUNT(prod_id) INTO v_product --находим количество продукцийdecisionsid = c_sid;

i IN 1..v_product LOOP:=q||', prod_'||i||' VARCHAR(30)';LOOP;

COUNT(table_name) INTO c FROM user_tables WHERE table_name='DECISION_'||p_table_id;c=0 THEN_execute :='CREATE GLOBAL TEMPORARY TABLE decision_'||p_table_id||'(names varchar2(100)'||q||') ON COMMIT DELETE ROWS';IMMEDIATE q_execute;IF;

FOR i IN 1..v_product LOOP --=== режем все продукции на элементы и записываем в один ольшой массив

SELECT conditions INTO m_conditiondecisionsid = c_sidprod_id = i;

j IN 1..v_condition LOOPj <> v_condition THENregexp_substr(m_condition, '[^'||m_connection(j)||']+', 1, 1) INTO m_product((i-1)*v_condition+j)dual; -- выпезаем первое условие

INSTR(m_condition, m_connection(j)) INTO v_in_str

FROM dual; -- находим позицию первого соединения

SELECT SUBSTR(m_condition, v_in_str + 1, LENGTH(m_condition)) INTO s

FROM dual;_condition := s; -- вырезаем строку с этой позиции и обрабатываем дальше

ELSE m_product((i-1)*v_condition+j) := s;IF;LOOP;LOOP;

i IN 1..v_condition LOOP --=== заполняем decision условиямиcondition INTO m_conditionmetadatasid = c_sidcondition_id = i;

:= '';j IN 1..v_product LOOPDECODE(m_product((j-1)*v_condition+i),'yes','+','no','-','_','/','[/w0-9<>]*') INTO s(SELECT m_product((j-1)*v_condition+i) FROM dual); -- преобразуем ответы в символьный вид:=q||', '''||s||'''';LOOP;_execute:='INSERT INTO decision_'||p_table_id||' VALUES('''||m_condition||''''||q||')';IMMEDIATE q_execute; -- заполняем таблицу условиямиLOOP;

i IN 1..v_action LOOP_execute:='INSERT INTO decision_'||p_table_id||'(names) VALUES('''||m_action(i)||''')';

EXECUTE IMMEDIATE q_execute; -- заполняем таблицу названиями действий

END LOOP;

j IN 1..v_product LOOPactions INTO strdecisionsid = c_sidprod_id = j;

i IN 1..v_condition LOOP -- парсим строку действий в массивi <> v_condition THENregexp_substr(str, '[^'||m_connection(i)||']+', 1, 1) INTO m_product(i)(SELECT str FROM dual);INSTR(str, m_connection(i)) INTO v_in_str FROM (SELECT str FROM dual);SUBSTR(str, v_in_str+1, LENGTH(str)) INTO s FROM (SELECT str FROM dual);:= s;m_product(i):=s;IF;LOOP;

i IN 1..v_condition LOOP -- ставим крестики напротив необходмых действий_execute:='UPDATE decision_'||p_table_id||' SET prod_'||j||'=''x'' WHERE names='''||m_product(i)||'''';IMMEDIATE q_execute;LOOP;LOOP;

_END := SYSTIMESTAMP;_output.put_line('Времы работы: '||(TIME_END-TIME_START));prc_translate;;pkg_get_answer;

ПРИЛОЖЕНИЕ В


Интерфейс пользователя

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> // главная страница

<html xmlns="http://www.w3.org/1999/xhtml" >

<head>

<title>БЗ</title>

<link rel="shortcut icon" href="images/favicon.ico" type="image/x-icon">

<link rel="stylesheet" href="style.css">

<link rel="stylesheet" href="accord.css">

<script type="text/javascript" src="jquery.tools.min.js" ></script>

<script type="text/javascript" src="main.js"></script>

</head>

<body>

<div id='header'>

<img>

<div>

</div>

<div id='wrap'>

<div id="accordion">

<img src="images/i1.jpg" />

<div style="width:200px; display:block">

<h2>Work with knowledgebase </h2>

<a>

</div>

<img src="images/i2.jpg" />

<div >

<h2>Knowledge base</h2>

<a>

</div>

<img src="images/i3.jpg" />

<div>

<h2>Getting started</h2>

<a>

<a>

</div>

<img src="images/i4.jpg" />

<div >

<h2>Manual</h2>

<a>

<a>

</div>

</div>

<div id="dept"></div>

<div>

<a>

<form id="myform1">

<h2>Login form</h2><br>

<div>

<div>

<div>

<div>Login</div> <input type="text" name="name" pattern="[a-zA-Z ]{5,}" minlength="4" maxlength="30" id='log1' />*<br><br>

<div>Password</div> <input type="password" name="password" minlength="4" id='pas1'/>*<br><br>

<button>

<br><br> <a id='registr'>

<A HREF="" id='mainref' ></A>

</form>

</div>

<div>

<a>

<form id="myform2">

<h2>Registration form</h2><br>

<div>Name</div> <input type="text" name="name" maxlength="30" id='name'/>*

<br><br>

<div>

<div>

<fieldset>

<div>

<div>

<div>

</fieldset>

<br><br><br>

<button>

</form>

</div>

</div>

<div id='footer'>footer</div>

</body>

<!-скрипт для главной страницы-->

$(function() {

$("#accordion").tabs("#accordion div", { //Инициализация аккордиона: 'img',: 'horizontal'

});

//$(":date").dateinput({lang: 'fr',});

$('#sp2').parent().css('display', 'none'); //Скрываем 2-ой и 3-ий списки в форме аутентификации

$('#sp3').parent().css('display', 'none');

$("#registr").overlay({                                       // Инициализация регистрационной формы: function() {

//       $("#myform1").validator().destroy();

//       $("#myform2").validator();

$("#logdb").overlay().close();

$('#log1').val("");

$('#pas1').val("");

},: {            color: '#fff',: 200,: 0.65

},

});

$("#myform2").submit(function(e) { // Кнопка submit в регистрационной формеcity = $('#city').val();state = $('#state').val();street = $('#street').val();log = $('#log2').val();name = $('#name').val();pas = $('#pas2').val();

//var sysname=$('#sp1').val();

//alert(sysname);

((log!="")&&(pas!="")) {

$("#registr").overlay().close();

$.ajax({                                  type:'GET',:'index2.php',: "col=insert into data_users (user_id,home_city,home_state,home_street,login,name,password,sysname,domain,subdomain) "

+"values (data_us_seq.nextval,'"+city+"','"+state+"','"+street+"','"+log+"','"+name+"','"+pas

+"','Medicine','Diagnostics','Skin')",: 3000,: function(data){('User is added!');

},

});

}e.preventDefault();

});

$("#myform1").submit(function(e) { // Кнопка submit в аутентификационной формеlog = $('#log1').val();pas = $('#pas1').val();sysname = $('#sp1').val();domain = $('#sp2').val();subdomain = $('#sp3').val();

//alert("("+log+") ("+pas+")");((log!="")&(pas!=""))

{

$.ajax({                                  type:'GET',:'index1.php',: "tag=a&col=select user_id from data_users "+

"where UPPER(sysname)=UPPER('"+sysname+"') and UPPER(domain)=UPPER('"+domain+"') "+

"and UPPER(subdomain)=UPPER('"+subdomain+"') and UPPER(login)=UPPER('"+log+"') and password='"+pas+"'",: 3000,: false,: function(data){

//alert(data);

//if (data != "")

//       {

$("#logdb").overlay().close();

//alert('Welcome!');.location.href ='patients.htm?Name='+sysname+'&ID='+data+'&Domain='+domain+'&Subdomain='+subdomain;

//       }

//else { alert('Неверный логин/пароль'); }

$('#log1').val("");

$('#pas1').val("");

},

});

}e.preventDefault();

});

$("#logdb").overlay({                                         // Инициализация аутентификационной формы: function() {

//$("#myform1").validator();

//$("#myform1").validator().submit(function(e){

//       alert(e.html());

//});

/*$("#myform1").data("validator").onSuccess(function(e, els) {

//alert(els.html());

// we don't want to submit the form. just show events.true;

});*/

$.ajax({:'GET',:'index1.php',: 'tag=option&col=select distinct sysname from decision where LENGTH(sysname)=9',: 3000,: function(data){

//alert(data);

$('#sp1').html("<option value='Please fix this value'>Choose Knowledge base</option>"

+"<option>"+data+"</option>");

},

});

},

});

$('#sp1').change(function() { // Выбор 1-ого списка

$('#sp2').parent().css('display', 'block');

$.ajax({:'GET',:'index1.php',: "tag=option&col=select distinct domain from decision where sysname='"+$('#sp1 option:selected').text()+"'",: 3000,: function(data){

$('#sp2').html("<option value='Please fix this value'> Choose Domain </option>"+"<option>"+data+"</option>");

});

});

$('#sp2').change(function() { // Выбор 2-ого списка

$('#sp3').parent().css('display', 'block');

$.ajax({:'GET',:'index1.php',: "tag=option&col=select distinct subdomain from decision where sysname='"+

$('#sp1 option:selected').text()+"' and domain='"+

$('#sp2 option:selected').text()+"'",: 3000,: function(data){

$('#sp3').html("<option value='Please fix this value'>Choose Subdomain </option>"+"<option>"+data+"</option>");

},

});

});

$("#myform1").bind("onFail", function(e, errors) { // Красный кант

// we are only doing stuff when the form is submitted(e.originalEvent.type == 'submit') {

// loop through Error objects and add the border color

$.each(errors, function() {input = this.input;.css({borderColor: 'red'}).focus(function() {.css({borderColor: '#444'});

});

});

}

});

$.tools.validator.fn("[minlength]", function(input, value) {min = input.attr("minlength");value.length >= min ? true : {: "Please provide at least " +min+ " character" + (min > 1 ? "s" : ""),

};

});

$('.close').click(function(){});  // Кнопка "Закрыть"

});

Источник: https://www.bibliofond.ru/detail.aspx?id=871913