
- •1 Аналітичний розділ
- •2 Побудова інформаційно-математичної моделі задачі
- •3 Об’єктна модель задачі
- •4 Визначення структури даних
- •5 Розробка інтерфейсу програми з користувачем
- •Додаємо на форму компоненти які потрібні для реалізації підпункту меню, рисунок 3.
- •6 Складання коду програми
- •Зчитуваня структури з файла
- •7 Реалізація проекту у візуальному середовищі
- •8 Аналіз програми
- •10.1 Системні вимоги
- •10.2 Інсталяція
- •10.3 Експлуатація
- •11 Аналіз отриманих результатів
- •Висновок
- •Додаток а
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();
}
}
}