//Button för "sök efter bok" private void buttonSearchBook_Click(object sender, EventArgs e) { //Beroende på vilket sökkriterium som användaren valt så ändras den sista parametern i metoden SökBok() //Jag är säker på att det går att korta ner det gär på något sätt för att inte behöva nämna alla parametrar //vid varje sökning men har inte haft tid att leta upp någon lösning. if (checkBoxTitel.Checked) { outputBox.Text = Bibliotekarie.SökBok(userInputBoxTitel.Text, userInputBoxSkribent.Text, Convert.ToInt32(userInputBoxUtgivningsår.Value), userInputBoxTyp.Text, "Titel"); } else if (checkBoxSkribent.Checked) { outputBox.Text = Bibliotekarie.SökBok(userInputBoxTitel.Text, userInputBoxSkribent.Text, Convert.ToInt32(userInputBoxUtgivningsår.Value), userInputBoxTyp.Text, "Skribent"); } else if (checkBoxTyp.Checked) { outputBox.Text = Bibliotekarie.SökBok(userInputBoxTitel.Text, userInputBoxSkribent.Text, Convert.ToInt32(userInputBoxUtgivningsår.Value), userInputBoxTyp.Text, "Typ"); } else if (checkBoxUtgivningsår.Checked) { outputBox.Text = Bibliotekarie.SökBok(userInputBoxTitel.Text, userInputBoxSkribent.Text, Convert.ToInt32(userInputBoxUtgivningsår.Value), userInputBoxTyp.Text, "Utgivningsår"); } else { outputBox.Text = "\n\tInget sökkriterium valt. . ."; } }
//Button som lägger till ny bok private void ButtonAddNewBook_Click(object sender, EventArgs e) { outputBox.Text = Bibliotekarie.SkapaBok( userInputBoxTitel.Text, userInputBoxSkribent.Text, Convert.ToInt32(userInputBoxUtgivningsår.Value), userInputBoxTyp.Text, true); }
//Metod som exporterar boklistan till en textfil public static void ExportFile(string filePath) { try { FileStream utStröm = new FileStream(filePath, FileMode.Create, FileAccess.Write); using (StreamWriter skrivare = new StreamWriter(utStröm, Encoding.Default)) { skrivare.Write(Bibliotekarie.ExporteraBokLista()); } } catch (Exception) { MessageBox.Show("Ogiltigt namn eller filformat...\n\nSpara filen med filändelsen \".txt\"", "", MessageBoxButtons.OK); throw; } }
//Metod för Tipsmaskinen //Om boklistan inte är tom slumpas ett tal från 0 upp till antalet böcker i listan minus 1(för att matcha indexering). //Om tipset är detsamma som det förra slumpas ett nytt tal tills man får ett som inte matchar det föregående. //Metoden returnerar sedan den önskade boken som en sträng. public static string TipsaBok() { string boktips = ""; string tillänglig = "Boken är tillänglig"; Random randomNumber = new Random(); int randomBookNumber; if (Bibliotekarie.AntalLagradeBöcker() == 0) { boktips = "\n\tDet finns inga böcker i Biblioteket..."; } else if (Bibliotekarie.AntalLagradeBöcker() == 1) { if (!bokLista[0].Tillänglig) { tillänglig = "Boken är utlånad"; } boktips = HämtaBokInfo(0); } else { randomBookNumber = randomNumber.Next(0, Bibliotekarie.AntalLagradeBöcker()); while (randomBookNumber == senastTipsadeBok) { randomBookNumber = randomNumber.Next(0, Bibliotekarie.AntalLagradeBöcker()); } if (!bokLista[randomBookNumber].Tillänglig) { tillänglig = "Boken är utlånad"; } boktips = HämtaBokInfo(randomBookNumber); senastTipsadeBok = randomBookNumber; } return(boktips); }
//Button som rensar boklistan private void ButtonEraseBookList_Click(object sender, EventArgs e) { Bibliotekarie.RaderaBöcker(); outputBox.Text = "\n\tBokhyllan är nu tom. . ."; }
//Button som visar hela boklistan private void ButtonShowBookList_Click(object sender, EventArgs e) { outputBox.Text = Bibliotekarie.HämtaBokLista(); }
//Button märkt "Tipsmaskinen" private void buttonTipsmaskinen_Click(object sender, EventArgs e) { outputBox.Text = Bibliotekarie.TipsaBok(); }
//Metod som öppnar och läser en textfil till boklistan public static void OpenFile(string filePath) { //Skapar en lista som håller i strängvektorer List <string[]> booksToImport = new List <string[]>(); //Försök att öppna och läsa filen try { //Skapar en ny lista som håller i vanliga strängar List <string> itemSaver = new List <string>(); //Skapar en ny FileStream som öppnar filen och en StreamReader som läser av vad som matas in i FileStreamen FileStream inStröm = new FileStream(filePath, FileMode.Open, FileAccess.Read); using (StreamReader läsare = new StreamReader(inStröm, Encoding.Default)) { string filText = ""; //Sålänge vad StreamReader skriver till variabeln "filText" inte //är lika med null så läggs strängen till i stränglistan itemSaver. //Returnerar variabeln null innebär det att vi nått slutet av listan. //Loopen bryts och StreamWritern går till garbage collection. while ((filText = läsare.ReadLine()) != null) { itemSaver.Add(filText); } } //För varje sträng i listan "itemSaver" skapas en ny strängvektor som sedan //läggs till i strängvektorlistan "booksToImport". Splitmetoden bestämmer var strängarna ska kapas //för att sedan lagras separat. foreach (string a in itemSaver) { string[] vektor = a.Split(new string[] { "###" }, StringSplitOptions.None); booksToImport.Add(vektor); } //För varje strängvektor i listan; skapa ett Bok-objekt. //Varje index i strängvektorn innehåller information om en enskild egenskap. foreach (string[] item in booksToImport) { string titel = item[0]; string skribent = item[1]; string typ = item[2]; bool tillänglig = true; int utgivningsår = 0; //Mina Bok-objekt kräver ett utgivningsår och jag fick inte modifiera textfilen if (item[3] != "true") { tillänglig = false; } Bibliotekarie.SkapaBok(titel, skribent, utgivningsår, typ, tillänglig); } } //Det enda som kan krascha öppningen och läsningen av filen är att filen är i fel format på något sätt. //Därför räcker det med att alla Exceptions får samma meddelande här catch (Exception) { MessageBox.Show( "Ogiltigt filformat...\n\nFilen måste ha filändelsen \".txt\" och vara formaterad på följande sätt:\n\n" + "string###string###string###bool\n" + "Titel###Författare###Typ###tillänglighet\n" + "Pippi Långstrump###Astrid Lindgren###Roman###true", "Whoops!", MessageBoxButtons.OK); } }