Учет и анализ заказов на поставку продукции

Создание и анализ графического интерфейса проекта для удобного хранения и обработки данных о заработной плате сотрудников фирмы. Основные методы соответствующих классов, влияющих на функции проекта. Разработка программного кода файлов, его листинг.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 18.01.2015
Размер файла 138,2 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Введение

Цель работы: Получение навыков постановки задачи, алгоритмизации, программирования (с использованием объектно-ориентированного подхода) и отладки приложений на примере решения задачи учета и анализа заказов на поставку продукции в некоторой предметной области.

Задача проекта: Анализ заработной платы работников отдельной фирмы, включающий в себя расчёт средней и суммарной заработных плат сотрудников по определенной должности или режиму работы.

Описание процессов: В данном проекте исходные данные о сотрудниках загружаются в таблицу. Имеется возможность добавления, изменения и удаления записей в таблице, а также сохранения изменений в тестовый файл. Расчёт производится по нажатию соответствующих кнопок с последующим выводом результатов в текстовые поля и сохранением в файл. Добавлена возможность сортировки исходных данных по различным критериям (фамилия сотрудника, должность и т.д.), а также реализован поиск сотрудника по заданному значению фамилии или имени с последующим выводом на экран текстового сообщения о данном сотруднике. Также реализовано визуальное отображение данных с использованием столбчатой диаграммы.

В работе все функции работы с данных представлены и реализованы в виде методом соответствующих классов. Мною был разработан класс Data, содержащий в себе атрибут data, в котором располагается весь массив данных о сотрудниках, а также методы работы с этим массивом (например, поиск и сортировка массива).

1. Графический интерфейс проекта

2. Программный код файлов проекта

Файл CursovForm.h

 // -

#ifndef CursovFormH

#define CursovFormH

 // -

#include <Classes.hpp>

#include <Controls.hpp>

#include <StdCtrls.hpp>

#include <Forms.hpp>

#include <Dialogs.hpp>

#include <ExtCtrls.hpp>

#include <ComCtrls.hpp>

#include <Chart.hpp>

#include <Series.hpp>

#include <TeEngine.hpp>

#include <TeeProcs.hpp>

 // -

class TForm1: public TForm

{

__published:  // IDE-managed Components

TListView *ListView1;

TSaveDialog *SaveDialog2;

TOpenDialog *OpenDialog1;

TButton *zapisi_bt;

TPanel *zapisi_panel;

TButton *new_bt;

TPanel *Panel1;

TLabel *Label7;

TLabel *Label8;

TLabel *Label9;

TLabel *Label10;

TLabel *Label11;

TLabel *Label12;

TEdit *new_name_fl;

TEdit *new_surname_fl;

TEdit *new_otch_fl;

TEdit *new_zar_fl;

TEdit *new_rez_fl;

TEdit *new_dol_fl;

TButton *add_bt;

TButton *delete_bt;

TButton *Button1;

TButton *CLEAN_BT;

TButton *read_bt;

TPanel *analiz_panel;

TPageControl *PageControl1;

TTabSheet *TabSheet1;

TLabel *Label2;

TLabel *Label1;

TLabel *Label3;

TButton *sr_job_bt;

TEdit *sr_job_fl;

TEdit *sum_job_fl;

TComboBox *ComboBox1;

TTabSheet *TabSheet2;

TLabel *Label6;

TLabel *Label4;

TLabel *Label5;

TButton *sr_rez_bt;

TEdit *sr_rez_fl;

TEdit *sum_rez_fl;

TComboBox *ComboBox2;

TButton *analiz_bt;

TTabSheet *TabSheet3;

TButton *sort_bt;

TButton *search_bt;

TButton *graf_bt;

TEdit *search_fl;

TButton *change_bt;

TComboBox *combo_sort;

void __fastcall read_btClick (TObject *Sender);

void __fastcall sr_job_btClick (TObject *Sender);

void __fastcall sr_rez_btClick (TObject *Sender);

void __fastcall new_btClick (TObject *Sender);

void __fastcall add_btClick (TObject *Sender);

void __fastcall delete_btClick (TObject *Sender);

void __fastcall del_rec_btClick (TObject *Sender);

void __fastcall CLEAN_BTClick (TObject *Sender);

void __fastcall Button1Click (TObject *Sender);

void __fastcall graf_btClick (TObject *Sender);

void __fastcall sort_btClick (TObject *Sender);

void __fastcall search_btClick (TObject *Sender);

void __fastcall zapisi_btClick (TObject *Sender);

void __fastcall analiz_btClick (TObject *Sender);

void __fastcall change_btClick (TObject *Sender);

void __fastcall search_flClick (TObject *Sender);

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

private:  // User declarations

public: // User declarations

__fastcall TForm1 (TComponent* Owner);

};

 // -

extern PACKAGE TForm1 *Form1;

 // -

typedef struct

{

char surname[16];

char name[16];

char otch[16];

long zarplata;

char rezhim[16];

char dol[16];

} zapis;

 // -

class Data

{

public:

zapis data[100];

void new_zapis (zapis* &data, int nrec, char* surname, char* name, char* otch, int zarplata, char* rez, char* dol);

void delete_zapis (zapis* &data, int num_del, int &nrec);

void sort_zp (zapis* data, int nrec);

void sort_surname (zapis* data, int nrec);

void sort_name (zapis* data, int nrec);

void sort_otch (zapis* data, int nrec);

void sort_rez (zapis* data, int nrec);

void sort_dol (zapis* data, int nrec);

void search (zapis* data, int nrec, char* key);

};

 // -

void Data:delete_zapis (zapis* &data, int num_del, int &nrec)

{

for (int i=num_del; i<nrec-1; i++)

{

strcpy (data[i].surname, data [i+1].surname);

strcpy (data[i].name, data [i+1].name);

strcpy (data[i].otch, data [i+1].otch);

data[i].zarplata = data [i+1].zarplata;

strcpy (data[i].rezhim, data [i+1].rezhim);

strcpy (data[i].dol, data [i+1].dol);

}

nrec -;

}

 // -

void Data:new_zapis (zapis* &data, int nrec, char* surname, char* name, char* otch, int zarplata, char* rez, char* dol)

{

strcpy (data[nrec].surname, surname);

strcpy (data[nrec].name, name);

strcpy (data[nrec].otch, otch);

data[nrec].zarplata = zarplata;

strcpy (data[nrec].rezhim, rez);

strcpy (data[nrec].dol, dol);

}

 // -

void Data:sort_zp (zapis* data, int nrec)

{

int L =1, R = nrec-1, k = nrec-1;

do

{

for (int j = R; j >= L; j-)

if (data[j-1].zarplata > data[j].zarplata)

{

zapis tmp = data [j-1]; data [j-1] = data[j]; data[j] = tmp;

k = j;

}

L = k+1;

for (int j = L; j <= R; j++)

if (data[j-1].zarplata > data[j].zarplata)

{

zapis tmp = data [j-1]; data [j-1] = data[j]; data[j] = tmp;

k = j;

}

R = k-1;

} while (L <= R);

}

 // -

void Data:sort_surname (zapis* data, int nrec)

{

int L =1, R = nrec-1, k = nrec-1;

do

{

for (int j = R; j >= L; j-)

if (strcmp(data [j-1].surname, data[j].surname)>0)

{

zapis tmp = data [j-1]; data [j-1] = data[j]; data[j] = tmp;

k = j;

}

L = k+1;

for (int j = L; j <= R; j++)

if (strcmp(data [j-1].surname, data[j].surname)>0)

{

zapis tmp = data [j-1]; data [j-1] = data[j]; data[j] = tmp;

k = j;

}

R = k-1;

} while (L <= R);

}

 // -

void Data:sort_name (zapis* data, int nrec)

{

int L =1, R = nrec-1, k = nrec-1;

do

{

for (int j = R; j >= L; j-)

if (strcmp(data [j-1].name, data[j].name)>0)

{

zapis tmp = data [j-1]; data [j-1] = data[j]; data[j] = tmp;

k = j;

}

L = k+1;

for (int j = L; j <= R; j++)

if (strcmp(data [j-1].name, data[j].name)>0)

{

zapis tmp = data [j-1]; data [j-1] = data[j]; data[j] = tmp;

k = j;

}

R = k-1;

} while (L <= R);

}

 // -

void Data:sort_otch (zapis* data, int nrec)

{

int L =1, R = nrec-1, k = nrec-1;

do

{

for (int j = R; j >= L; j-)

if (strcmp(data [j-1].otch, data[j].otch)>0)

{

zapis tmp = data [j-1]; data [j-1] = data[j]; data[j] = tmp;

k = j;

}

L = k+1;

for (int j = L; j <= R; j++)

if (strcmp(data [j-1].otch, data[j].otch)>0)

{

zapis tmp = data [j-1]; data [j-1] = data[j]; data[j] = tmp;

k = j;

}

R = k-1;

} while (L <= R);

}

 // -

void Data:sort_rez (zapis* data, int nrec)

