Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пояснювальна.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.34 Mб
Скачать

5 Розробка інтерфейсу програми з користувачем

Розробка інтерфейсу є дуже важливим пунктом в створені проекту, від інтерфейсу проекту, в користувача створюється перше враження про проект. З сучасними можливостями дизайну і програмування існує можливість створення красивого і дружнього інтерфейсу для користувача.

Етапи проектування власного інтерфейсу проекту:

  • Запустити середовище Visual Studio 2008 (Пуск – Visual Studio 2008).

  • Створити новий проект (File – New – Project - Windows Forms Application).

  • Створити головну форму та розмістити на ній компоненти згідно рис.1 (Project – Add New Item - Windows Form).

  • Зберігаєм проект в потрібну нам директорію.

  • цього нам відкривається нова форма: рисунок 2.

.

Рисунок 2 – “Створення форми”

  • Додаємо на форму компоненти які потрібні для реалізації підпункту меню, рисунок 3.

Рисунок 3 – “Встановлення компонентів”

У результаті даних спостережень необхідно знайти, щось середнє між зручністю та красою. Користуючись власним досвідом користуванням програм, був вибраний саме такий інтерфейс.

6 Складання коду програми

Для того, щоб з часом було легше прочитати та відредагувати, для покращення функціональності та універсальності в програмі застосовуються чотири модулі: Form1.h, Auditor.h, vukl.h та Rozklad.h. Кожен з модулів має своє призначення.

Модуль Form1.h призначений для об’єднання інших троьх модулів та для функціональності деяких дій.

Rozklad.h призначений для створення класу, що є основою програми, в даному модулі записані всі методи класу.

Auditor.h призначенний для створення класу, в якому описані методи зчитування інформації про аудиторію то прикріплення фото.

vukl.h призначенний для створення класу, в якому описані методи зчитування даних про аудиторії в список.

Зчитування з файла

FileStream^ fs =gcnew FileStream(System::Windows::Forms::Application::StartupPath+"\\fam_p.txt",FileMode::Create);

StreamWriter^ file=gcnew StreamWriter(fs);

IDictionaryEnumerator ^enumerator1 = Rz->GetEnumerator();

while (enumerator1->MoveNext()){

file->WriteLine("&"+enumerator1->Key->ToString());

IDictionaryEnumerator ^enumerator2= ((Dictionary<int,List<P^>^>^)enumerator1->Value)->GetEnumerator();

while (enumerator2->MoveNext()){

file->WriteLine("#"+enumerator2->Key->ToString());

for(int i=0;i<((List<P^>^)enumerator2->Value)->Count;i++){

file->WriteLine("*"+((List<P^>^)enumerator2->Value)[i]->number.ToString()+"."+((List<P^>^)enumerator2->Value)[i]->Auditoriya);

}

}

}

file->Close();

}

Визначення обраного дня

void Rozklad::ChangeDay(System::String ^v, int num){

bool zan=false;

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

if(grid[0,i]->Value!=""&&grid[1,i]->Value!="")

{

IDictionaryEnumerator ^enumerator1 = Rz->GetEnumerator();

while (enumerator1->MoveNext())

{

if(((Dictionary<int,List<P^>^>^)enumerator1->Value)->ContainsKey(num))

{

if(enumerator1->Key->ToString()==v)continue;

for(int j=0;j<((List<P^>^)((Dictionary<int,List<P^>^>^)enumerator1->Value)[num])->Count;j++)

if(((List<P^>^)((Dictionary<int,List<P^>^>^)enumerator1->Value)[num])[j]->Auditoriya==grid[1,i]->Value->ToString()&&((List<P^>^)((Dictionary<int,List<P^>^>^)enumerator1->Value)[num])[j]->number==Convert::ToInt32(grid[0,i]->Value->ToString()))

{

zan=true;

MessageBox::Show("Аудиторію "+grid[1,i]->Value->ToString()+" зайняв "+enumerator1->Key->ToString());

break;

}

}

}

if(zan)break;

}

if(!zan){

List <P^>^ z=gcnew List<P^>;

for(int i=0;i<4;i++)if(grid[0,i]->Value!=""&&grid[1,i]->Value!=""){

P^ pr=gcnew P(Convert::ToInt32( grid[0,i]->Value),grid[1,i]->Value->ToString());

z->Add(pr);

}

if(Rz->ContainsKey(v)){

if(Rz[v]->ContainsKey(num)){

Rz[v]->Remove(num);

}

Rz[v]->Add(num,z);

}else{

Dictionary<int,List<P^>^> ^x=gcnew Dictionary<int,List<P^>^>;

x->Add(num,z);

Rz->Add(v,x);

}

Вибір аудиторії

void Rozklad::ChangeAudit(System::String ^A, int num)

{

IDictionaryEnumerator ^enumerator1 = Rz->GetEnumerator();

while (enumerator1->MoveNext())

{

if(((Dictionary<int,List<P^>^>^)enumerator1->Value)->ContainsKey(num))

{

for(int i=0;i<((List<P^>^)((Dictionary<int,List<P^>^>^)enumerator1->Value)[num])->Count;i++)

if(((List<P^>^)((Dictionary<int,List<P^>^>^)enumerator1->Value)[num])[i]->Auditoriya==A)

{

((List<P^>^)((Dictionary<int,List<P^>^>^)enumerator1->Value)[num])->RemoveAt(i);

break;

}

}

}

int i=0;

while(i!=4&&grid[0,i]->Value!="")

{

P^ pr=gcnew P(Convert::ToInt32(grid[0,i]->Value->ToString()),A);

if(Rz[grid[1,i]->Value->ToString()]->ContainsKey(num))

Rz[grid[1,i]->Value->ToString()][num]->Add(pr);

else

{

Dictionary<int,List<P^>^> ^x=gcnew Dictionary<int,List<P^>^>;

List <P^>^ z=gcnew List<P^>;

z->Add(pr);

x->Add(num,z);

Rz->Add(grid[1,i]->Value->ToString(),x);

}

i++;

}

Відображення дня

void Rozklad::ShowDay(String^ v,int num){

//DataGridViewComboBoxCell

// ((DataGridViewComboBoxCell)grid[1,0])->

if(Rz->ContainsKey(v)){

if(Rz[v]->ContainsKey(num)){

for(int i=0;i<Rz[v][num]->Count;i++){

grid[0,Rz[v][num][i]->number-1]->Value=Rz[v][num][i]->number.ToString();

grid[1,Rz[v][num][i]->number-1]->Value =Rz[v][num][i]->Auditoriya;

Відображення пари

void Rozklad::ShowPara(String^ A,int num){

int k=0;

//String ^temp=A;

IDictionaryEnumerator ^enumerator1 = Rz->GetEnumerator();

while (enumerator1->MoveNext()){

if(((Dictionary<int,List<P^>^>^)enumerator1->Value)->ContainsKey(num))

{

for(int i=0;i<((List<P^>^)((Dictionary<int,List<P^>^>^)enumerator1->Value)[num])->Count;i++)

if(((List<P^>^)((Dictionary<int,List<P^>^>^)enumerator1->Value)[num])[i]->Auditoriya==A){

grid[0,k]->Value=((List<P^>^)((Dictionary<int,List<P^>^>^)enumerator1->Value)[num])[i]->number.ToString();

grid[1,k++]->Value=enumerator1->Key->ToString();

}

}

}