Московский государственный Институт Радиотехники. Г. Москва Курсовая работа по програмированию на языке высокого уровня. Тема Автосалон. Студента факультета вмс, группы вв607 Станкевича Сергея Алексеевича Г. Москва,2008 Реферат
Скачать 318.5 Kb.
|
procedure NullZapros; - задаёт размер массива запросов равный нулю. Function GetN : integer; - возвращае размер массива запросов. procedure Insert_Zapros(Telefon,Marka,Sost :string; const Cena:integer; L:integer); - производит вставку данных о каком-либо запросе в массив запросов в позицию L. procedure Add_Zapros(const Telefon : string; const Marka : string; const Sost : string; const Cena : integer); - заполняявсеполя, добавляетодинэлементкмассивузапросов. function Get_Zapros(const i : integer) : string; - возвращает строку состоящую из полей i-ого элемента массива запросов в специальном формате. function Get_Marka(L : integer):string; - возвращает значение поля марки элемента массива запросов под номером L. function Get_Sost(L : integer):string; - возвращает значение поля технического состояния элемента массива запросов под номером L. function Get_Cena(L : integer):integer; - возвращает значение поля цены элемента массива запросов под номером L. Так же реализованн костуктор класса AvtoSalon2. 2.5 Определение структуры модуля для работы с файлом. В модуле для работы с типизированным файлом(GetFile.pas) определено два пользовательских типа – RecordCars и RecordZapros – типа запись и имеющие поля для хранения информации данных о машине и запросе соответственно. Также определено два пользовательских типа – FileCars и FileZapros – типа типизированный файл RecordCars и RecordZapros соответственно. Эти два типа предназначены для работы с файлами. Для работы с файлами были определены процедуры: procedure GetFileCars(var Mas : AvtoSalon; const FFF : string); - производитзаполнениемассивамашинизфайласименем FFF. procedure GetFileZapros(var Mas : AvtoSalon2; const FFF : string); - производит заполнение массива запросов с именем FFF. Экспериментальная часть 3.1 Инструкция для пользователя Для успешного использования программы достаточно обладать самыми основными навыками работы с компьютером и операционной системой Microsoft Windows. 3.2 Определение интерфейса класса-массива Разработанное приложение класс-массив При разработке интерфеса формы класс-массива было использованно: 14 текстовых полей и 10 кнопок группированных по элементам GroupBox. Для удобного вывода информации используется 2 таблицы StringGrid содержащие 5 колонок и изменяющееся (в ходе программы) количество строк. 3.3 Определение интерфейса класс-варианта Разработанное приложение класс-вариант При разработке интерфейса формы класс-варианта было использованно: 8 текстовых полей и 5 кнопок группированных по элементам GroupBox.Для удобного вывода информации используется 2 таблицы StringGrid, содержащие по 2 колонки и 5 строк. 3.4 Тестирование Тест №1 При вводе в поле размера массива некоректного значения – возникает модальное окно с предупреждением. Тест №2 Размер массива машин <---- 2 [создать] – выводится модальное окно с подтверждением создания массива. Тест№3 Создаём массив машин из 3 элементов и вводим в поля ввода (‘111’,’222’,’333’,’qqq’) [добавить запись] - выводится модальное окно с предупреждением. Тест№3 Создаём массив машин из 3 элементов и вводим в поля ввода (‘audi’,’1999’,’хорошее’,’156500’) [добавить запись] - в таблице вывода появляется строка Audi 1999 Хорошее 156500 Тест№4 Создаём массив машин из 3 элементов и вводим в поля ввода ‘audi’,’1999’,’хорошее’,’156500’,’3’) [добавить запись] - в таблице вывода на третей строке появляется запись Audi 1999 Хорошее 156500 Тест№5 Создаём массив машин из 3 элементов [Загрузить из файла] – таблица вывода заполняется данными из файла. Тест№6 Создаём массив машин из 3 элементов, а в поле выбора файла пишем (‘Prprpr.pas’)[Загрузить из файла] – выводится модальное окно с предупреждением. Тест№7 Создаём массив машин из 3 элементов [Загрузить из файла] [Отсортировать по году выпуска] – в таблице вывода появляется отсортированный список Вывод В ходе работы над данным курсовым проектом я довольно подробно изучил специфику ООП в среде Delphi. Так же мне было очень интересно познакомиться с процессом разработки многофункционального приложения на примере программы Автосалон. Я считаю, что владение ООП очень перспективная сфера деятельности, которая ещё будет развиваться всё дальше и дальше. Спасибо за внимание! Список используемой литературы Фаронов В.В: “Turbo Pascal 7.0 начальный курс” Лекции по программированию на ЯВУ за 1 курс. Анатолий Хомоненко, Владимир Гофман, Евгений Мещеряков, Владимир Никифоров: “Delphi7 наиболее полное руководство” в подлиннике. Приложения Модуль-форма класса-варианта unit Avtosalon; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, Grids, StdCtrls, Avtomobil, Pokupatel; type TForm1 = class(TForm) Bevel1: TBevel; Button1: TButton; GroupBox1: TGroupBox; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Edit4: TEdit; StringGrid1: TStringGrid; Button2: TButton; Bevel2: TBevel; Bevel4: TBevel; Bevel5: TBevel; Bevel6: TBevel; Button4: TButton; GroupBox2: TGroupBox; Edit5: TEdit; Edit6: TEdit; Edit7: TEdit; Edit8: TEdit; StringGrid2: TStringGrid; Button5: TButton; Button6: TButton; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Label7: TLabel; Label8: TLabel; procedure FormShow(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Edit1Change(Sender: TObject); procedure Edit2Change(Sender: TObject); procedure Edit3Change(Sender: TObject); procedure Edit4Change(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure Edit5Change(Sender: TObject); procedure Edit6Change(Sender: TObject); procedure Edit7Change(Sender: TObject); procedure Edit8Change(Sender: TObject); procedure Button6Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; Car : Avto; Zapros : Potrebitel; implementation {$R *.dfm} procedure TForm1.FormShow(Sender: TObject); begin StringGrid1.Rows[0].Strings[1] := 'Ìàøèíà'; StringGrid1.Rows[1].Strings[0] := 'Ìàðêà'; StringGrid1.Rows[2].Strings[0] := 'Ãîä âûïóñêà'; StringGrid1.Rows[3].Strings[0] := 'Ñîñòîÿíèå'; StringGrid1.Rows[4].Strings[0] := 'Öåíà'; StringGrid2.Rows[0].Strings[1] := 'Ïîêóïàòåëü'; StringGrid2.Rows[1].Strings[0] := 'Òåëåôîí'; StringGrid2.Rows[2].Strings[0] := 'Ìàðêà'; StringGrid2.Rows[3].Strings[0] := 'Ñîñòîÿíèå'; StringGrid2.Rows[4].Strings[0] := 'Öåíà'; end; procedure TForm1.Button1Click(Sender: TObject); begin Car := Avto.Create_Avto('Íå îïðåäåëåíî',0,'Íå îïðåäåëåíî',0); Edit1.Enabled := true; Edit2.Enabled := true; Edit3.Enabled := true; Edit4.Enabled := true; Edit1.Text := Car.PMarka; Edit2.Text := IntToStr(Car.PGod); Edit3.Text := Car.PSostoianie; Edit4.Text :=IntToStr(Car.PCena); StringGrid1.Rows[1].Strings[1] := Car.PMarka; StringGrid1.Rows[2].Strings[1] := IntToStr(Car.PGod); StringGrid1.Rows[3].Strings[1] := Car.PSostoianie; StringGrid1.Rows[4].Strings[1] := IntToStr(Car.PCena); Button2.Enabled := true; Button1.Enabled := false; end; procedure TForm1.Button2Click(Sender: TObject); begin Car.Destroy_Avto; Edit1.Enabled := false; Edit2.Enabled := false; Edit3.Enabled := false; Edit4.Enabled := false; Edit1.Text := 'Îáúåêò íå ñîçäàí'; Edit2.Text := 'Îáúåêò íå ñîçäàí'; Edit3.Text := 'Îáúåêò íå ñîçäàí'; Edit4.Text := 'Îáúåêò íå ñîçäàí'; StringGrid1.Rows[1].Strings[1] := ''; StringGrid1.Rows[2].Strings[1] := ''; StringGrid1.Rows[3].Strings[1] := ''; StringGrid1.Rows[4].Strings[1] := ''; Button1.Enabled := true; Button2.Enabled := false; end; procedure TForm1.Edit1Change(Sender: TObject); begin if Edit1.Text <> 'Îáúåêò íå ñîçäàí' then begin Car.PMarka := Edit1.Text; StringGrid1.Rows[1].Strings[1] := Car.PMarka; end; end; procedure TForm1.Edit2Change(Sender: TObject); var i,c:integer; begin val(Edit2.Text,i,c); if (c=0) then begin Car.PGod := i; StringGrid1.Rows[2].Strings[1] := Edit2.Text; end; end; procedure TForm1.Edit3Change(Sender: TObject); begin if Edit1.Text <> 'Îáúåêò íå ñîçäàí' then begin Car.PSostoianie := Edit3.Text; StringGrid1.Rows[3].Strings[1] := Car.PSostoianie; end; end; procedure TForm1.Edit4Change(Sender: TObject); var i,c:integer; begin val(Edit4.Text,i,c); if (c=0) then begin Car.PCena := i; StringGrid1.Rows[4].Strings[1] := Edit4.Text; end; end; procedure TForm1.Button4Click(Sender: TObject); begin Zapros := Potrebitel.Create_Potrebitel('Íå îïðåäåëåíî','Íå îïðåäåëåíî','Íå îïðåäåëåíî',0); Edit5.Enabled := true; Edit6.Enabled := true; Edit7.Enabled := true; Edit8.Enabled := true; Edit5.Text := Zapros.PTelefon; Edit6.Text := Zapros.PMarka; Edit7.Text := Zapros.PSostoianie; Edit8.Text :=IntToStr(Zapros.PCena); StringGrid2.Rows[1].Strings[1] := Zapros.PTelefon; StringGrid2.Rows[2].Strings[1] := Zapros.PMarka; StringGrid2.Rows[3].Strings[1] := Zapros.PSostoianie; StringGrid2.Rows[4].Strings[1] := IntToStr(Zapros.PCena); Button5.Enabled := true; Button4.Enabled := false; end; procedure TForm1.Button5Click(Sender: TObject); begin Zapros.Destroy_Potrebitel; Edit5.Enabled := false; Edit6.Enabled := false; Edit7.Enabled := false; Edit8.Enabled := false; Edit5.Text := 'Îáúåêò íå ñîçäàí'; Edit6.Text := 'Îáúåêò íå ñîçäàí'; Edit7.Text := 'Îáúåêò íå ñîçäàí'; Edit8.Text := 'Îáúåêò íå ñîçäàí'; StringGrid2.Rows[1].Strings[1] := ''; StringGrid2.Rows[2].Strings[1] := ''; StringGrid2.Rows[3].Strings[1] := ''; StringGrid2.Rows[4].Strings[1] := ''; Button4.Enabled := true; Button5.Enabled := false; end; procedure TForm1.Edit5Change(Sender: TObject); begin if Edit5.Text <> 'Îáúåêò íå ñîçäàí' then begin Zapros.PTelefon := Edit5.Text; StringGrid2.Rows[1].Strings[1] := Zapros.PTelefon; end; end; procedure TForm1.Edit6Change(Sender: TObject); begin if Edit6.Text <> 'Îáúåêò íå ñîçäàí' then begin Zapros.PMarka := Edit6.Text; StringGrid2.Rows[2].Strings[1] := Zapros.PMarka; end; end; procedure TForm1.Edit7Change(Sender: TObject); begin if Edit7.Text <> 'Îáúåêò íå ñîçäàí' then begin Zapros.PSostoianie := Edit7.Text; StringGrid2.Rows[3].Strings[1] := Zapros.PSostoianie; end; end; procedure TForm1.Edit8Change(Sender: TObject); var i,c:integer; begin val(Edit8.Text,i,c); if (c=0) then begin Zapros.PCena := i; StringGrid2.Rows[4].Strings[1] := Edit8.Text; end; end; procedure TForm1.Button6Click(Sender: TObject); begin Form1.Close; end; end. Модуль формы Класса-массива unit A; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids, ExtCtrls, Salon, Pokupatel, GetFail; type TForm1 = class(TForm) StringGrid1: TStringGrid; GroupBox1: TGroupBox; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Edit4: TEdit; Button1: TButton; GroupBox2: TGroupBox; Edit5: TEdit; Button2: TButton; Edit6: TEdit; Label1: TLabel; StringGrid2: TStringGrid; GroupBox3: TGroupBox; Edit7: TEdit; Button3: TButton; GroupBox4: TGroupBox; Label2: TLabel; Edit8: TEdit; Edit9: TEdit; Edit10: TEdit; Edit11: TEdit; Button4: TButton; Edit12: TEdit; GroupBox5: TGroupBox; Button5: TButton; Button6: TButton; Button7: TButton; Button8: TButton; Button9: TButton; Edit13: TEdit; GroupBox6: TGroupBox; Button10: TButton; Edit14: TEdit; procedure Show_Grid1(const C : AvtoSalon; const l:integer); procedure Show_Grid3(const C : AvtoSalon; const l:integer); procedure Show_Grid2(const C : AvtoSalon2; const l:integer); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure Button6Click(Sender: TObject); procedure Button8Click(Sender: TObject); procedure Button7Click(Sender: TObject); procedure StringGrid2SelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean); procedure Button9Click(Sender: TObject); procedure Button10Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; Cars : AvtoSalon; Zapros : AvtoSalon2; SelectRow : integer = -1; implementation {$R *.dfm} procedure TForm1.Show_Grid1(const C : AvtoSalon; const l : integer); var i:integer; begin StringGrid1.RowCount := l + 1; for i:=0 to C.GetN - 1 do StringGrid1.Rows[i+1].Text := IntToStr(i+1) + Chr(VK_RETURN) + C.Get_Car(i); end; procedure TForm1.Show_Grid2(const C : AvtoSalon2; const l : integer); var i:integer; begin StringGrid2.RowCount := l + 1; for i:=0 to C.GetN - 1 do StringGrid2.Rows[i+1].Text := IntToStr(i+1) + Chr(VK_RETURN) + C.Get_Zapros(i); end; procedure TForm1.Show_Grid3(const C : AvtoSalon; const l : integer); var i:integer; begin if l <> 0 then begin StringGrid1.RowCount := l + 1; for i:=0 to l - 1 do StringGrid1.Rows[i+1].Text := IntToStr(i+1) + Chr(VK_RETURN) + C.Get_Variant(i); end else MessageDlg('Ïî äàííîìó çàïðîñó íå íàéäåíî ïîäõîäÿùèõ ìàøèí',mtInformation,[mbOK],1); end; procedure TForm1.Button1Click(Sender: TObject); var i,i2,i3,c,c2,c3:integer; begin val(Edit2.Text,i,c); val(Edit4.Text,i2,c2); val(Edit6.Text,i3,c3); if (Edit1.Text <> 'Ìàðêà') and (Edit1.Text <> '') and (Edit3.Text <> 'Òåõíè÷åñêîå ñîñòîÿíèå') and (Edit3.Text <> '') and (c = 0) and (c2 = 0) and (i2 > 0) then begin if c3 = 0 then Cars.Insert_Car(Edit1.Text,i,Edit3.Text,i2,i3-1) else Cars.Add_Car(Edit1.Text,i,Edit3.Text,i2); Form1.Show_Grid1(Cars,Cars.GetN); end else MessageDLG('Íå âåðíûé ôîðìàò ââîäèìûõ äàííûõ',mtInformation,[mbOk],1); end; procedure TForm1.Button2Click(Sender: TObject); var i,c:integer; begin val(Edit5.Text,i,c); if (c = 0) and (i > 0) then begin Cars := AvtoSalon.Create_Cars(i); GroupBox1.Enabled := true; GroupBox5.Enabled := true; GroupBox2.Enabled := false; StringGrid1.Enabled := true; StringGrid1.RowCount := i+1; MessageDLG('Áûë ñîçäàí îáúåêò: Àâòîñàëîí',mtInformation,[mbOk],1); end else MessageDLG('Ââåäèòå ïîäõîäÿùèé ðàçìåð ìàññèâà',mtInformation,[mbOk],1); end; procedure TForm1.FormCreate(Sender: TObject); begin StringGrid1.Rows[0].Strings[0] := '¹'; StringGrid1.Rows[0].Strings[1] := 'Ìàðêà'; StringGrid1.Rows[0].Strings[2] := 'Ãîä âûïóñêà'; StringGrid1.Rows[0].Strings[3] := 'Òåõ. ñîñòîÿíèå'; StringGrid1.Rows[0].Strings[4] := 'Öåíà'; StringGrid2.Rows[0].Strings[0] := '¹'; StringGrid2.Rows[0].Strings[1] := 'Òåëåôîí'; StringGrid2.Rows[0].Strings[2] := 'Ìàðêà'; StringGrid2.Rows[0].Strings[3] := 'Òåõ. ñîñòîÿíèå'; StringGrid2.Rows[0].Strings[4] := 'Âîçìîæíîñòè'; end; procedure TForm1.Button3Click(Sender: TObject); var i,c:integer; begin val(Edit7.Text,i,c); if (c = 0) and (i > 0) then begin Zapros := AvtoSalon2.Create_Zapros(i); GroupBox4.Enabled := true; GroupBox6.Enabled := true; GroupBox3.Enabled := false; StringGrid2.Enabled := true; StringGrid2.RowCount := i+1; MessageDLG('Áûë ñîçäàí îáúåêò: Çàïðîñû',mtInformation,[mbOk],1); end else MessageDLG('Ââåäèòå ïîäõîäÿùèé ðàçìåð ìàññèâà',mtInformation,[mbOk],1); end; procedure TForm1.Button4Click(Sender: TObject); var i,i3,c,c3:integer; begin val(Edit11.Text,i,c); val(Edit12.Text,i3,c3); if (Edit8.Text <> 'Êîíòàêòíûé òåëåôîí') and (Edit8.Text <> '') and (Edit9.Text <> 'Ìàðêà') and (Edit9.Text <> '') and (Edit10.Text <> 'Òåõíè÷åñêîå ñîñòîÿíèå') and (Edit10.Text <> '') and (c = 0) and (i > 0) then begin if c3 = 0 then Zapros.Insert_Zapros(Edit8.Text,Edit9.Text,Edit10.Text,i,i3-1) else Zapros.Add_Zapros(Edit8.Text,Edit9.Text,Edit10.Text,i); Form1.Show_Grid2(Zapros,Zapros.GetN); end else MessageDLG('Íå âåðíûé ôîðìàò ââîäèìûõ äàííûõ',mtInformation,[mbOk],1); end; procedure TForm1.Button5Click(Sender: TObject); begin Cars.Sort_Mas(true); Form1.Show_Grid1(Cars,Cars.GetN); end; procedure TForm1.Button6Click(Sender: TObject); begin Cars.Sort_Mas(false); Form1.Show_Grid1(Cars,Cars.GetN); end; procedure TForm1.Button8Click(Sender: TObject); begin Form1.Show_Grid1(Cars,Cars.GetN); end; procedure TForm1.Button7Click(Sender: TObject); begin if SelectRow <> -1 then begin Cars.Find_Variants(Zapros.Get_Marka(SelectRow - 1),Zapros.Get_Sost(SelectRow - 1),Zapros.Get_Cena(SelectRow - 1)); Form1.Show_Grid3(Cars,Cars.GetZ); end else MessageDlg('Âûáåðèòå çàïðîñ â òàáëèöå çàïðîñîâ',mtInformation,[mbOK],1); end; procedure TForm1.StringGrid2SelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean); begin SelectRow := ARow; end; procedure TForm1.Button9Click(Sender: TObject); begin GetFileCars(Cars,Edit13.Text); Form1.Show_Grid1(Cars,Cars.GetN); end; procedure TForm1.Button10Click(Sender: TObject); begin GetFileZapros(Zapros,Edit14.Text); Form1.Show_Grid2(Zapros,Zapros.GetN); end; end. |