Реализација система за праћење континуиране...

93
Реализација система за праћење континуиране медицинске едукације - д и п л о м с к и р а д - Висока школа електротехнике и рачунарства кандидат Никола Рафајловић ментор др Бошко Николић

Upload: diane

Post on 15-Jan-2016

71 views

Category:

Documents


0 download

DESCRIPTION

Висока школа електротехнике и рачунарства. Реализација система за праћење континуиране медицинске едукације. - д и п л о м с к и р а д -. кандидат Никола Рафајловић. ментор др Бошко Николић. 1. Увод. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Реализација система за праћење континуиране медицинске едукације

Реализација система за праћењеконтинуиране медицинске едукације

- д и п л о м с к и р а д -

Висока школа електротехнике и рачунарства

кандидатНикола Рафајловић

ментордр Бошко Николић

Page 2: Реализација система за праћење континуиране медицинске едукације

1. Увод

• “Систем за праћење континуиране медицинске едукације” представља савремену трослојну веб апликацију.

• Пословна логика апликације се реализује преко

PHP-а као скриптног језика на серверској страни.• За складиштење података се користи MySQL база

података.

Page 3: Реализација система за праћење континуиране медицинске едукације

2.1. Трослојна архитектура

• Трослојна архитектура представља тип клијент-сервер архитектуре у којој су кориснички интерфејс, процеси пословне логике и приступ подацима, пројектовани и управљани као независни модули. Основне компоненте (слојеви) ове архитектуре су:

– Клијентски (презентациони) слој– Слој пословне (апликативне) логике– Слој података

Page 4: Реализација система за праћење континуиране медицинске едукације

2.1. Трослојна архитектура

Page 5: Реализација система за праћење континуиране медицинске едукације

2.1. Трослојна архитектура

Приступ динамичким веб страницама

Page 6: Реализација система за праћење континуиране медицинске едукације

2.2. РНР и рад са базама података

• PHP подржава API-је за приступ свим познатим базама података.

• Програмски језик PHP се у пракси најчешће користи са MySQL базом података.

• MySQL je ефикасан сервер за управљање базама података.

• Представља open source решење са одличним перформансама.

Page 7: Реализација система за праћење континуиране медицинске едукације

2.3. РНР МyAdmin

• Као алат за једноставно управљање MySQL базом података, често се користи апликација PHPМyАdmin.

• Омогућава:– креирање нових база података– измену постојећих база– рад са табелама– преглед података– унос података– измену података– брисање података

Page 8: Реализација система за праћење континуиране медицинске едукације

2.3. РНР МyAdmin

Page 9: Реализација система за праћење континуиране медицинске едукације

3. Модел базе података

Page 10: Реализација система за праћење континуиране медицинске едукације

4. РНР Codeigniter

• Codeigniter је open source фрејмворк за PHP језик. • Користи MVC модел (Model View Controller) и на тај

начин омогућава да се веб апликација организује у три различита дела:

– models - апстракција слоја базе података– views - HTML странице са деловима PHP кода– controllers - пословна логика апликације

Page 11: Реализација система за праћење континуиране медицинске едукације

4. РНР Codeigniter

Постоји велики број познатих РНР фрејмворка, а неки од најпознатијих су Zend, Cake, Trax... Према речима Рика Елиса, творца Codeigniter-а, сви они имају сличне недостатке:

• имају лошу документацију, ако уопште постоји • имају велики број претпоставки у вези са већ постојећим знањем

програмера• писани су за људе који имају администраторске привилегије над

сервером• претпостављају да постоји приступ командној линији• имају тенденцију да буду безразложно сложени за употребу, са

мноштвом XML шаблона непотребних за функционисање већине веб апликација

• претерано су велики и свеобухватни, или превише мали да би били употребљиви.

Page 12: Реализација система за праћење континуиране медицинске едукације

4. РНР Codeigniter

Структура PHP Codeigniter

апликације

Page 13: Реализација система за праћење континуиране медицинске едукације

4. РНР Codeigniter

Све директоријуме у основном можемо поделити у три групе:– оне са којима радимо и чији садржај најчешће мењамо

(controllers, models, views), а чији је садржај на почетку празан

– оне који садрже фајлове са системским кодом фрејмворка (system/libraries, system/codeigniter, system/drivers...) и које по потреби можемо да мењамо

– оне који садрже фајлове са кодом који су већ до пола исписани, али су им потребни додаци и промене (language, config, errors).

Page 14: Реализација система за праћење континуиране медицинске едукације

4.1. Kонфигурациони фајл

Config фолдер садржи групу фајлова који подешавају основне конфигурације апликације. У фајлу config/config.php дефинишемо локацију сајта./*|--------------------------------------------------------------------------| Base Site URL|--------------------------------------------------------------------------|| URL to your CodeIgniter root. Typically this will be your base URL,| WITH a trailing slash:|| http://example.com/|| If this is not set then CodeIgniter will guess the protocol, domain and| path to your installation.|*/$config['base_url'] = 'http://www.nikolaraf.com';

Page 15: Реализација система за праћење континуиране медицинске едукације

4.2. Структура Codeigniter апликације

Када се успостави конекција преко URL-а сајта прослеђује се HTTP захтев облика:

GET /folder/file.html HTTP/1.0

На нашем CI сајту не постоји HTML страница која може да се пронађе. Уместо тога, све захтеве који долазе ка апликацији пресреће и обрађује index.php фајл. Ако корисник жели да приступи страници апликације кликом на неко дугме или на неки од линкова захтев је оваквог облика:

GET /index.php/tests/showall HTTP/1.0

Page 16: Реализација система за праћење континуиране медицинске едукације

4.2. Структура Codeigniter апликације

Прослеђивање захтева корисника

Page 17: Реализација система за праћење континуиране медицинске едукације

4.2. Структура Codeigniter апликације

Почетна страница апликације PHP Codeigniter

Page 18: Реализација система за праћење континуиране медицинске едукације

4.3. Коришћење Codeigniter-а за рад са базом података

Подешавања за рад са базом података се налазе у конфигурационом фајлу чија је путања system/application/config/database.php. У суштини, потребно је да се нагласи где је база и ког је типа. Та подешавања се врше тако што се потребни параметри упишу у овај фајл.

 

$active_group = "default";$db['default']['hostname'] = "";$db['default']['username'] = "";$db['default']['password'] = "";$db['default']['database'] = "";$db['default']['dbdriver'] = "";

 

Опције које треба да се попуне су:• hostname: локација базе (`localhost` или IP адреса) • username и password: корисничко име и лозинка корисника са привилегијама за

приступ бази података• database: име базе података• dbdriver: тип базе података која се користи (MySQL, MySQLi, Postgre SQL,

ODBC, MS SQL)

Page 19: Реализација система за праћење континуиране медицинске едукације

5. Опис рада система

Почетна страница апликације

Page 20: Реализација система за праћење континуиране медицинске едукације

5. Опис рада система

Галерија

Page 21: Реализација система за праћење континуиране медицинске едукације

5. Опис рада система

Календар

Page 22: Реализација система за праћење континуиране медицинске едукације

5. Опис рада система

Курсеви

Page 23: Реализација система за праћење континуиране медицинске едукације

5. Опис рада система

Контакт

Page 24: Реализација система за праћење континуиране медицинске едукације

5. Опис рада система

Форма за пријављивање корисника на систем

Page 25: Реализација система за праћење континуиране медицинске едукације

5. Опис рада система

Форма за креирање налога корисника

Page 26: Реализација система за праћење континуиране медицинске едукације

5. Опис рада система

Форма за додавање фотографије

Page 27: Реализација система за праћење континуиране медицинске едукације

5. Опис рада система

Порука након успешно креираног корисничког налога

Page 28: Реализација система за праћење континуиране медицинске едукације

5. Опис рада система

Форма за промену лозинке

Page 29: Реализација система за праћење континуиране медицинске едукације

5. Опис рада система

Форма за пријаву заборављене лозинке

Page 30: Реализација система за праћење континуиране медицинске едукације

5. Опис рада система

Опције за корисника који се пријавио на систем

Page 31: Реализација система за праћење континуиране медицинске едукације

5. Опис рада система

Опција “Уплате”

Page 32: Реализација система за праћење континуиране медицинске едукације

5. Опис рада система

Опција “Присуство”: претрага курсева

Page 33: Реализација система за праћење континуиране медицинске едукације

5. Опис рада система

Опција “Присуство”: резултати претраге курсева

Page 34: Реализација система за праћење континуиране медицинске едукације

5. Опис рада система

Опција “Присуство”: пријава за курс

Page 35: Реализација система за праћење континуиране медицинске едукације

5. Опис рада система

Опција “Присуство”: обавештење о прихваћеном захтеву за присуство курсу

Page 36: Реализација система за праћење континуиране медицинске едукације

5. Опис рада система

Опција “Евиденција КМЕ”: претрага учешћа на курсевима

Page 37: Реализација система за праћење континуиране медицинске едукације

5. Опис рада система

Опција “Евиденција КМЕ”: учешће на курсевима и број остварених бодова КМЕ

Page 38: Реализација система за праћење континуиране медицинске едукације

5. Опис рада система

Опције референта

Page 39: Реализација система за праћење континуиране медицинске едукације

5. Опис рада система

Опција “Шифарник”: мени за избор табеле шифарника

Page 40: Реализација система за праћење континуиране медицинске едукације

5. Опис рада система

Опција “Шифарник”: приказ табеле шифарника и форме за филтрирање података из табеле шифарника

Page 41: Реализација система за праћење континуиране медицинске едукације

5. Опис рада система

Опција “Шифарник”: додавање података

Page 42: Реализација система за праћење континуиране медицинске едукације

5. Опис рада система

Опција “Шифарник”: измена података

Page 43: Реализација система за праћење континуиране медицинске едукације

5. Опис рада система

Опција “Шифарник”: брисање података

Page 44: Реализација система за праћење континуиране медицинске едукације

5.1. Регистрација корисника и отварање корисничких налога

Опција “Регистрација налога корисника”

Page 45: Реализација система за праћење континуиране медицинске едукације

5.1. Регистрација корисника и отварање корисничких налога

Опција “Регистрација налога корисника”

Page 46: Реализација система за праћење континуиране медицинске едукације

5.1. Регистрација корисника и отварање корисничких налога

Опција “Регистрација налога корисника”

Page 47: Реализација система за праћење континуиране медицинске едукације

5.1. Регистрација корисника и отварање корисничких налога

Опција “Регистровани корисници”

Page 48: Реализација система за праћење континуиране медицинске едукације

5.1. Регистрација корисника и отварање корисничких налога

Опција “Регистровани корисници”

Page 49: Реализација система за праћење континуиране медицинске едукације

5.1. Регистрација корисника и отварање корисничких налога

Опција “Регистровани корисници”

Page 50: Реализација система за праћење континуиране медицинске едукације

5.1. Евиденција курсева и одржавање курсева

Опција “Регистрација курса”

Page 51: Реализација система за праћење континуиране медицинске едукације

5.1. Евиденција курсева и одржавање курсева

Опција “Регистрација курса”: унос периода акредитације

Page 52: Реализација система за праћење континуиране медицинске едукације

5.1. Евиденција курсева и одржавање курсева

Опција “Одржавање курса”

Page 53: Реализација система за праћење континуиране медицинске едукације

5.1. Евиденција курсева и одржавање курсева

Опција “Одржавање курса”: могућност евиденције предавача

Page 54: Реализација система за праћење континуиране медицинске едукације

5.1. Евиденција курсева и одржавање курсева

Опција “Акредитација курса”

Page 55: Реализација система за праћење континуиране медицинске едукације

5.1. Евиденција курсева и одржавање курсева

Опција “Акредитација курса”: измена података за курс

Page 56: Реализација система за праћење континуиране медицинске едукације

5.1. Евиденција курсева и одржавање курсева

Опција “Акредитација курса”: измена података за акредитацију курса

Page 57: Реализација система за праћење континуиране медицинске едукације

5.1. Евиденција пријава за курс

Опција “Пријава корисника за курс”

Page 58: Реализација система за праћење континуиране медицинске едукације

5.1. Евиденција пријава за курс

Опција “Пријава корисника за курс”: падајући мени

Page 59: Реализација система за праћење континуиране медицинске едукације

5.1. Евиденција пријава за курс

Опција “Oдобрење пријава за курс”

Page 60: Реализација система за праћење континуиране медицинске едукације

5.1. Евиденција пријава за курс

Опција “Oдобрење пријава за курс”: пријаве корисника

Page 61: Реализација система за праћење континуиране медицинске едукације

