Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
Wydział Informatyki
Katedra Baz Danych
Bazy Danych
Paweł Mirecki Nr albumu s14926
Program wspomagający pracę osób prowadzących zajęcia na uczelni wyższej
Praca inżynierska
mgr inż. Piotr Gago
Warszawa, wrzesień 2020
Spis treści
Streszczenie i słowa kluczowe.............................................................................................3
Rozdział 1. Wstęp............................................................................................................4
Rozdział 2. Analiza...........................................................................................................6
2.1. Kontekst......................................................................................................................6
2.2. Cel...............................................................................................................................7
2.3. Zakres......................................................................................................................... 8
2.4. Aktorzy systemu.........................................................................................................8
2.5. Wymagania funkcjonalne...........................................................................................9
2.6. Wymagania niefunkcjonalne....................................................................................11
2.7. Diagram związków encji...........................................................................................15
2.8. Szczegółowy opis encji i atrybutów..........................................................................16
2.9. Diagram przypadków użycia.....................................................................................32
Rozdział 3. Projektowanie i dokumentacja techniczna...................................................33
3.1. Wybór i opis wybranych technologii.........................................................................33
3.2. Architektura i moduły systemu.................................................................................38
3.3. Projekt interfejsu......................................................................................................39
3.4. Wymagania sprzętowe.............................................................................................57
Rozdział 4. Dokumentacja dla użytkownika....................................................................60
4.1. Instrukcja instalacji...................................................................................................60
4.2. Wskazówki wdrożeniowe.........................................................................................60
4.3. Instrukcje obsługi......................................................................................................62
Rozdział 5. Podsumowanie...........................................................................................104
Spis ilustracji...................................................................................................................105
Bibliografia......................................................................................................................109
str. 2
Streszczenie i słowa kluczoweCelem pracy było stworzenie programu wspomagającego pracę osób prowadzących zajęcia
na uczelni wyższej, jak również sprawdzenie stopnia dojrzałości szkieletu aplikacyjnego
Blazor
i jego przydatności w realizacji zamierzonego celu. W trakcie pisania programu wykorzystano
również język C#, oraz szkielet aplikacyjny Entity Framework Core. Praca składa się z pięciu
rozdziałów, w tym wstęp i podsumowanie.
Słowa kluczowe: Blazor, C#, EFC, dziennik, Razor
str. 3
Rozdział 1. Wstęp
Żadna dziedzina życia codziennego nie może się obyć bez wykorzystania technologii
informatycznej. Komputery wykorzystywane są do eliminowania żmudnych, monotonnych
czynności, przyspieszenia obliczeń i szybszego osiągania wyników, modelowania złożonych
procesów fizycznych i chemicznych czy też analizowania alternatywnych przebiegów
działania. Komputery wkraczają także do edukacji – od treści multimedialnych, animacji i
interaktywnych podręczników, po testy komputerowe, i szczególnie w dobie pandemii,
zdalne nauczanie. Dokumentowanie działań edukacyjnych jest też istotnym elementem
pracy nauczyciela,
czy to prowadzącego zajęcia w szkole podstawowej, czy też lektora/wykładowcy na uczelni
wyższej.
W swojej pracy spróbuję przedstawić przykładową aplikację, która może wspomóc pracę
osób prowadzących zajęcia na uczelni wyższej. Jednocześnie, praca ta będzie miała na celu
stwierdzenie, w jakim stopniu framework (szkielet aplikacyjny) Blazor, rozwijany jako
otwarte oprogramowanie przez Microsoft od 2017 roku1, nadaje się do stworzenia projektu
informatycznego, który wykracza poza pojedynczą stronę i podstawowe odwołanie się do
bazy danych. Praca została podzielona na trzy główne części:
analizę,
projektowanie i dokumentację techniczną,
oraz dokumentację dla użytkownika.
W rozdziale drugim przedstawiam kontekst funkcjonowania zamierzonej aplikacji, cel jej
powstania i zakres jej działania. Zostaną tu również omówieni główni aktorzy systemu, jak
również wymagania funkcjonalne i niefunkcjonalne. W rozdziale tym również przedstawiony
zostanie diagram związków encji oraz diagram przypadków użycia.
W rozdziale trzecim znajduje się uzasadnienie wyboru oraz dokładny opis wybranych
technologii wykorzystywanych w trakcie pracy, ze szczególnym uwzględnieniem frameworku
Blazor. Przedstawiona jest również architektura systemu, jego główne moduły oraz projekt
1 Zobacz np.: https://chrissainty.com/what-is-blazor-and-why-is-it-so-exciting/ (data dostępu
12.07.2020)str. 4
interfejsu. W tej części znajdują się również wymagania sprzętowe i systemowe niezbędne
do prawidłowego uruchomienia i działania projektowanej aplikacji.
Rozdział czwarty poświęcony jest dokumentacji użytkownika, ze szczególnym
uwzględnieniem instrukcji instalacji, wskazówek wdrożeniowych oraz dokładnej instrukcji
obsługi stworzonego programu.
Praca kończy się krótkim podsumowaniem, zawierającym omówienie głównych elementów
pracy oraz osiągnięte wnioski.
str. 5
Rozdział 2. Analiza
2.1. KontekstEdukacja jest jedną z dziedzin życia, gdzie coraz częściej wykorzystywane są technologie
informacyjne. Komputery wykorzystywane są do uatrakcyjnienia prowadzonych zajęć,
poprzez wykorzystywanie prezentacji, odtwarzanie filmów, symulowanie doświadczeń
i procesów na ekranie komputera czy też poprzez korzystanie z elektronicznych wersji
podręczników przygotowanych przez ich wydawców. Nie tylko strona edukacyjna jest jednak
istotna, ale też obsługa administracyjna ucznia/studenta/słuchacza. Szkoły odchodzą
od papierowych dzienników lekcyjnych, na rzecz dzienników elektronicznych, takich jak
np. Synergia (firma Librus)2, UONET+ (firma Vulcan)3, EduDziennik (firma Helion SA)4 żeby
wymienić tylko kilka. Podobne systemy powstały również do obsługi studentów szkół
wyższych np. USOS (Uniwersytet Warszawski)5, eHMS (Kalasoft)6, czy też system Gakko
(Polsko-Japońska Akademia Technik Komputerowych)7. Systemy te różnią się zakresem
funkcjonalności (poprzez dodatkowe moduły obsługujące np. pracę dziekanatu, biblioteki
itp.) jak również stopniem wspierania prowadzącego zajęcia oraz studenta (obecności,
bieżące oceny, sylabusy, wiadomości, tablice ogłoszeń).
Celem tej pracy nie jest powielenie istniejącego rozwiązania, a raczej stworzenie rozwiązania
skupiającego się na potrzebach prowadzącego zajęcia (sprawdzenie listy, uzupełnienie ocen,
2 Oficjalna strona elektronicznego dziennika lekcyjnego Librus Synergia
https://portal.librus.pl/rodzina/synergia/loguj (data dostępu 13.07.2020)3 Oficjalna strona systemu uczniowskiego UONET+ z e-dziennikiem
https://www.vulcan.edu.pl/programy/e-dziennik-uonet-87 (data dostępu 13.07.2020)4 Oficjalna strona dziennika lekcyjnego eDziennik https://edudziennik.pl/opis/ (data dostępu
13.07.2020)5 Oficjalna strona systemu USOSweb Uniwersytetu Warszawskiego
https://usosweb.uw.edu.pl/kontroler.php?_action=news/kontakt (data dostępu 13.07.2020)6 Oficjalna strona zintegrowanego systemu wspomagającego zarządzanie uczelniami
wyższymi eHMS https://www.kalasoft.pl/ (data dostępu 13.07.2020)7 System dziekanatowy GAKKO Polsko-Japońskiej Akademii Technik Komputerowych
https://gakko.pjwstk.edu.pl/ (data dostępu 13.07.2020)str. 6
wystawienie oceny końcowej, zaplanowanie zadań do wykonania) oraz studenta – uzyskanie
informacji o zajęciach, dyżurach prowadzącego, wymaganiach zaliczeniowych, sylabusie
zajęć. Stworzony w ramach tej pracy inżynierskiej program spełnia powyżej postawione
zadania. Budowa programu umożliwia również jego rozwinięcie o dodatkowe
funkcjonalności, zgodnie z potrzebami użytkowników programu. Program może być też
dostosowany do konkretnych warunków jego wykorzystania w ramach danej instytucji
edukacyjnej.
2.2. CelCelem niniejszej pracy jest pomoc w usprawnieniu pracy osób prowadzących zajęcia na
wyższej uczelni poprzez wprowadzone narzędzie informatyczne. Aplikacja umożliwia swoim
użytkownikom dodawanie frekwencji, ocen, tematów zajęć oraz przekazywanie
podstawowych informacji studentom – terminy dyżurów prowadzącego, daty najbliższych
zajęć, zasady zaliczenia, terminy oddania prac zadanych przez prowadzącego. Jednocześnie
umożliwia prowadzącym i osobom nadzorującym prowadzenie zajęć generowanie
podstawowych statystyk dotyczących zarówno studentów, jak i prowadzących zajęcia.
Umożliwia to sprawdzenie osiąganych wyników edukacyjnych, frekwencji, jak również
kontrolę systematyczności wykonywanej pracy. Stworzona aplikacja powinna być
uniwersalna i możliwa do zastosowania w dowolnej szkole wyższej, jak również powinna
stwarzać możliwości rozszerzenia jej o dalsze moduły. Kolejnym aspektem pracy jest
sprawdzenie dojrzałości frameworku (szkieletu aplikacyjnego) Blazor do wykorzystania w
celu stworzenia kompletnej, działającej aplikacji.
str. 7
2.3. ZakresStworzona aplikacja umożliwia zarządzanie informacjami dotyczącymi studentów,
prowadzących zajęcia, samych zajęć, jak również daje możliwość zadawania zadań, wymianę
informacji, dodawanie frekwencji, ocen i tematów zajęć. Użytkownicy systemu mają do
swojej dyspozycji różną funkcjonalność, zależną od typu konta posiadanego w systemie.
Aplikacja udostępnia również funkcje kontrolne i statystyczne, które mogą być przydatne
przy prowadzeniu zajęć, jak i ich nadzorowaniu.
Jednocześnie weryfikacji podlegał również wykorzystywany framework (szkielet aplikacyjny)
Blazor. W ramach stworzonego projektu wykorzystano większość elementów szkieletu,
niezbędnych do realizacji zamierzonej funkcjonalności, jak również zweryfikowano
współpracę Blazora z Entity Framework Core, który ułatwia dostęp do systemów
bazodanowych z poziomu aplikacji .Net8.
2.4. Aktorzy systemuAktorami systemu są:
Administrator – aktor, który ma uprawnienia do zarządzania ustawieniami systemu,
najszerszy zakres uprawnień;
Kierownik – osoba nadzorująca kurs lub grupę kursów, jest odpowiedzialna za pracę
prowadzących zajęcia;
Prowadzący zajęcia – osoba, która prowadzi zajęcia dla studentów;
Student – osoba, która uczy się w ramach zajęć prowadzonych przez prowadzących
zajęcia.
Każdy aktor posiada przypisany do niego zakres funkcjonalności, umożliwiający mu
wykonywanie określonych funkcji w systemie. Dokładny przydział funkcji dla poszczególnych
aktorów zaprezentowany jest na diagramie przypadków użycia w części 2.9. Po zalogowaniu
się do programu, każdy z aktorów otrzymuję inny wygląd menu programu, gdyż zawarte są
tam jedynie funkcje, które są dostępne dla danego aktora.
8 Zobacz: Entity Framework Core [12]str. 8
2.5. Wymagania funkcjonalneProgram powinien zapewniać wspieranie pracy prowadzącego zajęcia na uczelni wyższej.
W ramach struktury uczelni, wyróżniamy administratora, kierownika studiów, prowadzących
zajęcia oraz studentów. Nauczanie przedmiotów prowadzone jest w ramach kursów.
O utworzeniu kursu, przydzieleniu do niego prowadzących zajęcia i studentów decyduje
kierownik. Kursy realizowane są w cyklach semestralnych. Liczba zajęć w semestrze w
ramach kursu zależy od specyfiki zajęć. Prowadzący zajęcia w trakcie każdych zajęć sprawdza
obecność, wpisuje temat zajęć może wystawić oceny oraz może zaplanować wydarzenia.
1. W systemie należy przechowywać informacje o osobach związanych ze studiami
i prowadzeniem kursów. Zostały one podzielone ze względu na pełnione funkcje
na: administratora, kierownika studiów (który może być jednocześnie prowadzącym
zajęcia), prowadzących zajęcia (którzy mogą być jednocześnie studentami) oraz
studentów. Podział jest kompletny.
2. Dla każdej z osób należy pamiętać imię i nazwisko. Dodatkowo dla studentów należy
pamiętać numer studenta oraz kursy na który student uczęszcza. Dla prowadzących
zajęcia należy pamiętać kursy, które w danym czasie uczą, tytuł lub stopień naukowy
(np. magister, doktor, doktor habilitowany).
3. Kursy są prowadzone w ramach wydziałów i typów studiów. Administrator i
kierownik studiów mogą dodawać nowe kursy.
4. Kursy są prowadzone dla określonej grupy studentów. Dla każdego kursu należy
pamiętać nazwę kursu, ilość zajęć w ramach kursu, maksymalną liczbę studentów
w grupie uczęszczających na dany kurs, sylabus, datę rozpoczęcia kursu, wydział i typ
studiów, dla których ten kurs jest przeznaczony, sposób oceniania oraz limit
nieobecności.
5. Każdy kurs składa się z zajęć. Zajęcia są prowadzone dla konkretnej grupy studentów
w ramach danego kursu. Dla każdych zajęć należy pamiętać kurs, grupę studencką,
dla której są prowadzone, temat zajęć, ich datę i godzinę rozpoczęcia.
6. Zajęcia trwają 1,5h.
7. W ramach zajęć prowadzący zajęcia sprawdza frekwencję – należy pamiętać rodzaj
obecności (obecny, nieobecny, usprawiedliwiony), zajęcia, dla których jest
sprawdzana obecność i uczestnika zajęć, dla których frekwencja jest sprawdzana.
str. 9
8. W ramach zajęć prowadzący może dodawać oceny. Należy pamiętać ocenę, kurs,
w ramach którego została wystawiona, datę dodania i ewentualnej modyfikacji, czy
jest to ocena semestralna oraz użytkownika, któremu została wystawiona.
9. W ramach zajęć prowadzący może dodawać wydarzenia. Należy pamiętać temat
wydarzenia, jego typ, opis, datę udostępnienia studentom, datę, kiedy wydarzenie
ma być zrealizowane, zajęcia oraz studentów, których dane wydarzenie dotyczy.
10. Grupa studentów uczęszcza na dane zajęcia w ramach kursu. Należy pamiętać nazwę
danej grupy studentów. Student może należeć do różnych grup studenckich.
11. Grupa studentów ma przypisane określone kursy, w ramach których realizowane
są poszczególne zajęcia.
12. Jeden prowadzący zajęcia może uczyć na różnych zajęciach w ramach różnych
kursów. W ramach jednego kursu mogą być różni prowadzący zajęcia.
13. Student może usprawiedliwić swoją nieobecność na zajęciach, należy wówczas
pamiętać, że nieobecność została usprawiedliwiona.
14. Student może przeglądać sylabusy kursów na które uczęszcza (o ile zostały one
udostępnione).
15. Student, prowadzący zajęcia i kierownik mogą sprawdzić zaplanowane wydarzenia.
16. Prowadzący zajęcia może uzyskiwać szczegółową informację o swoich zajęciach
i studentach.
17. Kierownik studiów może uzyskiwać szczegółową informację o wszystkich zajęciach
w ramach nadzorowanych kursów.
18. Kierownik studiów może uruchamiać kontrolę zajęć, dodawać nowy kurs oraz
edytować kurs.
19. Kierownik studiów może również nadzorować określone kursy – uzyskuje wtedy
wgląd w sytuacje na tych kursach (może sprawdzić realizację tematów, frekwencję,
oceny).
20. Prowadzący i studenci mogą wymieniać między sobą wiadomości. Dla każdej
wiadomości należy pamiętać jej temat, treść, jakiego kursu dotyczy, datę wysłania,
datę odczytania, nadawcę i adresata.
21. Prowadzący zajęcia prowadzą dyżury dla studentów. Dla każdego dyżuru należy
pamiętać dzień, godzinę rozpoczęcia i zakończenia dyżuru, miejsce dyżuru, czy i w jaki
str. 10
sposób student ma informować o przyjściu na dyżur. Prowadzący może też dodać
preferowany sposób kontaktu i dodatkowe informacje dla studentów.
22. Prowadzący mogą wymieniać się między sobą plikami. Dla każdego pliku należy
pamiętać jego właściciela, kurs, którego dany plik dotyczy, nazwę, rozszerzenie
i wielkość pliku.
23. Każdy użytkownik ma dostęp do panelu ustawień, gdzie może zmieniać parametry
działania programu, zmienić swoje hasło oraz edytować własną informację.
24. Administrator może nadawać uprawnienia użytkownikom i przypisywać ich
do określonej roli, jak również wykonywać wszelkie działania dostępne dla
kierownika studiów wobec wszystkich kursów w systemie.
Program powinien działać poprawnie na komputerach z systemem Windows od wersji 7,
powinien zapewnić możliwość jednoczesnej pracy wielu użytkowników, dane powinny być
przechowywane w bazie danych, system powinien zapewnić szybką reakcję na akcje
użytkownika.
2.6. Wymagania niefunkcjonalneOgraniczenie Miara
Poprawne działanie na komputerze z
systemem Windows 7 i wyższym, jak
również na komputerach działających pod
kontrolą innych systemów operacyjnych dla
których istnieje wersja WebAssembly.
Program powinien zostać zaprojektowany
na komputery PC.
Powinien działać poprawnie na
komputerze, na którym możliwe jest
uruchomienie systemu operacyjnego
Windows 7 lub jego nowszej wersji
(procesor 1Ghz lub szybszy, 1-2 GB pamięci
RAM, dysk twardy > 32 GB)
System powinien działać poprawnie
z monitorami o rozdzielczości 1024x768
lub wyższej. Optymalna rozdzielczość dla
funkcjonowania systemu to 1920x1080.
Czas oczekiwania na uruchomienie
str. 11
Ograniczenie Miara
programu
na serwerze nie powinien przekraczać 30
sekund (mierzony od momentu wydania
polecenia uruchomienia programu
do uzyskania funkcjonalnego interfejsu
użytkownika), czas uruchomienia samego
interfejsu użytkownika w przeglądarce jest
zależny od prędkości sieci: w przypadku
pierwszego uruchomienia na czystym
systemie konieczne jest pobranie około
2MB danych (zależne od konfiguracji
systemu oraz wersji systemu operacyjnego),
co dla łącza o przepustowości 2 Mbit/s
powinno zająć około 8 sekund, w przypadku
kolejnych uruchomień na tym samym
systemie, czas uruchomienia powinien
wynosić około
2 sekund (mierzony od kliknięcia klawisza
Enter po wpisaniu adresu strony
do pojawienia się funkcjonalnego interfejsu
użytkownika). W przypadku szybszego
łącza, czas ten powinien być
proporcjonalnie niższy.
Przeglądarka internetowa Komputer powinien posiadać zainstalowaną
przeglądarkę internetową, wspierająca
WebAssembly [1].
str. 12
Ograniczenie Miara
Możliwość jednoczesnej pracy wielu
użytkowników.
Dostęp i poprawna obsługa dla 500
użytkowników jednocześnie korzystających
z systemu. Przy pełnym obciążeniu
powyższą liczbą użytkowników, opóźnienia
w działaniu nie powinny wzrosnąć o więcej
niż 20%
w porównaniu do systemu używanego przez
1 użytkownika.9
Dane powinny być przechowywane w bazie
danych.
Serwerem bazy danych powinien być SQL
Server 2019 lub nowszy.
Szybka reakcja na akcje użytkownika. Czas reakcji na jakąkolwiek akcję
użytkownika nie powinien przekroczyć
dwóch sekund.
Czas odświeżania ekranu nie powinien
przekraczać dwóch sekund.
Czytelność interfejsu System powinien posiadać jednolity
graficzny interfejs użytkownika, zgodny
z zatwierdzonym projektem.
Długość szkolenia wdrożeniowego Użytkownik powinien sprawnie używać
programu po szkoleniu on-line trwającym
maksymalnie 120 minut. Wykonywanie
podstawowych (codziennie wykonywanych)
czynności powinno przebiegać bez wahania,
bardziej skomplikowane działania mogą
wymagać skorzystania z wbudowanej 9 Zgodnie z informacją zawartą w dokumentacji serwera Blazor [19], przy 5000
jednoczesnych użytkownikach, do obsługi aplikacji po stronie serwera wymagane jest około
1.3 GB pamięci operacyjnej (szacunkowo około 273 KB na użytkownika). Założenia przyjęte w
powyższej tabeli zakładają instalację na serwerze spełniającym minimalne warunki do
instalacji oprogramowania SQL Server.str. 13
Ograniczenie Miara
pomocy. W przypadku użytkownika biegle
posługującego się technologią
informacyjną, użytkowanie podstawowych
funkcji programu (sprawdzenie własnych
zajęć, dodanie tematu, obecności, ocen) nie
powinno wymagać dodatkowego szkolenia.
str. 14
2.7. Diagram związków encji
Rysunek 1 Diagram związków encji (źródło: opracowanie własne)
str. 15
Diagram związków encji został przygotowany z wykorzystaniem programu Vertabelo10.
2.8. Szczegółowy opis encji i atrybutów
2.8.1. Encja AspNetUsers
W poniższej tabeli pola oznaczone gwiazdką pochodzą z domyślnych wartości pól w tabeli
AspNetUsers, tworzonej podczas dodawania uwierzytelnienia użytkownika
zaimplementowanego w ramach Asp.Net Core. Opisy domyślnych pól pochodzą
z dokumentacji Asp.Net Core w wersji 3.1 [2].
Nazwa atrybutu Typ Właściwości Opis
Id* uniqueidentifier Klucz główny Identyfikator użytkownika
UserName* nvarchar(256) Nazwa użytkownika
NormalizedUserName* nvarchar(256)Znormalizowana nazwa
użytkownika
Name nvarchar(MAX) Imię użytkownika
Surname nvarchar(MAX) Nazwisko użytkownika
Title nvarchar(MAX)Może przyjąć
wartość null
Stopień/tytuł naukowy
użytkownika (jeżeli posiada)
StudentId nvarchar(max)Może przyjąć
wartość nullNumer studenta
Email* nvarchar(256)Adres poczty elektronicznej
użytkownika
NormalizedEmail* nvarchar(256)
Znormalizowany adres
poczty elektronicznej
użytkownika
EmailConfirmed* bitCzy email został
potwierdzony?
PasswordHash* nvarchar(MAX) Hash hasła
10 Przy tworzeniu wykorzystano program do tworzenia diagramów encji Vertabelo –
www.vertabelo.com str. 16
Nazwa atrybutu Typ Właściwości Opis
SecurityStamp* nvarchar(MAX)
Losowa wartość, która
zmienia się za każdym
razem gdy zmieniają się
dane uwierzytelniające
użytkownika (login, hasło)
ConcurrencyStamp* nvarchar(MAX)
Losowa wartość
generowana za każdym
razem, gdy użytkownik
loguje się do systemu
PhoneNumber* nvarchar(MAX)Numer telefonu
użytkownika
PhoneNumberConfirmed* bitCzy numer telefonu został
potwierdzony?
TwoFactorEnabled* bit
Czy uwierzytelnianie
dwuskładnikowe zostało
włączone?
LockoutEnd* datetimeoffset
Data w formacie UTC, kiedy
kończy się blokada
użytkownika
LockoutEnabled* bitCzy użytkownik może
zostać zablokowany?
AccessFailedCount* intIlość błędnych loginów dla
bieżącego użytkownika
str. 17
2.8.2. Encja AspNetRoles
W poniższej tabeli pola oznaczone gwiazdką pochodzą z domyślnych wartości pól w
tabeli AspNetRoles, tworzonej podczas dodawania uwierzytelnienia użytkownika
zaimplementowanego w ramach Asp.Net Core. Opisy domyślnych pól pochodzą
z dokumentacji Asp.Net Core w wersji 3.1 [2]
Nazwa atrybutu Typ Właściwości Opis
Id11 uniqueidentifierKlucz
głównyKlucz główny encji
Name* nvarchar(256) Nazwa roli użytkownika
NormalizedName* nvarchar(256)Znormalizowana nazwa roli
użytkownika
ConcurrencyStamp* nvarchar(MAX)
Losowa wartość która powinna się
zmieniać za każdym razem, gdy
rola jest zachowywana.
2.8.3. Encja AspNetRoleClaims
W poniższej tabeli pola oznaczone gwiazdką pochodzą z domyślnych wartości pól w
tabeli AspNetRoleClaims, tworzonej podczas dodawania uwierzytelnienia użytkownika
zaimplementowanego w ramach Asp.Net Core. Opisy domyślnych pól pochodzą
z dokumentacji Asp.Net Core w wersji 3.1 [2]
Nazwa
atrybutuTyp Właściwości Opis
Id* intKlucz
głównyKlucz główny encji
RoleId* uniqueidentifier Klucz obcyKlucz obcy będący identyfikatorem roli
(AspNetRoles)
ClaimType* nvarchar(MAX) Typ żądania
ClaimValue* nvarchar(MAX) Wartość żądania
11 Typ atrybutu został zmieniony z domyślnego int na uniqueidentifier.str. 18
2.8.4. Encja AspNetUserClaims
W poniższej tabeli pola oznaczone gwiazdką pochodzą z domyślnych wartości pól w
tabeli AspNetUserClaims, tworzonej podczas dodawania uwierzytelnienia użytkownika
zaimplementowanego w ramach Asp.Net Core. Opisy domyślnych pól pochodzą
z dokumentacji Asp.Net Core w wersji 3.1 [2]
Nazwa
atrybutuTyp Właściwości Opis
Id* intKlucz
głównyKlucz główny encji
UserId* uniqueidentifier Klucz obcyKlucz obcy odnoszący się do
użytkownika (AspNetUsers)
ClaimType* nvarchar(MAX) Typ żądania
ClaimValue* nvarchar(MAX) Wartość żądania
2.8.5. Encja AspNetUserLogins
W poniższej tabeli pola oznaczone gwiazdką pochodzą z domyślnych wartości pól w
tabeli AspNetUserLogins, tworzonej podczas dodawania uwierzytelnienia użytkownika
zaimplementowanego w ramach Asp.Net Core. Opisy domyślnych pól pochodzą
z dokumentacji Asp.Net Core w wersji 3.1 [2]
Nazwa atrybutu Typ Właściwości Opis
LoginProvider* nvarchar(128)Klucz
główny
Klucz główny encji, jednocześnie
określa kto dostarcza dane do
logowania (np. Facebook,
Google).
ProviderKey* nvarchar(128)Identyfikator dostawcy usługi
logowania dla tego loginu
ProviderDisplayName
*nvarchar(MAX)
Nazwa dostawcy usługi
logowania
UserId* uniqueidentifier Klucz obcyKlucz obcy odnoszący się
do użytkownika (AspNetUsers)
str. 19
2.8.6. Encja AspNetUserRoles
W poniższej tabeli pola oznaczone gwiazdką pochodzą z domyślnych wartości pól
w tabeli AspNetUserRoles, tworzonej podczas dodawania uwierzytelnienia użytkownika
zaimplementowanego w ramach Asp.Net Core. Opisy domyślnych pól pochodzą
z dokumentacji Asp.Net Core w wersji 3.1 [2]
Nazwa
atrybutuTyp Właściwości Opis
UserId* uniqueidentifierKlucz główny,
klucz obcy
Klucz główny encji, jednocześnie klucz
obcy odnoszący się do użytkownika
(tabela AspNetUsers)
RoleId* uniqueidentifierKlucz główny,
klucz obcy
Klucz główny encji, jednocześnie klucz
obcy odnoszący się do konkretnej roli
(tabela AspNetRoles).
2.8.7. Encja AspNetUserTokens
W poniższej tabeli pola oznaczone gwiazdką pochodzą z domyślnych wartości pól
w tabeli AspNetUserRoles, tworzonej podczas dodawania uwierzytelnienia użytkownika
zaimplementowanego w ramach Asp.Net Core. Opisy domyślnych pól pochodzą
z dokumentacji Asp.Net Core w wersji 3.1 [2]
Nazwa
atrybutuTyp Właściwości Opis
UserId* uniqueidentifierKlucz główny,
klucz obcy
Klucz główny encji, odnoszący się
do użytkownika (tabela
AspNetUsers)
LoginProvider* nvarchar(128)
Od jakiego usługodawcy w zakresie
logowania pochodzi token
logowania.
Name* nvarchar(128) Nazwa tokenu logowania
Value* nvarchar(MAX) Wartość tokenu logowania
str. 20
2.8.8. Encja Class
Nazwa atrybutu Typ Właściwości Opis
Id_Class uniqueidentifier Klucz główny
Klucz główny encji,
identyfikator konkretnych
zajęć
Course_Id_Course uniqueidentifier Klucz obcy
Identyfikator kursu dla
którego te zajęcia są
prowadzone (tabela Course)
StudentsGroupIdSGroup uniqueidentifier Klucz obcy
Identyfikator grupy, dla
której te zajęcia są
prowadzone (tabela
StudentsGroup)
Subject nvarchar(200)Może przyjąć
wartość nullTemat zajęć
ClassDate datetime Data zajęć
ClassHour time(0) Godzina rozpoczęcia zajęć
2.8.9. Encja PersonHasType
Nazwa atrybutu Typ Właściwości Opis
SystemSettings_Id_SystemSettings uniqueidentifier Klucz obcy
Identyfikator
ustawień
systemowych dla
danego
użytkownika i roli
AspNetUsers_Id uniqueidentifier Klucz główny,
klucz obcy
Klucz główny encji,
identyfikator
użytkownika
(tabela
str. 21
Nazwa atrybutu Typ Właściwości Opis
AspNetUsers)
AspNetRoles_Id uniqueidentifierKlucz główny,
klucz obcy
Klucz główny encji,
identyfikator roli
(tabela
AspNetRoles)
2.8.10. Encja Course
Nazwa atrybutu Typ Właściwości Opis
Id_Course uniqueidentifier Klucz główny Klucz główny encji
CourseName varchar(100) Nazwa kursu
NumberOfClasses tinyint
Ilość godzin zajęć (1,5h)
przewidziana
w semestrze
MaxNumberOfStudents tinyint
Maksymalna ilość
studentów, jaka może
uczestniczyć w kursie
w ramach jednej grupy
SyllabusHTTP varchar(256) Adres sylabusa
Syllabus bitCzy sylabus jest
załączony (1-tak, 0-nie)
CourseStarts dateMoże przyjąć
wartość nullData rozpoczęcia kursu
StudiesType_Id_StudiesTyp
euniqueidentifier Klucz obcy
Identyfikator typu
studiów, do których
należy dany kurs (tabela
StudiesType)
Faculty_Id_Faculty uniqueidentifier Klucz obcy
Identyfikator katedry,
do której należy dany
kurs (tabela Faculty)
str. 22
Nazwa atrybutu Typ Właściwości Opis
GradeType_Id_GradeType uniqueidentifier Klucz obcy
Identyfikator typu ocen
wystawianych na danym
kursie (tabela
GradeType)
AbsenceLimit tinyintMoże przyjąć
wartość null
Limit nieobecności
na danym kursie
2.8.11. Encja Attendance
Nazwa
atrybutuTyp Właściwości Opis
Id_Attendance uniqueidentifierKlucz
głównyKlucz główny encji
Class_Id_Class uniqueidentifier Klucz obcy
Identyfikator zajęć, dla których
sprawdzana jest obecność (tabela
Class)
PresenceType nvarchar(20)Typ obecności (obecny / nieobecny /
usprawiedliwiony)
AspNetUsers_Id uniqueidentifier Klucz obcy
Identyfikator użytkownika, dla którego
sprawdzana jest obecność (tabela
AspNetUsers)
2.8.12. Encja Grade
Nazwa atrybutu Typ Właściwości Opis
Id_Grade uniqueidentifier Klucz główny Klucz główny encji
Grade decimal(3,2) Ocena
Course_Id_Course uniqueidentifier Klucz obcy
Identyfikator kursu, w ramach
którego wystawiana jest ocena
(tabela Course)
str. 23
Nazwa atrybutu Typ Właściwości Opis
DateAdded datetime Data dodania oceny
DateModified datetimeMoże przyjąć
wartość nullData modyfikacji oceny
IsTermGrade bitOkreśla, czy jest to ocena
końcowa (1 – tak, 0 nie)
AspNetUsers_Id uniqueidentifier Klucz obcyIdentyfikator użytkownika, dla
którego jest wystawiana ocena
2.8.13. Encja Homework
Nazwa atrybutu Typ Właściwości Opis
Id_Homework uniqueidentifierKlucz
głównyKlucz główny encji
HomeworkSubject nvarchar(256) Temat zadania do wykonania
HomeworkDescription nvarchar(max) Opis zadania do wykonania
HomeworkType nvarchar(10) Typ zadania do wykonania
DateGiven datetimeData zadania pracy do
wykonania
DateDue dateData, na kiedy zadanie ma być
zrobione
Class_Id_Class uniqueidentifier Klucz obcy
Identyfikator zajęć, na które
daje zadanie jest zadawane
(tabela Class)
IsDone bitOkreśla, czy zadanie zostało
wykonane (0 – nie, 1-tak)
AspNetUsers_Id uniqueidentifier Klucz obcy
Identyfikator użytkownika, dla
którego dane zadanie zostało
zadane (tabela AspNetUsers)
str. 24
2.8.14. Encja Message
Nazwa atrybutu Typ Właściwości Opis
Id_Message uniqueidentifier Klucz główny Klucz główny encji
MessageSubject nvarchar(256) Temat wiadomości
MessageContent nvarchar(max) Treść wiadomości
Course_Id_Course uniqueidentifier Klucz obcy
Identyfikator kursu, którego
dotyczy dana wiadomość (tabela
Course)
IsRead bitOkreśla, czy wiadomość została
przeczytana (0 – nie, 1 – tak)
SentDate datetimeMoże przyjąć
wartość nullData wysłania wiadomości
ReadDate datetimeMoże przyjąć
wartość nullData odczytania wiadomości
AspNetUsers_Id uniqueidentifier Klucz obcy
Identyfikator użytkownika, który
napisał daną wiadomość (tabela
AspNetUsers)
2.8.15. Encja GradeType
Nazwa
atrybutuTyp Właściwości Opis
Id_GradeType uniqueidentifier Klucz główny Klucz główny encji
GradeType varchar(32)Rodzaj oceny (np. punktowa,
procentowa, regularna)
2.8.16. Encja SystemSettings
Nazwa atrybutu Typ Właściwości Opis
Id_SystemSettings uniqueidentifierKlucz
głównyKlucz główny encji
str. 25
Nazwa atrybutu Typ Właściwości Opis
ColourVersion tinyintKod wersji kolorystycznej
programu
RequestConfirmations bit
Określa, czy mają być
wyświetlane potwierdzenia
wykonania poleceń (0 – nie, 1 –
tak)
2.8.17. Encja MessagesForPerson
Nazwa atrybutu Typ Właściwości Opis
Message_Id_Messag
euniqueidentifier
Klucz główny,
klucz obcy
Klucz główny encji,
identyfikator wiadomości
(tabela Message)
AspNetUsers_Id uniqueidentifierKlucz główny,
klucz obcy
Klucz główny encji,
identyfikator użytkownika
(tabela AspNetUsers) – określa
użytkownika, dla którego dana
wiadomość jest przeznaczona
2.8.18. Encja PersonBelongsTo
Nazwa atrybutu Typ Właściwości Opis
Students_Group_Id_SGroup uniqueidentifierKlucz główny,
klucz obcy
Klucz główny encji,
identyfikator grupy
studenckiej, do której
należy użytkownik (tabela
StudentsGroup)
AspNetUsers_Id uniqueidentifier Klucz główny,
klucz obcy
Klucz główny encji,
identyfikator
użytkownika (tabela
str. 26
Nazwa atrybutu Typ Właściwości Opis
AspNetUsers)
2.8.19. Encja StudiesType
Nazwa atrybutu Typ Właściwości Opis
Id_StudiesType uniqueidentifier Klucz główny Klucz główny encji
TypeOfStudies nvarchar(45) Typ studiów
2.8.20. Encja Faculty
Nazwa
atrybutuTyp Właściwości Opis
Id_Faculty uniqueidentifierKlucz
głównyKlucz główny encji
FacultyName nvarchar(50) Nazwa katedry, oferującej dany kurs
2.8.21. Encja StudentsGroup
Nazwa
atrybutuTyp Właściwości Opis
Id_SGroup uniqueidentifierKlucz
głównyKlucz główny encji
GroupName nvarchar(255)
Nazwa własna grupy, stworzona zgodnie
z zasadami obowiązującymi na danej
uczelni.
2.8.22. Encja Repository
Nazwa atrybutu Typ Właściwości Opis
Id_repository uniqueidentifierKlucz
głównyKlucz główny encji
str. 27
Nazwa atrybutu Typ Właściwości Opis
FileName varchar(256) Nazwa pliku
Course_Id_Course uniqueidentifier Klucz obcyIdentyfikator kursu, którego dotyczy
dany plik (tabela Course)
FileExtension nvarchar(10) Rozszerzenie pliku (typ pliku)
AspNetUsers_Id uniqueidentifier Klucz obcy
Identyfikator użytkownika, do
którego należy dany plik (tabela
AspNetUsers)
FileSize bigint Rozmiar pliku
StoredFileName nchar(36)Nazwa pliku, pod którym plik jest
przechowywany na dysku
2.8.23. Encja PersonSupervisesCourse
Nazwa atrybutu Typ Właściwości Opis
Course_Id_Course uniqueidentifierKlucz główny,
klucz obcy
Klucz główny encji, identyfikator
kursu, który jest nadzorowany
(tabela Course)
AspNetUsers_Id uniqueidentifierKlucz główny,
klucz obcy
Klucz główny encji, identyfikator
osoby, która nadzoruje kurs
(tabela AspNetUsers)
2.8.24. Encja PersonTeachesClass
Nazwa atrybutu Typ Właściwości Opis
Class_Id_Class uniqueidentifierKlucz główny,
klucz obcy
Klucz główny encji, identyfikator
zajęć, w trakcie których uczy
dany użytkownik (tabela Class).
AspNetUsers_Id uniqueidentifierKlucz główny,
klucz obcy
Klucz główny encji, identyfikator
użytkownika, który uczy grupę
studencką w ramach danych
zajęć (tabela AspNetUsers)
str. 28
Nazwa atrybutu Typ Właściwości Opis
StudentMaterials nvarchar(100)Lokalizacja materiałów
przeznaczonych dla studentów
CourseRequirements nvarchar(300)Opis wymagań dotyczących
danego kursu
str. 29
2.8.25. Encja StudentsGroupHasCourse
Nazwa atrybutu Typ Właściwości Opis
Course_Id_Course uniqueidentifierKlucz główny,
klucz obcy
Klucz główny encji,
identyfikator kurs, na
który uczęszcza dana
grupa (Course)
StudentsGroup_Id_SGrou
puniqueidentifier
Klucz główny,
klucz obcy
Klucz główny encji,
identyfikator grupy
studenckiej, która bierze
udział w danym kursie
(StudentsGroup)
2.8.26. Encja DutyHours
Nazwa atrybutu Typ Właściwości Opis
Id_DutyHours uniqueidentifier Klucz główny Klucz główny encji
DayDH tinyintMoże przyjąć
wartość nullDzień dyżuru
Hour_Start time(0)Może przyjąć
wartość nullGodzina rozpoczęcia dyżuru
Hour_End time(0)Może przyjąć
wartość nullGodzina zakończenia dyżuru
Room nvarchar(10)Może przyjąć
wartość null
Miejsce odbywania dyżuru (nr
pokoju)
Confirmation bitMoże przyjąć
wartość null
Określa, czy jest wymagane
potwierdzenie przed przyjściem
na dyżur (0 – nie, 1 – tak)
PreferredContac
tnvarchar(30)
Może przyjąć
wartość nullPreferowany sposób kontaktu
Comment nvarchar(200) Może przyjąć Dodatkowy komentarz
str. 30
Nazwa atrybutu Typ Właściwości Opis
wartość null
AspNetUsers_Id uniqueidentifier Klucz obcy
Identyfikator użytkownika, który
prowadzi dyżur (tabela
AspNetUsers)
str. 31
2.9. Diagram przypadków użycia
Rysunek 2 Diagram przypadków użycia (źródło: opracowanie własne)
str. 32
Rozdział 3. Projektowanie i dokumentacja techniczna
3.1. Wybór i opis wybranych technologiiW pracy zostały wykorzystane następujące główne technologie:
1) Język C#
2) AspNetCore.Identity
3) Blazor
4) Razor
5) Entity Framework Core
W dalszej części tego podrozdziału zostaną one przedstawione dokładniej, wraz z powodami
ich wybrania.
3.1.1. Język C#
Język C# został stworzony przez firmę Microsoft w roku 2000 (osobą bezpośrednio
odpowiedzialną za projekt był Anders Hejlsberg [3], a pierwsza publiczna wersja została
opublikowana w lutym 2002 roku razem z środowiskiem programistycznym Visual
Studio .NET 2002 [4], [5]. Głównym powodem stworzenia nowego języka była decyzja
ówczesnego właściciela języka Java (firma Sun) by ograniczyć możliwość wprowadzenia
zmian w języku Java przez Microsoft [3]. C# jest językiem obiektowym wywodzącym się z
rodziny języków C i, jako taki, powinien być z założenia łatwo zrozumiały dla programistów C,
C++, Java oraz JavaScript [6]. Obiektowość została zaimplementowana jako hierarchia z
jednym elementem nadrzędnym (podobnie jak w Javie [6]). W języku C# uwzględniono
również wsparcie
dla komponentów („component-oriented programming” [6]) poprzez dostarczenie
specjalnych struktur wspierających bezpośrednio wykorzystanie komponentów
programistycznych. Zaimplementowany odśmiecacz pamięci (ang „garbage collector”)
pozwala efektywnie zarządzać pamięcią poprzez zwalnianie obszarów zajętych przez
niedostępne i nieużywane obiekty. Obsługa wyjątków oraz silne typowanie (ang „type-safe”)
dodatkowo wpływa na bezpieczeństwo programu. Podczas kompilowania programu
napissanego w języku C#, jest on kompilowany do języka Common Intermediate Language
str. 33
(CIL), który jest z kolei wykonywany w środowisku uruchomieniowym (np. .Net Core) – gdzie
kod jest przekształcony na postać natywną dla systemu, na którym dany program jest
uruchamiany. Przykładowy schemat wykonywania programu jest zamieszczony poniżej
(za [7]):
Rysunek 3 Wykonanie programu napisanego w C# (źródło: [7])
Duża przenaszalność skompilowanego kodu, a więc możliwość jego uruchamiania na różnych
platformach, była jedną z przyczyn wybrania tego języka programowania do stworzenia
programu. Ważną kwestią było też podobieństwo z językiem Java, a więc niższy próg wejścia
w nowy język programowania, jak również współpraca z omówionymi poniżej szkieletami
aplikacyjnymi Blazor oraz Entity Framework Core, które znacząco ułatwiły implementacje
programu.
str. 34
3.1.2. ASP.NET Core Identity
ASP.NET Core Identity jest interfejsem programistycznym aplikacji (API),
zapewniającym funkcjonalność logowania, zarządzanie użytkownikami, hasłami, danymi
osobowymi, rolami i innymi danymi które mogą być wykorzystywane w trakcie logowania się
do systemu oraz interakcją między użytkownikiem a oprogramowaniem [8].
Zaimplementowana wersja interfejsu wykorzystuję bazę danych SQL Server. Powodem
wybrania tego systemu logowania była chęć zapewnienia bezpiecznego sposobu logowania
dla użytkownika (poprzez użycie zewnętrznego, weryfikowalnego rozwiązania o otwartym
kodzie zamiast własnych rozwiązań, które mogłyby być podatne na błędy), jak również
ułatwienie potencjalnego powiązania aplikacji z zewnętrznymi dostawcami danych
do logowania (takich jak np. Facebook, Google, Microsoft Account czy też Twitter), oraz
zapewnienie możliwości dwustopniowego logowania się do systemu (co zostało
zaimplementowane w przedstawionym rozwiązaniu). Dzięki otwartemu kodowi źródłowemu
interfejsu, możliwa była modyfikacja zawartych w nim tabel dotyczących użytkownika
i dopasowanie ich do wymagań stawianych przez stworzony system.
3.1.3. Blazor
Blazor jest szkieletem aplikacyjnym stworzonym przez Stevena Sandersona
z Microsoftu. Pierwsze działające demo zostało przedstawione w trakcie Norwegian
Developers Conference Oslo w 2017 roku [9], a następnie było rozwijane w ramach projektu
ASP.NET na GitHub jako projekt eksperymentalny. Blazor umożliwia wzajemne
współdziałanie kodu napisanego w języku C#, składni Razor (element Asp.Net Core) oraz
HTML.
Przy przygotowywaniu aplikacji możemy dokonać wyboru, czy ma być to aplikacja działająca
na serwerze, czy też na komputerze użytkownika. W tym drugim przypadku, skompilowana
aplikacja jest następnie wykonywana za pomocą silnika Mono.NET zaimplementowanego
w WebAssembly (WASM – wysokowydajna platforma do uruchamiania aplikacji na stronach
internetowych). WASM ma dostęp do pełnej funkcjonalności przeglądarki, za pośrednictwem
języka JavaScript (w tym może wykorzystywać dowolną bibliotekę lub API, która jest
dostępne z poziomu języka JavaScript). Dodatkowo, kod C# może odwoływać się do kodu w
str. 35
JavaScript, jak i kod w JavaScripcie może się odwoływać do kodu w C#. Prekompilowany kod
uruchamianego programu jest wykonywany przez WASM w piaskownicy („sandbox”)
stworzonej na potrzeby języka JavaScript. JavaScript wykorzystywany jest do komunikacji np.
z przeglądarką [10].
Rysunek 4 Uruchamianie kodu Blazor w przeglądarce (źródło: [10])
Odmiennym przypadkiem jest aplikacja działająca na serwerze (sposób działania został
zaimplementowany w niniejszej pracy12). W typ przypadku logika generowania stron jest
oddzielona od ich aktualizacji. Aplikacja jest przechowywana na serwerze z wykorzystaniem
ASP.NET Core, a aktualizacja interfejsu w przeglądarce dokonuję się za pomocą SignalR13.
Tą samą drogą przesyłane są również informacje zwrotne z aplikacji klienckich.
Schematycznie powyższe działanie jest przedstawione na rysunku poniżej:
Rysunek 5 Uruchamianie aplikacji Blazor na serwerze (źródło: [10])
12 Dodatkowym czynnikiem była dostępność wersji serwerowej – oficjalna wersja pojawiła się
we wrześniu 2019 roku. Wersja wykorzystująca WebAssembly pojawiła się zaś dopiero
w kwietniu 2020 roku.13 Biblioteka umożliwiająca przesyłanie asynchronicznych informacji do aplikacji klienckich
oraz z aplikacji na serwer.str. 36
Powodem wybrania szkieletu aplikacyjnego Blazor do stworzenia aplikacji, była przede
wszystkim chęć sprawdzenia, w jakim stopniu jest to produkt dojrzały, nadający się
do tworzenia aplikacji biznesowych. Istotnym czynnikiem była również stosunkowa nowość
szkieletu, a więc możliwość obcowania przy pisaniu z zupełnie nową technologią, która
dopiero jest wprowadzana na rynek. Wiązało się to oczywiście z szeregiem niedogodności
(jak chociażby znikoma liczba pozycji książkowych dotyczących tego zagadnienia, jak również
dopiero tworząca się społeczność użytkowników tego szkieletu).
3.1.4. Razor
Razor jest sposobem opisu dynamicznych stron internetowych, wykorzystujących
języki C# lub VB.NET. W ramach pliku, możliwe jest wykorzystanie instrukcji HTML, jak
również instrukcji pochodzących z wybranego języka programowania, poprzedzonych
znacznikiem ”@” (zamknięcie znacznika nie jest wymagane).
Rysunek 6 Przykładowa strona z wykorzystaniem Razor (źródło: [11])
Zastosowanie zoptymalizowanej składni do generowania źródła strony w języku HTML,
pozwala na uzyskanie minimalnego progu przejścia pomiędzy pisaniem kodu w języku
programowania, a używaniem znaczników HTML. Taki zapis umożliwia również zmniejszenie
wykorzystywanej liczby znaków (np. w porównaniu z ASP.NET Web Forms, gdzie znacznik
ma postać <%= %>) (zobacz: [11] [12]). Stworzone w ten sposób strony bardzo dobrze
współpracują również ze szkieletem aplikacyjnym Blazor.
str. 37
3.1.5. Entity Framework Core
Entity Framework Core (EFC) jest wersją szkieletu aplikacyjnego Entity Framework.
Wersja Core charakteryzuje się otwartym kodem źródłowym, mniejszą wagą,
rozszerzalnością,
jak również jest dostępna na różne platformy systemowe [13]. EFC pośredniczy pomiędzy
bazą danych (jak również innym źródłem danych) a programem, ograniczając ilość
powtarzalnego kodu jaki programista musi napisać, by współpracować z bazą danych w
zakresie zarówno podstawowych, jak i bardziej zaawansowanych zapytań. By pozyskiwać,
dodawać, usuwać
i modyfikować dane w bazie danych wykorzystywany jest język LINQ (Language Integrated
Query) [13]. Zastosowanie tego szkieletu znacząco ułatwia pozyskiwanie danych,
jak i ich dalsze przetwarzanie w programie.
3.2. Architektura i moduły systemuOprogramowanie bazuje na serwerze stron internetowych, z zainstalowanym
oprogramowaniem ASP.NET Core.
Rysunek 7 Środowisko uruchomieniowe dla aplikacji (źródło: [14])
Oprogramowanie ASP.NET Core musi być uruchomione, by Blazor mógł funkcjonować –
zaleca się więc uruchamianie ASP.NET Core przy starcie serwera oraz monitorowanie jego
ciągłego
i niezakłóconego działania za pomocą menadżera procesów. W przypadku serwerów
Linuksowych, najpopularniejszym rozwiązaniem będzie użycie Nginx lub Apache jako reverse
proxy, dla serwerów z Windows jest to Internet Information Service (IIS) lub Windows Service
[15]. Dla funkcjonowania aplikacji niezbędne jest też działanie serwera Microsoft SQL
z zainstalowaną odpowiednią bazą danych. Działającą na serwerze ASP.NET Core aplikacja
str. 38
pobiera odpowiednie dane z bazy danych, generuje lub aktualizuje odpowiednie strony,
a następnie przesyła je (całe strony lub odpowiednie zmiany) do przeglądarki użytkownika,
gdzie są one prezentowane.
str. 39
3.3. Projekt interfejsuProjekt interfejsu został przygotowany w programie Adobe XD14.
Rysunek 8 Ekran logowania (źródło: opracowanie własne)
Rysunek 9 Ekran tworzenia konta (źródło: opracowanie własne)
14 Program do prototypowania aplikacji mobilnych oraz serwisów WWW Adobe Xd
https://www.adobe.com/products/xd.htmlstr. 40
Rysunek 10 Utwórz hasło po jego zresetowaniu (źródło: opracowanie własne)
Rysunek 11 Resetuj hasło (źródło: opracowanie własne)
str. 41
Rysunek 12 Przypomnij hasło (źródło: opracowanie własne)
Rysunek 13 Resetuj hasło potwierdzenie (źródło: opracowanie własne)
str. 42
Rysunek 14 Ekran startowy – student (źródło: opracowanie własne)
Rysunek 15 Ekran pracownika (źródło: opracowanie własne)
str. 43
Rysunek 16 Ekran kierownika (źródło: opracowanie własne)
Rysunek 17 Wiadomości odebrane i wysłane (źródło: opracowanie własne)
str. 44
Rysunek 18 Napisz wiadomość (źródło: opracowanie własne)
Rysunek 19 Napisz wiadomość – wyślij (źródło: opracowanie własne)
str. 45
Rysunek 20 Napisz wiadomość – anuluj (źródło: opracowanie własne)
Rysunek 21 Napisz wiadomość - potwierdzenie wysłania wiadomości (źródło: opracowanie własne)
str. 46
Rysunek 22 Czytaj-odpisz na wiadomość (źródło: opracowanie własne)
Rysunek 23 Czytaj-odpisz na wiadomość – wyślij (źródło: opracowanie własne)
str. 47
Rysunek 24 Wyświetl sylabus (źródło: opracowanie własne)
Rysunek 25 Pokaż wydarzenie (źródło: opracowanie własne)
str. 48
Rysunek 26 Wstaw oceny (źródło: opracowanie własne)
Rysunek 27 Zatwierdź wpisane oceny (źródło: opracowanie własne)
str. 49
Rysunek 28 Sprawdź frekwencję (źródło: opracowanie własne)
Rysunek 29 Sprawdź frekwencję – potwierdzenie (źródło: opracowanie własne)
str. 50
Rysunek 30 Dodaj temat zajęć (źródło: opracowanie własne)
Rysunek 31 Repozytorium (źródło: opracowanie własne)
str. 51
Rysunek 32 Panel administracyjny (źródło: opracowanie własne)
Rysunek 33 Nadaj uprawnienia (źródło: opracowanie własne)
str. 52
Rysunek 34 Kontrola ocen (źródło: opracowanie własne)
Rysunek 35 Kontrola kompletności (źródło: opracowanie własne)
str. 53
Rysunek 36 Kontrola frekwencji (źródło: opracowanie własne)
Rysunek 37 Ekran szczegółów – widok prowadzącego (źródło: opracowanie własne)
str. 54
Rysunek 38 Ekran szczegółów – widok prowadzącego – pojedynczy student (źródło: opracowanie własne)
Rysunek 39 Ekran szczegółów – widok prowadzącego – pojedyncze zajęcia (źródło: opracowanie własne)
str. 55
Rysunek 40 Ekran szczegółów – student (źródło: opracowanie własne)
Rysunek 41 Edytuj zajęcia (źródło: opracowanie własne)
str. 56
Rysunek 42 Dodaj wydarzenie (źródło: opracowanie własne)
Rysunek 43 Dodaj uczestników do zajęć (źródło: opracowanie własne)
str. 57
Rysunek 44 Dodaj nowe zajęcia (źródło: opracowanie własne)
3.4. Wymagania sprzętoweProgram do poprawnego funkcjonowania wymaga serwera z zainstalowanym
środowiskiem ASP.NET Core i Internet Information Services (IIS). Minimalną wymaganą
wersją systemu operacyjnego jest Windows 7, w przypadku systemów serwerowych jest to
Windows Server 2012 R2 lub nowsza wersja [16]. Wymagania sprzętowe zależą od wersji
zainstalowanego systemu operacyjnego:
Windows 7 lub nowszy [17] Windows Server 2012 R2 lub
nowszy [18]
Procesor 1 GHz 32/64-bit 1,4 GHz, 64-bit
Pamięć 1 GB (32-bit) lub 2 GB (64-bit) 512MB
Dysk twardy 16 GB (32-bit) lub 20 GB (64-bit) 32GB
Sieć - Ethernet minimum 10Mb/s
Pamięć masowa - Napęd DVD15
Rozdzielczość
ekranu
- 1024x768
Karta graficzna Wspierająca DirectX9 wraz z WDDM -
15 Jeżeli jest wykorzystywany do instalacji.str. 58
Windows 7 lub nowszy [17] Windows Server 2012 R2 lub
nowszy [18]
1.0 lub nowsza
Dodatkowe
elementy
- mysz i klawiatura
Tabela 1 Minimalne wymagania sprzętowe dla instalacji ASP.NET Core z IIS (źródło: opracowanie własne na podstawie [17] i [18])
Do prawidłowego działania oprogramowanie potrzebuje również serwera SQL w wersji 2019.
W tym przypadku wymagania sprzętowo-systemowe prezentują się następująco (przyjęto
założenie, że komputer spełnia minimalne wymagania dla zainstalowanego systemu
operacyjnego) [19]:
System operacyjny Windows 10 TH1 1507 lub
Windows Server 2016 lub nowsze
Procesor x64: AMD Opteron, AMD Athlon 64, Intel
Xeon ze wsparciem dla Intel EM64T, Intel
Pentium IV ze wsparciem dla EM64T
Minimalna prędkość procesora 1,4 GHz
Pamięć Minimum 1 GB
Dysk twardy > 8GB dostępnej powierzchni dyskowej
(przy pełnej instalacji) + rozmiar używanej
bazy danych
Pamięć masowa Napęd DVD (przy instalacji z płyty)
Rozdzielczość ekranu 800x600 lub wyższa
Tabela 2 Minimalne wymagania sprzętowe dla SQL Server 2019
Przedstawione powyżej wymagania sprzętowe dotyczą zachowania minimalnej
funkcjonalności instalowanej aplikacji. Pomimo dużej wydajności systemu (jak widać z analiz
zaprezentowanych w [20]), dla efektywnego użytkowania, powinno się korzystać z systemów
przekraczających minimalne przewidziane wymagania. Ze względu na charakter aplikacji,
zakładający dostęp sieciowy, wymagane jest również posiadanie sprawnie działającego łącza
sieciowego, o przepustowości odpowiadającej przewidywanemu ruchowi (ze względu
na przesyłanie minimalnych ilości danych pomiędzy serwerem a przeglądarką na komputerze
klienta (z wyłączeniem pierwszego uruchomienia), łącze powinno przede wszystkim
str. 59
zapewnić sprawną obsługę danej ilości użytkowników – zakładając 20 jednoczesnych
logowań
(w każdym przypadku pierwsze uruchomienie) oraz przyjmując 2 MB danych do pobrania,
obsługa takiej ilości danych przy prędkości łącza 2 Mbit/s powinna zająć około 3 minut. Może
to być jednak wielkość nieakceptowalna dla większości użytkowników. Przy pięciokrotnie
szybszym łączu czas oczekiwania spada do około 40 sekund. Warto tutaj zwrócić uwagę,
że rozważany przypadek jest skrajnie negatywny – jednoczesne logowanie dużej grupy
użytkowników, którzy po raz pierwszy wchodzą w interakcję z aplikacją. W przypadku
regularnego użytkowania, ilość pobieranych i transmitowanych danych jest znacznie
mniejsza (<100 KB) co znacząco wpływa na poziom wysycenia łącza i jego niezbędną
prędkość.
str. 60
Rozdział 4. Dokumentacja dla użytkownika
4.1. Instrukcja instalacjiProgram dostarczany jest w postaci kodu źródłowego wraz z przykładową bazą danych.
W celu uruchomienia programu należy otworzyć kod źródłowy w programie Microsoft Visual
Studio Community Edition (wersja 16.6.5. lub późniejsza). W katalogu „Baza” znajduje się
kopia zapasowa przykładowej bazy danych, niezbędna do uruchomienia programu.
Jest to kopia pełna. Po odtworzeniu kopii bazy danych w programie Microsoft SQL Server,
przy włączonym serwerze bazodanowym, baza jest gotowa do użycia. Do poprawnego
działania programu niezbędne jest również zmodyfikowanie „ConnectionStrings” z pliku
appsettings.json znajdującego się w głównym katalogu programu. By uzyskać niezbędną
wartość, z programu Visual Studio należy wybrać View -> SQL Server Object Explorer
(alternatywnie CTRL+\, CTRL+S), a następnie w nowym oknie kliknąć prawym klawiszem
myszy na serwer, na którym została odtworzona przykładowa baza danych. Kolejnym
krokiem jest wybranie opcji Properties, a następnie skopiowanie wartości Connection string z
części General okna SQL Server Instance. Skopiowaną wartość należy wkleić zamiast
odpowiedniej wartości znajdującej się w pliku appsettings.json. Zakładając poprawne
uruchomienie poprzednich kroków, program powinien się poprawnie uruchomić po wydaniu
z poziomu Visual Studio komendy Start without Debugging z menu Debug (alternatywnie
CTRL + F5).
Po uruchomieniu program wyświetli ekran początkowy z informacją o prośbie zalogowania
się do systemu.
4.2. Wskazówki wdrożenioweProgram powinien działać prawidłowo na serwerze wspierającym minimalne wymagania
dla zaistalowania oprogramowania (IIS oraz ASP.NET Core, jak również bazy danych
Microsoft SQL Server). W celu poprawy funkcjonowania programu, wskazane byłoby
zwiększenie mocy procesora oraz wielkości pamięci serwera, na którym oprogramowanie
jest zainstalowane. Wskazane byłoby również zwiększenie prędkości połączenia sieciowego.
W przypadku wykorzystania zewnętrznego serwera bazodanowego, wskazane jest
wykorzystanie możliwie najszybszego łącza pomiędzy serwerem z bazą danych, a serwerem z
str. 61
zainstalowanym programem. Baza danych została wstępnie zoptymalizowana pod kątem
najczęściej wykorzystywanych zapytań do bazy danych.
Zgodnie z dobrymi praktykami [21], założono indeksy na kolumny z kluczami obcymi
w poszczególnych tabelach. Założenie takich indeksów nie ma większego wpływu
na funkcjonowanie przykładowej bazy danych, zawierającej niewiele danych, może mieć
jednak większy wpływ na efektywne funkcjonowanie bazy danych zaimplementowanej
praktycznie, gdzie zakres danych jest znacznie większy. Dokonano również analizy
najczęstszych zapytań generowanych przez program i stworzono indeksy wspierające
wykonywanie takich zapytań. W ostatnim etapie optymalizacji, zasymulowano normalną
pracę bazy danych, zebrano odpowiednie dane i poddano je analizie za pomocą Database
Engine Tunning Advisor. W wyniku jego działania, nie pojawiły się jednak sugestie
co do założenia nowych indeksów.
W trakcie dalszej pracy z systemem, wskazane jest systematyczne monitorowanie stanu bazy
danych, w celu stwierdzenia możliwych nowych optymalizacji w zakresie założenia nowych
lub też modyfikacji istniejących indeksów. Wskazane jest też prowadzenie regularnych kopii
zapasowych bazy danych. Sugerowany harmonogram kopii zapasowych to:
a) Kopia pełna w niedzielę o godzinie 23:30.
b) Kopia przyrostowa codziennie o godzinie 12:00 (lub innej godzinie, kiedy
przewidywane jest stosunkowo niewielkie obciążenie bazy dany – np. w trakcie
przerwy obiadowej)
c) Wykonywanie kopii logów w dniach zajęć co 60 minut między godziną 7:00 a 23:00.
Administrator bazy danych w porozumieniu z prowadzącymi zajęcia powinien również
dokonywać systematycznego (raz w roku) usuwania kursów archiwalnych (po uprzednim
zarchiwizowaniu danych z bazy danych zgodnie z obowiązującymi w danym czasie przepisami
i przyjętymi regulacjami wewnętrznymi).
Przy pisaniu programu podjęto decyzję o zachowaniu domyślnej formy logowania
i rejestrowania użytkownika. W przypadku implementacji programu w konkretnym
środowisku, znajdują się w nim z reguły zintegrowane metody logowania się
do wykorzystywanych programów. Dzięki zachowaniu domyślnych ekranów, wprowadzenie
ewentualnych modyfikacji nie wymaga znaczących nakładów czasowych, a jednocześnie
str. 62
umożliwia sprawne i zunifikowane wizualnie zintegrowanie z pozostałymi systemami
funkcjonującymi w ramach danej instytucji.
4.3. Instrukcje obsługi
4.3.1.Ekran startowy
Po uruchomieniu przeglądarki, użytkownikowi wyświetla się następująca strona:
Rysunek 45 Strona startowa (źródło: opracowanie własne)
Użytkownik ma dwie możliwości:
a) może się zarejestrować, klikając Register
str. 63
Rysunek 46 Ekran zakładania konta (źródło: opracowanie własne)
Po założeniu konta użytkownik zostaje przeniesiony na stronę logowania, gdzie może się
zalogować.
b) może się zalogować, klikając „Log in”
Rysunek 47 Ekran logowania (źródło: opracowanie własne)
str. 64
W systemie domyślnie ustawione są cztery konta, na które można się zalogować. Każde z
nich posiada inne uprawnienia użytkownika
a. konto administratora – login [email protected]
b. konto kierownika – login [email protected]
c. konto prowadzącego zajęcia – login [email protected]
d. konto studenta – login [email protected]
Konto administratora ma największe uprawnienia i może korzystać z wszystkich funkcji
programu, pozostałe konta mają odpowiednio niższe uprawnienia i ograniczony zakres
funkcjonalności. Dla wszystkich powyższych kont hasło do logowania to: ZAQ!2wsx .
4.3.1. Ekran główny
Po zalogowaniu się ukazuje się ekran główny, który jest różny dla każdego z typów
użytkowników. Cechą wspólną pozostaje menu z lewej strony ekranu, oraz informacja
o koncie, na które jesteśmy zalogowani i link do wylogowania się w prawym górnym rogu
ekranu. Poniżej zostaną omówione ekrany główne dla poszczególnych typów kont:
a) konto administratora
Konto administratora posiada jeden dodatkowy ekran – po zalogowaniu, przed
ukazaniem się konta głównego, możemy wybrać z listy rozwijalnej dla jakiego
użytkownika chcemy zobaczyć główny ekran.
str. 65
Rysunek 48 Ekran wyboru użytkownika – administrator (źródło: opracowanie własne)
Po wybraniu użytkownika, ukazuje się ekran główny, charakterystyczny dla danego
typu użytkownika. Po wybraniu konta należącego do administratora na ekranie głównym
nie są wyświetlane szczegółowe informacje, gdyż administrator nie może jednocześnie
pełnić innych funkcji w systemie.
Rysunek 49 Ekran główny – konto administratora, widok dla kierownika
str. 66
Na ekranie widać również rozwiniętą listę rozwijalną z dostępnymi dla kierownika funkcjami
dla danych zajęć. Zostaną one szczegółowo omówione w trakcie omawiania ekranu
kierownika. Szczegółowy opis tabeli dla poszczególnych użytkowników zostanie
przedstawiony podczas opisywanie ich ekranów głównych poniżej.
Z lewej strony ekranu znajduje się menu dotyczące możliwej funkcjonalności. W przypadku
administratora dostępne są tutaj wszystkie opcje, w przypadku innych użytkowników ilość
opcji została ograniczona.
Rysunek 50 Lista pozycji menu (źródło: opracowanie własne)
W przypadku administratora mamy do dyspozycji następujące opcje:
1) Home – powrót do strony startowej
2) Messages – wiadomości
3) Syllabus – podgląd sylabusa do dowolnego przedmiotu
4) Repository – materiały dla wybranego kursu, wgrywane przez poszczególnych
prowadzących dany kurs
5) Control Menu – menu zawierające elementy kontrolne, zawiera następujące
podmenu:
a. Single Subject – informacje dotyczące pojedynczych zajęć w ramach
wybranego kursu
str. 67
b. Single Student – informacje dotyczące pojedynczego studenta w ramach
wybranego kursu
c. Single Class – informacje dotyczące danej grupy w ramach wybranego kursu
d. Control – funkcja kontrolna umożliwiająca wygenerowanie określonych funkcji
kontrolnych dotyczących wybranego nauczyciela, kursu, grupy i zajęć
6) Add – menu zawierają funkcje dodawania elementów do systemu (np. kursy, grupy,
studenci w grupach, dyżury nauczycieli), zawiera następujące podmenu:
a. Add New Course – dodawanie nowego kursu
b. Add New Group – dodawanie nowej grupy
c. Add Students to Group – dodawanie studentów do wybranej grupy
d. Duty Hours – dodawanie terminu dyżurów dla wybranego nauczyciela
7) Class Menu – menu związane z prowadzeniem zajęć i najczęstszymi działaniami
wtedy podejmowanymi, zawiera następujące podmenu:
a. Add Subject – dodawanie tematu zajęć
b. Check Attendance – dodawanie frekwencji
c. Add Grades – dodawanie ocen
d. Add New Event – dodawanie nowego wydarzenia
e. Edit Group – edytowanie informacji o wybranym kursie danego nauczyciela
8) Administration Menu – menu z funkcjami administracyjnymi, zawiera następujące
podmenu:
a. Administrative Panel – menu z funkcjami administracyjnymi
b. Assign Role – przypisywanie roli dla poszczególnych użytkowników
c. Change Password – zmiana hasła
d. Settings – dodatkowe ustawienia
Powyżej wymienione opcje przedstawiają pełną dostępną funkcjonalność.
W przypadku użytkowników wymienionych poniżej, nie wszystkie z wyżej wymienionych
opcji są dostępne.
b) konto kierownika
Po zalogowaniu przechodzimy od razu na ekran główny.
str. 68
Rysunek 51 Ekran główny – widok kierownika (źródło: opracowanie własne)
Kierownik, podobnie jak administrator, ma możliwość wyświetlenia ekranu dla innego
użytkownika. Odbywa się to poprzez wybranie innego użytkownika z listy wybieralnej Select
Different User to Show i kliknięciu OK, po czym następuje przeładowanie ekranu.
Na głównym ekranie wyświetlona jest tabela z następującymi kolumnami:
1) Course – nazwa kursu (po najechaniu kursorem pojawia się pełna nazwa kursu)
2) Role – rola użytkownika w kursie (po najechaniu kursorem pojawia się pełna nazwa
roli) – dostępne możliwości to:
a. CS (Course Supervisor) – osoba nadzorująca kurs
b. T (Teacher) – nauczyciel
c. S (Student) – student
3) Group – grupa, dla której prowadzony jest dany kurs
4) Attendance – frekwencja na kursie, uwzględniająca wszystkie zajęcia, jakie się odbyły
5) Next Class – najbliższe zajęcia (jeżeli nie ma najbliższych zajęć, wyświetlana jest data
ostatnich zajęć)
6) Event – czy zaplanowano jakieś wydarzenie na najbliższe zajęcia, których data
znajduje się w kolumnie Next Class
7) Unread messages – czy w ramach grupy znajdują się jakieś nieprzeczytane
wiadomości (nieprzeczytane wiadomości/wszystkie wiadomości)
str. 69
8) Details – menu rozwijalne, zawierające następujące opcje
a. Check Attendance – sprawdź frekwencję na wybranych zajęciach
b. Add Subject – dodaj temat na wybranych zajęciach
c. Add Marks – dodaj oceny na wybranych zajęciach
d. Read Messages – przeczytaj wiadomości na wybranych zajęciach
e. Add Event – dodaj wydarzenie na wybranych zajęciach
f. Details – widok szczegółowy o wybranych zajęciach (odpowiednik widoku
Single Subject opisywanego później)
Po prawej stronie ekranu znajduje się tabela z zadaniami do wykonania (Next Tasks). W
tabeli znajdują się następujące kolumny:
1) Course – nazwa kursu (po najechaniu kursorem pojawia się pełna nazwa kursu)
2) Role – rola użytkownika w kursie (po najechaniu kursorem pojawia się pełna nazwa
roli)
3) Event type – typ wydarzenia
4) Date – data, kiedy dane wydarzenie ma być zrealizowane (np. data kolokwium, pracy
grupowej, oddania pracy domowej itp.)
5) Subject – temat danego wydarzenia.
Poniżej tabeli znajdują się dwa przyciski:
1) Go to Repository – przejście do repozytorium z materiałami wgrywanymi przez
nauczycieli
2) Add New Course – dodanie nowego kursu
c) konto prowadzącego zajęcia
Dla konta prowadzącego zajęcia bezpośrednio po zalogowaniu wyświetla się ekran
główny:
str. 70
Rysunek 52 Ekran główny – widok nauczyciela (źródło: opracowanie własne)
Dla nauczyciela, widok ekranu głównego odpowiada widokowi kierownika (z wyjątkiem
braku możliwości uzyskania widoku innego nauczyciela oraz brakiem możliwości dodawania
nowego kursu), a więc nie będzie ponownie opisywany.
d) konto studenta
Po zalogowaniu się na konto wyświetla się ekran główny, opis kolumn w tabelach jest
zgodny z tym przedstawionym w przypadku kierownika. Konto studenta ma najbardziej
ograniczony dostęp do opcji systemu, a więc zmianie uległo menu po lewej stronie, jak
i ostatnia kolumna w pierwszej tabeli. Brakuje również przycisków pod prawą tabelą.
W głównej tabeli student ma do dyspozycji jedynie opcję „Details” (Szczegóły), która
przenosi nas do ekranu, pokazującego osiągnięcia studenta w ramach danego kursu
(ekran „Single Course Data” – odpowiednik ekranu „Single Student” dla pozostałych
użytkowników systemu)
str. 71
Rysunek 53 Ekran główny – widok studenta (źródło: opracowanie własne)
4.3.2. Wiadomości (Messages)
Po kliknięciu w opcję Messages (wiadomości) pojawiają się tabele odpowiednio z
odebranymi (Messages Received) i wysłanymi (Messages Sent) wiadomościami. W przypadku
braku wiadomości, pojawia się informacja o braku wiadomości. Poniżej tabeli znajdują się
dwa przyciski, umożliwiające wysłanie nowej wiadomości lub powrót do głównego ekranu.
str. 72
Rysunek 54 Ekran wiadomości (Messages) (źródło: opracowanie własne)
Poszczególne kolumny tabel oznaczają:
a) Subject – temat wiadomości (po najechaniu kursorem, pojawia się podgląd treści
wiadomości)
b) Author (lub Addressee w przypadku wysłanych wiadomości) – odpowiednio autor lub
adresat wiadomości
c) Course Name – kurs, którego dotyczy dana wiadomość (po najechaniu kursorem
pojawia się pełna nazwa kursu)
d) Date Sent – data wysłania wiadomości
e) Is Read? – czy wiadomość została odczytana
f) Date Read – kiedy dana wiadomość została odczytana (podgląd treści wiadomości
z punktu a) nie powoduje oznaczenia wiadomości jako przeczytanej).
W przypadku wiadomości odebranych, po kliknięciu na temat wiadomości, pojawia się okno
umożliwiające zapoznanie się z treścią wiadomości oraz odpowiedź na nią.
str. 73
Rysunek 55 Czytanie wiadomości (źródło: opracowanie własne)
Po wybraniu opcji Reply, pojawia się nowe ekran, z widokiem otrzymanej wiadomości oraz
z miejscem na napisanie odpowiedzi.
Rysunek 56 Odpisywanie na wiadomość (źródło: opracowanie własne)
Górna część ekranu przedstawia wiadomość, na którą odpisujemy, w dolnej części ekranu
znajduje się miejsce na napisanie odpowiedzi. Poniżej znajdują się trzy przyciski,
str. 74
umożliwiające powrót do strony głównej („Back”), anulowanie pisania wiadomości
(„Cancel”) oraz wysłanie wiadomości („Send”).
4.3.3. Sylabus (Syllabus)
Po wybraniu opcji „Syllabus” pojawia się ekran wyboru kursu, dla którego ma być
wyświetlony sylabus. Wybór zatwierdzamy kliknięciem przycisku „OK”, przycisk „Back”
przenosi nas
z powrotem do strony głównej, a przycisk „Cancel” anuluje dokonany wybór.
Rysunek 57 Sylabus – ekran wyboru kursu (źródło: opracowanie własne)
Po wybraniu kursu zostaje wyświetlony podgląd sylabusa (jeżeli sylabus został załączony
do kursu). W przeciwnym przypadku zostaje wyświetlony komunikat, że dla danego kursu nie
ma załączonego sylabusa. W obu przypadkach, poniżej znajdują się dwa przyciski: „Back”,
który przenosi użytkownika do strony głównej, i „Select Another Syllabus”, który umożliwia
ponowne wybranie innego kursu do wyświetlenia sylabusa.
str. 75
Rysunek 58 Ekran sylabusa – wyświetlony przykładowy sylabus (źródło: opracowanie własne)
4.3.4. Magazyn (Repository)
Magazyn („Repository”) służy do wymiany plików pomiędzy nauczycielami. Po wybraniu opcji
pojawia się ekran, gdzie możemy wybrać kurs, dla którego chcemy uzyskać lub wgrać
materiały.
str. 76
Rysunek 59 Ekran wyboru kursu – Repository (źródło: opracowanie własne)
Po wybraniu kursu pojawia się ekran, na którym pokazane są pliki przesłane dla danego
kursu, ich tytuły oraz osoby, które je wgrały, jak również przycisk „Download”, umożliwiający
pobranie wybranych materiałów.
Rysunek 60 Wyświetlanie plików z magazynu (źródło: opracowanie własne)
str. 77
Pod tabelą widnieje również opcja umożliwiająca wybranie i wgranie pliku z dysku.
Po wybraniu pliku możliwe jest również nadanie mu nazwy, która będzie się pojawiała w
tabeli. Jeżeli dodawanie pliku zostało zakończone z sukcesem, zostanie wyświetlony
stosowny komunikat.
4.3.5. Pojedyncze zajęcia (Single Subject)
Opcja menu “Control Menu” Single Subject (pojedyncze zajęcia), umożliwia pozyskanie
informacji o pojedynczych zajęciach. Na pierwszym ekranie możemy dokonać wyboru kursu,
grupy dla której są prowadzone zajęcia oraz daty zajęć, o których chcemy uzyskać
szczegółowe informacje.
Rysunek 61 Wybór zajęć – ekran Single Subject (źródło: opracowanie własne)
Na ekranie wyświetlane są podstawowe informacje o prowadzącym, jak również data zajęć
(„Class Date”), temat zajęć („Subject”).
str. 78
Rysunek 62 Opis pojedynczych zajęć – Single Subject (źródło: opracowanie własne)
W tabeli znajdują się informację o studentach uczęszczających na zajęcia (imię i nazwisko,
numer studenta, obecność na danych zajęciach, oceny oraz ich średnia (z wszystkich zajęć
w ramach danego kursu). Po wybraniu przycisku „Details” uzyskujemy informacje o wynikach
wybranego studenta w ramach danego kursu (na wszystkich zajęciach). Poniżej tabeli
znajdują się przyciski umożliwiające wyświetlenie informacji o całym kursie („All Classes” –
które przenoszą nas na widok „Single Class”), przyciski „Previous…” lub „Next Class”
przenoszą
do odpowiednio poprzednich i następnych zajęć (zgodnie z harmonogramem i o ile istnieją
poprzednie lub następne zajęcia). Przycisk „Messages” umożliwia przejście do wiadomości,
a przycisk „Back” przenosi nas na ekran główny aplikacji.
str. 79
4.3.6. Pojedynczy student (Single Student)
Wybranie opcji „Single Student” (pojedynczy student) umożliwia uzyskanie informacji o tej
osobie. Na pierwszym ekranie wybieramy studenta, a następnie kurs, w którym dany student
uczestniczy:
Rysunek 63 Wybór studenta i kursu – Single Student (źródło: opracowanie własne)
Po wybraniu studenta i kursu, pojawia się szczegółowa informacja o prowadzącym kurs oraz
o studencie (imię i nazwisko, numer studenta, oceny). W tabeli wymienione są zajęcia, jakie
się odbyły w ramach danego kursu, ich daty, czy student był na nich obecny.
str. 80
Rysunek 64 Widok pojedynczy student – Single Student (źródło: opracowanie własne)
Przycisk „Details” umożliwia uzyskanie szczegółowych informacji o danych zajęciach
(odpowiednik opcji z menu „Single Subject”). Przyciski poniżej tabeli umożliwiają przejście do
wyświetlania sylabusa („Syllabus”), wyświetlenie zadań do wykonania dla danego
użytkownika („Events”), przejście do wiadomości („Messages”) lub powrót do ekranu
głównego („Back”).
str. 81
4.3.7. Pojedynczy kurs (Single Class)
Wybranie opcji „Single Class” (pojedynczy kurs) umożliwia wyświetlenie danych o wybranym
kursie. Na pierwszym ekranie wybieramy kurs i grupę, o której chcemy uzyskać informację.
Rysunek 65 Wybór kursu i grupy – Single Class (źródło: opracowanie własne)
Po wybraniu kursu i grupy wyświetlone zostają podstawowe informacje o osobie
prowadzącej dany kurs oraz średni wynik wszystkich studentów w ramach danego kursu
prowadzonego przez określonego wykładowcę.
str. 82
Rysunek 66 Informacje o kursie – Single Class (źródło: opracowanie własne)
W tabeli pokazane są informacje o temacie zajęć, ich dacie, ilości osób obecnych i wszystkich
zapisanych na dany kurs, czy na dane zajęcia było zaplanowane jakieś wydarzenie. Przycisk
„Details” umożliwia uzyskanie szczegółowych informacji o wybranych zajęciach
(odpowiednik przycisku „Single Subject” z menu). Przyciski pod tabelą umożliwiają przejście
do sylabusa („Syllabus”), zadań do wykonania („Events”), wiadomości („Messages”) albo
ekranu głównego („Back”).
str. 83
4.3.8. Kontrola (Control)
Wybranie opcji „Control” umożliwia uruchomienie kontroli wybranego nauczyciela.
Na pierwszym ekranie dokonujemy wyboru nauczyciela, kursu, grupy oraz typu raportu (lub
uruchomienie wszystkich). Dostępne typy raportów to:
1) All Reports (umożliwia uruchomienie wszystkich raportów na raz)
2) Grading (informacje dotyczące oceniania)
3) Attendance (informacje dotyczące frekwencji)
4) Completeness (informacje dotyczące kompletności danych)
Rysunek 67 Wybór raportu – Control (źródło: opracowanie własne)
Po wybraniu przycisku „Generate Report”, wybrany typ raportu zostanie wygenerowany.
W przypadku każdego z raportów otrzymujemy informacje dotyczące kursu, nauczyciela oraz
grupy (po najechaniu kursorem – skrót zostaje rozwinięty w podpowiedzi).
str. 84
Rysunek 68 Raport kontrolny – wszystkie raporty (źródło: opracowanie własne)
W przypadku raportu dotyczącego ocen, dostajemy dodatkowo informacje dotyczące ilości
wystawionych ocen („Number of Marks”), średniej ocen („Average Mark”), oraz ilości ocen
w poszczególnych przedziałach (6; 5+,5,5-; 4+,4, 4-; 3+,3,3-;2).
W przypadku raportu dotyczącego kompletności danych, otrzymujemy informacje o dodaniu
sylabusa („Syllabus”), wyznaczeniu dyżuru („Duty Hours”), podaniu sposobu oceniania
(„Grading”), ilości wystawionych ocen („Grades”), ilości brakujących tematów do
uzupełnienia („Subjects”) oraz brakujących frekwencji do uzupełnienia.
Ostatni raport pokazuje frekwencje na wszystkich zajęciach zrealizowanych dla danej grupy
w ramach danego kursu („Attendance”).
4.3.9. Dodaj nowy kurs (Add New Course)
Polecenie „Add New Course” umożliwia nam dodanie nowego kursu.
str. 85
Rysunek 69 Dodawanie nowego kursu – Add New Course (źródło: opracowanie własne)
Możemy tutaj skorzystać z opcji wstępnego załadowania danych z innego kursu („Add Course
from Existing”), w tym przypadku wystarczy dodać lub zmodyfikować opcje specyficzne
dla nowego kursu. Gdy dodajemy nowy kurs, należy uzupełnić kolejno: katedrę („Faculty”),
typ studiów („Type of Studies”), nazwę kursu („Course Name”), załączyć sylabus („Attach
Syllabus” – o ile dostępny), wskazać koordynatora kursu (kierownika – Select Course
Coordinator). Należy ponadto wskazać sposób oceniania („Grading Type” – dostępne opcje
„Regular” (czyli skala 2-5), „Percentage” (czyli ocena procentowa) oraz „Points” (czyli ocena
za pomocą punktów)), ilość zajęć w semestrze („Classes Per Term”), semestr, w którym
zajęcia się zaczynają („Start Date”), maksymalną liczbę studentów na zajęciach („Maximum
Number of Students”) oraz limit nieobecności na zajęciach („Absence Limit”). Po prawidłowo
dodanym kursie, można przydzielić do niego grupy wybierając przycisk „Assign Student’s
Group”. Przycisk „Back” przenosi nas do ekranu głównego, „Cancel” umożliwia rezygnację
z wpisywanych danych, a „OK” zatwierdza i dodaje kurs.
str. 86
4.3.10. Dodaj nową grupę (Add New Group)
Opcja „Add New Group” umożliwia dodawanie nowych grup studentów oraz przypisywanie
grupy do określonego kursu, prowadzącego oraz ustalenie terminów zajęć.
Rysunek 70 Przypisywanie grupy do kursu – Add New Group (źródło: opracowanie własne)
Po prawej stronie ekranu możemy dodawać nowe grupy studenckie – przycisk „Create
Group”. Nazwa grupy powinna być zgodna z zasadami przyjętymi na danej uczelni. Z lewej
strony możemy połączyć grupę z kursem. W tym celu wybieramy kurs („Select Course”),
następnie wybieramy grupę, dla której dany kurs będzie prowadzony („Select Group”).
Kolejnym etapem jest przydzielenie nauczyciela do prowadzenia zajęć („Select Teacher”).
Należy wskazać też datę początkową zajęć („Choose the date for the first class” –
dopuszczalne wartości to między styczniem a marcem (włącznie) oraz między wrześniem a
grudniem). Należy również wskazać ilość godzin w tygodniu („How many classes (1,5h) per
week?”). Po kliknięciu „OK” pierwsza część danych zostaje zablokowana przed modyfikacją i
przystępujemy do wybrania dni i godzin zajęć.
str. 87
Rysunek 71 Wybór dni i godzin zajęć – Add New Group (źródło: opracowanie własne)
Po wybraniu dnia i godziny dla każdego z zajęć należy kliknąć „OK”, co spowoduje
wyświetlenie dat poszczególnych zajęć w kolejnych tygodniach. Należy wybrać odpowiednie
daty (biorąc pod uwagę np. dni w których zajęcia się nie odbywają)
Rysunek 72 Wybór dni zajęć – Add New Group (źródło: opracowanie własne)
str. 88
Po zaznaczeniu dni, kiedy zajęcia będą się odbywać, wybieramy „Choose classes”,
co spowoduje wyświetlenia podsumowania wybranych dni zajęć oraz innych parametrów.
Rysunek 73 Podsumowanie dodawania grupy – Add New Group (źródło: opracowanie własne)
Jeżeli jesteśmy zadowoleni z wyboru, klikamy „Add Classes”, co spowoduje stworzenie zajęć
dla wybranego kursu, wybranej grupy, wybranego nauczyciela w wybranych terminach.
O pomyślnym dodaniu zajęć użytkownik jest informowany w oddzielnym komunikacie.
W trakcie całej edycji kliknięcie „Cancel” powoduje wyczyszczenie aktualnie wprowadzanych
danych, a wybranie „Back” przejście do ekranu startowego.
4.3.11. Dodaj studentów do grupy (Add Students to Group)
Po wybraniu opcji “Add Students to Group” pojawia się ekran pokazujący dostępne w
systemie grupy wraz z przypisanymi do nich kursami oraz ich licznością:
str. 89
Rysunek 74 Grupy i ich liczności – Add Students to Group (źródło: opracowanie własne) (źródło: opracowanie własne)
Mamy do dyspozycji dwie możliwości dodawania studentów do grupy – poprzez numer
studenta („By Number”) lub poprzez wybór z listy („By Name”).
Rysunek 75 Dodawanie studenta do grupy przez numer – Add Students to Group (źródło: opracowanie własne)
W przypadku dodawania przez numer studenta, w górnej części ekranu mamy obecny skład
grupy, w dolnej części natomiast wpisujemy w pole tekstowe numery studentów, których
str. 90
chcemy dodać do grupy. Numery powinny być rozdzielone średnikiem (zgodnie z instrukcją
widoczną na ekranie). Po wpisaniu wszystkich numerów należy wybrać „Add Students”,
co spowoduje dodanie studentów o podanych numerach do grupy. Przycisk „Cancel” usuwa
dane z uzupełnianego pola, a przycisk „Back” przenosi na ekran dodawania studentów
do grupy.
Rysunek 76 Dodawanie studenta do grupy przez nazwisko – Add Students to Group (źródło: opracowanie własne)
W przypadku wybrania opcji „By Name” ponownie w górnej części ekranu wyświetlają się
studenci, którzy już należą do danej grupy, natomiast w dolnej części mamy listę wszystkich
studentów. Po zaznaczeniu nowych studentów do dodania do danej grupy, wybieramy „Add
Students” i studenci zostają dodani. Przycisk „Cancel” usuwa dotychczasowe zaznaczenia,
a przycisk „Back” przenosi na ekran dodawania studentów do grupy.
str. 91
4.3.12. Dyżur (Duty Hours)
Wybranie opcji „Duty Hours” („Dyżur”) umożliwia dodanie informacji o dyżurach dla danego
prowadzącego zajęcia.
Rysunek 77 Dodawanie dyżuru – Duty Hours (źródło: opracowanie własne)
Na ekranie wybieramy ilość godzin dyżuru tygodniowo (między 1 a 3), a następnie
uzupełniamy lub modyfikujemy dane – dzień tygodnia („Day”), czas rozpoczęcia dyżuru
(„Duty Hour Starts”), czas zakończenia dyżuru („Duty Hour Ends”) oraz pokój („Room”), w
którym dyżur będzie się odbywał. Dodatkowo, można zaznaczyć, czy studenci mają
powiadamiać
o chęci uczestniczenia w dyżurze („Notification before coming to duty hours”), wybrać
preferowany sposób kontaktu ze studentami („Preferred Contact”) oraz przekazać
dodatkowe informacje („Additional Information”). Wybór akceptujemy przyciskiem „OK”,
przycisk „Cancel” usuwa wszystkie wprowadzone informacje, a przycisk „Back” przenosi nas
na ekran startowy.
str. 92
4.3.13. Dodaj temat (Add Subject)
Opcja umożliwia uzupełnienie tematów zajęć. Po jej wybraniu wybieramy kurs oraz grupę,
dla której chcemy uzupełnić tematy.
Rysunek 78 Wybór kursu i grupy – Add Subject (źródło: opracowanie własne)
Po wybraniu kursu i grupy, pojawia się ekran uzupełniania tematów.
Rysunek 79 Uzupełnianie tematów – Add Subject (źródło: opracowanie własne)
str. 93
Na ekranie wpisujemy brakujące tematy (w grupie „Missing Subjects”). Wybór tematu
akceptujemy klikając „OK”. Dodane tematy znajdują się w grupie „Entered Subjects”.
Możemy je edytować poprzez kliknięcie przycisku „Edit” w kolumnie „Action”. Klikając „Add
Attendance” przechodzimy do dodawania frekwencji dla danej grupy i kursu, a wybierając
„Add Grades” możemy uzupełnić oceny.
4.3.14. Sprawdź obecność (Check Attendance)
Wybierając „Check Attendance” możemy sprawdzić listę obecności. W tym celu wybieramy
kurs, grupę oraz zajęcia, dla których chcemy sprawdzić frekwencję.
Rysunek 80 Wybór kursu, grupy i zajęć – Check Attendance (źródło: opracowanie własne)
Po dokonaniu wyboru wybieramy „OK” i możemy przystąpić do dodawania lub edytowania
frekwencji.
str. 94
Rysunek 81 Dodawanie i edycja frekwencji – Check Attendance (źródło: opracowanie własne)
Dla każdego studenta mamy trzy możliwe opcje – „Present” (obecny), „Absent” (nieobecny)
oraz „Excused” (usprawiedliwiony). Możemy dodatkowo ustawić wszystkim studentom
obecność („All Present”) lub nieobecność („All Absent”). Za pomocą przysków możemy
również przejść do dodawania tematu („Add Subject”) lub ocen („Add Grades”). Przycisk
„Back” przenosi nas na ekran startowy, przycisk „Cancel” usuwa wstawiane dane (gdy
modyfikujemy istniejące dane – przywraca pierwotne dane z bazy), a przycisk „OK” zapisuje
podane informacje.
str. 95
4.3.15. Dodaj oceny (Add Grades)
Opcja w menu “Add Grades” umożliwia dodawanie ocen. W pierwszym kroku wybieramy
kurs i grupę, dla której chcemy dodawać oceny.
Rysunek 82 Wybór kursu i grupy – Add Grades (źródło: opracowanie własne)
Po kliknięciu „OK” przechodzimy do ekranu dodawania lub modyfikacji ocen.
Rysunek 83 Dodawanie i modyfikacja ocen – Add Grades (źródło: opracowanie własne)
str. 96
Dla każdego studenta możemy wybrać ocenę cząstkową („Add Grade”) oraz ocenę końcową
(„Final Grade”). Wybranie opcji „Final Grade” blokuje możliwość dodawania ocen
cząstkowych. Wybranie opcji „Edit Grades” umożliwia edycję już wprowadzonych ocen.
Rysunek 84 Edycja wprowadzonych ocen – Add Grades (źródło: opracowanie własne)
Oceny dodajemy poprzez wybranie „OK”. Wybór „Add Attendance” umożliwia dodanie
frekwencji, natomiast „Add Subject” dodanie tematu zajęć. Przycisk „Back” przenosi do
ekranu głównego, natomiast „Cancel” przywraca stan początkowy wprowadzanych danych.
str. 97
4.3.16. Dodaj nowe wydarzenie (Add New Event)
Wybranie opcji „Add New Event” umożliwia dodanie nowego wydarzenia.
Rysunek 85 Dodaj nowe wydarzenie – Add New Event (źródło: opracowanie własne)
Na ekranie wybieramy kolejno kurs („Choose Course”), grupę studencką („Choose Group”),
wpisujemy temat wydarzenia („Subject”), określamy jego typ (np. „Homework”, „Group
work”, „Test” lub „Other”,), dodajemy opis wydarzenia, oraz wybieramy datę, kiedy dane
wydarzenie zostanie zrealizowane. Przycisk „OK” zapisuje dane w bazie danych, przycisk
„Cancel” usuwa wpisane dane, a „Back” przenosi użytkownika na ekran startowy.
str. 98
4.3.17. Edytuj grupę (Edit Group)
Wybranie opcji „Edit Group” umożliwia podanie dodatkowych informacji przez
prowadzącego. Na pierwszym ekranie wybieramy kurs oraz prowadzącego:
Rysunek 86 Wybór kursu i prowadzącego – Edit Group (źródło: opracowanie własne)
Na kolejnym ekranie prowadzący zajęcia może uzupełnić źródło materiałów dla studentów
(„Materials for Students”) oraz przekazać dodatkowe wymagania dotyczące kursu („Course
Requirements”).
str. 99
Rysunek 87 Edytowanie kursu – Edit Group (źródło: opracowanie własne)
Zapisanie danych następuję po kliknięciu „OK”, wprowadzone dane są usunięte po kliknięciu
„Cancel”, a powrót do ekranu głównego następuje po wybraniu „Back”.
str. 100
4.3.18. Panel administracyjny (Administrative Panel)
Opcja panelu administracyjnego umożliwia łatwy dostęp do podstawowych funkcji
administracyjnych – dodawanie nowego kursu, przydzielaniu roli użytkownikowi. Wybranie
odpowiedniego przycisku przenosi użytkownika na odpowiednią stronę realizującą wybraną
przez użytkownika funkcję.
Rysunek 88 Panel administracyjny – Administrative Panel (źródło: opracowanie własne)
str. 101
4.3.19. Przydziel rolę (Assign Role)
Opcja menu „Assign Role” (Przydziel rolę) umożliwia przypisywanie użytkownikowi jednej
z czterech ról dostępnych w systemie: administratora, kierownika, nauczyciela i studenta.
Role mogą być łączone ze sobą i jedna osoba może pełnić kilka ról w systemie – jej
uprawnienia wzrastają wtedy odpowiednio. Chcąc przydzielić lub zmienić rolę, odnajdujemy
lub wyszukujemy właściwego użytkownika, następnie klikamy „Change User Role”. W
nowym okienku widzimy na górze dotychczasowe role użytkownika, poniżej możemy
przydzielić danemu użytkownikowi nowe role, poprzez odpowiednie zaznaczenie pól
wyboru. W ten sam sposób można również odebrać użytkownikowi przypisane role. Zmiany
zatwierdzamy poprzez kliknięcie przycisku „Apply changes!”.
Rysunek 89 Przypisz rolę użytkownikowi – Assign Role (źródło: opracowanie własne)
str. 102
4.3.20. Zmień hasło (Change Password)
Wybranie opcji „Change Password” (zmiana hasła) umożliwia zmianę hasła użytkownika.
W tym celu należy podać dotychczasowe hasło, a następnie dwukrotnie wpisać nowe hasło.
Zmiany zatwierdzamy poprzez kliknięcie przycisku „Update Password”. Użytkownik może
również uzupełnić swój profil („Profile”), uaktualnić swój adres email („Email”), włączyć
uwierzytelnianie dwuskładnikowe („Two-factor authentication”) oraz przeglądać oraz
usuwać dane osobowe przechowywane przez program.
Rysunek 90 Zmień hasło – Change Password (źródło: opracowanie własne)
4.3.21. Ustawienia (Settings)
Opcja „Settings” agreguje dostęp do ustawień użytkownika. Za jej pomocą możemy
edytować swój profil („Edit Profile”), aktualizować swój mail („Edit Email”), zmienić hasło
(„Change Password”), włączyć uwierzytelnianie dwuskładnikowe („Enable two-factor
authentication”), zarządzać danymi osobowymi („Manage Personal Data”). Przycisk „Back”
przenosi użytkownika na ekran główny.
str. 103
Rysunek 91 Ustawienia użytkownika – Settings (źródło: opracowanie własne)
str. 104
Rozdział 5. PodsumowanieW niniejszej pracy starałem się przedstawić dwie rzeczy – system wspomagający pracę
prowadzącego zajęcia na uczelni wyższej, oraz zweryfikować stopień dojrzałości szkieletu
aplikacyjnego Blazor do stworzenia takiego programu. W swojej pracy pokazałem wybrane
etapy tworzenia aplikacji, jak również omówiłem wykorzystywane technologie oraz
wskazówki implementacyjne i sposób użytkowania. Wykonana aplikacja spełnia przyjęte
założenia i może wspomóc pracę nauczyciela na wyższej uczelni. Budowa aplikacji sprzyja jej
rozszerzaniu zgodnie z potrzebami użytkowników, Możliwym kierunkiem rozwoju byłoby na
przykład automatyczne generowanie raportów dla kierownika studiów, informowanie
studentów
o nadchodzących wydarzeniach, wysyłanie informacji o wystawionych ocenach,
czy też monitorowanie i sygnalizowanie możliwości przekroczenia dozwolonej liczby
nieobecności. Oczywistym kierunkiem byłaby też integracja z innymi systemami
funkcjonującymi w ramach uczelni – by uniknąć konieczności np. podwójnego wprowadzania
już posiadanych danych. Budowa aplikacji umożliwia łatwe uzupełnienie jej o takie
możliwości, jak również integrację z obowiązującym na danej uczelni systemem
uwierzytelnienia użytkowników.
Drugim elementem pracy było praktyczne stwierdzenie stopnia dojrzałości szkieletu
aplikacyjnego Blazor do stworzenie projektów biznesowych. Działająca aplikacja, spełniająca
założone funkcje, może być dowodem, że szkielet spełnia swoje zadania. Blazor pozwala
na szybkie tworzenie aplikacji oraz ułatwia tworzenie aplikacji współpracujących z bazą
danych. Jednakże, wykorzystanie nowego szkieletu aplikacyjnego miało również swoje
negatywne strony. Jest to produkt nowy, a więc poza dokumentacją producenta
i pojedynczymi pozycjami książkowymi nie ma o nim zbyt wiele informacji. Tak samo wygląda
sytuacja ze społecznością użytkowników – można znaleźć sporo podstawowych informacji,
lecz bardziej zaawansowane zastosowania są zwykle pomijane. Nowość szkieletu pociąga
za sobą również częste zmiany i modyfikacje (również w podstawowych założeniach),
co powoduje konieczność wprowadzania daleko idących zmian do pisanego programu.
Podsumowując, szkielet aplikacyjny Blazor może znacząco wesprzeć użytkownika
w tworzeniu aplikacji serwerowej, a program wspierający pracę prowadzącego zajęcia
na uczelni wyższej może być tego przykładem.
str. 105
Spis ilustracjiRysunek 1 Diagram związków encji (źródło: opracowanie własne).........................................15
Rysunek 2 Diagram przypadków użycia (źródło: opracowanie własne)..................................32
Rysunek 3 Wykonanie programu napisanego w C# (źródło: [7]).............................................34
Rysunek 4 Uruchamianie kodu Blazor w przeglądarce (źródło: [10])......................................36
Rysunek 5 Uruchamianie aplikacji Blazor na serwerze (źródło: [10])......................................36
Rysunek 6 Przykładowa strona z wykorzystaniem Razor (źródło: [11])...................................37
Rysunek 7 Środowisko uruchomieniowe dla aplikacji (źródło: [14]).......................................38
Rysunek 8 Ekran logowania (źródło: opracowanie własne)....................................................39
Rysunek 9 Ekran tworzenia konta (źródło: opracowanie własne)...........................................39
Rysunek 10 Utwórz hasło po jego zresetowaniu (źródło: opracowanie własne).....................40
Rysunek 11 Resetuj hasło (źródło: opracowanie własne).......................................................40
Rysunek 12 Przypomnij hasło (źródło: opracowanie własne).................................................41
Rysunek 13 Resetuj hasło potwierdzenie (źródło: opracowanie własne)................................41
Rysunek 14 Ekran startowy – student (źródło: opracowanie własne).....................................42
Rysunek 15 Ekran pracownika (źródło: opracowanie własne)................................................42
Rysunek 16 Ekran kierownika (źródło: opracowanie własne).................................................43
Rysunek 17 Wiadomości odebrane i wysłane (źródło: opracowanie własne).........................43
Rysunek 18 Napisz wiadomość (źródło: opracowanie własne)...............................................44
Rysunek 19 Napisz wiadomość – wyślij (źródło: opracowanie własne)...................................44
Rysunek 20 Napisz wiadomość – anuluj (źródło: opracowanie własne)..................................45
Rysunek 21 Napisz wiadomość - potwierdzenie wysłania wiadomości (źródło: opracowanie
własne)....................................................................................................................................45
Rysunek 22 Czytaj-odpisz na wiadomość (źródło: opracowanie własne)................................46
Rysunek 23 Czytaj-odpisz na wiadomość – wyślij (źródło: opracowanie własne)...................46
Rysunek 24 Wyświetl sylabus (źródło: opracowanie własne).................................................47
Rysunek 25 Pokaż wydarzenie (źródło: opracowanie własne)................................................47
Rysunek 26 Wstaw oceny (źródło: opracowanie własne).......................................................48
Rysunek 27 Zatwierdź wpisane oceny (źródło: opracowanie własne)....................................48
Rysunek 28 Sprawdź frekwencję (źródło: opracowanie własne).............................................49
Rysunek 29 Sprawdź frekwencję – potwierdzenie (źródło: opracowanie własne)..................49
str. 106
Rysunek 30 Dodaj temat zajęć (źródło: opracowanie własne)................................................50
Rysunek 31 Repozytorium (źródło: opracowanie własne)......................................................50
Rysunek 32 Panel administracyjny (źródło: opracowanie własne)..........................................51
Rysunek 33 Nadaj uprawnienia (źródło: opracowanie własne)...............................................51
Rysunek 34 Kontrola ocen (źródło: opracowanie własne)......................................................52
Rysunek 35 Kontrola kompletności (źródło: opracowanie własne).........................................52
Rysunek 36 Kontrola frekwencji (źródło: opracowanie własne).............................................53
Rysunek 37 Ekran szczegółów – widok prowadzącego (źródło: opracowanie własne)...........53
Rysunek 38 Ekran szczegółów – widok prowadzącego – pojedynczy student (źródło:
opracowanie własne)..............................................................................................................54
Rysunek 39 Ekran szczegółów – widok prowadzącego – pojedyncze zajęcia (źródło:
opracowanie własne)..............................................................................................................54
Rysunek 40 Ekran szczegółów – student (źródło: opracowanie własne).................................55
Rysunek 41 Edytuj zajęcia (źródło: opracowanie własne).......................................................55
Rysunek 42 Dodaj wydarzenie (źródło: opracowanie własne)................................................56
Rysunek 43 Dodaj uczestników do zajęć (źródło: opracowanie własne).................................56
Rysunek 44 Dodaj nowe zajęcia (źródło: opracowanie własne)..............................................57
Rysunek 45 Strona startowa (źródło: opracowanie własne)...................................................62
Rysunek 46 Ekran zakładania konta (źródło: opracowanie własne)........................................63
Rysunek 47 Ekran logowania (źródło: opracowanie własne)..................................................63
Rysunek 48 Ekran wyboru użytkownika – administrator (źródło: opracowanie własne)........65
Rysunek 49 Ekran główny – konto administratora, widok dla kierownika..............................65
Rysunek 50 Lista pozycji menu (źródło: opracowanie własne)...............................................66
Rysunek 51 Ekran główny – widok kierownika (źródło: opracowanie własne).......................68
Rysunek 52 Ekran główny – widok nauczyciela (źródło: opracowanie własne).......................70
Rysunek 53 Ekran główny – widok studenta (źródło: opracowanie własne)...........................71
Rysunek 54 Ekran wiadomości (Messages) (źródło: opracowanie własne).............................72
Rysunek 55 Czytanie wiadomości (źródło: opracowanie własne)...........................................73
Rysunek 56 Odpisywanie na wiadomość (źródło: opracowanie własne)................................73
Rysunek 57 Sylabus – ekran wyboru kursu (źródło: opracowanie własne).............................74
str. 107
Rysunek 58 Ekran sylabusa – wyświetlony przykładowy sylabus (źródło: opracowanie własne)
................................................................................................................................................ 75
Rysunek 59 Ekran wyboru kursu – Repository (źródło: opracowanie własne)........................76
Rysunek 60 Wyświetlanie plików z magazynu (źródło: opracowanie własne)........................76
Rysunek 61 Wybór zajęć – ekran Single Subject (źródło: opracowanie własne).....................77
Rysunek 62 Opis pojedynczych zajęć – Single Subject (źródło: opracowanie własne)............78
Rysunek 63 Wybór studenta i kursu – Single Student (źródło: opracowanie własne).............79
Rysunek 64 Widok pojedynczy student – Single Student (źródło: opracowanie własne)........80
Rysunek 65 Wybór kursu i grupy – Single Class (źródło: opracowanie własne)......................81
Rysunek 66 Informacje o kursie – Single Class (źródło: opracowanie własne)........................82
Rysunek 67 Wybór raportu – Control (źródło: opracowanie własne).....................................83
Rysunek 68 Raport kontrolny – wszystkie raporty (źródło: opracowanie własne)..................84
Rysunek 69 Dodawanie nowego kursu – Add New Course (źródło: opracowanie własne).....85
Rysunek 70 Przypisywanie grupy do kursu – Add New Group (źródło: opracowanie własne) 86
Rysunek 71 Wybór dni i godzin zajęć – Add New Group (źródło: opracowanie własne).........87
Rysunek 72 Wybór dni zajęć – Add New Group (źródło: opracowanie własne)......................87
Rysunek 73 Podsumowanie dodawania grupy – Add New Group (źródło: opracowanie
własne)....................................................................................................................................88
Rysunek 74 Grupy i ich liczności – Add Students to Group (źródło: opracowanie własne)
(źródło: opracowanie własne).................................................................................................89
Rysunek 75 Dodawanie studenta do grupy przez numer – Add Students to Group (źródło:
opracowanie własne)..............................................................................................................89
Rysunek 76 Dodawanie studenta do grupy przez nazwisko – Add Students to Group (źródło:
opracowanie własne)..............................................................................................................90
Rysunek 77 Dodawanie dyżuru – Duty Hours (źródło: opracowanie własne).........................91
Rysunek 78 Wybór kursu i grupy – Add Subject (źródło: opracowanie własne)......................92
Rysunek 79 Uzupełnianie tematów – Add Subject (źródło: opracowanie własne)..................92
Rysunek 80 Wybór kursu, grupy i zajęć – Check Attendance (źródło: opracowanie własne). .93
Rysunek 81 Dodawanie i edycja frekwencji – Check Attendance (źródło: opracowanie własne)
................................................................................................................................................ 94
Rysunek 82 Wybór kursu i grupy – Add Grades (źródło: opracowanie własne)......................95
str. 108
Rysunek 83 Dodawanie i modyfikacja ocen – Add Grades (źródło: opracowanie własne)......95
Rysunek 84 Edycja wprowadzonych ocen – Add Grades (źródło: opracowanie własne)........96
Rysunek 85 Dodaj nowe wydarzenie – Add New Event (źródło: opracowanie własne)..........97
Rysunek 86 Wybór kursu i prowadzącego – Edit Group (źródło: opracowanie własne).........98
Rysunek 87 Edytowanie kursu – Edit Group (źródło: opracowanie własne)...........................99
Rysunek 88 Panel administracyjny – Administrative Panel (źródło: opracowanie własne)...100
Rysunek 89 Przypisz rolę użytkownikowi – Assign Role (źródło: opracowanie własne)........101
Rysunek 90 Zmień hasło – Change Password (źródło: opracowanie własne)........................102
Rysunek 91 Ustawienia użytkownika – Settings (źródło: opracowanie własne)....................103
str. 109
Bibliografia
[1] WebAssembly, „WebAssembly Roadmap,” [Online]. Available:
https://webassembly.org/roadmap/. [Data uzyskania dostępu: 02 sierpnia 2020].
[2] Microsoft, „Microsoft.AspNetCore.Identity,” Microsoft, 2020. [Online]. Available:
https://docs.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.identity?
view=aspnetcore-3.1. [Data uzyskania dostępu: 18 lipiec 2020].
[3] A. Mkhitaryan, „Why Is C# Among The Most Popular Programming Languages in The
World?,” Medium.com, 13 października 2017. [Online]. Available:
https://medium.com/sololearn/why-is-c-among-the-most-popular-programming-
languages-in-the-world-ccf26824ffcb. [Data uzyskania dostępu: 19 lipca 2020].
[4] E. Dietrich and P. Smacchia, “The history of C#,” Microsoft, 08 kwietnia 2020. [Online].
Available: https://docs.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-version-
history. [Accessed 19 lipca 2020].
[5] Wikipedia, “Microsoft Visual Studio,” 14 lipca 2020. [Online]. Available:
https://en.wikipedia.org/wiki/Microsoft_Visual_Studio. [Accessed 19 lipca 2020].
[6] Microsoft, „A tour of the C# language,” 26 lutego 2020. [Online]. Available:
https://docs.microsoft.com/en-us/dotnet/csharp/tour-of-csharp/. [Data uzyskania
dostępu: 19 lipca 2020].
[7] Microsoft, „Introduction to the C# language and the .NET Framework,” 20 lipca 2015.
[Online]. Available:
https://docs.microsoft.com/en-us/dotnet/csharp/getting-started/introduction-to-the-
csharp-language-and-the-net-framework. [Data uzyskania dostępu: 19 lipca 2020].
[8] R. Anderson, „Introduction to Identity on ASP.NET Core,” 15 lipca 2020. [Online].
Available: https://docs.microsoft.com/en-us/aspnet/core/security/authentication/
identity?view=aspnetcore-3.1&tabs=visual-studio. [Data uzyskania dostępu: 19 lipca
2020].
[9] C. Sainty, „What is Blazor and why is it so exciting?,” 24 marzec 2018. [Online].
Available: https://chrissainty.com/what-is-blazor-and-why-is-it-so-exciting/. [Data
uzyskania dostępu: 12 lipiec 2020].
[10] D. Roth and L. Latham, “Introduction to ASP.NET Core Blazor,” 19 czerwca 2020.
str. 110
[Online]. Available: https://docs.microsoft.com/en-us/aspnet/core/blazor/?
view=aspnetcore-3.1. [Accessed 19 lipca 2020].
[11] R. Anderson i R. Nowak, „Introduction to Razor Pages in ASP.NET Core,” 12 lutego 2020.
[Online]. Available: https://docs.microsoft.com/en-us/aspnet/core/razor-pages/?
view=aspnetcore-3.1&tabs=visual-studio. [Data uzyskania dostępu: 19 lipca 2020].
[12] Wikipedia, „ASP.NET Razor,” 08 kwietnia 2020. [Online]. Available:
https://en.wikipedia.org/wiki/ASP.NET_Razor. [Data uzyskania dostępu: 19 lipca 2020].
[13] R. Miller, „Entity Framework Core,” Microsoft, 27 październik 2016. [Online]. Available:
https://docs.microsoft.com/en-us/ef/core/. [Data uzyskania dostępu: 12 lipiec 2020].
[14] D. Roth, „ASP.NET Core Blazor hosting models,” 19 maja 2020. [Online]. Available:
https://docs.microsoft.com/en-us/aspnet/core/blazor/hosting-models?
view=aspnetcore-3.1#blazor-server. [Data uzyskania dostępu: 19 lipca 2020].
[15] Microsoft, „Host and deploy ASP.NET Core,” 02 lipca 2020. [Online]. Available:
https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/?view=aspnetcore-3.1.
[Data uzyskania dostępu: 19 lipca 2020].
[16] Microsoft, „Host ASP.NET Core on Windows with IIS,” 07 maja 2020. [Online]. Available:
https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/iis/?view=aspnetcore-
3.1. [Data uzyskania dostępu: 25 lipca 2020].
[17] Microsoft, „Windows 7 system requirements,” 12 kwietnia 2017. [Online]. Available:
https://support.microsoft.com/en-us/help/10737/windows-7-system-requirements.
[Data uzyskania dostępu: 25 lipca 2020].
[18] Microsoft, „System Requirements and Installation Information for Windows Server
2012 R2,” 31 sierpnia 2016. [Online]. Available:
https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-
2012-r2-and-2012/dn303418(v=ws.11). [Data uzyskania dostępu: 25 lipca 2020].
[19] Microsoft, „SQL Server 2019: Hardware and software requirements,” 19 lutego 2020.
[Online]. Available: https://docs.microsoft.com/en-us/sql/sql-server/install/hardware-
and-software-requirements-for-installing-sql-server-ver15?view=sql-server-ver15.
[Data uzyskania dostępu: 25 lipca 2020].
[20] L. Latham, R. Stropek i D. Roth, „Host and deploy Blazor Server,” Microsoft, 04 czerwiec
2020. [Online]. Available: https://docs.microsoft.com/en-us/aspnet/core/blazor/host-
str. 111
and-deploy/server?view=aspnetcore-3.1. [Data uzyskania dostępu: 18 lipiec 2020].
[21] Microsoft, „SQL Server Index Architecture and Design Guide,” 19 stycznia 2019.
[Online]. Available: https://docs.microsoft.com/en-us/sql/relational-databases/sql-
server-index-design-guide?view=sql-server-ver15. [Data uzyskania dostępu: 16 sierpnia
2020].
str. 112