Generera underlag till användarkonton från textfil

Relevanta dokument
Gissa det hemliga talet

Övningsuppgift. Repeterbara citat. Steg 2. Författare: Mats Loock Kurs: Inledande programmering med C# Kurskod:1DV402

Receptsamling med fil

Inledande programmering med C# (1DV402) Tärningarna ska kastas

Laborationsanvisning. Digital väckarklocka. Steg 2, laborationsuppgift 2. Författare: Mats Loock Kurs: Inledande programmering med C# Kurskod:1DV402

Inledande programmering med C# (1DV402) 85%43=42. OBS! Heltal 1 (14)

Övningsuppgift. En array baklänges. Steg 1. Författare: Mats Loock Kurs: Inledande programmering med C# Kurskod:1DV402

Övningsuppgift. Bankkonton. Steg 2. Författare: Mats Loock Kurs: Inledande programmering med C# Kurskod:1DV402

Statistik över heltal

Övningar i JavaScript del 3

Frekvenstabell över tärningskast med C#

Övningar i JavaScript del 4

För att kunna utföra en variable data printning böhöver du följande filer:

Inledande programmering med C# (1DV402) Summera med while"-satsen

Laborationsanvisning. Geometriska figurer. Steg 2, laborationsuppgift 3. Författare: Mats Loock Kurs: Inledande programmering med C# Kurskod:1DV402

Inledande programmering med C# (1DV402) Introduktion till. eller så här är det tänkt att fungera.

Övningar i JavaScript del 5

GEOSECMA for ArcGIS GSD datastruktur och import i en SDE geodatabas

Frekvenstabell över tärningskast med C#

Metoder. Inledande programmering med C# (1DV402)

Webbdirektivet. Om nya krav och hur man går tillväga för att skapa tillgängliga dokument

Manual för att importera referenser till DiVA

Produktöversikt Boolware. SOFTWARE CORPORATION

Hur man skapar ett test i Test och quiz i Mondo 2.6

BRÅDSKANDE: SÄKERHETSMEDDELANDE Fel i WIZARD 2 Barcode ID Label # 023 Innehåll

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

Kravspecifikation Batchbeställningar Version:

Övningar i JavaScript del 2

Instruktioner för ansökan till VFU utomlands i Moveon Utbildningsvetenskapliga fakulteten

BaraTrav Inställningar Version 1.3.4

Övningar i JavaScript del 7

Avsluta vår användning av personuppgifter för marknadsföring. Personuppgifter som användare lämnar ut till andra användare

Identifiering och autentisering

VIKTIGT SÄKERHETSMEDDELANDE HeartSine Technologies samaritan PAD 500P (Offentlig defibrillator) Programvaruuppgradering

Objektorienterad programmering i Java I

Diagnostiskt Prov. Antaganden Om förutsättningar saknas I en uppgift skall rimliga antaganden göras och nedtecknas.

SchoolSoft

SchoolSoft

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6

ANVÄNDARMANUAL. Version Euromed Networks AB. Årstaängsvägen 11, Stockholm. Tel (Juni 2006)

Inledande programmering med C# (1DV402) Introduktion till C#

Föreläsning 4. Klass. Klassdeklaration. Klasser Och Objekt

BaraTrav Meny Version 1.2

Kort om klasser och objekt En introduktion till GUI-programmering i Java

Föreläsning 5 (6) Metoder. Metoder Deklarera. Metoder. Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc

Hjälp till MV-Login Administration Elevdata AB

Import av frånvaro externa system

Inledande programmering med C# (1DV402) 85/2=42. OBS! Heltal 1 (13)

Nyheter och ändringar i Adela Grundskola 4.2.0

Introduktion. Klasser. TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder

Kort användarmanual för Test och quiz i Mondo 2.0

Processbeskrivning fakturahantering

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser

Electrolux Vision ADMIN