5.2. Евиденција полазника курсева

Опција “Преглед одржавања курсева”

Page 62: Реализација система за праћење континуиране медицинске едукације

5.2. Евиденција полазника курсева

Опција “Преглед одржавања курсева”: евиденција полазника

Page 63: Реализација система за праћење континуиране медицинске едукације

5.2. Евиденција полазника курсева

Опција “Преглед одржавања курсева”: евиденција полазника

Page 64: Реализација система за праћење континуиране медицинске едукације

5.3. Евиденција задужења и уплата

Опција “Евиденција задужења и уплата корисника”

Page 65: Реализација система за праћење континуиране медицинске едукације

5.3. Евиденција задужења и уплата

Опција “Евиденција задужења и уплата корисника”

Page 66: Реализација система за праћење континуиране медицинске едукације

5.3. Евиденција задужења и уплата

Опција “Евиденција задужења и уплата за курс”

Page 67: Реализација система за праћење континуиране медицинске едукације

5.3. Евиденција задужења и уплата

Опција “Евиденција задужења и уплата за курс”: задужења корисника за курс

Page 68: Реализација система за праћење континуиране медицинске едукације

5.3. Евиденција задужења и уплата

Опција “Евиденција задужења и уплата за курс”: задужења и уплате корисника

Page 69: Реализација система за праћење континуиране медицинске едукације

5.4. Опције администратора

Page 70: Реализација система за праћење континуиране медицинске едукације

5.4. Опције администратора

Опција “Ресет лозинке”

Page 71: Реализација система за праћење континуиране медицинске едукације

5.4. Опције администратора

Опција “Преглед и ажурирање корисничких привилегија”

Page 72: Реализација система за праћење континуиране медицинске едукације

5.4. Опције администратора

Опција “Преглед и ажурирање корисничких привилегија”

Page 73: Реализација система за праћење континуиране медицинске едукације

6. Реализација система

Codeigniter у својим суб-фолдерима садржи велики број фајлова и класа које су написане да олакшају рад. То су, у ствари, скриптови и функције које се често понављају и које по потреби једноставно могу да се позову. Осим класа, међу којима су и модели и контролери, постоје библиотеке, хелпери и плаг-инови.

Library може да се налази и у system и у application фолдеру и представља класу која пре употребе мора да се позове и тако буде укључена у супер-објекат.

Helper може да се налази и у system/helpers и у application/helpers фолдеру и представља скрипт, а не ОО код.

Plug-in може да се налази и у system/plugins и у application/plugins и такође представља скрипт. Основна разлика између хелпера и плаг-инова је та да плаг-ин представља једну функцију, док хелпер представља скуп функција.

Page 74: Реализација система за праћење континуиране медицинске едукације

6. Реализација система

Странице апликације се стварају динамички, на захтев корисника. За приступ почетној страници позива се основни контролер дефинисан у конфигурационом фајлу – application/config/routes.php, а то је login.php контролер, и његова основна функција index(). Ова функција у једном делу кода проверава да ли траје сесија корисника, и, ако то није случај, позива view template.php:

 

if(($this->session->userdata('is_logged_in')==FALSE)){

$data['main_content']='login_form';$this->load->view('includes/template',$data);

}

Page 75: Реализација система за праћење континуиране медицинске едукације

6. Реализација система

Страница template.php, која је сама по себи HTML поглед (view) и налази се у views/includes фолдеру, позива три погледа и тако настаје динамичка страница:

<?php $this->load->view('includes/header');?><?php $this->load->view($main_content);?><?php $this->load->view('includes/footer');?>

Page 76: Реализација система за праћење континуиране медицинске едукације

6.1. Пријављивање корисника на систем и креирање налога

Као променљиви део странице се за почетну страну позива поглед (view) login_form.php.

За реализацију је коришћен хелпер фрејмворка „Form Helper“ који се састоји од функција корисних за рад са формама. Код за форму за приступање систему (логовање корисника) написан помоћу функција овог хелпера изгледа овако:

 

<?php $js='onClick="clearText(this)"';

echo form_open('login/validate_credentials');echo form_input('korisnicko_ime','Korisničko ime',$js);echo form_password('lozinka','Password',$js);echo form_submit('submit','Login');echo form_close();

?>

Page 77: Реализација система за праћење континуиране медицинске едукације

6.1. Пријављивање корисника на систем и креирање налога

Што је еквивалентно коду HTML-a:

 <form action="http://www.nikolaraf.com/login/validate_credentials"

method="post" accept-charset="utf-8"><input type="text" name="korisnicko_ime" value="Korisničko ime"

onClick="clearText(this)" /><input type="password" name="lozinka" value="Password"

onClick="clearText(this)" /><input type="submit" name="submit" value="Login" /></form>

Page 78: Реализација система за праћење континуиране медицинске едукације

6.1. Пријављивање корисника на систем и креирање налога

Функција validate_credentials() контролера login.php има задатак да провери да ли у бази података постоји корисник са тим корисничким именом и лозинком. За проверу се користи модел који се позива из контролера:

 

$this->load->model('membership_model');

$data['results']=$this->membership_model->validate();

Page 79: Реализација система за праћење континуиране медицинске едукације

6.1. Пријављивање корисника на систем и креирање налога

Ако подаци постоје уписују се у колачић (cookie) сесије:

 foreach($data['results'] as $row){

$data=array(

'ID'=>$row->ID, 'trenutak_registracije'=>$row->trenutak_registracije,

'korisnicko_ime'=>$row->korisnicko_ime,'ime'=>$row->ime,

...);

}

$this->session->set_userdata($data);

Page 80: Реализација система за праћење континуиране медицинске едукације

6.1. Пријављивање корисника на систем и креирање налога

За праћење сесије корисника служи класа „Session Class“ која омогућава праћење активности корисника док претражују сајт. Ова класа је аутоматски учитана приликом покретања сајта помоћу вредности које смо претходно дефинисали у конфигурационом autoload.php фајлу (заједно са осталим класама):

 

$autoload['libraries'] = array('database','session','pagination');

Page 81: Реализација система за праћење континуиране медицинске едукације

6.1. Пријављивање корисника на систем и креирање налога

Форма коју садржи view login_form.php има и дугме које води ка форми за креирање корисничког налога – „креирај налог“. Коришћењем ове опције кориснику се приказује форма коју садржи view signup_form.php . Кориснику се нуди могућност да унесе своје податке, а за проверу исправности података се користи још једна корисна библиотека – „Form Validation“.

Када је форма исправно попуњена, она проверава да ли су подаци одговарајућег типа и да ли одговарају задатом критеријуму.

Функција create_member() контролера login.php је задужена за овакву врсту провере:

 

$this->load->library('form_validation');$this->form_validation->set_rules('korisnicko_ime','"Korisničko

ime"','trim|required|min_length[4]');...

Page 82: Реализација система за праћење континуиране медицинске едукације

6.1. Пријављивање корисника на систем и креирање налога

За додавање фотографије користи се „File Uploading Class“, а за промену величине фотографије „Image Manipulation Class“.

После избора фотографије и клика на „upload“ дугме форме, функција signup_successful() учитава модел gallery_model и позива функцију овог модела do_upload().

 

$this->load->model('gallery_model');

if ($this->input->post('upload')) { 

$this->gallery_model->do_upload();

}

Page 83: Реализација система за праћење континуиране медицинске едукације

6.1. Пријављивање корисника на систем и креирање налога

do_upload() функција учитава библиотеку upload пошто претходно дефинишемо конфигурациони низ $config.

 $config = array(

'allowed_types' => 'jpg|jpeg|gif|png','upload_path' => $this->gallery_path,'max_size' => 10000

);$this->load->library('upload', $config);if ( ! $this->upload->do_upload()){

$error = array('error' => $this->upload->display_errors());}else{

$image_data = $this->upload->data();}

Page 84: Реализација система за праћење континуиране медицинске едукације

6.1. Пријављивање корисника на систем и креирање налога

Ова функција такође помоћу библиотеке image_lib и конфигурационог низа смањује димензије фотографије корисника ради њеног каснијег приказа у апликацији и смешта такву копију у директоријум „images_gallery/thumbs“ где се налазе све смањене фотографије корисника.

 $config = array(

'source_image' => $image_data['full_path'],'new_image' => $this->gallery_path . '/thumbs','maintain_ration' => true,'width' => 100,'height' => 150

);

$this->load->library('image_lib', $config);$this->image_lib->resize();

Page 85: Реализација система за праћење континуиране медицинске едукације

6.1. Пријављивање корисника на систем и креирање налога

Кориснику се шаље порука о успешно унетим подацима путем електронске поште. За слање мејлова коришћена је „Email“ библиотека фрејмворка.

 

$config=Array(

'protocol'=>'smtp','smtp_host'=>'ssl://smtp.googlemail.com','smtp_port'=>465,'smtp_user'=>'[email protected]','smtp_pass'=>'gitarista'

);

$this->load->library('email', $config);$this->email->set_newline("\r\n");

Page 86: Реализација система за праћење континуиране медицинске едукације

6.1. Пријављивање корисника на систем и креирање налога$this->email->from('[email protected]', 'Nikola Rafajlovic');$this->email->to($mejl);$this->email->subject('CKME Medicinski fakultet');$this->email->message('Poštovani, uspešno ste kreirali nalog. Čeka se registracija naloga od strane administratora.');

$path = $this->config->item('server_root');$file = $path . '/attachments/diplomski.txt';

$this->email->attach($file);if($this->email->send()){

$data['main_content']='signup_successful';$this->load->view('includes/template',$data);

}else{$data['poruka']="Greška prilikom slanja mejla!";$data['main_content']='signup_form_poruka';$this->load->view('includes/template',$data);

}

Page 87: Реализација система за праћење континуиране медицинске едукације

6.2. Опције регистрованих корисника

За прву опцију – „уплате“, којом корисник проверава своја задужења и уплате за курсеве, у бази података постоје две колоне: „задужење“ и „уплате“.

Page 88: Реализација система за праћење континуиране медицинске едукације

6.2. Опције регистрованих корисника

Бирањем ове опције контролер korisnik.php у својој функцији korisnik_uplate() позива модел get_all.php и његове функције get_uplate($id) и get_zaduzenja($id):

 

$id=$data['ID'];

$data['uplate']=$this->get_all->get_uplate($id);$data['zaduzenja']=$this->get_all->get_zaduzenja($id);

$data['main_content']='korisnik/korisnik_uplate_view';$this->load->view('includes/template',$data);

Page 89: Реализација система за праћење континуиране медицинске едукације

6.2. Опције регистрованих корисника

Функција get_zaduzenja($id) проналази корисника у бази података помоћу променљиве $id као параметра функције, а затим помоћу функције explode() прави низ од стринга који се налази у колони тако што издваја елементе одвојене сепаратором „;“:

function get_zaduzenja($id){

$this->db->where('ID',$id);$q=$this->db->get('korisnik');foreach($q->result() as $row){

$zaduzenje=$row->zaduzenje;

}

Page 90: Реализација система за праћење континуиране медицинске едукације

6.2. Опције регистрованих корисника

if($zaduzenje!=''){$zad=explode(';',$zaduzenje);$zad_pop = array_pop($zad);$i=0;foreach($zad as $z){

$par_zaduzenje=explode(',',$z);$result[$i][0]=$par_zaduzenje[0];$result[$i][1]=$par_zaduzenje[1];$this->db->where('ID_odrzavanje',$result[$i][1]);$q=$this->db->get('kurs_odrzavanje');foreach($q->result() as $r){

$result[$i][2]=$r->naziv_kursa;$result[$i][3]=$r->foto;}$i++;

}}else{

$result="prazan";

}return $result;

}

Page 91: Реализација система за праћење континуиране медицинске едукације

7. Закључак

Апликација “Систем за праћење континуиране медицинске едукације” је савремена трослојна веб апликација.

Дизајн апликације је урађен помоћу HTML-a i CSS-a. За реализацију функционалности апликације на клијентској страни је

коришћен програмски језик JavaScript и Јquery JavaScript библиотека. Пословна логика апликација је реализована помоћу програмског језика

PHP, као скриптног језика на серверској страни (РНР фрејмворк „Codeigniter”), а за складиштење података је коришћена MySQL база података.

Codeigniter је, као open source апликација, отворен за креацију нових библиотека или хелпера од стране корисника. Такође је могуће да се нове функционалности реализују помоћу нових функција већ постојећих контролера и модела.

Page 92: Реализација система за праћење континуиране медицинске едукације

ХВАЛА

Page 93: Реализација система за праћење континуиране медицинске едукације