Skip to content

Information Technology Grade 12 P1 NSC November 2012 Memo

MemorandumInformation TechnologyGrade 12201234 pages

Grade 12 Information Technology Paper 1 memorandum from the NSC November Exam 2012 (Afrikaans), 34 pages. Read online or download the free PDF.

Free to read online, no sign-up needed

Answer online

Loading document…

Loading document…

Questions in this paper

Document textSearch extracted text and jump to a page.
Downloaded from hlayiso.com NASIONALE SENIOR SERTIFIKAAT GRAAD 12 INLIGTINGSTEGNOLOGIE V1 NOVEMBER 2013 MEMORANDUM PUNTE: 120 Hierdie memorandum bestaan uit 32 bladsye. Kopiereg voorbehou Blaai om asseblief
Downloaded from hlayiso.com Inligtingstegnologie/V1 2 DBE/November 2013 NSS – Memorandum ALGEMENE INLIGTING: • Hierdie nasienriglyne moet as basis gebruik word tydens die nasiensessies. Hulle is geskep om deur die nasieners gebruik te word. Daar word van alle nasieners vereis om 'n standaardiseringsvergadering by te woon, om te verseker dat die interpretasie van die riglyne korrek geïmplementeer word tydens die nasien van die leerders se antwoordeboeke. • Daar word erken dat daar alternatiewe uitgangspunte bestaan in sake die beklemtoning van inligting of detail van die riglyne en dat daar alternatiewe interpretasies of toepassing daarvan is. • Let daarop dat leerders wat alternatiewe korrekte oplossings as dié gegee in hierdie riglyne verskaf, volle krediet vir die relevante vraag sal ontvang. • Bylae A, B en C (bladsye 3–6) bevat die nasienrubriek vir elke vraag ongeag watter een van die programmeringstale gebruik is. • Bylae D, E en F (bladsye 7–19) bevat die programmerings kode se oplossings vir Delphi vir VRAAG 1 tot 3. • Bylae G, H, I en J (bladsye 20–32) bevat die programmeringskode se oplossings vir Java vir VRAAG 1 tot 3. • Kopieë van bylaes A, B en C (bladsye 3–6) moet gemaak word vir elke leerder om tydens die nasiensessie voltooi te word. Kopiereg voorbehou Blaai om asseblief
Downloaded from hlayiso.com Inligtingstegnologie/V1 3 DBE/November 2013 NSS – Memorandum BYLAAG A VRAAG 1: NASIENRUBRIEK – PROGRAMMERING EN DATABASIS ALGEMENE NOTAS: • Penaliseer vir verkeerde aantal aanhalings tekens slegs een keer. Herhaalde foutering in volgende antwoorde word nie weer gepenaliseer nie. • By die gebruik van = strings, die LIKE mag as alternatief gebruik word. SENTRUMNOMMER: EKSAMENNOMMER: MAKS. LEERDER VRAAG BESKRYWING PUNTE PUNT 1.1 Navraag: Korrekte velde (of *); korrekte tabel; ORDER BY korrekte velde in korrekte volgorde SQL: SELECT * FROM tblUitslae ORDER BY TipeDans, 3 RoetineNr Desc 1.2 Navraag: Korrekte velde & tabel; WHERE korrekte punte beide weke korrekte operator gebruik (OR/IN) vir weke SQL: SELECT RoetineNr, Week, TipeDans, Punte FROM tblUitslae WHERE (Punte BETWEEN 25 AND 35) AND (Week=5 OR Week=9) Alternatief: (Punte>=25) AND (Punte<=30) (Punte > 24) AND (Punte < 36) Punte IN [25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35] Weeks IN [5, 9] Score >= 25 And Score <= 35 And (Week = 5 Or Week = 9) 4 (Score >= 25 And (Week = 5 Or Week = 9)) And (Score <= 35 And (Week = 5 Or Week = 9)) Score >= 25 And Score <= 35 And Week IN (5,9) Score IN (25,26,27,28,29,30,31,32,33,34,35) Or Week IN(5,9) Score BETWEEN 25 And 35 and Week = 5 OR Score BETWEEN 25 And 35 and Week = 9 NOTA: Toets die korrektheid van alternatiewe gebruik van intervalle Kopiereg voorbehou Blaai om asseblief
Downloaded from hlayiso.com Inligtingstegnologie/V1 4 DBE/November 2013 NSS – Memorandum VRAAG 1: NASIENRUBRIEK – PROGRAMMERING EN DATABASIS – vervolg VRAAG BESKRYWING MAKS LEERDER PUNTE PUNT 1.3 Navraag: Korrekte velde & tabel; Count; AS AantalOptredes WHERE TipeDans gelyk aan gebruiker toevoer GROUP BY TipeDans SQL: (D) SELECT TipeDans, Count(*) AS AantalOptredes FROM tblUitslae WHERE TipeDans = "'+ sX + '" GROUP BY TipeDans 5 SQL: (J) SELECT TipeDans, Count(*) AS AantalOptredes FROM tblUitslae WHERE TipeDans = '"+ sX + "' GROUP BY TipeDans Alternatief: Mag gebruik maak van Count(<veldnaam>) NOTA: Die gebruik van Distinct is nie toelaatbaar 1.4 Navraag: Korrekte velde; beide tabelle; WHERE koppel tabelle met DansPaarID; professionele danser met AND operator; LIKE Love%  OR-operators met die korrekte gebruik van hakkies; LIKE %you% SQL: (D) SELECT Lied, Dansmaat1, Dansmaat2 FROM tblDansPare, tblUitslae WHERE tblUitslae.DansPaarID =tblDansPare.DansPaarID AND (ProfessioneleDansers = "B") AND ((Lied Like "Love%") OR (Lied LIKE "%you%")) SQL: (J) SELECT Lied, Dansmaat1, Dansmaat2 FROM tblDansPare, tblUitslae WHERE tblUitslae.DansPaarID 7 =tblDansPare.DansPaarID AND (ProfessioneleDansers = 'B') AND ((Lied Like 'Love%') OR (Lied LIKE '%you%')) Alternatief: Maak gebruik van ALIASES vir die tabel name Alternatief: Maak gebruik van INNER JOIN stelling (D) Die gebruik van Left(Lied,4) = “Love” (J) Die gebruik van Left(Lied,4) = ‘Love’ NOTE: Die gebruik van * in plaas van % trek EEN punt af Kopiereg voorbehou Blaai om asseblief
Downloaded from hlayiso.com Inligtingstegnologie/V1 5 DBE/November 2013 NSS – Memorandum VRAAG 1: NASIENRUBRIEK – PROGRAMMERING EN DATABASIS – vervolg VRAAG BESKRYWING MAKS LEERDER PUNTE PUNT 1.5 Navraag: Korrekte velde & beide tabelle ; Formateer tot DRIE desimale; sum(Punte); deel deur Count(*); AS GemiddeldePunte; GROUP BY DansPaarID SQL: (D) SELECT DansPaarID, Format((Sum(Punte)/Count(*)), "0.000") AS GemiddeldePunte FROM tblUitslae Group BY DansPaarID SQL: (J) SELECT DansPaarID, Format((Sum(Punte)/Count(*)), '0.000') AS GemiddeldePunte FROM tblUitslae Group BY 6 DansPaarID Alternatief: Gebruik verskillende formaterings stringe, bv. "#.000" Die gebruik AVG(Punte) – TWEE punte Round(<berekening>, 3) in plaas van Format 1.6 Navraag: Korrekte velde van beide tabelle ; WHERE koppel tabelle met DansPaarID; Uitslag gelyk aan Uitgeskakel ; Geen duplikate – kyk na gebruik van week 12 (ingesluit – DISTINCT/Group by) (Minder as 12- geen distinct/group by verwag) SQL: (D) SELECT DISTINCT Dansmaat1, Dansmaat2 FROM tblUitslae, tblDansPare WHERE (tblUitslae.DansPaarID =tblDansPare.DansPaarID) AND (Uitslag LIKE "Uitgeskakel") AND (Week < 12) SQL: (J) SELECT Dansmaat1, Dansmaat2 FROM tblUitslae, 5 tblDansPare WHERE (tblUitslae.DansPaarID =tblDansPare.DansPaarID) AND (Uitslag LIKE 'Uitgeskakel') AND (Week < 12) Alternatief: Maak gebruik van ALIASES vir die tabel name Alternatief: Maak gebruik van INNER JOIN stelling NOTA: Indien week 12 ingesluit is moet DISTINCT/GROUP BY gebruik word. 1.7 Navraag: UPDATE tabel; SET Uitslag to WENNERS; WHERE Tweede rondte; AND ; DansPaarID is 8 SQL: (D) UPDATE tblUitslae SET Uitslag = "WENNERS" WHERE Rondte = 2 AND DansPaarID = 8 5 SQL: (J) UPDATE tblUitslae SET Uitslag = 'WENNERS' WHERE Rondte = 2 AND DansPaarID = 8 NOTA: Die gebruik van Week is opsioneel TOTAAL: 35 Kopiereg voorbehou Blaai om asseblief
Downloaded from hlayiso.com Inligtingstegnologie/V1 6 DBE/November 2013 NSS – Memorandum BYLAAG B VRAAG 2: NASIENRUBRIEK – OBJEK-GEORIËNTEERDE PROGRAMMERING ALGEMENE NOTAS: • Indien die leerder die datatipe van ‘n gegewe veranderlike verander (bv karakter na string) penaliseer met EEN punt • Penaliseer slegs EEN keer vir ‘n spesifieke sintaksfout (bv ;) • In JAVA word die gebruik van enkel = in plaas van == slegs een keer gepenaliseer. • Geen objekklas gebruik: Vr 2.1.1: 0 punte; Vr 2.1.2: maksimum van 6 punte; Vr 2.1.3: Maksimum van 5 punte; Vr 2.1.4: maksimum van 3 punte SENTRUMNOMMER: EKSAMENNOMMER: MAKS. LEERDER VRAAG BESKRYWING PUNTE PUNT 2.1.1 Geparameteriseerde KONSTRUKTOR Al drie parameters korrek  met korrekte datatipes Ken dansmaat 1 se naam toe  Ken dansmaat 2 se naam toe  5 Ken professionele status toe 2.1.2 getGewigswaarde METODE: Korrekte metode terugstuur tipe (integer) ;Struktuur if/case/switch ; Toets vir A en ken gewigswaarde van 1 toe; Toets vir B en C en ken gewigswaarde van 2 toe {maak gebruik van OR of meervoudige If’s); Toets vir D en ken gewigswaarde van 3 toe; Ken gewigswaarde van 0 toe vir ongeldige dans status karakters/verstek 8 waarde van nul; Terugvoer van inhoud van toegekende waarde  NOTE: Aanvaar return type string SLEGS as omskakeling plaasvind in roepstelling. 2.1.3 berekenFinalePunt METODE: Heelgetal skikking as parameter; Stap deur skikking OF verwys na elke individuele element in skikking  roep getGewigswaarde metode OF maak gebruik van gewigswaarde as klasveranderlike; 7 vermenigvuldig 1ste en 3de skikking element met die gewigswaarde; tel al vier punte op; stuur totale punt terug 2.1.4 toString METODE: Korrekte metode opskrif en terugstuur tipe (string); Konstrueer 'n reël met korrekte byskrifte; Name van dansmaats met &- karakter; 6 Konstrueer 'n reël met professionele dansstatus(roep metode/attribuut) op volgende reël Stuur string terug Kopiereg voorbehou Blaai om asseblief
Downloaded from hlayiso.com Inligtingstegnologie/V1 7 DBE/November 2013 NSS – Memorandum VRAAG 2: NASIENRUBRIEK – OBJEK-GEORIËNTEERDE PROGRAMMERING – vervolg 2.2.1 KEUSELYSOPSIE A: Laat gebruiker toevoer plaasvind; Sleutel twee stringe as name vir dansmaats in; Toevoer en gebruik eerste karakter van professionele status 8 Verklaar objek lokaal/globaal in unit/klas en instansieer DansPaar objek; met ingesleutelde waardes as argumente; in die korrekte volgorde ; Vertoon die inligting van die DansPaar objek  2.2.2 KEUSELYSOPSIE B: Verklaar 'n skikking van heelgetalle om vier waardes te stoor; Verkry gebruiker toevoer vir VIER waardes; Valideer die VIER waardes in die interval 1 tot 10; ken nul waarde toe indien buite intervalgrense; 1ste lyn van afvoer: Vertoon byskrif en roep metodes vir name van dansmaats OF maak gebruik van globale veranderlikes 10 2de lyn van afvoer: Vertoon byskrif en vier waardes 3de lyn van afvoer: Vertoon byskrif en roep getGewigswaarde metode om die gewigswaarde te vertoon 4de lyn van afvoer: Vertoon byskrif en roep berekenFinalPunt metode  met korrekte parameters 2.2.3 KEUSELYSOPSIE C: Tekslêer:  {Delphi: AssignFile & Rewrite Java: Skep objek en gebruik om lêer te lees/skryf } Saamvoeg van teksreël bevattende die name van beide dansmaats asook hul finale punt in komma geskeide formaat ; 7 Skryf teksreël na die tekslêer CloseFile/Close die skryf objek Boodskap vir gebruiker dat lêer geskep is NOTA (Delphi): Aanvaar die gebruik van SaveToFile metode van die richedit. TOTAAL: 51 Kopiereg voorbehou Blaai om asseblief
Downloaded from hlayiso.com Inligtingstegnologie/V1 8 DBE/November 2013 NSS – Memorandum BYLAAG C VRAAG 3: NASIENRUBRIEK - PROBLEEMOPLOSSING-PROGRAMMERING ALGEMENE NOTAS: • Penaliseer slegs EEN keer vir sintaksfout (bv ;). SENTRUMNOMMER: EKSAMENNOMMER: MAKS. LEERDER VRAAG BESKRYWING PUNTE PUNT 3.1 KEUSELYSOPSIE A: Maak gebruik van geskikte datastruktuur (1D/2D/object array) vir al veertien danspare; Herhaal lus tot alle gebruikerstoevoer geldig is: Gebruikers toevoer om vier geëlimineerde danspare aan te dui; Valideer elke waardes vir korrekte interval Gebruik VAL/try...except/catch om validering van toevoer as getalle; Tekslêer: {DELPHI: AssignFile, Reset JAVA: Skep objek om te lees vanuit tekslêer} ; Lus deur reëls van tekslêer 22 Lees enkele teksreël  Verdeel data (naam, ouderdom, kontaknommer, danspaarID) Indien geldige ouderdom  EN(AND) nie geëlimineer nie Indien geldige stem: Inkrementeer geldige stem teller  Indien internasionale stem gebaseer op nie +27 voeg byskrif by  Indien NIE geldige stem: Inkrementeer ongeldige stem teller  Vertoon saamgevoegde inligting reël binne die lus Vertoon totale aantal geldige stemme; Vertoon totale aantal ongeldige stemme 3.2 KEUSELYSOPSIE B: Maak gebruik van toepaslike datastruktuur(e) vir die tel van stemme  Gebruik Lus om stemme vir elke danspaar te tel  (kon reeds as deel van VRAAG 3.1 binne-in die IF-stelling vir geldige stem gedoen het) Vertoon op- en byskrifte voor lus (aanvaar ook as deel van vraag 3.1) Gebruik Lus om aantal stemme van elke danspaar te vertoon of die 12 byskrif "(Uitgeskakel)" indien die danspaar reeds uitgeskakel is Inisialiseer die laagste waarde; bepaal die laagste aantal stemme ignoreer die danspare wat reeds geëlimineer is binne die lus OF sortering van die skikking Vertoon die danspaar(e) wat volgende uitgeskakel gaan wordmet byskrif TOTAAL: 34 OPSOMMING VAN LEERDER SE PUNTE: VRAAG 1 VRAAG 2 VRAAG 3 TOTAAL MAKS. PUNTE 35 51 34 120 LEERDER PUNT Kopiereg voorbehou Blaai om asseblief
Downloaded from hlayiso.com Inligtingstegnologie/V1 9 DBE/November 2013 NSS – Memorandum BYLAAG D: OPLOSSING – VRAAG 1: DELPHI unit Vraag1U_memo; {Moontlike oplossing vir Vraag 1.} interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, DB, ADODB, Grids, DBGrids, ExtCtrls, Buttons, Menus; type TfrmQ1 = class(TForm) qryRec: TADONavraag; dsrQry: TDataSource; grdQ1: TDBGrid; mnuMain: TMainMenu; mnuOpsieA: TMenuItem; mnuOpsieB: TMenuItem; mnuOpsieC: TMenuItem; mnuOpsieD: TMenuItem; mnuOpsieE: TMenuItem; mnuOpsieF: TMenuItem; mnuOpsieG: TMenuItem; mnuVerlaat: TMenuItem; procedure mnuOpsieAClick(Sender: TObject); procedure mnuOpsieBClick(Sender: TObject); procedure mnuOpsieCClick(Sender: TObject); procedure mnuOpsieDClick(Sender: TObject); procedure mnuOpsieEClick(Sender: TObject); procedure mnuOpsieFClick(Sender: TObject); procedure mnuOpsieGClick(Sender: TObject); procedure mnuVerlaatClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var frmQ1: TfrmQ1; implementation {$R *.dfm} //=============================================================== procedure TfrmQ1.mnuOpsieAClick(Sender: TObject); begin qryRec.Close; qryRec.SQL.Text := 'SELECT * FROM tblUitslae ' + 'ORDER BY TipeDans, RoetineNr Desc'; qryRec.Open; end; //=============================================================== procedure TfrmQ1.mnuOpsieBClick(Sender: TObject); begin qryRec.Close; qryRec.SQL.Text := 'SELECT RoetineNr, Week, TipeDans, Punte '+ 'FROM tblUitslae WHERE (Punte BETWEEN 25 AND 35) AND '+ '(Week=5 OR Week=9)'; qryRec.Open; end; //=============================================================== Kopiereg voorbehou Blaai om asseblief
Downloaded from hlayiso.com Inligtingstegnologie/V1 10 DBE/November 2013 NSS – Memorandum procedure TfrmQ1.mnuOpsieCClick(Sender: TObject); var sX : String; begin sX := INPUTBOX('Vraag 1', 'Sleutel die TIPE dans in bv. Rumba.', ''); qryRec.Close; qryRec.SQL.Text := 'SELECT TipeDans, Count(*) AS AantalOptredes '+ 'FROM tblUitslae WHERE TipeDans = "'+ sX + '" GROUP BY TipeDans'; qryRec.Open; end; //=============================================================== procedure TfrmQ1.mnuOpsieDClick(Sender: TObject); begin qryRec.Close; qryRec.SQL.Text := 'SELECT Lied, Dansmaat1, Dansmaat2 ' + 'FROM tblDansPare, tblUitslae '+ 'WHERE tblUitslae.DansPaarID=tblDansPare.DansPaarID AND '+ '(ProfessioneleDansers = "B") AND '+ '((Lied Like "Love%") OR (Lied LIKE "%you%"))'; qryRec.Open; end; //=============================================================== procedure TfrmQ1.mnuOpsieEClick(Sender: TObject); begin qryRec.Close; qryRec.SQL.Text := 'SELECT DansPaarID, ' + 'Format((Sum(Punte)/Count(*)),"0.000") AS '+ 'GemiddeldePunte FROM tblUitslae Group BY DansPaarID'; qryRec.Open; end; //=============================================================== procedure TfrmQ1.mnuOpsieFClick(Sender: TObject); begin qryRec.Close; qryRec.SQL.Text := 'SELECT Dansmaat1, Dansmaat2 ' + 'FROM tblUitslae, tblDansPare '+ 'WHERE (tblUitslae.DansPaarID=tblDansPare.DansPaarID) '+ ' AND (Uitslag LIKE "Uitgeskakel") AND (Week < 12) ' + 'GROUP BY Dansmaat1, Dansmaat2'; qryRec.Open; end; //=============================================================== procedure TfrmQ1.mnuOpsieGClick(Sender: TObject); begin qryRec.Close; qryRec.SQL.Text := 'UPDATE tblUitslae SET Uitslag = "WENNERS" '+ 'WHERE Rondte = 2 AND DansPaarID = 8'; qryRec.ExecSQL; MessageDlg('Rekords suksesvol verwerk',mtInformation,[mbok],0); end; //=============================================================== procedure TfrmQ1.mnuVerlaatClick(Sender: TObject); begin Application.Terminate; end; end. Kopiereg voorbehou Blaai om asseblief
Downloaded from hlayiso.com Inligtingstegnologie/V1 11 DBE/November 2013 NSS – Memorandum BYLAAG E: OPLOSSING – VRAAG 2: DELPHI 2.1. GEGEWE DANSPAAR KLASEENHEID: unit uDansPaar_memo; // Moontlike oplossing vir vraag 2 interface type TPunteSkik = array[1..4] of Integer; TDansPaar = class(TObject) private fDansM1, fDansM2 : String; fProfessioneel : char; public constructor Create; overload; constructor Create(sDansmaat1, sDansmaat2 : String; cProf : Char); overload; function GetDansMaat1 : String; function GetDansMaat2 : String; function GetProfessioneel: char; function GetGewigswaarde : Integer; function BerekenFinalePunt(arrBeoordelaarPunte : TPunteSkik) : Integer; function toString : String; end; implementation { TDanceCouple } constructor TDansPaar.Create; begin end; function TDansPaar.BerekenFinalePunt( arrBeoordelaarPunte: TPunteSkik): Integer; begin Result := (GetGewigswaarde*arrBeoordelaarPunte[1]) + arrBeoordelaarPunte[2] + (GetGewigswaarde*arrBeoordelaarPunte[3]) + arrBeoordelaarPunte[4]; end; constructor TDansPaar.Create(sDansmaat1, sDansmaat2: String; cProf: Char); begin fDansM1 := sDansmaat1; fDansM2 := sDansmaat2; fProfessioneel := cProf; end; function TDansPaar.GetDansMaat1: String; begin Result := fDansM1; end; function TDansPaar.GetDansMaat2: String; begin Result := fDansM2; end; function TDansPaar.GetGewigswaarde: Integer; Kopiereg voorbehou Blaai om asseblief
Downloaded from hlayiso.com Inligtingstegnologie/V1 12 DBE/November 2013 NSS – Memorandum begin case fProfessioneel of 'A' : Result := 1; 'B', 'C' : Result := 2; 'D' : Result := 3; else Result := 0; end;//case end; function TDansPaar.GetProfessioneel : char; begin Result := fProfessioneel; end; function TDansPaar.toString: String; begin Result := 'Danspaar: ' + GetDansMaat1 + ' & ' + GetDansMaat2 + #13 + 'Professionele dansstatus: ' + GetProfessioneel; end; end. 2.2 VORMEENHEID – VRAAG 2: unit Vraag2U_memo; {Moontlike oplossing vir Vraag 2} interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls, Menus, uDansPaar_memo; type TfrmVR2 = class(TForm) mnuMain: TMainMenu; mnuOpsieA: TMenuItem; mnuOpsieB: TMenuItem; mnuOpsieC: TMenuItem; mnuVerlaat: TMenuItem; redV2: TRichEdit; procedure mnuVerlaatClick(Sender: TObject); procedure mnuOpsieAClick(Sender: TObject); procedure mnuOpsieBClick(Sender: TObject); procedure mnuOpsieCClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var frmVR2: TfrmVR2; DansPaar : TDansPaar; arrPunte : TPunteSkik; implementation {$R *.dfm} {$R+} Kopiereg voorbehou Blaai om asseblief
Downloaded from hlayiso.com Inligtingstegnologie/V1 13 DBE/November 2013 NSS – Memorandum procedure TfrmVR2.mnuOpsieAClick(Sender: TObject); var sMaat1, sMaat2 : String; cProf : Char; begin {Kodeer Opsie A} sMaat1 := InputBox('Dansmaat 1', 'Sleutel naam van dansmaat 1 in.', 'Sarah'); sMaat2 := InputBox('Dansmaat 2', 'Sleutel naam van dansmaat 2 in.', 'John'); cProf := InputBox('Dans status', 'Sleutel die professionele dans status [A, B, C, D] van danspaar in.', 'C')[1]; DansPaar := TDansPaar.Create(sMaat1, sMaat2, cProf); redV2.Lines.Add(DansPaar.toString); end; procedure TfrmVR2.mnuOpsieBClick(Sender: TObject); var k : Integer; begin {Kodeer Opsie B} For k := 1 to 4 do begin arrPunte[k] := StrToInt(InputBox('Punte', 'Sleutel die punt van beoordelaar ' + IntToStr(k) + ' in.', '')); if (arrPunte[k] > 10) OR (arrPunte[k] < 0) then arrPunte[k] := 0; end;//for redV2.Lines.Clear; redV2.Lines.Add('Danspaar: ' + DansPaar.GetDansMaat1 + ' & ' + DansPaar.GetDansMaat2 ); redV2.Lines.Add('Punte van beoordelaars: ' + IntToStr(arrPunte [1]) + ' ' + IntToStr(arrPunte [2]) + ' ' +IntToStr(arrPunte [3]) + ' ' + IntToStr(arrPunte [4]) ); redV2.Lines.Add('Gewigswaarde: ' + IntToStr(DansPaar.GetGewigswaarde)); redV2.Lines.Add('Finale punt: ' + IntToStr(DansPaar.BerekenFinalePunt(arrPunte))); end; procedure TfrmVR2.mnuOpsieCClick(Sender: TObject); var TLeer : TextFile; sLyn : String; begin {Kodeer Opsie C} redV2.Lines.Clear; AssignFile(TLeer, 'Punte.txt'); Rewrite(TLeer); sLyn := DansPaar.GetDansMaat1 + ',' + DansPaar.GetDansMaat2 + ',' + IntToStr(DansPaar.BerekenFinalePunt(arrPunte)); Writeln(TLeer, sLyn); CloseFile(TLeer); redV2.Lines.Add('Data is na teksleer geskryf'); end; procedure TfrmVR2.mnuVerlaatClick(Sender: TObject); begin Application.Terminate; end; end. Kopiereg voorbehou Blaai om asseblief
Downloaded from hlayiso.com Inligtingstegnologie/V1 14 DBE/November 2013 NSS – Memorandum BYLAAG F: OPLOSSING MET OOP – VRAAG 3: DELPHI 3.1. DANSPAAR KLASEENHEID: unit uDanspaar_memo; // 'n Moontlike oplossing - Vraag 3 - met OOP - Danspaar klas interface type TDanspaar = class(TObject) private fNommer, fStemme : integer; fElimineer : boolean; public constructor Create(iNommer : integer); function GetNommer : integer; procedure VoegStemBy; function GetStemme : integer; function GetElimineer : boolean; procedure SetElimineer(bElimineer : boolean); function toString : String; end; implementation uses SysUtils; { TDanspaar } procedure TDanspaar.VoegStemBy; begin Inc(fStemme , 1); end; constructor TDanspaar.Create(iNommer: integer); begin fNommer := iNommer; fStemme := 0; fElimineer := False; end; function TDanspaar.GetElimineer: boolean; begin Result := fElimineer; end; procedure TDanspaar.SetElimineer(bElimineer: boolean); begin fElimineer := bElimineer; end; function TDanspaar.GetNommer: integer; begin Result := fNommer; end; function TDanspaar.GetStemme: integer; begin Result := fStemme; end; Kopiereg voorbehou Blaai om asseblief
Downloaded from hlayiso.com Inligtingstegnologie/V1 15 DBE/November 2013 NSS – Memorandum function TDanspaar.toString: String; begin IF GetElimineer then Result := IntToStr(fNommer) + #9 + '(Uitgeskakel)' else Result := IntToStr(fNommer) + #9 + IntToStr(fStemme); end; end. 3.2 'N PERSOON KLASEENHEID ('A VOTER'): unit uPersoon_memo; // 'n Moontlike oplossing - Vraag 3 - met OOP - Persoon ('voter') class interface type TPersoon = class(TObject) private fNaam, fKontak : String; fOud : integer; public constructor Create(sNaam, sKontak : String; iOud : integer); function GetOuderdom : integer; function isInternasionaal:boolean; function toString : String; end; implementation { TVoter } constructor TPersoon.Create(sNaam, sKontak: String; iOud : integer); begin fNaam := sNaam; fKontak := sKontak; fOud := iOud; end; function TPersoon.GetOuderdom: integer; begin Result := fOud; end; function TPersoon.isInternasionaal:boolean; begin Result := (Copy(fKontak, 1, 3) <> '+27'); end; function TPersoon.toString: String; begin IF isInternasionaal then Result := fNaam + #9 + fKontak + #9 + 'Internasionale stem' else Result := fNaam + #9 + fKontak; end; end. Kopiereg voorbehou Blaai om asseblief
Downloaded from hlayiso.com Inligtingstegnologie/V1 16 DBE/November 2013 NSS – Memorandum 3.3. VORMEENHEID: unit Vraag3U_oop_memo; // 'n Moontlike oplossing vir Vraag 3 - met OOP interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Menus, StdCtrls, ComCtrls, uPersoon_memo, uDanspaar_memo; //gebruiker gedefinieerde klasse type TfrmQ3OOPMemo = class(TForm) redV3: TRichEdit; mmuMain: TMainMenu; mnuOpsieA: TMenuItem; mnuOpsieB: TMenuItem; mnuVerlaat: TMenuItem; procedure mnuVerlaatClick(Sender: TObject); procedure mnuOpsieAClick(Sender: TObject); procedure mnuOpsieBClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var frmQ3OOPMemo: TfrmQ3OOPMemo; implementation {$R *.dfm} {$R+} var arrDanspare : array[1..14] of TDanspaar; Elimineer : Set of 1..14; procedure TfrmQ3OOPMemo.mnuVerlaatClick(Sender: TObject); begin Application.Terminate; end; procedure TfrmQ3OOPMemo.mnuOpsieAClick(Sender: TObject); var APersoon : TPersoon; TLeer : TextFile; sLyn, sNaam, sKontak : String; iDataTel, iOngeldigTel : integer; iOud, iDanspaar, iNommer, K : integer; begin //Opsie A //Skep die 14 danspare for K := 1 to 14 do arrDanspare[K] := TDanspaar.Create(K); //gebruikertoevoer watter danspare is uitgeskakel Elimineer := []; For K := 1 to 4 do begin try Repeat Kopiereg voorbehou Blaai om asseblief
Downloaded from hlayiso.com Inligtingstegnologie/V1 17 DBE/November 2013 NSS – Memorandum iNommer := StrToInt(InputBox('Uitgeskakelde danspare ', 'Sleutel die nommer van die danspaar in (1..14)', '')); Until (iNommer in [1..14]); except on EConvertError do begin ShowMessage('Sleutel ''n getal in.'); Exit; end; end;//try Elimineer := Elimineer + [iNommer]; arrDanspare[iNommer].SetElimineer(True); end; //Lees data vanaf teksleer AssignFile(TLeer, 'DataV3.txt'); Reset(TLeer); iDataTel := 0; iOngeldigTel := 0; redV3.Lines.Clear; redV3.Paragraph.TabCount := 3; redV3.Paragraph.Tab[0] := 40; redV3.Paragraph.Tab[1] := 200; redV3.Paragraph.Tab[2] := 300; redV3.Lines.Add('Nr.' +#9+ 'Naam' +#9+ 'Selfoonnommer'); While NOT EOF(TLeer) DO begin Readln(TLeer, sLyn); //verdeel data >> naame oud kontak & danspaar nommer sNaam := Copy(sLyn, 1, Pos(';', sLyn)-1); Delete(sLyn, 1, Pos(';', sLyn)); iOud := StrToInt(Copy(sLyn, 1, Pos('#', sLyn)-1)); Delete(sLyn, 1, Pos('#', sLyn)); sKontak := Copy(sLyn, 1, Pos(';', sLyn)-1); Delete(sLyn, 1, Pos(';', sLyn)); iDanspaar := StrToInt(sLyn); APersoon := TPersoon.Create(sNaam, sKontak, iOud); IF (APersoon.GetOuderdom >= 18) and NOT(iDanspaar IN Elimineer) then begin //geldige stem Inc(iDataTel, 1); redV3.Lines.Add(IntToStr(iDataTel) + #9 + APersoon.toString); arrDanspare[iDanspaar].VoegStemBy; end else begin //ongeldige stem Inc(iOngeldigTel, 1); end; end; //while CloseFile(TLeer); redV3.Lines.Add(' '); redV3.Lines.Add('Ongeldige stemme: ' + IntToStr(iOngeldigTel) + #13 + 'Geldige stemme: ' + IntToStr(iDataTel)); APersoon := nil; end; procedure TfrmQ3OOPMemo.mnuOpsieBClick(Sender: TObject); var sLyn : String; K, iLaag : integer; Kopiereg voorbehou Blaai om asseblief
Downloaded from hlayiso.com Inligtingstegnologie/V1 18 DBE/November 2013 NSS – Memorandum begin // Option B redV3.Lines.Clear; redV3.Paragraph.TabCount := 3; redV3.Paragraph.Tab[0] := 100; redV3.Paragraph.Tab[1] := 200; redV3.Paragraph.Tab[2] := 300; sLyn := ''; redV3.Lines.Add('Stemme gedurende week 5 ontvang:'); redV3.Lines.Add('Danspaar' +#9 + 'Stemme'); for K := 1 to 14 do redV3.Lines.Add(arrDanspare[K].toString); //determine the lowest total votes iLaag := 500; For K := 1 to 14 do IF (arrDanspare[K].GetStemme < iLaag) AND (arrDanspare[K].GetStemme <> 0) then begin iLaag := arrDanspare[K].GetStemme; end; redV3.Lines.Add(' '); sLyn := ''; For K:= 1 to 14 do IF (arrDanspare[K].GetStemme = iLaag) then sLyn := sLyn + IntToStr(arrDanspare[K].GetNommer) + ' '; redV3.Lines.Add('Danspaar(e) wat volgende geelimineer kan word: ' + sLyn); end; end. Kopiereg voorbehou Blaai om asseblief
Downloaded from hlayiso.com Inligtingstegnologie/V1 19 DBE/November 2013 NSS – Memorandum BYLAAG G: OPLOSSING SONDER OOP– VRAAG 3: DELPHI unit Vraag3U_memo; //'n Moontlike oplossing vir Vraag 3 - sonder gebruik van OOP interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Menus, StdCtrls, ComCtrls; type TfrmVraag3 = class(TForm) mnuMain: TMainMenu; mnuOpsieA: TMenuItem; mnuOpsieB: TMenuItem; mnuVerlaat: TMenuItem; redV3: TRichEdit; procedure mnuVerlaatClick(Sender: TObject); procedure mnuOpsieAClick(Sender: TObject); procedure mnuOpsieBClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var frmVraag3: TfrmVraag3; implementation {$R *.dfm} {$R+} VAR iDataTel, iOngeldigTel : integer; arrDanspare : array[1..14] of integer; Elimineer : Set of 1..14; procedure TfrmVraag3.mnuOpsieAClick(Sender: TObject); var TLeer : TextFile; sLyn, sNaam, sKontak : String; iOud, iDansPaar, iGetal, K : integer; begin //gebruiker toevoer - uitgeskakelde danspare Elimineer := []; For K := 1 to 14 do arrDanspare[K] := 0; For K := 1 to 4 do begin try Repeat iGetal := StrToInt(InputBox('Uitgeskakelde danspaar', 'Sleutel nommer van danspaar (1..14) in.', '')); Until (iGetal in [1..14]); except on EConvertError do begin ShowMessage('Sleutel asseblief ''n getal in.'); Exit; Kopiereg voorbehou Blaai om asseblief
Downloaded from hlayiso.com Inligtingstegnologie/V1 20 DBE/November 2013 NSS – Memorandum end; end;//try Elimineer := Elimineer + [iGetal]; end; //Lees data vanaf teksleer AssignFile(TLeer, 'DataV3.txt'); Reset(TLeer); iDataTel := 0; iOngeldigTel := 0; redV3.Lines.Clear; redV3.Paragraph.TabCount := 3; redV3.Paragraph.Tab[0] := 40; redV3.Paragraph.Tab[1] := 200; redV3.Paragraph.Tab[2] := 300; redV3.Lines.Add('Nr.' +#9+ 'Naam ' +#9+ 'Selfoonnommer'); While NOT EOF(TLeer) DO begin Readln(TLeer, sLyn); {x} //verdeel data >> naam ouderdom kontaknommer & danspaarnommer sNaam := Copy(sLyn, 1, Pos(';', sLyn)-1); Delete(sLyn, 1, Pos(';', sLyn)); iOud := StrToInt(Copy(sLyn, 1, Pos('#', sLyn)-1)); Delete(sLyn, 1, Pos('#', sLyn)); sKontak := Copy(sLyn, 1, Pos(';', sLyn)-1); Delete(sLyn, 1, Pos(';', sLyn)); iDanspaar := StrToInt(sLyn); //valideer >> oud>=18 danspaar nie uitgeskakel nie if (iOud >= 18) AND NOT(iDanspaar IN Elimineer) then begin //geldige stem Inc(iDataTel, 1); Inc(arrDanspare[iDanspaar], 1); sLyn := IntToStr(iDataTel) + #9 + sNaam + #9 + sKontak; if Copy(sKontak, 1, 3) <> '+27' //internasionale stem then sLyn := sLyn + #9 + 'Internasionale stem'; redV3.Lines.Add(sLyn); end else begin //ongeldige stem - laat buite rekening. Inc(iOngeldigTel, 1); end;//else end; //while CloseFile(TLeer); redV3.Lines.Add(' '); redV3.Lines.Add('Ongeldige stemme: ' + IntToStr(iOngeldigTel) + #13 + 'Geldige stemme: ' + IntToStr(iDataTel)); end; procedure TfrmVraag3.mnuOpsieBClick(Sender: TObject); var K, iCLaag : integer; sLyn : String; begin //Opsie B redV3.Lines.Clear; Kopiereg voorbehou Blaai om asseblief
Downloaded from hlayiso.com Inligtingstegnologie/V1 21 DBE/November 2013 NSS – Memorandum redV3.Paragraph.TabCount := 3; redV3.Paragraph.Tab[0] := 100; redV3.Paragraph.Tab[1] := 200; redV3.Paragraph.Tab[2] := 300; sLyn := ''; redV3.Lines.Add('Stemme gedurende week 5 ontvang:'); redV3.Lines.Add('Danspaar' +#9 + 'Stemme'); for K := 1 to 14 do begin if K in Elimineer then redV3.Lines.Add(IntToStr(K) + #9 +'(Uitgeskakel)') else redV3.Lines.Add(IntToStr(K) + #9 + IntToStr(arrDanspare[K])); end; //Bereken laagste aantal stemme iCLaag := 500; For K := 1 to 14 do IF (arrDanspare[K] < iCLaag) AND (arrDanspare[K] > 0) then iCLaag := arrDanspare[K]; //vertoon danspare wat volgende geelimineer mag word redV3.Lines.Add(' '); sLyn := ''; For K := 1 to 14 do IF (arrDanspare[K] = iCLaag) then sLyn := sLyn + IntToStr(K) + ' '; redV3.Lines.Add('Danspaar(e) wat volgende geelimineer kan word: ' + sLyn); end; procedure TfrmVraag3.mnuVerlaatClick(Sender: TObject); begin Application.Terminate; end; end. Kopiereg voorbehou Blaai om asseblief
Downloaded from hlayiso.com Inligtingstegnologie/V1 22 DBE/November 2013 NSS – Memorandum BYLAAG H: OPLOSSING – VRAAG 1: JAVA // Sleutel jou eksamennommer hier in. import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; import java.sql.*; import java.util.Scanner; public class ToetsVraag1_memo { public static void main(String[] args) throws SQLException, IOException { Scanner sc = new Scanner(System.in); // OF // BufferedReader inKb = new BufferedReader(new InputStreamReader(System.in)); Vraag1 DB = new Vraag1(); System.out.println(); char choice = ' '; do { System.out.println("\n\n KEUSELYS"); System.out.println(); System.out.println(" Opsie A"); System.out.println(" Opsie B"); System.out.println(" Opsie C"); System.out.println(" Opsie D"); System.out.println(" Opsie E"); System.out.println(" Opsie F"); System.out.println(" Opsie G"); System.out.println(); System.out.println(" V - VERLAAT"); System.out.println(" "); System.out.print(" Jou keuse? "); choice = sc.nextLine().toUpperCase().charAt(0); // OF // choice = inKb.readLine().toUpperCase().charAt(0); System.out.println(" "); String sql = ""; switch (choice) { case 'A': // Vraag 1.1 { sql = "SELECT * FROM tblUitslae ORDER BY TipeDans, RoetineNr Desc"; DB.Navraag(sql); break; } //============================================================================= case 'B': // Vraag 1.2 { sql = "SELECT RoetineNr, Week, TipeDans, Punte FROM tblUitslae WHERE (Punte BETWEEN 25 AND 35) AND (Week=5 OR Week=9)"; DB.Navraag(sql); break; } //============================================================================= Kopiereg voorbehou Blaai om asseblief
Downloaded from hlayiso.com Inligtingstegnologie/V1 23 DBE/November 2013 NSS – Memorandum case 'C': // Vraag 1.3 { System.out.println("Vraag 1: Sleutel die TIPE dans in bv. Rumba."); String sX = sc.nextLine(); // OF // String sX = inKb.readLine(); sql = "SELECT TipeDans, Count(*) AS AantalOptredes FROM tblUitslae WHERE TipeDans = '"+ sX + "' GROUP BY TipeDans"; DB.Navraag(sql); break; } //============================================================================= case 'D': // Vraag 1.4 { sql = "SELECT Lied, Dansmaat1, Dansmaat2 FROM tblDansPare, tblUitslae WHERE tblUitslae.DansPaarID=tblDansPare.DansPaarID AND (ProfessioneleDansers = 'B') AND ((Lied Like 'Love%') OR (Lied LIKE '%you%'))"; DB.Navraag(sql); break; } //============================================================================= case 'E': // Vraag 1.5 { sql = "SELECT DansPaarID, Format((Sum(Punte)/Count(*)),'0.000') AS GemiddeldePunte FROM tblUitslae Group BY DansPaarID"; DB.Navraag(sql); break; } //============================================================================= case 'F': // Vraag 1.6 { sql = "SELECT Dansmaat1, Dansmaat2 FROM tblUitslae, tblDansPare WHERE (tblUitslae.DansPaarID=tblDansPare.DansPaarID) AND (Uitslag LIKE 'Uitgeskakel') AND (Week < 12) GROUP BY Dansmaat1, Dansmaat2"; DB.Navraag(sql); break; } //============================================================================= case 'G': // Vraag 1.7 { sql = "UPDATE tblUitslae SET Uitslag = 'WENNERS' WHERE Rondte = 2 AND DansPaarID = 8"; DB.Navraag(sql); break; } } } while (choice != 'V'); DB.disconnect(); System.out.println("Verlaat"); } } Kopiereg voorbehou Blaai om asseblief
Downloaded from hlayiso.com Inligtingstegnologie/V1 24 DBE/November 2013 NSS – Memorandum BYLAAG I: OPLOSSING – VRAAG 2: JAVA 2.1 DANSPAAR OBJECK KLAS: // 'n Moontlike oplossing vir Vraag 2 - class unit public class DansPaar_memo { private String dans_m1; private String dans_m2; private char professioneel; public DansPaar_memo() { } public DansPaar_memo(String maat1, String maat2, char pro) { dans_m1 = maat1; dans_m2 = maat2; professioneel = pro; } public String getDansmaat1() { return dans_m1; } public String getDansmaat2() { return dans_m2; } public char getProfessioneel() { return professioneel; } public int getGewigswaarde() { int gewig = 0; if(professioneel == 'D') gewig =3; if(professioneel == 'B' || professioneel == 'C') { gewig = 2; } if(professioneel == 'A') { gewig = 1; } return gewig; } public int berekenFinalePunt(int[] punte) { int uitslag = 0; for(int i = 0; i < punte.length; i++) { Kopiereg voorbehou Blaai om asseblief
Downloaded from hlayiso.com Inligtingstegnologie/V1 25 DBE/November 2013 NSS – Memorandum if(i == 0 || i == 2) { uitslag += punte[i] * getGewigswaarde(); } else { uitslag += punte[i]; } } return uitslag; } public String toString() { return "Danspaar: " + getDansmaat1()+ " & " + getDansmaat2() + "\n" + "Professionele dansstatus: " + getProfessioneel(); } } 2.3 TOETS/DRYWER KLAS: // 'n Moontlike oplossing vir Vraag 2 - driver/test unit import java.io.*; import javax.swing.*; import java.text.*; import java.util.Scanner; public class ToetsVraag2_memo { public static void main(String[] args) throws Exception { int[] punte = new int[4]; DansPaar_memo danspaar = new DansPaar_memo(); Scanner sc = new Scanner(System.in); //OF BufferedReader kb = new BufferedReader(new InputStreamReader(System.in)); char keuse = ' '; do { System.out.println(" KEUSELYS\n"); System.out.println("Opsie A"); System.out.println("Opsie B"); System.out.println("Opsie C"); System.out.println(""); System.out.println("V - VERLAAT"); System.out.println("\nJou keuse? "); keuse = sc.nextLine().toUpperCase().charAt(0); //OF keuse = kb.readLine().toUpperCase().charAt(0); switch (keuse) { case 'A': // KODEER OPSIE A System.out.println("Sleutel die naam van dansmaat 1 in."); String dansmaat1 = sc.nextLine(); // OF // String dansmaat1 = inKb.readLine(); System.out.println("Sleutel die naam van dansmaat 2 in."); String dansmaat2 = sc.nextLine(); // OF Kopiereg voorbehou Blaai om asseblief
Downloaded from hlayiso.com Inligtingstegnologie/V1 26 DBE/November 2013 NSS – Memorandum // String dansmaat2 = inKb.readLine(); System.out.println("Sleutel professionele status (A/B/C/D) van danspaar in."); char professioneel = sc.nextLine().toUpperCase().charAt(0); // OF // char professioneel = inKb.readLine().toUpperCase().charAt(0); danspaar = new DansPaar_memo(dansmaat1, dansmaat2, professioneel); System.out.println(danspaar); System.out.println(""); break; case 'B': // KODEER OPSIE B System.out.println(); for (int k = 0; k < 4; k++ ){ System.out.println("Sleutel punt van beoordeelaar " + (k+1) + " in."); punte[k] = Integer.parseInt(sc.nextLine()); // OF // punte[k] = Integer.parseInt(inKb.readLine()); if ((punte[k]>10)||(punte[k]<0)) { punte[k]=0; } } System.out.println("Danspaar: " + danspaar.getDansmaat1() + " & " + danspaar.getDansmaat2()); System.out.println("Punte van beoordelaars: " + punte[0] + " " + punte[1] + " " + punte[2] + " " + punte[3]); System.out.println("Gewigswaarde: " + danspaar.getGewigswaarde()); System.out.println("Finale punt: " + danspaar.berekenFinalePunt(punte)); System.out.println(""); break; case 'C': // KODEER OPSIE C BufferedWriter bw = new BufferedWriter(new FileWriter("Punte.txt")); bw.write(danspaar.getDansmaat1() + "," + danspaar.getDansmaat2() + "," + danspaar.berekenFinalePunt(punte)); bw.close(); System.out.println("Data is na teksleer geskryf"); System.out.println(""); break; case 'V': System.out.println("VERLAAT"); } } while (keuse != 'V'); } } Kopiereg voorbehou Blaai om asseblief
Downloaded from hlayiso.com Inligtingstegnologie/V1 27 DBE/November 2013 NSS – Memorandum BYLAAG J: OPLOSSING MET OOP – VRAAG 3: JAVA 3.1. DANSPAAR OBJEK KLAS: //moontlike oplossing vir vraag 3 - met OOP public class Danspaar { private int aantal; private int aantalStemme; private boolean inKomp; // danspaar nog in kompetisie public Danspaar(int aantal, int aantalStemme) { this.aantal = aantal; this.aantalStemme = aantalStemme; inKomp = true; } public int getAantal() { return aantal; } public void setAantal(int aantal) { this.aantal = aantal; } public int getAantalStemme() { return aantalStemme; } public void setAantalStemme(int aantalStemme) { this.aantalStemme = aantalStemme; } public void VoegStemBy() { aantalStemme++; } public void setInKomp() { inKomp = false; } public boolean isInKomp() { return inKomp; } public String toString() { String afvoer = ""; if(inKomp) { afvoer = String.format("%-15s%-10s", getAantal(),getAantalStemme()); } else { afvoer = String.format("%-15s%-10s", getAantal() ,"(Uitgeskakel)"); } Kopiereg voorbehou Blaai om asseblief
Downloaded from hlayiso.com Inligtingstegnologie/V1 28 DBE/November 2013 NSS – Memorandum return afvoer; } } 3.2 'N PERSOON OBJEK KLAS ('A VOTER'): public class Persoon { private String naam; private String selfoon; private int oud; private int stem; public Persoon(String Naam, String Sel, int Oud, int Stem) { naam = Naam; selfoon = Sel; oud = Oud; stem = Stem; } public String getNaam() { return naam; } public String getSelfoon() { return selfoon; } public int getOud() { return oud; } public int getStem() { return stem; } public boolean isInternasionaal() { if(selfoon.substring(0,3).equals("+27")) return true; else return false; } public String toString() { String afvString = ""; if(isInternasionaal()){ afvString = String.format("%-25s%-25s",getNaam(),getSelfoon()); } else { afvString = String.format("%-25s%-25s%-25s",getNaam(),getSelfoon(), "Internasionale stem"); } return afvString; } } Kopiereg voorbehou Blaai om asseblief
Downloaded from hlayiso.com Inligtingstegnologie/V1 29 DBE/November 2013 NSS – Memorandum 3.3 STEMPROSES OBJEK KLAS: import java.io.*; import java.util.Scanner; public class StemProses { Danspaar[] danspaar = new Danspaar[14]; public void leesDanspaar() { for (int teller = 0; teller < 14; teller++) { danspaar[teller] = new Danspaar((teller+1), 0); } } public void leesVanafLeer() throws IOException { Scanner sf = new Scanner(new FileReader("DataV3.txt")); // OF // BufferedReader vLeer = new BufferedReader(new FileReader("DataQ3.txt")); Scanner sc = new Scanner(System.in); // OF // BufferedReader kb = new BufferedReader(new InputStreamReader(System.in)); for (int teller = 0; teller < 4; teller++) { int nommer = 0; do { System.out.println("Sleutel die nommer van die danspaar in (1 - 14) "); try { nommer = Integer.parseInt(sc.nextLine()); } catch (NumberFormatException e) { nommer = 0; System.out.println("nie 'n nommer nie"); } } while (nommer < 1 || nommer > 14); danspaar[nommer-1].setInKomp(); } String afvString = String.format("%-10s%-25s%-25s", "Nr.", "Naam", "Selfoonnommer"); System.out.println(afvString); int geldigeStemme = 0; int onGeldigeStemme = 0; /* Nodig wanneer met BufferedReader werk. * try { * String lyn = vLeer.readLine(); * while (lyn != null) { */ while (sf.hasNext()) { String lyn = sf.nextLine(); String[] temp1 = lyn.split(";"); String[] temp2 = temp1[1].split("#"); String naam = temp1[0]; Kopiereg voorbehou Blaai om asseblief
Downloaded from hlayiso.com Inligtingstegnologie/V1 30 DBE/November 2013 NSS – Memorandum int oud = Integer.parseInt(temp2[0]); String sel = temp2[1]; int stem = Integer.parseInt(temp1[2]); Persoon persoon = new Persoon(naam, sel, oud, stem); if (persoon.getOud()>= 18) { boolean gevind = false; for (int k = 0; k<14; k++) { if (persoon.getStem()==danspaar[k].getAantal()&& !danspaar[k].isInKomp()) gevind = true; } if (gevind == false) { geldigeStemme++; System.out.println(geldigeStemme + "\t" + persoon); danspaar[stem-1].VoegStemBy(); // tel individuele danspaar stemme } else { onGeldigeStemme++; } } else { onGeldigeStemme++; } // lyn = vLeer.readLine(); } /* Nodig wanneer met BufferedReader werk. } catch (FileNotFoundException e) { System.out.println(e); } catch (Exception f) { System.out.println(f); }*/ System.out.println(); System.out.println("Ongeldige stemme: " + onGeldigeStemme); System.out.println("Geldige stemme: " + geldigeStemme); System.out.println("\n"); } public void vertoonDanspare(){ System.out.println("\n\nStemme gedurende week 5 ontvang:"); System.out.printf(String.format("%-15s%-10s\n", "Danspaar", "Stemme")); String afvoer = ""; for (int teller = 0; teller < 14; teller++) { System.out.println(danspaar[teller]); } System.out.println(afvoer); System.out.print("Danspaar(e) wat volgende uitgeskakel kan word: "); int laagste = getLaag(); for (int teller = 0; teller < 14; teller++) { if (laagste == danspaar[teller].getAantalStemme()) { System.out.print(danspaar[teller].getAantal() + " "); } } System.out.println("\n"); Kopiereg voorbehou Blaai om asseblief
Downloaded from hlayiso.com Inligtingstegnologie/V1 31 DBE/November 2013 NSS – Memorandum } public int getLaag() { int laag = 500; for (int teller = 0; teller < 14; teller++) { if (danspaar[teller].getAantalStemme() < laag && danspaar[teller].getAantalStemme() > 0) { laag = danspaar[teller].getAantalStemme(); } } return laag; } } 3.4 TOETS/DRYWER KLAS (STEMKEUSELYS): //Moontlike oplossing vir vraag 3 - met OOP import java.io.*; import java.util.Scanner; public class StemKeuselys { public static void main(String[] args) throws IOException { StemProses stem = new StemProses(); Scanner sc = new Scanner(System.in); // OF // BufferedReader kb = new BufferedReader(new InputStreamReader(System.in)); char keuse = ' '; do { System.out.println(" KEUSELYS\n"); System.out.println("Opsie A"); System.out.println("Opsie B"); System.out.println(""); System.out.println("V - VERLAAT"); System.out.println("\nJou keuse? "); keuse = sc.nextLine().toUpperCase().charAt(0); // OF //keuse = kb.readLine().toUpperCase().charAt(0); switch (keuse) { case 'A': // OPTION A CODE HERE stem.leesDanspaar(); stem.leesVanafLeer(); break; case 'B': // OPTION B CODE HERE stem.vertoonDanspare(); break; case 'Q': System.out.println("QUIT"); } } while (keuse != 'Q'); } } Kopiereg voorbehou Blaai om asseblief
Downloaded from hlayiso.com Inligtingstegnologie/V1 32 DBE/November 2013 NSS – Memorandum BYLAAG K: OPLOSSING SONDER OOP – VRAAG 3: JAVA // 'n Oplossing vir Vraag 3 - sonder OOP import java.io.*; import java.util.Scanner; public class StemProses_memo { int[] dansers = new int[14]; int[] aantalStemme = new int[14]; int[] elim = new int[4]; Scanner sc = new Scanner(System.in); // OF // BufferedReader kb = new BufferedReader(new InputStreamReader(System.in)); StemProses_memo() throws IOException { menu(); } public void menu() throws IOException { char keuse = ' '; do { System.out.println(" KEUSELYS\n"); System.out.println("Opsie A"); System.out.println("Opsie B"); System.out.println(""); System.out.println("V - VERLAAT"); System.out.println("\nJou keuse? "); keuse = sc.nextLine().toUpperCase().charAt(0); // OF // keuse = kb.readLine().toUpperCase().charAt(0); switch (keuse) { case 'A': // kodeer opsie A hier leesDanspare(); leesVanafLeer(); break; case 'B': // kodeer opsie B hier vertoonDanspare(); break; case 'V': System.out.println("VERLAAT"); } } while (keuse != 'V'); } public void leesDanspare() { for (int tel = 0; tel < 14; tel++) { dansers[tel] = tel + 1; aantalStemme[tel] = 0; } } public void leesVanafLeer() throws IOException { Scanner sf = new Scanner(new FileReader("DataV3.txt")); Scanner sc = new Scanner(System.in); Kopiereg voorbehou Blaai om asseblief
Downloaded from hlayiso.com Inligtingstegnologie/V1 33 DBE/November 2013 NSS – Memorandum // OF // BufferedReader vLeer = new BufferedReader(new FileReader("DataV3.txt")); // BufferedReader kb = new BufferedReader(new InputStreamReader(System.in)); for (int tel = 0; tel < 4; tel++) { int nommer = 0; do { System.out.println("Sleutel die nommer van die danspaar (1 - 14) in. "); try { nommer = Integer.parseInt(sc.nextLine()); // OF nommer = Integer.parseInt(kb.readLine()); } catch (NumberFormatException e) { nommer = 0; System.out.println("Nie 'n getal nie."); } } while (nommer < 1 || nommer > 14); elim[tel] = nommer; } String afvString = String.format("%-10s%-25s%-25s", "Nr.", "Naam", "Selfoonnommer"); System.out.println(afvString); int geldigeStemme = 0; int onGeldigeStemme = 0; // Benodig indien met BufferedReader werk. // try { // String lyn = vLeer.readLine(); // while (lyn != null) while (sf.hasNext()) { String lyn = sf.nextLine(); String[] temp1 = lyn.split(";"); String[] temp2 = temp1[1].split("#"); String naam = temp1[0]; int oud = Integer.parseInt(temp2[0]); String sel = temp2[1]; int stem = Integer.parseInt(temp1[2]); if (oud >= 18) { boolean gekry = false; for (int k = 0; k<4; k++) if (stem == elim[k]) gekry = true; if (gekry == false) { geldigeStemme++; if(sel.substring(0,3).equals("+27")){ afvString = String.format("%-10s%-25s%- 25s",geldigeStemme,naam,sel); } else { afvString = String.format("%-10s%-25s%-25s%- 25s",geldigeStemme,naam,sel, "Internasionale stem"); } System.out.println(afvString); aantalStemme[stem - 1]++; //tel individuele danspaar stemme } else { aantalStemme[stem - 1] = 0; onGeldigeStemme++; } Kopiereg voorbehou Blaai om asseblief
Downloaded from hlayiso.com Inligtingstegnologie/V1 34 DBE/November 2013 NSS – Memorandum } else { onGeldigeStemme++; } //lyn = vLeer.readLine(); } /* Benodig indien met BufferedReader werk } catch (FileNotFoundException e) { System.out.println(e); } catch (Exception f) { System.out.println(f); }*/ System.out.println(); System.out.println("Ongeldige stemme: " + onGeldigeStemme); System.out.println("Geldige stemme: " + geldigeStemme); System.out.println("\n"); } public void vertoonDanspare(){ System.out.println("\n\nStemme gedurende week 5 ontvang:"); System.out.printf(String.format("%-15s%-10s\n", "Danspaar", "Stemme")); String afvoer = ""; for (int tel = 0; tel < 14; tel++) { if(aantalStemme[tel] > 0) { afvoer = afvoer + String.format("%-15s%-10s", dansers[tel], aantalStemme[tel]) + "\n"; } else { afvoer = afvoer + String.format("%-15s%-10s", dansers[tel],"(Uitgeskakel)") + "\n"; } } System.out.println(afvoer); System.out.print("Danspaar(e) wat volgende uitgeskakel kan word: "); int laagste = getLaag(); for (int tel = 0; tel < 14; tel++) { if (laagste == aantalStemme[tel]) { System.out.print(dansers[tel] + " "); } } System.out.println("\n"); } public int getLaag() { int laag = 500; for (int tel = 0; tel < 14; tel++) { if (aantalStemme[tel] < laag && aantalStemme[tel] > 0) { laag = aantalStemme[tel]; } } return laag; } public static void main(String[] args) throws IOException { new StemProses_memo(); } } TOTAAL: 120 Kopiereg voorbehou

Study this subject

More from Grade 12 Information Technology

View all