Användarmanual för registrering av resultat från Markörbaserad journalgranskning

DIGITALISERINGSPLAN

Föreläsning 5-6 Innehåll

Integritetspolicy. Senast uppdaterad i maj Vårt sekretessåtagande. Vi ska

SchoolSoft

SchoolSoft

Beskrivning av Metakatalog. Sundsvalls kommun

kl Tentaupplägg

ADO.NET Murach Kapitel 17-20

INNEHÅLLSFÖRTECKNING LOGGA IN HUR FÅR MAN ETT LÄRARKONTO? SKAPA LÄRARKONTO

SEKRETESSPOLICY. 1. Vad är personuppgifter?

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

Tillgänglighetsguide Lunds kommun Komma igång Översikt av Guiden... 1

Rockpanel / ROCKWOOL AB ( ROCKWOOL ) vill säkerställa din integritet online.

Laghantering i Equipe

Byte av reservnummer i Melior, ELVIS och Befreg

Anmälan av stipendier med systemet Personec F ESS

Kravspecifikation Batchbeställningar Version:

ShoreTel Communicator Överblick

Föreläsning 11. Arrayer. Arrayer. Arrayer. Lagrar flera värden av samma typ Kan vara primitiva typer eller objekt. Kan ha en array av t.

Övningsuppgifter kapitel 8

En kom i gång manual till SPF:s hemsidor

Kursbeskrivningar. Kursfakta för standardkurser

Objektorienterad programmering Föreläsning 9. Copyright Mahmud Al Hakim Agenda (halvdag)

Inledande programmering med C# (1DV402) 27+15=42 1 (22)

Design av interaktiv multimedia. Läs i förväg om det som övningarna kommer att beröra. Träna hemma både före och efter övningarna.

Objektorienterad programmering Föreläsning 11. Copyright Mahmud Al Hakim

IT-lösningar Marvin Statistik

Räkna med ASP.NET MVC 3

En kom i gång manual till SPF:s hemsidor

1 Paint. 1.1 Öppna Paint. 1.2 Rita linjer

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

Revisionsrapport 2010 Genomförd på uppdrag av revisorerna i Jönköpings kommun. Jönköpings kommun Granskning av användaradministrationen

Objektorienterad programmering D2

TUTORIAL: KLASSER & OBJEKT

Uppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här:

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 2

LICENSVILLKOR FÖR PROGRAMVARA FRÅN MICROSOFT MICROSOFT DYNAMICS AX 2012 R2

3 Styrning av programflöde. Här exekveras satserna enligt först sats1 sedan sats2 och sist sats3.

Vattenfall Innovation Awards

DAT043 Objektorienterad Programmering

Objektorienterad programmering E. Telefonboken, än en gång. Gränssnitt. Telefonboken med gränssnitt specificerat, del 1.

Grundläggande programmering med C# 7,5 högskolepoäng

Lektionsaktivitet: Var är den? Hur ser den ut?

GUIDE TILL ANVÄNDARHANTERINGEN

AppGate och Krisberedskapsmyndighetens basnivå för informationssäkerhet, BITS

Transkript:

Labratinsanvisning Generera underlag till användarkntn från textfil Steg 3, labratinsuppgift 1 Författare: Mats Lck Kurs: Inledande prgrammering med C# Kurskd:1DV402

Upphvsrätt för detta verk Detta verk är framtaget i anslutning till kursen Inledande prgrammering med C# vid Linnéuniversitetet. Du får använda detta verk så här: Allt innehåll i verket Generera underlag till användarkntn av Mats Lck, förutm Linnéuniversitetets lgtyp, symbl ch kpparstick, är licensierad under: Creative Cmmns Erkännande-IckeKmmersiell-DelaLika 2.5 Sverige licens. http://creativecmmns.rg/licenses/by-nc-sa/2.5/se/ Det betyder att du i icke-kmmersiella syften får: kpiera hela eller delar av innehållet sprida hela eller delar av innehållet visa hela eller delar av innehållet ffentligt ch digitalt knvertera innehållet till annat frmat du får även göra m innehållet Om du förändrar innehållet så ta inte med Linnéuniversitetets lgtyp, symbl ch/eller kpparstick i din nya versin! Vid all användning måste du ange källan: Linnéuniversitetet Inledande prgrammering med C# ch en länk till https://cursepress.lnu.se/kurs/inledande-prgrammering-med-csharp ch till Creative Cmmn-licensen här van. Inledande prgrammering med C# (1DV402) 2 (12)

