mirror of
https://github.com/EDeev/student_sorter.git
synced 2026-10-07 20:49:42 +03:00
Compare commits
9 commits
d0a4fa0f30
...
b241a23d23
| Author | SHA1 | Date | |
|---|---|---|---|
| b241a23d23 | |||
| c9b45205e5 | |||
| a5ced39496 | |||
| 713dc51b4d | |||
| d937da139f | |||
| c7ff11d179 | |||
| 8b43c71f88 | |||
| 04d644b24a | |||
| cd66d6fd4e |
11 changed files with 192 additions and 468 deletions
18
.github/workflows/ci.yml
vendored
Normal file
18
.github/workflows/ci.yml
vendored
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
name: CI
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [main]
|
||||
pull_request:
|
||||
|
||||
jobs:
|
||||
sources:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
# Полная сборка требует вузовской библиотеки RSREU.IO, которой нет в репозитории
|
||||
- name: Исходники в UTF-8
|
||||
run: |
|
||||
for f in InvestWinApp/*.h InvestWinApp/*.cpp; do
|
||||
iconv -f utf-8 -t utf-8 "$f" > /dev/null || { echo "не UTF-8: $f"; exit 1; }
|
||||
done
|
||||
12
.gitignore
vendored
Normal file
12
.gitignore
vendored
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
# Visual Studio
|
||||
.vs/
|
||||
x64/
|
||||
Debug/
|
||||
Release/
|
||||
*.user
|
||||
|
||||
# Рабочие файлы программы
|
||||
InvestWinApp/applis.dat
|
||||
InvestWinApp/stud.txt
|
||||
applis.dat
|
||||
stud.txt
|
||||
|
|
@ -1,30 +0,0 @@
|
|||
from bs4 import BeautifulSoup
|
||||
import requests
|
||||
|
||||
soup = BeautifulSoup(requests.get('https://smart-lab.ru/q/shares/').text, 'html.parser')
|
||||
stock = soup.find_all("tr")[2:]
|
||||
|
||||
# f = open("stock.txt", "wb") # encoding="utf-8"
|
||||
|
||||
try:
|
||||
for i in stock:
|
||||
data = i.get_text("|").split("|")
|
||||
data = [j for j in data if '\n' != j][:-2]
|
||||
|
||||
if not '%' in data[-1]:
|
||||
data = data[:-1]
|
||||
|
||||
if not '\t' in data[4]:
|
||||
data[5] = data[5].split('%')[0].split('\t')[-1] + "%"
|
||||
data[6] = data[6].replace(" ", "")
|
||||
data[-3] = data[-3].replace(" ", "")
|
||||
|
||||
source = data[:8]
|
||||
arg = data[-3:]
|
||||
data = source + [arg[0], arg[2]]
|
||||
|
||||
print("|".join(data))
|
||||
except Exception as e:
|
||||
print(repr(e))
|
||||
|
||||
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
#pragma once
|
||||
#pragma once
|
||||
|
||||
namespace InvestWinApp {
|
||||
|
||||
|
|
@ -10,7 +10,7 @@ namespace InvestWinApp {
|
|||
using namespace System::Drawing;
|
||||
|
||||
/// <summary>
|
||||
/// Сводка для AddApplicant
|
||||
/// Сводка для AddApplicant
|
||||
/// </summary>
|
||||
public ref class AddApplicant : public System::Windows::Forms::Form
|
||||
{
|
||||
|
|
@ -19,13 +19,13 @@ namespace InvestWinApp {
|
|||
{
|
||||
InitializeComponent();
|
||||
//
|
||||
//TODO: добавьте код конструктора
|
||||
//TODO: добавьте код конструктора
|
||||
//
|
||||
}
|
||||
|
||||
protected:
|
||||
/// <summary>
|
||||
/// Освободить все используемые ресурсы.
|
||||
/// Освободить все используемые ресурсы.
|
||||
/// </summary>
|
||||
~AddApplicant()
|
||||
{
|
||||
|
|
@ -82,14 +82,14 @@ namespace InvestWinApp {
|
|||
|
||||
private:
|
||||
/// <summary>
|
||||
/// Обязательная переменная конструктора.
|
||||
/// Обязательная переменная конструктора.
|
||||
/// </summary>
|
||||
System::ComponentModel::Container ^components;
|
||||
|
||||
#pragma region Windows Form Designer generated code
|
||||
/// <summary>
|
||||
/// Требуемый метод для поддержки конструктора — не изменяйте
|
||||
/// содержимое этого метода с помощью редактора кода.
|
||||
/// Требуемый метод для поддержки конструктора — не изменяйте
|
||||
/// содержимое этого метода с помощью редактора кода.
|
||||
/// </summary>
|
||||
void InitializeComponent(void)
|
||||
{
|
||||
|
|
@ -171,7 +171,7 @@ namespace InvestWinApp {
|
|||
this->label2->Name = L"label2";
|
||||
this->label2->Size = System::Drawing::Size(161, 16);
|
||||
this->label2->TabIndex = 1;
|
||||
this->label2->Text = L"Фамилия Имя Отчество";
|
||||
this->label2->Text = L"Фамилия Имя Отчество";
|
||||
//
|
||||
// label3
|
||||
//
|
||||
|
|
@ -182,7 +182,7 @@ namespace InvestWinApp {
|
|||
this->label3->Name = L"label3";
|
||||
this->label3->Size = System::Drawing::Size(47, 16);
|
||||
this->label3->TabIndex = 2;
|
||||
this->label3->Text = L"Адрес";
|
||||
this->label3->Text = L"Адрес";
|
||||
//
|
||||
// label4
|
||||
//
|
||||
|
|
@ -193,7 +193,7 @@ namespace InvestWinApp {
|
|||
this->label4->Name = L"label4";
|
||||
this->label4->Size = System::Drawing::Size(52, 16);
|
||||
this->label4->TabIndex = 3;
|
||||
this->label4->Text = L"Льгота";
|
||||
this->label4->Text = L"Льгота";
|
||||
//
|
||||
// label5
|
||||
//
|
||||
|
|
@ -204,7 +204,7 @@ namespace InvestWinApp {
|
|||
this->label5->Name = L"label5";
|
||||
this->label5->Size = System::Drawing::Size(99, 16);
|
||||
this->label5->TabIndex = 4;
|
||||
this->label5->Text = L"Баллы по ЕГЭ";
|
||||
this->label5->Text = L"Баллы по ЕГЭ";
|
||||
//
|
||||
// label9
|
||||
//
|
||||
|
|
@ -215,7 +215,7 @@ namespace InvestWinApp {
|
|||
this->label9->Name = L"label9";
|
||||
this->label9->Size = System::Drawing::Size(140, 16);
|
||||
this->label9->TabIndex = 8;
|
||||
this->label9->Text = L"Номер направления";
|
||||
this->label9->Text = L"Номер направления";
|
||||
//
|
||||
// scoreBox
|
||||
//
|
||||
|
|
@ -297,7 +297,7 @@ namespace InvestWinApp {
|
|||
this->benefitNo->Size = System::Drawing::Size(53, 20);
|
||||
this->benefitNo->TabIndex = 0;
|
||||
this->benefitNo->TabStop = true;
|
||||
this->benefitNo->Text = L"Нет";
|
||||
this->benefitNo->Text = L"Нет";
|
||||
this->benefitNo->UseVisualStyleBackColor = true;
|
||||
this->benefitNo->Click += gcnew System::EventHandler(this, &AddApplicant::benefitNo_Click);
|
||||
//
|
||||
|
|
@ -321,7 +321,7 @@ namespace InvestWinApp {
|
|||
this->btn_add->Name = L"btn_add";
|
||||
this->btn_add->Size = System::Drawing::Size(492, 65);
|
||||
this->btn_add->TabIndex = 6;
|
||||
this->btn_add->Text = L"Добавить";
|
||||
this->btn_add->Text = L"Добавить";
|
||||
this->btn_add->UseVisualStyleBackColor = false;
|
||||
this->btn_add->Click += gcnew System::EventHandler(this, &AddApplicant::btn_add_Click);
|
||||
//
|
||||
|
|
@ -348,10 +348,10 @@ namespace InvestWinApp {
|
|||
}
|
||||
#pragma endregion
|
||||
private: System::Void btn_add_Click(System::Object^ sender, System::EventArgs^ e) {
|
||||
// вычисление id абонента
|
||||
// вычисление id абонента
|
||||
List<Applicant^>^ data = ReadWrite::Load<List<Applicant^>^>("applis.dat");
|
||||
|
||||
// получение данных
|
||||
// получение данных
|
||||
List<Applicant^>^ abit = gcnew List<Applicant^>;
|
||||
abit->Add(gcnew Applicant);
|
||||
|
||||
|
|
@ -363,18 +363,18 @@ private: System::Void btn_add_Click(System::Object^ sender, System::EventArgs^ e
|
|||
|
||||
abit[0]->address = addressBox->Text;
|
||||
|
||||
if (benefitNo->Checked) abit[0]->benefit = "Нет";
|
||||
if (benefitNo->Checked) abit[0]->benefit = "Нет";
|
||||
else abit[0]->benefit = benefitYes->Text;
|
||||
|
||||
abit[0]->score_UGE = Convert::ToInt32(scoreBox->Text);
|
||||
abit[0]->trend = trendBox->Text;
|
||||
|
||||
// запись в файл
|
||||
// запись в файл
|
||||
writeInFile(abit);
|
||||
}
|
||||
catch (...) { MessageBox::Show("Некорректный ввод!"); flag = false; }
|
||||
catch (...) { MessageBox::Show("Некорректный ввод!"); flag = false; }
|
||||
|
||||
// очистка формы
|
||||
// очистка формы
|
||||
if (flag) {
|
||||
sernameBox->Clear();
|
||||
nameBox->Clear();
|
||||
|
|
|
|||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup />
|
||||
</Project>
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
#pragma once
|
||||
#pragma once
|
||||
#include <iostream>
|
||||
#include <stdio.h>
|
||||
#include <fstream>
|
||||
|
|
@ -37,7 +37,7 @@ namespace InvestWinApp {
|
|||
|
||||
|
||||
private: System::Windows::Forms::ToolStripMenuItem^ toolTable;
|
||||
private: System::Windows::Forms::ToolStripMenuItem^ îáíîâèòüÒàáëèöóToolStripMenuItem;
|
||||
private: System::Windows::Forms::ToolStripMenuItem^ обновитьТаблицуToolStripMenuItem;
|
||||
|
||||
|
||||
|
||||
|
|
@ -62,7 +62,7 @@ namespace InvestWinApp {
|
|||
private: System::Windows::Forms::Button^ top_btn;
|
||||
private: System::Windows::Forms::Button^ after_btn;
|
||||
private: System::Windows::Forms::ComboBox^ comboBox;
|
||||
private: System::Windows::Forms::ToolStripMenuItem^ äîáàâèòüÀáèòóðèåíòàToolStripMenuItem;
|
||||
private: System::Windows::Forms::ToolStripMenuItem^ добавитьАбитуриентаToolStripMenuItem;
|
||||
private: System::Windows::Forms::DataGridViewTextBoxColumn^ surname;
|
||||
private: System::Windows::Forms::DataGridViewTextBoxColumn^ name;
|
||||
private: System::Windows::Forms::DataGridViewTextBoxColumn^ patro;
|
||||
|
|
@ -70,7 +70,7 @@ namespace InvestWinApp {
|
|||
private: System::Windows::Forms::DataGridViewTextBoxColumn^ benefits;
|
||||
private: System::Windows::Forms::DataGridViewTextBoxColumn^ scores;
|
||||
private: System::Windows::Forms::DataGridViewTextBoxColumn^ trend;
|
||||
private: System::Windows::Forms::ToolStripMenuItem^ íàÎáùåæèòèåToolStripMenuItem;
|
||||
private: System::Windows::Forms::ToolStripMenuItem^ наОбщежитиеToolStripMenuItem;
|
||||
|
||||
|
||||
|
||||
|
|
@ -240,13 +240,13 @@ namespace InvestWinApp {
|
|||
InitializeComponent();
|
||||
|
||||
//
|
||||
//TODO: äîáàâüòå êîä êîíñòðóêòîðà
|
||||
//TODO: добавьте код конструктора
|
||||
//
|
||||
}
|
||||
|
||||
protected:
|
||||
/// <summary>
|
||||
/// Îñâîáîäèòü âñå èñïîëüçóåìûå ðåñóðñû.
|
||||
/// Освободить все используемые ресурсы.
|
||||
/// </summary>
|
||||
~MyForm()
|
||||
{
|
||||
|
|
@ -257,14 +257,14 @@ namespace InvestWinApp {
|
|||
}
|
||||
private:
|
||||
/// <summary>
|
||||
/// Îáÿçàòåëüíàÿ ïåðåìåííàÿ êîíñòðóêòîðà.
|
||||
/// Обязательная переменная конструктора.
|
||||
/// </summary>
|
||||
System::ComponentModel::Container ^components;
|
||||
|
||||
#pragma region Windows Form Designer generated code
|
||||
/// <summary>
|
||||
/// Òðåáóåìûé ìåòîä äëÿ ïîääåðæêè êîíñòðóêòîðà — íå èçìåíÿéòå
|
||||
/// ñîäåðæèìîå ýòîãî ìåòîäà ñ ïîìîùüþ ðåäàêòîðà êîäà.
|
||||
/// Требуемый метод для поддержки конструктора — не изменяйте
|
||||
/// содержимое этого метода с помощью редактора кода.
|
||||
/// </summary>
|
||||
void InitializeComponent(void)
|
||||
{
|
||||
|
|
@ -286,9 +286,9 @@ namespace InvestWinApp {
|
|||
this->main_ico = (gcnew System::Windows::Forms::PictureBox());
|
||||
this->menu = (gcnew System::Windows::Forms::MenuStrip());
|
||||
this->toolTable = (gcnew System::Windows::Forms::ToolStripMenuItem());
|
||||
this->îáíîâèòüÒàáëèöóToolStripMenuItem = (gcnew System::Windows::Forms::ToolStripMenuItem());
|
||||
this->äîáàâèòüÀáèòóðèåíòàToolStripMenuItem = (gcnew System::Windows::Forms::ToolStripMenuItem());
|
||||
this->íàÎáùåæèòèåToolStripMenuItem = (gcnew System::Windows::Forms::ToolStripMenuItem());
|
||||
this->обновитьТаблицуToolStripMenuItem = (gcnew System::Windows::Forms::ToolStripMenuItem());
|
||||
this->добавитьАбитуриентаToolStripMenuItem = (gcnew System::Windows::Forms::ToolStripMenuItem());
|
||||
this->наОбщежитиеToolStripMenuItem = (gcnew System::Windows::Forms::ToolStripMenuItem());
|
||||
this->tableLayoutPanel1 = (gcnew System::Windows::Forms::TableLayoutPanel());
|
||||
this->gridTable = (gcnew System::Windows::Forms::DataGridView());
|
||||
this->surname = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn());
|
||||
|
|
@ -455,34 +455,34 @@ namespace InvestWinApp {
|
|||
// toolTable
|
||||
//
|
||||
this->toolTable->DropDownItems->AddRange(gcnew cli::array< System::Windows::Forms::ToolStripItem^ >(3) {
|
||||
this->îáíîâèòüÒàáëèöóToolStripMenuItem,
|
||||
this->äîáàâèòüÀáèòóðèåíòàToolStripMenuItem, this->íàÎáùåæèòèåToolStripMenuItem
|
||||
this->обновитьТаблицуToolStripMenuItem,
|
||||
this->добавитьАбитуриентаToolStripMenuItem, this->наОбщежитиеToolStripMenuItem
|
||||
});
|
||||
this->toolTable->ForeColor = System::Drawing::Color::White;
|
||||
this->toolTable->Name = L"toolTable";
|
||||
this->toolTable->Size = System::Drawing::Size(82, 24);
|
||||
this->toolTable->Text = L"Òàáëèöà";
|
||||
this->toolTable->Text = L"Таблица";
|
||||
//
|
||||
// îáíîâèòüÒàáëèöóToolStripMenuItem
|
||||
// обновитьТаблицуToolStripMenuItem
|
||||
//
|
||||
this->îáíîâèòüÒàáëèöóToolStripMenuItem->Name = L"îáíîâèòüÒàáëèöóToolStripMenuItem";
|
||||
this->îáíîâèòüÒàáëèöóToolStripMenuItem->Size = System::Drawing::Size(251, 26);
|
||||
this->îáíîâèòüÒàáëèöóToolStripMenuItem->Text = L"Îáíîâèòü òàáëèöó";
|
||||
this->îáíîâèòüÒàáëèöóToolStripMenuItem->Click += gcnew System::EventHandler(this, &MyForm::îáíîâèòüÒàáëèöóToolStripMenuItem_Click);
|
||||
this->обновитьТаблицуToolStripMenuItem->Name = L"обновитьТаблицуToolStripMenuItem";
|
||||
this->обновитьТаблицуToolStripMenuItem->Size = System::Drawing::Size(251, 26);
|
||||
this->обновитьТаблицуToolStripMenuItem->Text = L"Обновить таблицу";
|
||||
this->обновитьТаблицуToolStripMenuItem->Click += gcnew System::EventHandler(this, &MyForm::обновитьТаблицуToolStripMenuItem_Click);
|
||||
//
|
||||
// äîáàâèòüÀáèòóðèåíòàToolStripMenuItem
|
||||
// добавитьАбитуриентаToolStripMenuItem
|
||||
//
|
||||
this->äîáàâèòüÀáèòóðèåíòàToolStripMenuItem->Name = L"äîáàâèòüÀáèòóðèåíòàToolStripMenuItem";
|
||||
this->äîáàâèòüÀáèòóðèåíòàToolStripMenuItem->Size = System::Drawing::Size(251, 26);
|
||||
this->äîáàâèòüÀáèòóðèåíòàToolStripMenuItem->Text = L"Äîáàâèòü àáèòóðèåíòà";
|
||||
this->äîáàâèòüÀáèòóðèåíòàToolStripMenuItem->Click += gcnew System::EventHandler(this, &MyForm::äîáàâèòüÀáèòóðèåíòàToolStripMenuItem_Click);
|
||||
this->добавитьАбитуриентаToolStripMenuItem->Name = L"добавитьАбитуриентаToolStripMenuItem";
|
||||
this->добавитьАбитуриентаToolStripMenuItem->Size = System::Drawing::Size(251, 26);
|
||||
this->добавитьАбитуриентаToolStripMenuItem->Text = L"Добавить абитуриента";
|
||||
this->добавитьАбитуриентаToolStripMenuItem->Click += gcnew System::EventHandler(this, &MyForm::добавитьАбитуриентаToolStripMenuItem_Click);
|
||||
//
|
||||
// íàÎáùåæèòèåToolStripMenuItem
|
||||
// наОбщежитиеToolStripMenuItem
|
||||
//
|
||||
this->íàÎáùåæèòèåToolStripMenuItem->Name = L"íàÎáùåæèòèåToolStripMenuItem";
|
||||
this->íàÎáùåæèòèåToolStripMenuItem->Size = System::Drawing::Size(251, 26);
|
||||
this->íàÎáùåæèòèåToolStripMenuItem->Text = L"Íà îáùåæèòèå";
|
||||
this->íàÎáùåæèòèåToolStripMenuItem->Click += gcnew System::EventHandler(this, &MyForm::íàÎáùåæèòèåToolStripMenuItem_Click);
|
||||
this->наОбщежитиеToolStripMenuItem->Name = L"наОбщежитиеToolStripMenuItem";
|
||||
this->наОбщежитиеToolStripMenuItem->Size = System::Drawing::Size(251, 26);
|
||||
this->наОбщежитиеToolStripMenuItem->Text = L"На общежитие";
|
||||
this->наОбщежитиеToolStripMenuItem->Click += gcnew System::EventHandler(this, &MyForm::наОбщежитиеToolStripMenuItem_Click);
|
||||
//
|
||||
// tableLayoutPanel1
|
||||
//
|
||||
|
|
@ -531,7 +531,7 @@ namespace InvestWinApp {
|
|||
//
|
||||
// surname
|
||||
//
|
||||
this->surname->HeaderText = L"Ôàìèëèÿ";
|
||||
this->surname->HeaderText = L"Фамилия";
|
||||
this->surname->MinimumWidth = 6;
|
||||
this->surname->Name = L"surname";
|
||||
this->surname->ReadOnly = true;
|
||||
|
|
@ -539,7 +539,7 @@ namespace InvestWinApp {
|
|||
//
|
||||
// name
|
||||
//
|
||||
this->name->HeaderText = L"Èìÿ";
|
||||
this->name->HeaderText = L"Имя";
|
||||
this->name->MinimumWidth = 6;
|
||||
this->name->Name = L"name";
|
||||
this->name->ReadOnly = true;
|
||||
|
|
@ -547,7 +547,7 @@ namespace InvestWinApp {
|
|||
//
|
||||
// patro
|
||||
//
|
||||
this->patro->HeaderText = L"Îò÷åñòâî";
|
||||
this->patro->HeaderText = L"Отчество";
|
||||
this->patro->MinimumWidth = 6;
|
||||
this->patro->Name = L"patro";
|
||||
this->patro->ReadOnly = true;
|
||||
|
|
@ -556,14 +556,14 @@ namespace InvestWinApp {
|
|||
// address
|
||||
//
|
||||
this->address->AutoSizeMode = System::Windows::Forms::DataGridViewAutoSizeColumnMode::Fill;
|
||||
this->address->HeaderText = L"Àäðåñ";
|
||||
this->address->HeaderText = L"Адрес";
|
||||
this->address->MinimumWidth = 6;
|
||||
this->address->Name = L"address";
|
||||
this->address->ReadOnly = true;
|
||||
//
|
||||
// benefits
|
||||
//
|
||||
this->benefits->HeaderText = L"Ëüãîòà";
|
||||
this->benefits->HeaderText = L"Льгота";
|
||||
this->benefits->MinimumWidth = 6;
|
||||
this->benefits->Name = L"benefits";
|
||||
this->benefits->ReadOnly = true;
|
||||
|
|
@ -571,7 +571,7 @@ namespace InvestWinApp {
|
|||
//
|
||||
// scores
|
||||
//
|
||||
this->scores->HeaderText = L"Áàëëû ÅÃÝ";
|
||||
this->scores->HeaderText = L"Баллы ЕГЭ";
|
||||
this->scores->MinimumWidth = 6;
|
||||
this->scores->Name = L"scores";
|
||||
this->scores->ReadOnly = true;
|
||||
|
|
@ -579,7 +579,7 @@ namespace InvestWinApp {
|
|||
//
|
||||
// trend
|
||||
//
|
||||
this->trend->HeaderText = L"Íàïðàâëåíèå";
|
||||
this->trend->HeaderText = L"Направление";
|
||||
this->trend->MinimumWidth = 6;
|
||||
this->trend->Name = L"trend";
|
||||
this->trend->ReadOnly = true;
|
||||
|
|
@ -621,10 +621,10 @@ namespace InvestWinApp {
|
|||
series1->Name = L"Series1";
|
||||
dataPoint1->Color = System::Drawing::Color::LawnGreen;
|
||||
dataPoint1->Label = L"#PERCENT{P2}";
|
||||
dataPoint1->LegendText = L"Ëüãîòà";
|
||||
dataPoint1->LegendText = L"Льгота";
|
||||
dataPoint2->Color = System::Drawing::Color::DeepSkyBlue;
|
||||
dataPoint2->Label = L"#PERCENT{P2}";
|
||||
dataPoint2->LegendText = L"Íà îáùèõ.";
|
||||
dataPoint2->LegendText = L"На общих.";
|
||||
series1->Points->Add(dataPoint1);
|
||||
series1->Points->Add(dataPoint2);
|
||||
this->chart->Series->Add(series1);
|
||||
|
|
@ -693,7 +693,7 @@ namespace InvestWinApp {
|
|||
this->MainMenuStrip = this->menu;
|
||||
this->MinimumSize = System::Drawing::Size(825, 500);
|
||||
this->Name = L"MyForm";
|
||||
this->Text = L"Èíâåñòèöèè";
|
||||
this->Text = L"Инвестиции";
|
||||
this->Closed += gcnew System::EventHandler(this, &MyForm::MyForm_Closed);
|
||||
this->Load += gcnew System::EventHandler(this, &MyForm::MyForm_Load);
|
||||
this->main_table->ResumeLayout(false);
|
||||
|
|
@ -716,7 +716,7 @@ namespace InvestWinApp {
|
|||
|
||||
}
|
||||
#pragma endregion
|
||||
// îòñëåæèâàíèå äåéñòâèé ôîðìû
|
||||
// отслеживание действий формы
|
||||
private: System::Void MyForm_Load(System::Object^ sender, System::EventArgs^ e) {
|
||||
main_ico_Click(sender, e);
|
||||
}
|
||||
|
|
@ -728,7 +728,7 @@ private: System::Void MyForm_MouseMove(System::Object^ sender, System::Windows::
|
|||
}
|
||||
}
|
||||
|
||||
// êíîïêè âçàèìîäåéñòèÿ ñ îêíîì
|
||||
// кнопки взаимодейстия с окном
|
||||
private: System::Void close_Click(System::Object^ sender, System::EventArgs^ e) {
|
||||
this->Close();
|
||||
}
|
||||
|
|
@ -745,7 +745,7 @@ private: System::Void wrap_Click(System::Object^ sender, System::EventArgs^ e) {
|
|||
this->WindowState = System::Windows::Forms::FormWindowState::Minimized;
|
||||
}
|
||||
|
||||
// ïåðåäâèæåíèÿ îêíà ïî ýêðàíó
|
||||
// передвижения окна по экрану
|
||||
private: System::Void moveWindow_MouseDown(System::Object^ sender, System::Windows::Forms::MouseEventArgs^ e) {
|
||||
mPoint = Point(e->X, e->Y);
|
||||
}
|
||||
|
|
@ -755,7 +755,7 @@ private: System::Void moveWindow_MouseMove(System::Object^ sender, System::Windo
|
|||
}
|
||||
}
|
||||
|
||||
// îáíîâëåíèå òàáëèöû
|
||||
// обновление таблицы
|
||||
private: System::Void main_ico_Click(System::Object^ sender, System::EventArgs^ e) {
|
||||
Table(sender, e);
|
||||
}
|
||||
|
|
@ -770,12 +770,12 @@ private: System::Void after_btn_Click(System::Object^ sender, System::EventArgs^
|
|||
MarshalString(data[i]->address, adr);
|
||||
adr = adr.substr(0, adr.find(","));
|
||||
|
||||
if (adr == "ã. Ðÿçàíü") local++;
|
||||
if (adr == "г. Рязань") local++;
|
||||
else unlocal++;
|
||||
}
|
||||
|
||||
double perc = (100 / ((double)data->Count)) * unlocal;
|
||||
MessageBox::Show("Ïðîöåíò èíîãîðîäíèõ àáèòóðèåíòîâ ñîñòàâèë " + perc.ToString()->Substring(0, 4) + "%", "Âûâîä");
|
||||
MessageBox::Show("Процент иногородних абитуриентов составил " + perc.ToString()->Substring(0, 4) + "%", "Вывод");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -807,10 +807,10 @@ private: System::Void top_btn_Click(System::Object^ sender, System::EventArgs^ e
|
|||
}
|
||||
}
|
||||
|
||||
String^ txt = "Ïåðå÷åíü íàïðàâëåíèé ïî ïîïóëÿðíîñòè:\n";
|
||||
for (int i = 0; i < nums->Count; i++) txt += (i + 1).ToString() + ". " + nums[i] + " â êîë-âå " + nums_i[i].ToString() + "\n";
|
||||
String^ txt = "Перечень направлений по популярности:\n";
|
||||
for (int i = 0; i < nums->Count; i++) txt += (i + 1).ToString() + ". " + nums[i] + " в кол-ве " + nums_i[i].ToString() + "\n";
|
||||
|
||||
MessageBox::Show(txt, "Âûâîä");
|
||||
MessageBox::Show(txt, "Вывод");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -819,7 +819,7 @@ private: System::Void comboBox_SelectedIndexChanged(System::Object^ sender, Syst
|
|||
Chart(sender, e);
|
||||
}
|
||||
|
||||
// ñàìîïèñíûå ôóíêöèè
|
||||
// самописные функции
|
||||
private: System::Void Table(System::Object^ sender, System::EventArgs^ e) {
|
||||
gridTable->Rows->Clear();
|
||||
List<Applicant^>^ data = ReadWrite::Load<List<Applicant^>^>("applis.dat");
|
||||
|
|
@ -851,7 +851,7 @@ private: System::Void Chart(System::Object^ sender, System::EventArgs^ e) {
|
|||
int bYes = 0, bNo = 0;
|
||||
|
||||
for (int i = 0; i < data->Count; i++) {
|
||||
if (data[i]->benefit == "Íåò") bNo++;
|
||||
if (data[i]->benefit == "Нет") bNo++;
|
||||
else bYes++;
|
||||
}
|
||||
double proc = 100 / (double)data->Count;
|
||||
|
|
@ -862,28 +862,28 @@ private: System::Void Chart(System::Object^ sender, System::EventArgs^ e) {
|
|||
s1->Points->AddY(bYes * proc);
|
||||
s1->Points[0]->Color = System::Drawing::Color::LawnGreen;
|
||||
s1->Points[0]->Label = L"#PERCENT{P2}";
|
||||
s1->Points[0]->LegendText = L"Ëüãîòà";
|
||||
s1->Points[0]->LegendText = L"Льгота";
|
||||
|
||||
s1->Points->AddY(bNo * proc);
|
||||
s1->Points[1]->Color = System::Drawing::Color::DeepSkyBlue;
|
||||
s1->Points[1]->Label = L"#PERCENT{P2}";
|
||||
s1->Points[1]->LegendText = L"Íà îáùèõ.";
|
||||
s1->Points[1]->LegendText = L"На общих.";
|
||||
}
|
||||
}
|
||||
|
||||
// ôóíêöèè ìåíþ
|
||||
private: System::Void îáíîâèòüÒàáëèöóToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) {
|
||||
// функции меню
|
||||
private: System::Void обновитьТаблицуToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) {
|
||||
Table(sender, e);
|
||||
MessageBox::Show("Òàáëèöà óñïåøíî îáíîâëåíà!", "Òàáëèöà");
|
||||
MessageBox::Show("Таблица успешно обновлена!", "Таблица");
|
||||
}
|
||||
|
||||
private: System::Void äîáàâèòüÀáèòóðèåíòàToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) {
|
||||
private: System::Void добавитьАбитуриентаToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) {
|
||||
AddApplicant^ prt_data = gcnew AddApplicant();
|
||||
prt_data->ShowDialog();
|
||||
|
||||
Table(sender, e);
|
||||
}
|
||||
private: System::Void íàÎáùåæèòèåToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) {
|
||||
private: System::Void наОбщежитиеToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) {
|
||||
List<Applicant^>^ data = ReadWrite::Load<List<Applicant^>^>("applis.dat");
|
||||
|
||||
if (data) {
|
||||
|
|
@ -893,12 +893,12 @@ private: System::Void
|
|||
MarshalString(data[i]->address, adr);
|
||||
adr = adr.substr(0, adr.find(","));
|
||||
|
||||
if (adr != "ã. Ðÿçàíü") {
|
||||
if (adr != "г. Рязань") {
|
||||
txt += data[i]->surname + " " + data[i]->name + " " + data[i]->patro + " " + data[i]->benefit + " " + data[i]->trend + "\n";
|
||||
}
|
||||
}
|
||||
System::IO::File::WriteAllText("stud.txt", txt);
|
||||
MessageBox::Show("Ôàéë óñïåøíî çàïèñàí!", "Óâåäîìëåíèå");
|
||||
MessageBox::Show("Файл успешно записан!", "Уведомление");
|
||||
system("notepad stud.txt");
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -1,244 +0,0 @@
|
|||
18:45:09|Сбербанк|SBER|241.2|-0.24%|5 725.73|-1.5%|5 445.17|-11%
|
||||
18:45:15|Сургнфгз-п|SNGSP|34.96|+4.16%|4 120.76|+8.4%|1 180.45|+360%
|
||||
18:45:25|ГАЗПРОМ ао|GAZP|165.47|-0.43%|2 873.87|+1.5%|3 917.26|-7%
|
||||
18:45:19|Yandex clA|YNDX|2495|-0.99%|2 773.74|+7.0%|814.22|-51%
|
||||
18:45:15|ЛУКОЙЛ|LKOH|5086|+0.41%|2 343.39|-5.4%|3 523.92|-29%
|
||||
18:45:20|ВТБ ао|VTBR|0.022765|+0.07%|2 320.28|+1.0%|493.54|-33%
|
||||
18:45:29|Polymetal|POLY|533.8|-4.64%|2 098.65|-13.5%|252.82|+221%
|
||||
18:45:15|Транснф ап|TRNFP|136550|+0.11%|1 902.03|-0.8%|212.32|+89%
|
||||
18:45:25|TCS-гдр|TCSG|3320|-0.88%|1 714.62|-0.4%|662.07|+81%
|
||||
18:45:14|МосБиржа|MOEX|126.31|+2.69%|1 383.55|+4.7%|287.53|+315%
|
||||
18:45:02|ГМКНорНик|GMKN|14758|+0.14%|1 210.35|-0.2%|2 255.96|+241%
|
||||
18:45:18|Роснефть|ROSN|463.9|+1.26%|1 111.49|+1.9%|4 916.49|+52%
|
||||
18:45:27|АЛРОСА ао|ALRS|66.74|+1.04%|1 067.21|+1.5%|491.54|+450%
|
||||
18:45:06|Сургнфгз|SNGS|25.505|+0.2%|964.47|+1.4%|1 180.45|+140%
|
||||
18:45:32|МТС-ао|MTSS|328.65|+1.19%|854.92|+1.1%|656.77|-6%
|
||||
18:45:16|+МосЭнерго|MSNG|3.063|-3.56%|729.31|+8.3%|121.75|-53%
|
||||
18:45:24|РуссНфт ао|RNFT|131.8|+1.38%|711.67|+9.9%|38.77|+14%
|
||||
18:45:28|НМТП ао|NMTP|8.945|-2.51%|673.38|+5.4%|172.28|-55%
|
||||
18:45:14|Татнфт 3ао|TATN|473|+0.45%|637.50|+3.1%|1 100.14|-5%
|
||||
18:45:26|БСП ап|BSPBP|77.6|-4.37%|621.52|+133.7%|78.74|+7%
|
||||
18:45:31|Новатэк ао|NVTK|1349.4|+0.72%|610.20|+0.5%|4 097.19|-20%
|
||||
18:45:24|Аэрофлот|AFLT|40.04|+1.42%|604.73|+0.5%|159.19|+350%
|
||||
18:45:30|iQIWI|QIWI|714.5|+4.31%|600.27|+7.0%|44.87|+709%
|
||||
18:45:25|VK-гдр|VKCO|634|-1.15%|596.51|+4.0%|143.46|-37%
|
||||
18:45:29|Совкомфлот|FLOT|87.5|-0.22%|575.36|-6.1%|207.81|-52%
|
||||
18:45:21|iПозитив|POSI|1963.6|-0.99%|548.71|+6.1%|129.60|+24%
|
||||
18:45:03|Магнит ао|MGNT|4250|-0.23%|537.53|-1.3%|433.12|-27%
|
||||
18:45:23|Башнефт ап|BANEP|1702|+0.83%|536.55|+0.5%|337.96|-41%
|
||||
18:45:25|Полюс|PLZL|10299.5|-0.36%|500.05|-2.1%|1 401.45|-39%
|
||||
18:45:23|iNVTQ-гдр|SFTL|154.4|+2.93%|496.41|+23.2%|30.87|-1%
|
||||
18:45:27|Сбербанк-п|SBERP|238.4|-0.15%|423.88|-1.4%|5 445.17|-12%
|
||||
18:45:24|НЛМК ао|NLMK|152.26|+0.85%|402.88|+1.7%|912.53|+40%
|
||||
18:45:29|OZON-адр|OZON|1935|-0.72%|373.52|+8.4%|394.73|-52%
|
||||
18:45:23|Самолет ао|SMLT|3012.5|-0.54%|344.90|-1.9%|185.51|-78%
|
||||
18:45:29|iHHRU-адр|HHRU|2209|-1.82%|320.40|+8.5%|111.15|+266%
|
||||
18:45:25|Мечел ао|MTLR|173.76|-0.23%|317.81|+0.4%|98.82|-69%
|
||||
18:45:32|iФармсинтз|LIFE|7.69|-1.91%|316.18|+8.2%|2.31|-17%
|
||||
18:45:18|КузнецкийБ|KUZB|0.0605|+7.12%|299.23|+30.2%|1.36|+111%
|
||||
18:45:30|Система ао|AFKS|15.922|-0.01%|289.85|+1.0%|153.65|+51%
|
||||
18:45:24|ММК|MAGN|40.96|-0.5%|272.79|-0.7%|457.70|-45%
|
||||
18:45:23|СевСт-ао|CHMF|1033.8|-0.65%|232.89|-0.1%|866.03|-58%
|
||||
18:45:24|ПИК ао|PIKK|708|-0.7%|176.26|+0.4%|467.63|+102%
|
||||
18:45:17|РУСАЛ ао|RUAL|38.64|+0.26%|166.46|-2.0%|587.06|-36%
|
||||
18:45:14|ФосАгро ао|PHOR|7461|-0.16%|154.43|-0.9%|966.20|-60%
|
||||
18:45:19|МКБ ао|CBOM|6.213|-0.4%|152.94|+0.9%|207.70|-4%
|
||||
18:45:23|FIXP-гдр|FIXP|377.5|-1.97%|150.91|+4.9%|322.07|+470%
|
||||
18:45:13|ИнтерРАОао|IRAO|4.0705|+0.07%|144.10|-0.1%|424.96|-0%
|
||||
18:45:26|ОВК ао|UWGN|153.5|-0.45%|141.11|+2.3%|17.81|+28%
|
||||
18:45:26|Россети|FEES|0.09396|-0.78%|137.92|-7.6%|198.58|-7%
|
||||
18:45:06|Башнефт ао|BANE|1943|-0.92%|136.79|-2.8%|337.96|+61%
|
||||
18:45:26|КАМАЗ|KMAZ|187.3|-0.21%|136.61|+2.0%|132.46|+63%
|
||||
18:45:31|БСП ао|BSPB|167.11|-0.75%|134.70|-1.5%|78.74|-33%
|
||||
18:45:08|ТГК-14|TGKN|0.01066|+3.7%|130.60|+2.3%|14.48|+437%
|
||||
18:45:25|ДВМП ао|FESH|61.32|-0.6%|118.94|-5.2%|180.97|-46%
|
||||
18:45:21|СПБ Биржа|SPBE|159.8|-1.05%|114.27|+3.0%|21.23|-12%
|
||||
18:45:13|FIVE-гдр|FIVE|1499|-0.99%|110.93|-0.7%|408.17|+39%
|
||||
18:45:23|Сегежа|SGZH|5.175|-0.96%|110.26|+0.6%|81.20|-32%
|
||||
18:45:24|GLTR-гдр|GLTR|494.6|-2.06%|110.05|+3.4%|88.39|-16%
|
||||
18:45:03|Белуга ао|BELU|4217|+0.12%|109.97|+0.3%|66.63|-35%
|
||||
18:45:05|Авангрд-ао|AVAN|1200|+6.19%|106.96|+14.3%|96.84|+378%
|
||||
18:45:27|РСетиЦП ао|MRKP|0.236|+0.68%|106.91|+0.6%|26.60|+440%
|
||||
18:45:04|РСетиЛЭ-п|LSNGP|214.95|+3.52%|103.19|+5.5%|142.79|+55%
|
||||
18:45:24|Ростел -ао|RTKM|71.42|-0.54%|102.49|-3.2%|249.59|+27%
|
||||
18:45:12|ЛСР ао|LSRG|777|+1.25%|97.46|+1.6%|80.05|+7%
|
||||
18:45:04|CIAN-адр|CIAN|663.8|-0.93%|88.17|+10.3%|47.33|+6%
|
||||
18:45:07|СОЛЛЕРС|SVAV|681.5|-2.22%|85.36|-0.4%|23.36|-48%
|
||||
18:45:29|АшинскийМЗ|AMEZ|67.32|+0.73%|82.48|-1.0%|33.56|+439%
|
||||
18:45:14|Газпрнефть|SIBN|515.95|+0.27%|77.49|-0.6%|2 446.27|-35%
|
||||
18:45:09|Татнфт 3ап|TATNP|472|+0.4%|77.18|+3.0%|1 100.14|-19%
|
||||
18:45:23|Юнипро ао|UPRO|1.854|-0.43%|76.45|-3.3%|116.89|-79%
|
||||
18:45:13|Мечел ап|MTLRP|190.9|+0.13%|74.97|+2.7%|98.82|-34%
|
||||
18:45:17|УралСиб ао|USBN|0.1646|-7.53%|68.16|+17.2%|59.28|-57%
|
||||
18:45:13|РусГидро|HYDR|0.8706|-1.15%|59.74|-1.3%|387.24|-70%
|
||||
18:45:15|ТМК ао|TRMK|129.96|-1.32%|58.42|-1.9%|134.27|-35%
|
||||
18:45:09|ОГК-2 ао|OGKB|0.72|+0.04%|57.51|+1.0%|79.52|+22%
|
||||
18:45:13|ЭН+ГРУП ао|ENPG|447.8|-0.97%|55.53|+1.3%|286.08|-27%
|
||||
18:45:15|М.видео|MVID|188.5|-0.63%|51.98|-0.8%|33.89|-0%
|
||||
18:45:21|iГЕНЕТИКО|GECO|32.2|+0.01%|50.78|+0.6%|2.67|+87%
|
||||
18:45:05|РоссЦентр|MRKC|0.3974|+1.22%|50.52|-0.4%|16.78|+287%
|
||||
18:45:27|Распадская|RASP|283.15|-0.4%|48.23|-0.7%|188.50|-56%
|
||||
18:45:22|РДБанк ао|RDRB|221|+9.41%|43.22|+22.8%|4.19|+54%
|
||||
18:45:19|AGRO-гдр|AGRO|848.2|-0.82%|39.08|-0.6%|114.11|-13%
|
||||
18:45:02|ОргСинт ап|KZOSP|29.27|-0.75%|38.09|+4.7%|203.43|-43%
|
||||
18:45:13|iВУШХолднг|WUSH|211.1|-0.36%|37.18|-1.7%|23.51|+12%
|
||||
18:45:23|ЦМТ ао|WTCM|12.56|+17.16%|36.04|+19.8%|15.22|+5425%
|
||||
18:39:06|РСетиМР ао|MSRS|1.145|+0.44%|34.60|-7.2%|55.77|-3%
|
||||
18:45:08|Лента ао|LENT|730|+1.11%|33.90|+0.8%|84.67|+278%
|
||||
18:45:02|ETLN-гдр|ETLN|81.7|-0.63%|33.75|-2.9%|31.33|-13%
|
||||
18:39:53|Росбанк ао|ROSB|102|-0.97%|32.99|-2.3%|158.24|+12%
|
||||
18:45:10|РсетСиб ао|MRKS|0.3875|+0.52%|32.29|+4.6%|36.74|+2370%
|
||||
18:45:11|АбрауДюрсо|ABRD|276|-1.22%|31.35|-1.7%|27.05|+3%
|
||||
18:45:08|ОргСинт ао|KZOS|112|-0.18%|29.04|+3.2%|203.43|-42%
|
||||
18:45:08|Селигдар|SELG|49.75|+0.1%|28.99|-0.2%|51.24|+15%
|
||||
18:45:13|КрасОкт-ао|KROT|1789|+0.51%|28.03|+3.6%|17.55|+43%
|
||||
18:45:16|iИСКЧ ао|ISKJ|104.92|-0.27%|27.80|+1.7%|9.72|-58%
|
||||
18:45:06|GEMC-гдр|GEMC|610.7|-1.9%|27.69|+14.8%|55.17|-48%
|
||||
18:45:22|МРСК Ур|MRKU|0.2916|-1.02%|26.99|-7.7%|25.49|+203%
|
||||
18:39:49|ЦМТ ап|WTCMP|9.72|+21.8%|26.17|+23.0%|15.22|+3838%
|
||||
18:45:29|МГТС-4ап|MGTSP|1208|+0.5%|26.01|-1.9%|158.63|+83%
|
||||
18:45:21|ТГК-1|TGKA|0.008994|-0.07%|25.68|-0.6%|34.67|-7%
|
||||
18:45:19|MDMG-гдр|MDMG|637|+2.68%|25.66|+0.5%|47.85|+29%
|
||||
18:45:20|НКНХ ап|NKNCP|82.58|-0.86%|25.61|+4.2%|197.42|-69%
|
||||
18:45:26|ГТМ ао|GTRK|79.8|-1.78%|24.21|+1.9%|4.67|-20%
|
||||
18:45:01|Аптеки36и6|APTK|13.204|+0.72%|24.17|+6.1%|100.75|-61%
|
||||
18:45:04|ЧеркизГ-ао|GCHE|3029|+0.03%|22.13|-0.2%|127.89|+65%
|
||||
18:39:52|МордЭнСб|MRSB|0.522|-5.26%|20.41|-4.7%|0.70|+610%
|
||||
18:45:13|Ростел -ап|RTKMP|72.15|+0.56%|18.41|+0.1%|249.59|+14%
|
||||
18:45:22|ВСМПО-АВСМ|VSMO|48560|+0.33%|17.05|-1.5%|559.87|+72%
|
||||
18:45:27|Акрон|AKRN|18998|+0.08%|16.89|+0.0%|698.31|+49%
|
||||
18:45:20|ДетскийМир|DSKY|71.32|-0.06%|16.49|+0.3%|52.71|+2%
|
||||
18:45:18|Ренессанс|RENI|70.92|-0.25%|16.34|+0.3%|39.50|-51%
|
||||
18:45:18|OKEY-гдр|OKEY|31.62|-0.85%|15.03|+2.0%|8.51|-14%
|
||||
18:39:58|Химпром ап|HIMCP|22.61|+2.77%|14.28|+7.3%|5.19|+8%
|
||||
18:38:11|ТГК-2|TGKB|0.005265|+1.06%|14.04|+0.1%|7.86|+176%
|
||||
18:45:27|ИНАРКТИКА|AQUA|590.5|-0.25%|14.03|-2.0%|51.89|-61%
|
||||
18:45:08|ЮТэйр ао|UTAR|9.7|-0.41%|13.97|+12.9%|76.59|-61%
|
||||
18:45:26|Белон ао|BLNG|24.125|-1.35%|13.95|+0.4%|27.74|-14%
|
||||
18:30:00|ИНГРАД ао|INGR|1528|+0.13%|13.76|+0.4%|62.99|+2%
|
||||
18:45:13|ИКРУСС-ИНВ|RUSI|62.4|+1.79%|12.90|+0.6%|6.80|+2315%
|
||||
18:45:28|iАвиастКао|UNAC|0.705|+1.08%|12.89|-0.6%|375.72|+27%
|
||||
18:39:19|НКХП ао|NKHP|404.5|+1.38%|12.60|+2.0%|27.34|+475%
|
||||
18:45:00|СтаврЭнСбп|STSBP|1.981|-2.37%|12.19|+4.3%|2.12|+250%
|
||||
18:45:02|Лензол. ап|LNZLP|2990|-0.5%|11.23|+1.5%|18.50|-47%
|
||||
18:45:05|Светофор|SVET|30.25|-2.1%|10.33|+2.4%|0.68|-53%
|
||||
18:32:55|ИРКУТ-3|IRKT|58.95|-0.08%|10.10|-1.4%|122.92|+20%
|
||||
18:45:14|ЭЛ5Энер ао|ELFV|0.5664|-0.25%|9.03|+1.1%|20.03|-71%
|
||||
18:45:23|РсетВол ао|MRKV|0.0406|-0.49%|8.89|+0.5%|7.65|+47%
|
||||
18:45:11|РСетиСЗ ао|MRKZ|0.03755|-0.4%|8.30|-3.3%|3.60|-12%
|
||||
18:37:59|СаратНПЗ-п|KRKNP|12940|-0.31%|8.20|+0.3%|11.67|-24%
|
||||
18:45:21|ВХЗ-ао|VLHZ|163.75|+1.58%|7.82|+7.2%|0.82|-83%
|
||||
18:45:13|Русолово|ROLO|0.7224|+0.07%|7.78|-1.2%|21.67|+55%
|
||||
18:45:01|ЕвроЭлтех|EELT|12.5|+0.32%|7.76|-1.6%|7.63|+186%
|
||||
18:38:04|ДонскЗР п|DZRDP|3000|-1.64%|7.55|+25.5%|1.47|+13%
|
||||
18:45:09|ЗаводДИОД|DIOD|11.75|+0.17%|7.55|-0.9%|1.08|+229%
|
||||
18:45:17|Телеграф-п|CNTLP|12.64|-0.63%|6.91|-0.9%|3.16|-35%
|
||||
18:45:17|РСетиЛЭ|LSNG|14.4|-0.07%|6.89|-0.8%|142.79|-9%
|
||||
18:04:13|Приморье|PRMB|38800|+2.65%|6.64|+6.6%|9.70|+129%
|
||||
18:45:25|ПермьЭнСб|PMSB|155.5|+0.71%|6.52|+2.6%|7.41|+56%
|
||||
18:45:02|Мегион-ап|MFGSP|270|-1.64%|5.82|-2.7%|48.72|+43%
|
||||
18:34:32|Телеграф|CNTL|14.82|0%|5.54|+0.7%|3.16|+73%
|
||||
18:45:03|Куйбазот|KAZT|657.2|-0.45%|5.25|-1.5%|156.34|-69%
|
||||
18:45:21|Русгрэйн|RUGR|15.15|-2.48%|5.17|-4.9%|0.65|+37%
|
||||
18:45:19|ЭнергияРКК|RKKE|14110|0%|5.06|-1.3%|26.01|-71%
|
||||
18:45:01|Таттел. ао|TTLK|0.712|-0.49%|5.00|-1.0%|14.84|+25%
|
||||
18:45:20|Лензолото|LNZL|15310|+0.07%|5.00|-0.9%|18.50|-16%
|
||||
18:45:07|НКНХ ао|NKNC|111.3|-0.76%|4.99|+0.6%|197.42|-52%
|
||||
18:45:02|Мостотрест|MSTT|219.35|-0.45%|4.76|+1.5%|61.90|-64%
|
||||
18:37:25|МагадЭн ао|MAGE|5.57|-1.07%|4.67|-3.3%|3.24|+445%
|
||||
18:45:01|iНаукаСвяз|NSVZ|255|-1.73%|4.64|+2.8%|1.20|-25%
|
||||
18:45:27|ТГК-2 ап|TGKBP|0.01098|-0.27%|4.28|-0.7%|7.86|+91%
|
||||
18:39:10|ЧЗПСН ао|PRFN|3.712|-0.56%|3.59|+0.7%|3.11|-61%
|
||||
18:45:05|НЕФАЗ|NFAZ|370.5|+2.07%|3.56|-0.3%|2.98|+112%
|
||||
18:45:29|Россети СК|MRKK|17.44|+2.35%|3.54|+5.4%|15.51|+302%
|
||||
18:35:35|Левенгук|LVHK|22.43|+1.95%|3.53|-1.5%|1.19|-54%
|
||||
18:45:22|КалужскСК|KLSB|18.02|-0.44%|3.42|-1.1%|1.65|-31%
|
||||
18:39:43|ДЭК ао|DVEC|1.573|-1.5%|3.19|+0.4%|27.04|-6%
|
||||
18:45:21|Красэсб ао|KRSB|13.66|+1.71%|3.15|+4.8%|10.41|+112%
|
||||
18:45:20|ГАЗ ао|GAZA|872|-0.63%|3.08|-3.8%|16.90|-77%
|
||||
18:45:24|Ижсталь ап|IGSTP|4008|+1.57%|2.74|+6.4%|5.13|-75%
|
||||
18:26:18|ГАЗ ап|GAZAP|519|-0.19%|2.56|+3.8%|16.90|-62%
|
||||
18:38:15|РГС СК ао|RGSS|0.2252|+0.27%|2.55|+0.8%|110.33|-27%
|
||||
18:45:15|КрасОкт-1п|KROTP|719|+2.86%|2.54|+3.8%|17.55|+197%
|
||||
18:32:11|РязЭнСб|RZSB|33.2|0%|2.44|-1.5%|6.89|+43%
|
||||
18:45:21|Ижсталь2ао|IGST|5074|-2.69%|2.35|+7.4%|5.13|-84%
|
||||
18:45:17|ТНСэнрг ао|TNSE|1020|+6.25%|2.26|+5.7%|13.94|+171%
|
||||
18:45:28|ЭсЭфАй ао|SFIN|501|-0.28%|2.25|+0.0%|55.93|-48%
|
||||
18:38:24|РСетКубань|KUBE|142.5|-0.07%|2.18|+1.8%|47.69|+91%
|
||||
17:56:59|КосогМЗ ао|KMTZ|226.5|+0.44%|2.10|+3.2%|6.44|-34%
|
||||
18:37:14|ВыбСудЗ ап|VSYDP|6940|+3.89%|2.00|+4.5%|13.21|+1188%
|
||||
18:33:10|ПермьЭнС-п|PMSBP|156.4|+0.26%|1.98|+0.9%|7.41|-9%
|
||||
18:37:53|ЯТЭК ао|YAKG|116.7|+0.13%|1.98|-0.8%|96.50|+18%
|
||||
18:45:08|ТНСэнВорон|VRSB|346.8|-0.06%|1.97|-1.1%|21.27|-53%
|
||||
18:45:26|Куйбазот-п|KAZTP|665.4|+0.21%|1.84|-1.8%|156.34|-56%
|
||||
18:29:27|Сахэнер ао|SLEN|4.105|+0.49%|1.76|0|5.08|-47%
|
||||
18:45:21|iММЦБ ао|GEMA|919|-1.29%|1.73|-2.9%|1.37|+506%
|
||||
18:14:52|ГазпРнД ао|RTGZ|29600|+1.37%|1.65|-1.3%|3.56|+125%
|
||||
18:45:27|РоссЮг ао|MRKY|0.0486|-0.61%|1.58|-1.3%|7.37|-5%
|
||||
18:24:51|HMSG-гдр|HMSG|186.5|+0.54%|1.51|-1.8%|4.37|-50%
|
||||
18:45:20|Слав-ЯНОСп|JNOSP|14.5|+4.32%|1.49|+6.9%|28.57|-30%
|
||||
18:36:57|ТамбЭнСб|TASB|1.1945|-0.38%|1.36|-0.1%|1.97|-13%
|
||||
18:38:07|ДонскЗР|DZRD|3310|-4.2%|1.36|+9.1%|1.47|+8%
|
||||
18:37:43|БурЗолото|BRZL|1220|-1.29%|1.33|+0.8%|8.61|+378%
|
||||
18:39:41|КМЗ|KMEZ|1271|-0.78%|1.32|+1.7%|4.78|+141%
|
||||
18:24:13|ЧКПЗ ао|CHKZ|12650|-1.17%|1.31|+0.4%|7.59|+415%
|
||||
18:45:01|Красэсб ап|KRSBP|13.4|-1.47%|1.26|+0.9%|10.41|+166%
|
||||
18:23:31|СамарЭн-ап|SAGOP|2.692|-1.03%|1.26|-3.2%|10.84|+44%
|
||||
18:38:36|ТЗА ао|TUZA|171|-0.87%|1.15|+0.3%|1.41|-8%
|
||||
18:24:10|СтаврЭнСб|STSB|1.864|-0.21%|1.11|+3.6%|2.12|+61%
|
||||
18:30:34|МагадЭн ап|MAGEP|4.52|+1.57%|1.11|+2.7%|3.24|+849%
|
||||
18:45:29|ЮУНК ао|UNKL|9700|+0.52%|1.10|-0.4%|5.82|-30%
|
||||
18:36:59|МГТС-5ао|MGTS|1755|-0.85%|1.10|-3.0%|158.63|+543%
|
||||
18:29:16|Якутскэнрг|YKEN|0.372|-0.13%|1.09|+0.8%|3.45|+321%
|
||||
18:45:04|ВолгЭнСб|VGSB|6.4|-0.39%|1.02|-0.7%|2.42|+35%
|
||||
18:27:45|ВолгЭнСб-п|VGSBP|4.675|+1.85%|1.01|-1.2%|2.42|+119%
|
||||
18:38:16|VEON|VEON-RX|50.75|+0.3%|0.98|-1.5%|88.77|-62%
|
||||
18:30:37|ЧМК ао|CHMK|6005|+0.42%|0.96|+0.5%|18.99|-38%
|
||||
18:35:41|БашИнСв ап|BISVP|11.22|-1.92%|0.95|-0.2%|0.41|-49%
|
||||
18:33:20|ОМЗ-ап|OMZZP|9820|-1.8%|0.95|-0.6%|27.01|-18%
|
||||
18:39:11|ГК РБК ао|RBCM|3.67|0%|0.93|+0.4%|1.34|-62%
|
||||
18:35:08|ТНСэнНН ао|NNSB|2695|-0.37%|0.92|-2.2%|11.55|+394%
|
||||
18:23:12|Нижкамшина|NKSH|34.02|-0.58%|0.90|-1.7%|2.17|-67%
|
||||
17:43:17|СамарЭн-ао|SAGO|2.666|-0.3%|0.86|-4.9%|10.84|-39%
|
||||
18:34:06|ЗИЛ ао|ZILL|3360|-0.59%|0.84|-0.7%|8.91|+3%
|
||||
18:38:02|РОСИНТЕРао|ROST|76.4|-0.52%|0.84|+1.1%|1.25|+76%
|
||||
18:19:16|ТНСэнРст|RTSB|1.466|-0.54%|0.82|-1.2%|12.91|+134%
|
||||
18:25:43|КурганГКап|KGKCP|53.8|+1.51%|0.77|+0.4%|6.99|+102%
|
||||
18:35:27|ТНСэМаЭл-п|MISBP|42.6|+1.43%|0.73|-0.2%|4.74|-16%
|
||||
18:07:45|ТНСэКубань|KBSB|255|-0.39%|0.71|+3.0%|4.56|+15%
|
||||
18:27:26|ТНСэнЯр|YRSB|358|-1.1%|0.62|-0.6%|6.75|+430%
|
||||
18:39:07|Славн-ЯНОС|JNOS|25.8|+3.41%|0.61|+8.9%|28.57|+116%
|
||||
18:30:20|iНПОНаука|NAUK|338.6|-0.47%|0.57|-0.8%|3.99|-31%
|
||||
18:45:02|Арсагера|ARSA|6.89|+0.58%|0.49|+5.8%|0.85|-48%
|
||||
18:22:49|ТНСэнЯр-п|YRSBP|137|+0.37%|0.46|-0.7%|6.75|+154%
|
||||
18:34:20|Электрцинк|ELTZ|401.5|-0.74%|0.44|-0.7%|0.56|+61%
|
||||
18:45:14|ТРК ап|TORSP|0.3795|+1.34%|0.41|+4.1%|2.45|+26%
|
||||
18:20:53|КамчатЭ ап|KCHEP|0.525|-1.87%|0.40|-4.2%|11.55|+190%
|
||||
18:29:40|ТРК ао|TORS|0.583|-1.35%|0.38|-0.9%|2.45|+62%
|
||||
18:12:17|ТамбЭнСб-п|TASBP|0.6715|-0.96%|0.37|-1.4%|1.97|+48%
|
||||
18:10:42|ТНСэнВор-п|VRSBP|96.2|-0.41%|0.35|-1.8%|21.27|+48%
|
||||
17:58:01|СаратНПЗ|KRKN|11300|0%|0.34|+0.4%|11.67|-26%
|
||||
18:45:20|ЗВЕЗДА ао|ZVEZ|5.585|+0.45%|0.32|+1.5%|3.14|-61%
|
||||
18:19:30|КамчатЭ ао|KCHE|0.235|-0.63%|0.31|-1.1%|11.55|-10%
|
||||
18:28:58|СаратЭн-ао|SARE|0.22|-0.45%|0.31|-2.1%|1.36|-73%
|
||||
18:03:55|ЛЭСК ао|LPSB|16|+0.31%|0.31|-0.6%|2.49|-62%
|
||||
18:17:41|ПавлАвт ао|PAZA|7220|-0.82%|0.30|+1.4%|11.32|-16%
|
||||
18:39:32|ЮжКузб. ао|UKUZ|1472|-0.27%|0.30|+1.1%|53.21|+87%
|
||||
18:29:18|СаратЭн-ап|SAREP|0.1916|-0.1%|0.28|-0.1%|1.36|-66%
|
||||
18:08:35|КоршГОК ао|KOGK|45800|-0.87%|0.27|+1.3%|11.46|-51%
|
||||
18:07:52|ВыбСудЗ ао|VSYD|6795|+1.87%|0.27|+1.1%|13.21|+103%
|
||||
18:45:09|ТКЗКК ап|KRKOP|16.73|+0.06%|0.27|-3.3%|1.19|-47%
|
||||
18:38:18|Мегион-ао|MFGS|400|+0.38%|0.25|-1.5%|48.72|-85%
|
||||
16:59:30|ОКС ао|UCSS|920|+1.1%|0.24|+0.5%|21.82|-6%
|
||||
17:46:10|ТНСэнРст-п|RTSBP|1.075|+1.22%|0.23|+1.3%|12.91|-62%
|
||||
18:39:51|Якутскэн-п|YKENP|0.3685|-1.34%|0.19|-0.8%|3.45|-65%
|
||||
18:05:24|ТНСэнНН ап|NNSBP|932|-0.85%|0.18|-1.7%|11.55|+96%
|
||||
18:28:30|Варьеган-п|VJGZP|730|+0.55%|0.18|+1.5%|37.31|-3%
|
||||
18:05:37|ТНСэнМарЭл|MISB|35.2|0%|0.16|-0.6%|4.74|-0%
|
||||
18:39:01|РН-ЗапСиб|CHGZ|46|-0.86%|0.16|+0.4%|1.24|-69%
|
||||
18:25:28|АстрЭнСб|ASSB|1.196|-0.83%|0.14|-0.3%|0.93|-52%
|
||||
15:33:16|УрКузница|URKZ|22550|+0.22%|0.14|+0.2%|12.35|-14%
|
||||
17:13:42|КСБ ап|KTSBP|0.749|-0.6%|0.11|+3.7%|1.74|-66%
|
||||
17:42:50|Варьеган|VJGZ|1825|+0.55%|0.10|+4.9%|37.31|-43%
|
||||
18:27:37|КСБ ао|KTSB|1.876|-0.74%|0.09|+1.1%|1.74|-90%
|
||||
18:27:26|КурганГКао|KGKC|50.8|-0.39%|0.08|-1.6%|6.99|-60%
|
||||
47
README.en.md
Normal file
47
README.en.md
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
# Student Sorter
|
||||
|
||||
[Русский](README.md) · **English**
|
||||
|
||||
[](https://github.com/EDeev/student_sorter/actions/workflows/ci.yml)
|
||||
|
||||
A coursework Windows app for an admissions office: it keeps a list of applicants, shows it filtered by
|
||||
programme and produces a list of non-local applicants who need a dormitory.
|
||||
|
||||
**Status:** coursework (Ryazan State Radio Engineering University, 2024), completed
|
||||
|
||||
**Stack:** C++/CLI · Windows Forms (.NET Framework 4.8) · Visual Studio 2022 (MSVC v143) · course library RSREU.IO
|
||||
|
||||
## Features
|
||||
|
||||
- Adding an applicant: full name, address, benefits, exam score, programme
|
||||
- Applicant table filtered by programme
|
||||
- Chart: share of applicants with benefits
|
||||
- Dormitory list: everyone registered outside Ryazan goes to `stud.txt` (format: [examples/stud.txt](examples/stud.txt), fictional names)
|
||||
- The list is kept between runs in `applis.dat`
|
||||
|
||||
## Building
|
||||
|
||||
1. Open `InvestWinApp.sln` in Visual Studio 2022 with the "C++/CLI support" component.
|
||||
2. Put the course library `RSREU.IO.dll` into `InvestWinApp/x64/Debug/` (it is not in the repository; it
|
||||
was provided by the course).
|
||||
3. Build the x64 configuration.
|
||||
|
||||
> [!NOTE]
|
||||
> Without `RSREU.IO.dll` the project does not build, so CI only checks that the sources are UTF-8.
|
||||
> The solution is named `InvestWinApp` — that is how the project was created in Visual Studio.
|
||||
|
||||
## License
|
||||
|
||||
Coursework (Ryazan State Radio Engineering University, 2024). The code is open for study; there is no
|
||||
separate license.
|
||||
|
||||
## Author
|
||||
|
||||
**Egor Deev** — [GitHub](https://github.com/EDeev) · [Telegram](https://t.me/DeevEgor) · [egor@deev.space](mailto:egor@deev.space)
|
||||
|
||||
---
|
||||
|
||||
<div align="center">
|
||||
<sub>⭐ If you find this project useful, give it a star on GitHub!</sub>
|
||||
<p><sub>Made with ❤️ — <a href="https://deev.space">deev.space</a></sub></p>
|
||||
</div>
|
||||
145
README.md
145
README.md
|
|
@ -1,133 +1,58 @@
|
|||
# Student Sorter
|
||||
|
||||
[](https://isocpp.org/)
|
||||
[](https://docs.microsoft.com/en-us/dotnet/desktop/winforms/)
|
||||
[](https://visualstudio.microsoft.com/)
|
||||
**Русский** · [English](README.en.md)
|
||||
|
||||
Десктопное приложение для автоматизированной обработки и сортировки студенческих заявлений с функционалом определения потребности в общежитии.
|
||||
[](https://github.com/EDeev/student_sorter/actions/workflows/ci.yml)
|
||||
|
||||
## 📋 Описание
|
||||
Учебное Windows-приложение для приёмной комиссии: ведёт список абитуриентов, показывает его с фильтром
|
||||
по направлению и формирует список иногородних, которым нужно общежитие.
|
||||
|
||||
Student Sorter — это Windows-приложение, разработанное на C++/CLI с использованием Windows Forms, предназначенное для эффективного управления данными студентов в образовательных учреждениях. Приложение позволяет сортировать студентов по различным критериям и автоматически определять необходимость предоставления общежития на основе места прописки.
|
||||
**Статус:** учебный проект (РГРТУ, 2024), завершён
|
||||
|
||||
## ✨ Основные возможности
|
||||
**Стек:** C++/CLI · Windows Forms (.NET Framework 4.8) · Visual Studio 2022 (MSVC v143) · библиотека курса RSREU.IO
|
||||
|
||||
- **Управление студенческими данными**: Добавление, редактирование и удаление информации о студентах
|
||||
- **Многокритериальная сортировка**: Сортировка по ФИО, направлению обучения, адресу прописки и льготам
|
||||
- **Автоматическое определение потребности в общежитии**: Анализ места прописки для выявления иногородних студентов
|
||||
- **Интуитивный графический интерфейс**: Удобная работа с данными через WinForms
|
||||
- **Статистическая отчетность**: Визуализация данных и генерация отчетов
|
||||
- **Импорт/экспорт данных**: Поддержка работы с внешними файлами данных
|
||||
## Возможности
|
||||
|
||||
## 🛠 Технологический стек
|
||||
- Добавление абитуриента: ФИО, адрес, льгота, баллы ЕГЭ, направление подготовки
|
||||
- Таблица абитуриентов с фильтром по направлению подготовки
|
||||
- Диаграмма: доля абитуриентов с льготами
|
||||
- Список на общежитие: все, кто прописан не в Рязани, — в `stud.txt` (формат — [examples/stud.txt](examples/stud.txt), ФИО вымышленные)
|
||||
- Список хранится между запусками в `applis.dat`
|
||||
|
||||
- **Язык программирования**: C++/CLI
|
||||
- **GUI Framework**: Windows Forms (.NET Framework 4.8)
|
||||
- **IDE**: Microsoft Visual Studio 2022
|
||||
- **Компилятор**: MSVC v143
|
||||
- **Библиотеки**:
|
||||
- System.Windows.Forms
|
||||
- System.Data
|
||||
- System.Drawing
|
||||
- RSREU.IO (кастомная библиотека для сериализации)
|
||||
## Сборка
|
||||
|
||||
## 📁 Структура проекта
|
||||
1. Откройте `InvestWinApp.sln` в Visual Studio 2022 с компонентом «Поддержка C++/CLI».
|
||||
2. Положите библиотеку курса `RSREU.IO.dll` в `InvestWinApp/x64/Debug/` (её в репозитории нет — она
|
||||
выдавалась на курсе).
|
||||
3. Соберите конфигурацию x64.
|
||||
|
||||
> [!NOTE]
|
||||
> Без `RSREU.IO.dll` проект не собирается, поэтому CI проверяет только кодировку исходников (UTF-8).
|
||||
> Решение называется `InvestWinApp` — так проект был создан в Visual Studio.
|
||||
|
||||
## Структура
|
||||
|
||||
```
|
||||
InvestWinApp/
|
||||
├── InvestWinApp.cpp # Точка входа в приложение
|
||||
├── MyForm.h/.resx # Главная форма приложения
|
||||
├── AddApplicant.h/.resx # Форма добавления студента
|
||||
├── config.h # Конфигурация и структуры данных
|
||||
├── pch.h # Предкомпилированные заголовки
|
||||
├── Resource.h # Ресурсы приложения
|
||||
├── stock.dat # Файл данных студентов
|
||||
└── stud.txt # Тестовые данные
|
||||
├── InvestWinApp.cpp точка входа, запись списка в файл
|
||||
├── config.h структура Applicant
|
||||
├── MyForm.h главная форма: таблица, фильтр, диаграмма, список на общежитие
|
||||
└── AddApplicant.h форма добавления абитуриента
|
||||
Data/ иконки
|
||||
Пояснительная записка.pdf
|
||||
```
|
||||
|
||||
## 🚀 Быстрый старт
|
||||
## Лицензия
|
||||
|
||||
### Системные требования
|
||||
Учебный проект (РГРТУ, 2024). Код открыт для изучения, отдельной лицензии нет.
|
||||
|
||||
- Windows 10/11
|
||||
- .NET Framework 4.8
|
||||
- Visual Studio 2019/2022 с поддержкой C++/CLI
|
||||
- RSREU.IO библиотека (включена в проект)
|
||||
## Автор
|
||||
|
||||
### Установка и запуск
|
||||
|
||||
1. **Клонирование репозитория**:
|
||||
```bash
|
||||
git clone https://github.com/EDeev/student_sorter.git
|
||||
cd student_sorter
|
||||
```
|
||||
|
||||
2. **Открытие проекта**:
|
||||
- Запустите Visual Studio
|
||||
- Откройте файл `InvestWinApp.sln`
|
||||
|
||||
3. **Сборка проекта**:
|
||||
- Выберите конфигурацию (Debug/Release)
|
||||
- Нажмите `Build` → `Build Solution` (Ctrl+Shift+B)
|
||||
|
||||
4. **Запуск**:
|
||||
- Нажмите `Debug` → `Start Debugging` (F5)
|
||||
|
||||
## 📊 Структура данных
|
||||
|
||||
Приложение работает со структурой `Applicant`:
|
||||
|
||||
```cpp
|
||||
[Serializable]
|
||||
ref struct Applicant {
|
||||
String^ surname; // Фамилия
|
||||
String^ name; // Имя
|
||||
String^ patro; // Отчество
|
||||
String^ address; // Адрес прописки
|
||||
String^ benefit; // Льготы
|
||||
UInt32 score_UGE; // Баллы ЕГЭ
|
||||
String^ trend; // Направление обучения
|
||||
};
|
||||
```
|
||||
|
||||
## 🔧 Функциональность
|
||||
|
||||
### Главное окно (MyForm)
|
||||
- Отображение списка студентов в табличном виде
|
||||
- Сортировка по всем доступным полям
|
||||
- Фильтрация данных
|
||||
- Экспорт отчетов
|
||||
|
||||
### Добавление студента (AddApplicant)
|
||||
- Форма для ввода данных нового студента
|
||||
- Валидация введенных данных
|
||||
- Автоматическое определение потребности в общежитии
|
||||
|
||||
### Обработка данных
|
||||
- Сериализация/десериализация с использованием RSREU.IO
|
||||
- Автоматическое сохранение изменений
|
||||
- Резервное копирование данных
|
||||
|
||||
## 📈 Алгоритм определения потребности в общежитии
|
||||
|
||||
1. Анализ поля `address` студента
|
||||
2. Сравнение с базой местных адресов
|
||||
3. Классификация как "нуждается в общежитии" или "местный"
|
||||
4. Автоматическое обновление статуса
|
||||
|
||||
## 📝 Лицензия
|
||||
|
||||
Проект распространяется под лицензией MIT.
|
||||
|
||||
## 👨💻 Автор
|
||||
|
||||
**Деев Егор Викторович** - Backend Developer
|
||||
- GitHub: [@EDeev](https://github.com/EDeev)
|
||||
- Email: egor@deev.space
|
||||
- Telegram: [@Egor_Deev](https://t.me/Egor_Deev)
|
||||
**Деев Егор Викторович** — [GitHub](https://github.com/EDeev) · [Telegram](https://t.me/DeevEgor) · [egor@deev.space](mailto:egor@deev.space)
|
||||
|
||||
---
|
||||
|
||||
<div align="center">
|
||||
<p><sub>Создано с ❤️ от вашего дорогого - deev.space ©</sub></p>
|
||||
<sub>⭐ Если проект оказался полезным, поставьте звёздочку на GitHub!</sub>
|
||||
<p><sub>Сделано с ❤️ — <a href="https://deev.space">deev.space</a></sub></p>
|
||||
</div>
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue