Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
AccessAdobe photoshopAlgoritmiAutocadBaze de dateC
C sharpCalculatoareCorel drawDot netExcelFox pro
FrontpageHardwareHtmlInternetJavaLinux
MatlabMs dosPascalPhpPower pointRetele calculatoare
SqlTutorialsWebdesignWindowsWordXml

GESTIUNEA INFORMATICA A UNUI EXAMEN DE ADMITERE

calculatoare



+ Font mai mare | - Font mai mic



Academia de Studii Economice

Facultatea de Cibernetica, Statistica si Informatica Economica

GESTIUNEA INFORMATICA A UNUI EXAMEN DE ADMITERE



ENUNTUL PROIECTULUI:

Se cere sa se scrie un program Pascal care sa primeasca o lista de candidati la un examen cu doua probe in cadrul unei institutii cu un numar de m-locuri disponibile si sa execute doua liste:

a)      candidati admisi

b)      candidati respinsi

unde,

un candidat reprezinta o structura informatica formata din urmatoarele campuri:

Nume: String;

Prenume: String;

Nota1: Integer; - reprezinta nota primita la proba 1;

Nota2: Integer; - reprezinta nota primita la proba 1;

Media: Real; - reprezinta media aritmetica a celor 2 note;

Se va nota cu n - numarul candidatilor inscrisi la examen.

INTRARI/IESIRI:

Programul lucreaza cu fisiere text formatate astfel:

1. persoane.txt - lista candidatilor inscrisi la examen

Nr. Inscriere.

Nume

Prenume

Nota1

Nota2

Nr. Inscriere.

Nume

Prenume

Nota1

Nota2

2. admisi.txt/respinsi.txt - lista candidatilor admisi/respinsi la examen

Nr. Inscriere.

Nume

Prenume

Media

Nr. Inscriere.

Nume

Prenume

Media

Se obeserva separatorul <crt> pentru campuri, precum si o linie intermediara pentru separarea infomatiilor referitoare la un candidat.

Programul citeste datele din fisierul persoane.txt si creeaza listele de candidati admisi.txt si respinsi.txt .

MODUL DE PROGRAMARE

Programul contine un meniu de lucru cu 5 optiuni:

Vizualizare Date - Vizualizarea informatiilor citite din fisierul cu intrari;

Introducere Date - Introducerea manuala ulterioara de candidati;

Stergere Date - Stergerea manuala dupa criteriu numelui, de candidati. Obs: Programul studiaza posibilitatea existentei mai multor candidati cu acelasi nume.

Vizualizare rezultate - Afisarea si salvarea in fisiere separate a Listelor de Candidati admisi - sortata descrescator dupa medie - si de Candidati respinsi - sortata crescator alfabetic. Obs. Este prevazuta si situatia in care ultimul candidat are un succesor in lista candidatilor cu aceeasi medie. In aceasta situatie se suplimenteaza numarul de locuri.

Exit - Iesirea din program

MODALITATI DE TESTARE:

Programul a fost testat pe o mare varietate de tipuri de intrari, astfel incat sa poata trata toate cazurile reale posibile: Mai multi/putini candidati decat locuri, mai multi/mai putini admisi/respinsi decat numarul de locuri, toti candidatii admisi/respinsi, etc.

EFICIENTA:

Programul nu foloseste tehnici speciale de programare/sortare-cautare, intrucat nu s-a lucrat cu volum mare de date si nici nu face parte din scopul proiectului, acesta avand ca obiectiv principal facilitarea modului de operare cu informatiile precum si listarea in fisiere a rezultatelor, prin folosirea de meniu si functii de lucru cu fisiere.

Pentru rapiditatea in executie si usurinta in urmarire, s-a pus accentul pe proiectarea folosind variabile temporare si exportand toate operatiunile in proceduri, astfel incat programul principal nu are decat un numar minim de variabile si instructiuni/apeluri.

Posibilitari de upgradare si eficientizare:

Programul poate fi upgradat la un numar variabil de examene, in general de informatii referitoare la un numar de candidati, mai multe optiuni de lucru asupra listelor precum si eficientizarea modului de programare folosind obiecte si alocare dinamica a memoriei, functie de volumul inregistrarilor.

