Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отчетмой.docx
Скачиваний:
5
Добавлен:
27.10.2018
Размер:
220.75 Кб
Скачать

Описание работы программы Главное окно (Класс class tAuth)

Рисунок 1 - Окно Авторизации

Главное окно (рисунок 1) представляет собой окно авторизации пользователя для дальнейшей работы. Данное окно запрашивает фамилию и пароль. После ввода пользователем пароля в строку ввода, подписанную «Пароль», и нажатия кнопки «ОК» ПО выбирает из списка учетных записей ту, которую указал пользователь. При несоответствии пароля или логина ПО выдаст соответствующее сообщение (рисунок 2), оповещающее об ошибке.

Рисунок 2 - Сообщение об ошибке

bool __fastcall TShop::Authorization(TObject *Sender,char *name,char *pass)

{

for(int i=0; i<users->Count; i++)

{

if(strcmp(((TWorker*)users->Items[i])->ReturnFamilyName(),name)==0)

{

if(strcmp(((TWorker*)users->Items[i])->ReturnPass(),pass)==0)

{

curent->AddWorker(((TWorker*)users->Items[i]));

return true;

}

}

}

return false;

}

__fastcall TAuth::TAuth(TComponent* Owner)

: TForm(Owner)

{

}

void __fastcall TAuth::FormClose(TObject *Sender, TCloseAction &Action)

{

Application->Terminate();

}

void __fastcall TAuth::Button1Click(TObject *Sender)

{

if(Shop->Authorization(Sender,LabeledEdit1->Text.c_str(),LabeledEdit2->Text.c_str()))

{

Shop->Visible=true;

Auth->Visible=false;

}

else

{

ShowMessage("Неверная фамилия или пароль!");

LabeledEdit1->Clear();

LabeledEdit2->Clear();

LabeledEdit1->SetFocus();

}

}

void __fastcall TAuth::LabeledEdit1KeyPress(TObject *Sender, char &Key)

{

if(Key==13)

LabeledEdit2->SetFocus();

if(Key==32)

{

Shop->Authorization(Sender,"Браун","hfey");

Shop->Visible=true;

Auth->Visible=false;

}

}

Button1Click(Sender);

//---------------------------------------------------------------------------

void __fastcall TAuth::LabeledEdit2KeyPress(TObject *Sender, char &Key)

{

if(Key==13)

}

Окно пользователя(Класс tShop)

Рисунок 3 - Окно пользователя

Рисунок 4 - Добавление товара

Как можно заметить на рисунке 3, окно пользователя включает в себя :окно кассы, окно базы товаров, окно базы пользователей,окно кредитов и окно чеков. Окно кассы включает включает в себя такие кнопки: Добавить, Удалить, Продать, редактировать, Продать в кредит, Добавить денег.

Перед загрузкой окна, ПО при помощи потоковых функций класса TShop открывает и выгружает список товаров в окно отчета из файла tovars.bd.

При нажатии кнопки «Добавить» открывается окно класса AddTovarToKassa (рисунок 4), в который предварительно подается информация о том, что будет осуществляться добавление. Чтобы добавить новый товар, пользователь должен выбрать нужный товар и его количество, и нажать ОК рис.4. Если все было выполнено, верно, ПО считывает информацию с каждого поля и передает ее функции в таблицу.

void __fastcall TAddTovarToCassa::FormCreate(TObject *Sender)

{

StringGrid1->Cols[0][0].Add("");

StringGrid1->Cols[1][0].Add("Товар");

StringGrid1->Cols[2][0].Add("Стоимость");

StringGrid1->Cols[3][0].Add("Количество");

StringGrid1->RowCount=2;

}

//---------------------------------------------------------------------------

void __fastcall TAddTovarToCassa::Button1Click(TObject *Sender)

{

int i;

for(i=1; i<StringGrid1->RowCount; i++)

if(strcmp(StringGrid1->Cells[0][i].c_str(),"v")==0)

break;

if(i==StringGrid1->RowCount)

{

ShowMessage("Выберите товар!");

return;

}

Form5->Visible=true;

AddTovarToCassa->Enabled=false;

Form5->LabeledEdit1->Clear();

Form5->LabeledEdit1->EditLabel->Caption="Количество товара";

Form5->LabeledEdit1->SetFocus();

AddTovarToCassa->Close();

}

//---------------------------------------------------------------------------

void __fastcall TAddTovarToCassa::FormClose(TObject *Sender,

TCloseAction &Action)

{

Shop->Enabled=true;

}

//---------------------------------------------------------------------------

void __fastcall TAddTovarToCassa::StringGrid1Click(TObject *Sender)

{

for(int i=0; i<StringGrid1->RowCount; i++)

StringGrid1->Cells[0][i]=" ";

StringGrid1->Cells[0][StringGrid1->Row]="v";

}

//---------------------------------------------------------------------------

void __fastcall TAddTovarToCassa::ToShop(TObject *Sender,unsigned int count)

{

int i;

for(i=1; i<StringGrid1->RowCount; i++)

if(strcmp(StringGrid1->Cells[0][i].c_str(),"v")==0)

break;

Shop->Enabled=true;

Shop->AddCheck(Sender,count,i-1);

}

//---------------------------------------------------------------------------

void __fastcall TAddTovarToCassa::StringGrid1DblClick(TObject *Sender)

