Advertisement
Guest User

Untitled

a guest
May 25th, 2019
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 6.76 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. /* Za seminarsko nalogo sem se odločil, da bom izdelal aplikacijo IMENIK. */
  8.  
  9. namespace Seminarska_Naloga
  10. {
  11.     class Seminarska_Naloga
  12.     {
  13.         // Funkcija za "čiščenje" konzolnega okna in ponovni prikaz menija.
  14.         public static void VrniMenu() {
  15.             Console.WriteLine("------------");
  16.             Console.Write("Za vrnitev v menu pritisni poljubno tipko.");
  17.             Console.ReadKey();
  18.             Console.Clear();
  19.             GlavniMeni();
  20.         }
  21.  
  22.         // Funkcija za prikaz glavnega menija
  23.         public static void GlavniMeni()
  24.         {
  25.             Console.WriteLine("IMENIK");
  26.             Console.WriteLine("------------");
  27.             Console.WriteLine("V. Vnos");
  28.             Console.WriteLine("S. Seznam");
  29.             Console.WriteLine("B. Brisanje");
  30.             Console.WriteLine("I. Iskanje");
  31.             Console.WriteLine("------------");
  32.             Console.WriteLine("Z. Izhod");
  33.             Console.Write("Vnesi svojo izbiro: ");
  34.         }
  35.        
  36.         // Funkcija, s katero pridobimo podatke od uporabnika.
  37.         public static string[] VnosKontakta(string[] imenik, int indexPolje)
  38.         {
  39.             string imePriimek, naslov, sestavljeniPodatki;
  40.             int posta;
  41.  
  42.             /* Uporabnik vnese ime in priimek, zanka preveri število vnesenih znakov. Če je
  43.              * preveliko na to opozori uporabnika in zahteva ponovni vnos. */
  44.             Console.Write("Vnesi ime in priimek (max. 30 znakov): ");
  45.             imePriimek = Console.ReadLine();
  46.             while (imePriimek.Length > 30)
  47.             {
  48.                 Console.WriteLine("Vnesel si preveliko število znakov. Poizkusi ponovno.");
  49.                 Console.Write("Vnesi ime in priimek (max. 30 znakov): ");
  50.                 imePriimek = Console.ReadLine();
  51.             }
  52.  
  53.             /* Uporabnik vnese naslov, zanka preveri število vnesenih znakov. Če je
  54.              * preveliko na to opozori uporabnika in zahteva ponovni vnos. */
  55.             Console.Write("Vnesi naslov (max. 20 znakov): ");
  56.             naslov = Console.ReadLine();
  57.             while (naslov.Length > 20)
  58.             {
  59.                 Console.WriteLine("Vnesel si preveliko število znakov. Poizkusi ponovno.");
  60.                 Console.Write("Vnesi naslov (max. 20 znakov): ");
  61.                 naslov = Console.ReadLine();
  62.             }
  63.  
  64.             // Uporabnik vnese poštno število
  65.             Console.Write("Vnesi poštno številko: ");
  66.             posta = int.Parse(Console.ReadLine());
  67.  
  68.             /* Vnesene podatke združimo v enoten string sestavljeniPodatki. Spremenljivko
  69.              * posta pretvorimo nazaj v string. */
  70.             sestavljeniPodatki = imePriimek + " " + naslov + " " + posta.ToString();
  71.  
  72.             // Sestavljen niz sestavljeniPodatki zapišemo v polje.
  73.             imenik[indexPolje] = sestavljeniPodatki;
  74.  
  75.             // Vrnemo polje imenik
  76.             return imenik;
  77.         }
  78.  
  79.         // Funkcija, ki bo omogočala izpis seznama kontaktov.
  80.         public static void IzpisSeznamaKontaktov(string[] imenik) {
  81.             for (int i = 0; i < imenik.Length; i++) {
  82.                 //Console.Write(i + 1 + ". kontakt: ");
  83.                 if(imenik[i] == null) {
  84.  
  85.                 }
  86.                 else {
  87.                     Console.WriteLine(imenik[i]);
  88.                 }
  89.             }
  90.         }
  91.          /* Funkcija, ki išče iskani niz (zaporedno). Uporabil sem for zanko, ki gre skozi polje in preveri vsak element v
  92.           * njemu z IndexOf metodo, če vse string, ki ga iščemo. Če IndexOf vrne katerokoli drugo vrednost razen -1
  93.           * pomeni, da smo string našli in nam vrne njegov indeks. Če iskanega niza ne najdemo v polju nam funkcija vrne -1. */
  94.         public static int IskanjeZaporedno(string[] imenik, string iskaniNiz) {
  95.             for (int i = 0; i < imenik.Length; i++) {
  96.                 if (imenik[i].IndexOf(iskaniNiz) != -1)
  97.                     return i;
  98.             }
  99.             return -1;
  100.         }
  101.  
  102.         public static void IskanjeBinarno(string[] imenik, string iskaniNiz) {
  103.             Array.Sort(imenik);
  104.             //Array.Sort(imenik, (a, b) => a == null ? 1 : b == null ? -1 : a.CompareTo(b));
  105.  
  106.             //int i = 1;
  107.             //foreach (var item in imenik) {
  108.             //    Console.WriteLine(i + ". " + item);
  109.             //    i++;
  110.             //}
  111.             int pos = Array.BinarySearch(imenik, iskaniNiz);
  112.             Console.WriteLine(pos);
  113.         }
  114.  
  115.         static void Main(string[] args)
  116.         {
  117.             // Incializacija spremenljivk
  118.             bool izvajanjeWhile = true;
  119.             char izbiraVMeniju;
  120.             string[] imenik = new string[50];
  121.             int indexPolje = 0;
  122.             string iskaniNiz;
  123.  
  124.             // Priklic metode, ki prikaže glavni meni
  125.             GlavniMeni();
  126.  
  127.             // Zanka, ki se bo izvajala dokler uporabnik ne bo vnesel 'Z'
  128.             while (izvajanjeWhile)
  129.             {
  130.                 // Uporabnikov vnos
  131.                 izbiraVMeniju = Char.ToUpper(char.Parse(Console.ReadLine()));
  132.  
  133.                 // Menu
  134.                 switch (izbiraVMeniju)
  135.                 {
  136.                     case 'V':
  137.                         VnosKontakta(imenik, indexPolje);
  138.                         indexPolje++;
  139.                         VrniMenu();
  140.                         break;
  141.                     case 'S':
  142.                         Console.WriteLine("Seznam kontaktov: ");
  143.                         IzpisSeznamaKontaktov(imenik);
  144.                         VrniMenu();
  145.                         break;
  146.                     case 'B':
  147.                         Console.Clear();
  148.                         GlavniMeni();
  149.                         break;
  150.                     case 'I':
  151.                         Console.Write("Vnesi ime in priimek osebe, ki jo iščeš: ");
  152.                         iskaniNiz = Console.ReadLine();
  153.                         //IskanjeZaporedno(imenik, iskaniNiz);
  154.                         //if (IskanjeZaporedno(imenik, iskaniNiz) == -1) {
  155.                         //    Console.WriteLine("Te osebe ni v imeniku!");
  156.                         //}
  157.                         //else {
  158.                         //    Console.WriteLine("Podatki o iskani osebi: " + imenik[IskanjeZaporedno(imenik, iskaniNiz)]);
  159.                         //}
  160.  
  161.                         IskanjeBinarno(imenik, iskaniNiz);
  162.  
  163.                         break;
  164.                     case 'Z':
  165.                         Console.Write("Program Imenik se zapira.");
  166.                         izvajanjeWhile = false;
  167.                         break;
  168.                 }
  169.             }
  170.  
  171.             Console.ReadKey();
  172.         }
  173.     }
  174. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement