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

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

02.07.2016, 12:33. Показов 1698. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru