Автоматизація реєстрації користувачів

Процес реєстрації користувачів в базі даних Active Directory. Розробка програми, що буде створювати облікові записи користувачів та наділяти їх відповідними правами. Засіб програмування Microsoft Visual Studio 2010. Випробування програмного продукту.

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

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

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

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

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

Оглавление

1. Загальні положення

1.1 Опис предметного середовища

1.1.1 Опис процесу діяльності

1.1.2 Опис функціональної моделі

1.2 Огляд наявних аналогів

1.3 Постановка задачі

1.3.1 Призначення розробки

1.3.2 Цілі створення

2. Постановка задачі

2.1 Організаційно-інформаційна сутність задачі

3. Програмне та технічне забезпечення

3.1 Засоби розробки

3.2 Загальні вимоги до технічного забезпечення

Висновки до розділу

4. Технологічний розділ

4.1 Керівництво користувача

4.2 Керівництво системного програміста

4.3 Керівництво програміста

4.4 Випробування програмного продукту

Висновки

Перелік посилань

1. Загальні положення

1.1 Опис предметного середовища

Active Directory - LDAP-сумісна реалізація інтелектуальної служби каталогів корпорації Microsoft для операційних систем родини Windows NT. Active Directory дозволяє адміністраторам використовувати групові політики (GPO) для забезпечення подібного налаштування користувацького робочого середовища, розгортати ПЗ на великій кількості комп'ютерів (через групові політики або за допомогою Microsoft Systems Management Server 2003 (або System Center Configuration Manager)), встановлювати оновлення ОС, прикладного та серверного ПЗ на всіх комп'ютерах в мережі (із використанням Windows Server Update Services (WSUS) ; Software Update Services (SUS) раніше). Active Directory зберігає дані і налаштування середовища в централізованій базі данних. Мережі Active Directory можуть бути різного розміру: від кількох сотень до кількох мільйонів об'єктів.

Microsoft Windows Server 2008, іноді скорочено «Win2k8» або «W2K8» (кодове ім'я «Longhorn Server») - версія серверної операційної системи від Microsoft. Запущений у виробництво 4 лютого 2008 року і офіційно випущений 27 лютого 2008, він є наступником Windows Server 2003, випущений майже п'ять років тому. Другий реліз, названий Windows Server 2008 R2, був запущений у виробництво на 22 липня 2009 року. Як Windows Vista і Windows 7, Windows Server 2008 заснований на Windows NT 6. x. Ця версія замінює Windows Server 2003 як представник операційних систем покоління Vista (NT 6. x).

1.1.1 Опис процесу діяльності

Система призначена для полегшення процесу реєстрації користувачів в базі даних Active Directory. Система працює з урахування специфіки та політики безпеки Windows Server 2008R2 і Windows Active Directory.

1.1.2 Опис функціональної моделі

Для автоматизації та оптимізації роботи системних адміністраторів кафедри АСОІУ система підтримує реалізацію таких функцій, що допомагають полегшити процес реєстрації користувачів в базі даних Active Directory:

створення облікового запису в базі даних Active Directory;

заповнення анкети персональних даних користувача;

розповсюдження на обліковий запис, певних групових політик (GPO) ;

відправка на електронну пошту користувача листа з «Правилами поведінки в аудиторіях кафедри» та «Правилами користування обладнанням кафедри».

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

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

1.2 Огляд наявних аналогів

На момент розробки даної системи не було знайдено подібних систем.

1.3 Постановка задачі

1.3.1 Призначення розробки

Система «Автоматизація реєстрації користувачів» розробляється для полегшення процесу створення облікових записів користувачів в базі даних Active Directory.

1.3.2 Цілі створення

Цілями створення даної системи є:

оптимізація роботи системних адміністраторів;

автоматизація створення облікових записів користувачів.

Для реалізації поставлених цілей система повинна рішити наступні задачі:

створення зручного, легкого та зрозумілого у користуванні зовнішнього інтерфейсу;

розробка програми, що буде створювати облікові записи користувачів та наділяти їх відповідними правами.

У даному розділі були розглянуті проаналізовані та поставлені основні цілі для створення системи. Проведена постановка задачі для системи. Проведений опис діяльності та описані функціональні можливості системи для автоматизації користувачів Active Directory.

При аналізі існуючих рішень було виявлено та проаналізовано декілька розробок. Жодна з них повністю не задовольнили вимоги до системи, що і спонукало до створення даної розробки.

2. Постановка задачі

2.1 Організаційно-інформаційна сутність задачі

Спочатку кожного навчального року, першокурсники повинні пройти процес реєстрації особистих облікових записів в базі даних Active Directory, які в подальшому їхньому навчанні будуть використовуватись для роботи в комп'ютерних аудиторія кафедри. Дана програма створена для того, щоб знизити затрати часу на цей процес та підвищити ефективність роботи системних адміністраторів.

Об'єкти представляють собою окремі сутності (користувача, комп'ютер, принтер, програму або спільну мережеву папку) і їх атрибути. Об'єкти також можуть бути контейнерами для інших об'єктів. Об'єкт унікально ідентифікується своїм ім'ям і має набір атрибутів:

характеристик;

даних, які об'єкт може містити.

3. Програмне та технічне забезпечення

3.1 Засоби розробки

При створенні даного програмного продукту були використані такі засоби програмування як Microsoft Visual Studio 2010 (ASP. NET) та ScriptEditor.

Для створення програми, що працює даними Active Directory використовувалась мова програмування C#. Головною перевагою C# в створенні даної системи - її пристосованість до роботи з Microsoft AD, а саме легке управління об'єктами бази даних AD.

Для створення графічної оболонки (веб-сторінки) використовувалась мова розмітки HTML/CSS та JavaScript - для динамічної зміні змісту сторінки.

3.2 Загальні вимоги до технічного забезпечення

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

Для правильної роботи програми до складу технічних засобів повинні входити:

a) ПК під управлінням однієї з перелічених операційних систем: Windows XP/Vista/7/8, Linux, Mac OS;

b) Технічні параметри ПК повинні задовольняти перелічені нижче:

Процесор з тактовою частотою не нижче 1. 6 ГГц;

Достатній об'єм оперативної пам'яті (не менше 512 МБ) ;

Широкий канал підключення до мережі Інтернет;

Браузер (Google Chrome, Opera, Mozilla Firefox) ;

c) Технічні параметри сервера:

Процесор з тактовою частотою не нижче 1. 6 ГГц;

Достатній об'єм оперативної пам'яті (не менше 512 МБ) ;

Широкий канал підключення до мережі Інтернет;

Встановлений IIS Web;

Висновки до розділу

Розглянуто основні особливості розробки програм для роботи з AD за допомогою мови програмування C#.

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

4. Технологічний розділ

4.1 Керівництво користувача

Для запуску даної системи потрібно відкрити браузер та перейти за вказаним інтернет адресом. При відкриті веб-сторінки, користувачу буде відображено форму з «Правилами кафедри АСОЇУ». Вигляд даної форми наведено на рисунку 5. 1.

Рисунок 5. 1 - Блок ознайомлення з «Правилами кафедри»

Перехід до блоку заповнення персональної інформації користувача здійснюється після натиснення кнопки «Далі», що знаходиться на правій стороні форми. Після натиснення перед вами з'явиться анкета зображена на рисунку 5. 2.

Правила вводу персональних даних:

Ім'я та Прізвище повинні бути введені латиницею, перші букви мають бути великими;

Номер залікової книжки повинен бути введений в такому форматі: isXXXX/ipXXXX, де is/ip - напрямок навчання, XXXX - номер заліковки;

Пароль повинен містити мінімум 8 символів, серед яких мають бути великі та маленькі літери та цифри;

Рисунок 5. 2 - Блок заповнення персональних даних

При наступному натисненні кнопки «Далі» користувач перейде до блоку, де він має засвідчитись, що всі введені ним дані є коректними. Приклад показаний на рисунку 5. 3.

Також користувач має право проходити процедуру реєстрації на англійській мові.

Рисунок 5. 3 - Блок перевірки даних

Наступне натискання кнопки «Далі» відправить запит на сервер і якщо дані є вірними створить користувача. Також на електронну адресу користувача буде надіслано повідомлення з його персональними даними та «Правилами кафедри АСОІУ».

4.2 Керівництво системного програміста

Для коректної роботи системи потрібно:

Технічні параметри сервера:

Процесор з тактовою частотою не нижче 1. 6 ГГц;

Достатній об'єм оперативної пам'яті (не менше 512 МБ) ;

Широкий канал підключення до мережі Інтернет;

На сервері повинна бути встановлена операційна система Windows Server 2008R2 і піднятий сервіс IIS Web.

IIS (Internet Information Services, до версії 5. 1 - Internet Information Server) - це набір серверів для декількох служб Інтернету від компанії Майкрософт. IIS поширюється з операційними системами родини Windows NT.

Основний компонент IIS - веб-сервер, який дозволяє розміщувати в Інтернет сайти. IIS підтримує протоколи HTTP, HTTPS, FTP, POP3, SMTP, NNTP. IIS другий за популярністю веб-сервер за кількістю сайтів, після Apache HTTP Server. За даними компанії Netcraft на11. 10. 2007, понад 37. 13% сайтів обслуговується веб-сервером IIS.

Даний сервіс встановлюється з офіційного сайту Microsoft: http: //www. microsoft. com/en-us/download/details. aspx? id=1038

Після оснащення сервера вказаним вище програмним забезпеченням на ньому можна розгортати дану систему згідно з інструкціями Windows.

4.3 Керівництво програміста

Для створення даної системи використовувались Microsoft Visual Studio 2010 Professional і Sublime 2.

Код мовою C#, що виконує реєстрацію користувачів на сервері:

//e-mail

//========================================

MailMessage mail = new MailMessage () ;

SmtpClient SmtpServer = new SmtpClient («smtp. gmail. com») ;

mail. From = new MailAddress («asoiu. kpi@gmail. com») ;

mail. To. Add (email. Text) ;

mail. Subject = «Test Mail»;

mail. Body = « Name: « + studname. Text + «\n Surname: « + studsurname. Text + «\n login: « + recordbook. Text

+ «\n Password: « + pass. Text;

SmtpServer. Port = 587;

SmtpServer. Credentials =

new System. Net. NetworkCredential («asoiu. kpi@gmail. com», «fiot_asoiu») ;

SmtpServer. EnableSsl = true;

SmtpServer. Send (mail) ;

//AD

//========================================

string connectionPrefix = «LDAP: //10. 18. 16. 13»;

DirectoryEntry dirEntry = new DirectoryEntry (connectionPrefix) ;

DirectoryEntry newUser = dirEntry. Children. Add («CN=« + studname. Text + « « + studsurname. Text, «user») ;

//=======

newUser. Properties[«samAccountName»]. Value = recordbook. Text;

newUser. Invoke («Put», new object[] { «Description», recordbook. Text }) ;

newUser. Properties[«displayName»]. Value = studname. Text + « « + studsurname. Text;

newUser. Properties[«givenName»]. Value = studname. Text;

newUser. Properties[«sn»]. Value = studsurname. Text;

newUser. Properties[«mail»]. Value = email. Text;

//=======

newUser. CommitChanges () ;

//=======

newUser. Invoke («SetPassword», new object[] { pass. Text }) ;

newUser. Invoke («Put», new object[] { «userPrincipalName», recordbook. Text + «@asoiu. ntu-kpi. kiev. ua» }) ;

//=======

newUser. CommitChanges () ;

//=======

PrincipalContext ctx = new PrincipalContext (ContextType. Domain, «10. 18. 16. 13») ;

UserPrincipal principal = UserPrincipal. FindByIdentity (ctx, recordbook. Text) ;

principal. UserCannotChangePassword = true;

principal. Save () ;

//=======

newUser. Properties[«userAccountControl»]. Value = 0x10002;

newUser. CommitChanges () ;

dirEntry. Close () ;

newUser. Close () ;

MessageBox. Show («Registration was complete») ;

Додаткові значення “userAccountControl”:

UF_TEMP_DUPLICATE_ACCOUNT = 0x0100,

UF_NORMAL_ACCOUNT = 0x0200,

UF_INTERDOMAIN_TRUST_ACCOUNT = 0x0800,

UF_WORKSTATION_TRUST_ACCOUNT = 0x1000,

UF_SERVER_TRUST_ACCOUNT = 0x2000,

UF_DONT_EXPIRE_PASSWD = 0x10000,

UF_SCRIPT = 0x0001,

UF_ACCOUNTDISABLE = 0x0002,

UF_HOMEDIR_REQUIRED = 0x0008,

UF_LOCKOUT = 0x0010,

UF_PASSWD_NOTREQD = 0x0020,

UF_PASSWD_CANT_CHANGE = 0x0040,

UF_ACCOUNT_LOCKOUT = 0X0010,

UF_ENCRYPTED_TEXT_PASSWORD_ALLOWED = 0X0080,

Код форми реєстрації:

function $ (str) { return document. querySelector (str) }

function hasClass (el, name) {

return new RegExp (' (\\s|^) '+name+' (\\s|$) '). test (el. className) ;

}

function addClass (el, name)

{

if (! hasClass (el, name)) { el. className += (el. className? ' ': '') +name; }

}

function removeClass (el, name)

{

if (hasClass (el, name)) {

el. className=el. className. replace (new RegExp (' (\\s|^) '+name+' (\\s|$) '), ' '). replace (/^\s+|\s+$/g, '') ;

}

}

function getXmlHttp () {

var xmlhttp;

try {

xmlhttp = new ActiveXObject («Msxml2. XMLHTTP») ;

} catch (e) {

try {

xmlhttp = new ActiveXObject («Microsoft. XMLHTTP») ;

} catch (E) {

xmlhttp = false;

}

}

if (! xmlhttp && typeof XMLHttpRequest! ='undefined') {

xmlhttp = new XMLHttpRequest () ;

}

return xmlhttp;

}

var Scroller = {

posX: 0,

posY: 0,

content: null,

sizeX: 0,

sizeY: 0,

w: 0,

h: 0,

updatePosition: function () {

with (this) {

content. style. left=-posX*w+'px';

content. style. top=-posY*h+'px';

}

},

left: function () {

with (this) {

posX -= 1;

posX = (posX<0)? 0: posX;

updatePosition ()

}

},

right: function () {

with (this) {

posX += 1;

posX = (posX>sizeX-1)? sizeX-1: posX;

updatePosition ()

}

},

up: function () {

with (this) {

posY -= 1;

posY = (posY<0)? 0: posY;

updatePosition ()

}

},

down: function () {

with (this) {

posY += 1;

posY = (posY>sizeY-1)? sizeY-1: posY;

updatePosition ()

}

},

moveto: function (x, y) {

with (this) {

posY = y

posY = (posY<0)? 0: posY

posY = (posY>sizeY-1)? sizeY-1: posY

posX = x

posX = (posX<0)? 0: posX

posX = (posX>sizeX-1)? sizeX-1: posX

updatePosition ()

}

},

init: function (x, y, sx, sy, width, height, contentSelector) {

with (this) {

posX = x;

posY = y;

sizeX = sx;

sizeY = sy;

content = document. querySelector (contentSelector) ;

content. style. position='relative'

w=width

h=height

}

return this;

}

}

var scroll = null;

function Registration () {

var scriptAddres = 'http: //localhost/index. php',

blocks = {},

selectors = {

'rules': '#rules',

'form': '#regBlock',

'formData': '#regFormData',

'langPanel': '#langPanel',

'confirm': '#confirm',

'nextBtn': '#nextBtn',

'canselBtn': '#CancelBtn',

'wait': '#wait',

'supportBtn': '#support',

'supportBlock': '#supportBlock',

'stepBar': '#stepBar',

'procWaiter': '#waiter',

'procError': '#error',

'procSuccess': '#success',

'support': '#supportBlock',

'backBtn': '#backBtn'

},

fieldSelectors = {

'name': '#Name',

'surname': '#SurName',

'group': '#Group',

'pass': '#Pass',

'pass2': '#CPass',

'mail': '#EMail'

},

fields = {},

warningCodes = {

'name': '',

'surname': '',

'group': '',

'pass': '',

'mail': ''

},

languageData = {

'ua': {

'name': 'Ім\'я',

'surname': 'Прізвище',

'group': 'Номер залікової книжки',

'pass': 'Пароль',

'pass2': 'Підтвердження паролю',

'mail': 'Електронна пошта',

'emptyName': 'Пусте поле ім\'я',

'emptySurName': 'Пусте поле прізвища',

'emptyGroup': 'Пусте поле номера залікової книжки',

'badGroup': 'Некоректний номер залікової книжки',

'emptyPass': 'Пусте поле паролю',

'badPass': 'Некоректний пароль',

'difPass': 'Паролі не збігаються',

'emptyMail': 'Пусте поле електронної пошти',

'badMail': 'Некоректна електронна пошта',

'wait': 'Будь ласка зачекайте',

'step1': 'Правила',

'step2': 'Заповнення даних',

'step3': 'Перевірка даних',

'step4': 'Обробка',

'rules': 'ua rules',

'support': 'ua support'

},

'eng': {

'name': 'Name',

'surname': 'Last name',

'group': 'Number of academic records',

'pass': 'Pass',

'pass2': 'Confirm Password',

'mail': 'Email Address',

'emptyName': 'Empty name',

'emptySurName': 'Empty last name',

'emptyGroup': 'Empty number of academic records',

'badGroup': 'Invalid academic record',

'emptyPass': 'Empty pass',

'badPass': 'bad pass',

'difPass': 'Different pass',

'emptyMail': 'Empty email',

'badMail': 'bad mail',

'wait': 'Please wait',

'step1': 'Rules',

'step2': 'Fill data',

'step3': 'Check data',

'step4': 'Processing',

'rules': 'eng rules',

'support': 'eng support'

}

},

language = 'ua',

mode = 'rules',

timerId = 0,

time = 0;

function hide (el) {

el. style. display=«none»;

}

function show (el) {

el. style. display=«block»;

}

function isBadStr () {

for (var key in arguments)

if (arguments[key]) return false

return true;

}

function warningCodeGet (value, flagVal, flag) {

if (flag === undefined)

return (value)? '': flagVal

else {

if (value)

return (flag)? '': flagVal[0]

else return flagVal[1]

}

}

function checkEmail () {

var mail = fields. mail. value

var reg = /^ ([A-Za-z0-9_\-\. ]) +\@ ([A-Za-z0-9_\-\. ]) +\. ([A-Za-z]{2, 4}) $/;

warningCodes. mail = warningCodeGet (mail, [languageData[language]['badMail'],

languageData[language]['emptyMail']], reg. test (mail))

return isBadStr (warningCodes. mail)

}

function checkNames () {

warningCodes. name = warningCodeGet (fields. name. value, languageData[language]['emptyName'])

warningCodes. surname = warningCodeGet (fields. surname. value, languageData[language]['emptySurName'])

return isBadStr (warningCodes. name, warningCodes. surname)

}

function checkPass () {

if (fields. pass. value==fields. pass2. value) {

var reg = /[^A-Za-z0-9! @#\$% \^&\* () _\+-=]/

var flag =! reg. test () && (fields. pass. value. length >= 8)

warningCodes. pass = warningCodeGet (fields. pass. value, [languageData[language]['badPass'], languageData[language]['emptyPass']], flag)

}

else warningCodes. pass = languageData[language]['difPass']

return isBadStr (warningCodes. pass)

}

function checkGroup () {

var group = $ (fieldSelectors. group). value. toLowerCase ()

group = group. replace ('с', 's')

group = group. replace ('п', 'p')

group = group. replace ('і', 'i')

if (group! =fields. group. value)

fields. group. value=group

warningCodes. group = warningCodeGet (group, [languageData[language]['badGroup'],

languageData[language]['emptyGroup']],

(group[0]=='i' && (group[1]=='p' || group[1]=='s') && group. length==6))

return isBadStr (warningCodes. group)

}

function check () {

var r = checkNames () + checkGroup () + checkPass () + checkEmail ()

return (r<4)? false: true

}

function removeToolTip (el) {

removeClass (el. parentNode. parentNode. querySelector ('. tool-tip'), 'tool-tip-show')

addClass (el. parentNode, 'input-correct')

}

function addToolTip (el, str) {

removeClass (el. parentNode, 'input-correct')

addClass (el. parentNode. parentNode. querySelector ('. tool-tip'), 'tool-tip-show')

el. parentNode. parentNode. querySelector ('. tool-tip'). innerHTML = str;

}

function applyLanguage (e) {

if (typeof e! = «string») {

language1 = e. target. getAttribute ('data-lang')

}

else language1 = e

language = language1

if (! language) return;

for (var key in fields)

fields[key]. parentNode. parentNode. querySelector ('span'). innerHTML = languageData[language][key]

check ()

blocks. rules. innerHTML = languageData[language]['rules']

blocks. support. innerHTML = languageData[language]['support']

for (var key in warningCodes)

fields[key]. parentNode. parentNode. querySelector ('. tool-tip'). innerHTML = warningCodes[key]

blocks. stepBar. innerHTML = languageData[language]['step'+ (scroll. posX+1) ]

blocks. wait. innerHTML = languageData[language]['wait']+' '+time

if (mode=='confirm')

{

blocks. confirm. innerHTML = languageData[language]['name'] + ': ' + fields. name. value + '<br>' +

languageData[language]['surname'] + ': ' + fields. surname. value + '<br>' +

languageData[language]['group'] + ': ' + fields. group. value + '<br>' +

languageData[language]['mail'] + ': ' + fields. mail. value + '<br>'

}

}

function fieldChecker (e) {

check ()

for (var key in warningCodes) {

if (e. target == fields[key] || (key=='pass' && e. target == fields['pass2']))

if (warningCodes[key]) {

addToolTip (fields[key], warningCodes[key])

if (key=='pass') removeClass (fields['pass2']. parentNode, 'input-correct')

} else {

removeToolTip (fields[key]) ;

if (key=='pass') removeToolTip (fields['pass2']) ;

}

}

}

function waiterLoop () {

if (time == 0) {

blocks. wait. style. display='none'

blocks. nextBtn. disabled = false

clearInterval (timerId)

} else {

blocks. wait. innerHTML = languageData[language]['wait'] + ' ' + time;

time--;

}

}

function init () {

mode = 'rules'

for (var key in selectors)

blocks[key] = $ (selectors[key])

for (var key in fieldSelectors)

fields[key] = $ (fieldSelectors[key])

blocks. nextBtn. addEventListener ('click', nextBtnClick)

blocks. supportBtn. addEventListener ('click', supportBtnClick)

blocks. formData. addEventListener ('keyup', fieldChecker)

blocks. backBtn. addEventListener ('click', backBtnClick)

applyLanguage (language)

waiterLoop ()

blocks. langPanel. addEventListener ('click', applyLanguage)

timerId = setInterval (waiterLoop, 1000) ;

}

function supportBtnClick () {

if (scroll. posY==1) scroll. moveto (scroll. posX, 0)

else {

blocks. supportBlock. style. left = (scroll. posX*blocks. supportBlock. offsetWidth) +'px';

scroll. moveto (scroll. posX, 1) ;

}

}

function send () {

try {

mode=«proc»

blocks. nextBtn. disabled = true

blocks. backBtn. disabled = true

var xmlhttp = getXmlHttp () // Создаём объект XMLHTTP

xmlhttp. open ('POST', scriptAddres, true) // Открываем асинхронное соединение

xmlhttp. setRequestHeader ('Content-Type', 'application/x-www-form-urlencoded') // Отправляем кодировку

//encodeURIComponent

var data = ''

function dataAdd (key, val) {

if (data) data += '&'

data += encodeURIComponent (key) + '=' + encodeURIComponent (val)

}

for (key in fields) {

if (key! ='pass2')

dataAdd (key, fields[key]. value)

}

hide (blocks. procError)

blocks. procError. style. opacity = 0

hide (blocks. procSuccess)

blocks. procSuccess. style. opacity = 0

//xmlhttp. onreadystatechange

xmlhttp. onreadystatechange = function () { // Ждём ответа от сервера

if (xmlhttp. readyState == 4) { // Ответ пришёл

if (xmlhttp. status == 200) { // Сервер вернул код 200 (что хорошо)

hide (blocks. procWaiter)

///////////////////////////////////////////////////////////

//check correct answer

///////////////////////////////////////////////////////////

//xmlhttp. responseText - то что вернул сервер

//к примеру если нам пришло число 30, то считаем что ответ некоректный

if (xmlhttp. responseText! =30)

{

blocks. procSuccess. innerHTML = xmlhttp. responseText

show (blocks. procSuccess)

blocks. procSuccess. style. opacity = 1

} else {

blocks. procError. innerHTML = «Incorrect answer»

show (blocks. procError)

blocks. procError. style. opacity = 1

blocks. backBtn. disabled = false;

}

}

}

if (xmlhttp. status == 0) {

hide (blocks. procWaiter)

blocks. procError. innerHTML = «Server don't response»

show (blocks. procError)

blocks. procError. style. opacity = 1

blocks. backBtn. disabled = false;

}

}

xmlhttp. send (data) // Отправляем POST-запрос

}

catch (e) {

hide (blocks. procWaiter)

blocks. procError. style. opacity = 0

blocks. procSuccess. style. opacity = 0

hide (blocks. procSuccess)

blocks. procError. innerHTML = «Error: « + e. message

show (blocks. procError)

blocks. procError. style. opacity = 1

blocks. backBtn. disabled = false;

}

}

function nextBtnClick () {

if (scroll. posY==1) scroll. moveto (scroll. posX, 0)

else

if (mode=='rules') {

//check time

mode='fillData'

scroll. moveto (1, 0)

} else if (mode=='fillData') {

if (check ())

{

for (var key in warningCodes)

removeToolTip (fields[key])

mode='confirm'

blocks. confirm. innerHTML = languageData[language]['name'] + ': ' + fields. name. value + '<br>' +

languageData[language]['surname'] + ': ' + fields. surname. value + '<br>' +

languageData[language]['group'] + ': ' + fields. group. value + '<br>' +

languageData[language]['mail'] + ': ' + fields. mail. value + '<br>'

scroll. moveto (2, 0)

} else {

for (var key in warningCodes)

if (warningCodes[key]) addToolTip (fields[key], warningCodes[key])

else removeToolTip (fields[key])

}

} else if (mode=='confirm') {

hide (blocks. procError)

hide (blocks. procSuccess)

show (blocks. procWaiter)

scroll. moveto (3, 0) ;

send ()

}

blocks. stepBar. innerHTML = languageData[language]['step'+ (scroll. posX+1) ]

}

function backBtnClick () {

if (scroll. posY==1) scroll. moveto (scroll. posX, 0)

else

switch (mode) {

case 'rules':

break

case 'fillData':

mode='rules'

scroll. moveto (0, 0)

break

case 'confirm':

mode='fillData'

scroll. moveto (1, 0)

break

case 'proc':

mode='confirm'

scroll. moveto (2, 0)

blocks. nextBtn. disabled = false;

break;

}

blocks. stepBar. innerHTML = languageData[language]['step'+ (scroll. posX+1) ];

}

init () ;

}

window. onload = function () {

scroll = Scroller. init (0, 0, 4, 2, 410, 416, «#scrollerContent»)

//document. querySelector ('#leftBtn'). addEventListener ('click', function () { scroll. left () })

Registration () ;

//document. querySelector ('#botBtn'). addEventListener ('click', function () { scroll. down () })

//document. querySelector ('#topBtn'). addEventListener ('click', function () { scroll. up () })

}

4.4 Випробування програмного продукту

реєстрація користувач active directory

У ході розробки програмного застосування було проведено ряд тестів на віртуальному сервері на якому було встановлене необхідне програмне забезпечення. Після набуття стабільності систему було перенесено на реальних сервер.

Висновки

Даний проект присвячений опису етапів створення системи «Автоматизація реєстрації користувачів». Були розглянуті структурний опис первісних даних системи, запропоновані вигляди веб-сторінки в якості вихідних даних.

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

Перелік посилань

ASP. NET MVC Framework с примерами на C# Стивен Сандерсон.

Pro ASP. NET 3. 5 in C# 2008 Matthew MacDonald and Mario Szpuszta

Learning JavaScript Shelley Powers 2010

Pro JavaScript Techniques John Resig 2009

Пости / ASP. NET / Хабрахабр [Електронний ресурс] / Режим доступу: http://habrahabr.ru/hub/aspnet/posts/

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

...

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

  • Розробка системи, призначеної для автоматизації процесу реєстрації користувачів (студентів-першокурсників) в базі даних Active Directory. Інформаційне, програмне та технічне забезпечення проекту. Керівництво користувача та системного програміста.

    курсовая работа [603,6 K], добавлен 19.11.2013

  • Підхід до побудови користувацького інтерфейсу об’єкту проектування. Інтернет-проекти на основі AJAX технології. Побудова діаграми сценаріїв користування. Оцінка програмного забезпечення веб-сервера. Програмування авторизації та реєстрації користувачів.

    дипломная работа [290,1 K], добавлен 15.12.2013

  • Інформаційне забезпечення, вхідні та вихідні дані. Організаційно-інформаційна сутність задачі, програмне та технічне забезпечення. Керівництво користувача, системного програміста. Додаткові значення "userAccountControl". Загальний вид коду реєстрації.

    курсовая работа [800,1 K], добавлен 03.01.2014

  • Соціальні медіа, їх функціональні особливості та напрямки вивчення. Вибір мови програмування та загальна структура програми, вимоги до неї, аналіз і зберігання отриманих даних. Розробка моделі поведінки у соціальних медіа, оцінка кількості користувачів.

    дипломная работа [2,0 M], добавлен 18.04.2015

  • Проектування бази даних та інтерфейсу програми. Розробка бази даних за допомогою Firebird 2.5. Контроль коректності вхідних та вихідних даних. Додавання та редагування інформації. Вплив електронно-обчислювальних машин на стан здоров'я користувачів.

    дипломная работа [4,7 M], добавлен 12.10.2015

  • Характеристика об’єкта автоматизації, вимоги до системи, склад та зміст системи. Розробка функціональної схеми програмного продукту. Тестування підпрограми програмного продукту. Розробка бази даних та налаштування ECO компонент в Borland Developer Studio.

    практическая работа [1,8 M], добавлен 05.06.2014

  • Розробка таблиці для збереження даних у текстовому файлі про фільми в середовищі програмування Visual Studio C++ та їх сортування за країною виробництва. Реалізація таблиці за допомогою компонента dataGridView. Опис і контрольний приклад роботи програми.

    курсовая работа [1,4 M], добавлен 02.11.2016

  • Обліковий запис root. Настройка атрибутів користувацького облікового запису. Програми для створення облікових записів користувачів. Створення програми-скрипта add_user для надання робочого інтерфейсу програмі useradd. Блок схема алгоритму програми.

    курсовая работа [35,9 K], добавлен 10.01.2013

  • Оптимізація перевезення продуктів із пунктів відправлення до пунктів споживання. Зниження транспортних витрат, розробка і використання оптимальних схем вантажних потоків. Архітектура програмного забезпечення в середовищі Microsoft Visual Studio 2010.

    курсовая работа [675,3 K], добавлен 10.03.2013

  • Налаштування BIOS, підготовка операційної системи Windows 7 та її встановлення. Основні параметри та драйвери системи, облікові записи користувачів. Можливості програми заморожування Deep Freeze. Розрахунок витрат на встановлення програмного забезпечення.

    дипломная работа [4,8 M], добавлен 19.07.2013

  • Теоретичні основи мови програмування C++ та середовища розробки Microsoft Visual C++, яка дозволяє створювати як маленькі программи і утиліти для персонального використання, так і корпоративні системи, що працюють з базами даних на різних плтаформах.

    реферат [26,5 K], добавлен 01.04.2010

  • Відомості про мови програмування та методи програмування. Системні вимоги програми. Керівництво програміста та керівництво користувача. Використання консольного додатку візуального середовища Visual Studio 2010. Запуск програми "Толковый словарь".

    курсовая работа [791,1 K], добавлен 18.01.2015

  • Реалізація, за допомогою технології Windows Forms, програми обліку даних про волонтерів та подій, на які вони зареєстровані. можливості об'єктно-орієнтованого програмування. Створення класів. Методи, властивості. Використання Multiple Document Interface.

    курсовая работа [1,5 M], добавлен 02.12.2015

  • Help Desk - технічна підтримка користувачів: причини виникнення в Росії. Система управління взаємодією з клієнтами. Робота Help Desk на прикладі використання продукту IntraService, підвищення конкурентоспроможності компанії як результат застосування.

    реферат [3,9 M], добавлен 11.06.2011

  • Схема взаємодії учасників платіжної системи з використанням пластикових карток. Вхідні та вихідні повідомлення для проектування бази даних для автоматизації аналізу користувачів пластикових карток. Проектування та реалізація бази даних у MS Access.

    курсовая работа [3,0 M], добавлен 27.12.2013

  • Архітектура програмного забезпечення. Інтернет-журнал подій, інтернет-щоденник, онлайн-щоденник. Відмінності блогу від традиційного щоденника. Процес ідентифікації користувача. Логічне представлення даних. Керівництво, призначене для користувачів сайту.

    курсовая работа [2,8 M], добавлен 26.06.2012

  • Специфікація вимог для кожного з двох користувачів. Концептуальне та логічне проектування баз даних. Історія досліджень баз даних (програмного забезпечення). Система упрваління базами даних. Фази проектування баз даних: концептуальна, логічна, фізична.

    дипломная работа [105,8 K], добавлен 20.02.2010

  • Базові конструкції мови програмування С++ з позиції об’єктного програмування. Розробка програми для автоматизації обліку товарів на складі магазину парфумів. Реалізація програми в середовищі Visual Studio C++. Розробка інтерфейсу і тестування програми.

    дипломная работа [907,9 K], добавлен 01.04.2016

  • Автоматизація робочого місця секретарів приймальної комісії шляхом надання в їх розпорядження зручних та ефективних механізмів для обробки та представлення інформації. Опис функцій й взаємодії користувачів із системою. Фізична й логічна моделі бази даних.

    курсовая работа [726,2 K], добавлен 18.05.2015

  • Розробка та схема алгоритму проектованої гри. Особливості мови програмування та середовища "Microsoft Visual Studio C++ 2008 Express Edition". Лістинг програми та загальний опис її роботи, аналіз отриманих результатів та оцінка практичної ефективності.

    курсовая работа [762,8 K], добавлен 03.05.2015

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