Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ] > Код на шару!
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Закрытая тема
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 30.10.2015, 20:30
username12 username12 вне форума
Прохожий
 
Регистрация: 11.10.2015
Сообщения: 8
Версия Delphi: delpphi 10
Репутация: 10
По умолчанию Программирование с использованием записей и файлов

В справочной автовокзала хранится расписание движения автобусов. Для каждого рейса указаны его номер, тип автобуса, пункт назначения, время отправления и прибытия. Вывести информацию о рейсах, которыми можно воспользоваться для прибытия в пункт назначения раньше заданного времени
Как реализовать задачу?

Код:
unit tema6;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Buttons, ExtCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Memo1: TMemo;
    Button1: TButton;
    Button3: TButton;
    Splitter1: TSplitter;
    Button5: TButton;
    BitBtn1: TBitBtn;
    SaveDialog1: TSaveDialog;
    Button2: TButton;
    OpenDialog1: TOpenDialog;
    Button4: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

 Type
  TStudent = record
    FIO: string[40];			// Поле ф.и.о.
    otc: array[1..3] of word;		// Поле массива оценок
    sball : extended; 			// Поле среднего балла
    end;

 Var
  Fz  : file of  Tstudent;		// Файл типа запись
  Ft  : TextFile;			// Текстовой файл
  Stud : array[1..100] of Tstudent;	// Массив записей
  nzap : integer;			// Номер записи
  FileNameZ, FileNameT : string; 	// Имя файла

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
   Edit1.Text:='';
   Edit2.Text:='';
   Edit3.Text:='';
   Edit4.Text:='';
   Memo1.Clear;
   Button1.Hide;		// Сделать невидимой кнопку "Ввести запись" 
    nzap:=0;
end;

procedure TForm1.Button1Click(Sender: TObject);	// Ввести новую запись
begin
    nzap:=nzap+1;
  with stud[nzap] do begin
           FIO:=Edit1.Text;
           otc[1]:=StrToInt(Edit2.Text);
           otc[2]:=StrToInt(Edit3.Text);
           otc[3]:=StrToInt(Edit4.Text);
           sball:=(otc[1]+otc[2]+otc[3])/3;
  Memo1.Lines.Add(fio+'  '+IntToStr(otc[1])+'  '+ IntToStr(otc[2])+'   '+IntToStr(otc[3]));
                                end;
     Write(fz,Stud[nzap]);					// Запись в файл
   Edit1.Text:='';
   Edit2.Text:='';
   Edit3.Text:='';
   Edit4.Text:='';
end;

procedure TForm1.Button2Click(Sender: TObject); // Создание нового файла записей
begin
   OpenDialog1.Title :='Создать новый файл'; 	// Изменение заголовка окна диалога
 if OpenDialog1.Execute then  // Выполнение стандартного диалога выбора имени файла
   begin
    FileNameZ:= OpenDialog1.FileName; // Возвращение имени дискового файла 
    AssignFile(Fz, FileNameZ);  // Связывание файловой переменной Fz c именем файла
     Rewrite(Fz);                         // Создание нового файла
   end;
    Button1.Show;                      // Сделать видимой кнопку "Ввести запись"
end;

procedure TForm1.Button3Click(Sender: TObject); // Открыть существующий файл
begin
 if OpenDialog1.Execute then  // Выполнение стандартного диалога выбора имени файла
   begin
    FileNameZ:= OpenDialog1.FileName; // Возвращение имени дискового файла 
    AssignFile(Fz, FileNameZ);    // Связывание файловой переменной Fz c именем файла
     Reset(Fz);                                // Открытие существующего файла
   end;
  while not eof(fz) do begin       
   nzap:=nzap+1;
     Read(fz,stud[nzap]);                // Чтение записи из файла
         with stud[nzap] do
     Memo1.Lines.Add(fio+'  '+IntToStr(otc[1])+'  '+IntToStr(otc[2])+'   '+IntToStr(otc[3]));
                                 end;
     Button1.Show;                        // Сделать видимой кнопку "Ввести запись"
end;

procedure TForm1.Button4Click(Sender: TObject);  // Сортировка записей
 var i,j :  word;
       st : TStudent;
begin
 for i:=1 to nzap-1 do                   // Сортировка массива записей
  for j:=i+1 to nzap do
   if Stud[i].sball < Stud[j].sball then begin
          st:=Stud[i];
         Stud[i]:=Stud[j];
         Stud[j]:=st;
                                                         end;
      Memo1.Clear;
  for i:=1 to nzap do                    // Вывод в окно Memo1 отсортированных записей
          with stud[i] do
     Memo1.Lines.Add(IntToStr(i)+'  '+fio+'  '+FloatToStrf(sball,fffixed,4,2));
end;

procedure TForm1.Button5Click(Sender: TObject); // Сохранение результатов сортировки 							      // в текстовом файле
var i:word;
begin
  if SaveDialog1.Execute then  // Выполнение стандартного диалога выбора имени файла
    begin
   FileNameT:= SaveDialog1.FileName; // Возвращение имени дискового файла
    AssignFile(Ft, FileNameT);     // Связывание файловой переменной Ft c именем файла
      Rewrite(Ft);                           // Открытие нового текстового файла
    end;
  for i:=1 to nzap do
         with stud[i] do  Writeln(Ft,i:4,'. ',fio,sball:8:2);   // Запись в текстовой файл
  CloseFile(Ft);                             // Закрытие текстового файла
end;

procedure TForm1.BitBtn1Click(Sender: TObject);  
begin                              
 CloseFile(fz);       // Закрытие файла записей при нажатии на кнопку ”Сlose”
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 CloseFile(fz);      // Закрытие файла записей при нажатии на кнопку  
end;

end.

Последний раз редактировалось Admin, 30.10.2015 в 20:32.
  #2  
Старый 30.10.2015, 20:35
Аватар для Admin
Admin Admin вне форума
Администратор
 
Регистрация: 03.10.2005
Адрес: Россия, Москва
Сообщения: 1,564
Версия Delphi: Delphi 7
Репутация: выкл
По умолчанию

Цитата:
Сообщение от username12
...
Читаем правила форума по созданию тем!
Цитата:
Так же настоятельно советуем избегать излишнего использования ЗАГЛАВНЫХ букв.
http://www.delphisources.ru/pages/forum_rules.html
  #3  
Старый 30.10.2015, 21:23
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

А можно поинтересоваться, что это за код и какое отношение он имеет к приведенной задаче?

По задача, для поиска надо делать так:
Код:
type
  TScheduleItem = record
    BusNo : String[10];
    BusType : String[100];
    Destination : String[100];
    DepartureTime : TDateTime;
    ArrivalTime : TDateTime;
  end;

var
  F : File Of TScheduleItem;
  Item : TScheduleItem;
  TimeNeedToBe : TDateTime;
  PlaceNeedToBe : String;
  Msg : String;
begin
  // Когда и куда должны прибыть
  TimeNeedToBe := DateTimePicker1.Time;
  PlaceNeedToBe := Edit1.Text;

  AssignFile(F,'schedule.dat');
  Reset(F);

  While Not Eof(F) Do
    Begin
      Read(F,Item);
      If (AnsiCompareText(PlaceNeedToBe,Item.Destination) = 0) And
         (TimeOf(TimeNeedToBe) < TimeOf(Item.ArrivalTime) Then
        Begin
          // Нашли подходящий рейс.
         Msg := Format('Подходящий автобус:'#13#10'Номер:%s'#13#10'Отправление:%s'#13#10'Прибытие:%s',[Item.BusNo,TimeToStr(Item.DepartureTime),TimeToStr(Item.ArrivalTime)]);
         ShowMessage(Msg);
        End;
    End;

  CloseFile(F);
Закрытая тема


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 23:01.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter