Clique no botão BACK do seu navegador para voltar à página anterior { Este é o programa principal que deve possuir a extensão .pas e deverá que deve ser compilado para que possa chamar a unit criada logo abaixo deste} { Autor: Alexandro Augusto Parra Anselmo} Program Principal; Uses crt, Cad_Unit; {---------------------- Programa Principal--------------------------- } Procedure Menu; Var op: integer; { Variavel de opcao} nome:string[30]; { Variavel para entrada de nome} Begin {---- MENU e Interface----------------------} clrscr; textbackground(white); textcolor(black); gotoxy(28,2); write('Alexandro Augusto Parra Anselmo'); gotoxy(1,4); write('ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß'); {lado esquerdo da box} gotoxy(29,8); write('Ú'); gotoxy(29,9); write('³'); gotoxy(29,10); write('³'); gotoxy(29,11); write('³'); gotoxy(29,12); write('³'); gotoxy(29,13); write('³'); gotoxy(29,14); write('³'); gotoxy(29,15); write('³'); gotoxy(29,16); write('³'); gotoxy(29,17); write('³'); gotoxy(29,18); {parte de baixo da box} write('À'); gotoxy(30,18); write('ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ'); gotoxy(48,18); write('Ù'); {lado direito da box} gotoxy(48,17); write('³'); gotoxy(48,16); write('³'); gotoxy(48,15); write('³'); gotoxy(48,14); write('³'); gotoxy(48,13); write('³'); gotoxy(48,12); write('³'); gotoxy(48,11); write('³'); gotoxy(48,10); write('³'); gotoxy(48,9); write('³'); gotoxy(48,8); write('¿'); gotoxy(30,8); write('ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ'); {sombra do lado direito da box} gotoxy(49,9); write('Ä'); gotoxy(50,9); write('¿'); gotoxy(50,10); write('³'); gotoxy(50,11); write('³'); gotoxy(50,12); write('³'); gotoxy(50,13); write('³'); gotoxy(50,14); write('³'); gotoxy(50,15); write('³'); gotoxy(50,16); write('³'); gotoxy(50,17); write('³'); gotoxy(50,18); write('³'); gotoxy(50,19); {sombra do lado de baixo da box} write('Ù'); gotoxy(31,19); write('ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ'); gotoxy(30,19); write('À'); gotoxy(30,18); write('Ú'); gotoxy(35,9); write('1 - Inserir'); gotoxy(35,11); write('2 - Remover'); gotoxy(35,13); write('3 - Listar'); gotoxy(35,15); write('4 - Sair'); gotoxy(35,17); write('Opcao: '); readln(op); case op of 1: begin clrscr; gotoxy(15,5); write('Entre com o nome do Aluno: '); readln(nome); inserir(nome); menu; end; 2: begin clrscr; gotoxy(15,5); write('Entre com o nome do Aluno a Remover: '); readln(nome); remover(nome); menu; end; 3: begin listar; menu; end; 4: begin removeInfo; clrscr; end; end; End; BEGIN inicio:= nil; menu; END. ---------------------------------------------------------------------------------------------- { Este arquivo é separado do anterir portanto para rodar deve-se criar um arquivo com extensão .tpu para que o código abaixo possa se relacionar com o arquivo acima. Este arquivo .tpu deve estar no mesmo diretório com os outros arquivos .tpu que contém o compilador pascal} Unit Cad_Unit; INTERFACE Uses crt; Type {Criacao de tipos} PNO = ^NO; NO = record Nome: string[30]; Endereco: string [30]; CEP: string[10]; Data_Aniv: string[10]; Curso: string[20]; Nota1, Nota2, Nota3, Nota4: real; Ano_Curso: string[4]; next: PNO; end; Var inicio: PNO; {Ponteiro que marca o inicio da lista} aux, aux1: PNO; {Ponteiros auxiliares da lista} achei: boolean; {Usada no procedimento remover, indica se o elemento a ser removido consta da lista} procedure Inserir(vnome: string); procedure RemoveInfo; procedure Remover(nome_a_remover: string); procedure Listar; IMPLEMENTATION {------Procedimento para insercao de um elemento na lista com ordenacao----} Procedure Inserir(vnome: string); Var Info: PNO; {Variavel p/ armazenar os dados do aluno} Endereco: string[30]; CEP: string[10]; Data_Aniv: string[10]; Curso: string[20]; Nota1, Nota2, Nota3, Nota4: real; Ano_Curso: string[4]; Begin new(info); info^.nome:= vnome; gotoxy(15,6); write('Entre com o Endere‡o: '); readln(endereco); info^.endereco:= endereco; gotoxy(15,7); write('Entre com o CEP: '); readln(cep); info^.cep:= cep; gotoxy(15,8); write('Entre com a Data Anivers rio: '); readln(data_aniv); info^.data_aniv:= data_aniv; gotoxy(15,9); write('Entre com o Curso: '); readln(Curso); info^.curso:= curso; gotoxy(15,10); write('Entre com o Ano Curso : '); readln(Ano_Curso); info^.Ano_Curso:= ano_curso; gotoxy(15,11); write('Entre com a Nota1: '); readln(nota1); info^.nota1:= nota1; gotoxy(15,12); write('Entre com a Nota2: '); readln(nota2); info^.nota2:= nota2; gotoxy(15,13); write('Entre com a Nota3: '); readln(nota3); info^.nota3:= nota3; gotoxy(15,14); write('Entre com a Nota4: '); readln(nota4); info^.nota4:= nota4; {--------se lista esta vazia insere elemento no inicio---------} if (inicio = nil) then begin inicio:= info; info^.next:= nil; end else begin aux:= inicio; aux1:= inicio; {----verificacao se e o primeiro elemento---} if aux^.nome >= info^.nome then begin info^.next:= aux; inicio:= info; end else {procura a posicao correta para insecao entre os elementos existentes} begin while ((aux^.next <> nil) and (aux^.nome <= info^.nome)) do {--posiciona auxiliares ate encontrar o local correto a ser inserido--} begin aux1:= aux; aux:= aux^.next; end; {fim do while} {---------insere ordenando--------------} if ((aux^.nome <= info^.nome) and (aux^.next = nil)) then begin aux^.next:= info; info^.next:= nil; end else begin info^.next:= aux; aux1^.next:= info; end; {fim do else} end; end; End; {----------------Remove toda a lista ao sair--------------------------} Procedure RemoveInfo; Begin clrscr; while (inicio <> nil) do begin aux:= inicio; inicio:= aux^.next; dispose(aux); end; End; {---Procedimento para remover um elemento na lista se este existir ou estiver vazia-- } Procedure Remover(nome_a_remover: string); Var ant, frente: PNO; { Ponteiros que auxiliam na remocao } Begin clrscr; if (inicio <> nil) then begin achei:= false; ant:= inicio; if (ant^.nome = nome_a_remover) then begin inicio:= ant^.next; dispose(ant); end else begin frente:= ant^.next; while ((not achei) and (frente <> nil)) do begin if (frente^.nome = nome_a_remover) then begin ant^.next:= frente^.next; dispose(frente); achei:= true; end; ant := ant^.next; frente := frente^.next; end; if (not achei) then begin clrscr; gotoxy(15,15); write('O nome nao consta na lista' ); readln; end; end; end else begin clrscr; gotoxy(27,15); write('A lista esta vazia' ); readln; end; End; {----------------Procedimento listar a lista se existirem---------------} Procedure Listar; Var cont:integer; Begin if (inicio = nil) then begin clrscr; gotoxy(30,16); write('A lista esta vazia' ); readln; end else begin clrscr; aux:= inicio; cont:=0; while (aux <> nil) do begin gotoxy(1,4); write('ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ'); cont:=cont+1; gotoxy(30,2); write('Registro:',cont); gotoxy(30,5); write('Nome: ',aux^.nome); gotoxy(30,6); write('Endere‡o: ',aux^.endereco); gotoxy(30,7); write('CEP: ',aux^.cep); gotoxy(30,8); write('Data de Anivers rio: ',aux^.data_aniv); gotoxy(30,9); write('Curso: ',aux^.curso); gotoxy(30,10); write('Ano Curso: ',aux^.ano_curso); gotoxy(30,11); write('Nota1: ',aux^.nota1:4:2); gotoxy(30,12); write('Nota2: ',aux^.nota2:4:2); gotoxy(30,13); write('Nota3: ',aux^.nota3:4:2); gotoxy(30,14); write('Nota4: ',aux^.nota4:4:2); aux:= aux^.next; gotoxy(15,22); write('Pressione Enter para continuar...'); readln; clrscr; end; end; End; End.