Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовик по разработке ПО.DOC
Скачиваний:
25
Добавлен:
01.05.2014
Размер:
270.34 Кб
Скачать

3. Проектирование интерфейса.

    1. Определение групп пользователей программы.

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

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

    1. Разработка диалога.

Вышеуказанные ограничения приводят к следующему решению:

Интерфейс в целом должен представлять из себя «мастер» (wizard), наиболее точно отражающий поиск работы как последовательность шагов

заполнение анкеты - сдача анкеты - получение сведений о подходящих вакансиях

Ввод и назначение пароля/ID не нарушает этой системы.

Шаг “заполнение анкеты” наиболее естественно представить в виде формы–шаблона стандартного резюме.

В случае поиска рабочей силы эта система будет так же удобна.

    1. Описание диалога.

«Выбор режима работы»

«Подбор вакансий»

После выбора режима работы программы появляется приглашение к вводу ID:

Если ID введен (корректный или нет), клиенту предлагается ввести пароль.

Если ID и пароль корректны, пользователь попадает на шаг поиска вакансий (см. ниже).

Если пароль введен неверно, или задан некорректный ID, выдается сообщение:

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

Первая «страница» анкеты – персональные данные.

Вторая «страница» – профессиональные навыки.

Последняя страница – поиск подходящих вакансий.

«Подбор резюме»

Работа с программой начинается с приглашения к вводу ID:

Если ID введен (корректный или нет), клиенту предлагается ввести пароль (см. в «поиске работы»)

Если ID и пароль корректны, пользователь попадает на шаг поиска сотрудников (см. ниже).

Если пароль введен неверно, или задан некорректный ID, выдается сообщение (см. в «поиске работы»)

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

Первая «страница» анкеты – реквизиты фирмы-работодателя.

Вторая «страница» – предоставляемые вакансии.

Последняя страница – результат поиска подходящих сотрудников.

    1. Модель качества диалога

При оценивании модели качества диалога использовались следующие факторы качества:

  1. простота освоения и запоминания операций системы:

Время, требуемое для освоения системы: при минимальных навыках работы с компьютером 15-20 мин. Для более опытных пользователей интерфейс интуитивно понятен.

Сохранение полученных навыков: навыки не теряются, алгоритм поиска предельно прост и хорошо запоминается. Количество различных окон – минимально.

Такие характеристики достигаются путем создания предельно простого в освоении интерфейса: Все шаблоны имеют стандартный набор интерфейсных объектов операционной системы. Все кнопки придерживаются одной системы наименования (реализовано соотвествие и наименованиями ОС)

  1. быстрота достижения целей при использовании системы

Скорость: интуитивно понятный интерфейс позволяет за минимальное время провести весь цикл поиска вакансий (резюме).

  1. субъективная удовлетворенность системой

По оценкам авторов, тестеров и пользователей программы удовлетворенность при работе с системой оценивается на 8 баллов по 10 бальной шкале.

    1. Оценка диалога.

Естественный

Язык программы: русский, родной язык пользователей программы.

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

Логически последовательный

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

Краткий

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

Хорошая поддержка пользователя

Все формы для заполнения снабжены подсказками.

  1. Описание физической модели программы.

    1. Иерархия классов программы

CObject

CCmdTarget

CWnd

CPropertySheet

WorkerWizard Поиск работы

VacancyWizard Поиск рабочей силы

CDialog

CPropertyPage

CID Страницы

CResume1 wizard’а

CResume2 «Поиск работы»

CResume3

CID2 Страницы

CVacancy1 wizard’а

CVacancy2 «Поиск рабочей силы»

CVacancy3

CAddLang Добавление языков

CAddProf Добавление профессий

CIDPass Ввод пароля

CLangList Список языковых знаний

CProfList Список проф. навыков

CVacaList Список вакансий

CLangElem Элементы

CProfElem соответствующих

CVacaElem списков

CFirm Данные сотрудника

CPerson Данные фирмы

    1. Спецификация классов.

#ifndef _Super_Strucs_H_

#define _Super_Strucs_H_

#include "stdafx.h"

#include "afxtempl.h"

struct CProfElem

{

int Prof;

CString ProfDesc;

int Exp;

CString OtherInfo;

CProfElem(int p=0, CString pd="", int e=0, CString oi=""):

Prof(p),ProfDesc(pd),Exp(e),OtherInfo(oi){};

};

struct CLangElem

{

CString LangDesc;

int Lang;

int Level;

CLangElem (CString langD = "", int lID = 0, int l = 0):LangDesc(langD),Lang(lID),Level(l){};

};

struct CVacaElem

{

int Prof;

CString PositionName;

int Stage;

int Gender;

int Education;

int Lang;

int Level;

bool A,B,C,D,E;

CVacaElem ( int p=0, CString name="", int st=0, int gen=0, int edu=0, int lan=0, int lev=0,

bool a=false, bool b=false, bool c=false, bool d=false, bool e=false):

Prof(p),PositionName(name),Stage(st),Education(edu),Gender(gen),Lang(lan),Level(lev),

A(a),B(b),C(c),D(d),E(e){};

};

typedef CList<CProfElem*, CProfElem*> CProfList;

typedef CList<CLangElem*, CLangElem*> CLangList;

typedef CList<CVacaElem*, CVacaElem*> CVacaList;

struct CFirm

