IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Система по продаже билетов., Не получается организовать ввод в БД.
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 3
Пол: Мужской

Репутация: -  0  +


Привет всем! Помогите пожалуйста сделать так, что бы при выборе пункта "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;

TFReys = file of TReys;


procedure VvodR (var R:TReys);
begin
write('Nomer reysa: '); readln(R.NR);
write('Punkt otpravlenija: '); readln(R.PO);
write('Date otpravlenija: '); readln(R.DateO);
write('Vremja otpravlenija: '); readln(R.TimeO);
write('Punkt pribitija: '); readln(R.PP);
write('Date pribitija: '); readln(R.DateP);
write('Vremja pribitija: '); readln(R.TimeP);
write('Kolichestvo mest (biletov): '); readln(R.KolM);
write('Cena bileta: '); readln(R.CenaB);
end;

procedure RReys;
var F:TFReys;
R:TReys;

begin
assign(F,'Reys.dat');
{$I-}
Reset(F);
if IOResult<>0 then
Rewrite(F);
{$I+}
VvodR®;
Seek(F,FileSize(F));
write(F,R);
Close(F);
end;


Прикрепленные файлы
Прикрепленный файл  programma.PAS ( 996 байт ) Кол-во скачиваний: 277
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2





Группа: Пользователи
Сообщений: 1
Пол: Мужской

Репутация: -  0  +


Цитата
реализации меню уже выкладывались на форуме

не нашел я их.
просто не понятно как в моем случае организовать твою идею с меню...


Цитата
ту минимальную информацию, что ты выводишь на экран сейчас

а что значит "сейчас"?

P. S. Сорри, под другим ником зашел - от старого пароль забыл!

Сообщение отредактировано: alpha -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






Цитата(alpha @ 1.05.2006 16:00)
а что значит "сейчас"?
А то, что у тебя делается здесь:
  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);

gotoxy(10, winstartY + i);
write('':2, arr^[Pred(scrolled + i)]:30, '':2);
end;
end;
procedure Show;
begin
selection := true;
refresh;
end;
procedure Hide;
begin
selection := false;
refresh;
end;


begin
scrolled := 0; currMenu := 1;
show;

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.

Это - только набросок, его можно еще улучшать и улучшать. Приведен только для примера...

Но сначала я бы рекомендовал тебе ничего не изменяя прогнать именно эту программку...
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 3.05.2024 21:25
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name