Мегаобучалка Главная | О нас | Обратная связь

Результат машинного тестирования




Формулировка задания

 

ВАРИАНТ 32

База данных «Подписка»

 

Составить программу создания и обработки файла данных, содержащих сведения о подписчиках.

Информация состоит из записей в типизированном файле.

Каждая запись должна содержат следующие поля:

- Индекс издания;

- название издания;

- цена;

- окончание подписки;

- форма доставки (до востребования, до квартиры);

- фамилия подписчика;

- адрес подписчика.

 

Программа должна содержать заставку и меню.

Обработка файла должна включать следующие действия:

1. Создание базы данных в типизированном файле.

2. Дополнение файла новыми записями.

3. Вывод на экран базы данных.

4. Сортировка изданий по убыванию цены.

5. Вывод фамилий подписчиков, оформивших подписку до востребования.

6. Вывод последнего срока подписки и названия соответствующего издания.

7. Вывод базы данных с сортировкой названий изданий по алфавиту.

8. Вывод адресов подписчиков, оформивших подписку до квартиры.

 

Количество записей произвольное (не менее 10).

Все элементы обработки файла должны быть оформлены в виде процедур

Введение


Язык Паскаль был создан Никлаусом Виртом в 1968—1969 годах после его участия в работе комитета разработки стандарта языка Алгол-68. Язык назван в честь французского математика, физика, литератора и философа Блеза Паскаля, который создал первую в мире механическую машину, складывающую два числа. Первая публикация Вирта о языке датирована 1970 годом, представляя язык, автор указывал в качестве цели его создания — построение небольшого и эффективного языка, способствующего хорошему стилю программирования, использующему структурное программирование и структурированные данные.

Последующая работа Вирта была направлена на создание на основе Паскаля языка системного программирования, с сохранением возможности вести на его базе систематический, целостный курс обучения профессиональному программированию. Результат этой работы — язык Модула-2.

Наиболее известной реализацией Паскаля, обеспечившей широкое распространение и развитие языка, является Turbo Pascal фирмы Borland, выросшая затем в объектный Паскаль для DOS (начиная с версии 5.5) и Windows и далее в Delphi, в которой были внедрены значительные расширения языка.



Диалекты Паскаля, применяемые в Turbo Pascal для DOS и Delphi для Windows, стали популярны из-за отсутствия других успешных коммерческих реализаций.


 

Описание базы данных

 

База данных состоит из таблицы. Для работы с базой данных в Turbo Pascal используется типизированный файл, элементами которого являются записи.

 

Название Тип Размер поля Описание
nazvanie текстовый Название издания
Adres текстовый Адрес подписчика  
Familia текстовый Фамилия
tsena числовой вещественный Цена издания
Index числовой вещественный Индекс издания
dostavka текстовый Способ доставки
srok числовой целое Срок подписки  

Первоначальные данные

 

Данные вводят и сохраняют в типизированном файле 'f.dat'. Эти данные введены с помощью procedure create;

 


Структура программы

 

Программа, в общем случае, состоит из заставки, набора процедур, функций и глобального блока.

Program kursovik; uses crt;

constname:array[1..8] ofstring=

('1-Создание и дополнение',

'2-Вывод БД на экран',

'3-Сортировка изданий по убыванию цены',

'4-Вывод фамилий подписчиков, оформивших подписку до востребования',

'5-Вывод данных о подписчиках, оформивших подписку на год ',

'6-Вывод базы данных с сортировкой названий изданий по алфавиту',

'7-Вывод адресов подписчиков, оформивших подписку до квартиры',

'8-Выход');

varm:integer;

typezap= recordnazvanie: string [26];

adres: string [35];

familia: string [10];

tsena, index: real;

dostavka: string [1];

srok:integer;

end;

varf:file ofzap;

z:zap;

z1,z2:array[1..100] ofzap;

procedure zastavka;

{раздел описаний}

begin

{тело процедуры}

end;

{описание всех процедур пунктов меню}

................

beginzastavka; clrscr;

assign (f, 'C:\Users\user\Desktop\new\f.dat');

repeatmenu(m);

casem of

1: create; 2: display; 3: ubyvanie;

4: vostr; 5: god; 6: alfavit;

7: kvart; 8: beginkit; exit; end;

end;

untilm=8;

close (f); end.

Для того, чтобы понять что делает программа, рассмотрим ее меню:

'1-Создание и дополнение',

'2-Вывод БД на экран',

'3-Сортировка изданий по убыванию цены',

'4-Вывод фамилий подписчиков, оформивших подписку до востребования',

'5-Вывод данных о подписчиках, оформивших подписку на год ',

'6-Вывод базы данных с сортировкой названий изданий по алфавиту',

'7-Вывод адресов подписчиков, оформивших подписку до квартиры',

'8-Выход'

Меню программы появляется при ее запуске после выполнения заставки.
Каждый пункт меню формируется как отдельная процедура.

Создание и дополнение базы данных - procedure create;

Вывод на экран - procedure display;

Сортировка изданий по убыванию цены- procedureubyvanie

Вывод фамилий подписчиков, оформивших подписку до востребования- procedurevostr

Вывод данных о подписчиках, оформивших подписку на год- proceduregod

Вывод базы данных с сортировкой названий изданий по алфавиту- procedurealfavit

Вывод адресов подписчиков, оформивших подписку до квартиры- procedurekvart


 

Разработка процедур

 

Процедура ubyvanie

Процедура выполняет сортировку изданий по убыванию цены и вывод измененной таблицы на экран

procedureubyvanie; {Сортировка изданий по убыванию цены}

Const

s:array[1..7] ofstring=

('Индекс','Название',

'Цена','Срок','Форма','Фамилия','Адрес');

varc:zap; i,j:integer; ans:byte;

Begin

clrscr; ;

reset (f);

i:=1;

while noteof (f) do

Begin

read (f,z);

z1[i]:=z;

i:=i+1;

end;

fori:=1 to9 do

forj:=i+1 to10 do

ifz1[i].tsena<z1[j].tsena then

Begin

c:=z1[i]; z1[i]:=z1[j]; z1[j]:=c;

end;

clrscr; textcolor (2);

write (s[1],' '); write(s[2],' ');

write(s[3],' '); write(s[4],' ');

write(s[5],' '); write(s[6],' ');

write(s[7]);

fori:=1 to10 do

Begin

textcolor(3);

gotoXY (1,i+1); write (z1[i].index);

gotoXY (8,i+1); write (z1[i].nazvanie);

gotoXY (35,i+1); write (z1[i].tsena);

gotoXY (41,i+1); write (z1[i].srok);

gotoXY (46,i+1); write (z1[i].dostavka);

gotoXY (51,i+1); write (z1[i].familia);

gotoXY (63,i+1); write (z1[i].adres);

end;

gotoxy(2,23); textcolor (0);

writeln ('0-Назад');

readln (ans); ifans=0 then beginclrscr; exit; end;

close(f); end;

Процедура vostr


Процедура выбирает подписчиков, оформивших подписку до востребования, и выводит их фамилии на экран.


procedurevostr;

vari,n:integer;

Begin

textcolor(2); gotoxy(35,3); writeln('Фамилия');

reset(f);

i:=5;

textcolor(3);

while noteof (f) do

beginread(f,z);

ifz.dostavka='в' then begingotoxy(35,i);

write (z.familia);

i:=i+1; end; end;

gotoxy(2,23); textcolor(0);

writeln ('0-Назад'); readln(n);

casen of0:beginclrscr; exit; end; end; end; d;

 


Процедура god

Процедура выбирает подписчиков, оформивших подписку на год, и выводит на экран их фамилии и адреса.




proceduregod;

varn,i:integer;

beginreset(f);

textcolor(2); gotoxy(20,3);

writeln ('Фамилия',' ','Адрес');

i:=5;

textcolor(3);

while noteof(f) do

beginread(f,z);

ifz.srok=12 then begingotoxy(20,i); write(z.familia);

gotoxy(32,i); write(z.adres); i:=i+1; end; end;

gotoxy(2,23); textcolor(0);

writeln ('0-Назад'); readln(n);

casen of0:beginclrscr; exit; end;

end; end;

 

 

 



 



Процедура alfavit


Процедура выполняет сортировку названий изданий по алфавиту и выводит отсортированную таблицу на экран

procedurealfavit;

Const

s:array[1..7] ofstring=

('Индекс','Название',

'Цена','Срок','Форма','Фамилия','Адрес');

varc:zap; i,j:integer; ans:byte;

Begin

clrscr; ;

reset (f);

i:=1;

while noteof (f) do

Begin

read (f,z);

z2[i]:=z;

i:=i+1;

end;

fori:=1 to9 do

forj:=i+1 to10 do

ifz2[i].nazvanie>z2[j].nazvanie then

beginc:=z2[i]; z2[i]:=z2[j]; z2[j]:=c; end;

clrscr; textcolor (2);

write (s[1],' ');

write(s[2],' ');

write(s[3],' '); write(s[4],' ');

write(s[5],' ');

write(s[6],' ');

write(s[7]);

fori:=1 to10 do

Begin

textcolor(3);

gotoXY (1,i+1); write (z2[i].index);

gotoXY (8,i+1); write (z2[i].nazvanie);

gotoXY (35,i+1); write (z2[i].tsena);

gotoXY (41,i+1); write (z2[i].srok);

gotoXY (46,i+1); write (z2[i].dostavka);

gotoXY (51,i+1); write (z2[i].familia);

gotoXY (63,i+1); write (z2[i].adres);

end;

gotoxy(2,23); textcolor (0);

writeln ('0-Назад');

readln (ans); ifans=0 then beginclrscr; exit; end;

close(f);

end;


 



Процедура kvart

Процедура выбирает подписчиков, оформивших подписку до квартиры, и выводит на экран их адреса.


procedurekvart;

vari,n:integer;

Begin

textcolor(2); gotoxy(25,3); writeln('Адрес');

reset(f);

i:=5;

textcolor(3);

while noteof (f) do

beginread(f,z);

ifz.dostavka='к' then begingotoxy(25,i); write (z.adres);

i:=i+1; end; end;

gotoxy(2,23); textcolor(0);

writeln ('0-Назад'); readln(n);

casen of0:beginclrscr; exit; end;

end; end;

 


 


Текст программы

 

programkursovik;

usescrt;

constname:array[1..8] ofstring=

('1-Создание и дополнение',

'2-Вывод БД на экран',

'3-Сортировка изданий по убыванию цены',

'4-Вывод фамилий подписчиков, оформивших подписку до востребования',

'5-Вывод данных о подписчиках, оформивших подписку на год ',

'6-Вывод базы данных с сортировкой названий изданий по алфавиту',

'7-Вывод адресов подписчиков, оформивших подписку до квартиры',

'8-Выход');

varm:integer;

typezap= recordnazvanie: string [26];

adres: string [35];

familia: string [10];

tsena, index: real;

dostavka: string [1];

srok:integer;

end;

varf:file ofzap;

z:zap;

z1,z2:array[1..100] ofzap;

 

procedurealfavit;

Const

s:array[1..7] ofstring=

('Индекс','Название',

'Цена','Срок','Форма','Фамилия','Адрес');

varc:zap; i,j:integer; ans:byte;

Begin

clrscr; ;

reset (f);

i:=1;

while noteof (f) do

Begin

read (f,z);

z2[i]:=z;

i:=i+1;

end;

fori:=1 to9 do

forj:=i+1 to10 do

ifz2[i].nazvanie>z2[j].nazvanie then

beginc:=z2[i]; z2[i]:=z2[j]; z2[j]:=c; end;

clrscr; textcolor (2);

write (s[1],' ');

write(s[2],' ');

write(s[3],' '); write(s[4],' ');

write(s[5],' ');

write(s[6],' ');

write(s[7]);

fori:=1 to10 do

Begin

textcolor(3);

gotoXY (1,i+1); write (z2[i].index);

gotoXY (8,i+1); write (z2[i].nazvanie);

gotoXY (35,i+1); write (z2[i].tsena);

gotoXY (41,i+1); write (z2[i].srok);

gotoXY (46,i+1); write (z2[i].dostavka);

gotoXY (51,i+1); write (z2[i].familia);

gotoXY (63,i+1); write (z2[i].adres);

end;

gotoxy(2,23); textcolor (0);

writeln ('0-Назад');

readln (ans); ifans=0 then beginclrscr; exit; end;

close(f);

end;

 

procedureubyvanie; {Сортировка изданий по убыванию цены}

Const

s:array[1..7] ofstring=

('Индекс','Название',

'Цена','Срок','Форма','Фамилия','Адрес');

varc:zap; i,j:integer; ans:byte;

Begin

clrscr; ;

reset (f);

i:=1;

while noteof (f) do

Begin

read (f,z);

z1[i]:=z;

i:=i+1;

end;

fori:=1 to9 do

forj:=i+1 to10 do

ifz1[i].tsena<z1[j].tsena then

Begin

c:=z1[i]; z1[i]:=z1[j]; z1[j]:=c;

end;

clrscr; textcolor (2);

write (s[1],' '); write(s[2],' ');

write(s[3],' '); write(s[4],' ');

write(s[5],' '); write(s[6],' ');

write(s[7]);

fori:=1 to10 do

Begin

textcolor(3);

gotoXY (1,i+1); write (z1[i].index);

gotoXY (8,i+1); write (z1[i].nazvanie);

gotoXY (35,i+1); write (z1[i].tsena);

gotoXY (41,i+1); write (z1[i].srok);

gotoXY (46,i+1); write (z1[i].dostavka);

gotoXY (51,i+1); write (z1[i].familia);

gotoXY (63,i+1); write (z1[i].adres);

end;

gotoxy(2,23); textcolor (0);

writeln ('0-Назад');

readln (ans); ifans=0 then beginclrscr; exit; end;

close(f);

end;

 

proceduredisplay;

Const

s:array[1..7] ofstring=

('Индекс','Название',

'Цена','Срок','Форма','Фамилия','Адрес');

vari:integer; ans:byte;

Begin

Repeat

clrscr; textcolor (2);

write (s[1],' '); write(s[2],' ');

write(s[3],' '); write(s[4],' '); write(s[5],' ');

write(s[6],' '); write(s[7]);

i:=2;

reset (f); textcolor (3);

while noteof (f) do

Begin

read (f,z);

gotoXY (1,i); write (z.index);

gotoXY (8,i); write (z.nazvanie);

gotoXY (35,i); write (z.tsena);

gotoXY (41,i); write (z.srok);

gotoXY (46,i); write (z.dostavka);

gotoXY (51,i); write (z.familia);

gotoXY (63,i); write (z.adres);

i:=i+1;

end;

gotoxy(2,23); textcolor (0);

writeln ('0-Назад');

read (ans); writeln;

untilans=0; close (f); clrscr;

end;

 

procedurevostr; {Вывод фамилий подписчиков, оформивших подписку до востребования}

vari,n:integer;

Begin

textcolor(2); gotoxy(35,3); writeln('Фамилия');

reset(f);

i:=5;

textcolor(3);

while noteof (f) do

beginread(f,z);

ifz.dostavka='в' then begingotoxy(35,i);

write (z.familia);

i:=i+1; end; end;

gotoxy(2,23); textcolor(0);

writeln ('0-Назад'); readln(n);

casen of0:beginclrscr; exit; end;

end; end;

 

proceduregod; {Вывод данных о подписчиках, оформивших подписку на год}

varn,i:integer;

beginreset(f);

textcolor(2); gotoxy(20,3);

writeln ('Фамилия',' ','Адрес');

i:=5;

textcolor(3);

while noteof(f) do

beginread(f,z);

ifz.srok=12 then begingotoxy(20,i); write(z.familia);

gotoxy(32,i); write(z.adres); i:=i+1; end; end;

gotoxy(2,23); textcolor(0);

writeln ('0-Назад'); readln(n);

casen of0:beginclrscr; exit; end;

end; end;

 

procedurekvart; {Вывод адресов подписчиков, оформивших подписку до квартиры}

vari,n:integer;

Begin

textcolor(2); gotoxy(25,3); writeln('Адрес');

reset(f);

i:=5;

textcolor(3);

while noteof (f) do

beginread(f,z);

ifz.dostavka='к' then begingotoxy(25,i); write (z.adres);

i:=i+1; end; end;

gotoxy(2,23); textcolor(0);

writeln ('0-Назад'); readln(n);

casen of0:beginclrscr; exit; end;

end; end;

 

procedureframe (x1,y1,x2,y2:integer);

constA='║'; B='═'; C='╗'; D='╝'; E='╔'; F='╚';

vari:integer;

beginclrscr;

gotoxy (x1,y1);

write (E);

fori:=(x1+1) to(x2-1) dowrite (B);

write (C);

fori:=(y1+1) to(y2-1) do

begingotoxy (x1,i); write (A);

gotoxy (x2,i); write (A);

end;

gotoxy (x1,y2);

write (F);

fori:=(x1+1) to(x2-1) dowrite (B);

write (D);

end;

 

procedurezastavka;

beginclrscr;

frame(21,1,60,25);

textcolor(1);

gotoxy(23,2); write ('САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ');

gotoxy (25,3); write ('УНИВЕРСИТЕТ КИНО И ТЕЛЕВИДЕНИЯ');

gotoxy (32,8); write ('КУРСОВАЯ РАБОТА');

gotoxy (25,9); write ('ПО ИНФОРМАЦИОННЫМ ТЕХНОЛОГИЯМ');

gotoxy (40,15); write ('Выполнила студентка');

gotoxy (49,16); write ('311 группы');

gotoxy (49,17); write ('Юркова А.С.');

gotoxy (34,10); write ('Вариант №32');

gotoxy (33,23); write ('Санкт-Петербург');

gotoxy (38,24); write ('2014');

readkey;

clrscr;

end;

 

proceduremenu (varpunkt:integer);

vari: integer;

key: char;

begintextcolor(1); gotoxy(2,7); write ('Меню');

fori:=1 to8 do begin

gotoxy (2, 10+i); write (name[i]); end;

punkt:=1;

Repeat

textbackground(11);

gotoxy(2, 10+punkt); write (name[punkt]);

repeat untilkeypressed;

key:=readkey;

ifkey=#0 thenkey:=readkey;

textbackground(15);

gotoxy(2,10+punkt);

write (name[punkt]);

casekey of#38:punkt:=punkt-1; #40:punkt:=punkt+1; end;

ifpunkt>8 thenpunkt:=1 else ifpunkt<1 thenpunkt:=8

untilkey=#13;

clrscr;

end;

 

procedurecreate;

varans,n:byte;

i:integer;

beginclrscr;

textcolor (0);

writeln('0-Создать базу; 1-Продолжить базу; 2-Выход');

readln(n);

casen of

0:beginrewrite(f); i:=0; end;

1:beginreset(f); seek(f,filesize(f)); i:=filepos(f); end;

2:beginclrscr; exit; end;

end;

repeatclrscr;

i:=i+1;

textcolor(5);

writeln ('Запись №',i);

withz do

begintextcolor (1);

writeln ('Введите индекс');

textcolor(3);

readln(index);

writeln;

textcolor (1);

writeln ('Введите название издания');

textcolor(3);

readln(nazvanie);

writeln;

textcolor (1);

writeln ('Введите цену');

textcolor(3);

readln(tsena);

writeln;

textcolor (1);

writeln ('Введите срок подписки');

textcolor(3);

readln(srok);

writeln;

textcolor (1);

writeln ('Введите форму доставки');

textcolor(3);

readln(dostavka);

writeln;

textcolor (1);

writeln ('Введите фамилию');

textcolor(3);

readln(familia);

writeln;

textcolor (1);

writeln ('Введите адрес');

textcolor(3);

readln(adres);

writeln;

textcolor(5);

writeln ('Добавлено :)');

end;

write(f,z);

writeln;

textcolor(0);

writeln;

writeln('0-Выход 1-Продолжить');

readln(ans);

writeln;

untilans=0;

close(f);

clrscr; menu(m);

end;

 

procedurekit;

Begin

writeln('_________8____8__________8_____8_____________________');

writeln('_______8___8_____8____8_____8____8___________________');

writeln('_____8____8_______8__8_______8_____8_________________');

writeln('___________________88________________________________');

writeln('_____________888888888888_______________8_______88___');

writeln('__________888888888888888888____________888___8888___');

writeln('_________8888888888888888888888__________8888888_____');

writeln('________8888@)888888888888888888___________888_______');

writeln('~~~~~88888888888888888888888888888888888888~~~~~~~~~~');

writeln('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');

end;

 

beginzastavka; clrscr;

assign (f, 'C:\Users\user\Desktop\new\f.dat');

repeatmenu(m);

casem of

1: create;

2: display;

3: ubyvanie;

4: vostr;

5: god;

6: alfavit;

7: kvart;

8: beginkit; exit; end;

end;

untilm=8;

close (f);

end.


 

Результат машинного тестирования

 

Заставка

 

Меню


 





Читайте также:





Читайте также:
Личность ребенка как объект и субъект в образовательной технологии: В настоящее время в России идет становление новой системы образования, ориентированного на вхождение...
Почему люди поддаются рекламе?: Только не надо искать ответы в качестве или количестве рекламы...
Почему человек чувствует себя несчастным?: Для начала определим, что такое несчастье. Несчастьем мы будем считать психологическое состояние...
Как распознать напряжение: Говоря о мышечном напряжении, мы в первую очередь имеем в виду мускулы, прикрепленные к костям ...

©2015 megaobuchalka.ru Все права защищены авторами материалов.

Почему 3458 студентов выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.117 сек.)