Автор работы: Пользователь скрыл имя, 13 Июня 2013 в 18:34, курсовая работа
Целью курсовой работы является разработка приложения «Автосалон», которая по своей сути является справочной системой по автосалону. Данный курсовой проект предполагается разработать в визуальной среде разработки Borland Delphi 7. Для начала в программу предполагается ввести начальные сведения об автомобилях, их тех. характеристики, и имена владельцев. Всю информацию об автосалоне предполагается записывать в типизированный файл. При необходимости выполнить следующие запросы:
выдать информацию о наличии автомобилей определенной марки и модели;
выдать технические данные заданной модели;
выдать информацию обо всех проданных моделях некоторой марки;
ВВЕДЕНИЕ 3
1 ТЕХНИЧЕСКОЕ ЗАДАНИЕ 4
1.1 Текст задания 4
1.2 Постановка задачи 5
2 ТЕХНИЧЕСКИЙ ПРОЕКТ 6
2.1 Структурная схема 6
2.2 Назначение модулей 7
2.3 Описание алгоритмов модулей 8
2.3.1 Unit1 8
2.3.2 Unit2 13
2.3.3 Unit3 14
2.3.4 Unit4 15
2.3.5 Unit5 16
2.3.6 Unit6 17
2.4 Формы 19
3 РАБОЧИЙ ПРОЕКТ 22
3.1 Текст программы 22
3.2 Контрольный пример 37
ЗАКЛЮЧЕНИЕ 42
ЛИТЕРАТУРА 43
End;
var p:Avto; F:file of Avto;
FormMain: TFormMain;
implementation
uses Unit2, Unit3, Unit4, Unit5, Unit6;
{$R *.dfm}
{procedure Hgrid;
var i,j:integer;
begin
WiTh stringGrid1 do
begin
for j := 1 to colcount-1 do
for i := 1 to roWcount-1 do
cells[j,i]:='';
end;
end; }
procedureTFormMain.
выдать технические данные заданной модели
var
i,j:integer; h:string;
begin
WiTh stringGrid1 do
begin
for j := 0 to colcount-1 do
for i := 1 to roWcount-1 do
cells[j,i]:='';
end;
h:=Edit1.Text;
Reset(f);
i:=1;
while not eoF(f) do
begin
read(f,p);
if H=p.Model then begin
with StringGrid1 do begin
Cells[0,i]:=p.Marka;
Cells[1,i]:=p.Model;
Cells[2,i]:=p.Stran;
Cells[3,i]:=p.Nali;
Cells[4,i]:=p.TipK;
Cells[5,i]:=IntToStr(p.KolD);
Cells[6,i]:=IntToStr(p.KolM);
Cells[7,i]:=p.TipD;
Cells[8,i]:=p.RaspD;
Cells[9,i]:=FloatToStr(p.ObD);
Cells[10,i]:=FloatToStrF(p.
RowCount:=RowCount+1;
end;
i:=i+1;
end;
end;
CloseFile(f);
end;
procedure TFormMain.FormCreate(Sender: TObject); // заголовки таблиц
begin
WiTh stringGrid1 do
begin
Cells[0,0]:='Марка авто';
Cells[1,0]:='Модель';
Cells[2,0]:='Страна';
Cells[3,0]:='Наличие';
Cells[4,0]:='Тип кузова';
Cells[5,0]:='Кол.дверей';
Cells[6,0]:='Кол.мест';
Cells[7,0]:='Тип движка';
Cells[8,0]:='Расп. движка';
Cells[9,0]:='V движка';
Cells[10,0]:='Цена';
Cells[11,0]:='Покупатель';
Cells[12,0]:='Дата продажи';
Cells[13,0]:='Вид оплаты';
end;
AssignFile(f,'Avto.txt');
StringGrid1.RowCount:=2;
end;
procedure TFormMain.N221Click(Sender: TObject);//Запрос Инфа о наличии авто
begin
form1P.Show
end;
procedure TFormMain.N222Click(Sender: TObject);
begin
form3P.Show
end;
procedure TFormMain.N251Click(Sender: TObject);
begin
form6P.Show
end;
procedure TFormMain.N2Click(Sender: TObject);
begin
Rewrite(f); //создать
closefile(f);
end;
procedure TFormMain.N311Click(Sender: TObject);
begin
Form6.Show
end;
procedure TFormMain.N3Click(Sender: TObject); //запись
begin
formNew.Show
end;
procedure TFormMain.N4Click(Sender: TObject); //отчистка таблицы
var I,j,K:integer;
begin
WiTh stringGrid1 do
begin
for j := 0 to colcount-1 do
for i := 1 to roWcount-1 do
cells[j,i]:='';
end;
Reset(f);
i:=1;
while not eoF(f) do
begin
read(f,p);
if p.Nali='Да' then k:=k+1;
with StringGrid1 do begin
Cells[0,i]:=p.Marka;
Cells[1,i]:=p.Model;
Cells[2,i]:=p.Stran;
Cells[3,i]:=p.Nali;
Cells[4,i]:=p.TipK;
Cells[5,i]:=IntToStr(p.KolD);
Cells[6,i]:=IntToStr(p.KolM);
Cells[7,i]:=p.TipD;
Cells[8,i]:=p.RaspD;
Cells[9,i]:=FloatToStr(p.ObD);
Cells[10,i]:=FloatToStrF(p.
Cells[11,i]:=p.Pokup;
Cells[12,i]:=DateToStr(p.
Cells[13,i]:=p.VidO;
RowCount:=RowCount+1;
end;
i:=i+1;
end;
CloseFile(f);
Label20.Caption:='Количество авто на складе='+IntToStr(k);
end;
procedure TFormMain.N81Click(Sender: TObject); //самый дорогой
var i,j:integer; max:Avto;
begin
Reset(f);
WiTh stringGrid1 do
begin
for j := 0 to colcount-1 do
for i := 1 to roWcount-1 do
cells[j,i]:='';
end;
StringGrid1.RowCount:=2;
I:=1;
max.Zena:=0;
while not eof(f) do begin
read(f,p);
if p.Zena>max.Zena then
max:=p;
end;
with StringGrid1 do
begin
Cells[0,i]:=max.Marka;
Cells[1,i]:=max.Model;
Cells[2,i]:=max.Stran;
Cells[3,i]:=max.Nali;
Cells[4,i]:=max.TipK;
Cells[5,i]:=IntToStr(max.KolD)
Cells[6,i]:=IntToStr(max.KolM)
Cells[7,i]:=max.TipD;
Cells[8,i]:=max.RaspD;
Cells[9,i]:=FloatToStr(max.
Cells[10,i]:=FloatToStrF(max.
Cells[11,i]:=max.Pokup;
Cells[12,i]:=DateToStr(max.
Cells[13,i]:=max.VidO;
end;
end;
procedure TFormMain.N9Click(Sender: TObject); //в меню ВЫХОД
begin
close;
end;
end.
Текст модуля Unit 2:
unit Unit2; //Форма добавления информации о авто
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons;
type
TFormNew = class(TForm)
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Edit3: TEdit;
Label5: TLabel;
Edit5: TEdit;
Label6: TLabel;
Edit6: TEdit;
ComboBox1: TComboBox;
BitBtn1: TBitBtn;
Edit2: TEdit;
Edit4: TEdit;
Edit7: TEdit;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Edit8: TEdit;
Label11: TLabel;
Label12: TLabel;
Edit10: TEdit;
Edit11: TEdit;
Label13: TLabel;
Edit12: TEdit;
Label14: TLabel;
Edit13: TEdit;
Label15: TLabel;
ComboBox2: TComboBox;
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FormNew: TFormNew;
implementation
uses Unit1;
{$R *.dfm}
procedure TFormNew.BitBtn1Click(Sender: TObject) //Кнопка ОК
записываем наши данные в файл
begin
Reset(f);
seek(f,filesize(f));
p.Marka:=Edit1.text;
p.Model:=Edit3.Text;
p.TipK:=Edit6.Text;
p.Kold:=StrToInt(Edit2.Text);
p.KolM:=StrToInt(Edit4.Text);
p.TipD:=Edit7.Text;
p.ObD:=StrToFloat(Edit8.Text);
p.RaspD:=Edit10.Text;
p.Zena:=StrToInt(Edit11.Text);
p.Pokup:=Edit12.Text;
p.DataP:=StrToDate(Edit13.
p.Nali:=ComboBox1.text;
p.VidO:=ComboBox2.Text;
p.Stran:=Edit5.text;
write(f,p);
closeFile(f);
edit1.text:=' ';
edit2.Text:=' ';
edit3.text:=' ';
edit5.text:=' ';
edit6.text:=' ';
edit7.Text:=' ';
edit10.Text:=' ';
edit12.Text:=' ';
edit13.Text:=' ';
edit8.Text:=' ';
edit4.Text:=' ';
edit11.Text:=' ';
end;
end.
Текст модуля Unit 3:
unit Unit3; //Информация о наличие авто на складе
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, Grids, StdCtrls;
type
TForm1P = class(TForm)
Edit20: TEdit;
Label1: TLabel;
Button1: TButton;
Button2: TButton;
StringGrid3: TStringGrid;
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1P: TForm1P;
implementation
uses Unit1;
{$R *.dfm}
procedure TForm1P.Button1Click(Sender: TObject); //Кнопка поиск
var
i,j:integer; h:string;
begin
WiTh stringGrid3 do
begin
for j := 0 to colcount-1 do
for i := 1 to roWcount-1 do
cells[j,i]:='';
end;
h:=Edit20.Text;
Reset(f);
i:=1;
while not eoF(f) do
begin
read(f,p);
if (H=p.Marka) or (H=p.Model) then begin
with StringGrid3 do begin
Cells[0,0]:='Марка авто';
Cells[1,0]:='Модель';
Cells[2,0]:='Страна';
Cells[3,0]:='Наличие';
Cells[4,0]:='Тип кузова';
Cells[5,0]:='Кол.дверей';
Cells[6,0]:='Кол.мест';
Cells[7,0]:='Тип движка';
Cells[8,0]:='Расп. движка';
Cells[9,0]:='V движка';
Cells[10,0]:='Цена';
Cells[11,0]:='Покупатель';
Cells[12,0]:='Дата продажи';
Cells[13,0]:='Вид оплаты';
Cells[0,i]:=p.Marka;
Cells[1,i]:=p.Model;
Cells[2,i]:=p.Stran;
Cells[3,i]:=p.Nali;
Cells[4,i]:=p.TipK;
Cells[5,i]:=IntToStr(p.KolD);
Cells[6,i]:=IntToStr(p.KolM);
Cells[7,i]:=p.TipD;
Cells[8,i]:=p.RaspD;
Cells[9,i]:=FloatToStr(p.ObD);
Cells[10,i]:=FloatToStrF(p.
Cells[11,i]:=p.Pokup;
Cells[12,i]:=DateToStr(p.
Cells[13,i]:=p.VidO;
RowCount:=RowCount+1;
end;
i:=i+1;
end;
end;
CloseFile(f);
end;
procedure TForm1P.Button2Click(Sender: TObject);//кнопка закрыть
begin
Close;
end;
end.
Текст модуля Unit 4:
unit Unit4; //Выдать информацию обо всех проданных моделях некоторой марки
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids;
type
TForm3P = class(TForm)
Label1: TLabel;
Edit30: TEdit;
Button1: TButton;
Button2: TButton;
StringGrid4: TStringGrid;
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form3P: TForm3P;
implementation
uses Unit1, Unit2, Unit3;
{$R *.dfm}
procedure TForm3P.Button1Click(Sender: TObject);
var
i,j:integer; h:string;
begin
WiTh stringGrid4 do begin
for j := 0 to colcount-1 do
for i := 1 to roWcount-1 do
cells[j,i]:='';
end;
h:=Edit30.Text;
Reset(f);
i:=1;
while not eoF(f) do begin
read(f,p);
if (H=p.Marka) and (p.Nali='Нет') then
begin
with StringGrid4 do begin
Cells[0,0]:='Марка авто';
Cells[1,0]:='Модель';
Cells[2,0]:='Страна';
Cells[3,0]:='Наличие';
Cells[4,0]:='Тип кузова';
Cells[5,0]:='Кол.дверей';
Cells[6,0]:='Кол.мест';
Cells[7,0]:='Тип движка';
Cells[8,0]:='Расп. движка';
Cells[9,0]:='V движка';
Cells[10,0]:='Цена';
Cells[11,0]:='Покупатель';
Cells[12,0]:='Дата продажи';
Cells[13,0]:='Вид оплаты';
Cells[0,i]:=p.Marka;
Cells[1,i]:=p.Model;
Cells[2,i]:=p.Stran;
Cells[3,i]:=p.Nali;
Cells[4,i]:=p.TipK;
Cells[5,i]:=IntToStr(p.KolD);
Cells[6,i]:=IntToStr(p.KolM);
Cells[7,i]:=p.TipD;
Cells[8,i]:=p.RaspD;
Cells[9,i]:=FloatToStr(p.ObD);
Cells[10,i]:=FloatToStrF(p.
Cells[11,i]:=p.Pokup;
Cells[12,i]:=DateToStr(p.
Cells[13,i]:=p.VidO;
RowCount:=RowCount+1;
end;
i:=i+1;
end;
end;
CloseFile(f);
end;
procedure TForm3P.Button2Click(Sender: TObject);
begin
Close;
end;
end.
Текст модуля Unit 5:
unit Unit5; //Выдать список клиентов по виду оплаты
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, StdCtrls;
type
TForm6P = class(TForm)
Edit23: TEdit;
Label1: TLabel;
Button1: TButton;
Button2: TButton;
StringGrid5: TStringGrid;
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form6P: TForm6P;
implementation
uses Unit1;
{$R *.dfm}
procedure TForm6P.Button1Click(Sender: TObject);
var
i,j:integer; h:string;
begin
WiTh stringGrid5 do begin
for j := 0 to colcount-1 do
for i := 1 to roWcount-1 do
cells[j,i]:='';
end;
h:=Edit23.Text;
Reset(f);
i:=1;
while not eoF(f) do begin
read(f,p);
if H=p.VidO then begin
with StringGrid5 do begin
Cells[0,0]:='Марка авто';
Cells[1,0]:='Модель';
Cells[2,0]:='Страна';
Cells[3,0]:='Наличие';
Cells[4,0]:='Тип кузова';
Cells[5,0]:='Кол.дверей';
Cells[6,0]:='Кол.мест';
Cells[7,0]:='Тип движка';
Cells[8,0]:='Расп. движка';
Cells[9,0]:='V движка';
Cells[10,0]:='Цена';
Cells[11,0]:='Покупатель';
Cells[12,0]:='Дата продажи';
Cells[13,0]:='Вид оплаты';
Cells[0,i]:=p.Marka;
Cells[1,i]:=p.Model;
Cells[2,i]:=p.Stran;
Cells[3,i]:=p.Nali;
Cells[4,i]:=p.TipK;
Cells[5,i]:=IntToStr(p.KolD);
Cells[6,i]:=IntToStr(p.KolM);
Cells[7,i]:=p.TipD;
Cells[8,i]:=p.RaspD;
Cells[9,i]:=FloatToStr(p.ObD);
Cells[10,i]:=FloatToStrF(p.
Cells[11,i]:=p.Pokup;
Cells[12,i]:=DateToStr(p.
Cells[13,i]:=p.VidO;
RowCount:=RowCount+1;
end;
i:=i+1;
end;
end;
CloseFile(f);
end;
procedure TForm6P.Button2Click(Sender: TObject);
begin
Close;
end;
end.
Текст модуля Unit 6:
unit Unit6; //Сумма по каждой модели
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids;
type
TForm6 = class(TForm)
StringGrid6: TStringGrid;
Button1: TButton;
Button2: TButton;
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form6: TForm6;
implementation
uses Unit1;
{$R *.dfm}
procedure TForm6.Button1Click(Sender: TObject);
var
i,j,k,n:integer; h:string; s:real;
mas:array[1..50] of Avto;
pp:Avto;
begin
Reset(f);
i:=1;
While not eoF(f) do begin
read(f,p);
mas[i]:=p;
i:=i+1;
end;
for k:=1 to i-2 do
for j:=1 to i-2 do
if mas[j].Marka>mas[j+1].Marka then begin
pp:=mas[j];
mas[j]:=mas[j+1];
mas[j+1]:=pp;
end;
WiTh stringGrid6 do begin
Cells[0,0]:='Марка';
Cells[1,0]:='Сумма';
end;
WiTh stringGrid6 do begin // Чистка
for j:=0 to colcount-1 do
for k:=1 to roWcount-1 do
cells[j,k]:='';
end;
s:=0;
N:=1;
for j:=1 to i-2 do begin
if mas[j].Marka=mas[j+1].Marka then
s:=s+mas[j].Zena
else begin s:=s+mas[j].Zena;
//s:=mas[j].Zena;
WiTh stringGrid6 do begin
Cells[0,n]:=mas[j].Marka;
Cells[1,n]:=FloatToStr(s);
rowcount:=rowcount+1;
s:=0;
end;
n:=n+1;
end;
end;
CloseFile(f);
end;
procedure TForm6.Button2Click(Sender: TObject);
begin
Close;
end;
end.
В результате выполнения курсового проекта разработано приложение, помогающее узнать сведения о автомобиле в автосалоне.
Главная форма с рабочим меню представлена на рисунке 3.1 и рисунке 3.2.
Рисунок 3.1 – Главная форма, меню файл
Рисунок 3.2 – Главная форма, меню запросы
FormNew позволяет добавить новые сведения об автомобиле и приведена на рисунке 3.3.
Рисунок 3.3 – Форма добавления информации об автомобили
Результат запроса «Инфа о наличие авто на складе» приведена на рисунке 3.4.
Рисунок 3.4 – Форма запроса (Информация о наличие автомобиля на складе)
Результат запроса «Выдать информацию обо всех проданных моделях некоторой марки» приведена на рисунке 3.5.
Рисунок 3.5 – Форма запроса (Информация о проданных автомобилях)
Результат запроса «Самый дорогой авто» приведена на рисунке 3.6.
Рисунок 3.6 – Форма запроса (Информация о самом дорогом автомобиле)
Результат запроса «Выдать список клиентов и авто по виду оплаты» приведена на рисунке 3.7.
Рисунок 3.7 – Форма запроса (Список автомобилей по виду оплаты)
Результат запроса «Сумма по каждой модели» приведена на рисунке 3.8.
Рисунок 3.8 – Форма запроса (Сумма по каждой модели)
Результат клика по клавише «Показать тех. Данные» приведена на рисунке 3.9.
Рисунок 3.9 – Главная форма (Тех. Характеристики модели)
На главной форма приложение автоматически показывает «Количество автомобилей на складе» после нажатия «Файл → Открыть» на рисунке 3.10.
Рисунок 3.10 – Главная форма количество автомобилей на складе
По окончании работы над курсовым проектом разработана программа, полностью удовлетворяющая первоначальным требованиям. Программа осуществляет хранение в типизированном файле информации об автосалоне, об автомобилях, а именно:
Программа с использованием данных из файла обеспечила: