1. Заголовок темы должен быть информативным. В противном случае тема удаляется ... 2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения. 3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали! 4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора). 5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM! 6. Одна тема - один вопрос (задача) 7.Проверяйте программы перед тем, как разместить их на форуме!!! 8.Спрашивайте и отвечайте четко и по существу!!!
Система по продаже билетов., Не получается организовать ввод в БД.
Привет всем! Помогите пожалуйста сделать так, что бы при выборе пункта "ENTER INFO TO DB" (см. прикрепленный файл) можно было вводить информацию о рейсах в базу данных. В прикрепленном файле меню создавалось при помощи Turbo Professional. Назначение программы - продажа билетов на самолеты.
Заранее благодарен.
Вот, что у меня имеется:
type TReys = record NR:integer; PO,PP:string[30]; DateO,DateP:string[10]; TimeO,TimeP:string[5]; KolM:byte; CenaB:string[7]; end;
while not Eof(F) do begin read(F, R); Writeln(R.NR: 10, R.PP: 20); { <--- Вот это - краткая информация, так? } end;
Вот тебе работающий набросок меню:
uses crt;
type TStr = string[30]; PStrArray = ^TStrArray; TStrArray = array[0 .. pred(maxint div sizeof(TStr))] of TStr;
var menuArr: PStrArray;
const { здесь используй переменную, хранящую количество записей в файле } SizeOfFile = 50;
{ Меню будет отображаться между 5-ой и 20-ой строками экрана } WinStartY = 5; WinFinishY = 20;
function IntToStr(n: integer): string; var S: string[11]; begin Str(n, S); IntToStr := S; end;
function min(A, B: integer): integer; begin min := A; if B < a then min := B; end;
function menu(arr: PStrArray): integer; var scrolled, currMenu: integer; ch: char;
selection: boolean;
procedure Refresh; var i: integer; begin for i := 1 to min(WinFinishY - WinStartY, SizeOfFile) do begin if selection then if i = currmenu then textbackground(red) else textbackground(black) else textbackground(black);
repeat ch := readkey; case ch of #0: case readkey of #72: { up } begin Hide; if currMenu > 1 then dec(currMenu) else if scrolled > 0 then dec(scrolled); Show; end; #80: { dn } begin Hide; if currmenu < WinFinishY - WinStartY then inc(currMenu) else if currmenu + scrolled < sizeoffile then inc(scrolled); Show; end; end; #13: ; end; until ch = #13; menu := pred(currMenu + scrolled); end;
var i, m: integer;
begin GetMem(menuArr, sizeoffile * sizeof(tstr));
{ Вместо след. цикла можешь проходить по файлу, читать данные и формировать из них краткое описание (до 30 символов длиной) } for i := 0 to pred(sizeoffile) do begin menuArr^[i] := 'string #' + inttostr(i + 1); end;
m := menu(menuArr); gotoxy(1, 23);
{ Ну, а здесь - соответсвенно "лезешь" в файл данных через Seek(f, m), читаешь полную информацию и отображаешь там, где тебе удобно } writeln('show the record #', m:2, ' data');
FreeMem(menuArr, sizeoffile * sizeof(tstr)); end.
Это - только набросок, его можно еще улучшать и улучшать. Приведен только для примера...
Но сначала я бы рекомендовал тебе ничего не изменяя прогнать именно эту программку...