Результат машинного тестирования
Формулировка задания
ВАРИАНТ 32 База данных «Подписка»
Составить программу создания и обработки файла данных, содержащих сведения о подписчиках. Информация состоит из записей в типизированном файле. Каждая запись должна содержат следующие поля: - Индекс издания; - название издания; - цена; - окончание подписки; - форма доставки (до востребования, до квартиры); - фамилия подписчика; - адрес подписчика.
Программа должна содержать заставку и меню. Обработка файла должна включать следующие действия: 1. Создание базы данных в типизированном файле. 2. Дополнение файла новыми записями. 3. Вывод на экран базы данных. 4. Сортировка изданий по убыванию цены. 5. Вывод фамилий подписчиков, оформивших подписку до востребования. 6. Вывод последнего срока подписки и названия соответствующего издания. 7. Вывод базы данных с сортировкой названий изданий по алфавиту. 8. Вывод адресов подписчиков, оформивших подписку до квартиры.
Количество записей произвольное (не менее 10). Все элементы обработки файла должны быть оформлены в виде процедур Введение
Последующая работа Вирта была направлена на создание на основе Паскаля языка системного программирования, с сохранением возможности вести на его базе систематический, целостный курс обучения профессиональному программированию. Результат этой работы — язык Модула-2. Наиболее известной реализацией Паскаля, обеспечившей широкое распространение и развитие языка, является Turbo Pascal фирмы Borland, выросшая затем в объектный Паскаль для DOS (начиная с версии 5.5) и Windows и далее в Delphi, в которой были внедрены значительные расширения языка. Диалекты Паскаля, применяемые в Turbo Pascal для DOS и Delphi для Windows, стали популярны из-за отсутствия других успешных коммерческих реализаций.
Описание базы данных
База данных состоит из таблицы. Для работы с базой данных в Turbo Pascal используется типизированный файл, элементами которого являются записи.
Первоначальные данные
Данные вводят и сохраняют в типизированном файле '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-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (687)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |