+ All Categories
Home > Documents > Realizzazione di una base di dati per la gestione delle valutazioni di progetti di ricerca

Realizzazione di una base di dati per la gestione delle valutazioni di progetti di ricerca

Date post: 09-Jun-2015
Category:
Upload: efrem-venturuzzo
View: 358 times
Download: 2 times
Share this document with a friend
44
UNIVERSITÀ DEGLI STUDI DI TRIESTE DIPARTIMENTO DI INGEGNERIA ED ARCHITETTURA CORSO DI LAUREA TRIENNALE IN INGEGNERIA DELL'INFORMAZIONE CURRICULUM INFORMATICA REALIZZAZIONE DI UNA BASE DI DATI PER LA GESTIONE DELLE VALUTAZIONI DI PROGETTI DI RICERCA Laureando: Relatore: EFREM VENTURUZZO CHIAR.MO PROF. MAURIZIO FERMEGLIA ANNO ACCADEMICO 2011/2012
Transcript
Page 1: Realizzazione di una base di dati per la gestione delle valutazioni di progetti di ricerca

UNIVERSITÀ DEGLI STUDI DI TRIESTE

DIPARTIMENTO DI INGEGNERIA ED ARCHITETTURA

CORSO DI LAUREA TRIENNALE IN INGEGNERIA DELL'INFORMAZIONE

CURRICULUM INFORMATICA

REALIZZAZIONE DI UNA BASE DI DATI PER LA GESTIONE

DELLE VALUTAZIONI DI PROGETTI DI RICERCA

Laureando: Relatore:

EFREM VENTURUZZO CHIAR.MO PROF. MAURIZIO FERMEGLIA

ANNO ACCADEMICO 2011/2012

Page 2: Realizzazione di una base di dati per la gestione delle valutazioni di progetti di ricerca

2

INDICE DEI CONTENUTI

CAPITOLO 1 INTRODUZIONE 4

CAPITOLO 2 ANALISI 6

2.1 Intervista al committente 6

2.2 Analisi del sistema 6

2.3 Analisi dettagliata del caso d’uso del tesista 10

2.4 Analisi del caso d’uso Upload Valutazione 11

CAPITOLO 3 PROGETTAZIONE 12

3.1 Progettazione del Database 12

3.2 Progettazione della Web Application 15

3.2.1 Progettazione inserimento progetti 15

3.2.2 Progettazione upload valutazioni 17

3.2.3 Struttura finale 18

CAPITOLO 4 REALIZZAZIONE 19

4.1 Realizzazione Database 19

4.2 Realizzazione Web Application 22

4.2.1 Data Binding 22

Page 3: Realizzazione di una base di dati per la gestione delle valutazioni di progetti di ricerca

3

4.2.2 Login 22

4.2.3 Nuovo Progetto 24

4.2.4 Keywords 27

4.2.5 Upload main document 29

4.2.6 Upload supplementary document 32

4.2.7 Riepilogo Dati 36

4.2.8 Upload valutazioni 39

CAPITOLO 5 CONCLUSIONI 43

BIBLIOGRAFIA 44

Page 4: Realizzazione di una base di dati per la gestione delle valutazioni di progetti di ricerca

4

CAPITOLO 1

Introduzione

Lo scopo di questa tesi è la creazione di una base di dati e di un’applicazione web per la gestione

dei progetti di ricerca e delle relative valutazioni.

In particolare si vuole fornire al tesista la capacità di inserire i dati relativi al proprio progetto e di

effettuare l’upload dei relativi documenti e ai revisori la possibilità di gestire l’upload delle

valutazioni dei progetti che hanno accettato di revisionare.

Il sistema è stato progettato per un utilizzo da parte dell’ambiente universitario.

Nei capitoli successivi si mostrerà in dettaglio come è stato implementato il sistema:

Nel capitolo dedicato all’analisi si tratteranno gli argomenti relativi all’analisi dei requisiti,

della situazione iniziale e di definire le basi di un sistema informativo che sarà, una volta

completato, più ampio e completo di quello realizzato;

In progettazione si esamineranno:

o gli schemi relativi al database e la documentazione associata;

o la struttura dell’applicazione web;

Infine nel capitolo realizzazione si vedrà il codice dell’applicazione web in dettaglio.

In questa tesi si userà il termine generico “progetto” per indicare svariate tipologie di progetto

come tesi, tesi di dottorato, progetti di ricerca.

La creazione di questo sistema è stata motivata dalla necessità di amministrare in maniera più

semplice e completa le diverse fasi che portano alla valutazione dei progetti dal punto di vista dei

tesisti, dei revisori e da quello dell’editore.

I vincoli progettuali sono rappresentati dall’utilizzo delle tecnologie .NET, del linguaggio di

programmazione C# e del linguaggio di markup HTML5.

Page 5: Realizzazione di una base di dati per la gestione delle valutazioni di progetti di ricerca

5

Per la realizzazione del database è stato richiesto di usare SQL Server 2008 per garantire la

massima compatibilità, in quanto questo è già usato all’interno dell’ambiente come data base

management system.

Tutti i moduli software di questo documento sono stati sviluppati dall’autore.

Gli obiettivi della realizzazione sono:

Analizzare i requisiti da parte del committente;

Analizzare la struttura del sistema informativo;

Analizzare e progettare la base dati;

Studiare le tecnologie .NET, ASP.NET, C#, e HTML5;

Studiare le iterazioni fra base dati ed applicazione;

Realizzare il database;

Implementare i casi d’uso del tesista;

Implementare il caso d’uso “Upload valutazione” del revisore.

Page 6: Realizzazione di una base di dati per la gestione delle valutazioni di progetti di ricerca

6

CAPITOLO 2

Analisi

2.1 Intervista al committente

La prima fondamentale informazione che deriva dall’intervista è la mancanza di un sistema

preesistente da implementare. Perciò si dovrà creare il sistema dall’origine.

Le richieste del committente sono:

Realizzazione di una base dati

Realizzazione di un’applicazione web che permetta ai tesisti di inserire i dati relativi ai

propri progetti nella base dati e l’upload dei documenti;

Realizzazione di un’applicazione web che permetta ai revisori di compiere operazioni quali

decidere se accettare o rifiutare un progetto, effettuare il download dei documenti da

revisionare e gestire l’upload delle valutazioni.

Il committente svolgerà il ruolo di editore-amministratore ed accederà ai dati direttamente

con l’ausilio di software come Microsoft Access.

Tutti i dati relativi ai tesisti ed agli editori vengono precedentemente caricati dall’editore

stesso.

2.2 Analisi del sistema

Gli attori fondamentali del sistema sono tre:

Tesista;

Editore;

Revisore.

Page 7: Realizzazione di una base di dati per la gestione delle valutazioni di progetti di ricerca

7

Sistema

Web Application DatabaseTesista

Revisore

Editore

Il tesista accederà al sistema esclusivamente per inserire i dati del proprio progetto ed i relativi

documenti.

Tesista

Inserisci Progetto

Il revisore compie invece diverse azioni:

1. Accetta o rifiuta una revisione: a seguito della sua assegnazione da parte dell’editore ad

un progetto da revisionare può decidere se accettare il compito o rifiutare;

2. Download documenti: per ogni progetto accettato deve poter effettuare il download

dei relativi documenti in un qualsiasi momento;

3. Upload della valutazione.

accetta/rifiutarevisione

download documentida revisionare

Upload valutazioneRevisore

I casi d’uso dell’editore sono vari, in particolar modo si mettono in risalto i principali come:

Page 8: Realizzazione di una base di dati per la gestione delle valutazioni di progetti di ricerca

8

1. Visualizzare i dati per evento: ogni progetto ha una data di consegna, di scadenza di

revisione e di scadenza finale. Tali date variano in base all’evento/tipologia di progetto

specifico;

2. Assegnare revisore al progetto;

3. Elaborare valutazioni: accedere ai documenti delle valutazioni per esprimere il giudizio

finale.

Editore

assegna revisore aprogetto

Elabora Valutazioni

VisualizzaProgetti per Evento

Si ricorda che l’editore funge anche da amministratore e ha accesso diretto ai dati. Ciò comporta,

in prima analisi, una non necessità d’implementazione dei relativi casi d’uso attraverso

applicazioni dedicate. In un secondo momento si potrà passare alla realizzazione di strumenti atti

a supportare le attività dell’editore.

Il diagramma delle attività del sistema è il seguente:

FASE 1: è la fase dedicata al Tesista, il quale, dopo aver inserito i dati del nuovo progetto, non

compie altre azioni.

FASE 2: l’editore visualizza i progetti in scadenza, richiede una lista dei revisori, anche in base a

certi specifici parametri, ed assegna ai revisori i progetti.

FASE 3: Il revisore valuta se accettare o rifiutare un progetto ed eventualmente effettua l’upload

della valutazione.

Page 9: Realizzazione di una base di dati per la gestione delle valutazioni di progetti di ricerca

9

INSERISCI PROGETTO

TESISTA AMMINISTRATORE REVISORE DATABASE

COMPILAZIONE VALUTAZIONE

INSERISCI VALUTAZIONE

CAMBIA STATO REVISORE

CARICAMENTO DATI PROGETTO

RICHIESTA PROGETTI IN SCADENZA

TORNA LISTA PROGETTI IN SCADENZA

VISUALIZZA REVISORI

TORNA LISTA REVISORI

VISUALIZZA PROGETTI

RICHIESTA REVISORI

ASSEGNA REVISORE A PROGETTO

ACCETTA PROGETTO?

NO

CAMBIA STATO REVISORE

SI

RICHIESTA PROGETTO

RESTITUISCI PROGETTO

CAMBIA STATO REVISORE

FASE 1

FASE 2

FASE 3

Page 10: Realizzazione di una base di dati per la gestione delle valutazioni di progetti di ricerca

10

2.3 Analisi dettagliata del caso d’uso del tesista

Il principale caso d’uso è quello che porta all’inserimento di un nuovo progetto da parte del

tesista.

Il diagramma di sequenza mette in risalto le quattro attività principali:

1. Effettuare il login;

2. Inserire i dati caratteristici di un progetto;

3. Eseguire l’upload dei documenti;

4. Realizzare il controllo finale su tutti i dati e confermare gli stessi.

SistemaTesista

Visualizza pagina inserimento dati progetto

Dati progetto

Login-Nome Utente e password

Visualizza pagina upload documenti

Upload documenti

Visualizza pagina riepilogo

Conferma dati

Visualizza HomePage

Page 11: Realizzazione di una base di dati per la gestione delle valutazioni di progetti di ricerca

11

2.4 Analisi del caso d’uso Upload Valutazione

Uno dei casi d’uso del revisore è quello relativo all’upload delle valutazioni.

Il revisore deve accedere al sistema con le proprie credenziali, specificare un progetto di

riferimento ed effettuare l’upload della corrispettiva valutazione.

SistemaRevisore

Visualizza pagina inserimento valutazione

Login-Nome Utente e password

Upload Valutazione

Conferma avvenuta operazione

Come parte di questa tesi si è realizzato il caso d’uso del tesista e quello relativo all’upload della

valutazione da parte del revisore.

Page 12: Realizzazione di una base di dati per la gestione delle valutazioni di progetti di ricerca

12

CAPITOLO 3

Progettazione

3.1 Progettazione del Database

In seguito alle informazioni ricavate con l’intervista al committente ed all’analisi delle stesse, è

stato redatto lo schema concettuale.

I vincoli non esprimibili sono:

Entità “Tipo evento”: “data fine” deve essere maggiore o uguale a “data inizio”;

Entità “Tipo evento”: “scadenza revisione” deve essere maggiore o uguale a “data fine”;

Entità “Tipo evento”: “scadenza “deve essere maggiore o uguale a “scadenza revisione”;

Si mette in evidenza l’analisi dei principali elementi appartenenti allo schema concettuale

PROGETTO

Id Progetto Identificatore univoco numerico del progetto

Titolo Titolo del progetto

Supervisore Supervisore del progetto

Sommario Essenziale sommario dei capitoli

TIPO EVENTO

Id Evento Identificatore univoco numerico dell'evento

Nome Nome dell'evento

Data Inizio Data iniziale di possibile consegna dei progetti

Data Fine Data ultima di consegna dei progetti

Scadenza Revisione Data ultima di consegna valutazioni da parte dei revisori

Scadenza Data ultima di completamento iter di valutazione del progetto

Page 13: Realizzazione di una base di dati per la gestione delle valutazioni di progetti di ricerca

13

DOCUMENTO

Id Documento Identificatore univoco numerico del documento

Documento Titolo del documento con estensione

Tipo Documento Tipo del documento: main document(obbligatorio e unico) o supplementary(facoltativo e

può essere più di uno)

REVISORE

Id Revisore Identificatore univoco numerico del revisore

Nome Nome revisore

Cognome Cognome revisore

Telefono Recapito telefonico del revisore

Email Indirizzo email del revisore

Credenziali Credenziali d'accesso del revisore composte da nome utente e password

TESISTA

Id Tesista Identificatore univoco numerico del tesista

Nome Nome tesista

Cognome Cognome tesista

Credenziali Credenziali d'accesso del revisore composte da nome utente e password

VALUTAZIONE

è il collegamento tra l'entità progetto con l'entità revisore

CARDINALITÀ MOLTI A MOLTI: un progetto ha tipicamente più valutazioni fornite da diversi

revisori; i revisori valutano più progetti

STATO Stato dell'associazione fra progetto e revisore

VALUTAZIONE Titolo del documento con estensione

Page 14: Realizzazione di una base di dati per la gestione delle valutazioni di progetti di ricerca

14

Page 15: Realizzazione di una base di dati per la gestione delle valutazioni di progetti di ricerca

15

I dati di carico evidenziano una quantità stimata di 300 progetti all’anno, per ognuno dei quali ci si

aspetta all’incirca 3 valutazioni, per un totale di 900 valutazioni. Considerando una media

sovrastimata di 3 documenti per progetto ci si aspetta 900 documenti annui. Ad ogni progetto si

associano 5 keyword, scelte da una lista di 50 elementi, per un totale di 1500 coppie progetto-

parola. Ci si aspetta un centinaio di revisori, mentre le entità che completano le caratteristiche del

progetto si attestano attorno a qualche decina di elementi.

Il totale dei volumi è quindi molto modesto per un DBMS come sql server 2008, progettato per

gestire centinai di migliaia di record; non è quindi necessaria alcuna modifica dello schema a fini

prestazionali.

3.2 Progettazione della Web Application

3.2.1 Progettazione inserimento progetti

Con riferimento all’analisi del caso d’uso del tesista (capitolo 2.3), è stata progettata una struttura

a cinque livelli:

LOGIN

INSERIMENTO DATI

INSERIMENTO KEYWORDS

UPLOAD DOCUMENTI

RIEPILOGO

UPLOAD MAIN DOCUMENT

UPLOAD SUPPLEMENTARY

DOCUMENT

Il livello “upload documenti” è suddiviso in due parti in modo da facilitare la distinzione fra i due

tipi di documento previsti in fase di analisi.

Page 16: Realizzazione di una base di dati per la gestione delle valutazioni di progetti di ricerca

16

Per quanto riguarda i singoli elementi si è preso spunto da un software in uso al committente,

ScholarOne Manuscripts v4.10.0. La struttura è sostanzialmente la medesima ed i campi richiesti

dal software sono essenzialmente gli stessi richiesti dall’applicazione web in progetto.

Inserimento dati

Tutti gli attributi del progetto verranno inseriti da un unico form: titolo, supervisore, sommario,

tipo progetto, evento, ERC, area. Non sono d’interesse per l’applicazione i campi Special Issue e

Copyright.

Inserimento keywords

Page 17: Realizzazione di una base di dati per la gestione delle valutazioni di progetti di ricerca

17

La seconda videata sarà simile a quella del software in esame.

Upload documenti

L’upload del main document, documento obbligatorio ed unico, viene diviso da quelli di possibili

altri documenti al fine di ridurre il rischio di errori in upload da parte dell’utente.

3.2.2 Progettazione upload valutazioni

Anche il revisore dovrà accedere attraverso una pagina di login prima di poter gestire le

valutazioni.

Page 18: Realizzazione di una base di dati per la gestione delle valutazioni di progetti di ricerca

18

LOGIN

UPLOAD VALUTAZIONE

Il revisore dovrà solamente definire di quale progetto ha effettuato la revisione e selezionare il file

di cui fare l’upload.

3.2.3 Struttura finale

LOGIN

INSERIMENTO DATI

INSERIMENTO KEYWORDS

RIEPILOGO

UPLOAD MAIN DOCUMENT

UPLOAD SUPPLEMENTARY

DOCUMENT

UPLOAD VALUTAZIONE

Page 19: Realizzazione di una base di dati per la gestione delle valutazioni di progetti di ricerca

19

CAPITOLO 4

Realizzazione

4.1 Realizzazione Database

Il database che è stato realizzato è composto da diciassette tabelle, quattro viste e cinque stored

procedure.

Le viste che sono state implementate sono:

ViewParola: visualizza il codice identificativo dei progetti e le parole associate ordinate per

Id di progetto crescente. La vista è implementata sulle tabelle TblParola e TblKeyword;

ViewProgettoDati: mostra tutti i dati di tutti i progetti presenti nella TblProgetto,

sostituendo le chiavi esterne numeriche con i rispettivi valori riferiti, ed il loro stato. Oltre

alla già citata TblProgetto, riporta dati delle TblArea, TblERC, TblTipoEvento, TblTipo,

TblStato e TblStatoProgetto;

ViewRevisoreTOT: visualizza i dati dei revisori, escluso le loro credenziali. Si riferisce alla

TblRevisore ed è utile per accedere facilmente ai recapiti dei revisori;

ViewStatoProgetto: mostra Id progetto, titolo del progetto ed il rispettivo stato progetto.

Rappresenta informazioni appartenenti a TblProgetto,TblStatoProgetto e TblStato.

Le stored procedure:

Sp_NuovoProgetto: permette l’inserimento di una nuova riga nella TblProgetto attraverso

il passaggio di alcuni parametri;

Exec Sp_NuovoProgetto @titolo='progettazione di una base dati per una palestra',

@supervisore='marco fetto', @area=1, @erc=1, @tipoprogetto=2, @evento=6,

@sommario='1)introduzione 2)progettazione 3)realizzazione'

StatoAccettaProgettoDaValutare e StatoRifiutaProgettoDaValutare settano lo stato della

valutazione rispettivamente a 2 ed a 3, pari ad accettato ed a rifiutato, prendendo come

input gli identificatori del progetto e del revisore a cui si riferiscono;

Exec StatoAccettaProgettoDaValutare @Progetto=34, @Revisore=5

Page 20: Realizzazione di una base di dati per la gestione delle valutazioni di progetti di ricerca

20

TitoloDaIdProgetto: visualizza tutti i dati presenti nella TblProgetto per il progetto avente

come Id quello inserito come input;

Exec TitoloDaIdProgetto 4

Sp_Evento: mostra tutti i progetti che fanno parte di uno specifico evento passato come

parametro d’input.

USE [GestioneProgetti]

GO

create Procedure [dbo].[Sp_Evento]

@evento int

AS

Select * FROM [dbo].[TblProgetto]

WHERE Evento=@evento

GO

EXEC SP_Evento X

É stato implementato il cascade delete per l’entità tesista, revisore e progetto al fine di

semplificare la gestione ed il mantenimento dei dati.

Il diagramma descrive la struttura della base dati, le chiavi primarie e le chiavi esterne.

Page 21: Realizzazione di una base di dati per la gestione delle valutazioni di progetti di ricerca

