Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Rpz.doc
Скачиваний:
2
Добавлен:
16.09.2019
Размер:
159.74 Кб
Скачать

1.3 Поиск ошибок и отладка

Последним этапом создания является поиск ошибок и отладка. Для этого необходимо проверить работоспособность форм, всех кнопок. После всех тестов по необходимости провести доработку исходного кода.

2.Архитектура программы

Данная программа обладает достаточно простой навигационной системой.

Для просмотра базы данных необходимо нажать на кнопку «База данных» в главном меню.

Рисунок 2.1 - титульная страница, отражающая назначение.

При нажатии на кнопку «База данных» переходим в базу данных.

Рисунок 2.2 – База данных.

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

Каждая страница ИС включает навигационные элементы, охватывающие все разделы программы, причем эти элементы всегда на виду.

Все страницы программы, а также все интегрированные в них графические и интерактивные элементы минимальны по объему.

Весь проект выдержан в одном дизайнерском стиле, яркие, но не дикие цвета приятны для глаз.

Заключение

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

Можно считать, что основные цели и задачи работы выполнены.

Список использованных источников:

• http://www.techdays.ru/videos?search=XNA

• Google.com

• И др.

Приложение

Исходные коды программного продукта в электронном варианте.

Таблица 1 (Чтение базы данных)

#region GetDataBase

FileInfo f = new FileInfo("Configs.txt");

StreamReader reader = f.OpenText();

numOfClients= int.Parse(reader.ReadLine());

reader.Close();

#region reading

for (int Z = 0; Z < numOfClients; Z++)

{

FileInfo F = new FileInfo(Z.ToString() + ".txt");

StreamReader READER = F.OpenText();

clients.Add(new Client());

clients[Z].Name = READER.ReadLine();

clients[Z].FamilyName = READER.ReadLine();

clients[Z].Surname = READER.ReadLine();

clients[Z].TelephoneNumber = READER.ReadLine();

clients[Z].bDay = READER.ReadLine();

clients[Z].bMonth = READER.ReadLine();

clients[Z].About = READER.ReadLine();

READER.Close();

FileInfo NOS = new FileInfo(Z.ToString() + "NOS.txt");

StreamReader reader1 = NOS.OpenText();

clients[Z].numofServices = int.Parse(reader1.ReadLine());

reader1.Close();

for (int M = 0; M <= clients[Z].numofServices; M++)

{

FileInfo Servs = new FileInfo(Z.ToString() + "-SBD-" + M.ToString() + ".txt");

StreamReader reader2 = Servs.OpenText();

int m = int.Parse(reader2.ReadLine());

clients[Z].Pay.Add(m);

clients[Z].Zametki.Add(reader2.ReadLine());

int DAY = int.Parse(reader2.ReadLine());

int MONTH = int.Parse(reader2.ReadLine());

int YEAR = int.Parse(reader2.ReadLine());

int HOUR = int.Parse(reader2.ReadLine());

int MINUTE = int.Parse(reader2.ReadLine());

clients[Z].Date.Add(new DateTime(YEAR,MONTH,DAY,HOUR,MINUTE,0));

reader2.Close();

}

}

#endregion

#endregion

Таблица 2 (Функции рисования таблицы и маркера клиента)

public void ShowDataBase()

{

if (ProgramState == 2)

{//(Table)*TabC<=clients.Count/TabC

if (keyboard.IsKeyDown(Keys.Add)&& prevkeybd.IsKeyUp(Keys.Add)&& clients.Count - Table*TabC >=TabC)// clients.Count>=TabC*(Table+1)

{ Table++; ClickedInd = 0; }

if (keyboard.IsKeyDown(Keys.Subtract) && prevkeybd.IsKeyUp(Keys.Subtract)&&Table>0)

{Table--;}

int letyoudraw = 1;

for (int m = minCind; m < maxCind; m++)

{

if (letyoudraw==1)

{

if (maxCind < numOfClients)

{

spriteBatch.DrawString(Font, clients[m].Name + " " + clients[m].FamilyName

+ " " + clients[m].Surname,

new Vector2(30, 50 + (m - minCind) * 30), Color.Black);

}

else

{

for (int t = minCind; t < numOfClients; t++)

{

spriteBatch.DrawString(Font, clients[t].Name + " " + clients[t].FamilyName

+ " " + clients[t].Surname,

new Vector2(30, 50 + (t - minCind) * 30), Color.Black);

} letyoudraw = 0;

}

}

}

spriteBatch.Draw(Content.Load<Texture2D>("Textures/Backward"), new Rectangle(0, (height * 4) / 5, 260, 60), Color.White);

}

}

public void GetClientIndex()

{

minCind = Table * TabC;

maxCind = (Table+1)*TabC;

float MWidth = 0;

if (ProgramState == 2)

{

int cInd = (int)((mouse.Y - 50) / 30);

if (cInd >= 0 && cInd + minCind< numOfClients)//for (int m = minCind; m < maxCind; m++)

{

int g = cInd + minCind;

MWidth = (clients[g].Name.Length +

clients[g].FamilyName.Length + clients[g].Surname.Length + 1.5f) * 14;

if (mouse.X >= 30 && mouse.X <= MWidth && mouse.Y<50+30*(TabC))

{

currIndex = cInd;

spriteBatch.Draw(marker, new Rectangle(30, 50+cInd*30, (int)MWidth, 30), Color.White);

if (clicking==false){DrawClientIndex(currIndex);}

if (mouse.LeftButton == ButtonState.Pressed && prMouse.LeftButton == ButtonState.Released)

{clicking = true; ClickedInd = currIndex;}

}

}

if (clicking && ClickedInd>=0)

{

int g = ClickedInd + minCind;

if (g <= numOfClients)

{

spriteBatch.Draw(mClarker, new Rectangle(30, 50 + ClickedInd * 30,

(int)((clients[g].Name.Length

+ clients[g].FamilyName.Length

+ clients[g].Surname.Length

+ 1.5f) * 14),

30), Color.White);

// Texture2D Photo = Texture2D.FromFile(GraphicsDevice,ClickedInd.ToString()+".jpg");

//spriteBatch.Draw(Content.Load<Texture2D>(g.ToString() + ".jpg"), new Rectangle(650, 50, 200, 250), Color.White);

//spriteBatch.Draw(Photo, new Rectangle(), Color.White);

DrawClientIndex(ClickedInd);

}

}

}

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]