C #, используя ввод / переменную для создания объекта - PullRequest
0 голосов
/ 24 мая 2018

Моя проблема в том, что я не хочу создавать объекты с одинаковыми именами.В настоящее время я работаю над добавлением функциональности из меню.Ввод «2» и «3» пока можно игнорировать.Возникли проблемы с добавлением нового студента с помощью конструктора.По какой-то причине я не могу использовать переменную при именовании нового объекта.Вот файл program.cs.Проблемы не в этом файле.

using System;
namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            string input = null;
            while (input != "3")
            {
                printMenu();
                input = Console.ReadLine();
                switch (input)
                {
                    case "1":
                    {
                        Console.WriteLine("Adding new student.");
                        Student.addStudent();
                        Console.ReadKey();
                        break;
                    }
                    case "2":
                    {
                        Console.WriteLine("Adding new teacher.");
                        Console.ReadKey();
                        break;
                    }
                    case "3":
                    {
                        Console.WriteLine("Closing program.");
                        Console.ReadKey();
                        break;
                    }
                    default:
                    {
                        Console.WriteLine("The input entered was not valid. \n \n");
                        printMenu();
                        break;
                    }
                }
            }
        }
        public static void printMenu()
        {
            Console.WriteLine("Menu");
            Console.WriteLine("To add a student enter 1");
            Console.WriteLine("To add a teacher enter 2");
            Console.WriteLine("To quit the program enter 3");
            Console.Write("Please enter selection: ");
        }
    }
}

Ответы [ 2 ]

0 голосов
/ 25 мая 2018

Поскольку вы не предоставили никакой информации о своем классе ученика, я придумал кое-что самостоятельно.Возможное решение может выглядеть следующим образом:

class Management {
    List<Student> Students {get;set;}
    List<Teacher> Teachers {get; set;}

    public bool AddStudent (Student student){
        try
        {
        this.Students.Add(student);
        return true;
        }
        catch
        {
            return false;
        }
    }
}

abstract class Employee
{
    public string Name { get; set; }
    public string Class { get; set; }

}

class Student : Employee
{
    static List<Teacher> Teachers { get; set; }

    public static bool AddTeacher(Teacher teacher)
    {
        try
        {
            Teachers.Add(teacher);
            return true;
        }
        catch
        {
            return false;
        }
    }
}

Содержит список для всех студентов и преподавателей.

В коммутаторе вы просто добавляете

                case "1":
                    {
                        Console.WriteLine("Adding new student.");
                        Console.WriteLine("Enter new student name: ");                            
                        string name = Console.ReadLine();
                        management.AddStudent(new Student(){Name = name});
                        Console.ReadKey();
                        break;
                    }

чтобы позже найти объект учащегося, вы можете использовать linq, например

management.Students.Where(X => X.Name == "Max Mustermann");

Использование класса Management позволяет удерживать всех ваших учеников, и вы можете добавлять вспомогательные методы кнапример, перечислите всех студентов и т. д.

Я надеюсь, что этот подход поможет вам и не слишком перегружен.

0 голосов
/ 25 мая 2018

Вы можете использовать метод, который, если пользовательский ввод был "1", запрашивает имя.и проверьте, не было ли имя пустым или пустым, передайте его конструктору для создания нового студента.ваше заявление будет:

case "1":
{
    Console.WriteLine("Adding new student.");
    RequestForUserName();
    break;
}

И метод будет примерно таким:

public void RequestForUserName()
{
    Console.WriteLine("please insert a name for new student.");
    var cr = Console.ReadLine();
    if (!string.IsNullOrEmpty(cr))
    {
        student.add(cr);
    }
    else
    {
    //do as you wish.. like default name
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...