C # извлекает данные различных типов данных из текстового файла и сохраняет их в переменных - PullRequest
0 голосов
/ 11 октября 2018

Итак, с какой проблемой я столкнулся - я пытаюсь создать сложную (сложную для меня) систему управления банком.Это берет различные данные от человека.Требуются строки и целые.Мне удалось сохранить эти данные в текстовом файле.

Текстовый файл выглядит следующим образом:

AccID: 74016 |ИМЯ: любое имя |ВОЗРАСТ: 18 |LASTNAME: anylastname |БАЛАНС: 300 |ТИП СЧЕТА: Сберегательный счет |

(эти данные находятся в одной строке в текстовом файле)

Вот как я храню это:

              var StoreInFile = new StreamWriter(@"C:\Accounts.txt", true);


                StoreInFile.Write("AccountID: " + AccID + " | ");
                StoreInFile.Write("NAME: " + _Name + " | ");
                StoreInFile.Write("AGE: " + _Age + " | ");
                StoreInFile.Write("LASTNAME: " + _LastName + " | ");
                StoreInFile.Write("BALANCE: " + Balance + " | ");
                StoreInFile.Write("ACCOUNT TYPE: " + accountType + " | ");
                StoreInFile.WriteLine(" ");
                StoreInFile.WriteLine(" ");

                StoreInFile.Close();

Проблема сейчас в том, как мне получить эти данныеот него?как мне сохранить все эти различные строки / целые обратно в переменных, где тогда я могу манипулировать ими?

В идеале, я хотел бы только ввести AccountID при входе в систему, а затем он будет автоматически сохранять все это имя, LastName, Age ... и так далее Data в переменные обратно в коде, которые находятся в этой строке.Надеюсь, мой вопрос ясен.

Ответы [ 3 ]

0 голосов
/ 11 октября 2018

Вы можете создать класс учетной записи с использованием свойств, которые вы использовали:

class Account
{
    public int Id { get; set;}
    public string Name { get; set;}
    public int Age{ get; set;}
    public string Lastname { get; set;}
    public int Balance { get; set;}
    public string AccountType { get; set;} // this is better to be enum but your example shows you have stored string
}

Затем вы можете создать экземпляр класса Account, прочитать файл, разделить его на | и просто установить его свойства (parseк int, где это необходимо):

string[] data = File.ReadAllText("filepath.txt").Split('|');
Account account = new Account();
foreach (string item in data)
{
    string[] sitem = item.Split(':');
    switch(sitem[0].Trim())
    {
        case "AccountID":
           account.Id = int.Parse(sitem[1]); break;
        case "Name":
           account.Name = int.Parse(sitem[1]); break;  
           ....
    }
}
0 голосов
/ 11 октября 2018

На самом деле я советую вам сохранить его в формате Json / XML.Но, возможно, BinaryFormatter поможет вашему случаю привести несколько примеров, которые вы можете использовать;

class Program {
    static void Main (string[] args) {
        // Create Object
        Account account = new Account {

            Id = 100,
            Name = "Berkay"
        };

        // You can use BinaryFormatter 
        IFormatter formatter = new BinaryFormatter ();
        Stream stream = new FileStream ("D:\\account.txt", FileMode.Create, FileAccess.Write);

        formatter.Serialize (stream, account);
        stream.Close ();

        stream = new FileStream ("D:\\account.txt", FileMode.Open, FileAccess.Read);
        Account readAccount = formatter.Deserialize(stream) as Account;

        System.Console.WriteLine(readAccount.Id);
        System.Console.WriteLine(readAccount.Name);

        Console.ReadLine();
    }

}

    // Serializable attribute
    [Serializable]
    public class Account {
    public int Id { get; set; }
    public string Name { get; set; }
}
0 голосов
/ 11 октября 2018
var properties = new prop();
var json = JsonConvert.SeralizeObject(properties);

public class prop 
{
     public string account_id { get; set;}
     public string name { get; set;}
     public int age { get; set;}

}

Нечто подобное поможет вам за тонну.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...