Xreferat.com » Рефераты по информатике и программированию » Информационная система сравнительного анализа работы компьютера

Информационная система сравнительного анализа работы компьютера

информация о системе.

DWORD cchBuff = 256; // длина имени компьютера или

// пользователя.

DWORD dwResult; // возвращаемое значение функции.

// Получаем и отображаем имя компьютера.

LPTSTR temp = new TCHAR [256];

if (GetComputerName (temp, &cchBuff))

{

strcat (lpszSystemInfo, "Имя компьютера: tt");

strcat (lpszSystemInfo, temp);

strcat (lpszSystemInfo, " ");

int n_long = strlen (lpszSystemInfo);

lpszSystemInfo [n_long-2] = 13;

lpszSystemInfo [n_long-1] = 10;

}

// Получаем и отображаем имя пользователя.

if (GetUserName (temp, &cchBuff))

{

strcat (lpszSystemInfo, "Имя пользователя: t");

strcat (lpszSystemInfo, temp);

strcat (lpszSystemInfo, " ");

int n_long = strlen (lpszSystemInfo);

lpszSystemInfo [n_long-2] = 13;

lpszSystemInfo [n_long-1] = 10;

}

// Получаем и отображаем системную директорию.

if (GetSystemDirectory (temp, MAX_PATH+1))

{

strcat (lpszSystemInfo, "Системная директория: t");

strcat (lpszSystemInfo, temp);

strcat (lpszSystemInfo, " ");

int n_long = strlen (lpszSystemInfo);

lpszSystemInfo [n_long-2] = 13;

lpszSystemInfo [n_long-1] = 10;

}

// Получаем и отображаем директорию Windows.

if (GetWindowsDirectory (temp, MAX_PATH+1))

{

strcat (lpszSystemInfo, "Директория Windows: t");

strcat (lpszSystemInfo, temp);

strcat (lpszSystemInfo, " ");

int n_long = strlen (lpszSystemInfo);

lpszSystemInfo [n_long-2] = 13;

lpszSystemInfo [n_long-1] = 10;

}

// Получаем переменную окружения OS.

dwResult = ExpandEnvironmentStrings (

"Тип OS: ttt%OS%",

temp,

BUFSIZE);

if (dwResult <= BUFSIZE)

{

strcat (lpszSystemInfo, temp);

strcat (lpszSystemInfo, " ");

int n_long = strlen (lpszSystemInfo);

lpszSystemInfo [n_long-2] = 13;

lpszSystemInfo [n_long-1] = 10;

}

dwResult = ExpandEnvironmentStrings (

"Папка TEMP: tt%TEMP%",

temp,

BUFSIZE);

if (dwResult <= BUFSIZE)

{

strcat (lpszSystemInfo, temp);

strcat (lpszSystemInfo, " ");

int n_long = strlen (lpszSystemInfo);

lpszSystemInfo [n_long-2] = 13;

lpszSystemInfo [n_long-1] = 10;

}

SendMessage (StaticText, WM_SETTEXT, 0, (LPARAM) lpszSystemInfo);

}

void MemStat ()

{

MEMORYSTATUS stat;

GlobalMemoryStatus (&stat);

LPTSTR lpszSystemInfo = new char [BUFSIZE]; // указатель на строку, в которой

for (int a=0; a<BUFSIZE; a++)

lpszSystemInfo [a] = ''; // будет информация о системе.

char *tmp = new char [32];

strcat (lpszSystemInfo, "Размер структуры MemoryStatus ttt");

itoa (stat. dwLength, tmp,

10);

strcat (lpszSystemInfo, tmp);

strcat (lpszSystemInfo, " ");

int n_long = strlen (lpszSystemInfo);

lpszSystemInfo [n_long-2] = 13;

lpszSystemInfo [n_long-1] = 10;

strcat (lpszSystemInfo, "Количество используемой ОЗУ,% ttt");

itoa (stat. dwMemoryLoad, tmp,

10);

strcat (lpszSystemInfo, tmp);

strcat (lpszSystemInfo, " ");

n_long = strlen (lpszSystemInfo);

lpszSystemInfo [n_long-3] = 13;

lpszSystemInfo [n_long-2] = 10;

strcat (lpszSystemInfo, "Количество физической памяти, Kb ttt");

itoa (stat. dwTotalPhys/DIV, tmp,

10);

strcat (lpszSystemInfo, tmp);

strcat (lpszSystemInfo, " ");

n_long = strlen (lpszSystemInfo);

lpszSystemInfo [n_long-2] = 13;

lpszSystemInfo [n_long-1] = 10;

strcat (lpszSystemInfo, "Свободно физической памяти, Kb ttt");

itoa (stat. dwAvailPhys/DIV, tmp,

10);

strcat (lpszSystemInfo, tmp);

strcat (lpszSystemInfo, " ");

n_long = strlen (lpszSystemInfo);

lpszSystemInfo [n_long-2] = 13;

lpszSystemInfo [n_long-1] = 10;

strcat (lpszSystemInfo, "Количество виртуальной памяти, Kb ttt");

itoa (stat. dwTotalVirtual/DIV, tmp,

10);

strcat (lpszSystemInfo, tmp);

strcat (lpszSystemInfo, " ");

n_long = strlen (lpszSystemInfo);

lpszSystemInfo [n_long-2] = 13;

lpszSystemInfo [n_long-1] = 10;

strcat (lpszSystemInfo, "Количество свободной виртуальной памяти, Kb t");

itoa (stat. dwAvailVirtual/DIV, tmp,

10);

strcat (lpszSystemInfo, tmp);

strcat (lpszSystemInfo, " ");

n_long = strlen (lpszSystemInfo);

lpszSystemInfo [n_long-2] = 13;

lpszSystemInfo [n_long-1] = 10;

n_long = strlen (lpszSystemInfo);

for (a=0; a<n_long; a++)

SendMessage (StaticText, WM_SETTEXT, 0, (LPARAM) lpszSystemInfo);

}

void CPUInfo ()

{

SYSTEM_INFO siSysInfo;

GetSystemInfo (&siSysInfo);

LPTSTR lpszSystemInfo = new char [4000]; // указатель на строку, в которой

for (int a=0; a<BUFSIZE; a++)

lpszSystemInfo [a] = ''; // будет информация о системе.

char *tmp = new char [32];

strcat (lpszSystemInfo, "Кличество процессоров (ядер) t");

itoa (siSysInfo. dwNumberOfProcessors, tmp,

10);

strcat (lpszSystemInfo, tmp);

strcat (lpszSystemInfo, " ");

int n_long = strlen (lpszSystemInfo);

lpszSystemInfo [n_long-2] = 13;

lpszSystemInfo [n_long-1] = 10;

strcat (lpszSystemInfo, "Тип процессора ttt");

itoa (siSysInfo. dwProcessorType, tmp,

10);

strcat (lpszSystemInfo, tmp);

strcat (lpszSystemInfo, " ");

n_long = strlen (lpszSystemInfo);

lpszSystemInfo [n_long-2] = 13;

lpszSystemInfo [n_long-1] = 10;

strcat (lpszSystemInfo, "Архитектура процессора tt");

itoa (siSysInfo. wProcessorArchitecture, tmp, 20);

strcat (lpszSystemInfo, tmp);

strcat (lpszSystemInfo, " ");

n_long = strlen (lpszSystemInfo);

lpszSystemInfo [n_long-2] = 13;

lpszSystemInfo [n_long-1] = 10;

strcat (lpszSystemInfo, "Level процессора ttt");

itoa (siSysInfo. wProcessorLevel, tmp, 20);

strcat (lpszSystemInfo, tmp);

strcat (lpszSystemInfo, " ");

n_long = strlen (lpszSystemInfo);

lpszSystemInfo [n_long-2] = 13;

lpszSystemInfo [n_long-1] = 10;

strcat (lpszSystemInfo, "Revision процессора tt");

itoa (siSysInfo. wProcessorRevision, tmp, 20);

strcat (lpszSystemInfo, tmp);

strcat (lpszSystemInfo, " ");

n_long = strlen (lpszSystemInfo);

lpszSystemInfo [n_long-2] = 13;

lpszSystemInfo [n_long-1] = 10;

strcat (lpszSystemInfo, "Активная маска процессора tt");

itoa (siSysInfo. dwActiveProcessorMask, tmp, 20);

strcat (lpszSystemInfo, tmp);

strcat (lpszSystemInfo, " ");

n_long = strlen (lpszSystemInfo);

lpszSystemInfo [n_long-2] = 13;

lpszSystemInfo [n_long-1] = 10;

n_long = strlen (lpszSystemInfo);

for (a=0; a<n_long; a++)

SendMessage (StaticText, WM_SETTEXT, 0, (LPARAM) lpszSystemInfo);

}

