Разработка программного комплекса

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

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

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

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

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

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ

РОССИЙСКОЙ ФЕДЕРАЦИИ

МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ

УНИВЕРСИТЕТ ПРИБОРОСТРОЕНИЯ И ИНФОРМАТИКИ

КУРСОВАЯ РАБОТА

По дисциплине "Языки программирования"

2014

СОДЕРЖАНИЕ

Введение

1. Разработка приложения

1.1 Получение требований

1.2 Разработка соответствующей формы исполнения

1.3 Описание функциональных возможностей

1.4 Руководство к действию для системного программиста

1.5 Руководство к действию для оператора

1.6 Возможные неполадки

1.7 Алгоритмы приложений

2. Листинг исходных кодов

3. Проверочные данные и скриншоты

Выводы

ВВЕДЕНИЕ

В ходе выполнения курсовой работы было получено техническое задание на исполнение программного продукта для ЭВМ, управляемых ОС Windows. В задании указывались требования к этому продукту, исполняющие требования одного задания на курсовую работу. Программные продукты должны были быть выполнены на языке программирования VС++.

Техническое задание было сформулировано чётко, что позволило начать работу в кратчайшие сроки. Заданием была определена форма исполнения приложения, удовлетворяющая требованиям, предъявляемым к курсовой работе (далее ПО).

ПО должно было быть исполнено в форме экранного приложения на элементах OS Windows. При этом ПО должно запускаться без проблем и нести в себе возможность вводить входные данные вручную, чтобы исследовать все режимы работы программы, включая нештатные ситуации.

Были определены основные алгоритмы и режимы работы, однако ввиду оконного режима этого приложения и объектной модели, применена текстовая запись для их описания.

Был составлен исходный код ПО. Соответствующим образом была настроена среда разработки программного обеспечения для ЭВМ («VS2013»), после чего были произведены пусконаладочные работы и определены основные режимы работы ПО.

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

Была составлена пояснительная записка и оформлена курсовая работа.

Работа по исполнению требований к курсовому проекту завершена.

1. РАЗРАБОТКА ПРИЛОЖЕНИЯ

1.1 Получение требований

Были получены требования на программный продукт для ЭВМ под управлением ОС «Windows».

Продукт должен представлять собою систему управления базой данных (далее СУБД), основанной на файлах, учащихся некого ВУЗа, где была бы возможность управлять списком учеников, редактировать их оценки в сессиях и распечатывать список учеников по их успеваемости по выбранной сессии.

1.2 Разработка соответствующей формы исполнения

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

Интерфейс изделия получил внешний вид в форме окна изменяемых размеров, в котором находятся:

Дерево данных учеников

Кнопка добавления ученика

Кнопка добавления сессии

Кнопка добавления предмета

Контекст-сенситивная кнопка удаления

Кнопка вывода отчёта

Текстовое поле для ввода номера сессии для отчёта

Текстовое поле для вывода отчёта

Диалог сохранения

Диалог открытия

На данном этапе разработка вида исполнения была закончена, началась разработка стандартных алгоритмов работы приложения.

Были определены основные функции, которые исполняются приложениями.

1.3 Описание функциональных возможностей ПО

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

Изделие №1:

Ввод информации в добавленные узлы дерева, их удаление.

Сохранение и открытие данных.

Просмотр всей базы данных или создание отчёта по успеваемости

Просмотр учащихся.

Удаление учащихся.

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

Изменение всех этих атрибутов.

Просмотр списка оценок.

Добавление предмета с указанием названия (не может быть пустым), семестра, типа и оценки.

Удаление предмета.

Просмотр списка отличников.

Печать списка отличников.

Изделие №6:

Функции, идентичные изделию №5, за исключением изменений: в атрибутах учащегося отсутствует курс, группа, результаты ЕГЭ и присутствует знак «Нуждается в общежитии», который можно поставить либо убрать. Отсутствует список отличников, присутствует список проваливших хотя бы один посещённый экзамен.

Добавленные функции:

Сохранение базы данных.

Редактирование базы данных.

Открытие базы данных.

Сохранение базы данных под другим именем и по другому пути.

1.4 Руководство системного программиста

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

Действия по установке:

Скопировать каталоги в созданную для них папку в каталоге Program Files или таком, который необходим для работы.

Создать ярлыки на рабочем столе или в группах меню «Пуск», если в этом есть необходимость. Назначить клавиши быстрого вызова, если есть необходимость.

Действия по обслуживанию:

Дополнительных действий по техобслуживанию ПО не требуется. Для изделия требуется свободное место на диске, равное объёму базы данных.

Действия по удалению программных продуктов:

Удалить все ярлыки, ссылающиеся на эти файлы.

При необходимости, удалить файл базы данных задания.

Удалить файлы.

Удалить каталог от приложений.

1.5 Руководство оператора

Действия по оперированию с проектом:

Запустить программу.

Выбрать нужный файл посредством операций с диалогом открытия. При отсутствии файла нажать Отмена.

При нажатии Отмена выбрать место для сохранения, нажать ОК.

Убедиться, что в заголовке возникшего на экране в результате Ваших действий окна написано «Карточка студента».

Ознакомиться с элементами управления.

Нажать «Добавить студента».

Ознакомиться с элементами дерева, которые были добавлены.

Ввести нужные данные в узлы посредством их редактирования.

Нажать «Добавить сессию» необходимое количество раз.

Добавить предметы в нужном количестве, отредактировать их данные.

Ознакомиться с результатом своих действий. При необходимости повторить процедуру, начиная с п. 5.

При необходимости удаления щёлкнуть по ряду с нужной записью и нажать «Удалить».

При необходимости распечатать или просмотреть список отличников нажать на кнопку «Сформировать», введя номер сессии.

Ознакомиться со списком.

При отсутствии рекомендаций к дальнейшей работе произвести выход из окна программы двойным щелчком по системной иконке или одинарным щелчком по кнопке с диагональным крестом в верхнем правом углу окна.

1.6 Возможные неполадки и их исправление

Предусмотренные программой ограничения. Следовать инструкциям.

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

В общем про возможные неполадки:

Большинство неполадок связаны с ограничениями самой программы, системы, компьютера или пользователя. Все узкие места кода защищены. Убедитесь, что Вы прочитали руководство пользователя и используете ПО по назначению.

база программирование алгоритм функциональный

2. ЛИСТИНГ ИСХОДНЫХ КОДОВ

#pragma once

namespace filesystem {

using namespace System;

using namespace System::ComponentModel;

using namespace System::Collections;

using namespace System::Windows::Forms;

using namespace System::Data;

using namespace System::Drawing;

using namespace std;

/// <summary>

/// Сводка для Form1

/// </summary>

public ref class Form1 : public System::Windows::Forms::Form

{

public:

Form1(void)

{

InitializeComponent();

//

//TODO: добавьте код конструктора

//

}

protected:

/// <summary>

/// Освободить все используемые ресурсы.

/// </summary>

~Form1()

{

if (components)

{

delete components;

}

}

protected:

private: System::Windows::Forms::Button^ button2;

private: System::Windows::Forms::Button^ button5;

private: System::Windows::Forms::Button^ button6;

private: System::Windows::Forms::Button^ button9;

private: System::Windows::Forms::Button^ button1;

private: System::String^ filename;

private: System::Windows::Forms::TreeView^ treeView1;

private: System::Windows::Forms::TextBox^ textBox1;

private: System::Windows::Forms::TextBox^ textBox2;

private:

/// <summary>

/// Требуется переменная конструктора.

/// </summary>

System::ComponentModel::Container ^components;

#pragma region Windows Form Designer generated code

/// <summary>

/// Обязательный метод для поддержки конструктора - не изменяйте

/// содержимое данного метода при помощи редактора кода.

/// </summary>

void InitializeComponent(void)

{

this->button2 = (gcnew System::Windows::Forms::Button());

this->button5 = (gcnew System::Windows::Forms::Button());

this->button6 = (gcnew System::Windows::Forms::Button());

this->button9 = (gcnew System::Windows::Forms::Button());

this->button1 = (gcnew System::Windows::Forms::Button());

this->treeView1 = (gcnew System::Windows::Forms::TreeView());

this->textBox1 = (gcnew System::Windows::Forms::TextBox());

this->textBox2 = (gcnew System::Windows::Forms::TextBox());

this->SuspendLayout();

//

// button2

//

this->button2->Enabled = false;

this->button2->Location = System::Drawing::Point(111, 12);

this->button2->Name = L"button2";

this->button2->Size = System::Drawing::Size(86, 23);

this->button2->TabIndex = 7;

this->button2->Text = L"Новая сессия";

this->button2->UseVisualStyleBackColor = true;

this->button2->Click += gcnew System::EventHandler(this, &Form1::button2_Click);

//

// button5

//

this->button5->Enabled = false;

this->button5->Location = System::Drawing::Point(203, 12);

this->button5->Name = L"button5";

this->button5->Size = System::Drawing::Size(95, 23);

this->button5->TabIndex = 10;

this->button5->Text = L"Новый предмет";

this->button5->UseVisualStyleBackColor = true;

this->button5->Click += gcnew System::EventHandler(this, &Form1::button5_Click);

//

// button6

//

this->button6->Location = System::Drawing::Point(12, 12);

this->button6->Name = L"button6";

this->button6->Size = System::Drawing::Size(93, 23);

this->button6->TabIndex = 12;

this->button6->Text = L"Новый студент";

this->button6->UseVisualStyleBackColor = true;

this->button6->Click += gcnew System::EventHandler(this, &Form1::button6_Click);

//

// button9

//

this->button9->Location = System::Drawing::Point(368, 12);

this->button9->Name = L"button9";

this->button9->Size = System::Drawing::Size(109, 23);

this->button9->TabIndex = 15;

this->button9->Text = L"Вывести список";

this->button9->UseVisualStyleBackColor = true;

this->button9->Click += gcnew System::EventHandler(this, &Form1::button9_Click);

//

// button1

//

this->button1->Enabled = false;

this->button1->Location = System::Drawing::Point(304, 12);

this->button1->Name = L"button1";

this->button1->Size = System::Drawing::Size(58, 23);

this->button1->TabIndex = 18;

this->button1->Text = L"Удалить";

this->button1->UseVisualStyleBackColor = true;

this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click_2);

//

// treeView1

//

this->treeView1->Anchor = static_cast<System::Windows::Forms::AnchorStyles>((((System::Windows::Forms::AnchorStyles::Top | System::Windows::Forms::AnchorStyles::Bottom)

| System::Windows::Forms::AnchorStyles::Left)

| System::Windows::Forms::AnchorStyles::Right));

this->treeView1->HideSelection = false;

this->treeView1->LabelEdit = true;

this->treeView1->Location = System::Drawing::Point(12, 41);

this->treeView1->Name = L"treeView1";

this->treeView1->PathSeparator = L"::";

this->treeView1->Size = System::Drawing::Size(465, 125);

this->treeView1->TabIndex = 19;

this->treeView1->BeforeLabelEdit += gcnew System::Windows::Forms::NodeLabelEditEventHandler(this, &Form1::treeView1_BeforeLabelEdit);

this->treeView1->AfterLabelEdit += gcnew System::Windows::Forms::NodeLabelEditEventHandler(this, &Form1::treeView1_AfterLabelEdit);

this->treeView1->AfterSelect += gcnew System::Windows::Forms::TreeViewEventHandler(this, &Form1::treeView1_AfterSelect);

//

// textBox1

//

this->textBox1->Anchor = static_cast<System::Windows::Forms::AnchorStyles>(((System::Windows::Forms::AnchorStyles::Bottom | System::Windows::Forms::AnchorStyles::Left)

| System::Windows::Forms::AnchorStyles::Right));

this->textBox1->Location = System::Drawing::Point(12, 198);

this->textBox1->Multiline = true;

this->textBox1->Name = L"textBox1";

this->textBox1->Size = System::Drawing::Size(465, 87);

this->textBox1->TabIndex = 20;

//

// textBox2

//

this->textBox2->Anchor = static_cast<System::Windows::Forms::AnchorStyles>(((System::Windows::Forms::AnchorStyles::Bottom | System::Windows::Forms::AnchorStyles::Left)

| System::Windows::Forms::AnchorStyles::Right));

this->textBox2->Location = System::Drawing::Point(12, 172);

this->textBox2->Name = L"textBox2";

this->textBox2->Size = System::Drawing::Size(465, 20);

this->textBox2->TabIndex = 21;

//

// Form1

//

this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);

this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;

this->ClientSize = System::Drawing::Size(489, 297);

this->Controls->Add(this->textBox2);

this->Controls->Add(this->textBox1);

this->Controls->Add(this->treeView1);

this->Controls->Add(this->button1);

this->Controls->Add(this->button9);

this->Controls->Add(this->button6);

this->Controls->Add(this->button5);

this->Controls->Add(this->button2);

this->MinimumSize = System::Drawing::Size(505, 336);

this->Name = L"Form1";

this->Text = L"Карточка студента";

this->FormClosing += gcnew System::Windows::Forms::FormClosingEventHandler(this, &Form1::Form1_FormClosing);

this->Load += gcnew System::EventHandler(this, &Form1::Form1_Load);

this->ResumeLayout(false);

this->PerformLayout();

}

#pragma endregion

private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) {

OpenFileDialog^ ofd= gcnew OpenFileDialog;

ofd->Filter = "*.xml|*.xml|*.txt|*.txt|*.*|*.*";

if (ofd->ShowDialog()==System::Windows::Forms::DialogResult::OK){

filename = ofd->FileName;

String^ StrIn = System::IO::File::ReadAllText(filename, System::Text::Encoding::Default);

array<String^> ^ rty = StrIn->Split(gcnew array<Char>{ Convert::ToChar(";") }, StringSplitOptions::RemoveEmptyEntries);

for (int a = 0; a < rty->Length; a++){

array<String^>^Data = rty[a]->Split(gcnew array<Char>{ Convert::ToChar(",") }, StringSplitOptions::RemoveEmptyEntries);

treeView1->Nodes->Add("");

treeView1->Nodes[treeView1->Nodes->Count - 1]->Nodes->Add(Data[0]->Trim());

treeView1->Nodes[treeView1->Nodes->Count - 1]->Text = Data[0]->Trim();

treeView1->Nodes[treeView1->Nodes->Count - 1]->Nodes->Add(Data[1]->Trim());

treeView1->Nodes[treeView1->Nodes->Count - 1]->Nodes->Add(Data[2]->Trim());

treeView1->Nodes[treeView1->Nodes->Count - 1]->Nodes->Add(Data[3]->Trim());

treeView1->Nodes[treeView1->Nodes->Count - 1]->Nodes->Add(Data[4]->Trim());

treeView1->Nodes[treeView1->Nodes->Count - 1]->Nodes->Add(Data[5]->Trim());

if (Data->Length>6){

array<String^>^ Sessions = Data[6]->Split(gcnew array<Char>{Convert::ToChar(".")}, StringSplitOptions::RemoveEmptyEntries);

for (int b = 0; b < Sessions->Length; b++){

treeView1->Nodes[treeView1->Nodes->Count - 1]->Nodes->Add("Сессия " + Convert::ToString(treeView1->Nodes[treeView1->Nodes->Count - 1]->Nodes->Count - 5));

array<String^>^ Tasks = Sessions[b]->Split(gcnew array<Char>{Convert::ToChar("!")}, StringSplitOptions::RemoveEmptyEntries);

for (int c = 0; c < Tasks->Length; c++){

array<String^>^RTD = Tasks[c]->Split(gcnew array<Char>{Convert::ToChar(":")}, StringSplitOptions::RemoveEmptyEntries);

TreeNode ^tt = treeView1->Nodes[treeView1->Nodes->Count - 1];

TreeNode ^ts = tt->Nodes[tt->Nodes->Count - 1];

ts->Nodes->Add("");

TreeNode ^tk = ts->Nodes[ts->Nodes->Count - 1];

tk->Text = RTD[0] + ", " + RTD[1];

tk->Nodes->Add(RTD[0]);

tk->Nodes->Add(RTD[1]);

}

}

}

}

BringToFront();

if (treeView1->Nodes->Count > 0){ button1->Enabled = true; button2->Enabled = true; }

}

else{

SaveFileDialog^ sfd;

sfd = gcnew SaveFileDialog;

sfd->Filter = "*.xml|*.xml";

if (sfd->ShowDialog() == System::Windows::Forms::DialogResult::OK){

filename = sfd->FileName;

BringToFront();

}

else{

MessageBox::Show("Не предъявлен файл с базой данных! Подключение провалено!");

Close();

}

}

}

private: System::Void button6_Click(System::Object^ sender, System::EventArgs^ e) {

button2->Enabled = true;

button1->Enabled = true;

treeView1->Nodes->Add( "Иванов Иван Иванович");

treeView1->Nodes[treeView1->Nodes->Count - 1]->Nodes->Add("Иванов Иван Иванович");

treeView1->Nodes[treeView1->Nodes->Count - 1]->Nodes->Add("КБ-3");

treeView1->Nodes[treeView1->Nodes->Count - 1]->Nodes->Add( "09.05.2015");

treeView1->Nodes[treeView1->Nodes->Count - 1]->Nodes->Add( "2015");

treeView1->Nodes[treeView1->Nodes->Count - 1]->Nodes->Add( "КБ-3з2014");

treeView1->Nodes[treeView1->Nodes->Count - 1]->Nodes->Add("ИТ6з142000");

treeView1->SelectedNode = treeView1->Nodes[treeView1->Nodes->Count - 1];

}

private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) {

if (treeView1->SelectedNode->Level == 0){

if (treeView1->SelectedNode->Nodes->Count < 15){

treeView1->SelectedNode->Nodes->Add("Сессия " + Convert::ToString(treeView1->SelectedNode->Nodes->Count - 5));

}

}

else if (treeView1->SelectedNode->Level == 1){

if (treeView1->SelectedNode->Parent->Nodes->Count < 15){

treeView1->SelectedNode->Parent->Nodes->Add("Сессия " + Convert::ToString(treeView1->SelectedNode->Parent->Nodes->Count - 5));

}

}

}

private: System::Void Form1_FormClosing(System::Object^ sender, System::Windows::Forms::FormClosingEventArgs^ e) {

String^ strout="";

for (int a = 0; a<treeView1->Nodes->Count; a++){

strout = strout + treeView1->Nodes[a]->Nodes[0]->Text+",";

strout = strout + treeView1->Nodes[a]->Nodes[1]->Text + ",";

strout = strout + treeView1->Nodes[a]->Nodes[2]->Text + ",";

strout = strout + treeView1->Nodes[a]->Nodes[3]->Text + ",";

strout = strout + treeView1->Nodes[a]->Nodes[4]->Text + ",";

strout = strout + treeView1->Nodes[a]->Nodes[5]->Text + ",";

for (int b = 6; b < treeView1->Nodes[a]->Nodes->Count; b++){

for (int c = 0; c < treeView1->Nodes[a]->Nodes[b]->Nodes->Count; c++){

strout = strout + treeView1->Nodes[a]->Nodes[b]->Nodes[c]->Nodes[0]->Text + ":" + treeView1->Nodes[a]->Nodes[b]->Nodes[c]->Nodes[1]->Text+"!";

}

strout = strout + ".";

}

strout = strout + ";";

}

System::IO::File::WriteAllText(filename, strout, System::Text::Encoding::Default);

}