21

Page 22: Realizzazione di una base di dati per la gestione delle valutazioni di progetti di ricerca

22

4.2 Realizzazione Web Application

4.2.1 Data Binding

Lo scambio di dati fra l’applicazione e il database avviene con l’utilizzo di una connessione definita

dalla stringa:

<add name="GestioneProgettiConnectionString" connectionString="Data Source=name_server

;Initial Catalog=GestioneProgetti;Integrated Security=True; MultipleActiveResultSets=True;

Application Name=EntityFramework" providerName="System.Data.SqlClient" />

Quando il sistema verrà installato nell’ambiente in cui dovrà operare sarà necessario modificare

questa stringa con i parametri adeguati.

4.2.2 Login

Page 23: Realizzazione di una base di dati per la gestione delle valutazioni di progetti di ricerca

23

Si è realizzata un’unica pagina di login divisa in due parti, la parte superiore dedica ai tesisti e

quella inferiore ai revisori.

Nel caso in cui le credenziali siano errate una stringa di testo notificherà l’errore.

In entrambi i casi l’interfaccia e l’implementazione sono le medesime. Vi sono due textbox per

l’inserimento dei propri dati, una label per stampare a video l’eventuale stringa d’errore ed un

bottone per far eseguire le operazioni.

protected void Button1_Click(object sender, EventArgs e)

Si definisce e si esegue una select sulla tabella contenente le credenziali dell’attore di riferimento.

SqlCommand CheckTes = new SqlCommand("select IdTesista from TblTesista where NomeUtente=@user AND Password=@Pass",connection1); CheckTes.Parameters.AddWithValue("user", TextBox1.Text); CheckTes.Parameters.AddWithValue("pass", TextBox2.Text);

connection1.Open(); SqlDataReader rd = CheckTes.ExecuteReader();

Il risultato viene memorizzato in un data reader; se questo è vuoto vuol dire che non vi è alcuna

corrispondenza per le credenziali inserite, altrimenti viene letto il valore contenuto che

corrisponde proprio all’id dell’utente. In quest’ultimo caso si effettua la redirect alla pagina

successiva e si passa il numero identificativo.

if(rd.HasRows) { rd.Read(); rd.Close(); String IdTes = (String)CheckTes.ExecuteScalar(); Response.Redirect("NewProgetto.aspx?IDT="+IdTes); } else { Label1.Text="Username e/o Password errate"; } connection1.Close();

Il passaggio dell’identificatore dell’utente avviene mediante l’espressione url?variabile=valore

Page 24: Realizzazione di una base di dati per la gestione delle valutazioni di progetti di ricerca

24

4.2.3 Nuovo Progetto

Il tesista può ora compilare questa web page composta da tre textbox, un bottone e quattro

dropdowlist. Una volta inseriti i dati sarà sufficiente cliccare su “CONTINUA” per proseguire.

La prima operazione compiuta è il popolamento delle dropdownlist.

protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { DDL1(); DDL2(); DDL3(); DDL4(); } }

Il popolamento di ognuno di questi quattro elementi avviene nel medesimo modo: si effettua una

select nella tabella di riferimento ed il risultato viene assegnato ad un data reader; il data reader

diventa la sorgente dati della dropdownlist.

Page 25: Realizzazione di una base di dati per la gestione delle valutazioni di progetti di ricerca

25

Si noti come DropDownList1NP.DataTextField indichi l’elemento che verrà visualizzato

nell’interfaccia, mentre DropDownList1NP.DataValueField esprime il valore associato alla stringa

mostrata.

protected void DDL1() { SqlConnection connection1 = new SqlConnection(); connection1.ConnectionString = "Data Source=EMXOR;Initial Catalog=GestioneProgetti;Integrated Security=True;MultipleActiveResultSets=True;Application Name=EntityFramework" + "providerName=System.Data.SqlClient"; SqlCommand cmdArea = new SqlCommand("SELECT * FROM [TblArea]",connection1); connection1.Open(); SqlDataReader dr; dr = cmdArea.ExecuteReader(); DropDownList1NP.DataSource = dr; DropDownList1NP.DataValueField = "IdArea"; DropDownList1NP.DataTextField = "Area"; DropDownList1NP.DataBind(); DropDownList1NP.Items.Insert(0, new ListItem("seleziona area", "-1")); connection1.Close(); cmdArea.Dispose(); }

Cliccando il bottone viene eseguita una operazione d’insert nella TblProgetto utilizzando come

parametri i dati inseriti nei vari campi e, successivamente, esegue la funzione IDP.

protected void Button1NP_Click(object sender, EventArgs e) { SqlConnection connection5 = new SqlConnection(); connection5.ConnectionString = "Data Source=EMXOR;Initial Catalog=GestioneProgetti;Integrated Security=True;MultipleActiveResultSets=True;Application Name=EntityFramework" + "providerName=System.Data.SqlClient"; SqlCommand NewProgetto = new SqlCommand("Insert into TblProgetto (Titolo, Supervisore, Area, ERC, TipoProgetto,Evento,Sommario) VALUES (@t ,@sup, @area, @ERC,@TP,@Ev,@Som)", connection5); NewProgetto.Parameters.AddWithValue("area", DropDownList1NP.Text); NewProgetto.Parameters.AddWithValue("t", TextBox1NP.Text); NewProgetto.Parameters.AddWithValue("sup", TextBox2NP.Text); NewProgetto.Parameters.AddWithValue("Som", TextBox3NP.Text); NewProgetto.Parameters.AddWithValue("ERC", DropDownList2NP.Text); NewProgetto.Parameters.AddWithValue("TP", DropDownList3NP.Text); NewProgetto.Parameters.AddWithValue("Ev", DropDownList4NP.Text); connection5.Open(); NewProgetto.ExecuteNonQuery(); connection5.Close(); IDP(); }

Page 26: Realizzazione di una base di dati per la gestione delle valutazioni di progetti di ricerca

26

In seguito all’operazione d’insert, viene creata una nuova riga di cui non si conosce il valore della

chiave primaria.

Per individuare questo valore è stata sviluppata la funzione IDP:

protected void IDP() { SqlConnection connection6 = new SqlConnection(); connection6.ConnectionString = "Data Source=EMXOR;Initial Catalog=GestioneProgetti;Integrated Security=True;MultipleActiveResultSets=True;Application Name=EntityFramework" + "providerName=System.Data.SqlClient"; SqlCommand IdProg = new SqlCommand("Select IdProgetto from TblProgetto where (titolo like @t AND Area=@area AND Supervisore like @sup AND Sommario like @Som AND ERC=@ERC AND TipoProgetto=@TP AND Evento=@Ev) ORDER BY IdProgetto DESC", connection6); IdProg.Parameters.AddWithValue("t", TextBox1NP.Text); IdProg.Parameters.AddWithValue("area", DropDownList1NP.Text); IdProg.Parameters.AddWithValue("sup", TextBox2NP.Text); IdProg.Parameters.AddWithValue("Som", TextBox3NP.Text); IdProg.Parameters.AddWithValue("ERC", DropDownList2NP.Text); IdProg.Parameters.AddWithValue("TP", DropDownList3NP.Text); IdProg.Parameters.AddWithValue("Ev", DropDownList4NP.Text); connection6.Open(); Int32 Id = (Int32)IdProg.ExecuteScalar(); connection6.Close(); String IDT = Request.QueryString["IDT"]; Response.Redirect("KeywordPage.aspx?IDT=" + IDT + "&IDP=" + Id); }

La funzione select sfrutta i parametri ancora presenti negli elementi dell’interfaccia per

identificare la riga corrispondente a quella appena inserita.

È importante notare come la risposta non sia per forza un unico elemento, potrebbe contenere

anche più di un codice identificativo. Ciò può accadere a seguito di un tentativo fallito in

precedenza dell’utente di inserire il medesimo progetto, se infatti un guasto non dovesse

permettere all’utente di concludere tutte le operazioni necessarie per definire un progetto, come

ad esempio l’inserimento dei documenti, dovrà ricompilare il form provocando un doppione nella

base dati. Per ovviare a questo problema si ordinano gli elementi della select in maniera

decrescente e si considera solo il primo elemento, così da restituire sempre l’ultimo Id.

Infine viene eseguita una redirect avente come parametri i codici identificativi relativi al tesista e al

progetto.

Page 27: Realizzazione di una base di dati per la gestione delle valutazioni di progetti di ricerca

27

4.2.4 Keywords

L’interfaccia contiene due etichette che mettono in evidenza i codici del tesista e del progetto.

L’utente selezionerà le parole chiave d’interesse e poi proseguirà con un click su “inserisci”.

protected void Page_Load(object sender, EventArgs e) { if(!Page.IsPostBack) { DDL1K(); DDL2K(); DDL3K(); DDL4K(); DDL5K(); } String IDT = Request.QueryString["IDT"]; String IDP = Request.QueryString["IDP"]; Label1.Text = IDT; Label2.Text = IDP; }

Il popolamento delle dropdownlist avviene come in precedenza ed è uguale per tutte e cinque.

protected void DDL1K() { SqlConnection connection11 = new SqlConnection();

Page 28: Realizzazione di una base di dati per la gestione delle valutazioni di progetti di ricerca

28

connection11.ConnectionString = "Data Source=EMXOR;Initial Catalog=GestioneProgetti;Integrated Security=True;MultipleActiveResultSets=True;Application Name=EntityFramework" + "providerName=System.Data.SqlClient"; SqlCommand cmdKW = new SqlCommand("SELECT * FROM [TblKeyword]", connection11); connection11.Open(); SqlDataReader dr; dr = cmdKW.ExecuteReader(); DropDownList1K.DataSource = dr; DropDownList1K.DataValueField = "IdWord"; DropDownList1K.DataTextField = "Parola"; DropDownList1K.DataBind(); DropDownList1K.Items.Insert(0,new ListItem("scegli una parola","-1")); connection11.Close(); cmdKW.Dispose(); }

Allo scopo di ridurre la possibilità di errori è stato deciso di implementare l’inserimento dei dati

con un’insert per ogni dropdownlist. A fini prestazionali questa decisione non è significativamente

dannosa, infatti gli accessi avvengono in ogni caso in numero modesto, solo cinque, e su una

quantità di campi estremamente limitata, appena due. Vi è inoltre un’istruzione if per assicurarsi

che siano state selezionate cinque parole diverse.

protected void Button1_Click(object sender, EventArgs e) { if(DropDownList1K.Text!=DropDownList2K.Text && DropDownList1K.Text!=DropDownList3K.Text && DropDownList1K.Text!=DropDownList4K.Text && DropDownList1K.Text!=DropDownList5K.Text && DropDownList2K.Text!=DropDownList3K.Text && DropDownList2K.Text!=DropDownList4K.Text && DropDownList2K.Text!=DropDownList5K.Text && DropDownList3K.Text!=DropDownList4K.Text && DropDownList3K.Text!=DropDownList5K.Text && DropDownList4K.Text!=DropDownList5K.Text) { SqlConnection connection1 = new SqlConnection(); connection1.ConnectionString = "Data Source=EMXOR;Initial Catalog=GestioneProgetti;Integrated Security=True;MultipleActiveResultSets=True;Application Name=EntityFramework" + "providerName=System.Data.SqlClient"; SqlCommand CmdParola = new SqlCommand("INSERT INTO TblParola(Progetto, KeyWord) VALUES (@IDP,@KW)", connection1); CmdParola.Parameters.AddWithValue("IDP", Label2.Text); CmdParola.Parameters.AddWithValue("KW", DropDownList1K.Text); connection1.Open(); CmdParola.ExecuteNonQuery(); connection1.Close();

.

.

.

Page 29: Realizzazione di una base di dati per la gestione delle valutazioni di progetti di ricerca

29

Response.Redirect("UploadDoc.aspx?IDT=" + Label1.Text + "&IDP=" + Label2.Text); }

Si può ora accedere alla sezione di upload documenti.

4.2.5 Upload main document

Le operazioni che devono essere compiute al momento dell’upload documenti sono due:

L’inserimento dell’associazione progetto-documento sulla base dati;

L’upload effettivo del documento sul server.

L’interfaccia è composta da due label per gli identificatori, un’etichetta per un messaggio d’errore,

nel caso in cui si tentasse di effettuare un upload senza indicare alcun file, un bottone di upload ed

un elemento di input file.

Il relativo codice HTML è contenuto nel file UploadDoc.aspx ed è qui riportato.

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="UploadDoc.aspx.cs" Inherits="WebGestioneProgetti.UploadDoc" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title>GESTIONEPROGETTI-UPLOADDOC</title> <style type="text/css"> #File1 { width: 328px; } .auto-style1 { color: #FF0000; } </style> </head> <body style="height: 618px"> <form id="Form2" method="post" enctype="multipart/form-data" runat="server"> <h1 class="auto-style1">DOCUMENTI</h1> <div style="height: 524px"> IDTesista:

Page 30: Realizzazione di una base di dati per la gestione delle valutazioni di progetti di ricerca

30

<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IDProgetto:&nbsp; <asp:Label ID="Label2" runat="server" Text="Label"></asp:Label> <br /> <br /> <br /> MAIN DOCUMENT:&nbsp;&nbsp; <input type="file" id="File1" name="File1" runat="server" />&nbsp;&nbsp;&nbsp; <input type="submit" id="Submit1" value="UPLOAD" runat="server" name="Submit1"/><br /> <br /> <br /> <asp:Label ID="Label3" runat="server"></asp:Label> </div> </form> </body> </html>

Una volta selezionato il file è possibile premere il bottone “UPLOAD”. Si eseguirà così il seguente

codice C#:

public partial class UploadDoc : System.Web.UI.Page { protected System.Web.UI.HtmlControls.HtmlInputFile File1; protected System.Web.UI.HtmlControls.HtmlInputButton Submit1; protected void Page_Load(object sender, EventArgs e) { String IDT = Request.QueryString["IDT"]; String IDP = Request.QueryString["IDP"]; Label1.Text = IDT; Label2.Text = IDP; } #region Web Form Designer generated code override protected void OnInit(EventArgs e) { // CODEGEN: This call is required by the ASP.NET Web Form Designer. InitializeComponent(); base.OnInit(e); } private void InitializeComponent() {

Page 31: Realizzazione di una base di dati per la gestione delle valutazioni di progetti di ricerca

31

this.Submit1.ServerClick += new System.EventHandler(this.Submit1_ServerClick); this.Load += new System.EventHandler(this.Page_Load); } #endregion private void Submit1_ServerClick(object sender, System.EventArgs e) { if ((File1.PostedFile != null) && (File1.PostedFile.ContentLength > 0)) { string fn = System.IO.Path.GetFileName(File1.PostedFile.FileName); fn = Label2.Text + "MD" + fn; string SaveLocation = Server.MapPath("MAINDOC") + "\\" + fn; try { File1.PostedFile.SaveAs(SaveLocation); //aggiorna il DB UPDB(); //prosegui Response.Redirect("UploadSupDoc.aspx?IDT=" + Label1.Text + "&IDP=" + Label2.Text); } catch (Exception ex) { Label3.Text="Error: " + ex.Message; } } else { Label3.Text="Seleziona un file"; } } //inserisce nella TblDocumento protected void UPDB() { SqlConnection connection1 = new SqlConnection(); connection1.ConnectionString = "Data Source=EMXOR;Initial Catalog=GestioneProgetti;Integrated Security=True;MultipleActiveResultSets=True;Application Name=EntityFramework" + "providerName=System.Data.SqlClient"; SqlCommand InMDoc = new SqlCommand("Insert into TblDocumento(progetto,tipo,doc) Values (@pr ,1 , @doc)", connection1); string fn = System.IO.Path.GetFileName(File1.PostedFile.FileName); string Name = Label2.Text + "MD" + fn; InMDoc.Parameters.AddWithValue("pr", Label2.Text); InMDoc.Parameters.AddWithValue("doc", Name); try { connection1.Open(); InMDoc.ExecuteNonQuery(); connection1.Close(); } catch (Exception ex) { Label3.Text = "Error: " + ex.Message; } }

Page 32: Realizzazione di una base di dati per la gestione delle valutazioni di progetti di ricerca

32

}

La prima parte si occupa di definire il contenuto delle due label e di inizializzare gli elementi che

serviranno per eseguire le operazioni richieste.

La parte centrale, private void Submit1_ServerClick(object sender, System.EventArgs e), dopo il

controllo sull’esistenza o meno di un file selezionato, si occupa dell’effettivo upload del file nel

web server dell’applicazione, più precisamente in una cartella denominata “MAINDOC”.

È importante evidenziare che il nome del file viene modificato.

Il nuovo nome sarà costituito dall’id del progetto, seguito dalla sigla MD (Main Document) ed

infine dal nome originale del file. Tale accorgimento serve per evitare la possibile sovrascrittura di

documenti e per rendere più facile l’associazione degli stessi ai relativi progetti.

Dopo aver inserito il file nel server viene chiamata la funzione UPDB che aggiornerà la base dati.

La parte finale esegue un’insert nella tabella TblDocumento: inserisce il nome del file nella colonna

“doc” e setta il tipo al valore corrispondente a main document della TblTipoDoc.

4.2.6 Upload supplementary document

I supplementary document sono documenti non obbligatori che completano il documento

principale del progetto e possono essere tipicamente anche più d’uno.

Con i documenti supplementari si conclude la fase di inserimento dati da parte dell’utente, si

definisce il legame di autore fra tesista e progetto e si assegna lo stato progetto.

Page 33: Realizzazione di una base di dati per la gestione delle valutazioni di progetti di ricerca

33

La struttura dell’interfaccia è molto simile a quella dedicata al documento principale, ma si

differenzia per la presenza di due diversi bottoni.

“UPLOAD” effettua l’aggiornamento della TblDocumento ed il caricamento dei file nel server.

Non contiene alcuna redirect in quanto è necessario permettere l’upload di un numero di file

superiore ad uno.

Infatti dopo l’upload del primo file si notifica il successo dell’operazione e si offre la possibilità di

ripetere l’operazione.

Page 34: Realizzazione di una base di dati per la gestione delle valutazioni di progetti di ricerca

34

Anche in quest’occasione i file cambiano nome con l’aggiunta alla denominazione originale del

numero identificativo di progetto e del suffisso SD (Supplementary Document). Questo tipo di file

saranno salvati nel folder “SUPPLEMENTARYDOC”.

public partial class UploadSupDoc : System.Web.UI.Page { protected System.Web.UI.HtmlControls.HtmlInputFile File1; protected System.Web.UI.HtmlControls.HtmlInputButton Submit1; protected void Page_Load(object sender, EventArgs e) { String IDT = Request.QueryString["IDT"]; String IDP = Request.QueryString["IDP"]; Label1.Text = IDT; Label2.Text = IDP; } #region Web Form Designer generated code override protected void OnInit(EventArgs e) { // CODEGEN: This call is required by the ASP.NET Web Form Designer. InitializeComponent(); base.OnInit(e); } private void InitializeComponent() { this.Submit1.ServerClick += new System.EventHandler(this.Submit1_ServerClick); this.Load += new System.EventHandler(this.Page_Load); } #endregion private void Submit1_ServerClick(object sender, System.EventArgs e) { if ((File1.PostedFile != null) && (File1.PostedFile.ContentLength > 0)) { string fn = System.IO.Path.GetFileName(File1.PostedFile.FileName); fn = Label2.Text + "SD" + fn; string SaveLocation = Server.MapPath("SUPPLEMENTARYDOC") + "\\" + fn; try {

Page 35: Realizzazione di una base di dati per la gestione delle valutazioni di progetti di ricerca

35

File1.PostedFile.SaveAs(SaveLocation); //aggiorna il DB UPDB(); Label3.Text = "Documento inserito"; } catch (Exception ex) { Label3.Text = "Error: " + ex.Message; } } else { Label3.Text = "Seleziona un file"; } } protected void FINE(object sender, EventArgs e) { //Assegna progetto-Tesista a TblAutore; stato progetto diventa "inserito non assegnato" in TblStato; Redirect SqlConnection connection1 = new SqlConnection(); connection1.ConnectionString = "Data Source=EMXOR;Initial Catalog=GestioneProgetti;Integrated Security=True;MultipleActiveResultSets=True;Application Name=EntityFramework" + "providerName=System.Data.SqlClient"; SqlCommand Aut = new SqlCommand("Insert into TblAutore(progetto,tesista) Values (@pr ,@Tes)", connection1); Aut.Parameters.AddWithValue("pr", Label2.Text); Aut.Parameters.AddWithValue("Tes", Label1.Text); SqlCommand StPr = new SqlCommand("Insert into TblStato (progetto,avanzamento) Values (@prog ,1)", connection1); StPr.Parameters.AddWithValue("prog", Label2.Text); try { connection1.Open(); Aut.ExecuteNonQuery(); StPr.ExecuteNonQuery(); connection1.Close(); } catch (Exception ex) { Label3.Text = "Error: " + ex.Message; } Response.Redirect("DatiProg.aspx?IDT=" + Label1.Text + "&IDP=" + Label2.Text); } protected void UPDB() { SqlConnection connection1 = new SqlConnection(); connection1.ConnectionString = "Data Source=EMXOR;Initial Catalog=GestioneProgetti;Integrated Security=True;MultipleActiveResultSets=True;Application Name=EntityFramework" + "providerName=System.Data.SqlClient"; string fn = System.IO.Path.GetFileName(File1.PostedFile.FileName); string NameSupp = Label2.Text + "SD" + fn; SqlCommand InS1Doc = new SqlCommand("Insert into TblDocumento(progetto,tipo,doc) Values (@pr ,2 , @doc)", connection1); InS1Doc.Parameters.AddWithValue("pr", Label2.Text); InS1Doc.Parameters.AddWithValue("doc", NameSupp);

Page 36: Realizzazione di una base di dati per la gestione delle valutazioni di progetti di ricerca

36

try { connection1.Open(); InS1Doc.ExecuteNonQuery(); connection1.Close(); } catch (Exception ex) { Label3.Text = "Error: " + ex.Message; } } }

Con il tasto “FINE” si dà avvio a due insert, nella TblAutore e nella TblStato, per poi passare

all’ultima schermata dedicata al tesista.

4.2.7 Riepilogo Dati

Questa pagina web ha lo scopo di riepilogare all’utente tutti i dati che ha inserito, in modo da

verificarli ed eventualmente eliminare il progetto e ripetere tutte le operazioni.

I dati vengono rappresentati con l’ausilio di tre gridview. Il tasto “HOME” riporta l’utente alla

pagina di login, mentre “ELIMINA”, oltre a cancellare tutto ciò che riguarda il progetto, ridireziona

il tesista alla pagina “Nuovo Progetto”.

Page 37: Realizzazione di una base di dati per la gestione delle valutazioni di progetti di ricerca

37

Le gridview vengono popolate da delle select su due viste e su una tabella.

