C#: simulare integrată de cinci ore și autoevaluare
Construiește o aplicație C# integrată într-o simulare originală de cinci ore. Combină bază de date, interfață, raport și teste pentru a evalua pregătirea practică.
În acest material
Ultima lecție este o probă de integrare, nu o promisiune de calificare. Realizează aplicația „Biblioteca atelierului” în cinci ore, folosind datele fictive și tehnologiile exersate. Obiectivul este să poți porni de la cerințe, să construiești un flux complet și să demonstrezi rezultatele pe un calculator pregătit.
Cum lucrezi cu exemplul
Programul complet folosește C# 7.3 și API-uri disponibile în .NET Framework 4.8. Deschide Lesson.csproj din arhivă sau creează un proiect Console App (.NET Framework 4.8) și înlocuiește Program.cs. Datele de demonstrație sunt incluse în cod.
Descarcă sursele și instrucțiunile.
Ideea și pașii de implementare
Pregătește Books cu ID-urile 1, 2 și 3 și titlurile Algoritmi, Grafuri și Povesti. Readers conține Ana cu ID 10 și Mihai cu ID 20. Loans păstrează ID, BookId, ReaderId, data și starea returnării. Permite un singur împrumut activ pe exemplar. Cerințele sunt catalog filtrabil, alegerea cititorului după ID, împrumut validat, returnare unică, tranzacție pentru operațiile legate, persistare, raport cu valorile zero, export, mesaje de eroare și pachet reproductibil.
Baremul propriu are zece componente de câte zece puncte, corespunzătoare cerințelor. Pentru primele două ore construiește modelul, schema și fluxul de împrumut. Rezervă următoarele 90 de minute raportului și exportului, apoi 60 de minute testelor și 30 de minute predării. Prioritizează integritatea datelor înaintea decorării.
Exemplu și rezultat așteptat
Ana împrumută cartea 1, iar Mihai cartea 2. O a doua încercare pentru cartea 1 este refuzată. Raportul împrumuturilor active pe cărți este [1,1,0]. După returnarea cărții 1 devine [0,1,0]. Închiderea și redeschiderea păstrează această stare. Ștergerea unui cititor referit trebuie tratată printr-o politică explicită.
Activ: cartea 1 și cartea 2 → Raport: 1, 1, 0 → Returnează cartea 1 → Recitire: 0, 1, 0.Mărește schema ↗
Codul complet
using System;
using System.Collections.Generic;
using System.Linq;
using System.IO;
using System.Globalization;
using System.Xml.Linq;
using System.Data;
class Program {
static void Main() {
int[] books={1,2,3};var active=new HashSet<int>{1,2};
Console.WriteLine(string.Join(",",books.Select(id=>active.Contains(id) ? 1 : 0)));
active.Remove(1);
Console.WriteLine(string.Join(",",books.Select(id=>active.Contains(id) ? 1 : 0)));
if(active.Count!=1 || !active.Contains(2))throw new Exception("Stare incorecta");
}
}
Rezultatul programului:
1,1,0
0,1,0
Greșeli și limite
Nu număra toate împrumuturile istorice când cerința cere numai active. Nu confunda un raport corect în memorie cu recitirea bazei. Nu elimina cartea fără împrumut din raport. Nu schimba providerul în ultima jumătate de oră fără o probă de integrare. Regulamentul și configurația ediției la care participi trebuie reverificate separat.
Exersează
Evaluează fiecare cerință prin acțiune și readback. Pentru tranzacție, provoacă eșecul celui de-al doilea pas pe o copie de test și verifică lipsa modificării parțiale. Pentru export, compară ID-urile și totalurile. Scrie la final trei lucruri pe care le poți implementa fără ajutor și trei teme la care trebuie să revii în parcurs.
Continuă parcursul
Parcursul complet de 50 de lecții
Lecția precedentă: C#: simulare ONTI de patru ore cu barem propriu.
Referință: documentația Microsoft. Pentru ediția de concurs, verifică regulamentul ONTI publicat pentru 2026.
Întrebări frecvente
Ce dovedește finalizarea simulării?
Capacitatea de a integra funcțiile verificate în condițiile exercițiului, nu o calificare garantată la concurs.
Cum verific persistarea?
Închid aplicația, o redeschid și recitesc starea din baza de date, comparând-o cu rezultatul așteptat.
Cum aleg următoarea temă de studiu?
Din cerințele eșuate și cauzele lor: model, interfață, SQL, integrare sau organizarea timpului.
Un pas mai departe
Autentifică-te pentru a păstra progresul în cont.