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

Описать класс «товар», содержащий следующие свойства: название; магазин; стоимость; количество.

21.03.2021, 17:03. Показов 3366. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
1. Написать программу в соответствии с вариантом задания. Каждый
разрабатываемый класс должен, как правило, содержать следующие элементы:
скрытые поля, конструкторы с параметрами и без параметров, методы; свойства,
индексаторы; перегруженные операции. Функциональные элементы класса
должны обеспечивать непротиворечивый, полный, минимальный и удобный
интерфейс класса. При возникновении ошибок должны выбрасываться
исключения. Описание каждого класса должны находиться в отдельном модуле. В
проекте должна присутствовать диаграмма классов.
Описать класс «товар», содержащий следующие закрытые поля:
• название товара;
• название магазина, в котором продается товар;
• стоимость товара в рублях;
• количество товара.
Предусмотреть свойства для получения состояния объекта.
Описать класс «Справка», содержащий закрытый массив товаров. Обеспечить
следующие возможности:
• • вывод информации о товаре по номеру с помощью индекса;
• • вывод на экран информации о товаре, название которого введено с
клавиатуры, если таких товаров нет, выдать соответствующее сообщение;
• • сортировку товаров по названию магазина, по наименованию и по цене;
• • перегруженную операцию сложения товаров, выполняющую сложение их
общей стоимости с группировкой по магазинам.

Program.cs

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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
using System;
using System.Collections.Generic;
 
namespace ConsoleApplication1
{
    public static class Program
    {
        static Program()
        {
            throw new System.NotImplementedException();
        }
 
        public static void Main()
        {
            Menu(new Info());
        }
 
        private static void Menu(Info info)
        {
            while (true)
            {
                Console.Write("1. Добавить товар\n" +
                              "2. Найти товар по имени\n" +
                              "3. Вывести информацию о товаре по индексу\n" +
                              "41. Сортировать товары по названию магазина\n" +
                              "42. Сортировать товары по наименованию\n" +
                              "43. Сортировать товары по цене\n" +
                              "5. Вывести общую стоимость товаров с группирвкой по магазинам\n" +
                              "0. Выйти\n\n" +
                              "Выберите пункт меню: ");
                int choice;
                if (!int.TryParse(Console.ReadLine(), out choice))
                {
                    Console.WriteLine("Ошибка ввода!");
 
                    continue;
                }
                switch (choice)
                {
                    case 1:
                        info.Add(Good.CreateInteractive());
 
                        break;
                    case 2:
                        Console.Write("Введите имя товара для поиска: ");
                        var goodOrNull = info.FindGoodByName(Console.ReadLine());
                        if (goodOrNull == null)
                        {
                            Console.WriteLine("Товар не найден");
                        }
                        else
                        {
                            Console.WriteLine(goodOrNull);
                        }
 
                        break;
                    case 3:
                        Console.Write("Введите индекс: ");
                        int idx;
                        while (!int.TryParse(Console.ReadLine(), out idx))
                        {
                            Console.WriteLine("Введите число!");
                            Console.Write("Введите индекс: ");
                        }
                        try
                        {
                            Console.WriteLine(info[idx]);
                        }
                        catch (IndexOutOfRangeException e)
                        {
                            Console.WriteLine("Произошла ошибка: {0}", e);
                        }
 
                        break;
                    case 41:
                        foreach (var good in info.SortByShop())
                        {
                            Console.WriteLine(good);
                        }
 
                        break;
                    case 42:
                        foreach (var good in info.SortByName())
                        {
                            Console.WriteLine(good);
                        }
 
                        break;
                    case 43:
                        foreach (var good in info.SortByPrice())
                        {
                            Console.WriteLine(good);
                        }
 
                        break;
                    case 5:
                        var prices = new Dictionary<string, Good>();
                        foreach (var good in info)
                        {
                            if (!prices.ContainsKey(good.Shop))
                            {
                                prices[good.Shop] = good;
                            }
                            else
                            {
                                prices[good.Shop] += good;
                            }
                        }
                        Console.WriteLine("Общая цена по магазинам:");
                        foreach (var price in prices)
                        {
                            Console.WriteLine($"\t{price.Key}: {price.Value.Price}");
                        }
 
                        break;
                    case 0:
                        Console.WriteLine("Завершение программы...");
 
                        return;
                }
            }
        }
    }
}


Good.cs

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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
using System;
using System.Collections.Generic;
 
namespace ConsoleApplication1
{
    public class Good
    {
        private string _name;
        private string _shop;
        private double _price;
        private int _amount;
 
