Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Both sides previous revision Poprzednia wersja
Nowa wersja
Poprzednia wersja
pl:dydaktyka:ztb:2010:projekty:ipoints:start [2010/05/24 01:22]
ztb2010
pl:dydaktyka:ztb:2010:projekty:ipoints:start [2019/06/27 15:50] (aktualna)
Linia 59: Linia 59:
   * przeglądanie tablic wyników wszystkich dostępnych gier   * przeglądanie tablic wyników wszystkich dostępnych gier
   * ...   * ...
- 
 ==== Określenie scenariuszy użycia ==== ==== Określenie scenariuszy użycia ====
  
Linia 70: Linia 69:
         * przeglądanie tablic wyników gier         * przeglądanie tablic wyników gier
         * kontakt z autorem ​         * kontakt z autorem ​
 +      * przegladanie treści w aplikacji
 +        * przeglądanie tablic wyników w grze
  
   - scenariusze dla zarejestrowanych gracza   - scenariusze dla zarejestrowanych gracza
Linia 103: Linia 104:
  
 ==== Identyfikacja funkcji ==== ==== Identyfikacja funkcji ====
- 
 ==== Analiza hierarchii funkcji projektowanej aplikacji ==== ==== Analiza hierarchii funkcji projektowanej aplikacji ====
  
 +=== FHD - Functional Hierarchy Diagram ===
 +
 +{{:​pl:​dydaktyka:​ztb:​2010:​projekty:​ipoints:​ipoints_fhd.png|}}
 ==== Budowa i analiza diagramu przepływu danych ==== ==== Budowa i analiza diagramu przepływu danych ====
  
-==== Wybór encji (obiektów) i ich atrybutów ====+=== Diagram kontekstowy ​=== 
 +{{:​pl:​dydaktyka:​ztb:​2010:​projekty:​ipoints:​ipoints_kontekstowy.png|}}
  
-==== Projektowanie ​powiązań (relacjipomiędzy encjami ​====+=== DFD - level 0 === 
 +{{:​pl:​dydaktyka:​ztb:​2010:​projekty:​ipoints:​ipoints_dfd_0.png|}} 
 + 
 +==== Wybór encji (obiektów) i ich atrybutów oraz ich powiązania (relacje) ==== 
 + 
 +{{:​pl:​dydaktyka:​ztb:​2010:​projekty:​ipoints:​ipoints_erd.png}}
  
 ==== Projekt diagramów STD ==== ==== Projekt diagramów STD ====
 +
 +Dzięki mechanizmowi TabBarControllera można przemieszczać sie swobodnie pomiędzy czterema głównymi widokami (lista gier, znajomi(część społecznościowa),​ pojedynki i profil) nie koniecznie miedzy ich początkowymi oknami - położenie w każdym widoku zostaje zapamiętane.
 +Jedyny sposób opuszczenia aplikacji jest naciśnięcie przycisku Home na urządzeniu. ​
 +
 +{{:​pl:​dydaktyka:​ztb:​2010:​projekty:​ipoints:​ipoints_std.png}}
 +
 +==== Projektowanie tabel, kluczy, kluczy obcych, powiązań między tabelami, indeksów, etc. w oparciu o zdefiniowany diagram ERD ====
 +
 +<code sql>
 +CREATE TABLE `ip_challenges` (
 +  `challengeID` int(11) NOT NULL auto_increment,​
 +  `projectID` varchar(15) NOT NULL default '',​
 +  `goal` int(11) NOT NULL default '​0',​
 +  `active` int(11) NOT NULL default '​0',​
 +  `days` int(11) NOT NULL default '​0',​
 +  `finishDate` datetime NOT NULL default '​0000-00-00 00:​00:​00',​
 +  `friendshipID` int(11) NOT NULL default '​0',​
 +  `creator` varchar(40) NOT NULL default '',​
 +  PRIMARY KEY  (`challengeID`),​
 +  KEY `projectID` (`projectID`),​
 +  KEY `friendshipID` (`friendshipID`),​
 +  KEY `creator` (`creator`)
 +) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=97 ;
 +
 +CREATE TABLE `ip_developers` (
 +  `developerID` int(4) NOT NULL auto_increment,​
 +  `firstName` varchar(65) NOT NULL default '',​
 +  `lastName` varchar(65) NOT NULL default '',​
 +  `email` varchar(65) NOT NULL default '',​
 +  `password` varchar(65) NOT NULL default '',​
 +  `companyName` varchar(65) default NULL,
 +  PRIMARY KEY  (`developerID`)
 +) ENGINE=InnoDB DEFAULT CHARSET=latin2 AUTO_INCREMENT=14 ;
 +
 +
 +CREATE TABLE `ip_friends` (
 +  `friendshipID` int(11) NOT NULL auto_increment,​
 +  `player1ID` varchar(40) NOT NULL default '',​
 +  `player2ID` varchar(40) NOT NULL default '',​
 +  `type` int(11) NOT NULL default '​1',​
 +  PRIMARY KEY  (`friendshipID`),​
 +  KEY `player1ID` (`player1ID`),​
 +  KEY `player2ID` (`player2ID`)
 +) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=40 ;
 +
 +CREATE TABLE `ip_projects` (
 +  `projectID` varchar(15) NOT NULL default '',​
 +  `projectName` varchar(20) NOT NULL default '',​
 +  `iconURL` varchar(70) NOT NULL default '',​
 +  `scoreType` int(11) NOT NULL default '​0',​
 +  `description` text NOT NULL,
 +  `developerID` int(4) NOT NULL default '​0',​
 +  `promoted` int(2) NOT NULL default '​0',​
 +  `graphicURL` text NOT NULL,
 +  `genere` varchar(20) NOT NULL default '',​
 +  `price` int(11) NOT NULL default '​0',​
 +  PRIMARY KEY  (`projectID`),​
 +  KEY `developerID` (`developerID`)
 +) ENGINE=InnoDB DEFAULT CHARSET=latin1;​
 +
 +
 +CREATE TABLE `ip_results` (
 +  `resultID` int(11) NOT NULL auto_increment,​
 +  `createdAt` timestamp NOT NULL default CURRENT_TIMESTAMP,​
 +  `playerID` varchar(40) NOT NULL default '',​
 +  `projectID` varchar(15) NOT NULL default '',​
 +  `score` int(11) NOT NULL default '​0',​
 +  PRIMARY KEY  (`resultID`),​
 +  KEY `projectID` (`projectID`),​
 +  KEY `playerID` (`playerID`)
 +) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1299 ;
 +
 +CREATE TABLE `ip_users` (
 +  `playerID` varchar(40) NOT NULL default '',​
 +  `playerName` varchar(20) NOT NULL default '',​
 +  `createdAt` datetime NOT NULL default '​0000-00-00 00:​00:​00',​
 +  `updatedAt` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,​
 +  `avatarURL` varchar(100) NOT NULL default '',​
 +  `email` varchar(30) NOT NULL default '',​
 +  `pass` varchar(20) NOT NULL default '',​
 +  `link` varchar(50) NOT NULL default '',​
 +  PRIMARY KEY  (`playerID`)
 +) ENGINE=InnoDB DEFAULT CHARSET=latin1;​
 +
 +
 +-- 
 +-- Constraints for table `ip_challenges`
 +-- 
 +ALTER TABLE `ip_challenges`
 +  ADD CONSTRAINT `ip_challenges_ibfk_1` FOREIGN KEY (`projectID`) REFERENCES `ip_projects` (`projectID`),​
 +ALTER TABLE `ip_challenges`
 +  ADD CONSTRAINT `ip_challenges_ibfk_1` FOREIGN KEY (`projectID`) REFERENCES `ip_projects` (`projectID`), ​ ADD CONSTRAINT `ip_challenges_ibfk_2` FOREIGN KEY (`friendshipID`) REFERENCES `ip_friends` (`friendshipID`),​
 +ALTER TABLE `ip_challenges`
 +  ADD CONSTRAINT `ip_challenges_ibfk_1` FOREIGN KEY (`projectID`) REFERENCES `ip_projects` (`projectID`), ​ ADD CONSTRAINT `ip_challenges_ibfk_2` FOREIGN KEY (`friendshipID`) REFERENCES `ip_friends` (`friendshipID`), ​ ADD CONSTRAINT `ip_challenges_ibfk_3` FOREIGN KEY (`creator`) REFERENCES `ip_users` (`playerID`);​
 +
 +-- 
 +-- Constraints for table `ip_friends`
 +-- 
 +ALTER TABLE `ip_friends`
 +  ADD CONSTRAINT `ip_friends_ibfk_1` FOREIGN KEY (`player1ID`) REFERENCES `ip_users` (`playerID`),​
 +ALTER TABLE `ip_friends`
 +  ADD CONSTRAINT `ip_friends_ibfk_1` FOREIGN KEY (`player1ID`) REFERENCES `ip_users` (`playerID`), ​ ADD CONSTRAINT `ip_friends_ibfk_2` FOREIGN KEY (`player2ID`) REFERENCES `ip_users` (`playerID`);​
 +
 +-- 
 +-- Constraints for table `ip_projects`
 +-- 
 +ALTER TABLE `ip_projects`
 +  ADD CONSTRAINT `ip_projects_ibfk_1` FOREIGN KEY (`developerID`) REFERENCES `ip_developers` (`developerID`);​
 +
 +-- 
 +-- Constraints for table `ip_results`
 +-- 
 +ALTER TABLE `ip_results`
 +  ADD CONSTRAINT `ip_results_ibfk_1` FOREIGN KEY (`playerID`) REFERENCES `ip_users` (`playerID`),​
 +ALTER TABLE `ip_results`
 +  ADD CONSTRAINT `ip_results_ibfk_1` FOREIGN KEY (`playerID`) REFERENCES `ip_users` (`playerID`), ​ ADD CONSTRAINT `ip_results_ibfk_2` FOREIGN KEY (`projectID`) REFERENCES `ip_projects` (`projectID`);​
 +</​code>​
 +
 +==== Denormalizacja struktury tabel ====
 +
 +Tabela została zdenormalizowana w celu wygodniejszej pracy na zawartych w niej danych. Anomalie, które przez to mogą się pojawić zabezpieczone są przez interfejs umożliwiający dodawanie pewnych danych (np nowych pojedynków pomiędzy graczami) tylko w pewnych określonych warunkach tak by uniknąć wystąpienia anomalii.
 +
 +==== Projektowanie operacji na danych ====
 +
 +Do komunikacji z bazą aplikacja używa skryptów php znajdujących sie na serwerze, te po wywołaniu generują odpowiedź w postaci danych w formacie XML lub przy pomocy statusu protokołu http
 +
 +przykłady kwarend:
 +<code sql>
 +$query = '​SELECT * FROM (SELECT playerName, avatarURL FROM ip_users WHERE playerID IN (SELECT player2ID FROM ip_friends WHERE player1ID = "'​. $udid .'"​ AND type = 2)
 + UNION
 + SELECT playerName, avatarURL FROM ip_users WHERE playerID IN (SELECT player1ID FROM ip_friends WHERE player2ID = "'​. $udid .'"​ AND type = 2)) as friends ORDER BY playerName';​
 +
 +$query = '​INSERT INTO ip_users (playerID, playerName, createdAt) ​
 +  VALUES ("'​. $udid.'","'​.$name . '",​now())';​
 +
 +$my_friends = '​SELECT * FROM (SELECT playerName FROM ip_users WHERE playerID IN (SELECT player2ID FROM ip_friends WHERE player1ID = "'​. $udid .'"​ AND type = 2)
 + UNION
 + SELECT playerName FROM ip_users WHERE playerID IN (SELECT player1ID FROM ip_friends WHERE player2ID = "'​. $udid .'"​ AND type = 2)) as friends ORDER BY playerName';​
 +
 +$invit_recived = '​SELECT playerName FROM ip_users WHERE playerID IN (SELECT player1ID FROM ip_friends WHERE player2ID = "'​. $udid .'"​ AND (type = 1 OR type =3)) ORDER BY playerName';​
 +
 +$invit_sent = '​SELECT playerName FROM ip_users WHERE playerID IN (SELECT player2ID FROM ip_friends WHERE player1ID = "'​. $udid .'"​ AND type = 1) ORDER BY playerName';​
 +
 +$query = '​UPDATE ip_friends SET type = 3 WHERE player1ID = (SELECT playerID FROM ip_users WHERE playerName = "'​. $name .'"​) AND player2ID = "'​. $udid .'"​ AND type = 1';
 +
 +</​code>​
 +==== Interfejs użytkownika ====
 +
 +Zrzuty ekranu symulatora (natywna aplikacja iPoints)
 +
 +{{:​pl:​dydaktyka:​ztb:​2010:​projekty:​ipoints:​screen_shot_2010-06-16_at_11.13.48_pm.png|}}{{:​pl:​dydaktyka:​ztb:​2010:​projekty:​ipoints:​screen_shot_2010-06-16_at_11.14.28_pm.png}}|{{:​pl:​dydaktyka:​ztb:​2010:​projekty:​ipoints:​screen_shot_2010-06-16_at_11.14.37_pm.png}}|{{:​pl:​dydaktyka:​ztb:​2010:​projekty:​ipoints:​screen_shot_2010-06-16_at_11.14.45_pm.png|}}
 +
pl/dydaktyka/ztb/2010/projekty/ipoints/start.1274656958.txt.gz · ostatnio zmienione: 2019/06/27 15:56 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0