1 / 1 / 0
Регистрация: 30.04.2019
Сообщений: 89
|
|
1 | |
Телефонный справочник10.06.2019, 22:54. Показов 17465. Ответов 23
Метки нет (Все метки)
Здравствуйте!
Столкнулся с некоторыми проблемами реализации телефонного справочника. Условия: а) создал класс профиля, содержащего всю необходимую информацию; б) создал упорядоченный массив, состоящий из профилей; в) каждое добавление - новый профиль в массиве, текстовый файл перезаписывается путем прохода по массиву с профилями. г) каждое удаление - удаление профиля в массиве, текстовый файл перезаписывается путем прохода по массиву с профилями. д) поиск - двоичный поиск по массиву (по первой букве фамилии). Адекватно ли подобное решение?
0
|
10.06.2019, 22:54 | |
Ответы с готовыми решениями:
23
Телефонный справочник Телефонный справочник Телефонный справочник Написать программу - телефонный справочник (на основании словарей) |
11.06.2019, 01:00 | 2 |
constantin_01, Само условие в задаче примитивное, использующее примитивные средства и потому трудоемкие.
подразумевает создание примитивного справочник без наличия классов. Вы не сможете сохранить экземпляры классов в текстовом документе. Их в виде объектов, а не текста, можно сохранить только в базе данных с помощью модуля shelve, или хотя бы используя модуль pickle. Писать телефонную книгу, что бы сохранять ее в виде текстового файла, это настолько муторная работа. Как это делается описано в книге Лутц М. Программирование на Python. Том 1 (4-е издание, 2011) стр.55-61. Я думаю там разбирается такой пример только для того, что бы люди поняли как это трудоемко, и в следующих главах оценили насколько удобнее создавать такие структуры с помощью классов и хранить в виде объектов (а не текстов), в базе данных с помощью модуля shelve.
0
|
1 / 1 / 0
Регистрация: 30.04.2019
Сообщений: 89
|
|
11.06.2019, 09:02 [ТС] | 3 |
Viktorrus, это лабораторная работа из учебной программы ВУЗа (1 курс). Предполагается, что студент должен проделать ту же работу, что описана в упомянутой книге? Т.е. без использования классов и вспомогательных модулей?
0
|
11.06.2019, 16:21 | 4 |
constantin_01, Тогда понятно. Но эта работа очень нудная. Я когда читал этот материал, понял смысл, но глубоко вникать не стал, так как мне, при наличии более удобных средств, такая технология никогда не понадобится.
Я не знаю, что Вам нужно, выясняете это у того кто дал задание. Добавлено через 4 минуты Просто объекты классов и даже любые объекты питона, кроме текстовых строк, Вы не можете сохранять в текстовом файле. Добавлено через 3 минуты Просто у Лутца в примере объекты питона, списки и словари по определенной методике преобразуются в текстовую строку и записываются в файл. А затем при загрузке из файла, опять по той же методике но в обратном порядке восстанавливают списки и словари питона.
0
|
5047 / 3392 / 1156
Регистрация: 21.03.2016
Сообщений: 8,214
|
|||||||||||
11.06.2019, 19:06 | 6 | ||||||||||
я бы начал с конца
то есть определил структуру хранения Иванов Иван Иванович : тел.8888 06.10.92 Петров Добрович : тел.9999 02.12.98 Шишков Павлович : тел.02 23.12.93 ну а дальше считываем из файла и получаем словарь где ключ фио а значение остальные данные
{'Иванов Иван Иванович ': ['тел.8888', '06.10.92'], 'Петров Добрович ': ['тел.9999', '02.12.98'], 'Шишков Павлович ': ['тел.02', '23.12.93']} >>> ну и по остальным пунктам работаем с словарем Добавлено через 7 минут а в файл пишите опять строки получив их из словаря
Иванов Иван Иванович : тел.8888 06.10.92 Петров Добрович : тел.9999 02.12.98 Шишков Павлович : тел.02 23.12.93 >>>
0
|
1 / 1 / 0
Регистрация: 30.04.2019
Сообщений: 89
|
|
11.06.2019, 23:07 [ТС] | 8 |
Semen-Semenich, спасибо за ответ!
Viktorrus, меня интересует как в реальной жизни реализуются подобные проекты. На протяжении всего обучения я занимался только академической составляющей (алгоритмы, структуры, доказательства), решал задачи из сборников. Я не имею никакого представления как правильно решать реальные задачи. Например, где я могу найти исходник реально использующегося онлайн-справочника написанного на python?
0
|
12.06.2019, 00:15 | 9 |
Онлайн справочник, это уже справочник написанный с использованием веб программирования, который размещается на сервере. Я веб знаю поверхностно. Когда я занимался вебом, сервера предоставляющие место для веб сайтов не поддерживали скрипты на питоне. Они поддерживали БД SQL и скрипты на PHP. Как сейчас обстоят дела не знаю.
И еще, для реальных задач на современном уровне нужен графический интерфейс. Все это есть у Лутца, но для того, что бы это освоить нужно изучить первую книгу и потом соответствующие разделы из второй и третьей книги. Лутц М. Изучаем Python (4-е издание, 2011) Лутц М. Программирование на Python. Том 1 (4-е издание, 2011) Лутц М. Программирование на Python. Том 2 (4-е издание, 2011) Представление, как создаются реальные проекты на питоне, можно понять, изучив главу 1 в книге Лутц М. Программирование на Python. Том 1 (4-е издание, 2011). На протяжении главы осваивается конкретный пример. И уже после этого можно дополнить свои знания в других главах, которые могут понадобится именно для Вашей задачи. Добавлено через 16 минут constantin_01, И попробуйте поискать исходники в интернете. Если дать для поиска строку "Исходный текст реальной программы на Python", то дается много ссылок на исходники примеров программ на Python.
0
|
12.06.2019, 12:10 | 10 |
constantin_01, Кстати, не в качестве исходника, а в качестве хорошего онлайн справочника по питону на русском языке
https://pythonz.net/references/named/python/ в объеме приблизительно соответствующем первой книге Лутца , Лутц М. Изучаем Python (4-е издание, 2011)
0
|
1 / 1 / 0
Регистрация: 30.04.2019
Сообщений: 89
|
|
12.06.2019, 13:29 [ТС] | 11 |
Viktorrus, спасибо за ответ!
0
|
12.06.2019, 14:27 | 12 | |||||
constantin_01, Вот вариант Телефонного справочника с использованием технологии ООП.
Код работающий, но у меня никак руки не доходят доделать его. В первую очередь нужно создать графический интерфейс. В нем в том числе разместить поиск записи, а так же кнопку удаления записи. А в переспективе скролинг и другие прибамбасы, в том числе кнопку резервного копирования. Но в принципе уже с тем что есть можно реально работать и заносить в него телефоны.
constantin_01, В принципе этот пример может служить шаблоном написания кода для двухуровневых структур. Таких как: магазин-товар, офис-работники, склад-содержимое склада и так далее. Вот только мне надо доделать этот пример, что бы он был более функционален и удобен для работы. И в первую очередь сделать графический интерфейс. В принципе я знаю как его сделать, используя пример у Лутца, но нужно найти время (хотя время у меня есть) и скорее желание этим заняться, так как придется оторваться от изучения Лутца.
1
|
25.06.2019, 17:09 | 13 | |||||
constantin_01, Вот я к своему телефонному справочнику добавил графический интерфейс.
Можете этот код использовать в качестве примера при своих разработках. Правда я еще не написал функцию для поиска, поэтому пока без него.
2
|
1 / 1 / 0
Регистрация: 30.04.2019
Сообщений: 89
|
|
25.06.2019, 19:12 [ТС] | 14 |
Viktorrus, спасибо!
На самом деле я уже на следующий день почитал Лутца и разобрался в tkinter. Телефонный справочник собрал со всеми функциями
0
|
26.06.2019, 01:03 | 15 | |||||
constantin_01, Все, сделал поиск. Теперь это полноценная телефонная книга. Запишу в нее все свои телефоны. И параллельно буду вносить мелкие усовершенствования, но которые не коснутся структуры записей, и поэтому вся занесенная информация останется не тронутой, и будет так же видна в усовершенствованной книге.
Поиск работает сразу на всю книгу , ища по всем буквам, ища по всем значащим полям (исключая поле ключей, поле букв и последнее служебное поле).
1
|
28.06.2019, 20:37 | 16 | |||||
constantin_01, Сделал новую версию телефонного справочника. Серьезный недостаток предыдущей версии в том, что там для конкретной буквы количество записей ограничено, можно для одной буквы завести только 25 записей.
В новой версии количество записей не ограничено, и появилась возможность листать страницы. Это удалось сделать изменив структуру кода. constantin_01, Там же по Вашему совету изменил расположение кнопок, которые внизу. Так как я графику пока еще серьезно не изучал, то сделал это примитивным способом, используя pack() и вставив пустые Label между кнопками. Когда изучу графику, то сделаю более профессионально. Вот новый код Телефонной книги.
1
|
1 / 1 / 0
Регистрация: 30.04.2019
Сообщений: 89
|
|
28.06.2019, 21:14 [ТС] | 17 |
Viktorrus, здорово!
Меня интересует в каком режиме Вы работали над книгой. Лично я за 3 дня сделал свою версию - в первый день 3-4 часа: чтение Лутца, изучение Tkinter; во-второй день 2-3 часа сама работа; на третий день 2-3 часа на отладку кода и оптимизацию.
0
|
28.06.2019, 22:00 | 18 |
constantin_01, Я не помню. Я телефонную книгу делаю не спеша, когда появляется желание. После того, как отрываюсь от изучения Лутца. На телефонной книге я отдыхаю, в отличие от изучения последних глав у Лутц М. Изучаем Python (4-е издание, 2011). Сейчас изучаю главу Управляемые атрибуты, в том числе дескрипторы.
0
|
01.07.2019, 01:32 | 19 | |||||
constantin_01, Я думал, думал и все таки решил дать возможность телефоны, которые действующие, но вам вроде бы уже и не нужны, не удалять, так как они удаляются физически и их уже не восстановишь, а скрывать. Вдруг все таки еще когда нибудь понадобятся. Но что бы при этом не болтались перед глазами и не загружали телефонную книгу, усложняя поиск телефонов с которыми Вы работаете на текущий момент, их скрыть. При этом можно вывести скрытые телефоны и произвести среди них поиск. При необходимости скрытый телефон можно открыть.
И еще раз напоминаю, что перед уходом со страницы (любым способом), если Вы заносили какую либо информацию на этой странице, то перед переходом нужно обязательно сохранить страницу, иначе все изменения на ней пропадут. Исключением является только удаление записи, если вы ее удалите, то она удаляется физически с момента нажатия кнопки "Удалить", и ее уже никак не восстановить. Поэтиму советую не злоупотреблять удалением записей, а лучше их просто скрывать. Вот обновленный код.
0
|
03.07.2019, 02:29 | 20 | |||||
constantin_01, Начал заносить в книгу свои телефоны и понял, что сохранение страницы только при нахатии кнопки "Сохранить страницу", это очень не удобно. Иногда забываешь нажать и изменения на странице пропадают. Да и надоедает постоянно нажимать лишнюю кнопку. Поэтому сделал автоматическое сохранение при любом уходе со страницы.
Хотел было удалить кнопку "Сохранение", но потом решил оставить на случай, когда на странице сразу вводится большое количество записей. Тогда имеет смысл кнопкой периодически принудительно сохранять изменения на странице, на случай отключения электроэнергии. В стандартных базах данных, там вообще для каждой записи, как только мы уходим с записи, то она автоматически сохраняется. Но это я подумаю, может в будущем тоже так сделаю. А пока, вот новая версия телефонной книги
В ближайшее время код за комментирую, а то сам уже начинаю забывать, что к чему. И если все таки кто то захочет использовать этот код в качестве примера, то комментарии помогут ему разобраться с содержимым.
0
|
03.07.2019, 02:29 | |
03.07.2019, 02:29 | |
Помогаю со студенческими работами здесь
20
Класс "Телефонный справочник" Телефонный номер Телефонный номер Вывести телефонный номер с необходимыми разделителями Телефонный справочник Телефонный асистент Телефонный справочник Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи | |||||
Книги и учебные ресурсы по C#
InfoMaster 08.01.2025
Базовые учебники и руководства
Одной из лучших книг для начинающих является "C# 10 и . NET 6 для начинающих" Эндрю Троелсена и Филиппа Джепикса . Книга последовательно раскрывает основные концепции. . .
|
Что такое NullReferenceException и как исправить?
InfoMaster 08.01.2025
NullReferenceException - одно из самых распространенных исключений, с которым сталкиваются разработчики на C#. Это исключение возникает при попытке обратиться к членам объекта (методам, свойствам или. . .
|
Что такое Null Pointer Exception (NPE) и как это исправить?
InfoMaster 08.01.2025
Null Pointer Exception (NPE) - это одно из самых распространенных исключений в Java, которое возникает при попытке использовать ссылку на объект, значение которой равно null. Это исключение относится. . .
|
Русский язык в консоли C++
InfoMaster 08.01.2025
При разработке программ на C++ одной из частых проблем, с которой сталкиваются русскоязычные программисты, является корректное отображение кириллицы в консольных приложениях. Эта проблема особенно. . .
|
Telegram бот на C#
InfoMaster 08.01.2025
Разработка ботов для Telegram стала неотъемлемой частью современной экосистемы мессенджеров. C# предоставляет мощный и удобный инструментарий для создания разнообразных ботов, от простых. . .
|
Использование GraphQL в Go (Golang)
InfoMaster 08.01.2025
Go (Golang) является одним из наиболее популярных языков программирования, используемых для создания высокопроизводительных серверных приложений. Его архитектурные особенности и встроенные. . .
|
Что лучше использовать при создании класса в Java: сеттеры или конструктор?
Alexander-7 08.01.2025
Вопрос подробнее:
На вопрос: «Когда одновременно создаются конструктор и сеттеры в классе – это нормально?» куратор уточнил: «Ваш класс может вообще не иметь сеттеров, а только конструктор и геттеры. . .
|
Как работать с GraphQL на TypeScript
InfoMaster 08.01.2025
Введение в GraphQL и TypeScript
В современной разработке веб-приложений GraphQL стал мощным инструментом для создания гибких и эффективных API. В сочетании с TypeScript, эта технология. . .
|
Счётчик на базе сумматоров + регистров и генератора сигналов согласования.
Hrethgir 07.01.2025
Создан с целью проверки скорости асинхронной логики: ранее описанного сумматора и предополагаемых fast регистров. Регистры созданы на базе ранее описанного, предполагаемого fast триггера. То-есть. . .
|
Как перейти с Options API на Composition API в Vue.js
BasicMan 06.01.2025
Почему переход на Composition API актуален
В мире современной веб-разработки фреймворк Vue. js продолжает эволюционировать, предлагая разработчикам все более совершенные инструменты для создания. . .
|
Архитектура современных процессоров
inter-admin 06.01.2025
Процессор (центральный процессор, ЦП) является основным вычислительным устройством компьютера, которое выполняет обработку данных и управляет работой всех остальных компонентов системы. Архитектура. . .
|
История создания реляционной модели баз данных, правила Кодда
Programming 06.01.2025
Предпосылки создания реляционной модели
В конце 1960-х годов компьютерная индустрия столкнулась с серьезными проблемами в области управления данными. Существовавшие на тот момент модели данных -. . .
|