{

int L =1, R = nrec-1, k = nrec-1;

do

{

for (int j = R; j >= L; j-)

if (strcmp(data [j-1].rezhim, data[j].rezhim)>0)

{

zapis tmp = data [j-1]; data [j-1] = data[j]; data[j] = tmp;

k = j;

}

L = k+1;

for (int j = L; j <= R; j++)

if (strcmp(data [j-1].rezhim, data[j].rezhim)>0)

{

zapis tmp = data [j-1]; data [j-1] = data[j]; data[j] = tmp;

k = j;

}

R = k-1;

} while (L <= R);

}

 // -

void Data:sort_dol (zapis* data, int nrec)

{

int L =1, R = nrec-1, k = nrec-1;

do

{

for (int j = R; j >= L; j-)

if (strcmp(data [j-1].dol, data[j].dol)>0)

{

zapis tmp = data [j-1]; data [j-1] = data[j]; data[j] = tmp;

k = j;

}

L = k+1;

for (int j = L; j <= R; j++)

if (strcmp(data [j-1].dol, data[j].dol)>0)

{

zapis tmp = data [j-1]; data [j-1] = data[j]; data[j] = tmp;

k = j;

}

R = k-1;

} while (L <= R);

}

 // -

void Data:search (zapis* data, int nrec, char* key)

{

bool check_done = false;

for (int i = 0; i<nrec; i++)

{

if ((! strcmp (key, data[i].surname))||(! strcmp (key, data[i].name))

||(! strcmp (key, data[i].otch)))

{

check_done = true;

char buffer[100];

sprintf (buffer, «Зарплата сотрудника ' % s % s % s' равна % d»,

data[i].surname, data[i].name, data[i].otch, data[i].zarplata);

ShowMessage(buffer);

sscanf (buffer, "»);

}

}

if (check_done == false) ShowMessage («404 Нет такого сотрудника»);

}

 // -

int nrec = 0;

int select = -1;

bool b=false;

char DOL[16];

float AVE_DOL;

long SUM_DOL;

bool B_DOL;

char REZ[16];

float AVE_REZ;

long SUM_REZ;

bool B_REZ;

bool B_CHECK = false;

 // -

class combo_box

{

public:

void reset_combobox();

};

 // -

class box_rezhim: public combo_box

{

public:

char rezhim[16];

};

 // -

class box_dol: public combo_box

{

public:

char dol[16];

};

 // -

int count_combobox1 = 0;

int count_combobox2 = 0;

box_rezhim* Mass2 = new box_rezhim[100];

box_dol* Mass1 = new box_dol[100];

 // -

#endif

Файл Unit2.h

 // -

#ifndef Unit2H

#define Unit2H

 // -

#include <Classes.hpp>

#include <Controls.hpp>

#include <StdCtrls.hpp>

#include <Forms.hpp>

#include <Chart.hpp>

#include <ExtCtrls.hpp>

#include <Series.hpp>

#include <TeEngine.hpp>

#include <TeeProcs.hpp>

 // -

class TForm2: public TForm

{

__published:  // IDE-managed Components

TChart *Chart1;

TBarSeries *Series1;

private:  // User declarations

public: // User declarations

__fastcall TForm2 (TComponent* Owner);

};

 // -

extern PACKAGE TForm2 *Form2;

 // -

#endif

Файл Cursov.cpp

 // -

#include <vcl.h>

#pragma hdrstop

 // -

USEFORM («CursovForm.cpp», Form1);

USEFORM («Unit1.cpp», Frame1); /* TFrame: File Type */

USEFORM («Unit2.cpp», Form2);

USEFORM («Unit3.cpp», DataModule3); /* TDataModule: File Type */

USEFORM («Unit4.cpp», Form4);

 // -

WINAPI WinMain (HINSTANCE, HINSTANCE, LPSTR, int)

{

try

{

Application->Initialize();

Application->CreateForm (__classid(TForm1), &Form1);

Application->CreateForm (__classid(TForm2), &Form2);

Application->CreateForm (__classid(TDataModule3), &DataModule3);

Application->CreateForm (__classid(TForm4), &Form4);

Application->Run();

}

catch (Exception &exception)

{

Application->ShowException(&exception);

}

catch (…)

{

try

{

throw Exception(«»);

}

catch (Exception &exception)

{

Application->ShowException(&exception);

}

}

return 0;

}

 // -

Файл CursovForm.cpp

 // -

 // -

#include <vcl.h>

#include <stdio.h>

#include <string.h>

#pragma hdrstop

#include «Unit2.h»

#include «CursovForm.h»

 // -

#pragma package (smart_init)

#pragma resource «*.dfm»

TForm1 *Form1;

 // -

__fastcall TForm1:TForm1 (TComponent* Owner)

: TForm(Owner)

{

}

 // -

Data object;

void __fastcall TForm1:read_btClick (TObject *Sender)

{

if (! OpenDialog1->Execute()) return;

FILE* inp = fopen (OpenDialog1->FileName.c_str(), «r»);

if (inp == NULL)

{

ShowMessage («404 Файл не найден»);

return;

}

while (! feof(inp))

{

memset (&object.data[nrec], 0, sizeof(zapis));

fscanf (inp, «%s % s % s % d % s % s», &object.data[nrec].surname,

&object.data[nrec].name, &object.data[nrec].otch, &object.data[nrec].zarplata,

&object.data[nrec].rezhim, &object.data[nrec].dol);

TListItem *Item = ListView1->Items->Add();

Item->Caption =object.data[nrec].surname;

Item->SubItems->Add (object.data[nrec].name);

Item->SubItems->Add (object.data[nrec].otch);

Item->SubItems->Add (object.data[nrec].zarplata);

Item->SubItems->Add (object.data[nrec].rezhim);

Item->SubItems->Add (object.data[nrec].dol);

nrec++;

}

count_combobox1 = 0;

for (int i=0; i<nrec; i++)

{

for (int j=0; j<count_combobox1; j++)

if (! strcmp (Mass1 [j].dol, object.data[i].dol))

b=true;

if (b==false) strcpy (Mass1 [count_combobox1++].dol, object.data[i].dol);

else b=false;

}

ComboBox1->Clear();

for (int i=0; i<count_combobox1; i++)

ComboBox1->Items->Add (Mass1 [i].dol);

count_combobox2 = 0;

for (int i=0; i<nrec; i++)

{

for (int j=0; j<count_combobox2; j++)

if (! strcmp (Mass2 [j].rezhim, object.data[i].rezhim))

b=true;

if (b==false) strcpy (Mass2 [count_combobox2++].rezhim, object.data[i].rezhim);

else b=false;

}

ComboBox2->Clear();

for (int i=0; i<count_combobox2; i++)

ComboBox2->Items->Add (Mass2 [i].rezhim);

fclose(inp);

}

 // -

void __fastcall TForm1:new_btClick (TObject *Sender)

{

new_dol_fl->Clear();

new_name_fl->Clear();

new_otch_fl->Clear();

new_rez_fl->Clear();

new_surname_fl->Clear();

new_zar_fl->Clear();

if (Panel1->Visible == true)

Panel1->Visible = false;

else

Panel1->Visible = true;

}

 // -

void __fastcall TForm1:add_btClick (TObject *Sender)

{

if ((new_dol_fl->Text == «»)||(new_name_fl->Text == «»)||

(new_otch_fl->Text == «»)||(new_rez_fl->Text == «»)||

(new_surname_fl->Text == «»)||(new_zar_fl->Text == «»))

{

ShowMessage («Заполните все поля!»);

return;

}

if (select == -1)

{

object.new_zapis (object.data, nrec, new_surname_fl->Text.c_str(),

new_name_fl->Text.c_str(),

new_otch_fl->Text.c_str(), StrToInt (new_zar_fl->Text),

new_rez_fl->Text.c_str(), new_dol_fl->Text.c_str());

TListItem *Item = ListView1->Items->Add();

Item->Caption = object.data[nrec].surname;

Item->SubItems->Add (object.data[nrec].name);

Item->SubItems->Add (object.data[nrec].otch);

Item->SubItems->Add (object.data[nrec].zarplata);

Item->SubItems->Add (object.data[nrec].rezhim);

Item->SubItems->Add (object.data [nrec++].dol);

}

else

{

object.new_zapis (object.data, nrec, new_surname_fl->Text.c_str(), new_name_fl->Text.c_str(), new_otch_fl->Text.c_str(), StrToInt (new_zar_fl->Text), new_rez_fl->Text.c_str(), new_dol_fl->Text.c_str());

ListView1->Items->Item[select]->Caption = new_surname_fl->Text;

ListView1->Items->Item[select]->SubItems->Strings[0] =

new_name_fl->Text;

ListView1->Items->Item[select]->SubItems->Strings[1] =

new_otch_fl->Text;

ListView1->Items->Item[select]->SubItems->Strings[2] =

new_zar_fl->Text;

ListView1->Items->Item[select]->SubItems->Strings[3] =

new_rez_fl->Text;

ListView1->Items->Item[select]->SubItems->Strings[4] =

new_dol_fl->Text;

select = -1;

new_dol_fl->Clear();

new_name_fl->Clear();

new_otch_fl->Clear();

new_rez_fl->Clear();

new_surname_fl->Clear();

new_zar_fl->Clear();

}

bool b=false;

count_combobox1 = 0;

for (int i=0; i<nrec; i++)

{

for (int j=0; j<count_combobox1; j++)

if (! strcmp (Mass1 [j].dol, object.data[i].dol))

b=true;

if (b==false) strcpy (Mass1 [count_combobox1++].dol, object.data[i].dol);

else b=false;

}

ComboBox1->Clear();

for (int i=0; i<count_combobox1; i++)

ComboBox1->Items->Add (Mass1 [i].dol);

count_combobox2 = 0;

for (int i=0; i<nrec; i++)

{

for (int j=0; j<count_combobox2; j++)

if (! strcmp (Mass2 [j].rezhim, object.data[i].rezhim))

b=true;

if (b==false) strcpy (Mass2 [count_combobox2++].rezhim, object.data[i].rezhim);

else b=false;

}

ComboBox2->Clear();

for (int i=0; i<count_combobox2; i++)

ComboBox2->Items->Add (Mass2 [i].rezhim);

}

 // -

void __fastcall TForm1:sr_job_btClick (TObject *Sender)

{

char dol[16];

sscanf (ComboBox1->Text.c_str(), «%s», &dol);

strcpy (DOL, dol);

long sum_dol = 0;

int count = 0;

for (int i = 0; i<nrec; i++)

{

if (! strcmp (object.data[i].dol, dol))

{

sum_dol+= object.data[i].zarplata;

count++;

}

}

SUM_DOL = sum_dol;

if (count == 0)

{

ShowMessage («Такой должности нет в списке»);

B_DOL = true;

return;

}

float ave_dol = (float) sum_dol/(float) count;

AVE_DOL = ave_dol;

char buf[16];

sprintf (buf, «%.2f», ave_dol);

sr_job_fl->Text = buf;

sprintf (buf, «%d», sum_dol);

sum_job_fl->Text = buf;

}

 // -

void __fastcall TForm1:sr_rez_btClick (TObject *Sender)

{

char rez[16];

sscanf (ComboBox2->Text.c_str(), «%s», &rez);

strcpy (REZ, rez);

long sum_rez = 0;

int count = 0;

for (int i = 0; i<nrec; i++)

{

if (! strcmp (object.data[i].rezhim, rez))

{

sum_rez+= object.data[i].zarplata;

count++;

}

}

SUM_REZ = sum_rez;

B_REZ = false;

if (count == 0)

{

ShowMessage («В списке нет людей с таким режимом работы»);

B_REZ = true;

return;

}

float ave_rez = (float) sum_rez/(float) count;

AVE_REZ = ave_rez;

char buf[16];

sprintf (buf, «%.2f», ave_rez);

sr_rez_fl->Text = buf;

sprintf (buf, «%d», sum_rez);

sum_rez_fl->Text = buf;

}

 // -

void __fastcall TForm1:delete_btClick (TObject *Sender)

{

if (ListView1->Selected == NULL) ShowMessage («Сначала выберите запись»); else

{

if (MessageDlg («Вы точно хотите удалить запись?», mtConfirmation, TMsgDlgButtons() << mbYes << mbNo, 0) == mrYes)

{

int num_del = ListView1->ItemIndex;

object.delete_zapis (object.data, num_del, nrec);

ListView1->Items->Item [num_del]->Delete();

}

}

bool b=false;

count_combobox1 = 0;

for (int i=0; i<nrec; i++)

{

for (int j=0; j<count_combobox1; j++)

if (! strcmp (Mass1 [j].dol, object.data[i].dol))

b=true;

if (b==false) strcpy (Mass1 [count_combobox1++].dol, object.data[i].dol);

else b=false;

}

ComboBox1->Clear();

for (int i=0; i<count_combobox1; i++)

ComboBox1->Items->Add (Mass1 [i].dol);

count_combobox2 = 0;

for (int i=0; i<nrec; i++)

{

for (int j=0; j<count_combobox2; j++)

if (! strcmp (Mass2 [j].rezhim, object.data[i].rezhim))

b=true;

if (b==false) strcpy (Mass2 [count_combobox2++].rezhim, object.data[i].rezhim);

else b=false;

}

ComboBox2->Clear();

for (int i=0; i<count_combobox2; i++)

ComboBox2->Items->Add (Mass2 [i].rezhim);

}

 // -

void __fastcall TForm1:del_rec_btClick (TObject *Sender)

{

if (! SaveDialog2->Execute())

{

ShowMessage («Ошибка записи данных»);

return;

}

else

{

FILE* out = fopen (SaveDialog2->FileName.c_str(), «w»);

for (int i=0; i<nrec-1; i++)

{

fprintf (out, «%-9s%-11s%-14s % d%-9s % s\n», object.data[i].surname, object.data[i].name,

object.data[i].otch, object.data[i].zarplata, object.data[i].rezhim, object.data[i].dol);

}

fprintf (out, «%-9s%-11s%-14s % d%-9s % s», object.data[nrec].surname, object.data[nrec].name,

object.data[nrec].otch, object.data[nrec].zarplata, object.data[nrec].rezhim, object.data[nrec].dol);

fclose(out);

ShowMessage («Данные успешно записаны»);

}

}

 // -

void __fastcall TForm1:CLEAN_BTClick (TObject *Sender)

{

ListView1->Clear();

nrec=0;

}

 // -

void __fastcall TForm1: Button1Click (TObject *Sender)

{

FILE* out = fopen (SaveDialog2->FileName.c_str(), «w»);

if (! SaveDialog2->Execute())

{

ShowMessage («Ошибка записи в файл»);

fclose(out);

return;

}

for (int i=0; i<nrec-1; i++)

fprintf (out, «%-9s%-11s%-14s % d%-9s % s\n»,

ListView1->Items->Item[i]->Caption.c_str(),

ListView1->Items->Item[i]->SubItems->Strings[0].c_str(),

ListView1->Items->Item[i]->SubItems->Strings[1].c_str(),

StrToInt (ListView1->Items->Item[i]->SubItems->Strings[2].c_str()),

ListView1->Items->Item[i]->SubItems->Strings[3].c_str(),

ListView1->Items->Item[i]->SubItems->Strings[4].c_str());

fprintf (out, «%-9s%-11s%-14s % d%-9s % s»,

ListView1->Items->Item [nrec-1]->Caption.c_str(),

ListView1->Items->Item [nrec-1]->SubItems->Strings[0].c_str(),

ListView1->Items->Item [nrec-1]->SubItems->Strings[1].c_str(),

StrToInt (ListView1->Items->Item [nrec-1]->SubItems->Strings[2].c_str()), ListView1->Items->Item [nrec-1]->SubItems->Strings[3].c_str(),

ListView1->Items->Item [nrec-1]->SubItems->Strings[4].c_str());

ShowMessage («Данные успешно записаны»);

fclose(out);

}

 // -

void __fastcall TForm1:graf_btClick (TObject *Sender)

{

Form2->Visible=true;

Form2->Series1->Clear();

for (int i=0; i<nrec; i++)

{

char buf[56];

sprintf (buf, «%s % s % s», object.data[i].surname, object.data[i].name,

object.data[i].otch);

switch (i % 10)

{

case 0: Form2->Series1->Add (object.data[i].zarplata, buf, clGreen); break;

case 1: Form2->Series1->Add (object.data[i].zarplata, buf, clYellow); break;

case 2: Form2->Series1->Add (object.data[i].zarplata, buf, clRed); break;

case 3: Form2->Series1->Add (object.data[i].zarplata, buf, clBlack); break;

case 4: Form2->Series1->Add (object.data[i].zarplata, buf, clSilver); break;

case 5: Form2->Series1->Add (object.data[i].zarplata, buf, clLime); break;

case 6: Form2->Series1->Add (object.data[i].zarplata, buf, clCream); break;

case 7: Form2->Series1->Add (object.data[i].zarplata, buf, clGray); break;

case 8: Form2->Series1->Add (object.data[i].zarplata, buf, clFuchsia); break;

case 9: Form2->Series1->Add (object.data[i].zarplata, buf, clHotLight); break;

default: Form2->Series1->Add (object.data[i].zarplata, buf, clWhite);

}

}

}

 // -

void __fastcall TForm1:sort_btClick (TObject *Sender)

{

if (combo_sort->Text == «Зарплата»)

object.sort_zp (object.data, nrec);

else

if (combo_sort->Text == «Фамилия»)

object.sort_surname (object.data, nrec);

else

if (combo_sort->Text == «Имя»)

object.sort_name (object.data, nrec);

else

if (combo_sort->Text == «Отчество»)

object.sort_otch (object.data, nrec);

else

if (combo_sort->Text == «Режим работы»)

object.sort_rez (object.data, nrec);

else

if (combo_sort->Text == «Должность»)

object.sort_dol (object.data, nrec);

else

ShowMessage («Введите критерий сортировки!!!!!!!!!»);

ListView1->Clear();

for (int i = 0; i<nrec; i++)

{

TListItem *Item = ListView1->Items->Add();

Item->Caption = object.data[i].surname;

Item->SubItems->Add (object.data[i].name);

Item->SubItems->Add (object.data[i].otch);

Item->SubItems->Add (object.data[i].zarplata);

Item->SubItems->Add (object.data[i].rezhim);

Item->SubItems->Add (object.data[i].dol);

}

}

 // -

void __fastcall TForm1:search_btClick (TObject *Sender)

{

char key[16];

strcpy (key, search_fl->Text.c_str());

object.search (object.data, nrec, key);

}

 // -

void __fastcall TForm1:zapisi_btClick (TObject *Sender)

{

if (zapisi_panel->Visible == true) zapisi_panel->Visible = false; else

zapisi_panel->Visible = true;

}

 // -

void __fastcall TForm1:analiz_btClick (TObject *Sender)

{

if (analiz_panel->Visible == true) analiz_panel->Visible = false; else

analiz_panel->Visible = true;

}

 // -

void __fastcall TForm1:change_btClick (TObject *Sender)

{

if (ListView1->Selected == NULL)

{

ShowMessage («Сначала выберите запись»);

select = -1;

return;

}

else

{

if (Panel1->Visible == false) Panel1->Visible = true;

select = ListView1->ItemFocused->Index;

new_surname_fl->Text = object.data[select].surname;

new_name_fl->Text = object.data[select].name;

new_otch_fl->Text = object.data[select].otch;

new_zar_fl->Text = object.data[select].zarplata;

new_rez_fl->Text = object.data[select].rezhim;

new_dol_fl->Text = object.data[select].dol;

}

}

 // -

void __fastcall TForm1:search_flClick (TObject *Sender)

{

if (search_fl->Text == «Введите имя сотрудника») search_fl->Text = «»;

}

 // -

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

{

delete [] Mass1;

delete [] Mass2;

}

 // -

Выводы

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

1) Объектно-ориентированный подход к программированию оказался очень удобным для реализации и решения различных задач, связанных с данным проектом.