        // эквивалентно public string Name { get { return name; } }
 
        public string Name => _name;
        public string Shop => _shop;
        public double Price => _price;
        public int Amount => _amount;
 
        public Good(string name, string shop, double price, int amount)
        {
            _name = name;
            _shop = shop;
            _price = price;
            _amount = amount;
        }
 
        public static Good operator +(Good a, Good b)
        {
            if (a.Shop != b.Shop)
            {
                throw new InvalidOperationException("Нельзя сложить стоимость товаров из разных магазинов");
            }
            return new Good(string.Join(", ", a.Name, b.Name), a.Shop, a.Price + b.Price, a.Amount + b.Amount);
        }
 
        public static double operator +(double a, Good b)
        {
            return a + b.Price;
        }
 
        public static bool operator <(Good a, Good b)
        {
            return a.Price < b.Price;
        }
 
        public static bool operator >(Good a, Good b)
        {
            return a.Price > b.Price;
        }
 
        public static Good CreateInteractive()
        {
            Console.Write("Название товара: ");
            var name = Console.ReadLine();
            Console.Write("Название магазина: ");
            var shop = Console.ReadLine();
            Console.Write("Стоимость товара: ");
            double price;
            while (!double.TryParse(Console.ReadLine(), out price))
            {
                Console.WriteLine("Неверный формат цены, попробуйте снова!");
                Console.Write("Стоимость товара: ");
            }
            Console.Write("Количество товара: ");
            int amount;
            while (!int.TryParse(Console.ReadLine(), out amount))
            {
                Console.WriteLine("Неверный формат количества, попробуйте снова!");
                Console.Write("Количество товара: ");
            }
 
            return new Good(name, shop, price, amount);
        }
 
        public override string ToString()
        {
            return $"Название товара: {Name}\n\tМагазин: {Shop}\n\tСтоимость: {Price}\n\tКоличество в наличии: {Amount}";
        }
    }
}

Info.cs

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
37
38
39
40
41
42
43
44
45
using System;
using System.Collections.Generic;
 
namespace ConsoleApplication1
{
    public class Info
    {
        private readonly List<Good> _goods;
 
        public Info()
        {
            _goods = new List<Good>();
        }
 
        public void Add(Good good)
        {
            _goods.Add(good);
        }
 
        public Good this[int i]
        {
            get
            {
                if (i <= 0 || i > _goods.Count)
                    throw new IndexOutOfRangeException("Выход за границы массива!");
 
                return _goods[i - 1];
            }
        }
 
        public Good FindGoodByName(string name)
        {
            foreach (var good in _goods)
            {
                if (good.Name == name)
                {
                    return good;
                }
            }
            return null;
        }
 
       
    }
}

Это все что есть....
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.03.2021, 17:03
Ответы с готовыми решениями:

Организовать файл записей PRICE, содержащих следующие поля: название товара, название магазина, в котором продаётся товар, стоимость товара в гривнах
Организовать файл записей PRICE, содержащих следующие поля: название товара, название магазина, в котором продаётся товар, стоимость товара...

Организовать файл записей PRICE, содержащих следующие поля: название товара, название магазина, в котором продаётся товар, стоимость товара в гривнах
Организовать файл записей PRICE, содержащих следующие поля: название товара, название магазина, в котором продаётся товар, стоимость товара...

Описать структуру с полями: товар, цена, количество (Магазин)
. Магазин. Описать структуру с полями: товар, цена, количество. Написать программу, выполняющую следующие действия: • Заполнение массива...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.03.2021, 17:03
Помогаю со студенческими работами здесь

Создать книжный магазин и класс Книгу у которой есть автор, название, стоимость и жанр
2 - НУжно сделать книжный магазин и класс Книгу у которой есть автор, название, стоимость и жанр и все такое. Как мне вывести книги из...

Описать класс с именем ZNAK, содержащий следующие поля:
1. Описать класс с именем ZNAK, содержащий следующие поля: • фамилия, имя; • знак Зодиака; • день рождения (массив из трех чисел). ...

Описать класс с именем Marsh, содержащий следующие поля
Описать класс с именем MARSH, содержащий следующие поля:  название начального пункта маршрута;  название конечного пункта...

Описать класс множество (Set), содержащий следующие элементы
Помогите, пожалуйста! Описать класс множество (Set), содержащий следующие элементы: Поля: 1. Elements (целочисленный одномерный...

Описать класс множество (Set), содержащий следующие элементы
Описать класс множество (Set), содержащий следующие элементы: Поля: 1. Elements (целочисленный одномерный массив для хранения...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 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 На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru