Новичок
Профиль
Группа: Участник
Сообщений: 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
|