Как сделать телефонный справочник в visual studio
Разработка программы для поиска нужных сведений в телефонном справочнике с использованием языка программирования Borland C++, в качестве базы данных которого используется файл (base.txt). Реализация функции сортировки по фамилии в форматах (А-я) и (Я-а).
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 22.08.2013 |
Размер файла | 261,8 K |
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Cоздание телефонного справочника «Telephone reference book» посредством Borland C
Введение
С момента появления первых образцов персональных компьютеров прошло не так уж и много времени, но сейчас без них уже немыслимо огромное количество областей человеческой деятельности - экономика, управление, наука, инженерное дело, издательское дело, образование, культура и т.д.
Интерес к персональным компьютерам постоянно растет, а круг их пользо-вателей непрерывно расширяется. В число пользователей ПЭВМ вовлекаются как новички в компьютерном деле,так и специалисты по другим классам ЭВМ.
Важнейшая роль в развитии современного общества в конце XX века принадлежит информатизации. По характеру и значению для будущего человеческой цивилизации процесс информатизации можно сравнить с переходом, человечества от аграрного общества к индустриальному. Подобно тому, как изобретение механического двигателя открыло эру комплексной механизации и автоматизации физического труда, изобретение ЭВМ сделало то же самое в отношении труда умственного.
Процесс информатизации характеризуется использованием информации в качестве общественного продукта, обеспечивающего интенсификацию всех сфер экономики, ускорение научно-технического прогресса, интеллектуализацию основных видов человеческой деятельности и демократизацию общества. В результате внедрения новых информационных технологий значительно изменяются общественно-экономические структуры, формируется гибкое динамическое общество, способное к активной самооценке и выбору целей развития, быстрой и адекватной реакции на изменение внешней и внутренней среды.
Основой информатизации является использование электронно-вычислительной техники для сбора, накопления, обработки и передачи информации. ЭВМ-комплекс технических средств, предназначенных для автоматической обработки информации в процессе решения вычислительных и информационных задач.
Чтобы компьютер выполнил решение какой-либо задачи, ему необходимо получить от человека инструкции, как её решать. Набор таких инструкций для компьютера, направленный на решение конкретной задачи, называется компьютерной программой.
Для написания для написания таких инструкций программисты используют языки программирования. Все языки программирования делятся на языки низкого (ассемблер), высокого (Си, Бейсик, Паскаль, Фортран, C++) и сверхвысокого (Алгол-67, Пролог) уровня.
Язык С++ - универсальный язык общего назначения, область приложений которого - программирование систем в самом широком смысле. Кроме этого, С++ успешно используется как во многих приложениях, так и в мощных операционных системах. Реализация С++ осуществлена для машин в диапазоне от самых простых персональных компьютеров до самых мощных суперкомпьютеров и для всех операционных систем.
Целью курсовой работы является создание телефонного справочника «Telephone reference book» посредством Borland C.
Необходимо написать программу которая позволяет найти нужные сведения в телефонном справочнике, в качестве базы данных которого используется файл (base.txt). Программа должна осуществлять поиск по фамилии, телефону и адресу. Если некоторые из данных совпадают то программа должна вывести список всех людей которые прошли выборку.
В программе должна быть реализована функция сортировки по фамилии в форматах (А-я) и (Я-а), а также функция позволяющая добавлять нового человека в базу (файл base.txt).
Для достижения поставленной цели были определены следующие задачи:
1. Изучить литературу по работе с файлами.
2. Научится работать с файлами.
3. Ознакомиться с понятиями графики.
4. Научиться работать в графическом режиме.
I. Теоретический раздел
Бумажные телефонные справочники давно изжили своё и на данный момент перестали быть актуальными. На смену им пришли электронные справочники, которые позволяют хранить большие объёмы данных, а также позволяют осуществлять быстрый поиск по этим данным.
Анализируя постановку задачи становится ясно, что для её решения необходимо применить метод многофункционального программирования - этот метод основан на разбиении программы на отдельные функциональные модули, которые вызываются из основной программы в процессе её работы.
В основе разработки такой программы лежит нисходящее программирование - т.е. сначала разрабатывается основная программа - в данном случае программа ввода текста на экран, обработки функциональных клавиш и меню, с помощью выбора пунктов которого будет в дальнейшем организовываться её работа. При выборе того или иного пункта меню или нажатии функциональной клавиши будет вызываться одна или несколько подпрограмм, но на начальном этапе разработки программы методом нисходящего программирования вместо этих подпрограмм ставиться "заглушки" - пустые подпрограммы, которые в процессе разработки будут заменяться программами, выполняющими определённую функцию.
Первый вопрос который возник при разработке программы касался того, где и как хранить данные? Было представлено два варианта:
1. Использовать для хранения информации СУБД.
2. Использовать обычный текстовый файл.
После недолгих размышлений первый вариант был отвергнут, потому
как СУБД - являются очень громоздкими и ресурсоёмкими приложениями. Нам же нужен лёгкий и быстрый справочник который бы запустился даже на очень слабой машине.
Второй вопрос который возник касался меню, и того каким оно должно быть. Выбор был не велик «Текстовое» либо «Графическое». Выбор пал в пользу графики, поскольку в первую очередь программа разрабатывалась для пользователей, которым с графическим меню будет намного проще пользоваться программой.
В итоге проведённых работ должна получиться многофункциональная программа, которая ни по каким критериям не уступает уже существующим своим аналогам. Главными преимуществами разработанного телефонного справочника являются быстродействие и очень низкое потребление ресурсов.
II. Технологический раздел
2.1 Структурная схема работы приложения 2.2 Структурная схема работы с данными2.3 Использование стандартных библиотечных функций
1. graphics.h
2. conio.h
3. stdlib.h
4. dos.h
5. string.h
6. fstream.h
7. iostream.h
-- заголовочный файл с классами, функциями и переменными для организации ввода-вывода в языке программирования C++. Он включён в стандартную библиотеку C++. Название образовано от Input/Output Stream («поток ввода-вывода»). В языке C++ и его предшественнике, языке программирования Си, нет встроенной поддержки ввода-вывода, вместо этого используется библиотека функций. iostream управляет вводом-выводом, как и stdio.h в Cи. iostream использует объекты cin, cout, cerr и clog для передачи информации в и из стандартных потоков ввода, вывода, ошибок (без буферизации) и ошибок (с буферизацией) соответственно. Являясь частью стандартной библиотеки C++, эти объекты также являются частью стандартного пространства имён -- std.
-- заголовочный файл стандартной библиотеки языка Си, который содержит в себе функции, занимающиеся выделением памяти, контроль процесса выполнения программы, преобразования типов и другие. Заголовок вполне совместим с C++ и известен в нём как cstdlib. Название «stdlib» расшифровывается как «standard library» (стандартная библиотека).
(от англ. standard input/output header -- стандартный заголовочный файл ввода/вывода) заголовочный файл стандартной библиотеки языка Си, содержащий определения макросов, константы и объявления функций и типов, используемых для различных операций стандартного ввода и вывода. Функциональность унаследована от «портативного пакета ввода/вывода» («portable I/O package»), написанного Майком Леском из Bell Labs в начале 1970-х. C++ ради совместимости, также использует stdio.h наряду со схожим по функциональности заголовочным файлом cstdio.
(от англ. console input-output -- консольный ввод-вывод) -- заголовочный файл, используемый в старых компиляторах, работающих в операционных системах MS-DOS.Этот заголовочный файл объявляет несколько библиотечных функций для работы с «консольным вводом и выводом» программы
-- заголовочный файл стандартной библиотеки языка Си, содержащий функции для работы с нуль-терминированными строками и различными функциями работы с памятью. Функции объявленные в string.h широко используются, так как являясь частью стандартной библиотеки, они гарантированно работают на всех платформах, поддерживающих Си. Кроме этого, строковые функции работают только с набором символов ASCII или его совместимыми расширениями, такими как ISO-8859-1; многобайтовые кодировки такие как UTF-8 будут работать, с отличием, что «длина» строки будет определяться как число байтов, а не число символов Юникода, которым они соответствуют - заголовочный файл из стандартной библиотеки C++, включающий набор классов, методов и функций, которые предоставляют интерфейс для чтения/записи данных из/в файл. Для манипуляции с данными файлов используются объекты, называемые потоками («stream»).
Функции, включенные в данный файл, позволяют производить чтение из файлов как побайтово, так и блоками, и записывать так же. В комплект включены все необходимые функции для управления последовательностью доступа к данным файлов, а также множество вспомогательных функций.
ifstream in(char *c) - функция создаёт объект in для работы с входным потоком данных.
ofstream out(char *c) - функция создаёт объект out для работы с выходным потоком данных.
getline(char* buffer, streamsize num, char delim) - функция используется с потоками ввода. Версия функции без ограничителя delim ставит ограничитель на символ новой строки.
Графический модуль используется для работы с графикой под ОС MS-DOS.
void initgraph( &grdriver, &grmode, “path”); - функция инициализации графического режима, где &grdriver, &grmode, “path” - параметры загружаемого режима;
grdriver и grmode - переменные типа integer;
“path” - путь к загружаемому драйверу графического режима.
void closegraph(void); - данная функция без каких либо параметров и закрывает текущий графический режим.
void fillpoly( int numpoints, int *polypoints) - функция рисует и закрашивает заданным цветом полигон.
void settextstyle( int font, int direction, int charsize) - Устанавливает характеристики текста: стиль, положение( горизонтальное или вертикальное), размер шрифта.
void outtextxy( int x, int y, char far *textstring) - Выводит строку в графическом режиме предварительно перейдя в точку с координатами ( x, y).
void cleardevice(void) - функция очищает экран в графическом режиме и возвращает текущую позицию указателя в точку с координатами ( 0; 0).
void setbkcolor( int color) - Устанавливает цвет фона по его номеру заданному переменной color.
void line( int x0, int y0, int x1, int y1) - Функция рисует линию от точки с координатами x0, y0 до точки с координатами x1, y1. Не обновляет текущую позицию.
void setcolor(int color) - функция, устанавливающая цвет линий и текста по его номеру заданному переменной color.
int getpixel(int x, int y) - функция, возвращающая цвет пикселя в точке (x;y).
int getch(void ) - функция, возвращающая код нажатой клавиши.
2 . 4 Стандартные типы данных
- int целочисленный знаковый тип данных, диапозон от -32768…32767. Размер 1 байт
- char символьный тип данных, предназначенный для хранения одного символа в определённой кодировке. Если char определён как signed (знаковый), то его диапазон значений составляет от ?127 до 127 (на единицу больше в положительную или отрицательную сторону, в зависимости от реализации). Если он определён как unsigned (беззнаковый), то его значения могут составлять от 0 до 255. Значение, содержащееся в этом типе, можно всегда безопасно привести к значению типа int. В Си нет примитивных типов для работы со строками, поэтому для работы с ними используется указатель char *.
- double вещественный тип данных с плавающей точкой и двойной точностью.Диапозон 1,7е-308…1,7е+308.Размер 8 байт.
2. 5 Описание пользовательских функций
void searchByNumb() - функция осуществляет поиск по номеру, с учётом частичного совпадения символов.
void searchByFio() - функция осуществляет поиск по фамилии, с учётом частичного совпадения символов.
void searchByAdr() - функция осуществляет поиск по адресу, с учётом частичного совпадения символов.
void sortByFio() - функция производит сортировку данных структуры в формате (А-я).
void sortByFioZa() - функция производит сортировку данных структуры в формате (Я-а).
void printBooks() - функция выводит на экран все контакты из телефонной книги.
void addUser () - функция осуществляющая добавление нового контакта в базу данных.
void init_Graph() - функция инициализации графики, которая используется для прорисовки меню.
void one_Menu(int x, int y) - функция которая рисует один элемент меню, входные параметры координаты по х и y.
void paint_Menu(int x, int y, int count) - функция которая рисует всё меню, count параметр отвечающий за количество элементов.
int move_Menu(int x, int y,int count) - функция передвижения по элементам меню, возвращает номер активного элемента меню.
void paint_Menu_Text(int x, int y, int count, char *name_Menu[]) - данная функция отвечает за прорисовку названий элементов меню, названия элементов хранятся в char *name_Menu[].
void printAbout() - данная функция выводит на экран текст со сведениями о названии и версии программы.
void searchMenu() - данная функция отвечает за прорисовку меню поиска.
void sortMenu() - данная функция отвечает за прорисовку меню сортировки.
void mainMenu() - данная функция отвечает за прорисовку гравного меню.
int main() - главная функция, которая является точкой входа в прогррамму.
2.6 Описание работы программы
Навигация по меню осуществляется при помощи клавиш UP, DOWN, ENTER и ESC. При нажатии клавиши Enter на одном из элементов списка, на экран будет вызвано одно из дочерних меню.
При выборе пунктов меню пользователь может: добавить новый элемент в список, произвести поиск абонента по нужному ему критерию, произвести сортировку списка, просмотреть весь список.
При вызове пункта меню Look будет осуществлён вывод на экран всего списка контактов:
При вызове пункта меню Search будет осуществлён поиск по списку контактов:
При вызове пункта меню Exit произойдет выход из программы.
Заключение
программа телефонный справочник borland
Данная программа продемонстрировала хорошую работоспособность. Имеет интуитивно понятный интерфейс и не должна вызывать затруднений в работе конечного пользователя. Для корректной работы программы файл base должен находиться в каталоге book, который в свою очередь должен находится в каталоге, где установлен язык программирования Borland C++.
В результате написания курсовой работы была достигнута цель и следующие задачи:
1. Была изучена литература, необходимая для работы c файлами.
2. Были рассмотрены понятия графики, их принципы и методы работы.
3. Была разработана программа.
Литература
2. Справочная служба среды BorlandC
3. Программирование на языке высокого уровня СИ. Часть II: практикум/ Сост. О.В. Шестопал, О.В. Сташкова. - Тирасполь, 2010. - 83 с.
4. Абрамов С.А. Начала информатики, - М.: Наука, 2005
5. Гусева А.И. Учимся информатике: задачи и методы их решения, - М.: Диалог МИФИ, 1998
6. Корриган Джон Компьютерная графика: Секреты и решения: Пер с англ. -М.: Энтроп, 2008. - 352 с.
7. Бьярн Страуструп. Язык программирования С++, в двух частях. Пер. с англ. Киев:"ДиаСофт",2003. -296 с.,
В этой статье демонстрируется простой способ быстрого получения данных из базы данных. Если приложению необходимо изменить данные с помощью нетривиальных способов и обновить базу данных, следует рассмотреть возможность использования Entity Framework и привязки данных для автоматической синхронизации элементов управления пользовательского интерфейса с изменениями в базовых данных.
С целью упрощения код не включает обработку исключений для выполнения в рабочей среде.
Предварительные требования
Для создания приложения вам потребуются следующие компоненты.
SQL Server Express LocalDB. если у вас нет SQL Server Express LocalDB, его можно установить на странице загрузки SQL Server.
Настройка образца базы данных
Создайте образец базы данных, выполнив следующие действия.
в Visual Studio откройте окно обозреватель сервера .
щелкните правой кнопкой мыши подключения к данным и выберите команду создать новую базу данных SQL Server.
В текстовом поле имя сервера введите (LocalDB) \mssqllocaldb.
В текстовом поле имя новой базы данных введите Sales, а затем нажмите кнопку ОК.
Пустая база данных Sales создается и добавляется в узел подключения к данным в обозреватель сервера.
Щелкните правой кнопкой мыши подключение к данным о продажах и выберите создать запрос.
Откроется окно редактора запросов.
вставьте скрипт T-SQL в редактор запросов, а затем нажмите кнопку выполнить .
По истечении короткого времени выполнение запроса завершается и создаются объекты базы данных. База данных содержит две таблицы: Customer и Orders. Эти таблицы изначально не содержат данных, но их можно добавить при запуске создаваемого приложения. База данных также содержит четыре простые хранимые процедуры.
Создание форм и добавление элементов управления
Создайте проект для приложения Windows Forms и назовите его SimpleDataApp.
Visual Studio создает проект и несколько файлов, включая пустую форму Windows Forms с именем Form1.
Добавьте две формы Windows Forms в проект, чтобы он включал три формы, и назначьте им следующие имена:
Навигация
NewCustomer
FillOrCancel
Для каждой формы добавьте текстовые поля, кнопки и другие элементы управления, которые отображаются на рисунках ниже. Для каждого элемента управления задайте свойства, указанные в таблицах.
Элементы управления "группа" и "надпись" обеспечивают большую ясность, но не используются в коде.
Форма навигации
Форма NewCustomer
Форма FillOrCancel
Сохранение строки подключения
Когда приложение пытается открыть подключение к базе данных, оно должно иметь доступ к строке подключения. Чтобы не вводить строку вручную в каждой форме, сохраните строку в файле App.config в проекте и создайте метод, возвращающий строку при вызове метода из любой формы в приложении.
Строку подключения можно найти, щелкнув правой кнопкой мыши подключение данных о продажах в Обозреватель сервера и выбрав Свойства. Найдите свойство ConnectionString , а затем с помощью клавиш CTRL + A, CTRL + C выберите и скопируйте строку в буфер обмена.
В столбце имя введите connString .
В списке тип выберите (строка подключения).
В списке область выберите приложение.
В столбце значение введите строку подключения (без кавычек), а затем сохраните изменения.
В реальных приложениях строку подключения следует хранить безопасно, как описано в разделе строки подключения и файлы конфигурации.
Написание кода для форм
Этот раздел содержит краткие обзоры того, что делает каждая форма. Он также предоставляет код, определяющий базовую логику при нажатии кнопки на форме.
Форма навигации
Форма навигации открывается при запуске приложения. Кнопка Добавить учетную запись открывает форму NewCustomer. Кнопка Выполнение или отмена заказов открывает форму FillOrCancel. Кнопка Выход закрывает приложение.
Преобразование формы навигации в начальную форму
если вы используете Visual Basic, в обозреватель решений откройте окно свойства , перейдите на вкладку приложение и выберите симпледатаапп. Navigation в списке начальных форм .
Создание автоматически создаваемых обработчиков событий
Дважды щелкните три кнопки в форме навигации, чтобы создать пустые методы обработчика событий. При двойном щелчке кнопки также добавляется автоматически созданный код в файл кода конструктора, который позволяет нажать кнопку для вызова события.
Если пропустить действие двойного щелчка в конструкторе и просто скопировать код и вставить его в файлы кода, не забудьте присвоить обработчику событий правильный метод. Это можно сделать в окне Свойства . Перейдите на вкладку события (воспользуйтесь кнопкой на панели инструментов с молнией) и найдите обработчик щелчка .
Добавление кода для логики формы навигации
На странице кода для формы навигации заполните основные тексты методов для трех обработчиков событий нажатия кнопки, как показано в следующем коде.
Форма NewCustomer
если ввести имя клиента, а затем нажать кнопку создать учетную запись , форма NewCustomer создает учетную запись клиента, а SQL Server возвращает значение идентификатора в качестве нового идентификатора клиента. Затем можно разместить заказ для новой учетной записи, указав сумму и дату заказа и нажав кнопку поместить порядок .
Создание автоматически создаваемых обработчиков событий
Создайте пустой обработчик событий щелчка для каждой кнопки в форме NewCustomer, дважды щелкнув каждую из четырех кнопок. При двойном щелчке кнопки также добавляется автоматически созданный код в файл кода конструктора, который позволяет нажать кнопку для вызова события.
Добавление кода для логики формы NewCustomer
Чтобы завершить логику формы NewCustomer, выполните следующие действия.
System.Data.SqlClient Перенесите пространство имен в область, чтобы не указывать полные имена его членов.
Добавьте в класс некоторые переменные и вспомогательные методы, как показано в следующем коде.
Заполните основные тексты методов для четырех обработчиков событий нажатия кнопки, как показано в следующем коде.
Форма FillOrCancel
Форма Филлорканцел запускает запрос для возврата заказа при вводе идентификатора заказа и нажатия кнопки найти заказ . Возвращенная строка отображается в сетке данных только для чтения. Можно пометить заказ как отмененный (X), если нажать кнопку отменить заказ или пометить заказ как заполненный (F), если нажать кнопку заполнить заказ . Если нажать кнопку найти порядок еще раз, появится обновленная строка.
Создание автоматически создаваемых обработчиков событий
Создайте пустые обработчики событий щелчка для четырех кнопок в форме Филлорканцел, дважды щелкнув кнопки. При двойном щелчке кнопки также добавляется автоматически созданный код в файл кода конструктора, который позволяет нажать кнопку для вызова события.
Добавление кода для логики формы Филлорканцел
Чтобы завершить логику формы Филлорканцел, выполните следующие действия.
Перенесите следующие два пространства имен в область, чтобы не указывать полные имена их членов.
Добавьте в класс переменную и вспомогательный метод, как показано в следующем коде.
Заполните основные тексты методов для четырех обработчиков событий нажатия кнопки, как показано в следующем коде.
Тестирование приложения
Запустите приложение и попробуйте создать несколько клиентов и заказов, чтобы убедиться, что все работает правильно. Чтобы убедиться, что база данных обновлена с учетом внесенных изменений, откройте узел таблицы в Обозреватель сервера, щелкните правой кнопкой мыши узлы Customers и Orders и выберите команду отобразить данные таблицы.
При отображении данных на формах в приложениях Windows вы можете выбрать имеющиеся элементы управления в области элементов или создать пользовательские элементы управления, если вашему приложению требуется функциональность, отсутствующая в стандартных элементах управления. В этом пошаговом руководстве демонстрируется создание элемента управления, реализующего DefaultBindingPropertyAttribute. Элементы управления, реализующие DefaultBindingPropertyAttribute, могут содержать одно свойство, которое можно привязать к данным. Такие элементы управления похожи на TextBox или CheckBox.
дополнительные сведения о создании элементов управления см. в разделе разработка Windows Forms элементов управления во время разработки.
При разработке элементов управления для использования в сценариях привязки данных необходимо реализовать один из следующих атрибутов привязки данных:
Использование атрибутов привязки данных |
---|
Реализуйте DefaultBindingPropertyAttribute на простых элементах управления, таких как TextBox, которые отображают отдельный столбец (или свойство) данных. (Этот процесс описан в данном пошаговом руководстве.) |
Реализуйте ComplexBindingPropertiesAttribute на элементах управления, таких как DataGridView, которые отображают списки (или таблицы) данных. дополнительные сведения см. в разделе создание Windows Forms пользовательского элемента управления, поддерживающего сложную привязку данных. |
Реализуйте LookupBindingPropertiesAttribute на элементах управления, таких как ComboBox, которые отображают списки (или таблицы) данных, но также должны представлять отдельный столбец или отдельное свойство. дополнительные сведения см. в разделе создание Windows Forms пользовательского элемента управления, поддерживающего привязку данных подстановки. |
В этом пошаговом руководстве создается простой элемент управления, отображающий данные из одного столбца в таблице. В данном примере используется столбец Phone таблицы Customers из учебной базы данных "Борей". Простой пользовательский элемент управления отображает номера телефонов клиентов в стандартном формате телефонных номеров, используя MaskedTextBox и задавая маску номер телефона.
В этом пошаговом руководстве описаны следующие процедуры.
создайте новое приложение Windows Forms.
Добавление нового пользовательского элемента управления в проект.
Визуальное проектирование пользовательского элемента управления.
Реализация атрибута DefaultBindingProperty .
Создайте набор данных с помощью мастера настройки источника данных .
Настройка столбца Phone в окне Источники данных для использования нового элемента управления.
Создание формы для отображения данных в новом элементе управления.
Предварительные требования
в этом пошаговом руководстве используется SQL Server Express LocalDB и образец базы данных Northwind.
если у вас нет SQL Server Express LocalDB, установите его на странице загрузки SQL Server Expressили с помощью Visual Studio Installer. в Visual Studio Installer можно установить SQL Server Express LocalDB как часть рабочей нагрузки хранения и обработки данных или как отдельный компонент.
Установите учебную базу данных Northwind, выполнив следующие действия.
в Visual Studio откройте окно обозреватель объектов SQL Server . (SQL Server обозреватель объектов устанавливается как часть рабочей нагрузки хранения и обработки данных в Visual Studio Installer.) разверните узел SQL Server . щелкните правой кнопкой мыши экземпляр LocalDB и выберите создать запрос.
Откроется окно редактора запросов.
скопируйте скрипт Transact-SQL Northwind в буфер обмена. этот сценарий T-SQL создает базу данных Northwind с нуля и заполняет ее данными.
вставьте скрипт T-SQL в редактор запросов, а затем нажмите кнопку выполнить .
По истечении короткого времени выполнение запроса завершается и создается база данных Northwind.
Создание приложения Windows Forms
первым шагом является создание приложения Windows Forms:
В Visual Studio в меню Файл выберите пункты Создать > Проект.
в средней области выберите тип проекта приложения Windows Forms .
Назовите проект симплеконтролвалксраугх и нажмите кнопку ОК.
Создается проект SimpleControlWalkthrough, который добавляется в Обозреватель решений.
Добавление пользовательского элемента управления в проект
В этом пошаговом руководстве создается простой элемент управления с возможностью привязки данных из пользовательского элемента управления. Добавьте элемент пользовательского элемента управления в проект симплеконтролвалксраугх :
В меню Проект выберите пункт Добавить пользовательский элемент управления.
Введите PhoneNumberBox в области "Имя" и нажмите кнопку Добавить.
Элемент управления PhoneNumberBox добавляется в Обозреватель решений и открывается в конструкторе.
Разработка элемента управления Фоненумбербокс
В этом пошаговом руководстве MaskedTextBox для создания элемента управления фоненумбербокс раскрывается существующий.
Перетащите MaskedTextBox из области элементов на рабочую область конструирования пользовательского элемента управления.
Выберите смарт-тег на только что перетащенном MaskedTextBox и выберите Установка маски.
Выберите Номер телефона в диалоговом окне Маска ввода и нажмите кнопку ОК для задания маски.
Добавление требуемого атрибута привязки данных
Для простых элементов управления, поддерживающих привязку к данным, реализуйте DefaultBindingPropertyAttribute:
Переключите элемент управления фоненумбербокс на представление кода. (В меню Вид выберите Код.)
Замените код в фоненумбербокс следующим кодом:
В меню Построение выберите пункт Построить решение.
Создание источника данных из базы данных
На этом шаге мастер настройки источника данных используется для создания источника данных на основе Customers таблицы в образце базы данных Northwind. Для создания подключения необходимо иметь доступ к учебной базе данных "Борей". Сведения о настройке образца базы данных Northwind см. в разделе как установить образцы базданных.
Чтобы открыть окно Источники данных , в меню данные выберите команду отобразить источники данных.
В окне Источники данных выберите Добавить новый источник данных, чтобы запустить Мастер настройки источника данных.
На странице Выбор типа источника данных выберите База данных и нажмите кнопку Далее.
На странице Выбор подключения к данным выполните одно из следующих действий.
Если подключение к учебной базе данных Northwind доступно в раскрывающемся списке, то выберите его.
Выберите Новое подключение для открытия диалогового окна Добавить/изменить подключение.
Если базе данных требуется пароль, выберите параметр для включения конфиденциальных данных и нажмите кнопку Далее.
На странице Сохранение подключения в файле конфигурации приложения нажмите кнопку Далее.
Разверните узел Таблицы на странице Выбор объектов базы данных.
Выберите таблицу Customers и нажмите кнопку Готово.
Параметр NorthwindDataSet добавляется в проект, а Customers таблица отображается в окне Источники данных .
Настройка столбца Phone для использования элемента управления Фоненумбербокс
В окне Источники данных можно задать создание элемента управления перед перетаскиванием элементов на форму:
Откройте Form1 в конструкторе.
Разверните узел Customers в окне Источники данных.
Щелкните стрелку раскрывающегося списка в узле Customers и выберите Сведения в списке элементов управления.
Щелкните стрелку раскрывающегося списка в столбце Phone и выберите Настроить.
Выберите PhoneNumberBox в списке Связанные элементы управления диалогового окна Настройка данных интерфейса пользователя.
Щелкните стрелку раскрывающегося списка в столбце Phone и выберите PhoneNumberBox.
Добавление элементов управления на форму
Вы можете создавать элементы управления с привязкой к данным с помощью перетаскивания элементов из окна Источники данных на форму.
чтобы создать элементы управления с привязкой к данным в форме, перетащите главный узел customers из окна источники данных на форму и убедитесь, что элемент управления фоненумбербокс используется для вывода данных в столбец Телефон .
Привязанные к данным элементы управления с метками описания отображаются на форме вместе с панелью инструментов (BindingNavigator) для перемещения по записям. В области компонентов появляется NorthwindDataSet, CustomersTableAdapter, BindingSource и BindingNavigator.
Выполнение приложения
Нажмите клавишу F5 для запуска приложения.
Дальнейшие действия
В зависимости от требований приложения существуют несколько шагов, которые, возможно, потребуется выполнить после создания элемента управления, поддерживающего привязку к данным. Некоторые типичные дальнейшие действия.
Помещение пользовательских элементов управления в библиотеку элементов управления, чтобы их можно было повторно использовать в других приложениях.
Всем привет, сегодня будет паять «электронную» записную книжку )
Поехали!
Создаем новый проект WinForm, называем его «Контакты», нажимаем на форму меняем значение атрибута Text на «Контакты».
Далее, нажимает правой кнопкой мыши на проекте, нажимаем «Добавить элемент»
Выбираем элемент «База данных, основанная на службах» — нам ведь где-то нужно хранить наши контакты 🙂
Элемент называем «ContactDB.mdf», нажимаем добавить.
БД должна появится в списке нашего проекта.
Теперь переходим в модуль «Обозреватель серверов»
Выделяем базу данных «ContactDB» и нажимаем обновить.
Теперь базу данных нужно наполнить первичными данными.
База данных у нас будет состоят всего из одной таблицы People, в общем, чего тянуть давайте создадим её.
Делается это следующим образом:
Далее, определяем столбцы, в каждом из них будет находиться определенная информация, на выходе у меня получилось так.
Скажу честно, я не разобравшись на писал код на T-SQL т.к. не сразу разобрался как это сделать в «Design» 🙂
Далее, нажимаем Обновить —
Появится окно, в нем нажимаем «Обновить базу данных».
Далее, переходим обратно в «Обозреватель серверов»
Нажимаем, правой кнопкой мыши на папке «Таблицы», выбираем обновить, наша таблица «People» должна появится в списке.
Теперь нужно добавить пару контактов
Для этого нажимаем правой кнопкой на таблице People и выбираем «Показать таблицу данных»
В открывшуюся таблицу, вбиваем информацию. Следующего вида.
Примечательно, что информация вставляемая в таблицу таким образом, вставляется фоном, то есть никуда нажимать не нужно.
Просто переходим на новую строку и всё…
Самое время сохраниться.
Что ж, идем дальше, теперь нам нужно создать источник данных, чтобы позже добавить его на созданную ранее форму.
Нажимаем на клавиатуре «shift+alt+d», в появившемся окне нажимаем «Добавить новый источник данных».
В появившемся окне выбираем «База данных», нажимаем далее, далее,
В этом окне также нажимаем далее,
Опять далее
В последнем окне, ставим «галочку» напротив таблицы «People», нажимаем готово.
Получаем окно следующего вида, обязательно, нажимаем на Набор People правой кнопкой и выбираем «Сведения», в анг. Details
Далее, перетаскиваем(Drag-and-Drop) сформированный набор на форму, чуть правим ее, чтобы получилось так
Теперь сохраним все и запустим проект, чтобы посмотреть что у нас получилось.
Если все сделано верно, то получится примерно следующее
Хорошо, записи выводятся, теперь попробуем добавить новый контакт, нажимаем на «желтый крестик» и заполняем все поля кроме ContactID, примерно так
Нажимаем «Сохранить данные», проверяем.
Программа готова, ее уже можно опубликовать и раздать друзьям.
Ставь лайк, я всё таки старался)
не работает сохранение в БД…..
Тоже не сохраняется. Из предыдущего коммента есть исправление?
Добавить комментарий Отменить ответ
Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.
не, мну надо чтоб кто нить еще намана и обьяснил, мы ети гребаные деревья не проходили еще, и труднавато разобраться.
//prototipyi functsiy
int ZastBeg();
void ViewDB();
void CreateDB();
void AddToDB();
void SearchInDB();
void SortDB();
int Exit();
void ZastEnd();
int Get(int min, int max);
struct record
int num;
char surn[15];
char name[12];
char otch[17];
char ul[20];
int dom;
int kv;
int tel;
int ats;
>;
int Menu()
clrscr();
printf("*Menu*");
printf("\n-> Prosmotr bazi dannih");
printf("\n Sozdanie bazi dannih");
printf("\n Dobavlenie zapisi v bazu dannih");
printf("\n Poisk zapisi po kluchu");
printf("\n Sortirovka bazi dannih");
printf("\n Vihod iz programmi");
printf("\n\n\nPeremeschenie - strelki vverh i vniz");
printf("\nVibor punkta menu - ");
int p = 1;
int m = getch();
if(m == 13) ViewDB();
if(p == 1) clrscr();
printf("*Menu*");
printf("\n-> Prosmotr bazi dannih");
printf("\n Sozdanie bazi dannih");
printf("\n Dobavlenie zapisi v bazu dannih");
printf("\n Poisk zapisi po kluchu");
printf("\n Sortirovka bazi dannih");
printf("\n Vihod iz programmi");
printf("\n\n\nPeremeschenie - strelki vverh i vniz");
printf("\nVibor punkta menu - ");
m = getch();
>
if(p == 2) clrscr();
printf("*Menu*");
printf("\n Prosmotr bazi dannih");
printf("\n-> Sozdanie bazi dannih");
printf("\n Dobavlenie zapisi v bazu dannih");
printf("\n Poisk zapisi po kluchu");
printf("\n Sortirovka bazi dannih");
printf("\n Vihod iz programmi");
printf("\n\n\nPeremeschenie - strelki vverh i vniz");
printf("\nVibor punkta menu - ");
m = getch();
>
if(p == 3) clrscr();
printf("*Menu*");
printf("\n Prosmotr bazi dannih");
printf("\n Sozdanie bazi dannih");
printf("\n-> Dobavlenie zapisi v bazu dannih");
printf("\n Poisk zapisi po kluchu");
printf("\n Sortirovka bazi dannih");
printf("\n Vihod iz programmi");
printf("\n\n\nPeremeschenie - strelki vverh i vniz");
printf("\nVibor punkta menu - ");
m = getch();
>
if(p == 4) clrscr();
printf("*Menu*");
printf("\n Prosmotr bazi dannih");
printf("\n Sozdanie bazi dannih");
printf("\n Dobavlenie zapisi v bazu dannih");
printf("\n-> Poisk zapisi po kluchu");
printf("\n Sortirovka bazi dannih");
printf("\n Vihod iz programmi");
printf("\n\n\nPeremeschenie - strelki vverh i vniz");
printf("\nVibor punkta menu - ");
m = getch();
>
if(p == 5) clrscr();
printf("*Menu*");
printf("\n Prosmotr bazi dannih");
printf("\n Sozdanie bazi dannih");
printf("\n Dobavlenie zapisi v bazu dannih");
printf("\n Poisk zapisi po kluchu");
printf("\n-> Sortirovka bazi dannih");
printf("\n Vihod iz programmi");
printf("\n\n\nPeremeschenie - strelki vverh i vniz");
printf("\nVibor punkta menu - ");
m = getch();
>
if(p == 6) clrscr();
printf("*Menu*");
printf("\n Prosmotr bazi dannih");
printf("\n Sozdanie bazi dannih");
printf("\n Dobavlenie zapisi v bazu dannih");
printf("\n Poisk zapisi po kluchu");
printf("\n Sortirovka bazi dannih");
printf("\n-> Vihod iz programmi");
printf("\n\n\nPeremeschenie - strelki vverh i vniz");
printf("\nVibor punkta menu - ");
m = getch();
>
>while(m!=13);
return p;
>
int ZastBeg()
printf("\n\n Programma 'Telefonniy spravochnik'");
printf("\n Avtor: top_secret_information =)");
printf("\n\n\n\n - vihod, prodolzhit' - lubaya drugaya klavisha");
int c = getch();
return c;
>
void ZastEnd()
clrscr();
printf("\n\n Programma 'Telefonniy spravochnik'");
printf("\n Uspeshno zavershena. Blagodaru za eyo ispol'zovanie");
printf("\n\n\n\n Nazhmite lubuju klavishu dlja vihoda v OS");
getch();
>
int Exit()
clrscr();
printf("\n\n Deistvitel'no viyti iz programmi?");
printf("\n\n - viyti v OS, - prodolzhit' rabotu s programmoj");
int c;
do
c = getch();
>while(c != 13 && c != 27);
return c;
>
do
z = 0;
int p = Menu();
switch(p)
case 1: ViewDB(); break;
case 2: CreateDB(); break;
case 3: AddToDB(); break;
case 4: SearchInDB(); break;
case 5: SortDB(); break;
case 6:
if(Exit() == 27)
z = 1;
break;
>
else break;
>
>while(z == 1);
>
else ZastEnd();
return 0;
>
void ViewDB()
FILE *f=fopen("db.txt", "rb");
FILE *num=fopen("num.txt", "rb");
if(f == NULL || num == NULL)
clrscr();
printf("\nNe udayotsja otkrit' fail bazyi dannih");
printf("\nNazhmite lubuju klavishu dlja vihoda v menu");
getch();
>
else
struct record recz[100];
//prosmotr zapisej iz poluchennogo massiva
int a, k = 0;
if(kol == 1) //v baze vsego 1 zapis'
printf("\n\nBol'she zapisej ne naideno");
printf("\nNazhmite lubuju klavishu dlja vihoda v menu");
getch();
k = 101;
>
else
if(k == 0)
printf("\n\nStrelka vniz - sled. zapis' ");
printf("\n - vihod v menu");
do
a = getch();
>while(a != 80 && a != 27);
if(a == 80) k++;
else k = 101;
>
else
if(k == kol - 1)
printf("\n\nStrelka vverh - pred. zapis' ");
printf("\n - vihod v menu");
do
a = getch();
>while(a != 72 && a != 27);
if(a == 72) k--;
else k = 101;
>
do
z = 0;
int p = Menu();
switch(p)
case 1: ViewDB(); break;
case 2: CreateDB(); break;
case 3: AddToDB(); break;
case 4: SearchInDB(); break;
case 5: SortDB(); break;
case 6:
if(Exit() == 27)
z = 1;
break;
>
else break;
>
>while(z == 1);
void CreateDB()
clrscr();
printf("Vyi deistvitel'no hotite sozdat' novuju bazu dannih?");
printf("\n - da, - net");
int d;
do
d = getch();
>while(d != 13 && d != 27);
if(d == 13)
FILE *f=fopen("db.txt", "wb");
FILE *num=fopen("num.txt", "wb");
struct record rec[100];
for(i = 0; i < 100; i++)
clrscr();
printf("*Sozdanie bazi dannih*\n\n");
rec[i].num = i+1;
//podtverzhdenniy vvod familii
printf("\nFamilija (do 15 simvolov) -> ");
fscanf(stdin, "%s", &rec[i].surn);
gotoxy(1,wherey()+1);
do
gotoxy(1,wherey()-2);
printf("Vyi vveli familiju: '%s'. - povtorniy vvod. ", rec[i].surn);
printf("\n - familija vvedena verno. ");
do
j = getch();
>while(j != 13 && j != 27);
if(j != 13)
printf("\nVvedite zanovo ->");
fscanf(stdin, "%s", &rec[i].surn);
fflush(stdin);
>
>while(j == 27);
//podtverzhdenniy vvod imeni
printf("\n\nImya (do 12 simvolov) -> ");
fscanf(stdin, "%s", &rec[i].name);
gotoxy(1,wherey()+1);
do
gotoxy(1,wherey()-2);
printf("Vyi vveli imya: '%s'. - povtorniy vvod. ", rec[i].name);
printf("\n - imya vvedeno verno. ");
do
j = getch();
>while(j != 13 && j != 27);
if(j != 13)
printf("\nVvedite zanovo ->");
fscanf(stdin, "%s", &rec[i].name);
fflush(stdin);
>
>while(j == 27);
//podtverzhdenniy vvod otchestva
printf("\n\nOtchestvo (do 17 simvolov) -> ");
fscanf(stdin, "%s", &rec[i].otch);
gotoxy(1,wherey()+1);
do
gotoxy(1,wherey()-2);
printf("Vyi vveli otchestvo: '%s'. - povtorniy vvod. ", rec[i].otch);
printf("\n - otchestvo vvedeno verno. ");
do
j = getch();
>while(j != 13 && j != 27);
if(j != 13)
printf("\nVvedite zanovo ->");
fscanf(stdin, "%s", &rec[i].otch);
fflush(stdin);
>
>while(j == 27);
//podtverzhdenniy vvod nazvanija ulitsyi
printf("\n\nAdres: ulitsa (do 20 simvolov) -> ");
fscanf(stdin, "%s", &rec[i].ul);
gotoxy(1,wherey()+1);
do
gotoxy(1,wherey()-2);
printf("Vyi vveli ulitsu: '%s'. - povtorniy vvod. ", rec[i].ul);
printf("\n - nazvanie ulitsi vvedeno verno. ");
do
j = getch();
>while(j != 13 && j != 27);
if(j != 13)
printf("\nVvedite zanovo ->");
fscanf(stdin, "%s", &rec[i].ul);
fflush(stdin);
>
>while(j == 27);
//podtverzhdenniy kontrolliruemiy vvod nomera doma
//podtverzhdenniy kontrolliruemiy vvod nomera doma
//podtverzhdenniy kontrolliruemiy vvod nomera telefona
//podtverzhdenniy kontrolliruemiy vvod nomera ats
do
z = 0;
int p = Menu();
switch(p)
case 1: ViewDB(); break;
case 2: CreateDB(); break;
case 3: AddToDB(); break;
case 4: SearchInDB(); break;
case 5: SortDB(); break;
case 6:
if(Exit() == 27)
z = 1;
break;
>
else break;
>
>while(z == 1);
void AddToDB()
clrscr();
printf("Vyi deistvitel'no hotite dobavit' novuju zapis' v bazu dannyih?");
printf("\n - da, - net");
int d, z;
do
d = getch();
>while(d != 13 && d != 27);
if(d == 13)
FILE *f=fopen("db.txt", "ab");
FILE *num=fopen("num.txt", "r+b");
if(num == NULL)
fclose(f); //
clrscr();
printf("\nBaza dannih ne suschestvuet");
printf("\n - sozdanie bazi dannih, - vihod v menu");
do
c = getch();
>while(c != 13 && c != 27);
//esli file s bazoj naiden
else
int kol;
if(kol == 100)
printf("Baza dannih zapolnena. Dobavlenie zapisi nevozmozhno.");
printf("Nazhmite lubuju klavishu dlja vihoda v menu");
getch();
do
z = 0;
int p = Menu();
switch(p)
case 1: ViewDB(); break;
case 2: CreateDB(); break;
case 3: AddToDB(); break;
case 4: SearchInDB(); break;
case 5: SortDB(); break;
case 6:
if(Exit() == 27)
z = 1;
break;
>
>
>while(z == 1);
struct record newrec;
clrscr();
printf("*Dobavlenie zapisi v bazu dannyih*\n\n");
newrec.num = kol + 1;
//podtverzhdenniy vvod familii
printf("\nFamilija (do 15 simvolov) -> ");
fscanf(stdin, "%s", &newrec.surn);
gotoxy(1,wherey()+1);
do
gotoxy(1,wherey()-2);
printf("Vyi vveli familiju: '%s'. - povtorniy vvod. ", newrec.surn);
printf("\n - familija vvedena verno. ");
do
j = getch();
>while(j != 13 && j != 27);
if(j != 13)
printf("\nVvedite zanovo ->");
fscanf(stdin, "%s", &newrec.surn);
fflush(stdin);
>
>while(j == 27);
//podtverzhdenniy vvod imeni
printf("\n\nImya (do 12 simvolov) -> ");
fscanf(stdin, "%s", &newrec.name);
gotoxy(1,wherey()+1);
do
gotoxy(1,wherey()-2);
printf("Vyi vveli imya: '%s'. - povtorniy vvod. ", newrec.name);
printf("\n - imya vvedeno verno. ");
do
j = getch();
>while(j != 13 && j != 27);
if(j != 13)
printf("\nVvedite zanovo ->");
fscanf(stdin, "%s", &newrec.name);
fflush(stdin);
>
>while(j == 27);
//podtverzhdenniy vvod otchestva
printf("\n\nOtchestvo (do 17 simvolov) -> ");
fscanf(stdin, "%s", &newrec.otch);
gotoxy(1,wherey()+1);
do
gotoxy(1,wherey()-2);
printf("Vyi vveli otchestvo: '%s'. - povtorniy vvod. ", newrec.otch);
printf("\n - otchestvo vvedeno verno. ");
do
j = getch();
>while(j != 13 && j != 27);
if(j != 13)
printf("\nVvedite zanovo ->");
fscanf(stdin, "%s", &newrec.otch);
fflush(stdin);
>
>while(j == 27);
//podtverzhdenniy vvod nazvanija ulitsyi
printf("\n\nAdres: ulitsa (do 20 simvolov) -> ");
fscanf(stdin, "%s", &newrec.ul);
gotoxy(1,wherey()+1);
do
gotoxy(1,wherey()-2);
printf("Vyi vveli ulitsu: '%s'. - povtorniy vvod. ", newrec.ul);
printf("\n - nazvanie ulitsi vvedeno verno. ");
do
j = getch();
>while(j != 13 && j != 27);
if(j != 13)
printf("\nVvedite zanovo ->");
fscanf(stdin, "%s", &newrec.ul);
fflush(stdin);
>
>while(j == 27);
//podtverzhdenniy kontrolliruemiy vvod nomera doma
//podtverzhdenniy kontrolliruemiy vvod nomera doma
//podtverzhdenniy kontrolliruemiy vvod nomera telefona
//podtverzhdenniy kontrolliruemiy vvod nomera ats
printf("\n\nZapis' dobavlena");
printf("\nNazhmite lubuju klavishu dlja vihoda v menu");
getch();
>
>
do
z = 0;
int p = Menu();
switch(p)
case 1: ViewDB(); break;
case 2: CreateDB(); break;
case 3: AddToDB(); break;
case 4: SearchInDB(); break;
case 5: SortDB(); break;
case 6:
if(Exit() == 27)
z = 1;
break;
>
else break;
>
>while(z == 1);
void SearchInDB()
FILE *f=fopen("db.txt", "rb");
FILE *num=fopen("num.txt", "rb");
if(f == NULL || num == NULL)
clrscr();
printf("\nNe udayotsja otkrit' fail bazyi dannyih");
printf("\nNazhmite lubuju klavishu dlja vihoda v menu");
getch();
>
else
struct record recz[100];
clrscr();
printf("*Poisk zapisej po nomeru ATS*");
int sats; //kluch dlja poiska
struct record srec[100];
int z, s = 0;
if(s == 0) //esli ne naideno ni odnoj zapisi
clrscr();
printf("Zapisej s takim nomerom ATS ne naideno");
printf("\nNazhmite lubuju klavishu dlja vihoda v menu");
getch();
>
if(s == 1) //esli vsego odna zapis' sootvetstvuet usloviju poiska
printf("\n\nBol'she zapisej ne naideno");
printf("\nNazhmite lubuju klavishu dlja vihoda v menu");
getch();
i = 101;
>
if(i == 0)
printf("\n\nStrelka vniz - sled. zapis' ");
printf("\n - vihod v menu");
do
a = getch();
>while(a != 80 && a != 27);
if(a == 80) i++;
else i = 101;
>
else
if(i == s - 1)
printf("\n\nStrelka vverh - pred. zapis' ");
printf("\n - vihod v menu");
do
a = getch();
>while(a != 72 && a != 27);
if(a == 72) i--;
else i = 101;
>
do
o = 0;
int o = Menu();
switch(o)
case 1: ViewDB(); break;
case 2: CreateDB(); break;
case 3: AddToDB(); break;
case 4: SearchInDB(); break;
case 5: SortDB(); break;
case 6:
if(Exit() == 27)
o = 1;
break;
>
>
>while(o == 1);
void SortDB()
FILE *f=fopen("db.txt", "rb");
FILE *num=fopen("num.txt", "rb");
if(f == NULL || num == NULL)
clrscr();
printf("\nNe udayotsja otkrit' fail bazi dannih");
printf("\nNazhmite lubuju klavishu dlja vihoda v menu");
getch();
>
else
struct record recz[100];
int nums[100], atss[100];
int j, n, tmp, ch = 0;
//sortirovka massiva s nomerami ats i sootv. peremeschenie nomerov zapisej
for(i=0;i
for(j=i+1;j
n = j; //n - nomer min elementa
ch++; //ch - chislo naidennuih zapisej
>
>
tmp = atss[i];
atss[i] = atss[n];
atss[n] = tmp;
tmp = nums[i];
nums[i] = nums[n];
nums[n] = tmp;
>
if(ch == 1) //esli vsego odna zapis' sootvetstvuet usloviju poiska
printf("\n\nBol'she zapisej ne naideno");
printf("\nNazhmite lubuju klavishu dlja vihoda v menu");
getch();
k = 101;
>
else
if(k == 0)
printf("\n\nStrelka vniz - sled. zapis' ");
printf("\n - vihod v menu");
do
a = getch();
>while(a != 80 && a != 27);
if(a == 80) k++;
else k = 101;
>
else
if(k == kol - 1)
printf("\n\nStrelka vverh - pred. zapis' ");
printf("\n - vihod v menu");
do
a = getch();
>while(a != 72 && a != 27);
if(a == 72) k--;
else k = 101;
>
do
z = 0;
int p = Menu();
switch(p)
case 1: ViewDB(); break;
case 2: CreateDB(); break;
case 3: AddToDB(); break;
case 4: SearchInDB(); break;
case 5: SortDB(); break;
case 6:
if(Exit() == 27)
z = 1;
break;
>
>
>while(z == 1);
int Get(int min, int max)
int i = 0;
fscanf(stdin, "%d", &i);
fflush(stdin);
while ((i==0)||(i>max)||(i
cprintf("Neverniy vvod, povtorite popitku (%d - %d): ", min,max);
fscanf(stdin, "%d", &i);
fflush(stdin);
>
return i;
>
Читайте также: