Файл: Курсовой проект " Программирование на языке 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.
-
Программирование в среде Microsoft Visual FoxPro.
Реляционные системы управления данными (СУБД) FoxBase, FoxBaseplus, FoxPro, Visual FoxPro относятся к новому поколению СУБД реляционного типа из семейства dBase - подобных СУДБ. Пакеты этого семейства широко распространены и даже были русифицированы.
СУБД типа FoxPro сохраняют преемственность по отношению к более ранним представителям dBase - прободных СУБД: структура баз данных, команды создания и обработки данных, основные типы данных в них такие же. В то же время каждая последующая СУБД обладает большими возможностями по сравнению с предыдущими. FoxPro по сравнению с FoxBase-plus является более высокоскоростной, имеет много дополнительных команд и развитый оконный интерфейс. Еще более значительными изобразительными средствами обладает Visual FoxPro.
Список используемой литературы.
-
Программирование на языке Паскаль и в СУБД FoxPro. Учебное пособие для вузов/ Макаренко Е.И. и др., ГУУ-М.: ЗАО "Финстатитформ". 2000 -
Информатика. Учебное пособие для вузов/ Черкасов Ю.М и др., ГУУ-М.: ЗАО "Финстатитформ".2002 -
Туробо Паскаль 7.0 Киев "BHV", 2003