private: System::Void treeView1_BeforeLabelEdit(System::Object^ sender, System::Windows::Forms::NodeLabelEditEventArgs^ e) {

if (e->Node->Level==0||e->Node->Level==2||(e->Node->Level==1&&e->Node->Index>5)){

e->CancelEdit = true;

}

}

private: System::Void button1_Click_2(System::Object^ sender, System::EventArgs^ e) {

if (treeView1->SelectedNode->Level == 3){

treeView1->SelectedNode->Parent->Remove();

treeView1->SelectedNode = treeView1->Nodes[0];

}

else if (treeView1->SelectedNode->Level == 2){

treeView1->SelectedNode->Remove();

treeView1->SelectedNode = treeView1->Nodes[0];

}

else if (treeView1->SelectedNode->Level == 1&&treeView1->SelectedNode->Index>5){

if (MessageBox::Show("Вы точно хотите удалить сессию со всеми предметами и оценками?", "Подтверждение удаления", MessageBoxButtons::YesNo) == System::Windows::Forms::DialogResult::Yes){

treeView1->SelectedNode->Remove();

treeView1->SelectedNode = treeView1->Nodes[0];

}

}

else if (treeView1->SelectedNode->Level == 1 && treeView1->SelectedNode->Index<6){

if (MessageBox::Show("Вы точно хотите удалить студента со всеми данными, сессиями, предметами и оценками?", "Подтверждение удаления", MessageBoxButtons::YesNo) == System::Windows::Forms::DialogResult::Yes){

treeView1->SelectedNode->Parent->Remove();

if (treeView1->Nodes->Count>0){

treeView1->SelectedNode = treeView1->Nodes[0];

}

else{ button1->Enabled = false; button2->Enabled = false; }

}

}

else if (treeView1->SelectedNode->Level == 0){

if (MessageBox::Show("Вы точно хотите удалить студента со всеми данными, сессиями, предметами и оценками?", "Подтверждение удаления", MessageBoxButtons::YesNo) == System::Windows::Forms::DialogResult::Yes){

treeView1->SelectedNode->Remove();

if (treeView1->Nodes->Count>0){

treeView1->SelectedNode = treeView1->Nodes[0];

}

else{ button1->Enabled = false; button2->Enabled = false; }

}

}

}

private: System::Void treeView1_AfterSelect(System::Object^ sender, System::Windows::Forms::TreeViewEventArgs^ e) {

try{

if ((treeView1->SelectedNode->Level == 1 && treeView1->SelectedNode->Index>5) || treeView1->SelectedNode->Level > 1){

button5->Enabled = true;

}

else{

button5->Enabled = false;

}

}

catch (Exception^ ex){

}

}

private: System::Void button5_Click(System::Object^ sender, System::EventArgs^ e) {

if (treeView1->SelectedNode->Level == 1){

treeView1->SelectedNode->Nodes->Add( "Новый предмет, 5");

treeView1->SelectedNode->Nodes[treeView1->SelectedNode->Nodes->Count-1]->Nodes->Add("Новый предмет");

treeView1->SelectedNode->Nodes[treeView1->SelectedNode->Nodes->Count - 1]->Nodes->Add("5");

}

else if (treeView1->SelectedNode->Level == 2){

treeView1->SelectedNode->Parent->Nodes->Add("Новый предмет, 5");

treeView1->SelectedNode->Parent->Nodes[treeView1->SelectedNode->Parent->Nodes->Count - 1]->Nodes->Add("Новый предмет");

treeView1->SelectedNode->Parent->Nodes[treeView1->SelectedNode->Parent->Nodes->Count - 1]->Nodes->Add("5");

}

else if (treeView1->SelectedNode->Level == 3){

treeView1->SelectedNode->Parent->Parent->Nodes->Add("Новый предмет, 5");

treeView1->SelectedNode->Parent->Parent->Nodes[treeView1->SelectedNode->Parent->Parent->Nodes->Count - 1]->Nodes->Add("Новый предмет");

treeView1->SelectedNode->Parent->Parent->Nodes[treeView1->SelectedNode->Parent->Parent->Nodes->Count - 1]->Nodes->Add("5");

}

}

