Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 11.06.2016
Сообщений: 20

Как сохранить данные, считанные из файла конфигурации, в словарь C#?

02.07.2016, 12:33. Показов 1663. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Консольное приложение. Есть файл конфигурации

XML
1
2
3
4
5
6
7
8
9
10
11
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
    </startup>
  <appSettings>
    <add key="А" value="1=5; 3=14; 10=40" />
    <add key="В" value="1=1; 5=4; 8=6" />
    <add key="C" value="1=3; 2=5; 5=11" />
  </appSettings>
</configuration>
который содержит товар А, В, С. 1=5 (значит что за одну штуку стоит 5 рублей), 3=14 (3 штуки стоят 14 рублей)

Расценки:

Товар «А»:
1шт – 5р.
3шт – 14р.
10шт – 40р.

Товар «В»:
1шт – 1р.
5шт – 4р.
8шт – 6р.

Товар «С»:
1шт – 3р.
2шт – 5р.
5шт – 11р

В какую структуру данных мне лучше это все записать? Чтоб если пользователь вводил в консоль: АААСС результатом была сумма = 19, то есть высчитывалась стоимость товаров. И как сверять данные вводимые с консоли с содержимым структуры данных? Помогите пожалуйста!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.07.2016, 12:33
Ответы с готовыми решениями:

Не копируются данные считанные из файла в структуру
есть структура struct SomeBitGroup{ unsigned char scale, r_m, mod, kop; unsigned short cond; }sbg; //необходимо заполнить...

Как взять данные из файла и сохранить в файл?
День добрый. Подскажите, как взять данные из файла и как сохранить данные в файл. Желательно на примере графа. Спасибо!

Как сохранить данные из одного в файла в несколько
Есть файл, в котором содержится информация по менеджерам. Формат таблицы ФИО менеджера – Название клиента – Сумма продаж за прошлый год...

6
 Аватар для EveKS
601 / 485 / 185
Регистрация: 19.04.2016
Сообщений: 1,885
02.07.2016, 13:03
ZeRR, еще бы сюда класс, в котором видно как проходит сериализация.

Добавлено через 1 минуту
Ну и десериализация... А там уже можно и расписать, что и как.
1
0 / 0 / 0
Регистрация: 11.06.2016
Сообщений: 20
02.07.2016, 13:36  [ТС]
EveKS, Вот класс Program и Settings

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
class Program
    {
        static void Main(string[] args)
        {
            Settings.ReadAllSettings();
            Console.ReadKey();
        }
    }
 
static public class Settings
    {
        public static void ReadAllSettings()
        {
            Dictionary<string, List<string>> dict = new Dictionary<string, List<string>>();
            try
            {
                var appSettings = ConfigurationManager.AppSettings;
                if (appSettings.Count == 0)
                {
                    Console.WriteLine("AppSettings is empty.");
                }
                else
                {
                    foreach (var key in appSettings.AllKeys)
                    {
                        dict.Add(key, appSettings[key]);
                        Console.WriteLine("Key: {0} Value: {1}", key, appSettings[key]);
                    }
                }
            }
            catch (ConfigurationErrorsException)
            {
                Console.WriteLine("Error reading app settings");
            }
        }
    }
Добавлено через 2 минуты
EveKS, Не уверен насчет ключ-список значений..

Добавлено через 27 минут
Все данные сохранил в словарь ключ-список значений. Вот класс

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
static public class Settings
    {
        public static void ReadAllSettings()
        {
            Dictionary<string, List<string>> dict = new Dictionary<string, List<string>>();
            List<string> list = new List<string>();
            try
            {
                var appSettings = ConfigurationManager.AppSettings;
                if (appSettings.Count == 0)
                {
                    Console.WriteLine("AppSettings is empty.");
                }
                else
                {
                    foreach (var key in appSettings.AllKeys)
                    {
                        list.Add(appSettings[key]);
                        dict.Add(key, list);
                        //Console.WriteLine("Key: {0} Value: {1}", key, appSettings[key]);
                    }
                }
            }
            catch (ConfigurationErrorsException)
            {
                Console.WriteLine("Error reading app settings");
            }
        }
    }
Дальше как использовать эту структуру данных, чтоб считывая с консоли значения введенное пользователем, сверять с этой структурой, особенно как переварить вот такие данные 1=5; 3=14; 10=40, они храняться как строка
 Комментарий модератора 
Используйте теги С#
0
 Аватар для EveKS
601 / 485 / 185
Регистрация: 19.04.2016
Сообщений: 1,885
02.07.2016, 14:55
ZeRR, в общем, раз речь о конфиг файле, причем не внешнем.
Code
1
2
3
4
5
6
7
8
9
10
11
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
  </startup>
  <appSettings>
    <add key="A" value="1=5; 3=14; 10=40;" />
    <add key="В" value="1=1; 5=4; 8=6;" />
    <add key="C" value="1=3; 2=5; 5=11;" />
  </appSettings>
</configuration>
C#
1
ConfigurationManager.AppSettings["A"]
Вернет :
Code
1
1=5; 3=14; 10=40;
Раз нужно что-то типо AAAABBBBCCCC, я бы сделал подчет этих символов, потом поочереди запросил A B C, распарсил то что вернулось, и в соответствии с количеством A B C выбрал нужный результат.
Система скидок реализовано странно =), обысно цена штуки при количестве, а не количества, т.к. если я куплю 41 A сколько мне платить... 4 раза за 10 и 1 за 1
1
0 / 0 / 0
Регистрация: 11.06.2016
Сообщений: 20
02.07.2016, 15:09  [ТС]
EveKS, А как распарсить строку вот эту?
1=5; 3=14; 10=40
Это ж будет string. И как то к количествам нужно зацепиться..мол 1штука 5 рублей..и т.п. Как то с толку сбивает(
0
 Аватар для EveKS
601 / 485 / 185
Регистрация: 19.04.2016
Сообщений: 1,885
02.07.2016, 15:25
ZeRR, если прочитать внимательно

Условие задачи

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

Сделать приложение, которое бы считало сумму заказа покупателя, по кодам товаров.
Пример:
Товар «А»:
1шт – 5р.
3шт – 14р.
10шт – 40р.

Товар «В»:
1шт – 1р.
5шт – 4р.
8шт – 6р.

Товар «С»:
1шт – 3р.
2шт – 5р.
5шт – 11р.

Например:
ААВССАВ – 21р.

То все сводится к :

Code
1
2
3
4
5
6
7
8
9
10
11
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
  </startup>
  <appSettings>
    <add key="A" value="12" />
    <add key="В" value="10" />
    <add key="C" value="15" />
  </appSettings>
</configuration>
Ну или
Code
1
2
3
4
5
6
7
8
9
10
11
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
  </startup>
  <appSettings>
    <add key="A" value="5" />
    <add key="В" value="1" />
    <add key="C" value="3" />
  </appSettings>
</configuration>

Т.е. не обязательно повторять написанное, а нужно реализовать свое.

Далее - можно сделать простой метод, принимающий то, что было выбрано: AAABBBBCCCCCCABCABC
И возвращающий сумму.

Упустил "пачек "... Значит гугл и ищем - что такое парсинг =) через string или char.
1
0 / 0 / 0
Регистрация: 11.06.2016
Сообщений: 20
02.07.2016, 15:29  [ТС]
EveKS, Вот именно что вот такая система скидок заложена в конфигурационный файл(
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.07.2016, 15:29
Помогаю со студенческими работами здесь

Как сохранить нужные данные эксель файла в csv?
Здравствуйте! Нужно в уже выбранном файле string filename = openFileDialog1.FileName; выгрузить его i-ый и j-ый...

Отобразить считанные байты файла сразу в программе, без создания и загрузки файла
Доброго всем времени суток... Появилась необходимость по частям считывать байты из файла... Задумка проста: 1.считывать Nное...

Разбить считанные данные в dataGridView на несколько таблиц
Доброго времени соток! Прошу помочь с одной задачей. Есть одни текстовый файл в котором сохранена несколько справочников нужно...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод https:/ / **********/ gallery/ thinkpad-x220-tablet-porn-gzoEAjs . . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru