Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 05.11.2011
Сообщений: 3

Бд На паскале

05.11.2011, 15:36. Показов 1859. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет помогите написать запрос к БД. Саму Бд составил вроде работает( нуно сделать самое главное - запрос к ней)
Вот что нужно найти:
В базе данных каталога библиотеки хранятся сведения о книгах. Одна запись базы данных содержит сведения: шифр, Ф.И.О. автора, название, год издания, количество экземпляров. В СУБД предусмотреть следующие запросы:
- поиск по шифру книги;
- список всех изданий выпущенных позднее указанного года;
Очень прошу помочь составить на паскале эти 2 запроса..


вот моя программа без запросов:
program subd;
type
TBook = record
Author: string[15];
Title: string[25];
Year: integer;
Kolvo: integer;
shifr: string[30]
end;


TBaseMass = array[1..255] of TBook;


{процедура формирования новой таблицы}
procedure InputNewBase(var Base:TBaseMass; var NumOfRec:byte);
var i: byte;
Book: TBook;
ContinueInput: char;
begin
writeLn;
i:=0;
repeat
i:=i + 1;
with Book do
begin
write('Введите название ',i,'-ой книги: ');
readLn(Title);
writeLn('Введите автора книги ');
readLn(Author);
write('Введите количество ',i,'-ой книги: ');
readLn(Kolvo);
writeln('Введите год издания');
readLn(Year);
writeln('введите шифр книги');
readln(shifr);
end;
Base[i] := Book;
writeLn('Вводим данные о следующей книге');
writeLn('Если ввод окончен, то введите ''0''');
readLn(ContinueInput);
until ContinueInput='0';
NumOfRec:= i;
end;
{запросы}
????





{процедура вывода базы на экран}
procedure OutBase(const Base:TBaseMass; const NumOfRec:byte);
var i,j: byte;
begin
writeLn;
if NumOfRec <> 0 then
begin
writeLn('База данных содержит следующие сведения:');
for j:=1 to 79 do
write('-');
writeLn;

writeLn('N п/п':6,'| ','Автор':10,'| ','название |':14,
'количество |':12,'год издания |':17,'шифр |':16);

for j:=1 to 79 do
write('=');
writeLn;
for i:=1 to NumOfRec do
with Base[i] do
begin
write(i:5,' |');
write(Author:10,' |');
write(Title:13,' |');
write(Kolvo:10,' |');
write(Year:15,' |');
writeLn(shifr:14,' |');

for j:=1 to 79 do
write('-');
writeLn;
end;
end
else
writeLn('БД пуста');
end;


{процедура выводящая главное меню программы}
procedure MainMenu;
var PunktOfMenu: byte;
Base: TBaseMass;
NumOfRec : byte;
begin
NumOfRec := 0;
repeat
writeLn;
writeLn('Выберите нужное действие:');
writeLn('1 - Ввод новой БД');
writeLn('2 - Вывод БД');
writeLn('3 - Запрос к БД');
writeLn('4 - Выход');
write('Ваш выбор:');
readLn(PunktOfMenu);
case PunktOfMenu of
1: InputNewBase(Base, NumOfRec);
2: OutBase(Base, NumOfRec);
//3: RequestToBase(Base, NumOfRec);
else
if PunktOfMenu<>4 then
writeLn('Введите корректный пункт меню');
end; {конец case}
until PunktOfMenu = 4 ;
end;

{главная программа}
begin
MainMenu;
end.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.11.2011, 15:36
Ответы с готовыми решениями:

Как работает join и split в Паскале? И есть ли такие аналоги Питону в Паскале?
a=input() #из ' Hello world ' делаю 'Hello, world' a.strip(' ') a=', '.join(a.split(' ')) В Паскале как такое сделать?

в паскале
Дано натуральное число N (10&lt;N&lt;99). Найти целое число, которое нужно прибавить к нему, чтобы получилось число, состоящее из тех же цифр,...

в Паскале)

3
 Аватар для SuPeR XaKer
2857 / 1986 / 788
Регистрация: 23.09.2010
Сообщений: 4,876
05.11.2011, 18:44
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
Uses CRT;
type
 TBook = record
 Author: string[15];
 Title: string[25];
 Year: integer;
 Kolvo: integer;
 shifr: string[30]
end;
TBaseMass = array[1..255] of TBook;
{процедура формирования новой таблицы}
procedure InputNewBase(var Base:TBaseMass; var NumOfRec:byte);
var i: byte;
    Book: TBook;
    ContinueInput: char;
begin
writeLn;
i:=0;
repeat
 i:=i + 1;
 with Book do
  begin
   write('Введите название ',i,'-ой книги: ');
   readLn(Title);
   write('Введите автора книги ');
   readLn(Author);
   write('Введите количество ',i,'-ой книги: ');
   readLn(Kolvo);
   write('Введите год издания: ');
   readLn(Year);
   write('введите шифр книги: ');
   readln(shifr);
  end;
 Base[i] := Book;
 writeLn('Вводим данные о следующей книге');
 writeLn('Если ввод окончен, то введите ''0''');
 readLn(ContinueInput);
until ContinueInput='0';
NumOfRec:= i;
end;
{запросы}
 
procedure print(i:byte; Base:TBaseMass);
Var j:1..79;
begin
 write(i:5,' |');
 With Base[i] do
 begin
  write(Author:10,' |');
  write(Title:13,' |');
  write(Kolvo:10,' |');
  write(Year:15,' |');
  writeLn(shifr:14,' |');
 end;
 for j:=1 to 79 do
  write('-');
 writeLn;
end;
 
{процедура вывода базы на экран}
procedure OutBase(const Base:TBaseMass; const NumOfRec:byte; PunktOfMenu:byte; s:string;Y:integer);
var i,j: byte;
begin
writeLn;
Clrscr;
if NumOfRec <> 0 then
begin
 writeLn('База данных содержит следующие сведения:');
 for j:=1 to 79 do
  write('-');
 writeLn;
 writeLn('N п/п':6,'| ','Автор':10,'| ','название |':14,
 'количество |':12,'год издания |':17,'шифр |':16);
 for j:=1 to 79 do
  write('=');
 writeLn;
 for i:=1 to NumOfRec do
  with Base[i] do
  begin
   if (PunktOfMenu=1) and (shifr=s) then print(i,Base)
   else if (PunktOfMenu=2) and (Y>Year) then print(i,Base)
   else if PunktOfMenu=0 then print(i,Base);
  end;
end
else writeLn('БД пуста');
end;
 
Procedure Search(Const Base:TBaseMass;NumOfRec:byte);
Var Shifr:string;
    i:byte;
    Y:integer;
begin
if NumOfRec<>0 then
begin
 Writeln('1. Искать по шифру.');
 Writeln('2. Поиск книг выпущенных позднее указанного года.');
 readln(i);
 Shifr:='';
 Y:=0;
 Case i of
  1:begin
     write('Введите шифр книги: ');
     readln(Shifr);
     OutBase(Base,NumOfRec,1,Shifr,0);
    end;
  2:begin
     write('Введите год: ');
     readln(Y);
     OutBase(Base,NumOfRec,2,'',Y);
    end;
 end;
end
else writeln('База данных пуста.');
end;
 
{процедура выводящая главное меню программы}
procedure MainMenu;
var PunktOfMenu: byte;
Base: TBaseMass;
NumOfRec : byte;
begin
NumOfRec := 0;
repeat
 writeLn;
 writeLn('Выберите нужное действие:');
 writeLn('1 - Ввод новой БД');
 writeLn('2 - Вывод БД');
 writeLn('3 - Запрос к БД');
 writeLn('4 - Выход');
 write('Ваш выбор:');
 readLn(PunktOfMenu);
 case PunktOfMenu of
  1: InputNewBase(Base, NumOfRec);
  2: OutBase(Base, NumOfRec,0,'',0);
  3:Search(Base,NumOfRec);
  else
  if PunktOfMenu<>4 then
   writeLn('Введите корректный пункт меню');
 end; {конец case}
until PunktOfMenu = 4;
end;
 
{главная программа}
begin
 MainMenu;
end.
Как то так.Проверял не в TP.И один раз.Проверяйте.
writeLn('Если ввод окончен, то введите ''0''');
ну и лучше наверное дописать что-то типа:для продолжения введите любой символ.Ато сиди и втыкай а что если не 0 введу будет.
0
0 / 0 / 0
Регистрация: 05.11.2011
Сообщений: 3
06.11.2011, 00:19  [ТС]
спасибо большое работает)

только во 2ом запросе прога ищет не позднее заданного года а ранее...(например книга 2010 года, ввожу 1999 бд -пустая, ввожу 2040- находит)
2:begin
write('Введите год: ');
readln(Y);
OutBase(Base,NumOfRec,2,'',Y);
end;
как здесь исправить?
0
 Аватар для SuPeR XaKer
2857 / 1986 / 788
Регистрация: 23.09.2010
Сообщений: 4,876
06.11.2011, 12:05
else if (PunktOfMenu=2) and (Y>Year) then print(i,Base)
в этой строке смени знак
Pascal
1
else if (PunktOfMenu=2) and (Y<Year) then print(i,Base)
спасибо большое работает)

Не по теме:

не за что.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.11.2011, 12:05
Помогаю со студенческими работами здесь

БД на Паскале
Пожалуйста помогите разработать базу данных на паскале. Вот задание: ОПИСАНИЕ Программный проект моделирует работу отдела банка...

ИИ в паскале
Всем привет. Создаю простенькую игру в паскале с ботами (стрелялка). Не понимаю, как сделать, чтобы когда игрок встанет на путь бота - бот...

ОС на Паскале
Всем привет! У кого-то когда-то возникала идея написания своей ОС? Давайте все соберёмся, и начнем писать с нуля ОС, или продолжим писать...

while в паскале
Дано вещественное число ε (&gt; 0). Последовательность вещественных чисел Ak определяется следующим образом: A1 = 2, ...

на паскале
Посчитать количество кратных чисел от нуля до 100. Входные данные: В первом рядке входного файла записано три целых числа А, В, С...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru