Форум программистов, компьютерный форум, киберфорум
Наши страницы
Turbo Pascal
Войти
Регистрация
Восстановить пароль
 
Evis
0 / 0 / 0
Регистрация: 29.05.2012
Сообщений: 9
1

Меню для базы данных

26.04.2013, 18:27. Просмотров 884. Ответов 0
Метки нет (Все метки)

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

Вот что мне задали:
Написать базу данных с "хорошим" интерфейсом (экранчиком, меню) со следующими функциями:
  • открыть существующую базу
  • добавление элемента
  • удаление элемента
  • просмотр всей базы
  • поиск конкретного значения
  • запись всей базы в txt файл
  • чтение и добавление из txt файла

Все, на что хватило мне знаний, полученных на парах:
Код
{Файл BAZA.PAS - главная программа}
program baza;
uses crt, bazaunit; {Переменные программы}
var f: frec; {Файл БД}
    opened: boolean; {Файл открыт?}
{Функция вывода мен. Возвращает номер выбранного пункта}
function menu: integer;
const MENU_TXT=$0F; {Цвет меню}
      MENU_SEL=$70; {Цвет выбранного пункта}
      MENU_ITEMS= 4;{Количество пунктов меню}
                    {Названия пунктов меню}
      MENU_ITEM: array [1..MENU_ITEMS] of string[20]=(
                        'Add record',
                        'Viev',
                        'Open file',
                        'Exit' );
var ptr, i: integer; {ptr- номер текущего пункта меню}
begin
      ptr:=1;
      repeat
          {Вывод строк меню. Текущая строка выделена.}
          textattr:=MENU_TXT;
          clrscr;
          gotoxy(30,10); write('--- M E N U ---');
          for i:=1 to MENU_ITEMS do begin
              gotoxy(25,i*2+10);
              if i=ptr then begin textattr:=MENU_SEL; write('->'); end
                       else begin textattr:=MENU_TXT; write('  '); end;
              write(' ',MENU_ITEM[i]:20,' ');
          end;
          {Реакция на нажатие клавиши}
          case readkey of 
              #27: {Esc}   begin menu:=4; break; end;
              #13: {Enter} begin menu:=ptr; breakl end;
              #0: {1-й символ расширенного кода}
                  case readkey of
                      #72: {Стрелка вверх} 
                           if ptr>1 then ptr:=ptr-1;
                      #80: {Стрелка вниз}
                           if ptr<MENU_ITEMS then ptr:=ptr+1;
                  end; {case 2}  
          end; {case 1}
      until false;
end; {menu function}

begin
    opened:=false;
    repeat
      case menu of
            1 : {Add}  if opened then addrecord(f);
            2 : {View} if opened then viewbase(f);
            3 : {Open} openfile(f,opened);
            4 : {Exit} begin
                           if opened then close(f);
                           halt;
                       end;
      end;
    until false;
end.
Код
unit bazaunit;
interface
const NORMCOLOR=$07;      {Цвет норм. текста}
Type rec= record          {Запись БД}
       towar: string[20]; {Название товара}
       price: real;       {Цена}
       num:word;          {Количество}
     end;
     frec= file of rec;   {Тип файла БД}
{Процедуры}
procedure openfile(var f:frec; var opened:boolean);
procedure addrecord(var f:frec);
procedure viewbase(var f:frec);

implementation
uses crt;
{Открытие файла БД}
procedure openfile(var f:frec; var opened:boolean);
var fname: string;
begin
   {Закрываем файл, если он открыт}
   If opened then begin
                      close(f);
                      opened:=false;
                  end;
                  
   {Ввод имени файла}
   textattr:=NORMCOLOR;
   clrscr;
   gotoxy(2,12); write('Введите имя файла:');
   gotoxy(2,14); readln(fname);
   {Открываем или создаем новый файл}
   assign(f,fname);
   {$I+}
   reset(f);
   {$I+}
   if ioresult<>0 then rewrite(f);
   opened:=true;
end;

{Добавление записи в конец. Файл должен быть открыт.}
procedure addrecord(var f:frec);
var r: rec;
    ch:char;
begin
    seek(f,filesize(f));
    textattr:=NORMCOLOR;
    repeat
        clrscr;
        gotoxy(30,8);  write('Input record:');
        gotoxy(30,10); write('Towar: ');readln(r.towar);
        gotoxy(30,12); write('Price: ');readln(r.price);
        gotoxy(30,14); write('Number: ');readln(r.num);
        write(f,r);
        gotoxy(30,16); write('Add one more record? (Y/N)');
        ch:=readkey;
    until (upcase(ch)<>'Y') and (ch<>#13);
end;

{Просмотр базы даных. Файл должен быть открыт.}
procedure viewbase(var f:frec);
var r:rec;
    ch:char;
    i:integer;
begin
    seek(f,0);
    n:=0;
    textattr:=NORMCOLOR;
    repeat
        clrscr;
        {Вывод 'шапки' таблицы}
        writeln('No     Towar           Price    Number');
        for i:=1 to 23 do begin {Вывод <=23 строк.}
        if eof(f) then begin
            write ('End of file. Press any key ...');
            readkey;
            exit;
        end;
        read(f,r);
        n:=n+1;
        writeln(n:5,' ',r.towar:20,' ',r.price:9:2,' ',r.num:5);
    end;
    write('press Esc to exit, other key to view next page');
  until readkey=#27;
end;
end. {unit}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.04.2013, 18:27
Ответы с готовыми решениями:

Пример простейшей базы данных. Меню кафе или ресторана
привет.я ищу пример простейшей базы данных.все что нужно там сделать это вбить...

Опишите запись с именем типа Baza, содержащую информацию для школьной базы данных
Здравствуйте всем! Огромная просьба помогите пожалуйста решить задачу....

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

Проектирование базы данных «Банк данных районного отдела милиции»
Приветствую) 8. Проектирование базы данных «Банк данных районного отдела...

Базы данных
Помогите пожалуйста!

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.04.2013, 18:27

базы данных
Помогите пожалуйста. Даже не представляют как делать. Плиз.

Базы данных
Я начинающий программист, поэтому с паскалем идёт туговато в отношении - как...

Записи и базы данных!
(1)Дано несколько арифметических выражений,содержащих знаки операций,дробные...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru