Как сделать телефонный справочник в visual studio
Закрепление работы с записями, типизированными файлами и сеткой строк TStringGrid .
Постановка задачи
В данной лабораторной работе нам предстоит написать приложение - телефонный справочник. Это приложение должно обладать всеми необходимыми для нашей задачи качествами:
- выводить контактные данные в виде таблицы;
- сохранять контакты в файл и считывать их оттуда;
- добавлять новый или редактировать (изменять) существующий контакт;
- удалять выбранный из списка контакт;
- сортировать список контактов по алфавиту.
Для работы с контактами создадим тип данных запись , будем использовать переменную этого типа и типизированный файл , в котором данные будут храниться в двоичном виде. Сами контакты будем выводить в сетку TStringGrid , для добавления и редактирования записей создадим отдельное окно - сетка позволит только просматривать и выбирать контакты. Приступим?
Реализация
Для начала откройте Lazarus с новым проектом. Форму, как обычно, называем fMain, сохраняем проект в папку 25-01 под именем telephones, модулю главной формы присваиваем имя Main . Пойдем дальше. Скорее всего, вы будете делиться этой программой с друзьями, поэтому имеет смысл сразу же отключить от проекта вставку отладочной информации. Если вы помните, нужно выбрать команду "Проект -> Параметры проекта", в разделе "Параметры компилятора" перейти на подраздел "Компоновка" и убрать флажок "Генерировать отладочную информацию для GDB". Это позволит нашей программе сразу "похудеть" - от 15 мегабайт готового продукта, до менее чем 2-х мегабайт .
Теперь займемся формой. В свойстве Caption напишите " Телефонный справочник ", в BorderStyle выберите bsDialog (нам не нужно, чтобы пользователь менял размеры окна), а в свойстве Position - poDesktopCenter . Чтобы ваше приложение в точности соответствовало моему, выберите ширину формы Width 700 пикселей, а высоту Height 400 пикселей.
Теперь нам на форме потребуется простая панель инструментов . Установите обычную панель TPanel, очистите её свойство Caption , в свойстве Align выберите alTop , чтобы панель заняла весь верх формы, и в свойстве Height установите значение 27 - нам не нужна слишком высокая панель инструментов , узкая будет смотреться аккуратней.
На панель нам нужно установить четыре кнопки TSpeedButton с вкладки Additional Палитры компонентов. Кнопки TSpeedButton нам нужны, чтобы на них не переходил фокус ввода, в этом случае, всегда активной будет только сетка. Присвойте свойству Name кнопок соответственно, имена bAdd , bEdit , bDel и bSort . Первая " b " в именах означает, что это кнопка - button . В свойствах Caption этих кнопок напишите, соответственно, " Добавить контакт ", " Редактировать контакт ", " Удалить контакт " и " Сортировать список " (без кавычек, разумеется). Картинок на кнопки мы ставить не будем, обойдемся только пояснительным текстом. Свойству Top всех кнопок присвойте значение 2, чтобы они почти прижались к верхней границе панели, свойству Width присвойте 150, чтобы весь текст помещался на кнопках без проблем. Переместите их относительно друг друга так, чтобы от левого края панели и друг от друга их отделяло тоже примерно по 2 пикселя.
Теперь сетка. На свободное место формы, ниже панели, установите сетку TStringGrid . Поскольку нам часто придется обращаться к ней в процессе кодирования, укоротим имя в свойстве Name до SG . В свойстве Align сетки выберите alClient , чтобы сетка заняла всё оставшееся место . Теперь нужно изменить некоторые другие настройки. По умолчанию, в сетке установлено по пять колонок ColCount , и по пять строк RowCount . Колонок нам нужно только три: имя контакта, его телефон и примечание, какой это телефон (мобильный, домашний, служебный, соседский). Поэтому уменьшим количество колонок ColCount до 3. А строка нам нужна и вовсе одна, она будет служить заголовком колонок, и она будет фиксированной. Уменьшайте RowCount до 1.
Теперь о фиксированных строках и колонках. Фиксированная строка FixedRows нам нужна только одна, это значение по умолчанию. А фиксированные столбцы FixedCols нам и вовсе не нужны, тут поставьте ноль.
Остальные параметры сетки можно оставить без изменений. Если вы всё сделали правильно, у вас в результате должна получиться такая форма:
Пойдем дальше. Прежде, чем приступать к самому кодированию, давайте сделаем еще одну форму - окно редактора контактов. Командой Файл -> Создать форму создайте новую форму. Присвойте ей имя fEdit, нажмите кнопку "Сохранить все" и дайте модулю формы имя Edit .
В свойстве Caption напишите " Редактор контакта ". Почему не "контактов"? Каждый раз мы будем загружать в это окно по одному контакту, поэтому и использовано единственное число. В свойстве BorderStyle также выберите bsDialog , в свойстве Position - poMainFormCenter , чтобы окно появлялось по центру главной формы, где бы она ни находилась. Размеры формы: ширина width = 400, высота height = 225 пикселей.
Теперь разместим на форме компоненты. Установите метку TLabel , в Caption которой напишите " Укажите имя контакта: ".
Ниже установите строку TEdit . Переименуйте её в eName , ширину сделайте 380. Очистите свойство Text .
Ниже еще одну метку, с текстом в Caption " Укажите телефон: ".
Ниже установите еще один TEdit . Переименуйте её в eTelephone , ширину сделайте 210. Очистите свойство Text .
Ниже еще одну метку, с текстом в Caption " Выберите тип телефона: ".
Ниже нам потребуется список выбора TComboBox . Мы же не хотим, чтобы пользователю каждый раз самому приходилось писать "мобильный" или "служебный"? Переименуйте TComboBox в CBNote , откройте редактор свойства Items и там наберите следующие строки:
Если сможете придумать другие типы, можете дописать их сюда.
В свойстве ItemIndex компонента установите 0, чтобы в списке появилась первая строка "Мобильный". Ширину сделайте 210.
Ещё ниже установите на одном уровне кнопки TBitBtn. Первую переименуйте в bSave , в свойстве Kind выберите bkOK , чтобы на кнопке появилась картинка - зеленая галочка, убедитесь, что свойство ModalResult кнопки перешло в mrOk . В свойстве Caption напишите " Сохранить контакт ". Чтобы текст нормально умещался, увеличьте её ширину до 160 пикселей.
Вторую кнопку переименуйте в bCancel , в свойстве Kind выберите bkCancel , а в Caption напишите " Не сохранять ". Свойство ModalResult кнопки должно перейти в mrCancel . В результате, у вас должна получиться вот такая форма:
Чтобы более не возвращаться к этой форме, давайте сразу введем весь необходимый код формы, тем более что его совсем мало. Для кнопок нам вообще не нужно писать код. Когда мы изменили их свойства Kind , установив там bkOK и bkCancel , сразу изменилось и их свойство ModalResult , установившись, соответственно, в mrOK и mrCancel . И теперь нажатие на любую из этих кнопок приведет к закрытию формы, и к тому, что в ModalResult формы попадет значение ModalResult нажатой кнопки. То есть, мы сможем узнать, какой кнопкой пользователь закрыл окно.
Но нам нужно все же сделать некоторую подготовительную работу. Прежде, чем показывать форму, нам нужно будет перевести фокус ввода в первый TEdit , ведь от прежней работы с формой выделенным мог остаться и другой компонент - кнопка или список выбора, например. А это будет неудобно для пользователя, ему придется лишний раз кликать мышью, выделяя первую строку.
Выделите форму, щелкнув по свободному участку, в Инспекторе объектов перейдите на вкладку События и сгенерируйте событие формы OnShow - это событие возникает всякий раз перед показом формы - идеальное место для подготовительной работы. Код события совсем простой:
И с редактором контактов это все! Вся остальная работа будет происходить в главной форме.
В редакторе форм перейдите на вкладку Main - наша главная форма. Прежде всего, в разделе uses главной формы, через запятую, добавьте модуль edit - это наш редактор контактов. Если мы не добавим его в раздел uses , то не сможем с ним работать из главной формы.
Далее, перед разделом глобальных переменных, тем, где объявлена переменная формы fMain , создадим еще один раздел type , в котором опишем запись :
В этой записи три поля. Первое поле Name предназначено для имени контакта. Вы можете заметить, что оно ограничено размером 100 символов. Как уже говорилось в "Записи и вариант. Сетка строк TStringGrid" , в записи можно указывать неограниченный тип string , но тогда создать типизированный файл этого типа не получится. Поэтому у нас все строки имеют фиксированный размер. В поле Name пользователь будет вписывать имена контактов, например:
Может показаться, что 100 символов для имени контакта - это перебор. Однако вспомните, что для текста у нас используется кодировка UTF-8 , а в ней каждый символ кириллицы занимает 2 байта. То есть, если писать имена по -русски, реально можно вписать только 50 символов! А фамилии и имена бывают очень длинными, но 50 символов должно хватить. Для телефона мы указали 20 символов. Это обычно, цифры, скобки и знаки тире:
На каждый из этих символов требуется только 1 байт , так что 20 символов хватит за глаза для любого телефона.
Ну и, наконец, поле Note , в котором будет одно из значений:
Эти символы тоже занимают по 2 байта, самое длинное слово имеет 9 символов - 18 байт . А мы указали 20, так что должно хватить.
Далее, в разделе глобальных переменных, после описания самой формы, опишем глобальную переменную adres :
Эта переменная понадобится нам позже, в нее мы запишем адрес , откуда была запущена программа , чтобы потом по этому адресу отыскать файл с контактами. Ранее мы говорили, что если не указывать адрес , то компьютер будет искать файл в текущей папке, то есть - в папке с программой. Однако так бывает не всегда. Если вы параллельно работаете с несколькими другими программами, и все они то и дело обращаются к файлам, то текущий адрес может измениться. Вот почему всегда лучше подстраховаться, и указать настоящий адрес - это гарантирует вашу программу от любых ошибок.
Далее, "научим" программу принимать новые данные и выводить их в сетку. Сгенерируйте событие OnClick для кнопки "Добавить контакт". Код события такой:
Давайте разбираться с кодом. Прежде всего, в редакторе контактов fEdit мы очистили текст из строк с именем и номером телефона. Ведь если пользователь уже добавлял или редактировал контакты, в этих строках останутся записи с прошлого сеанса. Затем свойству ModalResult формы мы присваиваем значение mrNone - нет результата. Делаем это затем, чтобы потом точно знать, каким образом пользователь закрыл окно редактора контактов. Если кнопкой "Сохранить контакт", то в этом случае ModalResult формы будет mrOk , если кнопкой "Не сохранять", ModalResult формы будет mrCancel . Если же он просто закрыл окно крестиком в правом верхнем углу окна или клавишами <Alt+F4>, то в этом случае ModalResult формы так и останется mrNone .
Далее, мы выводим окно редактора контактов, как модальное.
К следующей строке кода программа доберется, когда пользователь введет (или не введет) новый контакт и закроет окно редактора. Прежде, чем что-то добавлять в сетку, мы делаем проверку - а ввел ли пользователь имя нового контакта, и телефон? Ведь если он ничего не ввел, то и сохранять нечего. И если он ввел один только телефон, без имени, или имя без телефона - какой смысл сохранять такой контакт? Поэтому, если нет имени или телефона, мы просто выходим из процедуры:
Однако может случиться, что пользователь ввел и имя, и телефон, но потом передумал сохранять контакт и нажал кнопку "Не сохранять", или просто закрыл окно редактора. Поэтому нам нужно сделать еще одну проверку:
Здесь мы смотрим значение свойства ModalResult формы. Оно сможет стать mrOK только в одном случае - если пользователь нажал кнопку "Сохранить контакт". И если это не так, то выходим из процедуры, ничего не сохраняя.
Если мы не вышли из процедуры в предыдущих двух проверках, то это означает, что
- нам есть, что сохранять
- пользователь нажал "Сохранить контакт"
И если это так, значит, добавляем новую строку в сетку SG и заполняем три её колонки значениями из редактора контактов. Дополнительных проверок на существование текста примечания мы не делали, так как там в любом случае будет указан один из типов телефонов:
Сохраните проект и запустите его на выполнение. Если вы всё сделали верно, программа позволит вам добавлять новые контакты. Не обращайте внимания на недоработанный вид сетки - узкие столбцы без заголовков - это мы исправим чуть позже.
1. Создание базы данных
В качестве СУБД выберем программу Microsoft Access. Но вы можете использовать и другую базу данных.
Создаем базу данных в Microsoft Access и называем её «test». В этой базе данных создаем таблицу «contacts»:
Заполните базу данных данными:
Базу данных вы можете и другую создать и данные в ней можете другие добавить т.к. это не принципиально, но мы будем работать с данной таблицей.
2. Создание проекта
В Visual Studio создаём проект:
Открываем список «Выберите источник данных» и нажимаем на ссылку «Добавить источник данных проекта»:
Откроется «Мастер настройки источника данных». В качестве источника выбираем «База данных» и идем далее:
В следующем окне идем далее:
В окне «Выбор подключения к базе данных» нажимаем на «Создать подключение»:
В следующем окне «Добавить подключение» выбираем в «Поставщик OLE DB» Microsoft Office 16.0 Access Database. В «Имя сервера или файла» вписываем путь к нашему файлу базы данных Access (который создали в первом пункте). Проверяем подключение и жмем «ОК»:
Update 2021: Visual Studio 2019 требует файл Access старого формата (.mdb – это старый формат баз данных Access 2002-2003):
В следующем окне идем далее:
Выйдет окно для переноса файла базы данных в Ваш проект нажимаем «Да»:
В следующем окне ничего не меняем и идем далее:
В следующем окне выбираем нашу таблицу «contacts» и жмем «Готово»:
После всех манипуляций наша форма должна быть примерно такой:
Если запустить наш проект, то можно увидать данные из нашей базы данных:
Поменяйте ширину всех столбцов на «150» чтобы столбцы вместились во все окно:
Вот так без единой строчки кода мы вывели данные из нашей таблицы на нужную нам форму. Переходим к 3 пункту.
3. Сохранение данных
Базу данных мы видим, но редактировать её невозможно и именно поэтому нам нужна кнопка «Сохранить». Добавляем на форму кнопку и в свойствах меняем имя на «SaveButton». После добавления кнопки нажимаем на нее два раза и пишем код:
После добавления кода запустите свое приложение и попробуйте изменить любую запись и сохранить.
4. Изменение заголовков столбцов таблицы
Изменим текст столбцов и скроем столбец «img»:
Полезные свойства для изменения столбцов:
- HeaderText – задает название столбца.
- Visible – скрывает заголовок или наоборот.
- Width – ширина столбца.
- Resizable – можно ли изменять ширину столбца.
После того как скроете заголовок «img» измените ширину всех остальных заголовков:
5. Защита от случайного удаления
Чтобы пользователь случайно не удалил запись в нашей базе данных нужно сделать так чтобы перед удалением приложение спрашивало об удалении записи.
Для этого перейдем к компоненту DataGridView, откроем список событий и установим обработчик для события UserDeletingRow. Нажмите два раза на пустую строчку возле события и перейдете к коду. Вписываем код:
После этого проверим работоспособность данного кода. Запустим приложение и попробуем удалить запись. Должно быть вот так:
6. Добавление данных
Добавляем новую форму в проект и называем ее «AddForm»:
Изменяем заголовок формы и добавляем на форму компоненты:
- 1 groupBox c текстом «Добавление записи»;
- 4 TextBox и меняем свойство «Name» на (tbName, tbPhone, tbMail, tbPhoto);
- 4 label и меняем текст на (Имя, Телефон, E-mail, Фото);
- 1 Button и меняем свойство «Name» на «AddBtn» (Добавить);
- 1 Button и меняем свойство «Name» на «CloseBtn» (Закрыть).
Переходим на главную форму и добавляем кнопку «Добавить» для добавления новой записи. Дважды щелкаем на нее и пишем код для вызова нашей новой формы:
Проверьте работоспособность приложения:
Возвращаемся на форму «Добавления записи». Пишем обработчик событий для кнопки «CloseBtn»:
Чтобы обработчик событий на кнопке «AddBtn» работал как надо нужно выполнить несколько действий. Зайти в «Form1.Designer.cs» и изменить модификаторы доступа на «public» нижеуказанных файлов:
- System.Windows.Forms.DataGridView dataGridView1;
- testDataSet testDataSet;
- System.Windows.Forms.BindingSource contactsBindingSource;
- testDataSetTableAdapters.contactsTableAdapter contactsTableAdapter;
Это нужно для того чтобы наша база данных была доступна для разных с ней манипуляций во всех создаваемых нами формах. Обработчик событий для кнопки «AddBtn»:
Проверьте работу приложения. Добавьте несколько новых записей через новую форму добавления записей.
7. Поиск данных
Реализуем самый простой поиск. Данный поиск используется в небольших приложениях. Создаем новую форму с именем «SearchForm» и добавляем на форму компоненты:
- 1 GroupBox (Поиск);
- 1 label;
- 2 button (Найти и Закрыть);
- 1 TextBox и меняем в свойствах «Name» на «tbStr».
Переходим на главную форму и добавляем кнопку «Найти» для поиска записей. Дважды щелкаем на нее и пишем код для вызова нашей новой формы:
Проверяем работоспособность приложения:
Возвращаемся на форму «Поиска». Пишем обработчик событий для кнопки «Закрыть»:
Пишем обработчик событий для кнопки «Найти»:
На главную форму добавляем кнопку «Выход» и пишем для нее код:
Итоговая форма приложения:
Wasaby — это современный фреймворк для создания пользовательских веб-интерфейсов. Для быстрого решения задач разного уровня мы предлагаем богатый набор возможностей. Базовой концепцией Wasaby является представление интерфейса как набора иерархически вложенных контролов. Контролом мы называем изолированную часть функционала, которую можно использовать повторно при разработке интерфейса.
В этом задании телефонный справочник будет создан на основе контрола View из библиотеки Controls/grid. Коротко контрол называют "Таблица" (здесь и далее).
Чтобы справочник по умолчанию был заполнен демонстрационными записями, на основе файла Data.ts мы создадим источник данных. Скачайте файл Data.ts и поместите его в файловую структуру вашего проекта в соотвествии со схемой ниже.
Источник данных будет создан на основе класса Memory из библиотеки Type/source и передан в конфигурацию контрола.
Файловая структура на момент начала задания:
Шаг 1: Настройка контрола
Для избежания ошибок при обмене опциями и свойствами между объектами приложения необходимо использовать интерфейсы. Опишем некоторые из них.
Шаг 1.1: Создание нового интерфейса IPhoneBookRecord
- Откройте файл PhoneBook.ts .
- В файле PhoneBook.ts создайте интерфейс IPhoneBookRecord .
С помощью интерфейса IPhoneBookRecord мы описали тип данных для элемента таблицы.
Шаг 1.2: Создание интерфейса IPhoneBookOptions
Также в файле PhoneBook.ts создайте интерфейс IPhoneBookOptions .
С помощью интерфейса IPhoneBookOptions мы описали, что опция data принимает массив элементов с типом IPhoneBookRecord . Интерфейс наследуется от базового интерфейса контрола IControlOptions .
Шаг 1.3: Добавление интерфейса IPhoneBookOptions в класс контрола
В описании класса PhoneBook укажите интерфейс IPhoneBookOptions .
Шаг 1.4: Настройка начального значения для опции data
Для контрола PhoneBook создайте статическое поле defaultProps . Данное поле устанавливает значение по умолчанию для опции data , если эта опция не задана. Разместите данное поле внутри описания класса PhoneBook .
Шаг 2: Добавление источника данных
Шаг 2.1: Импорт файла с готовыми данными (файл Data.ts)
Демонстрационные данные для статического источника расположены в директории PhoneBook-demo — файл Data.ts .
- Откройте файл Index.ts .
- Импортируйте данные из файла Data.ts в переменную data .
- Создайте новое свойство _phoneBookData и передайте в него data .
Шаг 2.2: Подключение демонстрационных данных к контролу PhoneBook
- Откройте файл Index.wml .
- Внутрь контрола PhoneBook добавьте следующую опцию:
Теперь с этими данными можно работать в контроле PhoneBook через переменную data .
Шаг 2.3: Импорт библиотеки Types/source и класса Memory
- Откройте файл PhoneBook.ts .
- Импортируйте класс Memory из библиотеки Types/source в файл PhoneBook.ts .
Шаг 2.4: Объявление свойства _source
- Откройте файл PhoneBook.ts .
- Опишите свойство _source с типом Memory :
Шаг 2.5: Инициализация источника данных
В хуке _beforeMount() создайте статический источник данных и передайте его в свойство _source .
Шаг 3: Добавление "Таблицы"
Шаг 3.1: Импорт класса View из библиотеки Controls/grid
- Откройте файл PhoneBook.ts .
- Импортируйте класс View из библиотеки Controls/grid.
Шаг 3.2: Создание свойства _columns и настройка колонок
Для того чтобы сконфигурировать отображение колонок таблицы, необходимо сначала объявить свойство, например _columns .
Объектно-ориентированный язык программирования характеризуется тремя основными свойствами:
1. Инкапсуляция. Комбинирование записей с процедурами и функциями, манипулирующими полями этих записей, формирует новый тип данных - объект.
2. Наследование. Определение объекта и его дальнейшее использование для построения иерархии порожденных объектов с возможностью для каждого порожденного объекта, относящегося к иерархии, доступа к коду и данным всех порождающих объектов.
3. Полиморфизм. Присваивание действию одного имени, которое затем совместно используется вниз и вверх по иерархии объектов, причем каждый объект иерархии выполняет это действие способом, именно ему подходящим.
Прикрепленные файлы: 1 файл
Курсовоая ООП.doc
Воронежский институт высоких технологий – АНОО ВПО
Факультет: ФЗ и ПО
Специальность: Информационные системы и технологии
по дисциплине «Объектно-ориентированное программирование»
на тему: Разработка программы «Телефонный справочник»
Введение
Объектно-ориентированный язык программирования характеризуется тремя основными свойствами:
1. Инкапсуляция. Комбинирование записей с процедурами и функциями, манипулирующими полями этих записей, формирует новый тип данных - объект.
2. Наследование. Определение объекта и его дальнейшее использование для построения иерархии порожденных объектов с возможностью для каждого порожденного объекта, относящегося к иерархии, доступа к коду и данным всех порождающих объектов.
3. Полиморфизм. Присваивание действию одного имени, которое затем совместно используется вниз и вверх по иерархии объектов, причем каждый объект иерархии выполняет это действие способом, именно ему подходящим.
Рассмотрим основные этапы развития программирования, которые помогают лучше понять взаимосвязь структурного подхода, модульного программирования и ООП.
Анализ и проектирование
Постановка задачи
Программа "Телефонный справочник". Надо обеспечить просмотр, занесение, модификацию и поиск информации по номеру и фамилии.
Алгоритм решения
Для хранения данных об абонентах в программе будет использоваться класс.
Класс - это тип. Этот производный тип вводится в программу с помощью специального оператора объявления класса. В объявлении класса используется ранее описанный инструментальный набор средств для построения и преобразования производных типов.
Очередное множество форм Бэкуса-Наура определяет синтаксис объявления класса.
Объявление ::= [ СписокСпецификаторовОбъявления ] [СписокОписателей];
УточнённыйСпецификаторТипа ::= КлючевоеСловоКласса ИмяКласса
::= КлючевоеСловоКласса Идентифика тор
::= КлючевоеСловоКласса [Идентификатор] [СпецификацияБазы]
::= КлючевоеСловоКласса ИмяКласса [СпецификацияБазы]
Спецификатор класса представляет то, что называется объявлением класса. Уточнённый спецификатор типа объявляет расположенный за ним идентификатор именем класса. Уточнённый спецификатор обеспечивает неполное предварительное объявление класса и перечисления.
Класс считается объявленным даже тогда, когда в нём полностью отсутствует информация о членах класса (пустой список членов класса). Неименованный класс с пустым множеством членов - уже класс!
Имя класса можно употреблять как имя (имя типа) уже в списке членов этого самого класса.
Класс может быть безымянным.
Мы продолжаем формальное определение класса. Теперь рассмотрим синтаксис объявления членов класса.
СписокЧленов ::= ОбъявлениеЧленаКласса [СписокЧленов]
ОписательЧленаКласса ::= Описатель [ЧистыйСпецификатор]
Список членов определяет полный набор членов данного класса. В этом списке объявляются все члены класса. Таковыми могут быть данные, функции-члены, ранее объявленные классы, перечисления, битовые поля, дружественные функции и даже имена типов. Некоторые из перечисленных понятий нам уже знакомы, о других речь ещё впереди. Этот список не подлежит модификации. Он формируется за один раз.
В соответствии с синтаксическими правилами, членами класса могут быть как определения функций, так и их прототипы.
Функции-члены могут определяться вне списка членов класса. При определении функции-члена класса за пределами данного класса, в списке членов класса размещается прототип функции-члена. А при определении функции-члена используется квалифицированное имя. Квалифицированное имя состоит из последовательности имён классов, разделённых операциями разрешения области видимости. Эта последовательность имён завершается именем определяемой функции. Последовательность имён классов в квалифицированных именах определяется степенью вложенности объявлений классов.
Класс - это то, что делает C++ объектно-ориентированным языком. На основе классов создаются новые производные типы и определяются функции, которые задают поведение типа.
Тип – класс с информацией об абоненте
ФИО абонента – символьные поля длиной 20 символов.
Адрес абонента – символьное поле длиной 50 символов.
Дата рождения – поле дат.
Номер телефона – символьное поле длиной 20 символов.
Рассмотрим пошаговый алгоритм работы программы
1. Вывод главного окна программы.
2. Выбор режима путем нажатия кнопки на главном окне.
3. Если нажата кнопка работы со справочником, то переходим к окну базы данных в котором производится работа с записями: добавление, удаление, редактирование. Данные перед выводом окна считываются из базы данных. По окончании работы с базой (закрытие окна) результат записывается в файл.
4. Если нажата кнопка просмотра базы данных, переходим к окну вывода. Здесь возможен вывод как неотсортированного списка абонентов, так и отсортированного по выбираемому пользователем критерию (по ФИО абонента, адресу, номеру телефона. Для сортировки использовался алгоритм простого выбора.
Простейшая сортировка посредством выбора сводится к следующему.
I Найти наименьший ключ, переслать соответствующую запись в область вывода и заменить ключ значением ¥ (которое по предположению больше любого реального ключа).
II Повторить шаг (I). На этот раз будет выбран ключ, наименьший из оставшихся, так как ранее наименьший ключ был заменен значением ¥.
III Повторять шаг (I) до тех пор, пока не будут выбраны N записей.
Структурная модель
Структура программного комплекса представлена на рис. 1 в виде схемы взаимодействия модулей программного комплекса. Она отражает структуру программного комплекса, организацию диалога задачи и показывает связь модулей программы между собой.
После начала работы управление передается блоку «Работа со справочником абонентов». Здесь вводятся данные по абонентам. Блок выборок производит отбор абонентов по заданному критерию – ФИО, адресу или номеру телефона. Он содержит блоки, выполняющие необходимые выборки записей. Блок «Просмотр базы данных» выполняет сортировки - упорядочивает записи по выбранному критерию.
Объектная модель
При программной реализации алгоритма будет использоваться объект Телефонная книга, состав которого приведен на рис. 2.
f – фамилия абонента;
fn – имя абонента;
sn – отчество абонента;
dr – дата рождения;
tel – номер телефона;
TelBook – конструктор, заполняет поля объекта;
FilterFIO – выборка абонентов по заданным ФИО;
FilterAdr - выборка абонентов по заданному адресу;
FilterTel - выборка абонентов по заданному номеру телефона.
Разработка программы
Назначение программы
Программа предназначена для демонстрации работы с созданным классом и выполняет простейшие операции с базой данных абонентов телефонной сети.
Системные требования
Программа может работать в среде операционных систем от Windows 98 до Windows 7. Особых требований, по современным меркам, к ресурсам компьютера пакет не предъявляет: процессор должен быть типа Pentium или Celeron с тактовой частотой не ниже 166 МГц (рекомендуется Pentium II 400 МГц), оперативной памяти – 128 Мбайт (рекомендуется 256 Мбайт), достаточное количество свободного дискового пространства (для установки необходимо приблизительно 400 Кбайт).
Следует установить все рекомендуемые производителем ОС критические обновления. Если поддержка ОС производителем прекращена, рекомендуется перейти на более современную версию системы.
Размер свободного дискового пространства не менее 1,5 Мбайт (для файла базы данных и программного модуля).
Выбор языка программирования
Для написания программы была использована среда визуального программирования C++ Builder версии 6.0.
С++ в настоящее время считается господствующим языком, используемым для разработки коммерческих программных продуктов. В последние годы это господство слегка поколебалось вследствие аналогичных претензий со стороны такого языка программирования, как Java, но маятник общественного мнения качнулся в другую сторону, и многие программисты, которые бросили С++ ради Jаvа, в последнее время поспешили вернуться к своей прежней привязанности. В любом случае эти два языка настолько похожи, что, изучив один из них, вы автоматически осваиваете 90% другого.
С++ является языком программирования общего назначения. Естественная для него область применения – системное программирование, понимаемое в широком смысле этого слова. Кроме того, С++ успешно используется во многих областях приложения, далеко выходящих за указанные рамки. Реализации С++ теперь есть на всех машинах, начиная с самых скромных микрокомпьютеров – до самых больших супер–ЭВМ, и практически для всех операционных систем.
Запросы пользователей определили развитие С++. Его направлял опыт широкого круга пользователей, работающих в разных областях программирования. За шесть лет, отделяющих нас от первого издания описания С++, число пользователей возросло в сотни раз. За эти годы были усвоены многие уроки, были предложены и подтвердили практикой свое право на существование различные приемы программирования.
Язык C++ явился мощным и стремительным рывком в развитии программирования. C++ и по сей день занимает господствующее положение среди языков программирования в мире. Огромное множество профессиональных программистов использует именно его при разработке разного рода проектов. Очевидно, этот язык будет сохранять свое солидное положение ещё не один год, при этом по–прежнему развиваясь и совершенствуясь.
C++ Builder позволяет организовать легкий доступ к базам данных по средствам специальных технологий. Он позволяет создать мощный, понятный, удобный интерфейс для любой операционной системы.
Используя Visual Studio, можно создавать приложения для устройств Android, iOS и Windows. При разработке приложения вы можете использовать инструменты Visual Studio для добавления подключенных служб, таких как Microsoft 365, Служба приложений Azure и Application Insights.
Для создания игр или мощных графических приложений установите инструменты Visual Studio для Unity. Это позволит максимально эффективно использовать функции Visual Studio и Unity — популярного движка и среды разработки для игр и мощных графических приложений в Windows, iOS, Android и на других платформах.
С помощью инструментов Visual Studio для Xamarin вы можете указать Android, iOS и Windows в качестве целевых устройств в одном и том же решении, при этом код и даже пользовательский интерфейс будут использоваться совместно.
Целевые устройства Android, iOS и Windows из единой базы кода
После окончания установки шаблоны проектов появятся в диалоговом окне Новый проект. Чтобы найти шаблоны Xamarin, проще всего ввести "Xamarin" в строке поиска.
После создания проекта вы сможете использовать все функции повышения продуктивности в составе Visual Studio. Например, вы сможете создавать страницы с помощью конструктора и изучить собственные API-интерфейсы мобильных платформ с помощью IntelliSense. Для запуска готового приложения и оценки его интерфейса можно использовать эмулятор пакета SDK для Android и запускать приложения в собственной среде Windows. Вы также можете использовать связанные устройства Android и Windows напрямую. Для проектов iOS необходимо подключиться к компьютеру Mac, подключенному к сети, и запустить эмулятор iOS из Visual Studio или подключиться к связанному устройству.
Создание одного набора страниц, отображаемого на всех устройствах, с помощью Xamarin.Forms
В зависимости от сложности конструкции приложения, возможно, имеет смысл использовать для его создания шаблоны Xamarin.Forms в группе шаблонов проектов Мобильные приложения . Xamarin.Forms — это набор средств разработки пользовательского интерфейса, с помощью которого можно создать единый интерфейс приложения для совместного использования на устройствах Android, iOS и Windows. При компиляции решения Xamarin.Forms вы получаете приложение для Android, приложение для iOS и приложение для Windows. Дополнительные сведения см. в разделе Дополнительные сведения о разработке мобильных приложений с помощью Xamarin и в документации по Xamarin.Forms.
Совместное использование кода приложениями Android, iOS и Windows
Код можно совместно использовать с помощью общего проекта, проекта переносимой библиотеки классов или обоих этих проектов. Может оказаться, что какой-то код больше подходит в общем проекте, а другой код лучше себя ведет в рамках проекта переносимой библиотеки классов.
Целевые устройства Windows 10
Если вы хотите создать одно приложение, предназначенное для полного спектра устройств Windows 10, создайте универсальное приложение Windows. Разработка приложения будет осуществляться с помощью одного проекта, а страницы будут отображаться должным образом независимо от того, какое устройство используется для их просмотра.
Начните с шаблона проекта приложения на универсальной платформе Windows (UWP). Вы можете визуально разрабатывать страницы, а затем открывать их в окне предварительного просмотра, чтобы увидеть, как они будут отображаться для различных типов устройств. Если вас не устраивает, как страница отображается на устройстве, вы можете оптимизировать ее в соответствии с размером экрана, разрешением или ориентацией (горизонтальной или вертикальной). Все это можно сделать с помощью удобных инструментальных окон и пунктов меню в Visual Studio. Когда вы будете готовы к запуску приложения и пошаговому выполнению кода, вы сможете найти все эмуляторы и имитаторы для различных типов устройств в одном раскрывающемся списке на стандартной панели инструментов.
Дополнительные сведения |
---|
Общие сведения об универсальной платформе Windows |
Создание первого приложения |
Разработка приложений для универсальной платформы Windows (UWP) |
Сборка приложения для устройств Android, iOS и Windows (HTML/JavaScript)
Если вы разработчик веб-решений и знакомы с HTML и JavaScript, то вы можете создавать приложения для целевых платформ Windows, Android и iOS с помощью средств Visual Studio для Apache Cordova. Такие приложения могут быть ориентированы на все три платформы, и при их создании вы можете полагаться на привычные навыки и процедуры.
Apache Cordova — это платформа, включающая модель подключаемого модуля. Модель подключаемого модуля предоставляет единый API-интерфейс JavaScript, который можно использовать для доступа к собственным возможностям устройств на всех трех платформах (iOS, Android и Windows).
Поскольку эти API-интерфейсы являются кроссплатформенными, большую часть написанного кода можно совместно использовать для всех трех платформ. Это снижает расходы на разработку и обслуживание. Кроме того, нет необходимости начинать с нуля. При создании других типов веб-приложений можно предоставить эти файлы приложению Cordova без каких-либо изменений и переработки.
Чтобы приступить к работе, установите Visual Studio и выберите Разработка мобильных приложений на JavaScript во время установки. Инструменты Cordova автоматически установят любое стороннее программное обеспечение, необходимое для создания приложения для нескольких платформ.
После установки расширения откройте Visual Studio и создайте проект пустого приложения (Apache Cordova) . Затем можно разработать приложение с помощью JavaScript или TypeScript. Кроме того, можно добавлять подключаемые модули для расширения функциональности приложения, и API-интерфейсы из подключаемых модулей будут появляться в IntelliSense в ходе написания кода.
Когда вы будете готовы к запуску приложения и пошаговому выполнению кода, выберите эмулятор, например Apache Ripple или Android Emulator, браузер или устройство, подключенное непосредственно к компьютеру. Запустите приложение. Если вы разрабатываете приложение на компьютере Windows, можно запустить его прямо на нем. Все эти возможности встроены в Visual Studio в составе расширения "Инструменты Visual Studio для Apache Cordova".
Шаблоны проектов для создания приложений на универсальной платформе Windows (UWP) по-прежнему доступны в Visual Studio, и вы можете свободно использовать их, если планируете ориентироваться только на устройства Windows. Если впоследствии вы решите перейти к устройствам Android и iOS, то всегда сможете перенести свой код в проект Cordova.
Создание приложения для Android, iOS и Windows (C++)
Сначала установите Visual Studio и рабочую нагрузку Разработка мобильных приложений на C++ . Затем вы сможете создать приложение Native Activity для Android, Windows или iOS. Одно и то же решение можно ориентировать на устройства Android, iOS и Windows, а затем наладить совместное использование кода между ними с помощью общей кроссплатформенной статической или динамической библиотеки.
Если вам нужно создать приложение для Android, требующее сложных операций с графикой (например, игру), можно воспользоваться C++. Начните с проекта Native Activity (Android) . В этом проекте реализована полная поддержка цепочки инструментов Clang.
Для запуска готового приложения и оценки его интерфейса воспользуйтесь Android Emulator. Это быстрый, надежный и простой в установке и настройке инструмент.
Вы можете создавать приложения, ориентированные на весь спектр устройств под управлением Windows 10, с помощью C++ и шаблона проекта приложения универсальной платформы Windows (UWP). Дополнительные сведения см. в разделе Целевые устройства Windows 10 ранее в этой статье.
С помощью статической или динамической общей библиотеки вы сможете совместно использовать код С++ между устройствами Android, iOS и Windows.
Эту библиотеку можно использовать в проекте Windows, iOS или Android, как описано ранее в этом разделе. Также ее можно использовать в приложении, созданном с помощью Xamarin, Java или любого другого языка, который позволяет вызывать функции в неуправляемой библиотеке DLL.
При написании кода в этих библиотеках можно использовать IntelliSense для просмотра собственных API платформ Android и Windows. Эти проекты библиотеки полностью интегрированы с отладчиком Visual Studio, поэтому можно задавать точки останова, осуществлять пошаговое выполнение кода, находить и исправлять проблемы, используя расширенные возможности этого отладчика.
Создание кросс-платформенной игры для устройств Android, iOS и Windows с использованием инструментов Visual Studio для Unity
Инструменты Visual Studio для Unity представляют собой бесплатное расширение Visual Studio, которое интегрирует мощные функции редактирования кода, повышения продуктивности и средства отладки в составе Visual Studio с Unity, популярной кроссплатформенной системой и средой разработки для игр и мощных графических приложений на платформах Windows, iOS, Android и других платформах, включая веб-приложения.
Читайте также: