|
4 / 4 / 0
Регистрация: 28.12.2017
Сообщений: 30
|
|||||||||||
Консольное приложение CRUD для работы с файлом(не с БД)29.06.2018, 12:54. Показов 2595. Ответов 17
Доброго времени суток, форумчане! Заранее спасибо за то, что посетили эту тему и уделили мне своё драгоценное время. Перед тем, как озвучить свою проблему, с вашего позволения немного предыстории.
В данный момент я прохожу "производственную практику", где вынужден написать консольное приложение на ЯП C#. Эта программа должна выполнять CRUD действия, но не с БД, а с обычным файлом. Собственно сами действия CRUD мы "проходили" в 2 этапа, разделив их отдельно на Create/Read и Update/Delete. Ниже публикую код программы, способной выполнять первый блок Create/Read. Она работает в соответствии с запросом преподавателя, то есть выполняет Create/Read. Тема для моей программы: "Сведения о клиентах автосервиса". Особой роли это не играет. Кликните здесь для просмотра всего текста
И класс Clients ниже. Кликните здесь для просмотра всего текста
Собственно сама проблема, он же мой вопрос. Мне необходимо произвести ввод данных через консоль не в переменные infio, inauto, incost и после этого присваивать их значения полям класса, а сразу в поля класса (в переменные класса?) fio, auto, cost. Перепробовал кучу способов, но решение для своей задачи я так и не нашёл. Прошу помогите с данным заданием. Ещё раз спасибо за внимание!
0
|
|||||||||||
| 29.06.2018, 12:54 | |
|
Ответы с готовыми решениями:
17
Консольное приложение для работы с БД Разработать консольное приложение для работы с классом Person Консольное приложение работающие с xml файлом |
|
|
||||||
| 29.06.2018, 13:03 | ||||||
|
Можно все это сделать в конструкторе класса:
1
|
||||||
|
4 / 4 / 0
Регистрация: 28.12.2017
Сообщений: 30
|
|||||||||||
| 29.06.2018, 13:19 [ТС] | |||||||||||
|
В таком случае, в коде самой программы поля класса не распознаются, выдает ошибку "Invalid initializer member declarator", "The name 'fio' does not exist in the current context" и так для всех полей класса. Может быть я чего-то не понимаю?
Ниже прилагаю вариант исправленный по вашему методу. Кликните здесь для просмотра всего текста
Класс. Кликните здесь для просмотра всего текста
0
|
|||||||||||
|
|
|||||||||||
| 29.06.2018, 13:24 | |||||||||||
|
При таком использовании конструктор надо изменить так:
1
|
|||||||||||
|
4 / 4 / 0
Регистрация: 28.12.2017
Сообщений: 30
|
|
| 29.06.2018, 13:43 [ТС] | |
|
Большое спасибо, милый человек! Оно работает, единственное VS выдает предупреждение " 'ConsoleApplication1.Clients.ToString()' hides inherited member 'object.ToString()'. To make the current member override that implementation, add the override keyword. Otherwise add the new keyword. "
0
|
|
|
4 / 4 / 0
Регистрация: 28.12.2017
Сообщений: 30
|
|
| 29.06.2018, 13:56 [ТС] | |
|
Я так и думал, что не хватает override. Прошу прощения за некую тупость
![]() ![]() И конечно же, огромное спасибо в решении моей проблемы. P.S. Забыл упомянуть, что с C# незнаком совершенно, но на практике вынужден писать на нём.
0
|
|
|
4 / 4 / 0
Регистрация: 28.12.2017
Сообщений: 30
|
||||||||||||||||
| 02.07.2018, 09:23 [ТС] | ||||||||||||||||
|
И снова доброго времени суток, граждане. Программа не особо изменилась с моего последнего обращения здесь. Вопрос теперь в следующем. Вот как мне объявить переменную j в основной программе (для использования во всех case), либо как использовать значение j из метода New в классе Clients? В частности меня интересует использование j в строке:
Кликните здесь для просмотра всего текста
А тут класс: Кликните здесь для просмотра всего текста
Спасибо за уделенное мне и моему вопросу время и внимание!
0
|
||||||||||||||||
|
|
|||||||||||
| 02.07.2018, 09:41 | |||||||||||
Сообщение было отмечено Bratushonok21 как решение
Решение
И на будущее. Правила форума предписывают на каждый новый вопрос создавать отдельную тему.
1
|
|||||||||||
|
4 / 4 / 0
Регистрация: 28.12.2017
Сообщений: 30
|
|
| 02.07.2018, 09:50 [ТС] | |
|
Оу, да, точно. Совсем забыл про это.
Коль не совсем правильно использовать метод для описания количества клиентов в классе, как мне это правильно сделать в самой программе?
0
|
|
|
4 / 4 / 0
Регистрация: 28.12.2017
Сообщений: 30
|
|||||||||||
| 02.07.2018, 12:53 [ТС] | |||||||||||
|
Отчасти проблема решена, но вопросов меньше не становиться
![]() Я создал отдельный класс, для "уточнения" числа новых клиентов: Кликните здесь для просмотра всего текста
И даже замудрил (скорее всего) с переменной j2, чтобы при каждом обращении к классу мне не было необходимости запускать его метод, а просто использовать значение j2(хотя наверное можно было и вернуть значение j, без ввода переменной j2). Но теперь вопрос в другом, как в основной программе, при проверке количества клиентов (например строка 55) мне передать и использовать это самое значение??? Ведь насколько я понял, если я просто сделаю обращение к методу, то он заново заставит меня ввести новое значение. Как быть? Основная программа: Кликните здесь для просмотра всего текста
0
|
|||||||||||
|
|
|||||||||||
| 02.07.2018, 12:59 | |||||||||||
|
При таком подходе можно изменить класс Count:
1
|
|||||||||||
|
4 / 4 / 0
Регистрация: 28.12.2017
Сообщений: 30
|
|||||||||||||||||||||
| 02.07.2018, 13:17 [ТС] | |||||||||||||||||||||
|
Или проще говоря, как мне передать значение j(j2???) из класса Count, в каждый case основной программы, чтобы я не вводил при каждом обращении к классу новое значение j. А то у меня получается программа запускается, раз спрашивает: "Укажите число новых клиентов:" в принципе когда это нужно, а после и ещё раз и ещё раз и ещё раз, где я дал ссылку на метод класса, но мне нужно только значение j из этого класса.
![]() Добавлено через 5 минут Хорошо. А если я допустим сделаю так, избавлюсь от j2:
Добавлено через 11 минут Toros1992, действительно получилось... ужасно. Теперь программа просто завершается, как только доходит до цикла создания новых клиентов (строка 28): Кликните здесь для просмотра всего текста
А вот так я изменил класс: Кликните здесь для просмотра всего текста
0
|
|||||||||||||||||||||
|
|
|
| 02.07.2018, 13:21 | |
|
Мне не за что прощать или не прощать. вы мне ничего не сделали. если так хотите делать, то уберите int в методе newCount() перед j. Плох весь подход.
У вас не хватает фундаментальных знаний. В объектно-ориентированном программировании все начинается с абстрактной модели. А основная особенность любой модели - это отражение свойств моделируемого объекта. Ваш объект - массив клиентов с возможностью создания, удаления, изменения и чтения информации о клиенте из этого массива. Соответственно подходящая модель для этого может выглядеть так: Класс-клиент и класс-коллекция клиентов. Экземпляр класса-клиента хранит в себе информацию об одном клиенте, а экземпляр класса-коллекции позволяет осуществлять запись, удаление, чтение и изменение любого клиента коллекции с помощью методов экземпляра, а так же хранит в себе информацию о количестве клиентов в массиве. У вас же модель сейчас такова: Класс-клиент и класс-счетчик. И отдельно массив, но только он хранит не клиентов, а строки, которые описывают клиентов. Ваша модель не отражает свойств моделируемого вами объекта, соответственно возникают сложности в реализации. Мой совет: Почитайте литературу и вникните в суть ООП, потому что сейчас у вас каша в голове. Добавлено через 4 минуты В описанной мной подходящей модели, класс-коллекция конечно же должен еще хранить в себе сам массив клиентов
1
|
|
|
4 / 4 / 0
Регистрация: 28.12.2017
Сообщений: 30
|
|
| 02.07.2018, 13:28 [ТС] | |
|
Toros1992, я с удовольствием почитаю литературу по ООП, и полностью согласен, что у меня каша в голове, на данный момент. Но проблема в том, что дэдлайн горит ясным пламенем, и ООП я никогда не занимался, вариться в этом котле вынуждает практика. Если в данном случае выходит так, что моя модель некорректна для реализации, то придётся отказаться от интерактивного взаимодействия. Благо можно обойтись и без него.
Спасибо большое за внимание и за время, я вернусь к этому вопросу и постараюсь реализовать модель посоветованную вами, для начала.
0
|
|
|
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
|
|
| 03.07.2018, 11:48 | |
|
Bratushonok21, вот похожий вариант коллекции-обертки:
Добавление нескольких записей в файл
1
|
|
| 03.07.2018, 11:48 | |
|
Помогаю со студенческими работами здесь
18
Консольное приложение для работы с файловой базой данных "Легковые автомобили".
Реализовать приложение для выполнения CRUD операций к базе данных Как открыть консольное приложение в .NET через другое консольное приложение .NET Консольное приложение для тестирования. Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
|
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма).
На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
|
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ *
Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам
Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
|
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым.
Но восстановить их можно так.
Для этого понадобится консольная утилита. . .
|
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|