De asemenea suporta imbunatatiri asupra modului grafic al meniului si al lucrului cu acesta, folosind diferite unit'uri Borland, precum crt ( clrscr, gotoxy, delay, readkey, etc. ) sau graph, pentru crearea de campuri de introducere de informatii, precum si alte unit'uri publice des folosite, precum cel de lucru cu mouse-ul, pentru usurinta in operare.

Anexat se gaseste discheta continand si:

Programul sursa: admitere.pas

Programul executabil: admitere.exe

Date Sursa: persoane.txt

Lista Admisi: admisi.txt

Lista Respinsi respinsi.txt

-Anexa 1-

Program Admitere;

type pers=RECORD

nume,pren:string;

nota1,nota2:integer;

media:real;

end;

vec = array[1..25] of pers;

var

n,m : integer;

v : vec;

ch: char;

procedure clrscr;

var i,j:integer;

begin

for i:=1 to 50 do

writeln;

end;

procedure citeste( var v:vec; var n:integer );

var f:text; i:integer;

begin

assign(f,'persoane.txt'); reset(f);

while not eof(f) do

begin

readln(f,i);

readln(f,v[i].nume); readln(f,v[i].pren);

readln(f,v[i].nota1); readln(f,v[i].nota2);

v[i].media:=( v[i].nota1 + v[i].nota2 )/2;

readln(f);

end;

n:=i;

close(f);

end;

procedure menu;

begin

clrscr;

writeln('Puteti opta pentru:');writeln;writeln;writeln;

writeln(' --------- 1 ---------- Vizualizare date -------------');writeln;

writeln(' --------- 2 ---------- Introducere date -------------');writeln;

writeln(' --------- 3 ---------- Stergere date -------------');writeln;

writeln(' --------- 4 ---------- Vizualizare rezultate -------------');writeln;

writeln;writeln;

writeln(' --------- X ---------- EXIT -------------');writeln;

writeln;writeln;

end;

procedure afisare( v:vec; n:integer );

var i:integer;

begin

clrscr; readln;

writeln('Lista candidatilor inscrisi:'); writeln;

for i:=1 to n do

writeln(i,'.',' ',v[i].nume,' ',v[i].pren,' ','Nota1 este ',v[i].nota1,' ','Nota2 este ',v[i].nota2);

writeln;writeln;writeln;write('Inapoi in meniu '); readln

end;

procedure inserare( var v:vec; var n:integer );

begin

clrscr; readln;

n:=n+1;

write('Numele candidatului: '); readln(v[n].nume);

write('Prenumele candidatului: '); readln(v[n].pren);

write('Nota 1 a candidatului: '); readln(v[n].nota1);

write('Nota 2 a candidatului: '); readln(v[n].nota2);

v[n].media := ( v[n].nota1 + v[n].nota2 ) / 2;

writeln;writeln;writeln;write('Inapoi in meniu '); readln;

end;

procedure stergere( var v:vec; var n:integer );

var name: string; i,j:integer; ch:char; sters:boolean;

begin

clrscr; readln;

sters:=false; ch:='t';

write('Numele candidatului: '); readln(name);

for i:=1 to n do

if v[i].nume=name then

begin

writeln(v[i].nume,' ',v[i].pren);

write('Confirmati stergerea (y/n) '); readln(ch);

if (ch='y') or (ch='Y') then

begin

sters:=true;

for j:=i to n do v[j]:=v[j+1];

n:=n-1;

end

else

end;

if (sters=false) and (ch='t') then

begin

writeln;writeln;

writeln('Candidatul nu a fost gasit')

end;

if (sters=false) and ( (ch='n') or (ch='N') ) then

begin

writeln;writeln;

writeln('Nici un candidat nu a fost sters');

end;

if sters then

begin

writeln;writeln;

writeln('Stergere efectuata');

end;

writeln;writeln;writeln;write('Inapoi in meniu '); readln;

end;

procedure rezultat( v:vec; n:integer );

var f1,f2:text; i,j,k:integer; p:pers;

begin

clrscr; readln;

assign(f1,'admisi.txt');rewrite(f1);

assign(f2,'respinsi.txt');rewrite(f2);

for i:=1 to n-1 do

for j:=i+1 to n do

if v[i].media < v[j].media then begin

p:=v[i]; v[i]:=v[j]; v[j]:=p end;

for k:=1 to m do if v[k].media <= 4 then break;

if v[m].media>=5 then for i:=m+1 to n do if v[i].media=v[m].media then m:=m+1;

if n>m then

if m<=k then

begin

writeln('Lista candidatilor admisi');

for i:=1 to m do

begin

writeln(i,'. ',v[i].nume,' ',v[i].pren,' ',v[i].media:2:2);

writeln(f1,i);writeln(f1,v[i].nume);writeln(f1,v[i].pren);writeln(f1,v[i].media:2:2);writeln(f1);

end;

writeln;writeln;writeln('Lista candidatilor respinsi');

for i:=m+1 to n-1 do

for j:=i+1 to n do

if v[i].nume > v[j].nume then begin

p:=v[i]; v[i]:=v[j]; v[j]:=p end;

for i:=m+1 to n do

begin

writeln(abs(i-m),'. ',v[i].nume,' ',v[i].pren,' ',v[i].media:2:2);

writeln(f2,i);writeln(f2,v[i].nume);writeln(f2,v[i].pren);writeln(f2,v[i].media:2:2);writeln(f2);

end

end

else

begin

writeln('Lista candidatilor admisi');

for i:=1 to k-1 do

begin

writeln(i,'. ',v[i].nume,' ',v[i].pren,' ',v[i].media:2:2);

writeln(f1,i);writeln(f1,v[i].nume);writeln(f1,v[i].pren);writeln(f1,v[i].media:2:2);writeln(f1);

end;

writeln;writeln;writeln('Lista candidatilor respinsi');

for i:=k to n-1 do

for j:=i+1 to n do

if v[i].nume > v[j].nume then begin

p:=v[i]; v[i]:=v[j]; v[j]:=p end;

for i:=k to n do

begin

writeln(i-k+1,'. ',v[i].nume,' ',v[i].pren,' ',v[i].media:2:2);

writeln(f2,i);writeln(f2,v[i].nume);writeln(f2,v[i].pren);writeln(f2,v[i].media:2:2);writeln(f2);

end

end

else

if k <=n then

begin

writeln('Lista candidatilor admisi');

for i:=1 to k-1 do

begin

writeln(i,'. ',v[i].nume,' ',v[i].pren,' ',v[i].media:2:2);

writeln(f1,i);writeln(f1,v[i].nume);writeln(f1,v[i].pren);writeln(f1,v[i].media:2:2);writeln(f1);

end;

writeln;writeln;writeln('Lista candidatilor respinsi');

for i:=k to n-1 do

for j:=i+1 to n do

if v[i].nume > v[j].nume then begin

p:=v[i]; v[i]:=v[j]; v[j]:=p end;

for i:=k to n do

begin

writeln(i-k+1,'. ',v[i].nume,' ',v[i].pren,' ',v[i].media:2:2);

writeln(f2,i);writeln(f2,v[i].nume);writeln(f2,v[i].pren);writeln(f2,v[i].media:2:2);writeln(f2);

end

end

else

begin

writeln('Toti candidatii sunt admisi');

for i:=1 to n do

begin

writeln(i,'. ',v[i].nume,' ',v[i].pren,' ',v[i].media:2:2);

writeln(f1,i);writeln(f1,v[i].nume);writeln(f1,v[i].pren);writeln(f1,v[i].media:2:2);writeln(f1);

end

end;

close(f1); close(f2); writeln;writeln;

writeln('Au fost generate fisierele');writeln('admisi.txt');write('respinsi.txt');

writeln;writeln;writeln;write('Inapoi in meniu '); readln;

end;

BEGIN

clrscr;

write('Numar de locuri disponibile ');readln(m);

citeste(v,n);

write('Numarul de candidati incarcat este ',n);

repeat

menu;

read(ch);

case ch of

'1': afisare (v,n);

'2': inserare(v,n);

'3': stergere(v,n);

'4': rezultat(v,n);

'x','X': halt;

else if (ch<>#120) and (ch<>#13) and (ch<>#10) then

begin

writeln('Tasta gresita. Tastati <enter> pentru a continua.');

readln

end

end

until false

END.



Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 1558
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved