Skip to content

Instantly share code, notes, and snippets.

@jandolejs
Forked from SunnyDark99/obec.sh
Last active November 8, 2022 08:54
Show Gist options
  • Save jandolejs/7d7222ed1c28c48e6e5b7fac4b1943df to your computer and use it in GitHub Desktop.
Save jandolejs/7d7222ed1c28c48e6e5b7fac4b1943df to your computer and use it in GitHub Desktop.
/*
* Created by SharpDevelop.
* User: prero
* Date: 22.05.2020
* Time: 14:23
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
namespace Obce_Semestralka
{
/// <summary>
/// Description of Obce.
/// </summary>
public class Obec
{
public string nazevO {get; set;}
public int smerovaci {get; set;}
public int obyvatele {get; set;}
public string kraj {get; set;}
public string okres {get; set;}
public string posta {get; set;}
public Obec(string nazev, int smerovaci, int obyvatele, string kraj, string okres, string posta)
{
this.nazevO = nazevO;
this.smerovaci = smerovaci;
this.obyvatele = obyvatele;
this.kraj = kraj;
this.okres = okres;
this.posta = posta;
}
public override string ToString()
{
return string.Format("[{0}, {1}, {2}, {3}, {4}, {5}]", nazevO, smerovaci, obyvatele, kraj, okres, posta);
}
}
}
/*
* Created by SharpDevelop.
* User: prero
* Date: 21.05.2020
* Time: 16:58
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using System.IO;
using System.Collections.Generic;
using System.Text;
namespace Obce_Semestralka
{
class Program
{
public static int PocetStran;
public static int Strana = 1;
public static List<Obec> Obce = new List<Obec>();
public static List<Obec> FiltrObce = new List<Obec>();
public static bool Pokracuj = true;
public static void Main(string[] args)
{
Console.CursorVisible = false;
Console.OutputEncoding = Encoding.UTF8;
Menu();
}
public static void NactiObce()
{
string nazevS = "obce.txt";
if (File.Exists(nazevS))
{
using (StreamReader sr = new StreamReader(nazevS, Encoding.UTF8))
{
string line;
while ((line = sr.ReadLine()) != null)
{
string [] VesInfo = line.Split(';');
string nazevO = VesInfo[0];
int smerovaci = Convert.ToInt32(VesInfo[1]);
int obyvatele = Convert.ToInt32(VesInfo[2]);
string kraj = VesInfo[3];
string okres = VesInfo[4];
string posta = VesInfo[5];
Obec obec = new Obec(nazevO, smerovaci, obyvatele, kraj, okres, posta);
Obce.Add(obec);
}
}
}else
{
Console.WriteLine("Soubor obci nenalezen.");
}
}
public static void Menu()
{
while(Pokracuj)
{
VykresliMenu();
ConsoleKeyInfo info = Console.ReadKey();
switch (info.Key) {
case ConsoleKey.F1:
NactiObce();
VypsaniObci(Obce, "Vypsani vsech obci");
break;
case ConsoleKey.F2:
NactiObce();
PismenoObce();
break;
case ConsoleKey.F3:
NactiObce();
VypisObceVKraji();
break;
case ConsoleKey.F4:
NactiObce();
VypisPoctuObyvatel();
break;
case ConsoleKey.Escape:
Pokracuj = false;
break;
}
Console.Clear();
}
}
public static void VykresliMenu()
{
Console.BackgroundColor = ConsoleColor.DarkBlue;
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine("Databaze obci Ceske Republiky");
Console.WriteLine("Napsal Michal Prerost 2020");
Console.BackgroundColor = ConsoleColor.DarkGreen;
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine("F1 - Vypis vse");
Console.WriteLine("F2 - Hledej dle prvniho pismene");
Console.WriteLine("F3 - Hledej dle kraje");
Console.WriteLine("F4 - Hledej dle poctu obyvatel");
Console.BackgroundColor = ConsoleColor.DarkRed;
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine("ESC - Konec");
Console.ResetColor();
Obce.Clear();
FiltrObce.Clear();
Strana = 1;
PocetStran = 0;
}
public static void Napoveda()
{
Console.BackgroundColor = ConsoleColor.DarkGreen;
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine("PgUp/PgDn - listuj nahoru/dolu\tF10 - zpet");
Console.ResetColor();
}
public static void HlavickaSeznamu()
{
Console.BackgroundColor = ConsoleColor.DarkYellow;
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine("NAZEV//PSC//OBYVATEL//KRAJ//OKRES//POSTA");
Console.ResetColor();
}
public static void VypsaniObci(List<Obec> obceVstup, string nadpis)
{
if (obceVstup.Count % 20 == 0) {
PocetStran = obceVstup.Count / 20;
}
else{
PocetStran = (obceVstup.Count / 20) + 1;
}
int MinObci = 0;
int MaxObci = 20;
Pokracuj = true;
while (Pokracuj) {
Console.Clear();
Napoveda();
HlavickaSeznamu();
for (int i = MinObci; i < obceVstup.Count; i++) {
if (i < MaxObci - 1) {
Console.WriteLine(obceVstup[i]);
}
}
ConsoleKeyInfo info = Console.ReadKey();
switch (info.Key) {
case ConsoleKey.PageDown:
if (MaxObci < obceVstup.Count) {
MinObci += 20;
MaxObci += 20;
Strana++;
}else{
continue;
}
break;
case ConsoleKey.PageUp:
if (MinObci > 0) {
MinObci -= 20;
MaxObci -= 20;
Strana--;
}else{
continue;
}
break;
case ConsoleKey.F10:
Console.Clear();
Pokracuj = false;
break;
}
}
MaxObci = 20;
MinObci = 0;
Pokracuj = true;
}
public static void PismenoObce()
{
Console.Write("Zadej zacinajici pismeno obce a stiskni Enter: ");
bool Nema = true;
string Pismeno = Console.ReadLine().ToUpper();
for (int i = 0; i < Obce.Count; i++) {
if (Obce[i].nazevO.StartsWith(Pismeno)) {
FiltrObce.Add(Obce[i]);
Nema = false;
}
}
if (Nema) {
Console.ForegroundColor = ConsoleColor.DarkGreen;
Console.WriteLine(@"Obec zacinajici na pismeno {0} neni v databzi.", Pismeno);
Console.ResetColor();
Console.WriteLine("F10 - zpet");
Nema = true;
Console.ReadKey(true);
}
else{
VypsaniObci(FiltrObce, "F2 - Filtr: Obce podle pismene:");
}
PocetStran = 0;
}
public static void NajdiObceVKraji(string kraj)
{
for (int i = 0; i < Obce.Count; i++) {
if (kraj == Obce[i].kraj) {
FiltrObce.Add(Obce[i]);
}
}
VypsaniObci(FiltrObce, "F3 - Filtr: Obce v kraji:");
}
public static void VypisObceVKraji()
{
Console.WriteLine("Stiskni pismeno kraje, jez chces vypsat:");
Console.WriteLine("A - Praha B - Jihomoravsky C - Jihocesky E - Pardubicky");
Console.WriteLine("H - Kralovehradecky J - Vysocina K - Karlovarsky L - Liberecky");
Console.WriteLine("M - Olomoucky P - Plzensky S - Stredocesky T - Moravskoslezsky");
Console.WriteLine("U - Ustecky Z - Zlinsky");
ConsoleKeyInfo info = Console.ReadKey();
switch (info.Key) {
case ConsoleKey.A:
NajdiObceVKraji("Praha");
break;
case ConsoleKey.B:
NajdiObceVKraji("Jihomoravsky");
break;
case ConsoleKey.C:
NajdiObceVKraji("Jihocesky");
break;
case ConsoleKey.E:
NajdiObceVKraji("Pardubicky");
break;
case ConsoleKey.H:
NajdiObceVKraji("Kralovehradecky");
break;
case ConsoleKey.J:
NajdiObceVKraji("Vysocina");
break;
case ConsoleKey.K:
NajdiObceVKraji("Karlovarsky");
break;
case ConsoleKey.L:
NajdiObceVKraji("Liberecky");
break;
case ConsoleKey.M:
NajdiObceVKraji("Olomoucky");
break;
case ConsoleKey.P:
NajdiObceVKraji("Plzensky");
break;
case ConsoleKey.S:
NajdiObceVKraji("Stredocesky");
break;
case ConsoleKey.T:
NajdiObceVKraji("Moravskoslezský");
break;
case ConsoleKey.U:
NajdiObceVKraji("Ustecky");
break;
case ConsoleKey.Z:
NajdiObceVKraji("Zlinsky");
break;
}
}
public static void FiltrPoctuObyvatel(int MinPO, int MaxPO)
{
bool Ma = false;
for (int i = 0; i < Obce.Count; i++) {
if (Obce[i].obyvatele <= MaxPO && Obce[i].obyvatele > MinPO) {
FiltrObce.Add(Obce[i]);
Ma = true;
}
}
if (!Ma) {
Console.WriteLine();
Console.ForegroundColor = ConsoleColor.DarkGreen;
Console.WriteLine("Zadna obec v rozmezí {0:0,0} - {1:0,0} obyvatel neni.", MinPO, MaxPO);
Console.ResetColor();
Console.WriteLine("F10 - zpet");
Console.ReadKey(true);
}else{
VypsaniObci(FiltrObce, "F4 - Filtr poctu obyvatel");
}
}
public static void VypisPoctuObyvatel()
{
Console.WriteLine("Stiskni pismeno pro zobrazeni obci podle poctu obyvatel:");
Console.WriteLine("A - Obce s 0 - 1000 obyvatel");
Console.WriteLine("B - Obce s 1001 - 10 000 obyvatel");
Console.WriteLine("C - Obce s 10 001 - 100 000 obyvatel");
Console.WriteLine("D - Obce s 100 001 - 500 000 obyvatel");
ConsoleKeyInfo info = Console.ReadKey();
switch (info.Key) {
case ConsoleKey.A:
FiltrPoctuObyvatel(0, 1000);
break;
case ConsoleKey.B:
FiltrPoctuObyvatel(1001, 10000);
break;
case ConsoleKey.C:
FiltrPoctuObyvatel(10001, 100000);
break;
case ConsoleKey.D:
FiltrPoctuObyvatel(100001, 500000);
break;
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment