IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> База данных
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 9
Пол: Мужской

Репутация: -  0  +


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



"Реализация концепции СУБД через массив записного типа языка Pascal"
Реализовать:
- Функциональное меню
- Ввод БД
- Выдод БД
- Не менее двух запросов




Помогите пожалуйста.Очень надо, если я это не сделаю до понедельника, то меня отчислят.Заранее спасибо.

Сообщение отредактировано: Arei -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гость






Цитата
Вот что умудрился сделать за ночь.Есть море ошибок я так думаю.
Ошибки действительно есть... Первая, и самая главная - это то, что ты код не форматируешь как положено. Было бы написано правильной "лесенкой" - ты б увидел, что у тебя в строке №30 начинается цикл for i := 1 to 1 (Кстати, какой смысл делать от 1 до 1 - это отдельный разговор, но допустим, что ты хочешь протестировать с одной записью. Хотя даже в этом случае лучше задать количество записей константой), а в строке №72 ты открываешь еще один цикл по i. В результате программа ведет себя как попало под Турбо Паскалем, и вообще не компилируется другими компиляторами.

Дальше: насколько я помню, изначально была библиотека? Что случилось, теперь БД больницы?

В общем, каркас я бы написал вот так:
uses crt;
type
TRec = record
fName:string[31];
secName:string[31];
thName:string[31];
nomer:string;
Pol:string[20];
Diag:string[20];
end;

function MainMenu: integer;
var PunktOfMenu: integer;
begin
writeLn;
writeLn('Выберите нужное действие:');
writeLn('1 - Ввод Базы данных');
writeLn('2 - Вывод Базы данных');
writeLn('3 - Подменю запросов к Базе данных');
writeln('4 - Корректировка БД');
writeLn('5 - Выход');
write('Ваш выбор:');
readLn(PunktOfMenu);
MainMenu := PunktOfMenu;
end;

var
i, n: integer;
BD: array[1..100] of TRec;

menu, curr: integer;
R: TRec;
Begin
n := 0;
clrscr;
repeat
menu := MainMenu;
case menu of
1: { Ввод базы }
begin
write('Кол-во больных в больнице = '); readln(n);
for i := 1 to n do
begin
writeln('Информация о большом №', i);
with R do
begin
writeln('Имя : '); readln(fname);
writeln('Фамилия : '); readln(secName);
writeln('Отчество : '); readln(thName);
writeln('Номер палаты: '); readln(nomer);
writeln('Пол : '); readln(Pol);
writeln('Диагноз : '); readln(Diag);
writeln;
end;
BD[i] := R;
end;
end;

2: { Вывод базы на экран }
begin
if n = 0 then writeln('<База пуста>')
else
for i := 1 to n do with BD[i] do
begin
writeln('Имя : ', fname);
writeln('Фамилия : ', secName);
writeln('Отчество : ', thName);
writeln('Номер палаты: ', nomer);
writeln('Пол : ', Pol);
writeln('Диагноз : ', Diag);
writeln;
end;
end;

3: { Здесь будут запросы }
begin
end;

4: { Корректировка базы }
begin
write('Какую запись будем корректировать?');
readln(curr);
if (curr > 0) and (curr <= n) then
with BD[curr] do
begin
writeln('До корректировки:');
writeln('Имя : ', fname);
writeln('Фамилия : ', secName);
writeln('Отчество : ', thName);
writeln('Номер палаты: ', nomer);
writeln('Пол : ', Pol);
writeln('Диагноз : ', Diag);
writeln;

writeln('Введите новые данные:');

writeln('Имя : '); readln(fname);
writeln('Фамилия : '); readln(secName);
writeln('Отчество : '); readln(thName);
writeln('Номер палаты: '); readln(nomer);
writeln('Пол : '); readln(Pol);
writeln('Диагноз : '); readln(Diag);
writeln;
end
else
writeln('<Несуществующая запись>');
end;
end;
until menu = 5;
end.


Чувствуешь разницу?

Дальше. В том каркасе, который я привел, есть повторяющийся код. Это - плохо. Попробуй от этого избавиться. Тебе понадобится вынести некоторые действия в процедуры (или функции). С запросами - чуть позже разберемся.

И еще одно: ты уверен, что с файлами твоя БД не должна работать? У тебя об этом ничего не сказано. Или все-таки
Цитата
Тестирование СУБД осуществить на БД «Больница №4».
говорит об использовании файлов?
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 5.09.2025 4:05
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name