void GetCurentIP ()

{

LPTSTR lpszSystemInfo = new char [BUFSIZE]; // указатель на строку, в которой

for (int a=0; a<BUFSIZE; a++)

lpszSystemInfo [a] = ''; // будет информация о системе.

char *tmp = new char [32];

WSADATA wsaData;

WORD WINSOCK_VERSION;

if (! WSAStartup (WINSOCK_VERSION, &wsaData))

{

char chInfo [64];

if (! gethostname (chInfo,sizeof (chInfo)))

{

strcat (lpszSystemInfo, "Имя локальной машины: tt");

strcat (lpszSystemInfo, chInfo);

strcat (lpszSystemInfo, " ");

int n_long = strlen (lpszSystemInfo);

lpszSystemInfo [n_long] = 13;

lpszSystemInfo [n_long+1] = 10;

hostent *sh;

sh=gethostbyname ( (char*) &chInfo);

if (sh! =NULL)

{

strcat (lpszSystemInfo, "Имя доступной локальной машины: t");

strcat (lpszSystemInfo, sh->h_name);

strcat (lpszSystemInfo, " ");

int n_long = strlen (lpszSystemInfo);

lpszSystemInfo [n_long] = 13;

lpszSystemInfo [n_long+1] = 10;

int nAdapter = 0;

while (sh->h_addr_list [nAdapter])

{

struct sockaddr_in adr;

memcpy (&adr. sin_addr,sh->h_addr_list [nAdapter],sh->h_length);

strcat (lpszSystemInfo, "IP адрес локальной машины: t");

strcat (lpszSystemInfo, inet_ntoa (adr. sin_addr));

strcat (lpszSystemInfo, " ");

int n_long = strlen (lpszSystemInfo);

lpszSystemInfo [n_long] = 13;

lpszSystemInfo [n_long+1] = 10;

nAdapter++;

}

}

WSACleanup (); }

}

/*NCB SNcb; // Структура для работы с NetBios

CHAR rc = 0; // Код возврата

CHAR Status [256]; // Буфер для получения данных

CHAR HostName [] ="SomeHost"; // Имя удалённого компа

CHAR MAC [20]; // Буфер для нашего MAC-адреса.

memset (&SNcb, 0, sizeof (SNcb));

SNcb. ncb_command = NCBRESET;

SNcb. ncb_lana_num = 0;

rc=Netbios (&SNcb); // Сбрасываем NetBios

memset (&SNcb, 0, sizeof (NCB));

SNcb. ncb_command = NCBASTAT;

SNcb. ncb_buffer = (unsigned char*) Status;

SNcb. ncb_length = 256;

lstrcpy ( (char*) SNcb. ncb_callname, HostName);

SNcb. ncb_lana_num = 0; // Сетевой адаптор по умалчанию

rc = Netbios (&SNcb);

if (rc==NRC_GOODRET) // Если всё ОК

memcpy (MAC, Status,

6);

// itoa (MAC, tmp, 20);

strcat (lpszSystemInfo, Status);

strcat (lpszSystemInfo, " ");

int n_long = strlen (lpszSystemInfo);

lpszSystemInfo [n_long] = 13;

lpszSystemInfo [n_long+1] = 10; */

SendMessage (StaticText, WM_SETTEXT, 0, (LPARAM) lpszSystemInfo);

}

void PrinterInfo ()

{

LPTSTR lpszSystemInfo = new char [BUFSIZE]; // указатель на строку, в которой

for (int a=0; a<BUFSIZE; a++)

lpszSystemInfo [a] = '';

PRINTER_INFO_2 printinfo;

char pname [100];

char strpPrinterName [100], strpPortName [100], strpDriverName [100], strpPrintProcessor [100];

printinfo. pPrinterName = strpPrinterName;

printinfo. pPortName = strpPortName;

printinfo. pDriverName = strpDriverName;

printinfo. pPrintProcessor = strpPrintProcessor;

PRINTER_INFO_2 *Pr;

DWORD byteNeed = 0,prCount=0; // Кол-во необходимых байт, количество принтеров

// Делаем первый вызов с буфером NULL, чтоб узнать нужный размер буфера

EnumPrinters (PRINTER_ENUM_CONNECTIONS|PRINTER_ENUM_LOCAL,NULL,2,NULL,0,&byteNeed,&prCount);

// Создаем буфер

Pr = new PRINTER_INFO_2 [byteNeed];

// Делаем второй вызов уже с нужным буфером

if (EnumPrinters (PRINTER_ENUM_CONNECTIONS|PRINTER_ENUM_LOCAL,NULL,2, (LPBYTE) Pr,byteNeed,&byteNeed,&prCount))

{

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

{

strcat (lpszSystemInfo, "Установленные принтеры: t");

strcat (lpszSystemInfo, Pr [i]. pPrinterName);

strcat (lpszSystemInfo, " ");

int n_long = strlen (lpszSystemInfo);

lpszSystemInfo [n_long-2] = 13;

lpszSystemInfo [n_long-1] = 10;

strcat (lpszSystemInfo, "Порт принтера: tt");

strcat (lpszSystemInfo, Pr [i]. pPortName);

strcat (lpszSystemInfo, " ");

n_long = strlen (lpszSystemInfo);

lpszSystemInfo [n_long-2] = 13;

lpszSystemInfo [n_long-1] = 10;

strcat (lpszSystemInfo, "Драйвер принтера: t");

strcat (lpszSystemInfo, Pr [i]. pDriverName);

strcat (lpszSystemInfo, " ");

n_long = strlen (lpszSystemInfo);

lpszSystemInfo [n_long-2] = 13;

lpszSystemInfo [n_long-1] = 10;

strcat (lpszSystemInfo, "Процессор печати: t");

strcat (lpszSystemInfo, Pr [i]. pPrintProcessor);

strcat (lpszSystemInfo, " ");

n_long = strlen (lpszSystemInfo);

lpszSystemInfo [n_long-2] = 13;

lpszSystemInfo [n_long-1] = 10;

SendMessage (StaticText, WM_SETTEXT, 0, (LPARAM) lpszSystemInfo);

}

}

delete Pr;

}

void DxInfo ()

{

LPTSTR lpszSystemInfo = new char [BUFSIZE]; // указатель на строку, в которой

for (int a=0; a<BUFSIZE; a++)

lpszSystemInfo [a] = '';

char *tmp = new char [20];

GUID *lpGUID;

LPDIRECTDRAW lplpDD;

DirectDrawCreate (0,&lplpDD,NULL);

DDSURFACEDESC pDDS;

ZeroMemory (&pDDS, sizeof (DDSURFACEDESC));

pDDS. dwSize = sizeof (DDSURFACEDESC);

lplpDD->GetDisplayMode (&pDDS);

strcat (lpszSystemInfo, "Информация о текущем видеорежиме: ");

int n_long = strlen (lpszSystemInfo);

lpszSystemInfo [n_long] = 13;

lpszSystemInfo [n_long+1] = 10;

lpszSystemInfo [n_long+2] = 13;

lpszSystemInfo [n_long+3] = 10;

itoa (pDDS. dwHeight, tmp,

10);

strcat (lpszSystemInfo, "Количество точек по вертикали: t");

strcat (lpszSystemInfo, tmp);

strcat (lpszSystemInfo, " ");

n_long = strlen (lpszSystemInfo);

lpszSystemInfo [n_long-2] = 13;

lpszSystemInfo [n_long-1] = 10;

itoa (pDDS. dwWidth, tmp,

10);

strcat (lpszSystemInfo, "Количество точек по горизонтали: t");

strcat (lpszSystemInfo, tmp);

strcat (lpszSystemInfo, " ");

n_long = strlen (lpszSystemInfo);

lpszSystemInfo [n_long-2] = 13;

lpszSystemInfo [n_long-1] = 10;

itoa (pDDS. dwRefreshRate, tmp,

10);

strcat (lpszSystemInfo, "Частота обновления, Гц: tt");

strcat (lpszSystemInfo, tmp);

strcat (lpszSystemInfo, " ");

n_long = strlen (lpszSystemInfo);

lpszSystemInfo [n_long-2] = 13;

lpszSystemInfo [n_long-1] = 10;

itoa (pDDS. dwAlphaBitDepth, tmp,

10);

strcat (lpszSystemInfo, "Глубина альфа-буффра (бит/пиксел): t");

strcat (lpszSystemInfo, tmp);

strcat (lpszSystemInfo, " ");

n_long = strlen (lpszSystemInfo);

lpszSystemInfo [n_long-2] = 13;

lpszSystemInfo [n_long-1] = 10;

itoa (pDDS. ddpfPixelFormat. dwRGBBitCount, tmp,

10);

strcat (lpszSystemInfo, "Глубина RGB цвета (бит/пиксел): t");

strcat (lpszSystemInfo, tmp);

strcat (lpszSystemInfo, " ");

n_long = strlen (lpszSystemInfo);

lpszSystemInfo [n_long-2] = 13;

lpszSystemInfo [n_long-1] = 10;

itoa (pDDS. ddpfPixelFormat. dwZBufferBitDepth, tmp,

10);

strcat (lpszSystemInfo, "Глубина Z-буффра (бит/пиксел): t");

strcat (lpszSystemInfo, tmp);

strcat (lpszSystemInfo, " ");

n_long = strlen (lpszSystemInfo);

lpszSystemInfo [n_long-2] = 13;

lpszSystemInfo [n_long-1] = 10;

itoa (pDDS. ddpfPixelFormat. dwAlphaBitDepth, tmp,

10);

strcat (lpszSystemInfo, "Глубина альфа-канала (бит/пиксел): t");

strcat (lpszSystemInfo, tmp);

strcat (lpszSystemInfo, " ");

n_long = strlen (lpszSystemInfo);

lpszSystemInfo [n_long-2] = 13;

lpszSystemInfo [n_long-1] = 10;

SendMessage (StaticText, WM_SETTEXT, 0, (LPARAM) lpszSystemInfo);

}

void DrivesInfo ()

{

LPTSTR lpszSystemInfo = new char [BUFSIZE]; // указатель на строку, в которой

for (int a=0; a<BUFSIZE; a++)

lpszSystemInfo [a] = '';

char cDevices [] = "A: \";

DWORD dwDevices = GetLogicalDrives (); // получаем все логические диски

bool flag = false;

for (int i = 0; dwDevices; i++) // проверяем на наличие дисков

{

if (dwDevices & 1)

{

cDevices [0] = 'A' + i;

flag = true;

}

if (flag)

{

flag = false;

strcat (lpszSystemInfo, "Диск ");

strcat (lpszSystemInfo, cDevices);

strcat (lpszSystemInfo, " ");

int n_long = strlen (lpszSystemInfo);

lpszSystemInfo [n_long] = 13;

lpszSystemInfo [n_long+1] = 10;

UINT type = GetDriveType (cDevices);

switch (type)

{

case DRIVE_UNKNOWN:

strcat (lpszSystemInfo, "Не известный тип");

break;

case DRIVE_NO_ROOT_DIR:

strcat (lpszSystemInfo, "Не правильный путь");

break;

case DRIVE_REMOVABLE:

strcat (lpszSystemInfo, "Съёмный диск");

break;

case DRIVE_FIXED:

strcat (lpszSystemInfo, "Жесткий диск");

break;

case DRIVE_REMOTE:

strcat (lpszSystemInfo, "Удалённый или network диск. ");

break;

case DRIVE_CDROM:

strcat (lpszSystemInfo, "CD-ROM диск");

break;

case DRIVE_RAMDISK:

strcat (lpszSystemInfo, "RAM диск");

break;

}

strcat (lpszSystemInfo, " ");

n_long = strlen (lpszSystemInfo);

lpszSystemInfo [n_long-2] = 13;

lpszSystemInfo [n_long-1] = 10;

/***********************************************************/

char VolumeNameBuffer [100];

VolumeNameBuffer [0] = '';

char FileSystemNameBuffer [100];

FileSystemNameBuffer [0] = '';

unsigned long VolumeSerialNumber;

BOOL GetVolumeInformationFlag = GetVolumeInformation (

cDevices,

VolumeNameBuffer,

100,&VolumeSerialNumber,

NULL, // &MaximumComponentLength,

NULL, // &FileSystemFlags,

FileSystemNameBuffer,

100

);

strcat (lpszSystemInfo, "Имя диска: ");

strcat (lpszSystemInfo, VolumeNameBuffer);

strcat (lpszSystemInfo, " ");

n_long = strlen (lpszSystemInfo);

lpszSystemInfo [n_long] = 13;

lpszSystemInfo [n_long+1] = 10;

char *serial = new char [20];

serial [0] = '';

itoa (VolumeSerialNumber, serial,

10);

strcat (lpszSystemInfo, "Серийный номер: ");

strcat (lpszSystemInfo, serial);

strcat (lpszSystemInfo, " ");

n_long = strlen (lpszSystemInfo);

lpszSystemInfo [n_long] = 13;

lpszSystemInfo [n_long+1] = 10;

strcat (lpszSystemInfo, "Файловая система: ");

strcat (lpszSystemInfo, FileSystemNameBuffer);

strcat (lpszSystemInfo, " ");

n_long = strlen (lpszSystemInfo);

lpszSystemInfo [n_long] = 13;

lpszSystemInfo [n_long+1] = 10;

/***********************************************************/

if (type! = DRIVE_FIXED)

{

dwDevices >>= 1;

continue;

}

DWORD FreeBytesAvailable;

DWORD TotalNumberOfBytes;

DWORD TotalNumberOfFreeBytes;

BOOL GetDiskFreeSpaceFlag = GetDiskFreeSpaceEx (

cDevices, // directory name

(PULARGE_INTEGER) &FreeBytesAvailable, // bytes available to caller

(PULARGE_INTEGER) &TotalNumberOfBytes, // bytes on disk

(PULARGE_INTEGER) &TotalNumberOfFreeBytes // free bytes on disk

);

if (GetDiskFreeSpaceFlag! = FALSE)

{

char * free = new char [20];

itoa ( (unsigned long int) FreeBytesAvailable, free,

10);

char * total = new char [20];

itoa ( (unsigned long int) TotalNumberOfBytes, total,

10);

char * avaliable = new char [20];

itoa ( (unsigned long int) TotalNumberOfFreeBytes, avaliable,

10);

strcat (lpszSystemInfo, "Свободно: ");

strcat (lpszSystemInfo, free);

strcat (lpszSystemInfo, " ");

n_long = strlen (lpszSystemInfo);

lpszSystemInfo [n_long-2] = 13;

lpszSystemInfo [n_long-1] = 10;

strcat (lpszSystemInfo, "Общий объем: ");

strcat (lpszSystemInfo, total);

strcat (lpszSystemInfo, " ");

n_long = strlen (lpszSystemInfo);

lpszSystemInfo [n_long-2] = 13;

lpszSystemInfo [n_long-1] = 10;

strcat (lpszSystemInfo, "Доступно ");

strcat (lpszSystemInfo, avaliable);

strcat (lpszSystemInfo, " ");

n_long = strlen (lpszSystemInfo);

lpszSystemInfo [n_long-2] = 13;

lpszSystemInfo [n_long-1] = 10;

n_long = strlen (lpszSystemInfo);

lpszSystemInfo [n_long-2] = 13;

lpszSystemInfo [n_long-1] = 10;

}

}

dwDevices >>= 1;

}

strcat (lpszSystemInfo, " ");

int n_long = strlen (lpszSystemInfo);

lpszSystemInfo [n_long-2] = 13;

lpszSystemInfo [n_long-1] = 10;

SendMessage (StaticText, WM_SETTEXT, 0, (LPARAM) lpszSystemInfo);

}

Index. h

#pragma once

#include <ddraw. h>

#define BUFSIZE 1024

void SysInf ();

void MemStat ();

void CPUInfo ();

void GetCurentIP ();

void PrinterInfo ();

void DxInfo ();

void DrivesInfo ();

class Info

{

public:

Info ();

void CreateInfo (char* value, int Index, void (*function) ());

void (*function) ();

private:

int Index;

char *value;

};

Размещено на

Если Вам нужна помощь с академической работой (курсовая, контрольная, диплом, реферат и т.д.), обратитесь к нашим специалистам. Более 90000 специалистов готовы Вам помочь.
Бесплатные корректировки и доработки. Бесплатная оценка стоимости работы.

Поможем написать работу на аналогичную тему

Получить выполненную работу или консультацию специалиста по вашему учебному проекту
Нужна помощь в написании работы?
Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Пишем статьи РИНЦ, ВАК, Scopus. Помогаем в публикации. Правки вносим бесплатно.

Похожие рефераты: