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

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Украинский
    ,
    Формат файла:
    MS Word
    328,6 Кб
  • Опубликовано:
    2013-11-19
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ

НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ УКРАЇНИ «КПІ»

Кафедра автоматизованих систем обробки інформації та управління









Пояснювальна записка до курсової роботи

з дисципліни "Об'єктно-орієнтоване програмування"

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



Керівник : доц. Ковалюк Т. В.

Виконав: Саган Б. Г.

студент гр. ІС-11, ФІОТ, 2 курс

№IC-1122



Київ 2013

Зміст

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

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

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

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

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

. Інформаційне забезпечення

.1 Вхідні дані

.2 Вихідні дані

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

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

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

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

.1 Засоби розробки

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

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

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

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

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

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

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

Загальні висновки

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

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

 

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

Active Directory - LDAP <#"650591.files/image001.gif">

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

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

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

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

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

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

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

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

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

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

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

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


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

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

·        Процесор з тактовою частотою не нижче 1.6 ГГц;

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

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

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

IIS (Internet Information Services, до версії 5.1 - Internet Information Server) - це набір серверів <http://uk.wikipedia.org/wiki/%D0%A1%D0%B5%D1%80%D0%B2%D0%B5%D1%80> для декількох служб Інтернету <http://uk.wikipedia.org/wiki/%D0%86%D0%BD%D1%82%D0%B5%D1%80%D0%BD%D0%B5%D1%82> від компанії Майкрософт <http://uk.wikipedia.org/wiki/%D0%9C%D0%B0%D0%B9%D0%BA%D1%80%D0%BE%D1%81%D0%BE%D1%84%D1%82>. IIS поширюється з операційними системами <http://uk.wikipedia.org/wiki/%D0%9E%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D1%96%D0%B9%D0%BD%D0%B0_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0> родини Windows NT <http://uk.wikipedia.org/wiki/Windows_NT>.

Основний компонент IIS - веб-сервер <http://uk.wikipedia.org/wiki/%D0%92%D0%B5%D0%B1-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80>, який дозволяє розміщувати в Інтернет сайт <http://uk.wikipedia.org/wiki/%D0%92%D0%B5%D0%B1-%D1%81%D0%B0%D0%B9%D1%82>и. IIS підтримує протоколи <http://uk.wikipedia.org/wiki/%D0%9C%D0%B5%D1%80%D0%B5%D0%B6%D0%B5%D0%B2%D0%B8%D0%B9_%D0%BF%D1%80%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0%BB> HTTP <http://uk.wikipedia.org/wiki/HTTP>, HTTPS <http://uk.wikipedia.org/wiki/HTTPS>, FTP <http://uk.wikipedia.org/wiki/FTP>, POP3 <http://uk.wikipedia.org/wiki/POP3>,SMTP <http://uk.wikipedia.org/wiki/SMTP>, NNTP <http://uk.wikipedia.org/wiki/NNTP>. IIS другий за популярністю веб-сервер <http://uk.wikipedia.org/wiki/%D0%92%D0%B5%D0%B1-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80> за кількістю сайтів <http://uk.wikipedia.org/wiki/%D0%92%D0%B5%D0%B1-%D1%81%D0%B0%D0%B9%D1%82>, після Apache HTTP Server <http://uk.wikipedia.org/wiki/Apache_HTTP_Server>. За даними компанії Netcraft <http://uk.wikipedia.org/w/index.php?title=Netcraft&action=edit&redlink=1> на11.10.2007 <http://uk.wikipedia.org/w/index.php?title=11.10.2007&action=edit&redlink=1>, понад 37.13% сайтів обслуговується веб-сервером IIS.

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

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

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

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

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

//e-mail

//========================================mail = newMailMessage();SmtpServer = newSmtpClient("smtp.gmail.com");.From = newMailAddress("asoiu.kpi@gmail.com");.To.Add(email.Text);.Subject = "Test Mail";.Body = " Name: " + studname.Text + "\n Surname: " + studsurname.Text + "\n login: " + recordbook.Text

+ "\n Password: " + pass.Text;.Port = 587;.Credentials =System.Net.NetworkCredential("asoiu.kpi@gmail.com", "fiot_asoiu");.EnableSsl = true;.Send(mail);

//AD

//========================================connectionPrefix = "LDAP://10.18.16.13";dirEntry = newDirectoryEntry(connectionPrefix);newUser = dirEntry.Children.Add("CN=" + studname.Text + " " + studsurname.Text, "user");

//=======.Properties["samAccountName"].Value = recordbook.Text;.Invoke("Put", newobject[] { "Description", recordbook.Text });.Properties["displayName"].Value = studname.Text + " " + studsurname.Text;.Properties["givenName"].Value = studname.Text;.Properties["sn"].Value = studsurname.Text;.Properties["mail"].Value = email.Text;

//=======.CommitChanges();

//=======.Invoke("SetPassword", newobject[] { pass.Text });.Invoke("Put", newobject[] { "userPrincipalName", recordbook.Text + "@asoiu.ntu-kpi.kiev.ua" });

//=======.CommitChanges();

//=======.Properties["userAccountControl"].Value = 0x10002;.CommitChanges();.Close();.Close();.Show("Registration was complete");

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

_TEMP_DUPLICATE_ACCOUNT = 0x0100,_NORMAL_ACCOUNT = 0x0200,_INTERDOMAIN_TRUST_ACCOUNT = 0x0800,_WORKSTATION_TRUST_ACCOUNT = 0x1000,_SERVER_TRUST_ACCOUNT = 0x2000,_DONT_EXPIRE_PASSWD = 0x10000,_SCRIPT = 0x0001,_ACCOUNTDISABLE = 0x0002,_HOMEDIR_REQUIRED = 0x0008,_LOCKOUT = 0x0010,_PASSWD_NOTREQD = 0x0020,_PASSWD_CANT_CHANGE = 0x0040,_ACCOUNT_LOCKOUT = 0X0010,_ENCRYPTED_TEXT_PASSWORD_ALLOWED = 0X0080,

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

$(str) { return document.querySelector(str) }hasClass(el, name) {RegExp('(\\s|^)'+name+'(\\s|$)').test(el.className);

}addClass(el, name)

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

}removeClass(el, name)

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

}

}getXmlHttp() {xmlhttp;{= new ActiveXObject("Msxml2.XMLHTTP");

} catch (e) {{= new ActiveXObject("Microsoft.XMLHTTP");

} catch (E) {= false;

}

}(!xmlhttp &&typeof XMLHttpRequest!='undefined') {= new XMLHttpRequest();

}xmlhttp;

}Scroller = {: 0,: 0,: null,: 0,: 0,:0,:0,: function(){(this) {.style.left=-posX*w+'px';.style.top=-posY*h+'px';

}

},: function(){(this) {-= 1;= (posX<0) ? 0 : posX;()

}

},: function(){(this) {+= 1;= (posX>sizeX-1) ? sizeX-1 : posX;()

}

},: function(){(this) {-= 1;= (posY<0) ? 0 : posY;()

}

},: function(){(this) {+= 1;= (posY>sizeY-1) ? sizeY-1 : posY;()

}

},: function(x,y) {(this) {= y= (posY<0) ? 0 : posY= (posY>sizeY-1) ? sizeY-1 : posY= x= (posX<0) ? 0 : posX= (posX>sizeX-1) ? sizeX-1 : posX()

}

},: function(x,y,sx,sy,width,height,contentSelector){(this) {= x;= y;= sx;= sy;= document.querySelector(contentSelector);.style.position='relative'=width=height

};

}

}scroll = null;Registration() {scriptAddres = 'http://localhost/index.php',= {},= {

'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'

},= {

'name' : '#Name',

'surname' : '#SurName',

'group' : '#Group',

'pass' : '#Pass',

'pass2' : '#CPass',

'mail' : '#EMail'

},= {},= {

'name' : '',

'surname' : '',

'group' : '',

'pass' : '',

'mail' : ''

},= {

'ua' : {

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

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

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

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

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

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

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

'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'

}

},= 'ua',= 'rules',= 0,= 0;hide(el){.style.display="none";

}show(el){.style.display="block";

}isBadStr() {(var key in arguments)(arguments[key]) returnfalse;

}warningCodeGet(value,flagVal,flag){(flag === undefined)(value) ? '' : flagVal{(value)(flag) ? '' : flagVal[0]flagVal[1]

}

}checkEmail(){mail = fields.mail.valuereg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;.mail = warningCodeGet(mail,[languageData[language] ['badMail'],[language]['emptyMail']],reg.test(mail))isBadStr(warningCodes.mail)

}checkNames(){.name = warningCodeGet(fields.name.value,languageData [language]['emptyName']).surname = warningCodeGet(fields.surname.value,language Data[language]['emptySurName'])isBadStr(warningCodes.name,warningCodes.surname)

}checkPass() {(fields.pass.value==fields.pass2.value) {reg = /[^A-Za-z0-9!@#\$%\^&\*()_\+-=]/flag = !reg.test() && (fields.pass.value.length >= 8).pass = warningCodeGet(fields.pass.value,[languageData[language]['badPass'],languageData[language]['emptyPass']],flag)

}warningCodes.pass = languageData[language]['difPass']isBadStr(warningCodes.pass)

}checkGroup() {group = $(fieldSelectors.group).value.toLowerCase()= group.replace('с','s')= group.replace('п','p')= group.replace('і','i')(group!=fields.group.value).group.value=group.group = warningCodeGet(group,[languageData[language] ['badGroup'],[language]['emptyGroup']],

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

}check(){r = checkNames() + checkGroup() + checkPass() + checkEmail()(r<4) ? false : true

}removeToolTip(el){(el.parentNode.parentNode.querySelector('.tool-tip'),'tool-tip-show')(el.parentNode,'input-correct')

}addToolTip(el,str){(el.parentNode,'input-correct')(el.parentNode.parentNode.querySelector('.tool-tip'),'tool-tip-show').parentNode.parentNode.querySelector('.tool-tip').innerHTML = str;

}applyLanguage(e){(typeof e != "string") {= e.target.getAttribute('data-lang')

}language1 = e= language1(!language) return;(var key in fields)[key].parentNode.parentNode.querySelector('span').innerHTML = languageData[language][key]().rules.innerHTML = languageData[language]['rules'].support.innerHTML = languageData[language]['support'](var key in warningCodes)[key].parentNode.parentNode.querySelector('.tool-tip').innerHTML = warningCodes[key].stepBar.innerHTML = languageData[language]['step'+(scroll.posX+ 1)].wait.innerHTML = languageData[language]['wait']+' '+time(mode=='confirm')

{.confirm.innerHTML = languageData[language]['name'] + ' : ' + fields.name.value + '<br>' +[language]['surname'] + ' : ' + fields.surname.value + '<br>' +[language]['group'] + ' : ' + fields.group.value + '<br>' +[language]['mail'] + ' : ' + fields.mail.value + '<br>'

}

}fieldChecker(e){()(var key in warningCodes) {(e.target == fields[key] || (key=='pass'&& e.target == fields['pass2']))(warningCodes[key]) {(fields[key], warningCodes[key])(key=='pass') removeClass(fields['pass2'].parentNode,'input-correct')

} else {(fields[key]);(key=='pass') removeToolTip(fields['pass2']);

}

}

}waiterLoop(){(time == 0) {.wait.style.display='none'.nextBtn.disabled = false(timerId)

} else {.wait.innerHTML = languageData[language]['wait'] + ' ' + time;-;

}

}init() {= 'rules'(var key in selectors)[key] = $(selectors[key])(var key in fieldSelectors)[key] = $(fieldSelectors[key]).nextBtn.addEventListener('click',nextBtnClick).supportBtn.addEventListener('click',supportBtnClick).formData.addEventListener('keyup',fieldChecker).backBtn.addEventListener('click',backBtnClick)(language)().langPanel.addEventListener('click',applyLanguage)= setInterval(waiterLoop, 1000);

}supportBtnClick() {(scroll.posY==1) scroll.moveto(scroll.posX,0){.supportBlock.style.left = (scroll.posX*blocks.supportBlock. offsetWidth)+'px';.moveto(scroll.posX,1);

}

}send() {{="proc".nextBtn.disabled = true.backBtn.disabled = truexmlhttp = getXmlHttp() // Создаём объект XMLHTTP.open('POST', scriptAddres, true) // Открываем асинхронное соединение.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded') // Отправляем кодировку

//encodeURIComponentdata = ''dataAdd(key,val) {(data) data += '&'+= encodeURIComponent(key) + '=' + encodeURIComponent(val)

}(key in fields) {(key!='pass2')(key,fields[key].value)

//xmlhttp.onreadystatechange.onreadystatechange = function() { // Ждём ответа от сервера(xmlhttp.readyState == 4) { // Ответ пришёл(xmlhttp.status == 200) { // Сервер вернул код 200 (что хорошо)(blocks.procWaiter)

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

//check correct answer

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

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

//к примеру если нам пришло число 30, то считаем что ответ некоректный(xmlhttp.responseText!=30)

{.procSuccess.innerHTML = xmlhttp.responseText(blocks.procSuccess).procSuccess.style.opacity = 1

} else {.procError.innerHTML = "Incorrect answer"(blocks.procError).procError.style.opacity = 1.backBtn.disabled = false;

}

}

}(xmlhttp.status == 0) {(blocks.procWaiter).procError.innerHTML = "Server don`t response"(blocks.procError).procError.style.opacity = 1.backBtn.disabled = false;

}

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

}(e) {(blocks.procWaiter).procError.style.opacity = 0.procSuccess.style.opacity = 0(blocks.procSuccess).procError.innerHTML = "Error : " + e.message(blocks.procError).procError.style.opacity = 1.backBtn.disabled = false;

}

}nextBtnClick() {(scroll.posY==1) scroll.moveto(scroll.posX,0)(mode=='rules') {

//check time='fillData'.moveto(1,0)

} elseif (mode=='fillData') {(check())

{(var key in warningCodes)(fields[key])='confirm'.confirm.innerHTML = languageData[language]['name'] + ' : ' + fields.name.value + '<br>' +[language]['surname'] + ' : ' + fields.surname.value + '<br>' +[language]['group'] + ' : ' + fields.group.value + '<br>' +[language]['mail'] + ' : ' + fields.mail.value + '<br>'.moveto(2,0)

} else {(var key in warningCodes)(warningCodes[key]) addToolTip(fields[key], warningCodes[key])removeToolTip(fields[key])

}

} elseif (mode=='confirm') {(blocks.procError)(blocks.procSuccess)(blocks.procWaiter).moveto(3,0);()

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

}backBtnClick() {(scroll.posY==1) scroll.moveto(scroll.posX,0)(mode) {'rules' :'fillData' :='rules'.moveto(0,0)'confirm' :='fillData'.moveto(1,0)'proc' :='confirm'.moveto(2,0).nextBtn.disabled = false;;

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

}();

}.onload = function(){= Scroller.init(0,0,4,2,410,416,"#scrollerContent")

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

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

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

}

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


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

Загальні висновки


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

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

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


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

2.      Pro ASP.NET 3.5 in C# 2008 Matthew MacDonald and Mario Szpuszta

3.   Learning JavaScript Shelley Powers

4.      Pro JavaScript Techniques John Resig

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

Похожие работы на - Автоматизація реєстрації користувачів

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!