c#-exemple de aplicatii

5
SUBIECTE SD 2013 La examen veți primi două subiecte din lista de mai jos. Combinația de două subiecte va fi generată în mod aleatoriu. Timpul de rezolvare pentru ambele subiecte va fi de 2 ore. Modul de interpretare a subiectelor este următorul: o cerința (1., 2., ...) poate avea mai multe subpuncte notate cu litere (a., b., ...); în acest caz, un subiect este de exemplu: 1.a. de asemenea, oriunde este caracterul /, la generarea subiectelor se va alege doar una din opțiunile respective. un exemplu de subiect generat este 7.b cu BinaryFormatter și TcpChannel. Lista de subiecte [L2 - Delegați, evenimente, generice, fire de execuție] 1. Realizați o aplicație care să permită citirea a n fișiere text și scrierea într-un alt fișier. Citirea și scrierea se vor face linie cu line. Fișierele vor fi citite în paralel. a. De fiecare dată când a fost citită o linie de text, este aruncat un eveniment care este prins de entitatea care face scrierea. b. Pentru citire se vor folosi fire de execuție create cu ajutorul clasei Thread. c. Citirea trebuie să se facă asincron prin utilizarea unui delegat asincron. [L3 - Sincronizare] 2. Realizați o aplicație care să creeze n fire de execuție producător (valoare lui n este citită de la tastatură). Fiecare fir de execuție producător va genera la fiecare 300 milisecunde un șir de caractere format din concatenarea id-ului firului respectiv și un număr aleatoriu între 0 și 1000. Șirurile vor fi introduse într-o coadă generică comună (System.Collections.Generic.Queue). Un fir de execuție consumator va extrage șirurile din coadă și le va scrie într-un fișier text. Pentru a crea firele de execuție se va folosi clasa Thread / ThreadPool (QueueUserWorkItem) / BackgroundWorker, iar pentru sincronizare se va folosi clasa Monitor / Mutex. [L4 - Socket-uri]

Upload: ana-maria

Post on 29-Dec-2014

286 views

Category:

Documents


4 download

DESCRIPTION

C#

TRANSCRIPT

SUBIECTE SD 2013

La examen veți primi două subiecte din lista de mai jos. Combinația de două subiecte va fi generată în mod aleatoriu. Timpul de rezolvare pentru ambele subiecte va fi de 2 ore.

Modul de interpretare a subiectelor este următorul:

o cerința (1., 2., ...) poate avea mai multe subpuncte notate cu litere (a., b., ...); în acest caz, un subiect este de exemplu: 1.a.

de asemenea, oriunde este caracterul /, la generarea subiectelor se va alege doar una din opțiunile respective.

un exemplu de subiect generat este 7.b cu BinaryFormatter și TcpChannel.

Lista de subiecte

[L2 - Delegați, evenimente, generice, fire de execuție]

1. Realizați o aplicație care să permită citirea a n fișiere text și scrierea într-un alt fișier. Citirea și scrierea se vor face linie cu line. Fișierele vor fi citite în paralel. a. De fiecare dată când a fost citită o linie de text, este aruncat un eveniment care

este prins de entitatea care face scrierea. b. Pentru citire se vor folosi fire de execuție create cu ajutorul clasei Thread. c. Citirea trebuie să se facă asincron prin utilizarea unui delegat asincron.

[L3 - Sincronizare]

2. Realizați o aplicație care să creeze n fire de execuție producător (valoare lui n este citită de la tastatură). Fiecare fir de execuție producător va genera la fiecare 300 milisecunde un șir de caractere format din concatenarea id-ului firului respectiv și un număr aleatoriu între 0 și 1000. Șirurile vor fi introduse într-o coadă generică comună (System.Collections.Generic.Queue). Un fir de execuție consumator va extrage șirurile din coadă și le va scrie într-un fișier text. Pentru a crea firele de execuție se va folosi clasa Thread / ThreadPool (QueueUserWorkItem) / BackgroundWorker, iar pentru sincronizare se va folosi clasa Monitor / Mutex.

[L4 - Socket-uri]

3. Realizați o aplicație client-server care să suporte mai mulți clienți. a. Serverul trebuie să fie de tip multicast-echo: orice mesaj trimis de client ajunge la

toți clienții (inclusiv la cel care a trimis mesajul). Pentru implementare se vor folosi socket-uri Tcp și metodele blocante Send() și Receive().

b. Serverul trebuie să fie de tip echo: orice mesaj trimis de client ajunge înapoi la client. Pentru implementare se vor folosi socket-uri Tcp, metoda blocantă Send() și metoda BeginReceive() pentru recepționarea asincronă a datelor atât la server cât și la client.

c. Serverul trebuie să fie de tip echo: orice mesaj trimis de client ajunge înapoi la client. Pentru implementare se vor folosi socket-uri Tcp, metoda blocantă Send() și metoda BeginReceive() pentru recepționarea asincronă a datelor atât la server cât și la client. Acceptarea conexiunii cu un client trebuie realizată asincron prin metoda BeginAccept() din clasa Socket.

[L6 - XML, L2 - generice]

4. Realizați o aplicație care să permită serializarea și deserializarea în format XML a unei liste de perechi de valori, precum și arhivarea și dezarhivarea listei respective. O pereche de valori este reprezentată de clasa Pair<T,U> care folosește generice. Fișierul XML va conține și tipul părții reale și a părții imaginare a valorilor stocate. Tipul celor două valori din Pair poate fi o clasă oarecare, nu neapărat unul dintre tipurile de bază (string, int, …). Pentru determinarea tipului de dată în urma deserializării, se va folosi Reflection.

[L6 - XML]

5. Realizați o aplicație folosind Windows Forms care să gestioneze o listă de cărți. Pentru o carte se vor reține următoarele informații: titlu, autor, isbn, an apariție și editură. Aplicația trebuie să permită adăugarea de cărți noi, ștergerea cărților, precum și editarea lor. Cărțile sunt reținute într-un fișier XML care va putea fi salvat și încărcat din interfață. Problema trebuie rezolvată fără a folosi colecții sau o clasă care să reprezinte o carte; se va opera direct cu XML-ul. Scrierea documentului XML se va face folosind clasa XmlDocument/ XmlWrite, iar citirea se va face folosind clasa XmlDocument/ XPathNavigator/ XmlReader.

[L7 - MSMQ]

6. Realizați două aplicații care să utilizeze serviciul de mesaje din Windows (MSMQ). Prima aplicație va scrie în MSMQ obiecte de tipul Student (care va conține câmpurile: nume, prenume și grupa) la fiecare 3 secunde, iar a doua va citi datele în mod

asincron și le va afișa la consolă. Se vor folosi formatorul BinaryMessageFormatter/ XmlMessageFormatter și canalul de comunicație TcpChannel/ HttpChannel.

[L8 - Remoting, L9 - ASP .NET]

7. a. Realizați un serviciu Web (care să ruleze pe portul 12345) și o aplicație client care

să permită realizarea operațiilor cu numere complexe. b. Realizați un server care expune un obiect wellknown (SAO) în modul Singleton/

SingleCall și un client care utilizeze obiectul respectiv pentru a permite realizarea operațiilor cu numere complexe. Implementarea va folosi formatorul binar (BinaryFormatter)/ SOAP (SoapFormatter) și canalul TCP (TcpChannel)/ HTTP (HttpChannel).

c. Realizați un server care expune un obiect activat de client (CAO) și un client care utilizeze obiectul respectiv pentru a permite realizarea operațiilor cu numere complexe. Implementarea va folosi formatorul binar (BinaryFormatter)/ SOAP (SoapFormatter) și canalul TCP (TcpChannel)/ HTTP (HttpChannel).

Pentru aceasta se va folosi o clasă Complex în care vor fi reținute partea reală și cea imaginară a unui număr complex în format double. De asemenea, vor exista metode de adunare, înmulțire și calcularea modului, care vor fi expuse ca servicii. Fiecare calcul efectuat va fi reținut sub forma unui șir de caractere într-o listă generică (care conține elemente de tip string), iar la apelarea unui serviciu (listaOperatii) se va returna lista respectivă. Exemplu de intrare în listă: „(5+7*i)-(8-4*i)”.

[L8 - Remoting, L9 - ASP .NET]

8. a. Realizați un serviciu Web (care să ruleze pe portul 12345) și o aplicație client care

să permită notarea studenților la diverse materii. Serviciile care vor fi disponibile sunt:

b. Realizați un server care expune un obiect wellknown (SAO) în modul Singleton/ SingleCall și un client care utilizeze obiectul respectiv. Implementarea va folosi formatorul binar (BinaryFormatter)/ SOAP (SoapFormatter) și canalul TCP (TcpChannel)/ HTTP (HttpChannel). Metodele din obiectul remote sunt:

c. Realizați un server care expune un obiect activat de client (CAO) și un client care utilizeze obiectul respectiv. Implementarea va folosi formatorul binar (BinaryFormatter)/ SOAP (SoapFormatter) și canalul TCP (TcpChannel)/ HTTP (HttpChannel). Metodele din obiectul remote sunt: adaugaMaterie(nume) => idMaterie (generat de server),

adaugaStudent(nume, grupa) => idStudent (generat de server), adaugaNota(nota, idStudent, idMaterie), returneazaNote(idMaterie) => o listă de perechi numeStudent-nota (se poate

folosi o structura de tip Dictionary), returneazaStudenti(grupa) => o lista cu numele studenților din grupa

respectivă.

[L9 - ASP.NET, L2 - Generice]

9. a. Realizați o aplicate Web care să permită vizualizarea, adăugarea și editarea

cărților dintr-o bibliotecă. b. Realizați un serviciu Web (care să ruleze pe portul 12345) și o aplicație client care

să permită vizualizarea, adăugarea și editarea cărților dintr-o bibliotecă. c. Realizați un server care expune un obiect wellknown (SAO) în modul Singleton/

SingleCall și un client care utilizeze obiectul respectiv pentru a permite vizualizarea, adăugarea și editarea cărților dintr-o bibliotecă. Implementarea va folosi formatorul binar (BinaryFormatter)/ SOAP (SoapFormatter) și canalul TCP (TcpChannel)/ HTTP (HttpChannel).

d. Realizați un server care expune un obiect activat de client (CAO) și un client care utilizeze obiectul respectiv pentru a permite vizualizarea, adăugarea și editarea cărților dintr-o bibliotecă. Implementarea va folosi formatorul binar (BinaryFormatter)/ SOAP (SoapFormatter) și canalul TCP (TcpChannel)/ HTTP (HttpChannel).

Cărțile vor fi reținute la server într-o listă generică care va conține obiecte de tip Carte (id, titlu, autor, anAparitie).

[L11 - Interoperabilitate COM]

10. Realizați o aplicație care să utilizeze funcția Win32 API Beep (definită în kernel32.lib) pentru a reda sunete. Frecvențele și duratele sunetelor sunt citite din trei fișiere text. Utilizați fire de execuție pentru a reda sunetele pe măsură ce sunt citite în paralel din cele trei fișiere text.

[L12 - Internaționalizare]

11. Realizați o aplicație Windows Forms care să suporte două limbi de redare a interfeței grafice (română și engleză). Aplicația trebuie afișeze un formular de introducere a informațiilor despre o persoana (nume, prenume, varsta, cnp), și, de asemenea, trebuie să existe posibilitatea de a schimba limba de redare a aplicației. Pentru

aceasta se vor folosi fișiere de resurse în format text/ resx care vor fi compilate în assembly-uri satelit. Clasele necesare se găsesc în namespace-ul System.Globalization (CultureInfo, ResourceManager).