Övning Arbeta med klasser

Relevanta dokument
Lösenordsportalen Hosted by UNIT4 For instructions in English, see further down in this document

Övning: Arbeta med Azure Explorer

Övning Dictionary. Övning 1. Steg 1: På din virtuella maskin, starta Visual Studio.

Övning 1: Skapa virtuell maskin för utveckling.

Exceptions (undantag) Murach s: kap 7

Support Manual HoistLocatel Electronic Locks

Lösningsförslag till omtentamen för TDA540 Objektorienterad Programmering

Schenker Privpak AB Telefon VAT Nr. SE Schenker ABs ansvarsbestämmelser, identiska med Box 905 Faxnr Säte: Borås

Övning MS SQL och MVC del 2

Lab 6: ASP.NET 2.0 Providermodellen

Schenker Privpak AB Telefon VAT Nr. SE Schenker ABs ansvarsbestämmelser, identiska med Box 905 Faxnr Säte: Borås

Förutsättningar: Konto på Azure, kontot har fått File Storage tillagt, Azure Powershell version eller senare.

Alla rättigheter till materialet reserverade Easec

Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic

Problem som kan uppkomma vid registrering av ansökan

Att skriva till och läsa från terminalfönstret

Chapter 4: Writing Classes/ Att skriva egna klasser.

Komponenter med COM (och COM+/VC++ 7.0)

Objektorienterad Programmering (OOP) Murach s: kap 12-16

Alla rättigheter till materialet reserverade Easec

Lösningsförslag. Programmeringsmetodik, KV: Java och OOP. 17 januari 2004

Quick Start Guide Snabbguide

Arv Murach s: kap 14

Inledande programmering med C# (1DV402) Ditt första C#-program med Visual Studio

Guide för pdf-formulär

Vad kännetecknar en god klass. Vad kännetecknar en god klass. F12 Nested & Inner Classes

Lathund - Redigera innehåll på Comfort Audios webbplats. 1. Logga in i WordPress Ändra/lägg till användare Lägga till nya sidor...

Räkna med ASP.NET Web Forms

electiaprotect GSM SEQURITY SYSTEM Vesta EZ Home Application SMART SECURITY SYSTEMS! SVENSKA ios Android

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU

FÖRBERED UNDERLAG FÖR BEDÖMNING SÅ HÄR

Beijer Electronics AB 2000, MA00336A,

/* * * Lösningsförslag tentamen DIT950 * Datum * */ /* * -1 - */ För samtliga gäller,se föreläsningsanteckningar.

LUPstudentpapers. Manual Reviewer

Language Integrated Query, LINQ, och databaser

Installation av F13 Bråvalla

OOP. vs procedural programming Design av interaktiv multimedia

Övning: Skapa en ny regel

TDDC74 FÖRELÄSNING 9 ANDERS MÄRAK LEFFLER IDA/HCS

1. Log on to the system using the user ide and password ide. 2. Copy the file /etc/ca-certificates.conf to the home directory of the user.

2.1 Installation of driver using Internet Installation of driver from disk... 3

FactoryCast HMI. Premium & Quantum PLC. MySQL Server och FactoryCast HMI databastjänst

Webbreg öppen: 26/ /

DIAGNOSTISKT PROV. Tid. Hjälpmedel. Antaganden. Rättning. Övrigt. Diagnostiskt Prov. Klockan Inga

Windows Forms Winstrand Development

Laboration 1 Introduktion till Visual Basic 6.0

SI-pass 4. Johan Brook och Jesper Persson. 25 september Diskutera och svara på om påståendena nedan är äkta sanningar eller listiga lögner.


Control Panel Skapa Test

