Файл: Курсовой проект " Программирование на языке Turbo Pascal и в судб visual FoxPro ".doc

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 08.11.2023

Просмотров: 28

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

procedure analiz_menu(ab:string);

begin

repeat

put1:=readkey;

case ord(put1) Of

0: begin

put2:=readkey;

case ord(put2) Of

80:inc(y);

72:dec(y);

end

end;

end;

if ab= 'main' then begin

if y=0 then y:=6;

if y=7 then y:=1;

creat_main_menu;

end else begin

if y=0 then y:=5;

if y=6 then y:=1;

creat_table_menu(ab);

end;

until ord(put1) in [13,27];

end;
Файл main.pas

program Dronov_Kursovik;

uses Crt;

type

aaa1=record

nomer,post1,fio:string

end;

aaa2=record

post2:string;

income:word;

end;
var

file_table1:file of aaa1;

file_table2:file of aaa2;

dano1:aaa1;

dano2:aaa2;

ar1: array[1..100] of integer;

ar2: array[1..100] of string;

x,y,j,i,ii,count1,count2,punkt:integer;

summ,summ1:real;

put1,put2:char;

name_file2,name_file1:string;
const main_menu: array[1..6] of string=(

' Работа с I таблицей. ',

' Работа со II таблицей. ',

' Просмотр Запроса. ',

' Просмотр Отчета. ',

' Перекрестная таблица. ',

' Выход из Программы. ');

table_menu: array[1..5] of string=(

' Просмотр Таблицы. ',

' Добавление Записи. ',

' Редактирование Записи. ',

' Удаление Записи. ',

' Возврат в Главное меню.');
{$I a:dekor.pas}

{$I a:menu.pas}

{$I a:inform.pas}

BEGIN

info;

repeat

y:=1;

creat_main_menu;

analiz_menu('main');

if put1<>#27 then

case y of

1: begin {работа с первой таблицей}

repeat

y:=1;

creat_table_menu('I');

analiz_menu('I');

if put1<>#27 then

case y of

1: begin {просмотр 1 таблицы}

clrscr; shapka1;

ramka0(10,18,57); gotoxy(1,19);write('Справка: ');

write(' для возврата в меню необходимо нажать любую клавишу.');

reset(file_table1);

for i:=1 to count1 do

begin

seek(file_table1,i-1);

read(file_table1,dano1);

gotoxy(16,i+4);write(dano1.nomer);

gotoxy(33,i+4);write(dano1.post1);

gotoxy(52,i+4);write(dano1.fio);

end;

close(file_table1);

repeat until keypressed;

put1:='1';

end;
2: begin {добавление записи}

clrscr; shapka1;

ramka0(10,18,57); gotoxy(1,19);write('Справка: ');

write('введите соответствующие данные с последующим нажатием - Enter,');

reset(file_table1);seek(file_table1,count1);

gotoxy(16,5);readln(dano1.nomer);

gotoxy(33,5);readln(dano1.post1);

gotoxy(52,5);readln(dano1.fio);

count1:=count1+1;

write(file_table1,dano1);

close(file_table1);

put1:='1';

end;
3: begin {редактирование записи}

clrscr;

gotoxy(10,2); write('Введите номер редактируемой записи: ');

readln(punkt); clrscr; shapka1;

gotoxy(1,5); write('Данные:');

gotoxy(1,6); write('Новые данные:');

reset(file_table1);

seek(file_table1,punkt-1); read(file_table1,dano1);

gotoxy(16,5); write(dano1.nomer);

gotoxy(33,5); write(dano1.post1);

gotoxy(52,5); write(dano1.fio);

ramka0(10,18,57); gotoxy(1,19);write('Справка: ');

write('для подтверждения редактирония этой записи нажмите - Enter,');

gotoxy(10,20); write('иначе - Esc. ');

put1:=readkey;

if put1=#13 then begin

seek(file_table1,punkt-1);

gotoxy(16,6); readln(dano1.nomer);

gotoxy(33,6); readln(dano1.post1);

gotoxy(52,6); readln(dano1.fio);

write(file_table1,dano1);

end;

close(file_table1);

repeat until keypressed;

put1:='1'

end;
4: begin {удаление записи}

clrscr;

gotoxy(10,2); write('Введите номер удаляемой записи: ');


readln(punkt); clrscr; shapka1;

reset(file_table1);

seek(file_table1,punkt-1); read(file_table1,dano1);

gotoxy(16,5); write(dano1.nomer);

gotoxy(33,5); write(dano1.post1);

gotoxy(52,5); write(dano1.fio);

ramka0(10,18,54); gotoxy(1,19);write('Справка: ');

write(' для подтверждения удаления этой записи нажмите - Enter,');

gotoxy(10,20); write(' иначе - Esc. ');

put1:=readkey;

if put1=#13 then

begin

while not eof(file_table1) do begin

read(file_table1,dano1); seek(file_table1,punkt-1);

write(file_table1,dano1);inc(punkt);seek(file_table1,punkt);

end;

seek(file_table1,count1-1); truncate(file_table1);

count1:=count1-1;

close(file_table1);

gotoxy(25,10);write('Операция произведена успешно.');

repeat until keypressed;

end;

put1:='1'

end;
5: put1:=#27;

end;

until put1=#27;

put1:='1';

end;
2: begin {работа со второй таблицей}

repeat

y:=1;

creat_table_menu('II');

analiz_menu('II');

if put1<>#27 then

case y of

1: begin {просмотр 2 таблицы}

clrscr; shapka2;

ramka0(10,18,57); gotoxy(1,19);write('Справка: ');

write(' для возврата в меню необходимо нажать любую клавишу.');

reset(file_table2);

for i:=1 to count2 do

begin

seek(file_table2,i-1);

read(file_table2,dano2);

gotoxy(24,i+4);write(dano2.post2);

gotoxy(48,i+4);write(dano2.income);

end;

close(file_table2);

repeat until keypressed;

put1:='1';

end;
2: begin {добавление записи}

clrscr; shapka2;

reset(file_table2);seek(file_table2,count2);

ramka0(10,18,57); gotoxy(1,19);write('Справка: ');

write('введите соответствующие данные с последующим нажатием - Enter,');

gotoxy(24,5);readln(dano2.post2);

gotoxy(48,5);readln(dano2.income);

count2:=count2+1;

write(file_table2,dano2);

close(file_table2);

put1:='1';

end;
3: begin {редактирование записи}

clrscr;

gotoxy(10,2); write('Введите номер редактируемой записи: ');

readln(punkt); clrscr; shapka2;

gotoxy(1,5); write('Данные:');

gotoxy(1,6); write('Новые данные:');

reset(file_table2);

seek(file_table2,punkt-1); read(file_table2,dano2);

gotoxy(24,5); write(dano2.post2);

gotoxy(48,5); write(dano2.income);

ramka0(10,18,57); gotoxy(1,19);write('Справка: ');

write('для подтверждения редактирония этой записи нажмите - Enter,');

gotoxy(10,20); write('иначе - Esc. ');

put1:=readkey;

if put1=#13 then begin

seek(file_table2,punkt-1);

gotoxy(24,6); readln(dano2.post2);

gotoxy(48,6); readln(dano2.income);

write(file_table2,dano2);

end;

close(file_table2);

repeat until keypressed;

put1:='1'

end;
4: begin {удаление записи}

clrscr;

gotoxy(10,2); write('Введите номер удаляемой записи: ');

readln(punkt); clrscr; shapka2;

reset(file_table2);

seek(file_table2,punkt-1); read(file_table2,dano2);

gotoxy(24,5); write(dano2.post2);

gotoxy(48,5); write(dano2.income);

ramka0(10,7,57); gotoxy(10,8);

ramka0(10,18,54); gotoxy(1,19);write('Справка: ');

write(' для подтверждения удаления этой записи нажмите - Enter,');

gotoxy(10,20); write(' иначе - Esc. ');

put1:=readkey;

if put1=#13 then

begin

while not eof(file_table2) do begin

read(file_table2,dano2); seek(file_table2,punkt-1);

write(file_table2,dano2);inc(punkt);seek(file_table2,punkt);

end;

seek(file_table2,count2-1); truncate(file_table2);

count2:=count2-1;

close(file_table2);

gotoxy(25,10);write('Операция произведена успешно.');

repeat until keypressed;

end;

put1:='1'


end;
5: put1:=#27;

end;

until put1=#27;

put1:='1';

end;

3: begin {формирование запроса}

clrscr; gotoxy(34,2);

write('* Запрос *'); ramka0(34,3,10); ramka0(24,5,30);

ramka0(10,18,57); gotoxy(1,19);write('Справка: ');

write(' для возврата в меню необходимо нажать любую клавишу.');

gotoxy(24,4); write(' Выпуск продукции '); gotoxy(47,4); write(' Оклад ');

reset(file_table1); reset(file_table2);

for i:=1 to count1 do

begin

seek(file_table1,i-1);

read(file_table1,dano1);

gotoxy(25,i+5);write(dano1.fio); gotoxy(48,i+5);

for ii:=1 to count2 do

begin

seek(file_table2,ii-1);

read(file_table2,dano2);

if dano1.post1=dano2.post2 then write(dano2.income);

end;

end;

close(file_table1); close(file_table2);

repeat until keypressed;

put1:='1';

end;
4: begin {формирование отчета с сортировкой}

clrscr; gotoxy(34,2); {создание шапки}

write('* Отчет *'); ramka0(24,3,30); ramka0(9,5,60);

gotoxy(9,4); write(' Выпуск продукции '); gotoxy(23,4); write(' Район ');

gotoxy(40,4); write(' Оклад '); gotoxy(53,4); write(' Налог к выдаче ');

ramka0(10,18,57); gotoxy(1,19);write('Справка: ');

write(' для возврата в меню необходимо нажать любую клавишу.');

reset(file_table1);reset(file_table2);

for i:=1 to count2 do {создание отдельного массива по доходу}

begin

seek(file_table2,i-1);

read(file_table2,dano2);

ar1[i]:=dano2.income;

end;

for i:=1 to count2 do {его сортировка по возрастанию}

for ii:=1 to count2-1 do

if ar1[ii]>ar1[ii+1] then

begin

punkt:=ar1[ii]; ar1[ii]:=ar1[ii+1];

ar1[ii+1]:=punkt; end;

for i:=1 to count2 do {создание массива должностей, уже отсортиров.}

for ii:=1 to count2 do

begin

seek(file_table2,ii-1);

read(file_table2,dano2);

if ar1[i]=dano2.income then ar2[i]:=dano2.post2;

end;

j:=0; {вывод данных согласно созд. массивам}

for i:=1 to count2 do

for ii:=1 to count1 do

begin

seek(file_table1,ii-1);

read(file_table1,dano1);

if dano1.post1=ar2[i] then

begin

inc(j);

gotoxy(10,5+j);write(dano1.fio);

gotoxy(24,5+j);write(ar2[i]);

gotoxy(41,5+j);write(ar1[i]);

gotoxy(57,5+j);summ1:=(ar1[i])/100*13;

write(summ1:6:2);

summ:=summ+summ1;

end;

end;

close(file_table1); close(file_table2);

ramka0(9,6+j,60);gotoxy(57,7+j); write(summ:6:2);

put1:='1';

repeat until keypressed;

end;
5: begin {формирование перекрестной таблицы}

clrscr; gotoxy(24,2); {создание шапки}

write('* Перекрестная таблица *'); ramka0(17,3,37); {ramka0(9,5,60);}

reset(file_table1);reset(file_table2);

gotoxy(20,5);

for i:=1 to count2 do

begin

seek(file_table2,i-1);

read(file_table2,dano2);

write(dano2.post2);gotoxy(wherex+3,wherey);

end;

gotoxy(5,7);punkt:=20;

for i:=1 to count1 do

begin

seek(file_table1,i-1);

read(file_table1,dano1);

write(dano1.fio); gotoxy(20,wherey);

for ii:=1 to count2 do

begin

seek(file_table2,ii-1);

read(file_table2,dano2);

if dano1.post1=dano2.post2 then write(dano2.income)

else begin punkt:=punkt+length(dano2.post2)+3;

gotoxy(punkt,wherey);

end;

end;

gotoxy(5,wherey+1); punkt:=20;

end;

repeat until keypressed;

put1:='1';

end;
6: put1:=#27; {выход}

end;

until put1=#27;

END.


  1. Программирование в среде Microsoft Visual FoxPro.



Реляционные системы управления данными (СУБД) FoxBase, FoxBaseplus, FoxPro, Visual FoxPro относятся к новому поколению СУБД реляционного типа из семейства dBase - подобных СУДБ. Пакеты этого семейства широко распространены и даже были русифицированы.


СУБД типа FoxPro сохраняют преемственность по отношению к более ранним представителям dBase - прободных СУБД: структура баз данных, команды создания и обработки данных, основные типы данных в них такие же. В то же время каждая последующая СУБД обладает большими возможностями по сравнению с предыдущими. FoxPro по сравнению с FoxBase-plus является более высокоскоростной, имеет много дополнительных команд и развитый оконный интерфейс. Еще более значительными изобразительными средствами обладает Visual FoxPro.


Список используемой литературы.



  1. Программирование на языке Паскаль и в СУБД FoxPro. Учебное пособие для вузов/ Макаренко Е.И. и др., ГУУ-М.: ЗАО "Финстатитформ". 2000

  2. Информатика. Учебное пособие для вузов/ Черкасов Ю.М и др., ГУУ-М.: ЗАО "Финстатитформ".2002

  3. Туробо Паскаль 7.0 Киев "BHV", 2003