Файл: 1 зертханалы жмыс. Парольдік аутентификация негізінде пайдаланушыларды кілеттіктерін саралау бадарламасын зірлеу.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 06.11.2023

Просмотров: 18

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

1 зертханалық жұмыс. Парольдік аутентификация негізінде пайдаланушылардың өкілеттіктерін саралау бағдарламасын әзірлеу
Тапсырманың мазмұны

1. Бағдарлама екі режимде жұмыс істеуі керек: әкімші (admin тіркелген пайдаланушы) және қарапайым пайдаланушы.

2. Әкімші режимінде бағдарлама келесі функцияларды қолдауы керек (құпия сөзді дұрыс енгізген кезде):

* әкімші құпия сөзін өзгерту (ескі құпия сөзді дұрыс енгізген кезде);

* тіркелген пайдаланушы имен тізімін және олар үшін орнатылған параметрлерді қарау (есептік жазбаны бұғаттау, таңдалған парольдерге шектеулерді қосу) – бүкіл тізімді бір терезеде немесе тізімнің бір элементінде оның басына немесе соңына жылжыту мүмкіндігі бар;

* бос парольмен тізімге бірегей жаңа пайдаланушы атын қосу (нөлдік ұзындық жолы);

* пайдаланушының берілген атпен жұмыс істеу мүмкіндігін бұғаттау;

* пайдаланушы таңдаған құпия сөздерге шектеулерді қосу немесе өшіру (опция нөмірімен анықталған жеке тапсырмаға сәйкес);

* бағдарламамен жұмысты аяқтау.

3. Кәдімгі пайдаланушы режимінде бағдарлама тек пайдаланушының құпия сөзін өзгерту (ескі құпия сөзді дұрыс енгізген кезде) және өшіру функцияларын қолдауы керек, ал қалған барлық функциялар бұғатталуы керек.

4. Іске қосылғаннан кейін бағдарлама пайдаланушыдан арнайы кіру терезесінде оның аты мен паролін енгізуді сұрауы керек. Құпия сөзді енгізген кезде оның таңбалары әрқашан экранда ' * ' белгісімен ауыстырылуы керек.

5. Кіру терезесінде Әкімші тіркеген пайдаланушылар тізімінде пайдаланушы аты енгізілмеген жағдайда, бағдарлама тиісті хабарлама беріп, пайдаланушыға атауды қайта енгізу немесе бағдарламамен жұмысты аяқтау мүмкіндігін беруі тиіс.

6. Құпия сөз дұрыс енгізілмеген жағдайда, бағдарлама тиісті хабарлама беріп, пайдаланушыға қайта енгізу мүмкіндігін беруі керек. Қате құпия сөзді үш рет енгізген кезде бағдарламаның жұмысы аяқталуы керек.

7. Парольді бастапқы енгізген кезде (әкімші немесе пайдаланушы бірінші рет кірген кезде, бұрын әкімші тіркелген аты бар) және парольді одан әрі ауыстырған кезде бағдарлама пайдаланушыдан енгізілген парольді қайта енгізу арқылы растауын сұрауы керек.

8. Егер пайдаланушы таңдаған пароль қажетті шектеулерге сәйкес келмесе (пайдаланушы тіркелгісінің тиісті параметрін орнатқан кезде), онда бағдарлама тиісті хабарлама беріп, пайдаланушыға басқа парольді енгізуге, бағдарламамен жұмысты аяқтауға (осы пайдаланушы бірінші рет кірген кезде) немесе парольді өзгертуден бас тартуға мүмкіндік беруі керек.


9. Тіркелген пайдаланушылар, олардың парольдері, олардың бағдарламамен жұмыс істеуін бұғаттамау, сондай-ақ таңдалған парольдерге шектеулерді қосу немесе өшіру туралы ақпарат арнайы файлда сақталуы тиіс. Бағдарламаны бірінші рет іске қосқан кезде бұл файл автоматты түрде жасалуы керек және тек бос құпия сөзі бар әкімші туралы ақпаратты қамтуы керек.

10. Бағдарламамен Интерфейс мәзір негізінде ұйымдастырылуы керек, оның міндетті бөлігі "бағдарлама туралы" командасы бар "анықтама"ішкі мәзірі болуы керек. Бұл команданы таңдау кезінде бағдарламаның авторы және берілген жеке тапсырма туралы ақпарат берілуі керек. Бағдарламаның пайдаланушы интерфейсінде мәзір пәрмендерін қайталайтын графикалық түймелер мен күй жолағы бар Басқару тақтасы болуы мүмкін.

11. 2-3-тармақтарда көрсетілген функцияларды іске асыру үшін бағдарламада пайдаланушыға (әкімшіге) қажетті ақпаратты енгізуге мүмкіндік беретін арнайы диалогтық Нысандар пайдаланылуы тиіс.
Жеке жұмыс нұсқалары (таңдалған құпия сөздерге шектеулер)

1. Ұзындығы әкімші орнатқан және пайдаланушы тіркелгісінде сақталатын ең аз ұзындықтан кем емес.

2. Кіші және үлкен әріптердің болуы.

3. Әріптер мен сандардың болуы.

4. Әріптер мен тыныс белгілерінің болуы.

5. Сандар мен тыныс белгілерінің болуы.

6. Арифметикалық амалдардың әріптері мен белгілерінің болуы.

7. Арифметикалық амалдардың сандары мен белгілерінің болуы.

8. Латын әріптері мен кириллица белгілерінің болуы.

9. Әріптердің, сандардың және тыныс белгілерінің болуы.

10. Латын әріптерінің, кириллица таңбаларының және сандардың болуы.

11. Латын әріптерінің, кириллица белгілерінің және тыныс белгілерінің болуы.

12. Кіші және бас әріптердің, сондай-ақ сандардың болуы.

13. Кіші және бас әріптердің, сондай-ақ тыныс белгілерінің болуы.

14. Кіші және бас әріптердің, сондай-ақ арифметикалық амалдар белгілерінің болуы.

15. Латын әріптерінің, кириллица белгілерінің және арифметикалық амалдар белгілерінің болуы.

16. Әріптердің, сандардың және арифметикалық амалдар белгілерінің болуы.

17. Әріптердің, тыныс белгілерінің және арифметикалық амалдар белгілерінің болуы.

18. Сандардың, тыныс белгілерінің және арифметикалық амалдар белгілерінің болуы.

19. Қайталанатын таңбалардың болмауы.

20. Әріптер, сандар және әріптер арасында ауысу.

21. Әріптердің, тыныс белгілерінің және әріптердің кезектесуі.

22. Сандарды, әріптерді және қайтадан сандарды ауыстырыңыз.


23. Қатарынан бірдей таңбалардың болмауы.

24. Кезектесетін сандар, тыныс белгілері және қайтадан сандар.

25. Сандарды, арифметикалық амалдардың белгілерін және қайтадан сандарды ауыстыру.

26. Пайдаланушы атымен сәйкес келмеу.

27. Кері тәртіпте жазылған пайдаланушы атымен сәйкессіздік.

28. Кіші және бас әріптердің, сандардың және тыныс белгілерінің болуы.

29. Кіші және бас әріптердің, сандардың және арифметикалық амалдар белгілерінің болуы.

30. ДД/мм/жж, дд-мм-жж, дд форматтарының біріндегі күнмен сәйкес келмеуі.

Бағдарламаның диалогтық нысандарының ықтимал түрі

Бағдарламаға кіру терезесі



Borland Delphi немесе Borland C++ Builder бағдарламалау жүйесінен File | New | Dialogs командасы арқылы таңдаймыз, Password Dialog шаблоны негізінде жасалуы мүмкін.
Паролді ауыстыру терезесі


Жарамды құпия сөзді енгізу үшін пішінге "Ескі құпия сөз" және өңделетін жолды қосуға болады.

Жаңа пайдаланушыны қосу терезесі


Жаңа есептік жазба үшін әкімші орнатқан параметрлердің мәндерін көрсету және өзгерту үшін басқару элементтерін пішінге қосуға болады (блоктау, таңдалған құпия сөздерге шектеу).
Есептік жазбаларды қарау (өңдеу) терезесі


Алдыңғы есептік жазбаға өту үшін "Алдыңғы" батырмасын қосуға немесе Borland Delphi немесе Borland C++ Builder бағдарламалау жүйелерінің StringGrid (Additional тобы) компоненті арқылы пайдаланушы тіркелгендері мен олардың параметрлерінің тізімін бір терезеде көрсетуге болады.
Бағдарламаны әзірлеу үшін ұсынылатын тіл құралдары Си++

  1. Бағдарлама пайдаланушысының есептік жазбасы туралы ақпаратты ұсынуға арналған деректер түрі:

Struct {

//имя пользователя – строка в стиле Си (массив символов)

//длина пароля

//пароль пользователя – массив символов


//признак блокировки учетной записи

//признак включения ограничений на выбираемые пароли

} имя_структуры;

  1. Объект класса fstream файлового потокового ввода-вывода, открытый в двоичном режиме и состоящий из структур приведенного выше типа (определен в заголовочном файле fstream.h) для представления файла учетных записей пользователей программы:

fstream имя_файловой_переменной;

  1. Методы класса fstream для работы с файлом учетных записей:

/* открытие существующего файла под именем FileName для чтения и записи в двоичном режиме */

void open(const char *FileName, ios::in|ios::out|ios::binary);

// создание нового файла

void open(const char *FileName, ios::out|ios::binary);

! – перегруженная операция, возвращающая true, если последняя операция ввода или вывода завершилась с ошибкой

// проверка существования файла с именем FileName (функция Borland C++ Builder)

bool FileExists(const AnsiString& FileName);

/* сброс флага ошибки для потока ввода или вывода (необходим для продолжения работы в программе с этим потоком) */

void clear(int=0);

// закрытие файла

void close();

/* перемещение указателя текущей позиции файла на off байт относительно dir (возможные значения ios::beg, ios::cur, ios::end) */

ostream& seekp(long off, seek_dir dir);

/* чтение данных из файла в буфер buf длины n, равной длине структуры приведенного выше типа */

istream& read(char *buf, int n);

/* запись данных из буфера buf длины n, содержащего структуру приведенного выше типа, в файл */

ostream& write(const char *buf, int n);

// проверка достижения конца файла

bool eof();

  1. Средства проверки установленных ограничений на выбираемые пароли (прототипы функций определены в заголовочных файлах string.h и stdlib.h):

/* преобразование объекта класса AnsiString (значения свойства Text объекта класса CEdit, соответствующего компоненту диалоговой формы - однострочному редактору) в строку-массив символов, метод класса AnsiString */

char* c_str();

// получение текущей длины строки S

unsigned strlen(const char *S);

/* получение указателя на символ в строке S, с которого начинается первое вхождение подстроки Substr, или NULL, если Substr не входит в S */

char* strstr(const char *S, const char *Substr);

// преобразование строки S в целое число

int atoi(const char *S);

/* получение указателя на первый символ строки s1, совпавший с одним из символов строки s2, или NULL */


char *strpbrk(char *s1, const char *s2);

/* получение длины начального сегмента s1, состоящего только из символов, входящих в s2, или 0 */

unsigned strspn(const char *s1, const char *s2);

// проверка символа ch

BOOL IsCharAlpha(char ch); // TRUE, если ch – буква

BOOL IsCharUpper(char ch); // TRUE, если ch – прописная буква

BOOL IsCharLower(char ch); // TRUE, если ch – строчная буква

bool isalpha(char ch); // true, если ch – латинская буква

bool isdigit(char ch); // true, если ch – латинская цифра

bool isalnum(char ch); // true, если ch – латинская буква или цифра

bool isupper(char ch); // true, если ch – прописная латинская буква

bool islower(char ch); // true, если ch – строчная латинская буква

bool ispunct(int ch); /* true, если ch – печатаемый символ, не являющийся латинской буквой, цифрой или пробелом */

‘+’ ‘-‘ ‘*’ ‘/’ ‘%’ – символы знаков арифметических операций

  1. Замена на экране символом ‘*’ символов вводимого пароля:

Свойство PasswordChar компонента Edit (редактируемая строка)=’*’