You are on page 1of 31

Kauno technologijos universitetas

Informatikos fakultetas

Objektinis programavimas I (P175B118)


Laboratorinių darbų ataskaita

Faustas Budrius Ir IFF-2/8

Studentas

lekt. SIMONAVIČIUS Kęstutis

Dėstytojas

Kaunas 2023
TURINYS

1. Duomenų klasė.....................................................................................................3
1.1. Darbo užduotis...................................................................................................................3

1.2. Programos tekstas..............................................................................................................3

1.3. Pradiniai duomenys ir rezultatai........................................................................................3

1.4. Dėstytojo pastabos.............................................................................................................3

2. Skaičiavimų klasė................................................................................................4
2.1. Darbo užduotis...................................................................................................................4

2.2. Programos tekstas..............................................................................................................4

2.3. Pradiniai duomenys ir rezultatai......................................................................................20

2.4. Dėstytojo pastabos...........................................................................................................28

3. Konteineris.........................................................................................................29
3.1. Darbo užduotis.................................................................................................................29

3.2. Programos tekstas............................................................................................................29

3.3. Pradiniai duomenys ir rezultatai......................................................................................29

3.4. Dėstytojo pastabos...........................................................................................................29

4. Teksto analizė ir redagavimas..........................................................................30


4.1. Darbo užduotis.................................................................................................................30

4.2. Programos tekstas............................................................................................................30

4.3. Pradiniai duomenys ir rezultatai......................................................................................30

4.4. Dėstytojo pastabos...........................................................................................................30

5. Paveldėjimas......................................................................................................31
5.1. Darbo užduotis.................................................................................................................31

5.2. Programos tekstas............................................................................................................31

5.3. Pradiniai duomenys ir rezultatai......................................................................................31

5.4. Dėstytojo pastabos...........................................................................................................31

2
3
1. Duomenų klasė
1.1. Darbo užduotis

Palikau namuose USB drive, kuriame yra U1-1 ataskaita. Iki pirmadienio papildysiu šitą
ataskaitą U1-1 labaratoriniu darbu. U2-1 rasite žemiau.

1.2. Programos tekstas

1.3. Pradiniai duomenys ir rezultatai

1.4. Dėstytojo pastabos

4
2. Skaičiavimų klasė
2.1. Darbo užduotis

2.2. Programos tekstas

2.3. InOutUtils.cs:
using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.IO;

using System.Xml.Linq;

using System.Runtime.Remoting.Metadata.W3cXsd2001;

namespace U2_1

internal class InOutUtils

/// <summary>

/// Reads data

/// </summary>

/// <param name="fileName"></param>

/// <returns></returns>

public static PlayersRegister ReadPlayers(string fileName)

5
PlayersRegister players = new PlayersRegister();

string[] lines = File.ReadAllLines(fileName, Encoding.UTF8);

int year = int.Parse(lines[0]);

DateTime campStarDate = DateTime.Parse(lines[1]);

DateTime campEndTime = DateTime.Parse(lines[2]);

int skip=0;

foreach(string line in lines)

if(skip<=3)

if(skip==0)

players.Year = int.Parse(lines[0]);

players.CampStartDate = DateTime.Parse(lines[1]);

players.CampEndDate = DateTime.Parse(lines[2]);

skip++;

continue;

string[] Values = line.Split(';');

string name = Values[0];

string lastName = Values[1];

DateTime birthDate = DateTime.Parse(Values[2]);

int hight = int.Parse(Values[3]);

string position = Values[4];

string club = Values[5];

string invitation = Values[6];

bool captain = bool.Parse(Values[7]);

Player player = new Player(name, lastName, birthDate, hight, position, club, invitation, captain);

players.Add(player);

return players;

6
/// <summary>

/// Prints data

/// </summary>

/// <param name="Players"></param>

public static void PrintPlayers(PlayersRegister Players)

Console.WriteLine(new string('-', 153));

Console.WriteLine("| {0, -15} | {1, -15} | {2, -22} | {3, -15} | {4, -15} | {5, -15} | {6, -15} | {7, -15} |",

"Vardas", "Pavardė", "Gimimo data", "Ūgis", "Pozicija", "Klubas", "Pakvietimas", "Kapitonas");

Console.WriteLine(new string('-', 153));

for(int i=0; i<Players.PlayersCount(); i++)

Console.WriteLine(Players.ByIndex(i).ToString());

Console.WriteLine(new string('-', 153));

/// <summary>

///

/// </summary>

/// <param name="SortedPlayers"></param>

public static void PrintHightestPlayers(PlayersRegister SortedPlayers)

Console.WriteLine(new string('-', 55));

Console.WriteLine("| {0, -15} | {1, -15} | {2, -15} |",

"Vardas", "Pavardė", "Amžius");

Console.WriteLine(new string('-', 55));

for (int i = 0; i < SortedPlayers.PlayersCount(); i++)

Console.WriteLine("| {0, -15} | {1, -15} | {2, -15} |",

SortedPlayers.ByIndex(i).Name, SortedPlayers.ByIndex(i).LastName, SortedPlayers.ByIndex(i).Age);

Console.WriteLine(new string('-', 55));

7
/// <summary>

///

/// </summary>

/// <param name="clubs"></param>

public static void PrintClubs(PlayersRegister clubs)

Console.WriteLine(new string('-', 19));

Console.WriteLine("| {0, -15} |", "Pavadinimas");

Console.WriteLine(new string('-', 19));

for(int i = 0; i < clubs.PlayersCount(); i++)

Console.WriteLine("| {0, -15} |", clubs.ByIndex(i).Club);

Console.WriteLine(new string('-', 19));

/// <summary>

///

/// </summary>

/// <param name="Attackers"></param>

public static void PrintAttackers(PlayersRegister Attackers)

Console.WriteLine(new string('-', 55));

Console.WriteLine("| {0, -15} | {1, -15} | {2, -15} |",

"Vardas", "Pavardė", "Ūgis");

Console.WriteLine(new string('-', 55));

for (int i = 0; i < Attackers.PlayersCount(); i++)

Console.WriteLine("| {0, -15} | {1, -15} | {2, -15} |",

Attackers.ByIndex(i).Name, Attackers.ByIndex(i).LastName, Attackers.ByIndex(i).Hight);

Console.WriteLine(new string('-', 55));

8
}

/// <summary>

///

/// </summary>

/// <param name="filename"></param>

/// <param name="clubs"></param>

public static void PrintClubsToCSVFile(string filename, PlayersRegister clubs)

string[] lines = new string[clubs.PlayersCount()+1];

lines[0] = String.Format("{0}", "Pavadinimas:");

for (int i = 0; i < clubs.PlayersCount(); i++)

lines[i+1]=String.Format("{0}", clubs.ByIndex(i).Club);

File.WriteAllLines(filename, lines, Encoding.UTF8);

/// <summary>

/// Prints data to txt file

/// </summary>

/// <param name="fileNameTxt"></param>

/// <param name="Players"></param>

public static void PrintPlayersToTXTFile(string fileNameTxt, PlayersRegister Players)

string[] lines = new string[Players.PlayersCount() + 9];

lines[0] = String.Format("Metai: {0}", Players.Year);

lines[1] = String.Format("Pradžios data: {0}", Players.CampStartDate);

lines[2] = String.Format("Pabaigos data: {0}", Players.CampEndDate);

lines[3] = String.Format(new String('-', 153));

lines[4] = String.Format("| {0, -15} | {1, -15} | {2, -22} | {3, -15} | {4, -15} | {5, -15} | {6, -15} | {7, -15} |",

"Vardas", "Pavardė", "Gimimo data", "Ūgis", "Pozicija", "Klubas", "Pakvietimas", "Kapitonas");

lines[5] = String.Format(new String('-', 153));

for (int i = 0; i < Players.PlayersCount(); i++)

9
lines[i + 6] = String.Format(Players.ByIndex(i).ToString());

lines[i + 7] = String.Format(new String('-', 153));

File.AppendAllLines(fileNameTxt, lines, Encoding.UTF8);

2.4. Player.cs:
using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

namespace U2_1

class Player

public string Name { get; set; }

public string LastName { get; set; }

public DateTime BirthDate { get; set; }

public int Hight { get; set; }

public string Position { get; set; }

public string Club { get; set; }

public string Invitation { get; set; }

public bool Captain { get; set; }

/// <summary>

/// New class

/// </summary>

/// <param name="name"></param>

/// <param name="lastName"></param>

10
/// <param name="BirthDate"></param>

/// <param name="hight"></param>

/// <param name="position"></param>

/// <param name="club"></param>

/// <param name="invitation"></param>

/// <param name="captain"></param>

public Player(string name, string lastName,

DateTime BirthDate, int hight, string position, string club, string invitation, bool captain)

this.BirthDate = BirthDate;

this.Name = name;

this.LastName = lastName;

this.Hight = hight;

this.Club = club;

this.Position = position;

this.Invitation = invitation;

this.Captain = captain;

/// <summary>

/// Calculates players age

/// </summary>

public int Age

get

DateTime today = DateTime.Today;

int age = today.Year - this.BirthDate.Year;

if (this.BirthDate.Date > today.AddYears(-age))

age--;

return age;

11
}

public override string ToString()

string line;

line = string.Format("| {0, -15} | {1, -15} | {2, -22} | {3, -15} |" +

" {4, -15} | {5, -15} | {6, -15} | {7, -15} |",

Name, LastName, BirthDate.ToString("d"),

Hight, Position, Club, Invitation, Captain);

return line;

public override bool Equals(object obj)

return obj is Player player &&

Name == player.Name &&

LastName == player.LastName &&

BirthDate == player.BirthDate &&

Hight == player.Hight &&

Position == player.Position &&

Club == player.Club &&

Invitation == player.Invitation &&

Captain == player.Captain &&

Age == player.Age;

public override int GetHashCode()

int hashCode = -2141991135;

hashCode = hashCode * -1521134295 + EqualityComparer<string>.Default.GetHashCode(Name);

hashCode = hashCode * -1521134295 + EqualityComparer<string>.Default.GetHashCode(LastName);

hashCode = hashCode * -1521134295 + BirthDate.GetHashCode();

12
hashCode = hashCode * -1521134295 + Hight.GetHashCode();

hashCode = hashCode * -1521134295 + EqualityComparer<string>.Default.GetHashCode(Position);

hashCode = hashCode * -1521134295 + EqualityComparer<string>.Default.GetHashCode(Club);

hashCode = hashCode * -1521134295 + EqualityComparer<string>.Default.GetHashCode(Invitation);

hashCode = hashCode * -1521134295 + Captain.GetHashCode();

hashCode = hashCode * -1521134295 + Age.GetHashCode();

return hashCode;

/// <summary>

/// overrides club1 == club2

/// </summary>

/// <param name="club1"></param>

/// <param name="club2"></param>

/// <returns></returns>

public static bool operator == (Player club1, Player club2)

return club1.Club == club2.Club;

/// <summary>

/// overrides club1!=club2

/// </summary>

/// <param name="club1"></param>

/// <param name="club2"></param>

/// <returns></returns>

public static bool operator != (Player club1, Player club2)

return club1.Club != club2.Club;

2.5.

2.6. PlayersRegister.cs:
using System;

13
using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

namespace U2_1

class PlayersRegister

private List<Player> AllPlayers;

public int Year { get; set; }

public DateTime CampStartDate { get; set; }

public DateTime CampEndDate { get; set; }

public PlayersRegister()

AllPlayers = new List<Player>();

public PlayersRegister(List<Player> allPlayers)

foreach (Player player in allPlayers)

this.AllPlayers = allPlayers;

public void Add(Player player)

AllPlayers.Add(player);

public List<Player> List()

List<Player> list = new List<Player>();

foreach (Player player in this.AllPlayers)

14
list.Add(player);

return list;

/// <summary>

/// Calculates players

/// </summary>

/// <returns></returns>

public int PlayersCount()

return this.AllPlayers.Count;

/// <summary>

/// Returns player by index

/// </summary>

/// <param name="index"></param>

/// <returns></returns>

public Player ByIndex(int index)

return this.AllPlayers[index];

/// <summary>

/// Finds Hightest player

/// </summary>

/// <returns></returns>

public int FindHightest()

int hightest = 0;

for (int i = 0; i < PlayersCount(); i++)

if (ByIndex(i).Hight > hightest)

hightest = ByIndex(i).Hight;

15
}

return hightest;

/// <summary>

/// Equals which one is higher

/// </summary>

/// <param name="hightest1"></param>

/// <param name="hightest2"></param>

/// <returns></returns>

public int EqualsHightests(int hightest1, int hightest2)

int hightest;

if(hightest1 > hightest2)

hightest = hightest1;

else

hightest = hightest2;

return hightest;

public void SortHightestPLayers(PlayersRegister SortedPlayers, int hightest)

foreach(Player player in AllPlayers)

if(player.Hight.Equals(hightest))

SortedPlayers.AllPlayers.Add(player);

16
/// <summary>

/// Finds clubs

/// </summary>

/// <param name="Clubs"></param>

public void FindClubs(PlayersRegister Clubs)

int a = 0;

int b = 0;

foreach(Player player in AllPlayers)

if(a == 0)

Clubs.Add(player);

a++;

if(a>0)

b = 0;

for(int i=0; i<Clubs.PlayersCount(); i++)

if(player.Club.Equals(Clubs.ByIndex(i).Club))

b++;

if(b==0)

Clubs.Add(player);

/// <summary>

17
/// Finds attackers

/// </summary>

/// <param name="Attackers"></param>

public void FindAttackers(PlayersRegister Attackers)

foreach( Player player in AllPlayers)

if(player.Position.Equals("Puolėjas"))

Attackers.Add(player);

2.7.

2.8. Program.cs:
using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.IO;

namespace U2_1

/// <summary>

/// Main

/// </summary>

internal class Program

static void Main(string[] args)

18
Console.InputEncoding = Encoding.GetEncoding(1257);

Console.OutputEncoding = Encoding.UTF8;

//Prints Register info

PlayersRegister register1 = InOutUtils.ReadPlayers(@"Players1.csv");

PlayersRegister register2 = InOutUtils.ReadPlayers(@"Players2.csv");

Console.WriteLine("Registro informacija:");

InOutUtils.PrintPlayers(register1);

InOutUtils.PrintPlayers(register2);

//Prints and calculates hightest players

PlayersRegister SortedPlayers = new PlayersRegister();

int HightestNumber1 = register1.FindHightest();

int HightestNumber2 = register2.FindHightest();

int HightestNumber = register1.EqualsHightests(HightestNumber1, HightestNumber2);

register1.SortHightestPLayers(SortedPlayers, HightestNumber);

register2.SortHightestPLayers(SortedPlayers, HightestNumber);

Console.WriteLine("Aukščiausi žaidėjai:");

InOutUtils.PrintHightestPlayers(SortedPlayers);

Console.WriteLine();

//Prints and finds attackers

PlayersRegister Attackers = new PlayersRegister();

Console.WriteLine("Puolėjai:");

register1.FindAttackers(Attackers);

register2.FindAttackers(Attackers);

InOutUtils.PrintAttackers(Attackers);

Console.WriteLine();

//Prints and finds clubs

PlayersRegister Clubs = new PlayersRegister();

register1.FindClubs(Clubs);

register2.FindClubs(Clubs);

19
Console.WriteLine("Klubai, kuriuose žaidė kandidatai į rinktinę");

InOutUtils.PrintClubs(Clubs);

Console.WriteLine();

//Prints clubs to csv file

string filenameCSV = "Clubs" + ".csv";

InOutUtils.PrintClubsToCSVFile(filenameCSV, Clubs);

//Prints data to txt file

string filenameTXT = "Data" + ".txt";

if (File.Exists(filenameTXT))

File.Delete(filenameTXT);

InOutUtils.PrintPlayersToTXTFile(filenameTXT, register1);

InOutUtils.PrintPlayersToTXTFile(filenameTXT, register2);

2.9. Pradiniai duomenys ir rezultatai

Duomenys:

Players1.csv

2021

2021-05-05

2021-07-05

Albertas;Albertino;1951-05-01;181;Gynėjas;Kaunas;Pakviestas;TRUE

Marius;Mariauskas;1952-05-02;182;Gynėjas;Vilnius;Pakviestas;FALSE

Gvidas;Gvidauskas;1953-05-03;186;Gynėjas;Vilnius;Nepakviestas;FALSE

Vytis;Vytauskas;1954-05-03;186;Gynėjas;Kaunas;Pakviestas;TRUE

20
Tadas;Tadauskas;1956-05-07;185;Gynėjas;Klaipėda;Pakviestas;FALSE

Gedas;Gedauskas;1956-05-07;186;Puolėjas;Kaunas;Pakviestas;FALSE

Players2.csv

2022

2022-05-05

2022-07-05

Aivis;Aiviauskas;1951-05-01;186;Gynėjas;Kaunas;Pakviestas;TRUE

Darius;Dariauskas;1952-05-02;182;Puolėjas;Uzupis;Pakviestas;FALSE

Aukštas;Aukščiausias;1953-05-03;186;Gynėjas;Vilnius;Nepakviestas;FALSE

Dovydas;Dovydauskas;1954-05-03;184;Puolėjas;Vilnius;Pakviestas;TRUE

Andrius;Andriauskas;1956-05-07;185;Gynėjas;Klaipėda;Pakviestas;FALSE

Aukštuolis;Aukštuoliausias;1956-05-07;186;Puolėjas;Kaunas;Pakviestas;FALSE

21
Rezultatai:

Console:

Registro informacija:

----------------------------------------------------------------------------------------------------------------
-----------------------------------------

| Vardas | Pavardė | Gimimo data | Ūgis | Pozicija | Klubas


| Pakvietimas | Kapitonas |

----------------------------------------------------------------------------------------------------------------
-----------------------------------------

| Marius | Mariauskas | 5/2/1952 | 182 | Gynėjas | Vilnius


| Pakviestas | False |

| Gvidas | Gvidauskas | 5/3/1953 | 186 | Gynėjas | Vilnius


| Nepakviestas | False |

| Vytis | Vytauskas | 5/3/1954 | 186 | Gynėjas | Kaunas |


Pakviestas | True |

| Tadas | Tadauskas | 5/7/1956 | 185 | Gynėjas | Klaipėda


| Pakviestas | False |

| Gedas | Gedauskas | 5/7/1956 | 186 | Puolėjas | Kaunas


| Pakviestas | False |

----------------------------------------------------------------------------------------------------------------
-----------------------------------------

----------------------------------------------------------------------------------------------------------------
-----------------------------------------

| Vardas | Pavardė | Gimimo data | Ūgis | Pozicija | Klubas


| Pakvietimas | Kapitonas |

----------------------------------------------------------------------------------------------------------------
-----------------------------------------

| Darius | Dariauskas | 5/2/1952 | 182 | Puolėjas | Uzupis |


Pakviestas | False |

| Aukštas | Aukščiausias | 5/3/1953 | 186 | Gynėjas | Vilnius


| Nepakviestas | False |

22
| Dovydas | Dovydauskas | 5/3/1954 | 184 | Puolėjas | Vilnius
| Pakviestas | True |

| Andrius | Andriauskas | 5/7/1956 | 185 | Gynėjas | Klaipėda


| Pakviestas | False |

| Aukštuolis | Aukštuoliausias | 5/7/1956 | 186 | Puolėjas | Kaunas


| Pakviestas | False |

----------------------------------------------------------------------------------------------------------------
-----------------------------------------

Aukščiausi žaidėjai:

-------------------------------------------------------

| Vardas | Pavardė | Amžius |

-------------------------------------------------------

| Gvidas | Gvidauskas | 69 |

| Vytis | Vytauskas | 68 |

| Gedas | Gedauskas | 66 |

| Aukštas | Aukščiausias | 69 |

| Aukštuolis | Aukštuoliausias | 66 |

-------------------------------------------------------

Puolėjai:

-------------------------------------------------------

| Vardas | Pavardė | Ūgis |

-------------------------------------------------------

| Gedas | Gedauskas | 186 |

| Darius | Dariauskas | 182 |

| Dovydas | Dovydauskas | 184 |

| Aukštuolis | Aukštuoliausias | 186 |

-------------------------------------------------------

Klubai, kuriuose žaidė kandidatai į rinktinę

23
-------------------

| Pavadinimas |

-------------------

| Vilnius |

| Kaunas |

| Klaipėda |

| Uzupis |

-------------------

24
Data.txt:

Clubs.csv:

Duomenys :

Players1.csv

Players2.csv

25
Rezultatai:

Console:

Seniausias/i zaidejas/i

Registro informacija:
-----------------------------------------------------------------------------------------------------------------------------------------------
----------
| Vardas | Pavardė | Gimimo data | Ūgis | Pozicija | Klubas | Pakvietimas |
Kapitonas |
-----------------------------------------------------------------------------------------------------------------------------------------------
----------
| Marius | Mariauskas | 5/2/1952 | 182 | Gynėjas | Vilnius | Pakviestas | False
|
| Gvidas | Gvidauskas | 5/3/1953 | 186 | Gynėjas | Vilnius | Nepakviestas | False
|
| Vytis | Vytauskas | 5/3/1954 | 186 | Gynėjas | Kaunas | Pakviestas | True
|
| Tadas | Tadauskas | 5/7/1956 | 186 | Gynėjas | Klaipėda | Pakviestas | False
|
| Gedas | Gedauskas | 5/7/1956 | 186 | Puolėjas | Kaunas | Pakviestas | False
|
-----------------------------------------------------------------------------------------------------------------------------------------------
----------
-----------------------------------------------------------------------------------------------------------------------------------------------
----------
| Vardas | Pavardė | Gimimo data | Ūgis | Pozicija | Klubas | Pakvietimas |
Kapitonas |
-----------------------------------------------------------------------------------------------------------------------------------------------
----------
| Darius | Dariauskas | 5/2/1952 | 186 | Gynėjas | Kaunas | Pakviestas | False
|
| Aukštas | Aukščiausias | 5/3/1953 | 186 | Gynėjas | Kaunas | Nepakviestas | False
|
| Dovydas | Dovydauskas | 5/3/1954 | 186 | Gynėjas | Kaunas | Pakviestas | True
|
| Andrius | Andriauskas | 5/7/1956 | 185 | Gynėjas | Kaunas2 | Pakviestas | False
|
| Aukštuolis | Aukštuoliausias | 5/7/1956 | 186 | Kaunas | Kaunas | Pakviestas | False
|
-----------------------------------------------------------------------------------------------------------------------------------------------
----------
Aukščiausi žaidėjai:
-------------------------------------------------------

26
| Vardas | Pavardė | Amžius |
-------------------------------------------------------
| Gvidas | Gvidauskas | 69 |
| Vytis | Vytauskas | 68 |
| Tadas | Tadauskas | 66 |
| Gedas | Gedauskas | 66 |
| Darius | Dariauskas | 70 |
| Aukštas | Aukščiausias | 69 |
| Dovydas | Dovydauskas | 68 |
| Aukštuolis | Aukštuoliausias | 66 |
-------------------------------------------------------

Puolėjai:
-------------------------------------------------------
| Vardas | Pavardė | Ūgis |
-------------------------------------------------------
| Gedas | Gedauskas | 186 |
-------------------------------------------------------

Klubai, kuriuose žaidė kandidatai į rinktinę


-------------------
| Pavadinimas |
-------------------
| Vilnius |
| Kaunas |
| Klaipėda |
| Kaunas |
| Kaunas2 |
-------------------
Data.txt

Clubs.csv

27
2.10. Dėstytojo pastabos

28
3. Konteineris
3.1. Darbo užduotis

3.2. Programos tekstas

3.3. Pradiniai duomenys ir rezultatai

3.4. Dėstytojo pastabos

29
4. Teksto analizė ir redagavimas
4.1. Darbo užduotis

4.2. Programos tekstas

4.3. Pradiniai duomenys ir rezultatai

4.4. Dėstytojo pastabos

30
5. Paveldėjimas
5.1. Darbo užduotis

5.2. Programos tekstas

5.3. Pradiniai duomenys ir rezultatai

5.4. Dėstytojo pastabos

31

You might also like