Datorövning 1. int sgd(int m, int n) { int rest; while ( n!= 0 ) { rest = m % n; m = n; n = rest; return m;

Arbeta med databas. Översikt. Lektion 1: Arbeta med Entity Data Models. Arbeta med Entity Data Models. LINQ (Language Integrated Query).

Webbregistrering pa kurs och termin

Föreläsning 3. Stack

GIT L0012B. Implementation av geografiska informationssystem. Information inför kursstart

Recitation 4. 2-D arrays. Exceptions

Tentamen FYTA11 Javaprogrammering

Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Alternativet är iwindows registret som ni hittar under regedit och Windows XP 32 bit.

Tentamen i TDP004 Objektorienterad Programmering Lösningsförslag

Lösningsförslag till tentamen FYTA11 Javaprogrammering


Obligatorisk uppgift 5

BRÖDGRUPPENS HEMSIDA

Påminnelse om inloggningsuppgifter

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Programmering A C# VT Ett kompendie över Programmering A (50p) i c# Stefan Fredriksson

FactoryCast HMI. Premium & Quantum PLC. Applets

Föreläsning 4. ADT Kö Kö JCF Kö implementerad med en cirkulär array Kö implementerad med en länkad lista Läsanvisningar och uppgifter

Lösningar till tentamen i EDAF25

E-posthantering med Novell Groupwise WebAccess

INVEST LIVING WIFI C. Användarmanual ANDROID. Ver. 2

Lathund ringstromsskog.se

Föreläsning 4. ADT Kö Kö JCF Kö implementerad med en cirkulär array Kö implementerad med en länkad lista

Datalogi, grundkurs 1. Lösningsförslag till tentamen

Detta dokument skall ge en kortfattad introduktion till Jasmine installationen vid DSV.

Så här skriver du ditt första program i C++

Föreläsning 3. Stack

Användarhantering Windows 7 I denna laboration kommer vi att skapa nya användare och grupper och titta på hur man hantera dessa.

Datorlaboration 0, Programmering i C++ (EDAF30)

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

Tentamen Programmering fortsättningskurs DIT950

Polymorfi. Objektorienterad och komponentbaserad programmering

Objektorientering - Arv och polymorfi. Eric Elfving Institutionen för datavetenskap

Lycka till! TENTAMEN: Objektorienterade applikationer. Läs detta! 1 (6) Tentamen

Generiska konstruktioner. Kursbokens kapitel 13

Datorlaboration 0, Programmering i C++ (EDA623)

Tillämpad programmering

1 Comparator & Comparable

Lehigh Valley Hospital Schuylkill Portal User Q&A

LULEÅ TEKNISKA UNIVERSITET

TDDC76 - Programmering och Datastrukturer

Michael Q. Jones & Matt B. Pedersen University of Nevada Las Vegas

För att öppna galleriet, ange adressen

Styrteknik: Binära tal, talsystem och koder D3:1

TDDC76 Programmering och datastrukturer

En integration av betalningssystem på hemsida

Denna vecka. Idag. Grafiskt användarsnitt. Vi kommer att se

BILAGA 5 Fi2Utrymmen Bilaga till CAD-kravspecifikation med förvaltningsinformation Version 1.0

Övning vecka 6. public void method2() { //code block C method3(); //code block D }//method2

TDDC76 - Programmering och Datastrukturer

Transkript:

1 Övning Arbeta med klasser Innan övning: öppna webbläsare och skriv in följande URL: https://easec.se/c/modul_7.zip, packa upp arkivet förslagsvis till katalogen C:\Easec. Övning 1: Skapa och ärv från basklassen User Arbetsuppgift 1: Skapa abstrakt basklass User 1. Starta Visual Studio, klicka på File Open Project/Solution. 2. Bläddra till C:\Easec\Modul_7\Exercise 1, klicka på GradesPrototype.sln och sedan på Open. 3. I Visual Studio, klicka på View Task List. 4. I fönstret Task List, dubbelklicka på arbetsuppgift TODO: Exercise 1: Task 1a: Create the User abstract class with common functionality for Teachers and Students. 5. I code editor, klicka I slutet av kommentar, klicka på Enter och skriv in följande: public abstract class User 6. Klicka på slutet av sista kommentar I blocket (innan deklaration för Grade-klass), klicka på Enter. 7. Skriv in följande kod: 8. I fönstret Task List, dubbelklicka på arbetsuppgift TODO: Exercise 1: Task 1b: Add the UserName property to the User class. 9. I code editor, klicka på slutet av kommentar, klicka på Enter och skriv in följande kod:

2 public string UserName get; set; 10. I fönstret Task List, dubbelklicka på arbetsuppgift TODO: Exercise 1: Task 1c: Add the Password property. 11. I code editor, klicka på slutet av kommentar, klicka på Enter och skriv in följande kod: private string _password = Guid.NewGuid().ToString(); // Generate a random password by default public string Password set _password = value; 12. I fönstret Task List, dubbelklicka på arbetsuppgift TODO: Exercise 1: Task 1d: Add the VerifyPassword method to the User class. 13. I code editor, klicka på slutet av kommentar, klicka på Enter och skriv in följande kod: public bool VerifyPassword(string pass) return (String.Compare(pass, _password) == 0); Arbetsuppgift 2: Modifiera klasserna Student och Teacher så dessa ärver från klassen User 1. I fönstret Task List, dubbelklicka på arbetsuppgift TODO: Exercise 1: Task 2a: Inherit from the User class. 2. I code editor, klicka på slutet av kommentar, klicka på Enter och skriv in följande kod, som är markerad med fetstil:

3 public class Student: User, IComparable<Student> 3. I fönstret Task List, dubbelklicka på arbetsuppgift TODO: Exercise 1: Task 2b: Remove the UserName property (now inherited from User) 4. I code editor, ta bort följande kod, under kommentaren: public string UserName get; set; 5. I fönstret Task List, dubbelklicka på arbetsuppgift TODO: Exercise 1: Task 2c: Remove the Password property (now inherited from User) 6. I code editor, ta bort följande kod, under kommentaren: private string _password = Guid.NewGuid().ToString(); // Generate a random password by default public string Password set _password = value; 7. I fönstret Task List, dubbelklicka på arbetsuppgift TODO: Exercise 1: Task 2d Remove the VerifyPassword method (now inherited from User) 8. I code editor, ta bort följande metod, under kommentaren: public bool VerifyPassword(string pass) return (String.Compare(pass, _password) == 0);

4 9. I fönstret Task List, dubbelklicka på arbetsuppgift TODO: Exercise 1: Task 2e: Inherit from the User class 10. I code editor, modifera enligt fet stil: public class Teacher: User 11. I fönstret Task List, dubbelklicka på arbetsuppgift TODO: Exercise 1: Task 2f: Remove the UserName property (now inherited from User) 12. I code editor, ta bort följande programkod, under kommentaren: public string UserName get; set; 13. I fönstret Task List, dubbelklicka på arbetsuppgift TODO: Exercise 1: Task 2g: Remove the Password property (now inherited from User) 14. I code editor, ta bort följande programkod, under kommentaren: private string _password = Guid.NewGuid().ToString(); // Generate a random password by default public string Password set _password = value;

5 15. I fönstret Task List, dubbelklicka på arbetsuppgift TODO: Exercise 1: Task 2h Remove the VerifyPassword method (now inherited from User) 16. I code editor, ta bort följande metod, under kommentaren: public bool VerifyPassword(string pass) return (String.Compare(pass, _password) == 0); Arbetsuppgift 3: Kör applikationen och testa att logga på 1. I meny Build, klicka på Build Solution. 2. I meny Debug, klicka på Start Without Debuggning. 3. När applikation startas, skriv in vallee i rutan för Username, skriv in password i rutan för Password, klicka på Log on. 4. Verifiera att lista över elever för läraren Esther Alle visas. 5. Klicka på Kevin Liu, verifiera att ett rapportkort visas för Kevin Liu. 6. Klicka på Log off. 7. Skriv in liuk i rutan för Username, skriv in password i rutan för Password, klicka på Log on. 8. Verifera att ett rapportkort visas för Kevin Liu. 9. Klicka på Log off. 10. Stäng applikationen. 11. Klicka på Close Solution, via meny File.

6 Övning 2: Implementera komplext lösenord genom att använda metod som är abstrakt Arbetsuppgift 1: Definiera abstrakt metod SetPassword 1. Starta Visual Studio, klicka på File Open Project/Solution. 2. Bläddra till C:\Easec\Modul_7\Exercise 2, klicka på GradesPrototype.sln och sedan på Open. 3. I Visual Studio, klicka på View Task List. 4. I fönstret Task List, dubbelklicka på arbetsuppgift TODO: Exercise 2: Task 1a: Define an abstract method for setting the password. 5. I code editor, studera kommentar, i slutet av denna klicka på Enter och skriv in följande: public abstract bool SetPassword(string pwd); 6. I fönstret Task List, dubbelklicka på arbetsuppgift TODO: Exercise 2: Task 1b: Use the SetPassword method to set the password. 7. I code editor, ta bort följande programkod: _password = value; 8. Lägg till följande, istället för det som du tog bort: if (!SetPassword(value)) throw new ArgumentException("Password not complex enough", "Password"); Arbetsuppgift 2: Implementera metoden SetPassword i klasserna Student och Teacher 1. I fönstret Task List, dubbelklicka på arbetsuppgift TODO: Exercise 2: Task 2a: Make _password a protected.

7 2. I ode editor, modifera programkod enligt fet stil: protected string _password = Guid.NewGuid().ToString(); // Generate a random password by default 3. I fönstret Task List, dubbelklicka på arbetsuppgift TODO: Exercise 2: Task 2b: Implement SetPassword to set the password for the student. 4. I code editor, studera kommentar, i slutet av denna klicka på Enter och skriv in följande: public override bool SetPassword(string pwd) // If the password provided as the parameter is at least 6 characters long then save it and return true if (pwd.length >= 6) _password = pwd; return true; // If the password is not long enough, then do not save it and return false return false; 5. I fönstret Task List, dubbelklicka på arbetsuppgift TODO: Exercise 2: Task 2c: Implement SetPassword to set the password for the teacher. 6. I code editor, studera kommentar, i slutet av denna klicka på Enter och skriv in följande: public override bool SetPassword(string pwd) // Use a regular expression to check that the password contains at least two numeric characters Match numericmatch = Regex.Match(pwd, @".*[0-

8 9]+.*[0-9]+.*"); // If the password provided as the parameter is at least 8 characters long and contains at least two numeric characters then save it and return true if (pwd.length >= 8 && numericmatch.success) _password = pwd; return true; // If the password is not complex enough, then do not save it and return false return false; Arbetsuppgift 3: Sätt lösenord för nya elever 1. I fönstret Task List, dubbelklicka på arbetsuppgift TODO: Exercise 2: Task 3a: Implement SetPassword method to set the password. 2. I code editor, ta bort programkod efter kommentar och ersätt den med följande: if (!newstudent.setpassword(sd.password.text)) throw new Exception("Password must be at least 6 characters long. Student not created"); Arbetsuppgift 4: Ändra lösenord för existerande användare 1. I meny Build, klicka på Build Solution. I Solution Explorer, expandera GradesPrototype project, dubbelklicka på MainWindow.xaml. 2. Skrolla ner till rad 27 och studera följande block av programkod: <Button Grid.Column="2" Margin="5" HorizontalAlignment="Right" Click="ChangePassword_Click">

9 <TextBlock Text="Change Password" FontSize="24"/> </Button> 3. I Solution Explorer, expandera MainWindow.xaml och dubbelkicka på MainWindows.xaml.cs. 4. I code editor, expandera region Event Handlers och lokalisera metoden ChangePassword_Click. 5. Studera programkod för denna metod: private void ChangePassword_Click(object sender, EventArgs e) // Use the ChangePasswordDialog to change the user's password ChangePasswordDialog cpd = new ChangePasswordDialog(); // Display the dialog if (cpd.showdialog().value) // When the user closes the dialog by using the OK button, the password should have been changed // Display a message to confirm MessageBox.Show("Password changed", "Password", MessageBoxButton.OK, MessageBoxImage.Information); 6. I Solution Explorer, expandera Controls, dubbelklicka därefter på ChangePasswordDialog.xaml. 7. I Solution Explorer, expandera ChangePasswordDialog.xaml, dubbelklicka därefter på ChangePasswordDialog.xaml.cs. 8. Studera programkod för metoden ok_click: // If the user clicks OK to change the password, validate the information that the user has provided private void ok_click(object sender, RoutedEventArgs e)

10 // TODO: Exercise 2: Task 4a: Get the details of the current user // TODO: Exercise 2: Task 4b: Check that the old password is correct for the current user // TODO: Exercise 2: Task 4c: Check that the new password and confirm password fields are the same // TODO: Exercise 2: Task 4d: Attempt to change the password // If the password is not sufficiently complex, display an error message // Indicate that the data is valid this.dialogresult = true; 9. I fönstret Task List, dubbelklicka på arbetsuppgift TODO: Exercise 2: Task 4a: Get the details of the current user. 10. I code editor, på tom rad efter kommentar, skriv in följande: User currentuser; if (SessionContext.UserRole == Role.Teacher) currentuser = SessionContext.CurrentTeacher; else currentuser = SessionContext.CurrentStudent; 11. I fönstret Task List, dubbelklicka på arbetsuppgift TODO: Exercise 2: Task 4b: Check that the old password is correct for the current user. 12. I code editor, på tom rad efter kommentar, skriv in följande: 13. string oldpwd = oldpassword.password; if (!currentuser.verifypassword(oldpwd))

11 MessageBox.Show("Old password is incorrect", "Error", MessageBoxButton.OK, MessageBoxImage.Error); return; 14. I fönstret Task List, dubbelklicka på arbetsuppgift TODO: Exercise 2: Task 4c: Check that the new password and confirm password fields are the same. 15. I code editor, på tom rad efter kommentar, skriv in följande: string newpwd = newpassword.password; string confirmpwd = confirm.password; if (String.Compare(newPwd, confirmpwd)!= 0) MessageBox.Show("The new password and confirm password fields are different", "Error", MessageBoxButton.OK, MessageBoxImage.Error); return; 16. I fönstret Task List, dubbelklicka på arbetsuppgift TODO: Exercise 2: Task Task 4d: Attempt to change the password. 17. I code editor, studera kommentar under denna rad, klicka på slutet av kommentar, klicka på Enter och skriv in följande: if (!currentuser.setpassword(newpwd)) MessageBox.Show("The new password is not sufficiently complex", "Error", MessageBoxButton.OK, MessageBoxImage.Error); return; Arbetsuppgift 5: Kör applikationen och testa funktionalitet för att ändra lösenordet 1. I meny Build, klicka på Build Solution. 2. I meny Debug, klicka på Start Without Debugging.

12 3. När applikation startar, skriv in vallee i rutan för Username, skriv in password99 och klicka på Log on. 4. I fönstret The School of Fine Arts, klicka på Change Password. 5. I fönstret Change Password, skriv in password99 i rutan för Old Password, skriv in pwd101 i rutan för New Password. Skriv in pws101 i rutan Confirm. Klicka på OK. 6. Verifiera att meddelandet: The new password is not sufficiently complex, klicka på OK. 7. Skriv in password101 i rutan för New Password, skriv in password101 i rutan Confirm. Klicka på OK. Verifiera att meddelandet: Password changed, visas, klicka därefter på OK. 8. Klicka på Log off. 9. Skriv in vallee i rutan för Username, skriv in password101 i rutan för Password, klicka på Log on. 10. Klicka på New Student. 11. I fönstret New Student Details, skriv in Luka i rutan First Name, skriv in Abrus i rutan för Last Name. Skriv in 1234 i rutan för lösenord och klicka på OK. 12. Verifiera att meddelandet Password must be at least 6 characters long. Student not created visas. Klicka på OK. 13. Klicka på New Student. 14. I fönstret New Student Details, skriv in Luka i rutan First Name, skriv in Abrus i rutan för Last Name. Skriv in abcdef i rutan för lösenord och klicka på OK. 15. Klicka på Enroll Student. 16. Verifiera att Luka Abrus visas i fönstret Assign Student. 17. Klicka på Close. 18. Klicka på Log off. 19. Stäng applikationen. 20. I meny File, klicka på Close Solution.

13 Övning 3: Skapa skräddarsydd undantagshantering Arbetsuppgift 1: Implementera klassen ClassFullException 1. Starta Visual Studio, klicka på File Open Project/Solution. 2. Bläddra till C:\Easec\Modul_7\Exercise 3, klicka på GradesPrototype.sln och sedan på Open. 3. I Visual Studio, klicka på View Task List. 4. I fönstret Task List, dubbelklicka på arbetsuppgift TODO: Exercise 3: Task 1a: Add custom data: the name of the class that is full. 5. I code editor, studera kommentar, i slutet av denna klicka på Enter och skriv in följande: private string _classname; public virtual string ClassName get return _classname; 6. I fönstret Task List, dubbelklicka på arbetsuppgift TODO: Exercise 3: Task 1b: Delegate functionality for the common constructors directly to the Exception class. 7. I code editor, i slutet av kommentar klicka på Enter och skriv in följande: public ClassFullException() public ClassFullException(string message) : base(message) public ClassFullException(string message, Exception inner) : base(message, inner)

14 8. I fönstret Task List, dubbelklicka på arbetsuppgift TODO: Exercise 3: Task 1c: Add custom constructors that populate the _classname field. 9. I code editor, i slutet av kommentar klicka på Enter och skriv in följande: public ClassFullException(string message, string cls) : base(message) _classname = cls; public ClassFullException(string message, string cls, Exception inner) : base(message, inner) _classname = cls; Arbetsuppgift 2: Kasta och fånga ClassFullException 1. I fönstret Task List, dubbelklicka på arbetsuppgift TODO: Exercise 3: Task 2a: Set the maximum class size for any teacher. 2. I code editor, i slutet av kommentar klicka på Enter och skriv in följande: private const int MAX_CLASS_SIZE = 8; 3. I fönstret Task List, dubbelklicka på arbetsuppgift TODO: Exercise 3: Task 2b: If the class is already full, then another student cannot be enrolled. 4. I code editor, i slutet av kommentar klicka på Enter och skriv in följande: if (numstudents == MAX_CLASS_SIZE)

15 // Throw a ClassFullException and specify the class that is full throw new ClassFullException("Class full: Unable to enroll student", Class); 5. I fönstret Task List, dubbelklicka på arbetsuppgift TODO: Exercise 3: Task 2c: Catch and handle the ClassFullException. 6. I code editor, i slutet av kommentar klicka på Enter och skriv in följande: catch (ClassFullException cfe) MessageBox.Show(String.Format("0. Class: 1", cfe.message, cfe.classname), "Error enrolling student", MessageBoxButton.OK, MessageBoxImage.Error); Arbetsuppgift 3: Bygg och testa lösningen 1. I meny Build, klicka på Build Solution. 2. I meny Debug, klicka på Start Without Debugging. 3. När applikation har startat, skriv in vallee i rutan för Username, skriv in password99 i rutan för Password, klicka på Log on. 4. I fönstret The School of Fine Arts, klicka på New Student. 5. I fönstret för New Student Details, skriv in följande och klicka på OK. Fält First Name Last Name Password Värde Walter Harp abcdef 6. Notera: Att ny elev kommer inte att listas i huvudapplikation, detta beror på att elev inte har blivit tilldelad någon klass. 7. I fönstret The School of Fine Arts, klicka på New Student.

16 8. I fönstret New Student Details, skriv in följande och klicka på OK. Fält First Name Last Name Password Värde Andrew Harris abcdef 9. I fönstret The School of Fine Arts, klicka på New Student. 10. I fönstret New Student Details, skriv in följande och klicka på OK. Fält First Name Last Name Password Värde Toni Poe abcdef 11. I fönstret The School of Fine Arts, klicka på New Student. 12. I fönstret New Student Details, skriv in följande och klicka på OK. Fält First Name Last Name Password Värde Ben Andrews abcdef 13. I fönstret The School of Fine Arts, klicka på Enroll Student. 14. I fönstret Assign Student, klicka på Walter Harp. 15. I rutan Confirm, klicka på Yes. 16. I fönstret The School of Fine Arts, klicka på Enroll Student. 17. I fönstret Assign Student, klicka på Andrew Harris. 18. I rutan Confirm, klicka på Yes. 19. I fönstret The School of Fine Arts, klicka på Enroll Student. 20. I fönstret Assign Student, klicka på Toni Poe. 21. I rutan Confirm, klicka på Yes. 22. I fönstret The School of Fine Arts, klicka på Enroll Student. 23. I fönstret Assign Student, klicka på Ben Adrews. 24. I rutan Confirm, klicka på Yes.

17 25. Verifiera att meddelandet: Class full: Unable to enroll student:class: 3C, visas. Klicka på OK. 26. I fönstret Assign Student, klicka på Close. 27. Klicka på Log off. 28. Stäng applikationen. 29. I meny File, klicka på Close Solution.