Innehåll Uppgift 5 Prblem 5 Frmat på textfil med anställda 5 Algritm för att läsa in anställda 6 Klassdiagram 6 Strukturen Emplyee 7 Klassen User 8 Klassen Repsitry 9 Klassen AdService 10 Klassen FakeActiveDiretry 11 Klassen Prgram 11 Krav 11 Tips 12 Inledande prgrammering med C# (1DV402) 3 (12)

Uppgift Prblem Med utgångspunkt från en textfil med flera hundra anställda på ett företag tillhörande lika avdelningar ska du färdigställa en påbörjad applikatin sm skapar en textfil innehållande det data sm krävs för att AD-kntn ska kunna skapas med hjälp av existerande batch-fil. Applikatinen ska vara utfrmad så att den kan köras från kmmandprmpten utan att användaren behöver interagera med applikatinen efter att applikatinen startat. Figur 1. Applikatinen ska delas upp i flera typer med klara ansvarsmråden, t.ex. ska all hantering av filer placeras i en klass medan hanteringen av anställda ch AD-användare placeras i andra klasser. Ett allmänt krav på applikatinen är att den ska ge beskrivande felmeddelanden då fel eventuellt inträffar. Frmat på textfil med anställda Infrmatin m de anställda finns att tillgå i frm av en textfil. För att kunna skilja anställda åt är textfilen vara frmaterad på ett bestämt sätt. Varje anställd har en egen rad i textfilen där varje rad består av 12 delar separerade med semikln (;). Första raden innehåller rubriker sm definierar typen av data för de lika delarna. Figur 2. Del av textfil med semiklnseparerade värden med infrmatin m anställda. Inledande prgrammering med C# (1DV402) 5 (12)

Algritm för att läsa in anställda Textfilen med anställda ska läsas rad för rad. Varje rad ska tlkas för att bestämma vad raden beskriver. Förfarandet att läsa in ch tlka textfilen till en samling med bjekt kan upplevas vara en str utmaning varför en beskrivning av en algritm kan underlätta. Algritmen beskriver innehållet i metden Repsitry.Lad() sm returnerar en lista med referenser till Emplyee-bjekt. 1. Skapa lista sm kan innehålla referenser till bjekt representerande anställda. 2. Öppna textfilen för läsning. 3. Läs rad med rubrik från textfilen. 4. Läs rad från textfilen tills det är slut på filen. a. Om det är en tm rad i. frtsätt med att läsa in nästa rad. b. annars är det en rad med infrmatin m en anställd i. Dela upp raden i delar genm att använda metden Split() i klassen string. De lika delarna separeras åt med semikln varför det alltid ska bli 12 delar. ii. Om antalet delar inte är 12 1. är någt fel varför ett undantag ska kastas. iii. Skapa ett bjekt representerande den anställde ch initiera det med de 12 lika delarna. iv. Lägg till den anställde till listan med anställda. 5. Srtera listan med anställda med avseende på förnamn ch efternamn. 6. Returnera en referens till listan. Klassdiagram Applikatinen ska delas upp i flera typer. Typerna Emplyee, User, Repsitry, AdService, FakeActiveDirectry ch Prgram ansvara var ch en för sin del av applikatinen. Figur 3. Övergripande klassdiagram där klassen FakeActiveDirectry samt metderna CnvertTNnDiacriticString ch CreatePsswrd i klassen AdService är givna. Inledande prgrammering med C# (1DV402) 6 (12)

Strukturen Emplyee beskriver anställd med alla relevanta uppgifter. Klassen User definierar data intressant för att skapa en anställds användarknt. Repsitry ansvarar för allt sm har med persistent lagring av anställda ch underlag till användarkntn, d.v.s. klassen har metder för att läsa anställda från en textfil ch skriva underlag till användarkntn till en textfil. Klassen Prgram har huvudansvaret för exekveringen av applikatinen ch ansvara för att tlka argument till applikatinen, skapa lämpliga bjekt ch anrpa metder. Strukturen Emplyee För att lagra infrmatin m en anställd ska en struktur användas. Strukturen ska vara enkelt utfrmad ch bara ha autimplementerade egenskaper, vilket innebär att ingen av egenskaperna ska vilideras. Den ska även innehålla en read-nly -egenskap för den anställdes fullständiga namn bestående av för- ch efternamn. Figur 4. Strukturen Emplyee. Egenskapen AdressLine1 Publik autimplementerad egenskap av typen string representerande adressen. Egenskapen City Publik autimplementerad egenskap av typen string representerande rten. Egenskapen CuntryReginName Publik autimplementerad egenskap av typen string representerande landet. Egenskapen Department Publik autimplementerad egenskap av typen string representerande avdelningen. Egenskapen FirstName Publik autimplementerad egenskap av typen string representerande förnamnet. Egenskapen FullName Publik read-nly -egenskap av typen string sammansatt av förnamnet ch efternamnet. Egenskapen IsRemte Publik autimplementerad egenskap av typen bl representerande m den anställde arbetar på distans. Egenskapen JbTitle Publik autimplementerad egenskap av typen string representerande yrkestiteln. Egenskapen LastName Publik autimplementerad egenskap av typen string representerande efternamnet. Egenskapen MiddleName Publik autimplementerad egenskap av typen string representerande mellannamnet. Inledande prgrammering med C# (1DV402) 7 (12)

Egenskapen Phne Publik autimplementerad egenskap av typen string representerande ett telefnnummer. Egenskapen PstalCde Publik autimplementerad egenskap av typen string representerande pstnumret. Egenskapen StatePrvinceName Publik autimplementerad egenskap av typen string representerande namn på staten. Klassen User Instanser av klassen används för att representera en anställds underlag till användarknt. Klassen implementerar ICmparable ch ICmparable<T> för att det ska vara möjligt att srtera instanser med avseende på användarkntts namn. Figur 5. Klassen User sm implementerar två interface. Egenskapen FirstName Publik autimplementerad egenskap av typen string representerande förnamnet. Egenskapen Grup Publik autimplementerad egenskap av typen string representerande den universella gruppens namn. Egenskapen LastName Publik autimplementerad egenskap av typen string representerande efternamnet. Egenskapen OU Publik autimplementerad egenskap av typen string representerande den rganisatriska enhet användaren ska tillhöra. Egenskapen Passwrd Publik autimplementerad egenskap av typen string representerande lösenrdet. Egenskapen Script Publik autimplementerad egenskap av typen string representerande namnet på lgnskriptet. Egenskapen UserName Publik autimplementerad egenskap av typen string representerande användarnamnet. Metderna CmpareT CmpareT() ska överlagras, d.v.s. det ska finnas två metder med samma namn men med lika parameterlistr. Metderna anrpas i regel inte direkt av kd utvecklare skriver utan det sker autmatiskt av ramverket. Metden CmpareT(bject bj) används t.ex. av metden Array.Srt() då instanser av typen User ska srteras. Metden CmpareT(User ther) används av metden List.Srt() då instanser av typen User ska srteras. Inledande prgrammering med C# (1DV402) 8 (12)

Metderna ska jämföra två bjekt med avseende på fältet för användarnamnet. Refererar parametern till null ska ett heltal större än 0 returneras. Refererar parametern till ett bjekt sm inte är av typen User ska ett undantag av typen ArgumentExceptin kastas. Refererar parametern till ett bjekt vars användarnamn ska srteras efter det anrpande bjektets användarnamn ska ett heltal mindre än 0 returneras. Refererar parametern till ett bjekt vars användarnamn ska srteras före det anrpande bjektets användarnamn ska ett heltal större än 0 returneras. Refererar parametern till ett bjekt ett bjekt vars användarnamn är samma sm det anrpande bjektets användarnamn ska heltalet 0 returneras. Metden TString Metden ska returnera en sträng sm beskriver en anställd. Strängen ska vara väl frmaterad ch innehålla väl valda egenskaper. Klassen Repsitry En instans av klassen Repsitry används för att hantera persistent lagrade anställda ch underlag till användarkntn. Figur 6. Klassen Repsitry Fältet _surcepath Privat fält av typen string innehållande sökvägen till den fil med anställda en instans av Repsitry arbetar mt. Egenskapen SurcePath Publik egenskap av typen string sm kapslar in fältet _surcepath. set-metden ska validera sökvägen så att den inte refererar till null, är tm eller bara innehåller vita tecken ( white spaces ) ch att filen existerar genm att använda File.Exists(). Egenskapen DestinatinPath Autimplementerad privat egenskap av typen string innehållande sökvägen till den fil sm det genererade underlaget till användarkntn ska skrivas. Egenskapen tilldelas ett värde av knstruktrn. Knstruktrn Knstruktrn ska initiera fältet _surcepath, via egenskapen SurcePath, så att det instansierade bjektet innehåller en giltig sökväg till en fil med anställda. Vidare ska egenkapen DestinatinPath tilldelas en sökväg till den fil sm underlaget för användarkntn ska skrivas till. Sökvägen ska vara densamma sm källfilen med tillägget att.usr ska läggas till innan filändelsen. Har källfilen namnet Emplyees.csv ska destinatinsfilens namn vara Emplyees.usr.csv. Metden Lad Den publika metden Lad() ska läsa in textfilen med anställda ch tlka den för att skapa en lista med referenser till Emplyee-bjekt sm returneras. Inledande prgrammering med C# (1DV402) 9 (12)

Under rubriken Frmat på textfil med anställda finns infrmatin m textfilen frmat. Under rubriken Algritm för att läsa in anställda finns en algritm sm kan användas för att läsa in ch tlka textfilen. Uppstår fel under inläsningen eller tlkningen, t.ex. på grund av att textfilen inte är krrekt frmaterad, ska metden kasta ett undantag. Metden Save Den publika metden Save() ska spara det underlag till användarkntn sm skickas med sm argument vid anrp av metden. Underlaget med användarkntn ska spara enligt det frmat sm krävs för att befintligt skript ska fungera. Klassen AdService Klassen AdService används till att generera underlag till anställdas användarkntn. Figur 7. Klassen AdService där metderna CreateUser ch CreateUsers saknas ch måste implementeras. Metden CnvertTNnDiacriticString Den privata metden CnvertTNnDiacriticString() är redan implementerad ch används för att ta brt diakritiska tecken, d.v.s. små skrivtecken sm läggs till en bkstav (över, under eller vanpå). Metden CreatePasswrd Den privata metden CreatePasswrd() är redan implementerad ch används för att generera ett unikt lösenrd sm uppfyller (nästan) ställda krav på kmplexitet (bestå av minst sex tecken, innehållande en kmbinatin av minst tre av följande tecken: VERSALER, gemener, siffrr ch symbler, inte innehålla användarnamnet (inte uppfyllt med 100 % säkerhet!)). Metden CreateUser Den privata metden CreateUser() ska skapa, initiera ch returnera en referens till ett User-bjekt baserat på argumentet, en referens till ett Emplyee-bjekt, sm skickas till metden. Användarnamnet ska bestå av de två första bkstäverna i för- respektive efternamn. OBS! Användarnamnet behöver inte göras unikt i denna metd, det görs enklast i metden CreateUsers. Metden CreateUsers Den publika metden CreateUsers() ska utifrån en lista med referenser till Emplyee-bjekt skapa en lista, srterad på användarnamn, med referenser till User-bjekt. Metden ska säkerställa att en användares användarnamn är unikt. Det får inte vara någn kllisin mellan befintliga användarnamn eller nya användarnamn. Befintliga användarnamn kan slås upp med hjälp av klassen FakeActiveDirectry. Existerar redan ett användarnamn ska användarnamnet kmpletteras med ett suffix i frm av ett tal. Finns redan användarnamnet albr ska användarnamnet albr2 skapas. Finns användarnamnet misu9 ska användarnamnet misu10 skapas. Ett användarnamn består garanterat av minst fyra tecken varför metden String.Substring() kan användas för att ta fram ett eventuellt suffix. Om variabeln username har värdet misu9 returnerar username.substring(4) strängen 9 sm enkelt kan göras m till ett heltal vars värde sedan ökas med ett för att slutligen läggas till användarnamnet sm då blir misu10. Inledande prgrammering med C# (1DV402) 10 (12)

Klassen FakeActiveDiretry Klassen FakeActiveDiretry simulerar ett active directry med ett antal användarnamn. Klassen innehåller två statiska metder sm kan användas för att slå upp befintliga användarnamn (GetADUsers) eller undersöka m ett användarnamn redan existerar (ADUserExists). Klassen får under inga mständigheter ändras på någt sätt. Figur 8. Klassen FakeActiveDiretry sm är fullständigt implementerad. Klassen Prgram Klassen Prgram ska använda instanser av lämpliga bjekt för att läsa in anställda ch spara underlag för användakntn. Figur 9. Samtliga medlemmar i klassen Prgram måste vara statiska. Fältet _emplyees Privat statiskt fält av typen List<Emplyee> innehållande referenser till bjekt med infrmatin m anställda. Fältet _users Privat statiskt fält av typen List<User> innehållande referenser till bjekt med underlag till användarkntn. Metden Main Metden Main ska instansiera bjekt av typerna Repsitry ch AdService. Repsitry-bjektet ska användas för att läsa in infrmatin m anställda från den textfil sm skickas sm argument med in till applikatinen. AdService-bjektet ska sedan användas till att skapa underlag för användarkntn. Avslutningsvis används Repsitry-bjektet igen, denna gång för att skriva underlaget för användarkntna till en textfil. Eventuella fel ska fångas av metden ch felmeddelande presenteras. Krav Samtliga krav sm ställs under rubrikerna van ska vara uppfyllda. Inledande prgrammering med C# (1DV402) 11 (12)

Tips Strukturer Essential C# 5.0, 340-347. http://msdn.micrsft.cm/en-us/library/ah19swz4.aspx Srtera med OrderBy() Essential C# 5.0, 590-592. Klassen List<T> http://msdn.micrsft.cm/en-us/library/6sh2ey19.aspx Essential C# 5.0, 639-645. http://msdn.micrsft.cm/en-us/library/6sh2ey19.aspx Läsa ch skriva till textfiler Klassen Path StreamReader, http://msdn.micrsft.cm/en-us/library/6aetdk20.aspx. StreamWriter, http://msdn.micrsft.cm/en-us/library/3ssew6tk.aspx http://cursepress.lnu.se/pub/educatin/curse/1dv402/ht13/dc/artiklar/hurhanterar-jag-textfiler.pdf http://msdn.micrsft.cm/en-us/library/3bdzys9w.aspx Inledande prgrammering med C# (1DV402) 12 (12)