Создать систему управления базой данных (СУБД) в которой предусмотреть следующие режимы: создание БД, вывод БД, добавление записей в БД, удаление записей из БД, корректировка сведений в БД, печать сведений из базы по запросу, выход из БД. Все режимы должны представлены в виде функционального меню. Режим печати по запросу должен предусматривать подменю выбора запросов. Тестирование СУБД осуществить на БД «Больница №4». В приемном покое больницы №4 содержатся сведения о больных поступивших на лечение. Одна запись этого списка содержит: Ф.И.О. больного, номер палаты, пол, диагноз, дата поступления. СУБД должна выдавать следующие сведения: - в какой палате лежит больной Х; - список больных с указанным диагнозом; - больного наиболее долго находящегося в больнице; - сколько мужчин и сколько женщин находятся на лечении; + выдать все диагнозы, с которыми больные стоят на учете; + сортировка по отдельным полям
"Реализация концепции СУБД через массив записного типа языка Pascal" Реализовать: - Функциональное меню - Ввод БД - Выдод БД - Не менее двух запросов
Помогите пожалуйста.Очень надо, если я это не сделаю до понедельника, то меня отчислят.Заранее спасибо.
volvo
17.09.2010 1:31
Сам что-нибудь делать будешь, или как? Ну, к примеру, сможешь написать (и расположить правильно в программе) хотя бы "заглушки-пустышки" для процедур, которые будут образовывать твою СУБД? Чтоб потом заменить "пустышки" на реальные процедуры, и оно заработало. Меню можешь взять здесь...
Начни что-нибудь делать, а мы потом поможем, доработаем вместе до нормального состояния. До понедельника еще куча времени, можно Windows с нуля написать
Поиск прошерсти, задач на базы данных было немало, они все похожи друг на друга как две капли воды. Заменить тип данных, и чуть-чуть изменить запрос - и из футбольной/хоккейной команды получили библиотеку. А уж из магазина (и такие реализации уже были здесь) - так еще проще.
Arei
17.09.2010 1:35
Спасибо всё сейчас буду искать
Arei
17.09.2010 7:40
uses crt; type TRec = record fName:string[31]; secName:string[31]; thName:string[31]; nomer:string; Pol:string[20]; Diag:string[20]; baza :string[20]; Sam :string[20]; Daim :string[20]; Swam :string[20]; Qwert :string[20]; fme :string[20]; end;
var i,n:integer; BD:array[1..100] of TRec; PunktOfMenu: char; MainMenuTitle : char; caseKey: char;
Begin
clrscr; write('Кол-во ,больных в больнице = '); readln(n); for i:=1 to 1 do with BD[i] do begin
write('Открыть меню : '); read(Sam); if Sam='Да'then
begin writeLn; writeLn('Выберите нужное действие:'); writeLn('1 - Ввод Базы данных'); writeLn('2 - Вывод Базы данных'); writeLn('3 - Подменю запросов к Базе данных') ; writeLn('5 - Выход'); write('Ваш выбор:'); readLn(PunktOfMenu); MainMenuTitle := PunktOfMenu; end;
begin repeat
PunktOfMenu:=MainMenuTitle; case PunktOfMenu of '1': begin writeln; writeln ('База данных перед изменения '); write('Имя : '); readln(fName); write('Фамилия : '); readln(secName); write('Отчество : '); readln(thName); write('Номер палаты: '); readln(nomer); write('Пол : '); readln(Pol); write('Диагноз: '); readln(Diag);
writeLn('Для прекращения ввода нажмите "0"'); readln(caseKey); begin if caseKey='0'then
begin for i:=1 to n do with BD[i] do writeln ('База данных после изменения '); writeln('Имя : ',fname); writeln('Фамилия : ',secName); writeln('Отчество : ',thName); writeln('Номер палаты: ',nomer); writeln('Пол : ',Pol); writeln('Диагноз : ',Diag); writeln;
end; end;
end; '2': begin writeln ('База данных после изменения '); writeln('Имя : ',fname); writeln('Фамилия : ',secName); writeln('Отчество : ',thName); writeln('Номер палаты: ',nomer); writeln('Пол : ',Pol); writeln('Диагноз : ',Diag);
writeln;
end;
end;{case}
until PunktOfMenu='2' ;
begin
end;
end; end; end.
Вот что умудрился сделать за ночь.Есть море ошибок я так думаю.Помогите мне и да же советом.
Вот нашёл на форуме реализацию нужной ме функции, но не могу её удачно приспособить вот она
Заранее спасибо а помощь.
Добавлено через 2 мин.
http://forum.pascal.net.ru/index.php?showtopic=25694&hl вот ссылка на тему нужную мне
volvo
17.09.2010 17:20
Цитата
Вот что умудрился сделать за ночь.Есть море ошибок я так думаю.
Ошибки действительно есть... Первая, и самая главная - это то, что ты код не форматируешь как положено. Было бы написано правильной "лесенкой" - ты б увидел, что у тебя в строке №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;
Дальше. В том каркасе, который я привел, есть повторяющийся код. Это - плохо. Попробуй от этого избавиться. Тебе понадобится вынести некоторые действия в процедуры (или функции). С запросами - чуть позже разберемся.
И еще одно: ты уверен, что с файлами твоя БД не должна работать? У тебя об этом ничего не сказано. Или все-таки
Цитата
Тестирование СУБД осуществить на БД «Больница №4».
говорит об использовании файлов?
мисс_граффити
17.09.2010 19:11
"Реализация концепции СУБД через массив записного типа языка Pascal" подразумевает работу с динамическим массивом? Или просто создать массив на заведомо большее реального количества количество пациентов?
Arei
17.09.2010 21:49
Спасибо volvo нет с файлами в этом работе работать не надо, а вот вы виделия ссылку давал у меня не получается что то разобраться с тем кодом, но всё равно спасибо вам.
Добавлено через 6 мин. Извини просто я не ту работу думал делать (перепутал вариант).Теперь подскажи что мне делать.
volvo
18.09.2010 13:24
Цитата
Теперь подскажи что мне делать.
Я подсказал, что делать: перечитай мой пост, и сделай то, о чем я говорил. Если ты надеешься, что ты будешь давать ничего не значащие ответы, а тебе тут будут выкладывать более и более полные решения - это ты ошибаешься. Нужна эта БД в первую очередь тебе. Вот и прилагай усилия к тому, чтоб ее написать.
Arei
18.09.2010 17:00
Спасибо что напомнил про твой пост сверху , а то я его не заметил сейчас буду делать.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.