protected void Page_Load(object sender, EventArgs e) { String IDT = Request.QueryString["IDT"]; String IDP = Request.QueryString["IDP"]; Label1.Text = IDT; Label2.Text = IDP; SqlConnection connection1 = new SqlConnection(); connection1.ConnectionString = "Data Source=EMXOR;Initial Catalog=GestioneProgetti;Integrated Security=True;MultipleActiveResultSets=True;Application Name=EntityFramework" + "providerName=System.Data.SqlClient"; SqlCommand DatiPro = new SqlCommand("select * from ViewProgettoDati where IdProgetto=@IDP", connection1); DatiPro.Parameters.AddWithValue("IDP", Label2.Text); SqlCommand Parole = new SqlCommand("select Parola from ViewParola where Progetto=@IDP", connection1); Parole.Parameters.AddWithValue("IDP", Label2.Text); SqlCommand DocIns = new SqlCommand("select DOC from TblDocumento where Progetto=@IDP", connection1); DocIns.Parameters.AddWithValue("IDP", Label2.Text); connection1.Open(); //carica dati su GridView1 SqlDataReader rd = DatiPro.ExecuteReader(); GridView1.DataSource = rd; GridView1.DataBind(); rd.Dispose(); //carica dati su GridView2 SqlDataReader rp = Parole.ExecuteReader(); GridView2.DataSource = rp; GridView2.DataBind(); rp.Dispose(); //carica dati su GridView3 SqlDataReader rdoc = DocIns.ExecuteReader(); GridView3.DataSource = rdoc; GridView3.DataBind(); rdoc.Dispose(); connection1.Close(); }

Il tasto “HOME”

protected void Button1_Click(object sender, EventArgs e) { Response.Redirect("Login.aspx"); }

L’elemento “ELIMINA” deve cancellare i file memorizzati ed eliminare tutti i dati relativi al

progetto dalla base dati.

Si utilizza una select sulla TblDocumento per estrarre i nomi dei documenti relativi ad un progetto.

I documenti sono in folder diversi, uno in MAINDOC ed uno, più d’uno o nessuno in

SUPPLEMENTARYDOC.

Page 38: Realizzazione di una base di dati per la gestione delle valutazioni di progetti di ricerca

38

In ogni caso il primo documento estratto dalla select sarà un maindoc, i successivi saranno di

eventuali file aggiuntivi.

Sulla base dati agirà una semplice operazione di delete.

protected void Button2_Click(object sender, EventArgs e) { SqlConnection connection = new SqlConnection(); connection.ConnectionString = "Data Source=EMXOR;Initial Catalog=GestioneProgetti;Integrated Security=True;MultipleActiveResultSets=True;Application Name=EntityFramework" + "providerName=System.Data.SqlClient"; //elimina documento sul server SqlCommand DocIns = new SqlCommand("select DOC from TblDocumento where Progetto=@IDP", connection); DocIns.Parameters.AddWithValue("IDP", Label2.Text); connection.Open(); SqlDataReader rdoc = DocIns.ExecuteReader(); rdoc.Read(); string name = rdoc.GetString(0); string Fpath = Server.MapPath("MAINDOC") + "\\" + name; File.Delete(Fpath); while (rdoc.Read()) { name= rdoc.GetString(0); Fpath = Server.MapPath("SUPPLEMENTARYDOC") + "\\" + name; File.Delete(Fpath); } connection.Close(); //elimina progetto dal database SqlCommand DeletePr = new SqlCommand("DELETE FROM TblProgetto where IdProgetto=@IDP", connection); DeletePr.Parameters.AddWithValue("IDP", Label2.Text); connection.Open(); DeletePr.ExecuteNonQuery(); connection.Close(); Response.Redirect("NewProgetto.aspx?IDT="+Label1.Text); }

Page 39: Realizzazione di una base di dati per la gestione delle valutazioni di progetti di ricerca

39

4.2.8 Upload valutazioni

Il revisore, dopo aver effettuato il login, accede alla schermata di upload delle valutazioni.

Il codice identificativo del revisore è inserito automaticamente a seguito dell’operazione di login.

protected void Button2_Click(object sender, EventArgs e) { SqlConnection connection2 = new SqlConnection(); connection2.ConnectionString = "Data Source=EMXOR;Initial Catalog=GestioneProgetti;Integrated Security=True;MultipleActiveResultSets=True;Application Name=EntityFramework" + "providerName=System.Data.SqlClient"; SqlCommand CheckRVS = new SqlCommand("select Revisore from TblCredenzialiRVS where NomeUtente=@user AND Password=@Pass",connection2); CheckRVS.Parameters.AddWithValue("user", TextBox3.Text); CheckRVS.Parameters.AddWithValue("pass", TextBox4.Text); connection2.Open(); SqlDataReader RV= CheckRVS.ExecuteReader(); if(RV.HasRows) { RV.Read(); RV.Close(); Int32 IdRVS = (Int32) CheckRVS.ExecuteScalar(); Response.Redirect("UploadValutazione.aspx?IDR="+IdRVS); } else { Label2.Text="Username e/o Password errate"; } connection2.Close(); }

Page 40: Realizzazione di una base di dati per la gestione delle valutazioni di progetti di ricerca

40

Il revisore deve indicare l’id del progetto di cui inserirà la valutazione e selezionare il file,

dopodiché sarà sufficiente cliccare “UPLOAD”.

Il documento, caricato sul server, cambierà nome nella forma:

IdRevisore+”P”+IdProgetto+”VAL”+nome_file.

Page 41: Realizzazione di una base di dati per la gestione delle valutazioni di progetti di ricerca

41

Vi sarà una notifica dell’operazione avvenuta e sarà possibile effettuare un altro upload o tornare

alla home page.

A livello implementativo il funzionamento è il medesimo di quello che è stato attuato per i

documenti dei progetti, ad esclusione della parte riguardante la base dati. Infatti nella

TblValutazione vi è già l’associazione progetto-revisore, ma il suo stato è

”accettato non valutato” ed il campo “valutazione” è settato a NULL.

È stata definita un’operazione di update che porta al cambiamento di stato ed all’inserimento del

nome della valutazione.

private void Submit1_ServerClick(object sender, System.EventArgs e) { if ((File1.PostedFile != null) && (File1.PostedFile.ContentLength > 0)) { string fn = System.IO.Path.GetFileName(File1.PostedFile.FileName); //IdRevisore+P+IdProgetto+VAL+nomefile fn = Label1.Text +"P"+TextBox1V.Text+"VAL" + fn; string SaveLocation = Server.MapPath("VALUTAZIONI") + "\\" + fn; try { File1.PostedFile.SaveAs(SaveLocation); //aggiorna il DB UPDB(); Label2.Text = "Valutazione inserita"; } catch (Exception ex) { Label2.Text = "Error: " + ex.Message; }

Page 42: Realizzazione di una base di dati per la gestione delle valutazioni di progetti di ricerca

42

} else { Label2.Text = "Seleziona un file"; } } protected void UPDB () { SqlConnection connection1 = new SqlConnection(); connection1.ConnectionString = "Data Source=EMXOR;Initial Catalog=GestioneProgetti;Integrated Security=True;MultipleActiveResultSets=True;Application Name=EntityFramework" + "providerName=System.Data.SqlClient"; SqlCommand UploadVal = new SqlCommand("UPDATE TblValutazione SET stato=4, Valutazione=@name WHERE (progetto=@pr AND revisore=@rvs)",connection1); string fn = System.IO.Path.GetFileName(File1.PostedFile.FileName); //IdRevisore+P+IdProgetto+VAL+nomefile string Val = Label1.Text + "P" + TextBox1V.Text + "VAL" + fn; UploadVal.Parameters.AddWithValue("name",Val); UploadVal.Parameters.AddWithValue("pr", TextBox1V.Text); UploadVal.Parameters.AddWithValue("rvs", Label1.Text); try { connection1.Open(); UploadVal.ExecuteNonQuery(); connection1.Close(); } catch (Exception ex) { Label2.Text = "Error: " + ex.Message; } } protected void FINE(object sender, EventArgs e) { Response.Redirect("Login.aspx"); }

Page 43: Realizzazione di una base di dati per la gestione delle valutazioni di progetti di ricerca

43

CAPITOLO 5

Conclusioni

Gli obiettivi prefissati sono stati raggiunti con l’implementazione dei seguenti elementi:

Database del sistema

Tesista: Inserimento progetti

Revisore: Upload valutazioni

Inoltre è stata sviluppata un’analisi del sistema e delle funzionalità della base dati tali da facilitare

il futuro completamento e sviluppo del sistema stesso.

Sono state acquisite nuove conoscenze ed approfondite altre, riguardanti in particolare:

L’utilizzo di SQL SERVER 2008 e del linguaggio SQL

Sviluppo di applicazioni ASP.NET

Uso di strumenti quali Visual Studio 2012

C# e HTML

I possibili sviluppi del sistema sono:

miglioramento del front end;

estensione delle funzionalità del revisore;

permettere al tesista di visionare lo stato del proprio progetto;

creare applicazioni di supporto all’attività del revisore.

Allo stato attuale il sistema deve essere testato nell’ambiente in cui dovrà operare.

L’autore ha prodotto un database con 17 tabelle, 4 viste e 5 stored procedure e scritto

250 righe di html e 800 righe di codice C#.

Page 44: Realizzazione di una base di dati per la gestione delle valutazioni di progetti di ricerca

44

BIBLIOGRAFIA

http://msdn.microsoft.com/it-it/library/ee532866.aspx

http://msdn.microsoft.com/it-it/library/aa139615.aspx

Mike Hotek , SQL Server 2008 passo per passo, Mondadori

http://msdn.microsoft.com/it-it/library/ms130214(v=sql.100).aspx

http://msdn.microsoft.com/it-it/library/bb510741.aspx

http://msdn.microsoft.com/library/dd831853.aspx


Recommended