private: System::Void treeView1_AfterLabelEdit(System::Object^ sender, System::Windows::Forms::NodeLabelEditEventArgs^ e) {

if (e->Node->Level == 3 && e->Node->Index == 0){

e->Node->Parent->Text = e->Label + ", " + e->Node->Parent->Nodes[1]->Text;

}

else if (e->Node->Level == 3 && e->Node->Index == 1){

try{

e->Node->Parent->Text = e->Node->Parent->Nodes[0]->Text + ", " +Convert::ToString(Convert::ToInt32( e->Label));

}

catch (Exception^ exc){

MessageBox::Show(exc->Message);

e->CancelEdit = true;

}

}

else if (e->Node->Level == 1&&e->Node->Index==2){

try{

DateTime^ Dummy = Convert::ToDateTime(e->Label);

}

catch (Exception^ exc){

MessageBox::Show(exc->Message);

e->CancelEdit = true;

}

}

else if (e->Node->Level == 1 && e->Node->Index == 3){

try{

Int32^ Dummy = Convert::ToInt32(e->Label);

}

catch (Exception^ exc){

MessageBox::Show(exc->Message);

e->CancelEdit = true;

}

}

}

private: System::Void button9_Click(System::Object^ sender, System::EventArgs^ e) {

int sdd = 0;

try{

textBox1->Text = "";

sdd = Convert::ToInt32(textBox2->Text);

array<String^>^ mark_students = gcnew array<String^>(200);

int mark_students_L = 0;

for (int x = 0; x < treeView1->Nodes->Count; x++){

if (treeView1->Nodes[x]->Nodes->Count>=sdd+6){

int marks = 0;

int marks_L = 0;

for (int y = 0; y < treeView1->Nodes[x]->Nodes[sdd + 5]->Nodes->Count; y++){

array<String^>^ RTD = treeView1->Nodes[x]->Nodes[sdd + 5]->Nodes[y]->Text->Split(gcnew array<Char> {Convert::ToChar(",")}, StringSplitOptions::RemoveEmptyEntries);

marks += Convert::ToInt32(RTD[1]->Trim());

marks_L++;

}

marks = marks / marks_L;

mark_students[mark_students_L] = treeView1->Nodes[x]->Nodes[0]->Text+","+marks;

mark_students_L++;

}

}

int maximum = 0;

String^ Max = "";

int i, j, pos;

String^ tmp;

for (i = 0; i < mark_students_L; ++i)

{

pos = i;

tmp = mark_students[i];

for (j = i + 1; j < mark_students_L; ++j)

{

array<String^>^ RTD = mark_students[j]->Split(gcnew array<Char> {Convert::ToChar(",")});

array<String^>^ RTDr = tmp->Split(gcnew array<Char> {Convert::ToChar(",")});

if (Convert::ToInt32(RTD[1]) > Convert::ToInt32(RTDr[1]))

{

pos = j;

tmp = mark_students[j];

}

}

mark_students[pos] = mark_students[i];

mark_students[i] = tmp;

textBox1->Text += mark_students[i] + "\r\n";

}

}

catch (Exception^ ex){

MessageBox::Show(ex->Message);

}

}

};

}

3. ПРОВЕРОЧНЫЕ ДАННЫЕ И СКРИНШОТЫ

Рисунок 1. Скриншот окна программы.

Рисунок 2. База данных в текстовом виде

ВЫВОДЫ

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

Функциональные возможности ПО, описанные в разделе 2. 3., полностью соответствуют заявленным функциям и требованиям, предъявляемым к приложениям-составляющим курсовой работы.

Интерфейс такого ПО полностью соответствует ключевым понятиям Windows GUI Engineering, что позволяет пользователю максимально просто управляться с программой.

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

Руководство системного администратора позволяет максимально быстро развернуть рабочее место.

Формат базы данных, используемый в задании, является, во-первых, уникальным, а во-вторых, интуитивно понятным, что позволяет делать другие opensource-альтернативы базы данных учеников.

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

...

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

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