2017-12-01 11 views
-3

私はライブラリアプリケーションを書いていますが、私はタイトル、著者、次にどのタイプの本(Roman、Tidskrift、novellsamling)を書くことができるはずです。ライブラリアプリケーション

このプログラムは、タイトルと著者の2つの質問に対して、1-3のオプションがあり、ブックタイプが1であることを意味します。Roman 2. Tidskrift 3. Novellsamling。

あなたは1,2,3のいずれかで答えなければなりません。私はVisaBöcker(英語ではShowBooks)メソッドを呼び出すと、1,2,3のオプションを保存したユーザーが保存したいオプションに保存されます。言い換えれば、1をローマ字にすると、ローマ字クラスに "1"を保存するにはどうすればよいですか?したがって、"Title" + "Author" + "Type (1,2,3/Roman,Tidskrift,Novellsamling)と表示されます。例:Pippi Långstrump by Astrid Lindgren. (Roman) <- the type of book, number 1 chosen.

現在、どの種類の本であるかを尋ねられたら、私はローマ語を入力できますが、オプションとして1,2,3書かなければなりません。あなたが望むクラスにそれを保存しなければなりません。

class Bok 
{ 
    public string Titel = ""; 
    public string Skribent = ""; 
    public string Typ; 

    class Roman : Bok 
    { 
     public Roman() 
     { 
      Typ = "Roman"; 
     } 
    } 

    class Tidskrift : Bok 
    { 
     public Tidskrift() 
     { 
      Typ = "Tidskrift"; 
     } 
    } 

    class Novellsamling : Bok 
    { 
     public Novellsamling() 
     { 
      Typ = "Novellsamling"; 
     } 
    } 
} 

static List<string[]> Böcker = new List<string[]>(); 
static string[] bok; 

public static void RegistreraBok() 
{ 
    bok = new string[3]; 

    Console.Write("\n\tSkriv in titel: "); 
    bok[0] = Console.ReadLine(); 

    Console.Write("\n\tSkriv in författare: "); 
    bok[1] = Console.ReadLine(); 

    Console.Write("\n\tÄr boken en [1] Roman, [2] Tidsskrift eller [3] Novellsamling?: "); 
    bok[2] = Console.ReadLine(); 

    Console.WriteLine("\n\tSparat!"); 
    Console.ReadLine(); 

    Böcker.Add(bok); 
    Console.Clear(); 
} 

public static void VisaBöcker() 
{ 
    for (int i = 0; i < Böcker.Count; i++) 
    { 
     Console.WriteLine("\t" + Böcker[i][0] + " av " + Böcker[i][1] + "." + " (" + Böcker[i][2] + ")"); 
    } 
} 

答えて

0

を試すことができます私はあなたを修正このようにコードする(https://pastebin.com/fz4i1p0P

using System; 
using System.Collections; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static List<book> _booksList = new List<book>(); 
     static Hashtable _ht = new Hashtable(); 
     static void Main(string[] args) 
     { 
      _ht.Add(BookTypes.Roman, "Roman"); 
      _ht.Add(BookTypes.Journal, "Journal"); 
      _ht.Add(BookTypes.StoryCollection, "Collection of stories"); 

      Console.WriteLine("\t Hello and welcome to the library!"); 
      int userInput; 
      bool isRunning = true; 
      while (isRunning) 
      { 
       Console.WriteLine("\n\t[1] Add a book" + 
        "\n\t[2] Show Books" + 
        "\n\t[3] End program"); 
       Console.Write("\n\tSelect: "); 
       Int32.TryParse(Console.ReadLine(), out userInput); 
       switch (userInput) 
       { 
        case 1: 
         Console.Clear(); 
         RegisterBook(); 
         break; 
        case 2: 
         Console.Clear(); 
         ShowAllBooks(); 
         break; 
        case 3: 
         isRunning = false; 
         break; 
        default: 
         Console.Clear(); 
         Console.WriteLine("\n\tDu kan endast välja 1-3 i menyn."); 
         break; 
       } 
      } 
     } 
     static void RegisterBook() 
     { 
      book bok = new book(); 
      Console.Write("\n\tEnter Title: "); 
      bok.Title = Console.ReadLine(); 
      Console.Write("\n\t Author : "); 
      bok.Author = Console.ReadLine(); 
      Console.Write("\n\tEnter Type of book - Roman-1, Journal-2, Collection of stories-3?: "); 
      bok.BookType = (BookTypes)Convert.ToInt32(Console.ReadLine()); 
      _booksList.Add(bok); 
      Console.WriteLine("\n\t Added Book Successfully !"); 
      Console.ReadLine(); 
      Console.Clear(); 
     } 
     public static void ShowAllBooks() 
     { 
      for (int i = 0; i < _booksList.Count; i++) 
      { 
       Console.WriteLine("\t" +" Title: "+ _booksList[i].Title + " Author: " + _booksList[i].Author+ " Type: " + _ht[_booksList[i].BookType].ToString()); 
      } 
     } 
    } 
    public class book 
    { 
     public string Title { get; set; } 
     public string Author { get; set; } 
     public BookTypes BookType { get; set; } 
    } 
    public enum BookTypes 
    { 
     Roman=1, 
     Journal=2, 
     StoryCollection=3 
    } 
} 

ご確認ください。

+0

すごく大変ありがとう、すぐにもっと詳しく調べてみると、完璧に動作するように見えます。私はスタイルと文章/言語の「タッチ」を追加します。何かが起きている場合は、私にお知らせします。 –

1

代わりにブックの種類を表すためのクラスを使用するには、次の方法

public enum BookTypes 
{ 
    Roman =1, 
    Tidskrift=2, 
    Novellsamling=3 

} 

に列挙型を試すことができ、あなたの機能で、あなたはこの

 BookTypes eTypes = BookTypes.Novellsamling; 
     Console.WriteLine("Enter Type of Book: = "); 
     eTypes = (BookTypes) Convert.ToInt32(Console.ReadLine()); 
     Console.WriteLine("Type: = " + eTypes.ToString()); 
+0

これは私のコードに適合させる方法ではありません。以前はenumを使用していません。 https://pastebin.com/dZKnGVrT、これは私のコードがすべてのように見えるものです。どこにコードを置くのでしょうか、私は何を置き換えますか? BookTypesが見つかりませんでした+というエラーが出るだけです+現在のコンテキストに存在しません。 –

+0

https://pastebin.com/Xqc4AsXv今、私は、タイトル、著者、そして本の種類のすべての本を書き出すときに、私は何をタイプするのかわからないWriteLineは "book"の "VisaBöcker()"によって表示されます。その本の種類が表示される場所であるため、1を選択すると、そこに「Roman」と表示されます。 eTypes.ToString());現在のコンテキストに存在しないため、そこでは機能しません。これはRegisteraBokで動作しますが、eTypes =(BookTypes)Convert.ToInt32(Console.ReadLine());存在する。 –

関連する問題