| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > .NET для новичков > TODO List: |
| Автор: blackwitcher 11.6.2015, 23:15 |
| Всем привет, я недавно начал изучать C# и интересует такая задача. Написать приложение списка задач/дел с подзадачами и возможностью отмечать сделанные задачи и подзадачи. Бизнес-сущности: Список состоит из задач, разбитых на категории. Задача: дата, текст, список подзадач, ссылку на категорию, признак завершения Подзадача: текст, признак завершения. Категория: текст. Пользовательские функции: Работа с задачами просмотреть список задач. отметить задачу сделанной. отметить обратно не сделанной Удалить все сделанные задачи. Работа с подзадачами Добавление подзадач в задачу отметить подзадачу сделанной отметить обратно не сделанной если все подзадачи сделаны, то отметить задачу сделанной P.S. подскажите с чего начинать. если я не ошибаюсь, то нужно создать БД где будут поля с Бизнес-сущности: Задача: дата, текст, список подзадач, ссылку на категорию, признак завершения или совсем другое? Подскажите, а то с места не двинусь, и еще, я не хочу чтобы за меня Вы сделали, просто подсказажите, СПАСИБО |
| Автор: Экскалупатор 12.6.2015, 09:18 |
| Начните с описания UseCases. Продумайте как именно ваше приложение будет использоваться. Буквально, по шагам. Можно не очень детально, но общие, концептуальные моменты проработайте. Не спешите сразу проектировать базу, потому как потом придется переделывать. Реализуйте слой бизнес логики, что позволит начать делать интерфейс и смотреть как работает приложение. Прицепите к бизнесслою слой работы с данными, можно пока просто остановится на интерфейсе(API) а "ниже" сделать заглушки. т.е. фактически никуда ничего не сохранять или сохранять как попало. Если вы все сделаете правильно, то потом поменять фейковую базу на нормальную не составит труда. Еще, как вараинт, можно взять тот же EntityFramework, который будет генерировать вам базу, но придется писать миграции разные. ну и по хорошему лучше не смешивать хранение с бизнес объектами. |
| Автор: blackwitcher 12.6.2015, 10:02 | ||
А можно все это сделать в asp.net сервер с Web API и REST доступом и JS клиент, использующий это API? |
| Автор: Экскалупатор 12.6.2015, 10:19 |
| конечно, почему нет. суть не меняется, все равно у вас должна быть бизнесмодель, доступ к данным и все такое. только в качестве интерфейса серверного кода будет выступать API, и уже JS будет дергать это API. все это можно. только может оказаться неподъемным если нету опыта. Какие из названных технологий вам знакомы? а какие вы думаете, что знаете? Чем меньше неизвестных вещей вы сразу возьмете, тем больше шансов дописать все это хоть до какого-то юзабельного состояния. Иначе можно погрязнуть в технических деталях и не выплыть. Рассматривайте технологии не как цель, а как средство для достижения вашей цели. Есть ли реальная причина, к примеру, не использовать MVC, Razor, etc, а сразу делать весь клиент на JS? если есть то вперед, а если это просто для "поиграться", то зависит от цели проекта. |
| Автор: blackwitcher 12.6.2015, 10:24 | ||
| большое спасибо Экскалупатор за ответ позднее, как придумаю, скину для проверки, ОК?
золотые слова |
| Автор: blackwitcher 12.6.2015, 11:32 |
| Я думаю, что бизнес-модель будет такая: пользователи создают аккаунт --- логин / пароль ---- существует БД, где есть таблица Задачи, в которой есть такие поля: ИД, дата, список задач, список подзадач, признак завершения. Таблица подзадач, поля --- ИД, список подзадач, признак завершения |
| Автор: Экскалупатор 12.6.2015, 12:51 |
| это не бизнес модель. Какие сущности будут в приложении? подзадача это тоже задача(объекты одного и того же класса)? задачу можно закончить без завершения всех подзадач? можно ли переместить подзадачу в другую задачу? превратить ее в полноценную задачу? можно ли "переоткрыть" завершенную задачу? Будет ли храниться история манипуляций с задачами? Набросайте Usecases, способы использования вашего приложения. Не думайте пока про базу вообще. Создайте Классы, которые будут содержать логику работы приложения. И реализуйте минимальный UI. получится типа прототип, выявятся дополнительные требования к вашему приложению. И дальше его уже можно будет доводить до ума. |
| Автор: blackwitcher 12.6.2015, 13:09 |
| кажется, теперь начал понимать)) |
| Автор: blackwitcher 12.6.2015, 14:20 |
| надеюсь, так правильно |
| Автор: blackwitcher 12.6.2015, 23:03 |
| я вообще запутался, вот пример UI |
| Автор: Экскалупатор 13.6.2015, 00:19 |
| а почему они все вложенные? очевидно что все эти "подзадачи" должны находиться на втором уровне, типа: задача "моем посуду" состоит из, и понеслась: ложки, вилки и пр. я по этому и предлагаю вам сразу написать юзкейсы. они должны быть на подобии такого: пользователь хочет добавить задачу. 1. жмет кнопку "добавить задачу" - открывается форма добавления задачи 2. заполняет форму и жмет "сохранить" - задача сохраняется, форма закрывается, пользователь оказывается на списке задач. пользователь хочет добавить задачу с подзадачами: 1. жмет кнопку... 2. вводит описание задачи... 3. вводит подзадачи... 4. жмет сохранить... и так далее. потом по этим кейсам можно делать UI. из них же можно делать бизнес сущности, которыми будет оперировать пользователь. |
| Автор: blackwitcher 14.6.2015, 03:04 |
| Спасибо за терпение Экскалупатор Попытался сделать в ASP.NET MVC, возникла ошибка компиляции Если делать в ASP.NET MVC задачи и подзадачи отражать в форме таблицы? А готовность выполнения подзадачи замечать как CheckBox? |
| Автор: blackwitcher 14.6.2015, 13:33 |
| А как на примере http://www.8-ball.ru/todo.html сделать БД? |
| Автор: blackwitcher 15.6.2015, 00:17 | ||
Я все же решил делать как Вы сказали)) У меня такие вопросы: 1) У меня в form2 textBox должны обладать притуплённым текстом, а при нажатии курсора - исчезает текст (я что-то сделал, но не так, как хотелось) 2) form3 вводим подзадачу --- жмем кнопку Add Subtask (или нажимаем Enter) --- должно появиться checkBox1, вводим пoдзадачу2 --- checkBox2, и так далее, это надо делать через массив (я не знаю как сделать) Буду очень благодарен, если поможете с кодом |
| Автор: Экскалупатор 15.6.2015, 18:48 | ||||||
не совсем понял о чем тут речь.
чекбоксы, как и любые контролы программно работают как обычные классы. т.е. ваша задача сводится к добавлению еще одного экземпляра класса в контейнер(форму, панель и прочее). для примера:
но мне кажется вы немного не в ту сторону. Я как бы имел ввиду не кодировать UseCases, а просто описать их. По ним выделить основные сущности приложения, а потом под них строить UI. К примеру, в вашем приложении очевидно будет всегда коллекция задач, ну так сделайте класс "задача", разместите где-то коллекцию объектов этого класса, потом у каждой задачи должна быть коллекция классов "подзадача". Дальше отобразите на какой-то форме весь список задач. сделайте переход на подзадачи. Потом сделайте редактирование/добавление задачи, а к ним подзадач. Они должны добавляться в коллекцию задач и после этого обновляться на первой форме, которая отображает задачи, и т.д. Я так понимаю, что красивости вам сейчас без надобности. главное сделать работий функционал. |
| Автор: blackwitcher 16.6.2015, 01:37 | ||
| Большое спасибо за помощь Экскалупатор Я самостоятельно изучаю C# только 2 месяц, на ConsoleAplication я
Тем не менее, у меня есть такие вопросы: 1) если запустить form1, то не сразу появляется подсказка в textbox, почему - я не знаю (видимо, что-то в цикле не так), хотелось бы, чтобы Вы показали мою ошибку 2) форма subtask --- вводим в textbox подзадачу --- жмем кнопку --- то, что мы ввели в textbox автоматически переносится на checkbox, а textbox становится пустым --- снова вводим --- появляется checkbox2 и т.д. (то есть, мы создаем динамично checkbox? 3) эту работу я делаю для себя, для лучшего понимания C#, это не для работы, не для вступления в компанию или что-то такое, я просто увидел такую задачу, и мне стало интересно)) БОЛЬШОЕ СПАСИБО Экскалупатор ЗА ТЕРПЕНИЕ |
| Автор: blackwitcher 16.6.2015, 15:36 | ||||
не работает |
| Автор: blackwitcher 16.6.2015, 16:27 | ||||||
Уже может быть
|
| Автор: Экскалупатор 23.6.2015, 10:42 |
не влазит по ширине? нужно увеличить ширину (ваш К.О.) ее можно в конструкторе формы прописать. |
| Автор: blackwitcher 26.6.2015, 15:17 |
| спасибо |