p align="left">x:=x+pop^.inf.neopravdan; //нахождение промежуточной величины pop^.inf.summa:=x; pop:=pop^.nr; end; gotoxy(25,25); writeln('Processing data is over push the -enter-'); //завершилась обработка readln; end; {------------------------------------------------------------------------} {------------------prosmotr----------------------------------------------} {------------------------------------------------------------------------} //смотреть prosmotr_2 - всё аналогично ,только добавляются нолвые поля. procedure prosmotr(x:ukaz); var n:integer; c:char; begin clrscr; n:=0; newE:=x; writeln('|------|---------------|----------|---------|'); writeln('|#grupp| Name | amount of| validly |'); writeln('| | | absence | |'); writeln('|------|---------------|----------|---------|'); while (newE<>right^.nr) and (n<=6) do begin inc(n); write('|', newE^.inf.nomergrupp:5,' '); write('|',newE^.inf.fio:15); write('|',newE^.inf.propusk:5,' '); writeln('|', newE^.inf.opravdan:5,' |'); write('| | | | |'); writeln; newE:=newE^.nr; end; if otpech=0 then otpech:=otpech+n; writeln('|------|---------------|----------|---------|'); writeln('Push the -enter- to the Exit'); end; procedure klavishi(nom:integer); var c:char; left:ukaz; begin otpech:=0; //обнуляем left:=verh; //указатель на начало case nom of//выбор 1:prosmotr(left); 2:prosmotr_2(left); 3:begin clrscr;gotoxy(20,25);textcolor(white);Writeln('Input the name of a student which cold been finded'); textcolor(white);gotoxy(25,27);readln(z.fio);for i:=1 to (15-length(z.fio)) do z.fio:=z.fio+' ';left:=verh;poisk(left,z.fio); end; //установки перед процедурой поиска end; while true do//бесконечный цикл begin c:=readkey; //чтение клавиши if ord(c)=13 then//если ентер-выход case nom of 1:exit; 2:exit; 3:exit; end else// иначе if c=#0 then begin c:=readkey; if c=#80 then//если вниз begin if left=right then case nom of//если конец списка 1:prosmotr(left); //выбор 2:prosmotr_2(left); 3:poisk(left,z.fio); end else begin if (kolvo-otpech=0) then//если всё отпечатали case nom of 1:prosmotr(left); //выбор 2:prosmotr_2(left); 3:poisk(left,z.fio); end else begin otpech:=otpech+1; //увеличение числа отпечатанных на 1 left:=left^.nr; //перевод указателя case nom of//выбор 1:prosmotr(left); 2:prosmotr_2(left); 3:poisk(left,z.fio); end end; end; end; if c=#72 then//если вверх begin if left^.nl=nil//если список из 1-го эл-та then case nom of//выбор 1:prosmotr(left); 2:prosmotr_2(left); 3:poisk(left,z.fio); end else//иначе begin otpech:=otpech-1; //уменьшение числа отпечатанных на1 left:=left^.nl; //перевод указателя case nom of//выбор 1:prosmotr(left); 2:prosmotr_2(left); 3:poisk(left,z.fio); end end; end else//иначе не вверз не вниз не ентер case nom of//выбор 1:prosmotr(left); 2:prosmotr_2(left); 3:poisk(left,z.fio); end end end; end; {-------------------------------------------------------------------------} {---------------------------ZAPIS V FAIL----------------------------------} {--------------------------------------------------------------------------} procedure zapis_v_fail; var t:text; pop:ukaz; d:string; begin gotoxy(25,25); writeln('Input the name of output file'); //ввод имени файла gotoxy(25,26); readln(d); assign(t,'d'); //установка связи сним rewrite(t); //открытие в режиме записи newE:=verh; //указатель на начало //запись в файл шапки writeln(t,'|-------|---------------|----------|---------|----------|--------|-------|'); writeln(t,'|#grupp | Name | amount of| validly | unvalidly| summa |percent|'); writeln(t,'| | | | absence | | | |'); writeln(t,'|-------|---------------|----------|---------|----------|--------|-------|'); while (newE<>nil) do//пока не конец сиска begin//запись таблицы write(t,'|', newE^.inf.nomergrupp:5,' '); write(t,'|',newE^.inf.fio:15); write(t,'|',newE^.inf.propusk:5,' '); write(t,'|', newE^.inf.opravdan:5,' |'); write(t,newE^.inf.neopravdan:7,' |'); write(t,newE^.inf.summa:6,' |'); writeln(t,newE^.inf.procent:5:2,' |'); writeln; newE:=newE^.nr; //перевод указателя end; //запись в файл последней строки write(t,'|-------|---------------|----------|---------|----------|--------|-------|'); clrscr; gotoxy(25,25); writeln('File has been written '); //всё записали readln; close(t); //закрытие файла end; {--------------------------------------MENYU--------------------------------} procedure okno(t:integer);{t-nomer stroki} var p:integer; begin clrscr; textcolor(white); //смена цвета textbackground(blue); writeln('МНННННННННННННННННННННННННННННННННННННН№'); gotoxy(25,25); if t=1 then//печать пунктов меню и если t равно номеру их строки то выделение чёрным цветом(для каждого) textbackground(black); writeln('є 1.Input the filename. є'); textbackground(blue); gotoxy(25,26); if t=2 then textbackground(black); writeln('є 2.Processing data. є'); textbackground(blue); gotoxy(25,27); if t=3 then textbackground(black); writeln('є 3.Delete the student. є'); textbackground(blue); gotoxy(25,28); if t=4 then textbackground(black); writeln('є 4.Add student. є'); textbackground(blue); gotoxy(25,29); if t=5 then textbackground(black); writeln('є 5.Watch є'); textbackground(blue); gotoxy(25,30); if t=6 then textbackground(black); writeln('є 6.Search the student. є'); textbackground(blue); gotoxy(25,31); if t=7 then textbackground(black); writeln('є 7.Write output file. є'); textbackground(blue); gotoxy(25,32); if t=8 then textbackground(black); writeln('є 8.ExiT. є'); textbackground(blue); gotoxy(25,33); writeln('ИННННННННННННННННННННННННННННННННННННННј'); textbackground(blue); end; {------------------------------------------------------} {-------------------------------------------------------------------------} {----------------------------------------------------------------------------------} {------------------------------OSNOVNAYA-------------------------------------------} {----------------------------------------------------------------------------------} begin x:=1; //номер строки textbackground(blue); okno(x); while true do//бесконечный цикл begin c:=readkey; //чтение клавиши if ord(c)=13 then//ентер case x of//выбор процедур по их номеру пунктов 1:begin clrscr;org;if sozdan=true then klavishi(1);end; 2:begin clrscr;obrabotka;end; 3:begin clrscr;udal;end; 4:begin clrscr;dob;end; 5:begin clrscr;obrabotka;klavishi(2);end; 6:begin clrscr;klavishi(3);end; 7:begin clrscr;zapis_v_fail;end; 8:begin clrscr;halt;end; end; if c=#0 then begin c:=readkey; if c=#80 then//если вниз begin x:=x+1; //увеличение номера строки на 1 if x>8 then//если он больше 8 begin x:=1; //то он будет =1 okno(x); //печать меню end else okno(x); //печать меню end else if c=#72 then//если вверх begin x:=x-1; //уменьшение номера строки на 1 if x<1 then//меньше1 begin x:=8; //присвоить значение 8 okno(x); //печать меню end else okno(x); //печать меню end else okno(x); //печать меню end else okno(x); //печать меню end; end.
Страницы: 1, 2, 3, 4, 5
|