Via
Strada 76 n°1 |
5.3.8 Implementazione serverDocumento: pp538rev00
|
5.3.8.1
Sviluppo
delle classi
Si rimanda all’allegato per la visione delle classi. Qui di seguito, viene riportata solo una breve descrizione.
Responsabile: Millauro Andrea
Programmatori: Francesco
Perricone
Descrizione : Questa classe gestisce l'apertura del browser web di default del sistema operativo, per permettere la visualizzazione delle pagine html che fanno da guida.
Responsabile: Millauro Andrea
Programmatori: Marco Recupero,
Tonino Scorciapino
Descrizione: Questa classe implementa la gestione del network dell'applicazione
lato server.Contiene tutti i metodi utili per la connessione ai client e delle
loro amministrazione.
Responsabile: Millauro Andrea
Programmatori: Marco Recupero,
Tonino Scorciapino
Descrizione: Questa è la classe
che coordina il funzionamento interagendo con la rete. Richiama le classi qui
descritte istanziando la classe FrameUtility.
Responsabile: Millauro Andrea
Programmatori: Francesco
Perricone
Descrizione: Questa classe
permette di visualizzare la lista degli autori. Richiamata dalla classe FrameAmStr2.
Responsabile: Millauro Andrea
Programmatori: Tutone Dario
Descrizione: Questa classe permette di visualizzare graficamente l’elenco
degli utenti connessi, avvalendosi dell’aiuto della classe
PannelloUtentiConnessi.
Responsabile: Millauro Andrea
Programmatori: Marco Recupero,
Tonino Scorciapino, Tutone Dario
Dscrizione: Questa è la classe
che costruisce l’interfaccia dell’amministratore. Richiama le classi qui
descritte per la costruzione del frame principale.
Responsabile: Millauro Andrea
Programmatori: Tutone Dario
Descrizione: Questa è la classe
che il server utilizza per interfacciarsi con il database. Sono contenuti una
serie di metodi che implementano le query utili.
Responsabile: Millauro Andrea
Programmatori: Francesco
Perricone
Descrizione: Questa classe implementa la grafica del FreameAutori.
Responsabile: Millauro Andrea
Programmatori: Marco Recupero,
Tonino Scorciapino
Descrizione: Questa classe,
implementa il contenuto grafico della classe StoricoLog.
Responsabile: Millauro Andrea
Programmatori: Tutone Dario
Descrizione: Questa classe implementa la visualizzazione grafica del logo
dell’applicazione. Richiamata dalla classe pannelloA.
Responsabile: Millauro Andrea
Programmatori: Marco Recupero,
Tonino Scorciapino
Descrizione: Questa classe
implementa la parte grafica del settaggio timer. Richiamata dalla classe
pannelloA.
Responsabile: Millauro Andrea
Programmatori: Marco Recupero,
Tonino Scorciapino
Descrizione: Questa classe
implementa la parte grafica del settaggio limite utenti connessi. Richiamata
dalla classe pannelloA.
Responsabile: Millauro Andrea
Programmatori: Marco Recupero,
Tonino Scorciapino
Descrizione: Questa classe,
assembla le classi panello1,2,3 in modo da costruire graficamente la prima
parte del frame amministratore.
Responsabile: Millauro Andrea
Programmatori: Dario Tutone
Descrizione: Questa classe, implementa la seconda parte del pannello
amministratore, assemblando al suo
interno, un’area di testo che contiene informazione sullo stato attuale
del registro di log, e due bottoni che permettono di accedere alla lista degli
utenti connessi e allo storico di log.
Responsabile: Millauro Andrea
Programmatori: Tutone Dario
Descrizione: Questa classe implementa la parte grafica del FrameUtentiConnessi,
ricavando le infirmazini d’interresse dal database.
Responsabile: Millauro Andrea
Programmatori: Marco Recupero,
Tonino Scorciapino
Descrizione: Questa classe,
utilizzata dal frame StoricoLog, implementa alcuni metodi utili per la lettura
e la scrittura sul registro di log.
Responsabile: Millauro Andrea
Programmatori: Marco Recupero,
Tonino Scorciapino
Descrizione: Questa
classe, permette la visualizzazione della lista degli utenti connessi.
5.3.8.2 Sviluppo del data base
In riferimento a quanto descritto nella fase di progettazione nel documento pp535rev00, si ottengono i seguenti codici:
Creazione del
database
CREATE TABLE impostazioni
(
numerogiocatori
int(10) unsigned NOT NULL default '0',
setOrologio
int(11) NOT NULL default '0',
statoOrologio
tinyint(1) NOT NULL default '1',
PRIMARY KEY
(numerogiocatori)
)
CREATE TABLE partita
(
Id int(10) unsigned NOT NULL auto_increment,
Data_partita
date NOT NULL,
NumeroEstratto
int(10) unsigned NOT NULL,
PRIMARY
KEY (Id)
)
CREATE
TABLE puntata
(
idPuntata int(10) unsigned NOT NULL auto_increment,
Utente_idUtente
int(10) unsigned NOT NULL,
Partita_Id
int(10) unsigned NOT NULL,
TipoPuntata
varchar(20) NOT NULL default '',
SoldiGiocati
int(10) unsigned NOT NULL,
Vincita
int(10) unsigned NOT NULL default '0',
Numeri
varchar(65) NOT NULL default '',
PRIMARY
KEY (idPuntata),
KEY
Partita_Id (Partita_Id),
KEY
Utente_idUtente (Utente_idUtente),
CONSTRAINT puntata_ibfk_1 FOREIGN
KEY (Partita_Id) REFERENCES
partita (Id) ON DELETE CASCADE ON
UPDATE CASCADE,
CONSTRAINT
puntata_ibfk_2 FOREIGN KEY (Utente_idUtente)
REFERENCES utente (idUtente) ON DELETE
NO ACTION ON UPDATE
NO ACTION
)
CREATE
TABLE usertemp
(
ip char(15) NOT NULL default '',
user_2
varchar(45) NOT NULL default '' REFERENCES
utente(Nick) ON DELETE NO ACTION ON
UPDATE NO ACTION,
PRIMARY
KEY (ip)
)
CREATE
TABLE utente
(
idUtente int(10) unsigned NOT NULL auto_increment,
Nick
varchar(255) NOT NULL,
Passwd
varchar(255) NOT NULL,
Credito
float NOT NULL,
Stato
float NOT NULL default '0',
PRIMARY
KEY (idUtente)
)
Query lato client
1)login: "select
count(*) from Utente where Nick='"+nickname+"' and
Passwd='"+passwd+"'"
2)registrazione: "select
count(Nick) from Utente where Nick="+nickname;
"select
max(idUtente) from Utente";
"insert into
Utente values
("+r+","+nickname+","+passwd+","+"10000,0)"
3)disponibilità posti liberi: "select count(*) from
usertemp ";
"select numerogiocatori from impostazioni";
4)prelievo timer dal server: "select setOrologio from
impostazioni ";
5)verifica del timer attivo del client: "select
statoOrologio from impostazioni ";
6)numero
estratto: "select max(Id) from partita";
"select
NumeroEstratto from partita where Id="+r;
7)credito
residuo: "select Credito from utente where Nick='"+user+"';
8)vecchio credito: "select Stato from utente where
Nick='"+user+"'
9)lista numeri estratti: "select NumeroEstratto from
partita;"
Query lato server
1)inserimento utente temporaneo: "insert into usertemp
values
('"+IP+"',"+"'"+user+"')"
2)cancellazione utente temporaneo: "delete from
usertemp where ip='"+IP+"'"
3)numero giocatori attuali: "select
numerogiocatori from impostazioni "
4)settaggio numero massimo giocatori : "update
impostazioni set
numerogiocatori="+ng+" where
numerogiocatori<100;"
5)settaggio timer server: "update impostazioni set
setOrologio="+tempo+" where
numerogiocatori<100;"
6)settaggio stato del timer: "update impostazioni set
statoOrologio="+stato+"
where numerogiocatori<100;"
7)impostazioni del timer: "select setOrologio from
impostazioni ";
8)inserimento nuova partita: "select setOrologio from
impostazioni "
"insert into partita values
("+r+",now(),"+numeroEstratto+")"
9)inserimento nuova puntata: "select
max(idPuntata) from puntata"
"select idUtente
from utente where
Nick='"+utente+"'"
"select max(Id) from partita"
"insert into puntata
values("+r+","+snp+","+spa+","+"'"+tipo+"'"+",
"+chip+","+vincita+","+"'"+numeri+"')"
10)ultimo estratto: "select max(Id) from
partita"
"select
NumeroEstratto from partita where Id="+r
11)calcolo vincite: "select max(Id) from partita"
"select NumeroEstratto
from partita where Id="+r
"select
count(*) from puntata pu,partita pa,utente u where
pu.Partita_Id=pa.Id and pu.Utente_idUtente=u.idUtente and
pa.Id="+r+";"
"select *
from puntata pu,partita pa,utente u where
pu.Partita_Id=pa.Id and pu.Utente_idUtente=u.idUtente and
pa.Id="+r+";")
"update
utente set
Credito=Credito+("+(soldigiocati+"*"+vincita)+"-
"+soldigiocati+") where "+utente+"=idUtente;"
"update utente set
Credito=Credito-"+soldigiocati+" where
"+utente+"=idUtente;"
12)Aggirnamento del credito parziale: "select count(*)
from utente;"
"update utente
set Stato=Credito"
13)elenco degli utenti connessi: "select * from
usertemp ;"