2) Работа с выпадающими списками должностей и режимами работ сотрудников выполнена с использованием двух классов. Так как эти классы очень схожи, мной было принято решение о создании общего абстрактного класса combo_box с методом обновления данных в списке, а также двух классов, наследуемых от него (один для режима работа, другой - для должностей).

3) При реализации сортировок по различным атрибутам в работе используются практически идентичные методы сортировки в классе Data. В связи с этим целесообразно использование шаблонов для реализации этих методов.

4) Статический массив записей был заменен динамическим, что позволило сэкономить память и благоприятно сказалось на времени работы с массивом.

5) Мною был изучен компонент TChart, который я применил для отображения исходных данных в виде столбчатой диаграммы. Благодаря свойствам Axis и Legend можно работать с отображением координатных осей и легенды графика, а с помощью свойства Font можно выбирать цвет столбцов диаграммы, что облегчает визуальное восприятие графика.

6) В ходе работы с файловым вводом и выводом данных мною был приобретён опыт в работе с функциями из стандартной библиотеки работы с файлами <func.h>, а также с компонентами TSaveDialog и TOpenDialog.

7) Удобным оказалось использование диалогов с пользователем, реализующихся с помощью функций ShowMessage и MessageDlg, инструктирующие или предупреждающие пользователя.

8) Данный проект используется для создания упрощенной базы данных. Для более детального анализа поставленной задачи и создания более сложной базы данных эффективнее использовать другие специализированные программы, например Microsoft Office Access, так как в созданной мною базе данных храниться только основная информация и отсутствуют многие функции, позволяющие решать более сложные задачи.

Список литературы

интерфейс программный код графический

1. Программирование и основы алгоритмизации. / Шевченко А.В. - СПб: Издательство СПбГЭТУ «ЛЭТИ», 2011. 120 с.

2. C/C++. Программирование на языке высокого уровня / Павловская Т.А. - СПб: Издательство «Питер», 2003. -461 с.

3. Объектно-ориентированное программирование в С++/ Лафоре Р. - СПб: Издательство «Питер», 2004. 928 с.

Размещено на Allbest.ru

...

Подобные документы

  • Анализ проектирования интерфейса программы. Выбор и назначение визуальных компонентов. Изучение экранных форм приложения. Модули, процедуры, функции проекта и их назначение. Листинг программного кода. Результаты работы автоматизированного продукта.

    курсовая работа [1,9 M], добавлен 11.12.2017

  • Рассмотрение условий работы сотрудников фирмы "Окна Марио". Составление базы данных для проектирования информационной системы учета и контроля заказов. Разработка проекта. Произведенный расчет экономической эффективности и экологичности программы.

    дипломная работа [4,6 M], добавлен 29.08.2014

  • Реляционная база данных. Создание и проектирование баз данных в среде Borland Delphi 7. Основные функции базы данных: учет информации об ассортименте продукции; учет сведений о дистрибьюторах фирмы. Назначение программы и инструкция пользователю.

    курсовая работа [507,3 K], добавлен 22.06.2009

  • Описание разрабатываемой программы с точки зрения пользователя и программиста. Поэтапная разработка программной системы. Создание базы данных в Access. Разработка структуры классов. Создание структуры для хранения данных. Проектирование интерфейса.

    курсовая работа [1,4 M], добавлен 07.08.2013

  • Понятие базы данных, ее виды. Иерархическая, сетевая, реляционная модели данных. Создание автоматизированной системы "Учет зарплаты строительной фирмы". Анализ требований и выбор решений. Этапы создания базы данных. Источники финансирования проекта.

    дипломная работа [1,4 M], добавлен 11.06.2013

  • Разработка проекта приложения, содержащего локальную базу данных для хранения и обработки ведомости работы расчетно-кассового узла универсама. Процесс разработки интерфейса и проекта интерактивной системы. Запуск и отладка, инструкция по эксплуатации.

    курсовая работа [34,2 K], добавлен 29.03.2011

  • Создание информационной системы, способной автоматически выполнять учет продаж. Разработка физической модели базы данных, определение логических связей. Проектирование форм, запросов и графического интерфейса системы. Экономическая эффективность проекта.

    дипломная работа [5,1 M], добавлен 02.10.2011

  • Создание базы данных, автоматизирующей процесс ведения заказов продукции отделом организации. Описание предметной области. Построение инфологической модели. Задание имени проекта и его расположение. Схема связей между таблицами. Создание отчетов и форм.

    курсовая работа [2,4 M], добавлен 03.03.2015

  • Разработка и отладка программного проекта для осуществления автоматизированного складского учета материальных ценностей. Учет входящих заявок в базе данных от подразделений на получение материалов, осуществление их удобного просмотра и редактирования.

    курсовая работа [610,1 K], добавлен 08.08.2013

  • Проектирование информационной системы. Проект базы данных, проект пользовательского интерфейса системы, проекты реализации основных функций системы. Описание программного проекта: описание модулей (файлов) и подсистем проекта, глобальных данных.

    курсовая работа [938,5 K], добавлен 31.10.2015

  • Разработка и анализ интерфейса пользователя базы данных. Ознакомление с процессом поэтапного создания проекта и добавления файла локальной базы данных. Исследование и характеристика главных принципов программирования функциональной части интерфейса.

    дипломная работа [3,0 M], добавлен 27.09.2017

  • Особенности проектирования программы на языке С++ для обработки данных из таблиц базы данных. Основные функции программы, создание концептуальной модели базы данных и диаграммы классов, разработка интерфейса пользователя и запросов к базе данных.

    курсовая работа [2,1 M], добавлен 08.06.2012

  • Разработка проекта системы, программы, интерфейса взаимодействия пользователя с системой. Программная база для реализации проекта "Электронная администрация". Создание удобной среды для пользователей системы. Разработка форм входных и выходных данных.

    дипломная работа [3,9 M], добавлен 20.06.2012

  • Анализ современных форм представления статистических данных, используемых для выявления степени и уровня экономической асимметрии регионального развития. Создание удобного программного интерфейса для работы с базой данных. Разработка структуры модуля.

    курсовая работа [2,1 M], добавлен 08.12.2013

  • Разработка и реализация проекта информационной системы, предназначенной для хранения сведения о клиентах и недвижимости. Моделирование и реализация информационной системы. Разработка пользовательского интерфейса. Затраты на написание программы и отладку.

    курсовая работа [1,0 M], добавлен 30.06.2022

  • Разработка программного обеспечения, предназначенного для автоматизации деятельности туристической фирмы. Анализ и проектирование базы данных предметной области. Создание концептуальной, логической и физической моделей данных и программы их обработки.

    курсовая работа [816,5 K], добавлен 05.02.2018

  • Разработка программного обеспечения для ввода, хранения, редактирования и получения информации по материалам, клиентам, заказам, учету затрат и доходов строительной фирмы. Изучение предметной области; построение диаграммы потоков данных, структуры базы.

    курсовая работа [1,1 M], добавлен 21.09.2015

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

    курсовая работа [449,8 K], добавлен 14.01.2011

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

    курсовая работа [1,1 M], добавлен 02.02.2014

  • Проектирование структуры и архитектуры программного продукта. Реализация программы конвертера файлов баз данных. Описание пользовательского интерфейса. Выбор порядка конвертации dbf файлов. Создание и исполнение шаблонов. Расчет себестоимости продукта.

    дипломная работа [2,2 M], добавлен 21.06.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.