|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Программирование с использованием записей и файлов
В справочной автовокзала хранится расписание движения автобусов. Для каждого рейса указаны его номер, тип автобуса, пункт назначения, время отправления и прибытия. Вывести информацию о рейсах, которыми можно воспользоваться для прибытия в пункт назначения раньше заданного времени
Как реализовать задачу? Код:
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
|
||||
|
||||
Цитата:
Цитата:
|
#3
|
|||
|
|||
А можно поинтересоваться, что это за код и какое отношение он имеет к приведенной задаче?
По задача, для поиска надо делать так: Код:
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); |