Модераторы: volvo877, Snowy, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите пожалуйста доделать программу, Не получается(( 
:(
    Опции темы
Clockgen
Дата 31.3.2009, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 16.12.2008

Репутация: нет
Всего: нет



У меня есть код программы которая отражает 2 базы данных Товаров и Заказчиков,в главном меню есть форма заказа,чтобы выбрать данный пункт необходимо нажать F,затем оформить заказ,вот в чем дело,я не знаю как сделать так,чтобы в меню товаров когда просматриваешь записи,о товарах,пользователь нажал кнопку добавления товара А и ввел его код товара,представленного в таблице товаров,стерся экран и написал сообщение "Товар добавлен",и за этим сообщением чтобы,сформировался нормальный документ с отображением всех характеристик товара,с отображением кода товара введенного пользователем, представленными в пункте форма заказа. 

Вообщем просмотрите пожалуйста программу,и помогите что-нибудь сделать,я покажу где конкретно,не получается отобразить поля при формировании документа:
Код

Program Triangle;                
Uses Crt,Printer;                             

Const    NameLenght = 20;
         DFName = 'DATA.db';                 
         Zakaz = 'Zakaz.db';

Type     NameType = String[NameLenght];

         Date = record
                 Day   : 1..31;
                 Month : 1..12;
                 Year  : 2000..2100;
                end;

         Naim=record
                 Kod_tov    : NameType;
                 Tov,Model : String[20];
                 Data       : Date;
                 Skid       : Char;
                 Cena       : Real;
                 Proizv     : String[10];
                 Kol        : Integer;
                 { Add more if necessary }
                end;

Var F        : File of Naim;      { Global variables }
    Filename : String[50];                 { File name }
    Option   : Char;                { Main menu option }
    Opened   : Boolean;            { True if file open }

{***************************************************************}
procedure tov;
begin
if opened=true then
     close(f);
     Opened := True;
   Assign (F,DFName);
   FileName := DFName;
   {$I-} Reset(F); {$I+}       { Attempt to open default file }
     ClrScr;
     TextColor(blue);
     GoToXY(10,10); Write('Товары');
     {GoToXY(32,6);  Write('O-Открыть файл');}
     GoToXY(6,12);  Write('A-Добавить запись');
     GoToXY(6,14); Write('U-Редактирование');
     GoToXY(6,16); Write('D-Удаление записи');
     GoToXY(6,18); Write('S-Показать список');
     {GoToXY(32,16); Write('P-Печать списка');
     GoToXY(32,18); Write('Q-Выход');}
     textcolor(yellow);
     gotoxy(35,10); write('Заказчики');
     gotoxy(60,10); write('Форма заказа');
     GoToXY(31,12);  Write('A-Добавить запись');
     GoToXY(31,14); Write('U-Редактирование');
     GoToXY(31,16); Write('D-Удаление записи');
     GoToXY(31,18); Write('S-Показать список');
     Gotoxy(58,12); write('A-Оформить заказ');
GoToXY(28,21); Write('Выбрана категория "Товары"');
end;

procedure zak;
begin
     if opened=true then
     close(f);
     Opened := True;
   Assign (F,DFName);
   FileName := DFName;
   {$I-} Reset(F); {$I+}       { Attempt to open default file }
     ClrScr;
     TextColor(blue);
     gotoxy(35,10); write('Заказчики');
     GoToXY(31,12);  Write('A-Добавить запись');
     GoToXY(31,14); Write('U-Редактирование');
     GoToXY(31,16); Write('D-Удаление записи');
     GoToXY(31,18); Write('S-Показать список');
     {GoToXY(32,16); Write('P-Печать списка');
     GoToXY(32,18); Write('Q-Выход');}
     textcolor(yellow);
     gotoxy(60,10); write('Форма заказа');
     Gotoxy(58,12); write('A-Оформить заказ');
     GoToXY(10,10); Write('Товары');
     {GoToXY(32,6);  Write('O-Открыть файл');}
     GoToXY(6,12);  Write('A-Добавить запись');
     GoToXY(6,14); Write('U-Редактирование');
     GoToXY(6,16); Write('D-Удаление записи');
     GoToXY(6,18); Write('S-Показать список');
GoToXY(28,21); Write('Выбрана категория "Заказчики"');
end;



{-------------------------------Главное меню}

Procedure DispMenu;      { Displays the main menu }
Begin
     TextBackground(Black);
     ClrScr;
     TextColor(Yellow);
     GoToXY(10,10); Write('Товары');
     gotoxy(35,10); write('Заказчики');
     gotoxy(60,10); write('Форма заказа');
     {GoToXY(32,6);  Write('O-Открыть файл');}
     GoToXY(6,12);  Write('A-Добавить запись');
     GoToXY(6,14); Write('U-Редактирование');
     GoToXY(6,16); Write('D-Удаление записи');
     GoToXY(6,18); Write('S-Показать список');
     GoToXY(31,12);  Write('A-Добавить запись');
     GoToXY(31,14); Write('U-Редактирование');
     GoToXY(31,16); Write('D-Удаление записи');
     GoToXY(31,18); Write('S-Показать список');
     Gotoxy(58,12); write('A-Оформить заказ');
     {GoToXY(32,16); Write('P-Печать списка');
     GoToXY(32,18); Write('Q-Выход');}
     TextColor(white);
     GoToXY(13,21); Write('Выберите категорию:T-Товары,Z-Заказчики,E-Форма заказа');
End{DispMenu};

{***************************************************************}

Procedure Warning;
Begin
  ClrScr;
  GoToXY(0,10);
  Write('Вы не выбрали категорию! Необходимо выбрать пункт.Нажмите Ввод');
  ReadLn
End;

{***************************************************************}

Procedure DispPerson(p:Naim);  { Displays the record p }
Begin
   With p do begin
      GoToXY(3,3); Write('Наименование: ',Tov);
      GoToXY(3,4);
      With Data do
        Write('Дата_прих: ',Day,'/',Month,'/',Year);
      GoToXY(3,5); Write('Скидка:  ',Skid);
      GoToXY(32,3);Write('Модель: ',Model);
      GoToXY(32,4);Write('Цена,руб:  ',Cena:0:0);
      GoToXY(32,5);Write('Производит:   ',Proizv);
      GoToXY(60,3);Write('Код_товара: ',Kod_tov);
   end{with};
End{DispPerson};

{***************************************************************}

Procedure ReadPerson(Var p:Naim); { Reading fields of p }
Begin
  With p do begin
     ClrScr;
     GoToXY(10,5); Write('Введите наименование товара: ');ReadLn(Tov);
     GoToXY(10,7); Write('Введите модель товара: ');ReadLn(Model);
     GoToXY(10,9); Write('Введите ДЕНЬ прихода товара: ');ReadLn(Data.day);
     GoToXY(10,11);Write('Введите МЕСЯЦ прихода товара: ');ReadLn(Data.month);
     GoToXY(10,13);Write('Введите ГОД прихода товара: ');ReadLn(Data.year);
     Repeat
       GoToXY(10,15); Write('Скидка(Y/N): ');
       Skid := UpCase(ReadKey); Write(Skid)
     Until Skid in ['Y','N'];
     GoToXY(10,17);Write('Введите стоимость,p: ');ReadLn(Cena);
     GoToXY(10,19);Write('Введите код товара: ');ReadLn(Kod_tov);
     GoToXY(10,21);Write('Введите страну производителя: ');ReadLn(Proizv);
  end{with}
End{ReadPerson};

{***************************************************************}

Procedure Surname_Search(Surn:String; Var Posi:Integer; Var Foundit:Boolean);
{ Sequential search for the surname Surn in F starting from the position
  Posi. If found, Foundit is true and position in Posi. Otherwise Foundit
  is false. }
Var Per:Naim;
Begin
   FoundIt := false;
   While (Posi+1<=FileSize(F)) and not FoundIt do begin
      Seek(F,Posi); Read(F,Per);
      FoundIt:=(Per.kod_tov=Surn);
      If not FoundIt then Inc(Posi)
   end{While}
End;

{***************************************************************}

Procedure By_screen;
Begin
   ClrScr;
   GoToXY(36,12); Write('До свидания !');
   Delay(50000);
   Delay(50000);
   { Any other show here }
End;

{********************* Main menu procedures *********************}

Procedure Add; { Adds a new record to F }
Var p:Naim;
Begin
   If not Opened then Warning
   Else begin
      ReadPerson(p); { Reads record to p (to RAM) }
      Seek(F,FileSize(F));
      Write(F,p);
      GoToXY(10,3);
      Write('На данный момент имеется ',FileSize(F),' записи в файле ',Filename);
      ReadLn;
      DispMenu;
  end{if}
End{Add};

{*****************************************************************}

Procedure Update;            { Interactive Editing }
  Var Position:Integer; p:Naim; Option:char;

  Procedure UpdateMenu; { Local Update menu }
  Begin
     TextColor(white);
     GoToXY(32,8);  Write('N-Следующая запись');
     GoToXY(32,10); Write('P-редыдущая запись');
     GoToXY(32,12); Write('T-Первая запись');
     GoToXY(32,14); Write('B-Последняя запись');
     GoToXY(32,16); Write('S-Поиск записей');
     GoToXY(32,18); Write('E-Редактировать запись');
     GoToXY(32,20); Write('M-Главное меню');
     TextColor(green);
     GoToXY(32,23); Write('Нажмите букву пункта для выбора');
  End;

  Procedure Editing; { Local procedure }
   Var d:Char;

   Procedure EditMenu;
   Begin
     TextColor(white);
     GoToXY(32,8);  Write('N-Наименование');
     GoToXY(32,10); Write('M-Модель');
     GoToXY(32,12); Write('B-Дата_прих');
     GoToXY(32,14); Write('X-Скидка');
     GoToXY(32,16); Write('R-Цена,p');
     GoToXY(32,18); Write('I-Код товара');
     GoToXY(32,20); Write('P-Производитель');
     GoToXY(32,22); Write('U-Меню редактирования');
     TextColor(green);
     GoToXY(32,25); Write('Нажмите букву пункта для выбора');
   End;

  Begin
    Repeat
       ClrScr;
       GoToXY(3,1);Write('Редатированный номер записи ',Position);
       DispPerson(p);
       EditMenu;
       Repeat
          d:=UpCase(ReadKey)
       Until d in ['N','M','B','X','R','I','P','U'];
       With p do
         Case d of
         'N':begin
              GoToXY(1,27); Write('Введите новое наименование товара: ');
              ReadLn(Tov)
             end;
         'M':begin
              GoToXY(1,27); Write('Введите новую модель: ');
              ReadLn(Model)
             end;
         'B':begin
              GoToXY(1,27); Write('Введите ДЕНЬ прихода: ');
              ReadLn(Data.day);
              GoToXY(1,27); ClrEol; Write('Введите МЕСЯЦ прихода: ');
              ReadLn(Data.month);
              GoToXY(1,27); ClrEol; Write('Введите ГОД прихода: ');
              ReadLn(Data.Year);
             end;
         'X':Repeat
              GoToXY(1,27); Write('Скидка(Д/Н): ');
              Skid := UpCase(ReadKey); Write(Skid)
             Until Skid in ['д','н'];
         'R':begin
              GoToXY(1,27); Write('Введите новую цену,p: ');
              ReadLn(Cena)
             end;
         'I':begin
              GoToXY(1,27); Write('Введите код товара: ');
              ReadLn(Kod_tov)
             end;
         'P':begin
              GoToXY(1,27); Write('Введите страну-производитель: ');
              ReadLn(Proizv)
             end;
         end{case}
      Until d='U';
      Seek(F,Position); Write(F,p);   { Updating in F }
  End{Editing};


  Procedure Searching;                                                        {сначала производится поиск товара в меню Update-Search-код товара-Yes}
  Var SN:String; Pos:Integer; Found:Boolean;
      sp,q:Naim; c:Char;K,L,R,S:String;
  Begin
   c:='C'; Pos:=0; ClrScr; GoToXY(5,5);
   Write('Введите Код товара для поиска: ');
   ReadLn(SN);
   Repeat
      Surname_Search(SN,Pos,Found); { Searching in F for SN }
      If found then begin
         Seek(F,Pos); Read(F,sp); ClrScr;
         DispPerson(sp); GoToXY(10,23);
         Write('Вы это искали? (Y)Dа (G>родолжить (X)Bыход');
         Repeat c:=UpCase(ReadKey) until c in ['Y','G','Q'];
         If c='Y' then begin Position:=Pos; p:=sp end;
         Inc(Pos);
         write(F,q);
      end{if found};
   Until(c in ['Y','Q']) or not found;
   If not found then begin
         GoToXY(10,23);
         Write('Больше нет записей с кодом ',SN,' Нажмите ввод для продолжения');
         ReadLn;
   DispMenu;
   end{if}
  End{Searching};

Begin{body of Update}
   If not Opened then Warning
   Else begin
      ClrScr; Position:=0;
      Read(F,p);
      Repeat
         ClrScr;
         GoToXY(3,1);Write('Номер записи ',Position);
         DispPerson(p);
         UpdateMenu;
         Repeat Option:=UpCase(ReadKey) Until Option in ['N','P','T','B','S','E','M'];
         Case option of
        'N':If Position=Filesize(F)-1 then begin
                ClrScr;GoToXY(10,10);
                Write('Больше нет записей. Нажмите ввод.');
                ReadLn;
              DispMenu;
              end
            Else begin
                Inc(Position);
                Seek(F,Position);
                Read(F,p);
            end;
        'P':If Position=0 then begin
                ClrScr;GoToXY(10,10);
                Write('Нет записей!');
                ReadLn
               end
            Else begin
                Dec(Position);
                Seek(F,Position);
                Read(F,p);
            end;
        'T':begin
               Position:=0;
               Seek(F,Position);
               Read(F,p);
              end;
        'B':begin
               Position:=FileSize(F)-1;
               Seek(F,Position);
               Read(F,p);
             end;
        'S':Searching;
        'E':Editing;
        end{case}
      Until Option='M';
      DispMenu;
   end{if}
End;

{*****************************************************************}

Procedure Delete;
Var SN:String; Pos:Integer; Found:Boolean;
    sp:Naim; c:Char;
Begin
  If not Opened then Warning
  Else begin
     ClrScr; GoToXY(5,5); Pos:=0; c:=' ';
     Write ('Введите код товара для удаления: '); Readln (SN);
     Repeat
        Surname_Search (SN, Pos, Found); {Searching in F for Sn}
        If found then begin
           Seek (F,Pos); Read (F,sp); ClrScr;
           DispPerson (sp); GoToXY(2,22);
           Write ('Это запись, которую нужно удалить?',
                  '    (Y)а  (G)родолжить  (Q)ыход');
           Repeat c:=Upcase(Readkey) until c in ['Y','G','Q'];
           If c='Q' then Inc(Pos);
        end;
     Until (c in ['Y','Q']) or not Found or (Pos>FileSize(F)-1);

     If c='Y' then begin                     { Deleting }
        Seek(F,FileSize(F)-1);    { Reading last record }
        Read(F,sp);
        Seek(F,Pos);    { Overwrite current by last one }
        Write(F,sp);
        Seek(F,FileSize(F)-1);
        Truncate(F);             { Truncate last record }
        GoToXY(2,22); ClrEol;
        Write ('Запись была удалена.Сейчас имеется ',
               FileSize(F),' записей в ', Filename, '.  Нажмите ввод');
        readln;
        DispMenu;
     end {if} ;

     If not (c in ['Y','Q']) then begin
        GoToXY(10,12);
        Write ('Больше нет записей с кодом ', SN,
               '.Нажмите ввод для продолжения');
        ReadLn;
        DispMenu;
     end {if} ;
  end{if};
End{Delete};

{*****************************************************************}

Procedure Show;              { Displays list of records }
Var p:Naim;Max,i,First,Last,Line:Integer; c:Char;
  Var SN,T:String; Pos:Integer; Found:Boolean;
  sp,q:Naim;
Begin
   If not Opened then Warning
   Else begin
     ClrScr;
     Max:=Filesize(F);
     First:=1;
     WriteLn(' No Наименован    Модель        Дата прих  Скидка Код товара  Цена,p   Производ');
     For i:=1 to 77 do Write('=');WriteLn;
     Line:=3;
     For i:=First to Max do begin
          Seek(F,i-1);
          Read(F,p);
          With p do begin
            Write(i:3,' ');
            Write(Tov);
            GoToXY(19,Line);
            Write(Model);
            GoToXY(30,Line);
            With Data do
               Write(Day:5,'.',Month:2,'.',Year:4,' ');
            If UpCase(Skid)='y' then Write('Да')
                               else Write('Нет  ');
            GoToXY(51,Line);
            Write(Kod_tov:5);
            GoToXY(59,Line);
            Write(Cena:8:0,'  ');
            GoToXY(67,Line);
            WriteLn(Proizv:11);
          end{with};
          Inc(Line);
          If(i mod 20)=0 then begin
            WriteLn('Нажмите ввод для продолжения');
            ReadLn;
            Line:=1;
          End;
     end{for};
     WriteLn;
     Write('Нажмите A чтобы добавить товар в заказ или нажмите ввод для продолжения');
     with q do
     begin
     Repeat Option:=UpCase(ReadKey) Until Option in ['A'];
     {Case option of
     'A': ;
         gotoxy(30,20);
      writeln('Товар добавлен в заказ');
   Until(c in ['Y','Q']) or not found;
   end;}
   end;
     Readln;
     DispMenu;
     Seek(F,0);
end;
END;

{Procedure ResPerson(p:Naim);
var T:string;
Begin with p do
begin
         GoToXY(25,5); Writeln(tov);  }
{      GoToXY(3,4);
      With Data do
        Write('Дата_прих: ',Day,'/',Month,'/',Year);
      GoToXY(3,5); Write('Скидка:  ',Skid);
      GoToXY(32,3);Write('Модель: ',Model);
      GoToXY(32,4);Write('Цена,руб:  ',Cena:0:0);
      GoToXY(32,5);Write('Производит:   ',Proizv);}
    {  GoToXY(30,7);Write(Kod_tov);
end;
END;}

procedure form;
var i,j,Max,First:integer;p,sp,q,l:Naim;T:String;
begin
     if opened=true then
     close(f);
     Opened := True;
   Assign (F,DFName);
   FileName := DFName;
   {$I-} Reset(F); {$I+}       { Attempt to open default file }
     ClrScr;
     Max:=Filesize(F);
First:=1;
     TextColor(blue);
     gotoxy(60,10); write('Форма заказа');
     Gotoxy(58,12); write('A-Оформить заказ');
     {GoToXY(32,16); Write('P-Печать списка');
     GoToXY(32,18); Write('Q-Выход');}
     textcolor(14);gotoXY(10,10); Write('Товары');
     gotoxy(35,10); write('Заказчики');
     {GoToXY(32,6);  Write('O-Открыть файл');}
     GoToXY(31,12);  Write('A-Добавить запись');
     GoToXY(31,14); Write('U-Редактирование');
     GoToXY(31,16); Write('D-Удаление записи');
     GoToXY(31,18); Write('S-Показать список');
     GoToXY(6,12);  Write('A-Добавить запись');
     GoToXY(6,14); Write('U-Редактирование');
     GoToXY(6,16); Write('D-Удаление записи');
     GoToXY(6,18); Write('S-Показать список');
GoToXY(28,21); Write('Выбрана категория "Форма заказа"');
 Repeat Option:=UpCase(ReadKey) Until Option in ['A'];
 Case option of
 'A': begin
 clrscr;
 gotoxy(30,2);
 textcolor(14);
 writeln('Документ на оплату');
 textcolor(14);
 for i:=17 to 60 do
 begin
 gotoxy(i,4);
 write('-');
 gotoxy(i,46);
 write('-');
 end;
 for j:=5 to 45 do
 begin
 gotoxy(17,j);
 write('|');
  gotoxy(60,j);
 write('|');
 end;
 gotoxy(18,5);
 writeln('Товар:');
 read(f,l);                                         {Проблема сдесь,т.к. после проделывания пути нажмите T->U->S->123-или код товара
                                                           ->Y->U->M->F->A-а потом если добавить товар по другому коду,то будет один и тот же товар,
                                                          вся проблема в процедуре Searching там файл был p,здесь как видно l-файл,может это поможет}
 with l do
 begin
 gotoxy(25,5);
 write(tov);
 end;
 gotoxy(18,7);
 writeln('Код товара:');
 gotoxy(18,9);
 writeln('Стоимость,р:');
 gotoxy(18,11);
 writeln('Количество:');
 With sp do
 begin
 gotoxy(18,13);
 Write('Введите количество,шт: ');
 ReadLn(Kol);
 gotoxy(18,13);
 Write('                          ');
 gotoxy(30,11);
 write(Kol);
 gotoxy(18,13);
 write('Скидка:');
 gotoxy(18,15);
 writeln('Введите скидку для клиента:');
 gotoxy(46,15);
 Skid := UpCase(ReadKey); Write(Skid);
 If UpCase(Skid)='Y' then
 begin
 gotoxy(18,15);
 writeln('                              ');
 gotoxy(26,13);
 Write('Да')
 end
 else
 begin
 gotoxy(18,15);
 writeln('                              ');
 gotoxy(26,13);
 Write('Нет');
 end;
 end;
 readkey;
 DispMenu;
 end;
end;
end;

{*****************************************************************}

Begin
   DispMenu;
   Repeat                                         { MAIN LOOP }                      { Displays the main menu }
      Repeat                        { Reading the menu option }
          Option:=UpCase(ReadKey)
      Until Option in ['A','U','D','S','Q','T','Z','F'];
      TextColor(Green);
      Case Option of
      'A': Add;
      'U': Update;
      'D': Delete;
      'S': Show;
      'Q': By_screen;
      'T': tov;
      'Z': zak;
      'F': form;
      End{case}
   Until Option = 'Q';
End.



Присоединённый файл ( Кол-во скачиваний: 2 )
Присоединённый файл  Data.rar 4,65 Kb
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

Запрещается!

1. Обсуждать и делится взломанными компонентами или программным обеспечением

2. Публиковать ссылки на варез

3. Оффтопить

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »


 




[ Время генерации скрипта: 0.1078 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.