2015-11-14 2 views
0

У меня есть класс пользователей, который я хотел бы использовать для создания списка пользователей до тех пор, пока пользователь больше не захочет этого. Я не знаю, как получить вход с консоли. Я удалил свой основной код, поскольку это путаный беспорядок, и он предпочел бы начать с нуля. Ниже приведен класс «Мои пользователи».Добавление пользователей в список через пользовательский ввод C#

class Users 
{ 
    List<Users> _userList = new List<Users>(); 

    private string _name; 
    private int _age; 
    private string _address; 
    private string _phone; 

    public Users(string name, int age, string address, string phone) 
    { 
     _name = name; 
     _age = age; 
     _address = address; 
     _phone = phone; 
    } 

    public string GetName() 
    { 
     return _name; 
    } 

    public void SetName(string name) 
    { 
     _name = name; 
    } 

    public int GetAge() 
    { 
     return _age; 
    } 

    public void SetAge(int age) 
    { 
     _age = age; 
    } 

    public string GetAddress() 
    { 
     return _address; 
    } 

    public void SetAddress(string address) 
    { 
     _address = address; 
    } 

    public string GetPhone() 
    { 
     return _phone; 
    } 

    public void SetPhone(string phone) 
    { 
     _phone = phone; 
    } 

} 

Приветствия

+0

консольного приложения? –

+0

Какой пользовательский ввод? Консоль ? Рабочий стол? – kirotab

+0

Извините, да Консоль @saranshkataria – user5561715

ответ

1

Первый Список удалить из вашего класса пользователей и переименовывает его пользователя.

public class User 
{ 
    private string _name; 
    private int _age; 
    private string _address; 
    private string _phone; 

    public User(string name, int age, string address, string phone) 
    { 
     _name = name; 
     _age = age; 
     _address = address; 
     _phone = phone; 
    } 

    //... 
} 

Затем объявите список классов пользователей в консоли Класс программы и добавьте нового пользователя в список. Задайте свойства пользователя в соответствии с вводом пользовательской консоли.

List<User> _userList = new List<User>(); 

static void Main(string[] args) 
{ 
    Console.Write("Name: "); 
    string name = Console.ReadLine(); 

    Console.Write("Age: "); 
    int age = int.Parse(Console.ReadLine()); 

    Console.Write("Address: "); 
    string address = Console.ReadLine(); 

    Console.Write("Phone: "); 
    string phone = Console.ReadLine(); 

    User user = new User(name, age, address, phone); 
    _userList.Add(user); 
} 
+0

Спасибо за ваш ответ, но я пытаюсь завершить его как консольное приложение, а не в форме окна – user5561715

1

Во-первых, обратите внимание, что List<Users> _userList = new List<Users>(); является ненужными в своем классе. Вы не используете его нигде. Структура List<T> - хороший способ хранения нескольких пользователей - просто замените T на тип, представляющий пользователя. Вы должны изменить название своего класса, чтобы представить одного пользователя (User было бы неплохо здесь) и использовать List<User> вне класса.

Взгляните на этот надуманный пример, где пользователь имеет одно свойство string - имя пользователя. Он позволяет добавлять нескольких пользователей в список с выбранными вами именами и затем печатать каждое из имен в новой строке. Обратите внимание, что я использовал автоматически реализованное свойство для хранения имени пользователя.

class User 
{ 
    public User(string name) 
    { 
     Name = name; 
    } 

    public Name { get; private set; } 
} 

public static void Main() 
{ 
    List<User> users = new List<User>(); 
    bool anotherUser = true; 
    while (anotherUser) 
    { 
     Console.WriteLine("Please specify a name."); 
     string userName = Console.ReadLine(); 
     User user = new User(userName); 
     users.Add(user); 
     string next = Console.WriteLine("Do you want to add another user (type Y for yes)?"); 
     anotherUser = (next == "Y"); 
    } 

    Console.WriteLine("\nNames of added users:"); 
    foreach(User u in users) 
    { 
     Console.WriteLine(u.Name); 
    } 

    Console.ReadKey(); 
}  

Конечно, вы должны расширить этот ответ, чтобы действительно получить то, что вы хотите. Это всего лишь точка отсчета.

0

Рассмотрим простой случай использования, чтобы получить общее представление:

Как и другие предложили уже можно улучшить User класс, как показано ниже, и C# есть понятие Auto-Implemented Properties и компилятор будет обрабатывать геттер/сеттер генерация кода за кулисами для вас, и, по крайней мере, ваш код достаточно чист! Снова порой вам может потребоваться ввести значения свойств конструктора или явные методы для установки значений, и я не буду вдаваться в это.

public class User 
{ 
    public string Name { get; set; } 
    public int Age { get; set; } 

    //Other properties/indexers/delegates/events/methods follow here as required. Just find what all these members are in C#!! 
} 

Код для ввода информации пользователя:

static void Main(string[] args) 
{ 
    List<User> users = new List<User>(); 

    char createAnotherUser = 'N'; 

    do 
    { 
      var user = new User(); 
      int age; 

      Console.Write("\nUser Name: "); 
      user.Name = Console.ReadLine(); 

      Console.Write("Age: "); 
      string ageInputString = Console.ReadLine(); 

      //Validate the provided age is Int32 type. If conversion from string to Int32 fails prompt user until you get valid age. 
      //You can refactor and extract to separate method for validation and retries etc., as you move forward. 
      while (!int.TryParse(ageInputString, out age)) //Notice passing parameter by reference with 'out' keyword and it will give us back age as integer if the parsing is success. 
      { 
       Console.Write("Enter a valid Age: "); 
       ageInputString = Console.ReadLine(); 
      } 

      //Accept other data you need and validate if required 

      users.Add(user); //Add the user to the List<User> defined above 

      //Confirm if another user to be created 
      Console.Write("Do you want to create another User[Y/N]? : "); 
      createAnotherUser = char.ToUpper(Console.ReadKey(false).KeyChar); //Compare always upper case input irrespective of user input casing. 

    } while (createAnotherUser == 'Y'); 

Вы можете узнать больше о переходе переменного по ссылке, используя out keyword in MSDN

Надеется, что это обеспечит вам некоторое представление ...

Смежные вопросы