|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Есть готовый код, нужны пояснения
Есть лабораторная работа с заданием:
У администратора железнодорожных касс хранится информация о свободных местах в поездах дальнего следования на ближайшую неделю в следующем виде: дата выезда, пункт назначения, время отправления, число свободных мест. Оргкомитет международной конференции обращается к администратору с просьбой зарезервировать m мест до города N на k-й день недели с временем отправления поезда не позднее t часов вечера. Вывести время отправления или сообщение о невозможности выполнить заказ в полном объеме. Есть код: Код:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Buttons, StdCtrls, XPMan; type TForm1 = class(TForm) XPManifest1: TXPManifest; OpenDialog1: TOpenDialog; SaveDialog1: TSaveDialog; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Edit4: TEdit; Button1: TButton; Memo1: TMemo; Button2: TButton; Button3: TButton; Button5: TButton; BitBtn1: TBitBtn; Button4: TButton; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure BitBtn1Click(Sender: TObject); procedure Button4Click(Sender: TObject); private { Private declarations } public { Public declarations } end; Type TPoezda = record data,punkt,time,mesta: string[40]; //поля дата,пункт,время,кол-во мест end; Var Fz : file of TPoezda; //файл типа запись Ft:TextFile; //текстовый файл Poezd:array[1..100] of TPoezda;//массив записей 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 poezd[nzap] do begin data:=Edit1.Text; punkt:=Edit2.Text; time:=Edit3.Text; mesta:=Edit4.Text; Memo1.Lines.Add(data+' '+punkt+' '+time+' '+mesta); end; Write(fz,Poezd[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 с именем файла Rewrite(Fz); //создание нового файла Button1.Show; end; end; procedure TForm1.Button3Click(Sender: TObject); Var data,punkt,time,mesta: string; begin if OpenDialog1.Execute then begin FileNameZ:= OpenDialog1.FileName; AssignFile(Fz, FileNameZ); Reset(Fz); //открытие существ.файла end; while not EOF(fz) do begin nzap:=nzap+1; Read(fz,poezd[nzap]); //чтение записи файла with poezd[nzap] do Memo1.Lines.Add(data+' '+punkt+' '+time+' '+mesta); end; Button1.Show; end; procedure TForm1.Button4Click(Sender: TObject); var pz:Tpoezda; data,punkt,time,mesta,d,p,t,m: string; begin d:=InputBox('Ввод данных','Введите день недели',''); p:=InputBox('Ввод данных','Введите город',''); t:=InputBox('Ввод данных','Введите время',''); m:=InputBox('Ввод данных','Введите кол-во мест',''); nzap:=nzap+1; //Memo1.Clear; with poezd[nzap] do begin if d=data and p=punkt and t<=time and m<=mesta then Memo1.Lines.Add(d+' '+p+' '+t+' '+m) else Memo1.Lines.Add('Невозможно выполнить заказ в полном объёме') end; end; procedure TForm1.Button5Click(Sender: TObject); Var i:word; begin if SaveDialog1.Execute then begin FileNameT:=SaveDialog1.FileName; AssignFile(Ft,FileNameT); Rewrite(Ft); end; for i:=1 to nzap do with poezd[i] do Writeln(Ft,i:4,'.',data+' '+punkt+' '+time+' '+mesta); // Запись в текстовой файл CloseFile(Ft); end; procedure TForm1.BitBtn1Click(Sender: TObject); begin CloseFile(fz); end; end. Нужны пояснения для каждой кнопки и каждого эдита, если можно.. Как работать с программой и т.д. Краткий обзор для нуба Последний раз редактировалось Admin, 13.07.2015 в 21:14. |
#2
|
||||
|
||||
Цитата:
В лейблы на-русском вбиваете: Label1 - "Дата выезда:", распологаете его рядом с Edit1 Label2 - "Пункт назначения:", рядом с Edit2 Label3 - "Время отправления:", рядом с Edit3 Label4 - "Число свободных мест:", рядом с Edit4 из этих надписей сразу видно, в каком едите и какую инфу следует набирать при добавлении новой записи По кнопкам: Button1 - это добавление новой записи (её содержимое формируется на основе данных из едитов) к типизированному, на этот момент уже открытому файлу и поэтому, она изначально на форме не видна, чтобы небыло ошибки доступа к файлу Button2 - это создание нового файла, имя ему задаётся в диалоге и в конце на форме отображается первая кнопка, записи теперь добавить можно смело Button3 - это загрузка существующего на диске типизированного файла с данными, тоже имя задаётся через диалог, одновременно происходит отображение его содержимого в мемо, вероятно для наглядности, про видимость первой кнопки вы и сами возможно догадаетесь Button4 - это поиск подходящих под заданные условия записей, они вводятся последовательно, следуя подсказкам ввода данных. Кстати, сравнение может и не работать, поскольку не хватает кое-где парных скобок плюс несовпадение некоторых типов данных, в смысле должно быть так Код:
... if (d = data) and (p = punkt) and (StrToDateTime(t) <= StrToDateTime(time)) and (StrToInt(m) <= StrToInt(mesta)) ... Button5 - а это сохранение данных из типизированного файла в обычном, текстовом, имя ему задаётся в сейв-диалоге BitBtn1 - вот здесь наблюдается косяк, какбы закрывается открытый (может быть) основной файл-хранилище, а на самом деле это нужно делать ещё при добавлении новой записи, такой вот недоработок у предоставленного алгоритма детектируется, есть и другие (напр. типы данных в записях), но эти грабли лучше пропустить Как работать с программой: Запускаете, при исполнении задаёте новый файл, набиваете его данными и сохраняете на диске. При повторной загрузке в мемо отобразится список возможных вариантов, из них уже можно производить отбор подходящих под условия задачи, примерно так это всё и работает Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
Этот пользователь сказал Спасибо Alegun за это полезное сообщение: | ||
login (14.07.2015)
|
#3
|
||||
|
||||
Alegun, вах, шайтан!
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
Этот пользователь сказал Спасибо M.A.D.M.A.N. за это полезное сообщение: | ||
login (14.07.2015)
|