Inżynieria Programowania - Lab1
Transkrypt
Inżynieria Programowania - Lab1
Inżynieria Programowania Laboratorium 1 Wprowadzenie do Visual Studio i C# Paweł Paduch [email protected] 08-03-2013 Rozdział 1 Wstęp 1.1 Na początek Pierwsze zajęcia laboratoryjne z Inżynierii Programowania mają charakter wprowadzający. Na początku studenci po otrzymaniu od prowadzącego loginów i haseł zostaną poproszeni o zalogowanie się. Pierwsze logowanie powinno odbywać się pod systemem Windows. W okienku logowania należy zaznaczyć „Zaloguj do: KIN”. Po wprowadzeniu pierwszy raz hasła należy hasło zmienić na swoje indywidualne. Hasło należy zapamiętać (lub nawet zapisać) gdyż indywidualny login i hasło będą używane przez cały semestr. Zalogowani studenci mają swoją przestrzeń na dysku sieciowym Z: tam też proszę zamieszczać swoje prace. 1.2 Uczestnictwo Zajęcia laboratoryjne są obowiązkowe. Każdy student ma obowiązek wpisać się na listę obecności, co będzie potwierdzeniem jego uczestnictwa na zajęciach. Spóźnienie powyżej 15min traktowane jest jako nieobecność. Odrabiać można jedynie nieobecności pisemnie usprawiedliwione (np. zwolnienie lekarskie, pismo urzędowe). Usprawiedliwienie należy okazać niezwłocznie (pierwszy zjazd po okresie nieobecności) i umówić się na termin odróbczy. Usprawiedliwienia typu: „musiałem być w pracy”, „uciekł mi autobus/pociąg/taksówka”, „źle się czułem”, „nie miałem z kim dziecka zostawić” nie będą honorowane. Zgodnie z regulaminem studiów „Nieobecność studenta nawet usprawiedliwiona, na więcej niż 1/3 zajęć, może być podstawą do niezaliczenia tych zajęć.” Kolejne 3 nieobecności będą zgłaszane do dziekana w celu weryfikacji listy studentów. 1.3 Zasady zaliczenia Na każdych zajęciach laboratoryjnych studenci wykonują zadania przedstawione przez prowadzącego. Zadania te są oceniane w skali od 0 do 5 punktów. Po każdych laboratoriach student powinien przesłać sprawozdanie z zajęć. Sposób przekazania i termin ustala prowadzący. Za prawidłowe sprawozdanie student może otrzymać maksymalnie 1 punkt. Podczas zajęć mogą od- 1 bywać się sprawdziany weryfikujące nabytą wiedzę. Ocena ze sprawdzianów to około 50% całkowitej oceny. Dla przykładu przy 6 zajęciach mamy 6*5(zajęcia)+6*1(sprawozdania)+36(sprawdziany)=72pkt. przy 8 zajęciach mieli byśmy punktów 96. Próg zaliczenia to połowa możliwych do uzyskania punktów. W wyjątkowych sytuacjach maksymalna liczba punktów może ulec zmianie (np. niemożność przeprowadzenia zajęć z powodu awarii sprzętu). 1.4 Poprawy Student, który nie uzyskał zaliczenia w trakcie trwania semestru może się o nie ubiegać dwukrotnie w trakcie trwania sesji egzaminacyjnej, w tym raz podczas sesji poprawkowej. Poprawa będzie polegała na napisaniu sprawdzianu (przynajmniej na połowę punktów) oraz wykonaniu części praktycznej. 1.5 Moodle Każdy student powinien mieć założone konto na wydziałowej platformie edukacyjnej http://weaii-moodle.tu.kielce.pl/ Hasła do kursu poda prowadzący. 1.6 zasady korespondencji Zasady korespondencji opisałem pod adresem http://achilles.tu.kielce.pl/Members/ppaduch/ogolne-zasady-korespondencji-mailowej/ Należy przede wszystkim pamiętać o: • prawidłowej konfiguracji programu pocztowego tak aby w polu nadawca widniało imię i nazwisko • zamieszczeniu tematu maila łącznie z podaniem nazwy grupy np. 1ID11A • podaniu treści maila wraz z podpisem 1.7 Sprawozdania Po każdych zajęciach laboratoryjnych należy przesłać sprawozdanie. Czas na oddanie sprawozdania jest do końca poniedziałku, czyli do godziny 23:59:59,99. Sprawozdanie powinno być w formie .odt (plik Open/Libre Office). W sprawozdaniu umieszczamy jedynie fragmenty kodu (nie przekraczające strony). Kod o większej objętości należy wysłać jako osobne załączniki. Sprawozdanie ma być formą dokumentu co zrobione zostało na zajęciach, nie pracą domową. Punkty, które nie zostały wykonane na zajęciach takie też pozostają w sprawozdaniu. 1.8 Prace domowe Jeżeli na kolejne zajęcia jest zadana praca domowa (np. przemyśleć projekt bazy danych, spisać wymagania projektu itp.), należy ją także przesłać na maila zgodnie z zasadami korespondencji najpóźniej do czwartku bezpośrednio poprzedzającego zjazd. 2 1.9 Zasady podczas pisania sprawdzianów Sprawdziany będą przeprowadzane na platformie moodle. Maksymalny czas przeznaczony na sprawdzian zależny będzie od jego zawartości, zwykle kilka minut. Na pytania opisowe należy udzielać odpowiedzi precyzyjnie (sprawdzane są z automatu). Pytania testowe są wielokrotnego wyboru. Nie ma punktów ujemnych. Przed rozpoczęciem testu należy: • wyłączyć i schować telefony komórkowe • usunąć z uszu, szyi czy głowy i schować wszelkiego rodzaju słuchawki (osoby niedosłyszące proszę zgłosić fakt posiadania aparatu słuchowego, na czas testu aparat ten nie będzie potrzebny) • usunąć wszystkie zbędne rzeczy z biurka (portfele, długopisy, kartki, zeszyty, torebki, kalkulatory, napoje, jedzenie, maskotki itp.). • zamknąć lub odłożyć w miejsce niedostępne wszelkie torby i plecaki. Podczas testu nie jest dozwolone: • korzystanie z Internetu (za wyjątkiem strony moodle) • korzystanie z innych aplikacji niż przeglądarka internetowa (np. komunikatory, terminale, programy LibreOffice, kalkulatory itp.) • korzystanie z telefonów komórkowych • korzystanie z kalkulatorów • używanie pamięci przenośnych • używanie rejestratorów dźwiękowych jak i wizyjnych • udostępnianie zasobów komputera swojego lub korzystanie z zasobów innych komputerów • odwracanie się, zerkanie na sąsiedni monitor, rozglądanie lub rozmawianie • używanie ściąg W przypadku naruszenia powyższych zasad lub przejawu innego nieuczciwego zachowania w trakcie sprawdzianu, student może otrzymać ocenę 0 w trybie natychmiastowym bez możliwości poprawy w późniejszym terminie! 1.10 Materiały pomocniczne Do zajęć przydatne mogą być materiały udostępniane przez prowadzących wykłady. Książki związane z tematyką UML. Np. „UML przewodnik użytkownika” autorstwa Booch G., Rumbaugh J., Jacobson I, „Inżynieria systemów informacyjnych” Beynon-Davies P. „Język C# 2010 i platforma .NET“ Andrew Troelsena. 3 Rozdział 2 Uruchomie VS Po zalogowaniu się z menu start odnajdujemy program Microsoft Visual Studio 2010. Przy pierwszym uruchomieniu poproszeni zostaniemy o wybór preferowanego języka, będzie nim C#. Z górnego menu wybieramy: File->New Project. W okienku jak na rysun- Rysunek 2.1: Okienko wybierania nowego projektu ku 2.1 zaznaczamy Visual C#->Windows Windows Form Application. Na dole wpisujemy nazwę projektu Lab1, potwierdzamy OK. Utworzony zostanie prosty formularz bez kontrolek. Już teraz program można skompilować i zobaczyć jak działa Kompilacja i uruchomienie ctrl+F5 lub F5 - w trybie debugowania. Formatka jak i inne kontrolki mają swoje właściwości między innymi nazwa wyświetlana czy nazwa obiektu, rozmiar, kolor, położenie czy akcje wywoływane z chwilą pojawienia się różnych eventów. Właściwości domyślnie znajdziemy z prawej strony. (rys. 2.2. Gdyby okienko było zamknięte, można je włączyć klikając 4 prawym klawiszem myszy i wybierając z menu kontekstowego Properties. Rysunek 2.2: Okienko właściwości We właściwościach formatki zmienimy Text na Laboratorium 1 Name na MainForm. Gdy klikniemy dwukrotnie w formatkę otworzy nam się kod programu z wygenerowaną metodą podpiętą pod event wywoływany podczas ładowania danej formatki MainForm_Load. Tu można umieścić kod wykonywany gdy formatka jest ładowana. Listing 2.1: Form1.cs 1 2 3 4 5 6 7 8 using using using using using using using using System System System System System System System System ; . . . . . . . Collections . Generic ; ComponentModel ; Data ; Drawing ; Linq ; Text ; Windows . Forms ; 9 10 11 12 13 14 namespace L a b 1 { public partial c l a s s MainForm : Form { public MainForm () 5 { 15 InitializeComponent () ; 16 } 17 18 p r i v a t e void MainForm_Load ( o b j e c t sender , { MessageBox . Show ( " Startujemy ! " ) ; } 19 20 21 22 } 23 24 EventArgs e ) } W linii 21 wywołujemy okienko dialogowe z informacją Startujemy. Wracamy do zakładki z projektem formatki ctrl+tab lub klikamy odpowiednią zakładkę na górze ekranu. Teraz dodamy analogiczne okienko podczas zamykania naszej formatki. W tym celu w okienku właściwości formatki przechodzimy do zakładki Events oznaczonej „piorunkiem”. Tam odnajdujemy FormClosing i klikamy dwukrotnie w polu obok. Wygeneruje nam się szkielet funkcji w którym możemy uzupełnić kod wywoływane w momencie zamknięcia. Listing 2.2: Form1.cs modyfikacja 1 2 3 4 p r i v a t e v o i d M a i n F o r m _ F o r m C l o s i n g ( o b j e c t s e n d e r , ←FormClosingEventArgs e ) { M e s s a g e B o x . S h o w ( " Kończymy ! " ) ; } 6 Rozdział 3 Projekt Formatki We właściwościach formatki ustawić Size na 640;480 Z Toolbox->Menus & Toolbars wybieramy MenuStrip i umieszczamy na górze formatki. Z Toolbox>Containers wybieramy TabControl i umieszczamy po środku formatki. Wchodzimy we właściwości TabControl1 i wybieramy Dock (Rys. 3.1) a tam zaznaczamy środkowe pole (Fill). W tym momencie obiekt TabControl1 wypełni całą dostępną przestrzeń w formatce. Odnajdujemy kolekcję TabPages i zmieniamy nazwy zakładek na Tekst i WWW. Dodajemy do TabControll (na pierwszej zakładce) obiekt RichTextBox. Analogicznie ustawiamy jego właściwości tak by wypełnił cały dostępny obszar w pierwszej zakładce. Rysunek 3.1: Wybór zakotwiczenia Na zakładce WWW wstawiamy kolejno elementy TextBox, Button oraz WebBrowser tak jak na rysunku 3.2. Zmieniamy tekst guzika na Idź a jego nazwę na buttonIdz. Można sobie skompilować i uruchomić co jakiś czas aby zobaczyć skutki naszego projektowania. Na uruchomionym programie przejdźmy do zakładki WWW i zmieńmy rozmiar okienka. Widzimy pewne nieprawidłowości w skalowaniu i rozmieszczeniu elementów. Trzeba to zmienić. Anchor okienka tekstowego ustalamy na Top,Left,Right, guzika na Top,Right a przeglądarki na Top,Bottom,Left,Right. Ustalamy w ten sposób, które boki będą rozciągane podczas skalowania okna. Po kliknięciu w puste okienko w górnym menu formatki, możemy wpisać nazwę elementu menu. Wpiszmy tam Plik. Jak widać mamy teraz możliwość dodania kolejnych elementów podmenu Plik albo dodanie kolejnych elementów menu. Dodajmy w podmenu Plik jeszcze Zapisz. Gdy wejdziemy we właściwości plikToolStripMenuItem odszukamy kolekcje DropDownMenuItem możemy ją 7 Rysunek 3.2: Zakładka WWW1 otworzyć do edycji klikając na guziczek z trzema kropkami. Rysunek 3.3: Edytor kolekcji elementów menu Jak widać na rysunku 3.3 można tam też dodać separatory czy pola typu Combo. Dodajmy jeden separator a pod nim jeszcze jedną pozycję Zakończ. 1 Okienko jest celowo pomniejszone aby lepiej zmieściło się w tym dokumencie. 8 Rozdział 4 Obsługa Teraz przejdziemy do oprogramowania zdarzeń. Chcemy aby na pierwszej zakładce tekst można było odczytać dowolny plik tekstowy. Plik ten będzie można także zapisać. Pod pozycję Plik->Otwórz podpinamy kod za pomocą którego tworzymy okno dialogowe otwierania pliku OpenFileDialog. Następnie po wyborze ścieżki podany plik jest ładowany do obiektu richTextBox1. Tak jak na listingu 4.1. Listing 4.1: Otwieranie pliku 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 p r i v a t e v o i d o t w o r z T o o l S t r i p M e n u I t e m _ C l i c k ( o b j e c t s e n d e r , ←EventArgs e ) { O p e n F i l e D i a l o g o f d = new O p e n F i l e D i a l o g ( ) ; // s t w ó r z ←okno d i a l o g o w e o f d . F i l t e r = " Tekstowe ( t x t ) | ∗ . t x t " ; // ustaw f i l t r ←plików i f ( o f d . S h o w D i a l o g ( ) == D i a l o g R e s u l t . O K ) // pokaż okno ←dialogowe { try { r i c h T e x t B o x 1 . L o a d F i l e ( o f d . F i l e N a m e , ←RichTextBoxStreamType . PlainText ) ; } catch ( E x c e p t i o n ex ) { M e s s a g e B o x . S h o w ( " Uuups ! Błąd p o d c z a s ←o t w i e r a n i a p l i k u : " + ex . M e s s a g e ) ; } } } Podobną czynność wykonujemy w celu zapisu. Tym razem wykorzystamy okno dialogowe SaveFileDialog. Widzimy też konstrukcję try catch ponieważ przy operacja odczytu i zapisu często możemy napotkać błędy. W obu listingach możemy też zauważyć, że klasa SaveFileDialog oraz LoadFileDialog posiadają filtr umożliwiający wybór plików z odpowiednim rozszerzeniem. Listing 4.2: Zapis do pliku pliku 1 2 p r i v a t e v o i d z a p i s z T o o l S t r i p M e n u I t e m _ C l i c k ( o b j e c t s e n d e r , ←EventArgs e ) { 9 S a v e F i l e D i a l o g s f d = new S a v e F i l e D i a l o g ( ) ; s f d . F i l t e r = " Tekstowe ( t x t ) | ∗ . t x t " ; // ustaw f i l t r ←plików i f ( s f d . S h o w D i a l o g ( ) == D i a l o g R e s u l t . O K ) // pokaż okno ←dialogowe { try { r i c h T e x t B o x 1 . S a v e F i l e ( s f d . F i l e N a m e , ←RichTextBoxStreamType . PlainText ) ; } catch ( E x c e p t i o n ex ) { M e s s a g e B o x . S h o w ( " Uuups ! Błąd p o d c z a s ←zapisywania p l i k u : " + ex . M e s s a g e ) ; } } 3 4 5 6 7 8 9 10 11 12 13 14 15 16 } Na drugiej zakładce zrobimy prymitywną przeglądarkę stron WWW. Oprogramowujemy kliknięcie guzika Idź tak jak to pokazane w listingu 4.3. Listing 4.3: Wczytanie strony o podanym adresie 1 2 3 4 5 6 7 8 9 10 11 p r i v a t e void buttonIdz_Click ( o b j e c t sender , EventArgs e ) { try { webBrowser1 . Navigate ( textBox1 . Text ) ; } catch ( E x c e p t i o n ex ) { M e s s a g e B o x . S h o w ( " Błąd p r z e g l ą d a r k i : " + e x . M e s s a g e ) ; } } W linii 5 przekazujemy tekst wpisany w textBox1 do metody Navigate obiektu webBrowser1. Jeżeli podany adres istnieje naszym oczą ukaże się podana strona. Do oprogramowania została opcja w menu Zakończ. Przydałoby się dorobić funkcjonalność polegająca na tym, że strona jest otwierana po wciśnięciu klawisza Enter. Można też wprowadzić ograniczenia na rozmiar minimalny formatki. Zaznajomiliśmy się ze środowiskiem Visual Studio C#. Kolejne zadanie należy wykonac samodzielnie. Stworzyć trzecią zakładkę i nazwać ją kalkulator. Na niej umieścić 2 pola typu TextBox, 2 pola typu Label (zwykły napis) oraz 4 guziki. Pola powinny być ułożone w jednej lini w kolejności TB L TB L. Pod nimi guziki. Pola tekstowe będą służyły do wpisania liczb pierwsze pole Label będzie miało 4 teksty w zależności od tego jaki guzik naciśniemy (+,-,*,/). Drugi label będzie miał tekst „=” Guziki będą oznaczone odpowiednio +,-,* i /. Powinny być tak oprogramowane, żeby wykonały operacje jakie na nich widniejąc biorąc jako parametry liczby wpisane w okienka, wpisały do pierwszego Labela rodzaj operacji oraz wpisały wynik do drugiego Labela. Należy też przechwycić wyjątki. 10