{

Button1Click(Sender);

}

При нажатии кнопки «Удалить» товар удаляется из кассы.При нажатии кнопки продать товар удаляется из кассы и сохраняется в проданных товарах.

При нажатии кнопки «Сохранить» ПО применяет все проведенные изменения и сохраняет список поездов в файл Tovars.bd с помощью функции ToolStripMenuItem_Click.

Используемые классы.

Объекты, над которыми при помощи данного ПО можно совершать функциональные воздействия, принадлежат одному из восьми классов. Рассмотрим их подробнее.

Класс TRegistration

В этом классе описывается месторасположение элементов. Каждый элемент данного класса содержит в себе информацию о городе, улице и номере дома. Класс, содержащий паспортные данные и номер телефона человека, наследует класс TRegistration.

Функции класса TRegistration

В данном классе определены и использованы функции AddCity, AddStreet, AddHouse.Функция AddCity сохраняет и добавляет информацию о городе».Функция AddStreet сохраняет и добавляет информацию о улице.Функция AddHouse сохраняет и добавляет информацию о доме.

Класс TPassport

Данный класс содержит информацию о паспортных данных.Класс, содержащий данные о рабочих, наследует класс TPassport.

Функции класса TPassport

В данном классе определены и использованы функции AddDate. AddName, AddSecondName, AddBornRegistr, AddSeries, AddNumber. Функция AddDate сохраняет и добавляет информацию о дате рождения. Функция AddName сохраняет и добавляет информацию о имени.Фунция AddSecondName сохраняет и добавляет информацию об отчестве. Функция AddBornRegistr сохраняет и добавляет информацию об месте рождения.Фунция AddSeries и AddNumber сохраняет и добавляет информацию о сериии и номере паспорта.

Класс Tworker

Данный класс содержит информацию о работниках фирмы:их начала работы, даты окончания контракта на работу,телефон работника и о статусе работника. Данный класс наследует класс TRegistration.

Класс TTovar

Класс, содержащий данные о товаре. Предназначен для класса чека

class TTovarInCheck.

Класс TCheck

Класс, содержащий данные о продаже товаров. Все переменные и функции, связанные с этим процессом хранятся здесь.

Класс TCredit

Класс, содержащий информацию о кредите.Даннывй класс наследуется классом TPassport.

Класс TCassa

Класс содержащих информацию о кассе.

Функции класса TCassa

Фунция AddCheck сохраняет и добавляет данные о чеках на кассе. Функция AddWorker сохраняет и добавляет информацию о работниках на кассе.

Функции подсчёта

Функция N14Click, пробегаясь по спискам, подсчитывает средний возраст сотрудников. Функция класса TShop, N15Click подсчитывает среднюю и общую стоимость товара. Функция N150001Click ,пробегая по списку циклом, подсчитывает месяц с наибольшим количеством проданного товара. Функция N30Click подсчитывает долги по кредитам и количество человек взявших товар в кредит.

Функции выборки

Функция N19Click, пробегаясь по списку находит значения, удовлетворяющие данному условию и передаёт значения определённой переменной,и составляет список выгодных товаров. Функция N21Click пробегает по списку Picks, и при совпадении параметров сохраняет значения переменных и создаёт список просроченных товаров и работников с просроченным контрактом.

Функции построения графиков

В форме Form11 содержится элемент компонента TeeChart, в котором строятся все диаграммы и графики. В функции N28Click строятся графики продаж и кредитов. Функция проходит по списку кредитов и продаж, задает значения X и Y, функцией AddXY и специальным компонентом TeeChart создаёт график по заданным значениям.

Функция построения диаграмм.

Диаграммы возрастов покупателей, взявших кредит и диаграмма имеющихся товаров строятся также как и графики специальным компонентом TeeChart. Но в отличии от графиков, диаграмма строится из кусков, которые задаются функцией AddPie.

Функции составления отчётов

Отчеты выводятся в форме Otchet, функцией N26Click, которая пробегает по списку имеющихся товаров и складывает стоимсоть товаров, если требуется отчёт по общей стоимости товаров, или делит количество товаров на их стоимость и узнаёт среднюю цену товаров.В этой же функции составляются всё остальные отчёты.

Апробация

Проверим работу подсчета среднего возраста сотрудников. Окно сотрудников показано на рисунке 5. Окно подсчета среднего возраста сотрудников показано на рисунке 6.

Рисунок 5 – Окно сотрудников

Рисунок 6 – Подсчёт среднего возраста сотрудников

Проверим работу функции составления отчёта по клиентам, взявших кредит. Результат работы функции показан на рисунке 6. Список кредитов показан на рисунке 7.

Рисунок 6 – Отчёт по клиентам, которые взяли кредит

Рисунок 7 – Список кредитов

Проверим првильность работы функции составления графиков и диаграмм. На рисунке 8 показан график прибыли магазина за текущий год.

Рисунок 7 – График продаж магазина за текущий год

На рисунке 8 продемонстрирована диаграмма имеющихся товаров. На рисунке 9 показан список товаров.

Рисунок 8 – Диаграмма имеющихся товаров

Рисунок 9 – Список товаров

На рисунке 10 показана функция выборки товаров выгодных для магазина.

Рисунок 10 – Выборка выгодных товаров