static void Main(string[] args) { Exam exam = new Exam(); String url = "se3314.txt"; // Change URL to location of text file that contains questions Console.WindowWidth = 100; // 0 < Console.WindowWidth <= Console.LargestWindowWidth Console.Title = "Multiple Choice Exam"; // Opening message if (!exam.LoadQuestions(url)) { Console.WriteLine("\nPress any key to quit..."); Console.ReadKey(); return; } else { Console.WriteLine("Loaded multiple choice problems from:\n" + url + "\n"); } // Iterate through questions while (exam.MoveNext()) { WriteHorizontalRule(); BaseQuestion question = exam.CurrentQuestion; question.WriteQuestion(); int choice = 0; // Validate input while (!int.TryParse(Console.ReadLine(), out choice) || choice < 1 || choice > exam.CurrentQuestion.NumChoices) { Console.WriteLine("Not a valid choice. Try again"); } // Check answer if (exam.CheckAnswer(choice)) { Console.WriteLine("\nCorrect! (" + exam.Average + "% " + exam.QuestionsCorrect + "/" + exam.QuestionsCompleted + ")\n"); } else { Console.WriteLine("\nWrong! (" + exam.Average + "% " + exam.QuestionsCorrect + "/" + exam.QuestionsCompleted + ")\nCorrect answer is: " + question.Answer + "\n"); } } WriteHorizontalRule(); // Finish exam Console.WriteLine("You finished with " + exam.Average + "%\nPress any key to quit..."); Console.ReadKey(); }
public bool MoveNext() { if (this.questions.Count > 0) { this.questionsCompleted++; this.currentQuestion = this.questions.PickRandom(); this.questions.Remove(this.currentQuestion); return(true); } return(false); }
public static List <BaseQuestion> LoadQuestions(String url) { try { using (StreamReader streamReader = new StreamReader(url)) { String line = ""; List <BaseQuestion> questions = new List <BaseQuestion>(); BaseQuestion question = new BaseQuestion(); while ((line = streamReader.ReadLine()) != null) { if (line.StartsWith("QUESTION:")) { line = line.Substring(line.IndexOf(':') + 1); question = new BaseQuestion(); question.Question = line; } else if (line.StartsWith("ANSWER:")) { line = line.Substring(line.IndexOf(':') + 1); question.Answer = line; questions.Add(question); } else if (line.Contains(')')) { line = line.Substring(line.IndexOf(')') + 1); question.AddChoice(line); } } return(questions); } } catch (IOException ex) { Console.WriteLine(ex.Message); } return(null); }