Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Softver za evidenciju dnevnika ishrane

No description
by

Elena Tuksar

on 26 February 2012

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Softver za evidenciju dnevnika ishrane

VISOKA ŠKOLA ELEKTROTEHNIKE I RAČUNARSTVA STRUKOVNIH STUDIJA Tuksar Elena


SOFTVERSKI SISTEM ZA EVIDENCIJU DNEVNIKA ISHRANE

- s p e c i j a l i s t i č k i r a d -
1.OPIS RADA SOFTVERSKOG SISTEMA

1.1 OPIS RADA SOFTVERA ZA ADMINISTRATORE

korisnici sa najvećim pravima
vode računa o celom sistemu
prava za pregled svih korisnika, brisanje korisnika
dodavanje novih dijeta i njihovo brisanje
dodavanje novih namirnica i njihovih kalorijskih vrednosti
ubacivanje novih aktivnosti
1.1.1 Opcija za pregled korisnika

1.1.2 Opcija za dodavanje novih dijeta

1.1.3 Opcija za dodavanje novih namirnica u sistem

1.1.4 Opcija za dodavanje novih aktivnosti u sistem

1.2 OPIS RADA SOFTVERA ZA NEREGISTROVANE KORISNIKE

korisnici sa najmanjim pravima
mogu da pristupe početnoj stranici, stranici dijeta i tablici kalorija
mogu da izračunaju svoj BMR i BMI
mogu da se registruju i time povećaju svoja prava u sistemu
2.1 BMR i BMI kalkulator

2.2 Prikaz svih dijeta u sistemu

2.2.1 Izgled stranice za izabranu dijetu

2.3 Prikaz tablice kalorija

2.4 Registracija korisnika

2.5 Logovanje korisnika na sistem

1.3 OPIS RADA SOFTVERA ZA REGISTROVANE KORISNIKE

mogu da se loguju na sistem
imaju pravo da vide svoj profil i da ga izmene
kreiranje dnevnika ishrane i unos dana u dnevnik
ostavljanje komentara na drugim profilima, dnevnicima i dijetama
sistem sam računa BMR i BMI u odnosu na podatke koje su uneli prilikom registracije
imaju sva ostala prava kao i neregistrovani korisnici kao što su pregled dijeta i pretraga baze namirnica 1.3.1 Pregled profila i izmena
1.3.2 Otvaranje dnevnika ishrane
prilikom prve posete linku Moj dnevnik korisnicima se prikazuje forma za kreiranje dnevnika ishrane 1.3.3 Unos dana u dnevnik ishrane
1.3.4 Pregled dnevnika ostalih registrovanih korisnika
1.3.5 Ostavljanje komentara
1.3.6 Promena šifre
2. INTERAKTIVNA TROSLOJNA WEB APLIKACIJA 2.1. ZEND FRAMEWORK


razvojno okruženje otvorenog koda za izradu Web aplikacija i servisa zasnovan na programskom jeziku PHP
u potpunosti implementiran korišćenjem objektno orijentisanog koncepta
prednost razvojnog okruženja Zend Frameworka je velika količina gotovih komponenata koje se mogu iskoristiti za izradu vlastitih Web aplikacija
2.2. MVC Obrazac


programska arhitektura za odvajanje programskog koda
osnovno svojstvo je odvajanje modela domena od prezentacionog sloja ili grafičkog interfejsa.
omogućuje se jednostavno menjanje i stvaranje novih grafičkih maski bez promene podložnog modela
MVC obrazac se sastoji od sledećih komponenata:

1.Model – sadrži funkcije koje se odnose na rad sa bazama podataka. Zadužen je za prosleđivanje novih podataka prema grafičkom interfejsu i reaguje na upite za promenu stanja koji dolaze iz kontrolera.

2. Pogled (engl. View) – pogledi su zaduženi za prezentaciju podataka korisniku. Pogledi mogu zatražiti podatke od kontrolera i primiti ih. Najvažnije obeležje pogleda je njihova jednostavnost.

3. Kontroler (engl. Controller) – definiše ponašanje aplikacije. Predstavlja posrednika između pogleda i modela. Korisnički unos se prosleđuje iz pogleda prema kontroleru koji svaku akciju mapira na određen način.
2.3. STRUKTURA ZEND DATOTEKA



• Application – sadrži programski kod potreban za pokretanje aplikacije.
• Configs – sadrži konfiguracione postavke aplikacije kao što su parametri za spajanje na bazu
• Controllers – izvorni kod svih kontrolera se nalazi u ovoj datoteci.
• Models – sadrži programski kod koji opisuje model domene
• Views – sadrži programski kod koji čini korisnički interfejs.
• Docs – služi za čuvanje dokumentacije.


• Library – direktorijum namenjen za čuvanje raznih dodatnih programskih zbirki (Zend, Smarty engine6, ORM, itd).
• Public – sadrži javne datoteke kao što su početna stranica (index.php), slike i CSS dokumenti koji čine korisnički interfejs. 3. MODEL BAZE PODATAKA 4. PRAKTIČNA IMPLEMENTACIJA ZAHTEVA 4.1. REGISTRACIJA KORISNIKA NA SISTEM


4.1.1 UserController.php


public function signupAction()
{
$table = new Application_Model_DbTable_Users();
$this->view->form = $form = new Application_Form_Signup();
$form->getElement('username')->removeDecorator('Errors');
$form->getElement('password')->removeDecorator('Errors');
$form->getElement('confirm_password')->removeDecorator('Errors');
$form->getElement('email')->removeDecorator('Errors');
$form->setDecorators(array(
array('Description', array('placement' => 'prepend', 'class' => 'red')),
'FormElements',
'Form'
));

$request = $this->getRequest();
if(isset($_POST['submit']))
{
if (!$form->isValid($request->getPost()))
{
$form->setDescription('Molimo Vas da ispravno popunite zahtevana polja.');
return false;
}
$path = 'externals/images/profil';
$upload = new Zend_File_Transfer_Adapter_Http();
$upload->setDestination($path);
$files = $upload->getFileInfo();
foreach ($files as $fieldname=>$file)
{
$ext = $this->findexts($file['name']);
$fileName = 'profile_'.time().'.'.$ext;
try
{
$upload->addFilter('Rename',array('target' => $path.'/'.$fileName,'overwrite' => true));
$upload->receive();
}
catch (Zend_File_Transfer_Exception $e)
{
$this->setErrorMessage( $e->getMessage() );
}
}
$values = $form->getValues();
$values['photo_url'] = $path.'/'.$fileName;
$user = $table->addUser($values);
if($user)
{
$this->_helper->flashMessenger->addMessage('Uspešno ste se registrovali');
$this->_helper->redirector->gotoRoute(array('controller'=>'index','action'=>'index'),'default', true);
}
}
} 4.1.2 Prikaz funkcije addUser() iz Modela/DBTable/Users class Application_Model_DbTable_Users extends Zend_Db_Table_Abstract
{
public function addUser($values)
{

$user = $this->createRow();
$user->setFromArray($values);
$user->password = md5($values['password']);
$user->date_birth = date('Y-m-d', strtotime( $values[' date_birth']));
$user->creation_date = date('Y-m-d H:i:s');
$user->save();
return $user;
}
}
4.1.3 View stranice koja sadrži formu za registraciju na sistem <?php echo $this->headScript()->appendFile($this->baseUrl(). '/externals/datepicker/js/datepicker.js');?>
<link rel="stylesheet" media="screen" type="text/css" href="<?php echo $this->baseUrl() ?>/externals/datepicker/css/datepicker.css" />
<script type="text/javascript">
$(document).ready(function()
{
$('#date_birth').DatePicker({
format:'d/m/Y',
date: $('#date_birth').val(),
current: $('#date_birth').val(),
starts: 1,
position: 'r',
onBeforeShow: function(){
$('#date_birth').DatePickerSetDate($('#date_birth').val(), true);
},
onChange: function(formated, dates){
$('#date_birth').val(formated);
}
});
});
</script>
<div class="content">
<div class="big_title">Registracija korisnika</div>
<div class="small_text_logo padding8">(Polja označena sa zvezdicom je obavezno popuniti)</div>
<br/>
<?php echo $this->form->render($this); ?>
</div>