{

CString Name;

CString Domain;

CString Address;

CString Phone;

CString ID;

CString Password;

CVacaList VacaList;

CVacaElem *VacaCur;

void clear()

{

Name = "";

Domain = "";

Address = "";

Phone = "";

ID = "";

Password = "";

VacaList.RemoveAll();

VacaCur = 0;

};

};

struct CPerson

{

CString ID;

CString FIO;

CString BD;

int Education;

int Gender;

int FamilyStatus;

bool A,B,C,D,E;

CString Address;

CString Phone;

CString OtherInfo;

CProfList ProfList;

CLangList LangList;

CString Password;

void clear()

{

FIO = "";

BD = "";

Education = 0;

Gender = 0;

FamilyStatus = 0;

A = B = C = D = E = false;

Address = "";

Phone = "";

OtherInfo = "";

ID = "";

Password = "";

ProfList.RemoveAll();

LangList.RemoveAll();

};

};

#endif

  1. Испытания программы

5.1 Тесты (проверка работоспособности и устойчивости)

Устойчивость

тесты на обработку некорректной информации

  • ввод некорректного пароля/ID

прочие возможности некорректного ввода отсечены конструкцией интерфейса

    1. Результаты тестирования

  1. Тестирование показало большую устойчивость и работоспособность программы.

    1. Характеристики разработки.

КЧИК написанных разработчиками:

Superstrucs.h

0,116

AddLang.cpp

0,008

AddProf.cpp

0,004

ID.cpp

0,190

ID2.cpp

0,134

IDPASS.cpp

0,004

Resume1.cpp

0,120

Resume2.cpp

0,180

Resume3.cpp

0,340

Vacancy1.cpp

0,045

Vacancy2.cpp

0,310

Vacancy3.cpp

0,230

Exchange.cpp

0,139

ExchangeDlg.cpp

0,017

Итого:

1,837

Работы

Свиридов

Грибников

Всего

Проектирование логической модели

2.5%

2.5%

5%

Проектирование интерфейса

3%

2%

5 %

Кодирование

45%

5%

50%

Подготовка документации

10%

20%

30%

Тестирование

5%

5%

10%

Отладка

5%

5%

10%

ИТОГО 100%

Заключение.

6. Анализ качества разработанной программы

6.1 Показатели надежности

  1. устойчивость функционирования: программа показала хорошую устойчивость и может работать в автономном режиме на терминале согласно своего назначения

    1. Показатели сопровождения

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

    1. Возможности применения программы и пути ее улучшения.

Программа полностью функциональна согласно требованиям.

Возможности улучшения:

  • создание администраторского рабочего места

  • разработка web-интерфейса и механизма взаимодействия с базой данных для возможности работы через сеть Internet

- добавление функции печати результатов поиска

Из-за большого объема текст программы не приводится.

Пример функции, работающей с базой через DAO.

void CVacancy3::Find()

{

// поиск сотрудников

CFirm& firm = ((VacancyWizard*)GetParent())->Firm;

CWorkerdatApp* pApp = (CWorkerdatApp*)AfxGetApp();

COleVariant vt;

CDaoRecordset recSet(&(pApp -> m_dbWorkBase));

CString SQL_Pattern;

SQL_Pattern.LoadString(IDS_SQL_FIND_WORKERS);

CString SQL_Str;

SQL_Str.Format(SQL_Pattern, firm.ID);

// запрос рабочих по всем вакансиям

recSet.Open(AFX_DAO_USE_DEFAULT_TYPE, (LPCSTR)SQL_Str);

CString temp;

CString FindResult;

FindResult = "Уважаемый работодатель,";

// перебор найденных вакансий

if (!recSet.IsEOF())

{

// вакансии найдены

FindResult += " для Вас найдены следующие специалисты:\r\n";

int v;

int num=1;

while(!recSet.IsEOF())

{

FindResult += "\r\n--------------------------------------------------------------------------------------\r\n";

COleVariant vt;

vt.vt = VT_BSTR;

FindResult += " Специальность: " + CString((LPSTR)vt.bstrVal) + "\r\n";

recSet.GetFieldValue("AbiAddenium",vt);

recSet.GetFieldValue("FIO",vt);

FindResult += " Ф.И.О.: " + CString((LPSTR)vt.bstrVal) + "\r\n";

recSet.GetFieldValue("AdressData",vt);

FindResult += " Адрес: " + CString((LPSTR)vt.bstrVal) + "\r\n";

recSet.GetFieldValue("PhoneData",vt);

FindResult += " Phone: " + CString((LPSTR)vt.bstrVal) + "\r\n";

recSet.GetFieldValue("OtherInfo",vt);

FindResult += " Доп.информация: " + CString((LPSTR)vt.bstrVal) + "\r\n";

recSet.GetFieldValue("Description",vt);

FindResult += " Опыт работы: " + CString((LPSTR)vt.bstrVal) + "\r\n";

COleVariant vt1;

recSet.GetFieldValue("Abilities.Experience",vt1);

temp.Format("%d",vt1.iVal);

FindResult += " Стаж работы: " + temp + "\r\n";

recSet.MoveNext();

}

FindResult += "\r\n--------------------------------------------------------------------------------------";

}

else

{

// вакансии не найдены

FindResult += " к сожалению, специалисты не найдены";

}

recSet.Close();

m_Result.SetWindowText(FindResult);

}