4.1.4 Kod za Signup formu <?php
class Application_Form_Signup extends Zend_Form
{
public $elementDecorators = array(
'ViewHelper',
array('Errors', array('class' => 'red')),
array('Label', array( 'tag' => 'span', 'placement' => 'prepend')),
array('HtmlTag', array( 'tag' => 'div', 'class'=>'signup_elements')
));
public $buttonDecorators = array(
'ViewHelper',
array(array('data' => 'HtmlTag'), array('tag' => 'td', 'class' => 'element')),
array(array('label' => 'HtmlTag'), array('tag' => 'td', 'placement' => 'prepend')),
array(array('row' => 'HtmlTag'), array('tag' => 'tr')),
);
public function init()
{
$this->setAction(Zend_Controller_Front::getInstance()-> getRouter()->assemble(array()));
$this->addElement('text', 'username', array(
'decorators' => $this->elementDecorators,
'label' => '*Korisničko ime:',
'required' => true
));
$this->addElement('password', 'password', array(
'decorators' => $this->elementDecorators,
'label' => '*Lozinka:',
'required' => true
));
$this->addElement('password', 'confirm_password', array(
'decorators' => $this->elementDecorators,
'label' => '*Potvrda lozinke:',
'required' => true,
'validators' => array(
array('identical', true, array('password'))
)
));
$this->addElement('text', 'email', array(
'decorators' => $this->elementDecorators,
'label' => '*Email:',
'required' => true
));
$this->addElement('file','picture', array(
'label' => 'Izaberite profil sliku:',
'class' => 'signup_elements',
'required' => false
));
$picture = $this->getElement('picture');
$picture->setDestination('externals/images/profil/')
->addValidator('Size', false, 102400000)
->addValidator('Extension', false, 'jpg,png,gif');
$this->addElement('text', 'first_name', array(
'decorators' => $this->elementDecorators,
'label' => 'Ime:',
'required' => false
));
$this->addElement('text', 'last_name', array(
'decorators' => $this->elementDecorators,
'label' => 'Prezime:',
'required' => false
));
$this->addElement('radio', 'gender', array(
'decorators' => array(
'ViewHelper',
array(array('AddTheLi' => 'HtmlTag'), array('tag' => 'li')),
array(array('AddTheUl' => 'HtmlTag'), array('tag' => 'ul')),
array('Label', array('tag' => 'span')),
array(array('elementDiv' => 'HtmlTag'), array('tag' => 'div', 'class' => 'gender_div'))),
'disableLoadDefaultDecorators' => true,
'label' => 'Pol:',
'separator' => '</li><li>',
'required' => false,
'attribs' => array(
'options' => array(
'm' => 'Muški',
'f' => 'Ženski',
),
),
'value' => 'm'
));
$this->addElement('text', 'date_birth', array(
'decorators' => $this->elementDecorators,
'label' => 'Datum rođenja:',
'id' => 'date_birth',
'required' => false,
'value' => date('d/m/Y')
));
$this->addElement('text', 'height', array(
'decorators' => $this->elementDecorators,
'label' => 'Visina:',
'class' => 'diet_element_input',
'required' => false,

));
$this->addElement('text', 'weight', array(
'decorators' => $this->elementDecorators,
'label' => 'Težina:',
'class' => 'diet_element_input',
'required' => false,
));
$this->addElement('text', 'city', array(
'decorators' => $this->elementDecorators,
'label' => 'Grad:',
'required' => false,

));
$this->addElement('textarea', 'about_me', array(
'decorators' => $this->elementDecorators,
'label' => 'Ukratko o sebi:',
'required' => false,

));
$this->addElement('submit', 'submit', array(
'decorators' => $this->buttonDecorators,
'label' => 'Registruj se',
));
}
public function loadDefaultDecorators()
{
$this->setDecorators(array(
'FormElements',
array('HtmlTag', array('tag' => 'table', 'class' => 'signup_table')),
'Form',
));
}
}

?>
ZAKLJUČAK kombinacija Zend Frameworka i MySql-a predstavlja jako dobro rešenje za razvijanje kako malih, tako i velikih online aplikacija
softver za evidenciju dnevnika ishrane može da pomogne i da olakša svakom korisniku borbu sa kilogramima pružajući mu niz različitih usluga koje mu mogu biti od koristi aplikaciju odlikuje jednostavan dizajn i samim tim predstavlja korisniku rešenje sa kojim se lako rukuje kod aplikacije je struktuiran tako da se lako održava, brzo mogu da se implementiraju novi moduli po potrebi, kao i promena tehnologije sa radom sa bazama podataka (npr. umesto MySql, da se implementira Oracle)
HVALA VAM NA PAŽNJI Ubacivanje elemenata
Full transcript