Работа с базами данных

МИНИСТЕРСТВО  НАУКИ И ОБРАЗОВАНИЯ УКРАИНЫ 

ХАРЬКОВСКИЙ НАЦИОНАЛЬНЫЙ УНИВЕРСИТЕТ РАДИОЭЛЕКТРОНИКИ 

Кафедра XXXX 

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА 
 

КУРСОВАЯ  РАБОТА

ПО КУРСУ

“XXX”

на тему: "Работа с базами данных"

РУКОВОДИТЕЛЬ                                          XXX

СТУДЕНТ ГРУППЫ XXX                                           XXX

ХАРЬКОВ

2004

СОДЕРЖАНИЕ

 

ВВЕДЕНИЕ…………………………………………………………………….4 

1  Решение интеллектуальной  задачи на компьютере…..5                                                                   

2  ПОСТРОЕНИЕ АЛГОРИТМА РАБОТЫ БАЗЫ ДАННЫХ   НА VISUAL C++…………………………………...…………...................……………….…6

   2.1 Алгоритм  работы базы данных…………………..….…..………….......7

   2.2 Описание  программы “Telefon”.....………………………………….....9                                                                           

3 Инструкции пользователя …………………………………….….13                                                                                

ЗАКЛЮЧЕНИЕ  ……………………………………………………………….15                                                                                                   

ЛИТЕРАТУРА  И ИСТОЧНИКИ ………………………………………….…16                                                                                                           

Приложение  ……………………………………………………………....17                                                                                                         

  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

РЕФЕРАТ

     Записка пояснительная к курсовой работе содержит:  24  стр.

 

     Предмет исследования - современные методы разработки программ таких, как объектно-ориентированное программирование и визуальное проектирование, а также структурное и модульное программирование.

     Цель  курсовой работы - систематизация, углубление и активное применение знаний по системному программированию, закрепление знаний, полученных в лекционном курсе, а также на практических и лабораторных занятиях.

     Метод исследования - изучение литературы, составление  и отладка программ на компьютере.

     Программа типа “Telefon” может использоваться, как телефонный справочник.

           Разработан проект “Telefon” полностью соответствующий условию задания и имеющий довольно удобный интерфейс.

     КЛЮЧЕВЫЕ  СЛОВА: TELEFON, Visual C++, функция, проект, сообщение, программа.

 

      ВВЕДЕНИЕ

 

         В настоящее время вычислительная  техника проникла практически во все сферы человеческой деятельности. С помощью ЭВМ можно решать самые разные задачи. Но для того, чтобы решить поставленную задачу, необходимо указать последовательность действий, выполнение которых приведёт к требуемому результату, – составить программу. Для удобства работы с ЭВМ эта операция  производится с помощью языков программирования (высокого или низкого уровня).

         Один из широко используемых  языков программирования - это Visual C++, который можно использовать  для написания программ, работающих в операционной среде Windows. На данное время одной из самых распространенных его версий является Microsoft Visual C++, и среда программирования Microsoft Developer Studio 6.0.

        Среда программирования Microsoft Developer Studio 6.0 позволяет создавать тексты программ, компилировать их, находить ошибки и оперативно их исправлять; компоновать программы из отдельных частей, включая стандартные модули, отлаживать и выполнять отлаженную программу.

     Используя перечисленные возможности, можно создавать различные прикладные программы, например, такие, как программа, написанная при выполнении данной курсовой работы.

 

     1 Решение интеллектуальной задачи на компьютере 

     В данном курсовом проекте  необходимо разработать программу  типа "Telefon", которая содержит данные о номерах телефонов, ФИО абонента, адрес абонента. Все данные должны сохраняться в базе данных. Пользователь может просматривать все записи находящиеся в этой базе, удалять и добавлять записи, а также производить поиск по полям базы. Также должно быть указано сколько всего записей на данный момент в базе. Программа должна иметь удобный интерфейс.

 

2 ПОСТРОЕНИЕ  АЛГОРИТМА РАБОТЫ БАЗЫ ДАННЫХ

     НА VISUAL C++

 

          Среда Visual C++ - это сложный механизм, обеспечивающий высокоэффективную работу программиста. Создание прикладных программ, или приложений выполняется в интегрированной среде разработки IDE (Integrated Development Environment). IDE служит для организации взаимодействия с программистом и включает ряд окон, содержащих различные управляющие элементы. С помощью средств интегрированной среды разработчик может проектировать интерфейсную часть приложения, а также писать программный код и связывать его с управляющими элементами. При этом вся работа по созданию приложения, включая отладку, происходит в IDE.

          Интегрированная среда разработки  Visual C++ представляет собой многооконную систему. Вид интегрированной среды разработки (интерфейс) может различаться в зависимости от настроек. Кроме стандартных окон, на экране могут присутствовать и другие окна, отображаемые при вызове соответствующих средств, например, Image Editor (Редактор изображений). Окна Visual C++ (но не главное) можно перемещать, убирать с экрана, а также изменять их размеры.

          Несмотря на наличие многих  окон, Visual C++ является однодокументной средой, т.е. позволяет одновременно работать только с одним приложением (проектом приложения). Название проекта приложения выводится в строке заголовка главного окна в верхней части экрана.

          Если свернуть главное окно, то происходит минимизация всего интерфейса Visual C++ и, соответственно, всех открытых окон. При закрытии главного окна работа с Visual C++ прекращается.

          Самой последней и наиболее  усовершенствованной версией стал  Microsoft Visual C++ 6.0. Visual C++ 6.0, вобрав в себя всё самое лучшее от предыдущих версий, предоставляет ряд новых возможностей. Так, например, стал более удобным и современным интерфейс среды программирования, создаваемые Visual C++ программы учитывают архитектуру современных процессоров, существенно расширены возможности отладчика.

     Visual C++ 6.0 может работать в среде операционных систем от Windows 95 до Windows XP. Особенных требований к компьютеру система не предъявляет, за исключением того, что процессор должен быть типа Pentium, оперативной памяти - не менее 32 Мбайт и достаточное количество свободной дисковой памяти (порядка 200 Мбайт). 

     2.1 Алгоритм работы базы данных

     В данном курсовом проекте в качестве базы данных используется файл Telefon.db. В случае, когда база данных создана, и в ней есть записи, то при запуске программы в строке состояния можно увидеть, какое количество записей в данный момент находится в базе. Структура файла базы данных представляет собой совокупность подряд идущих записей. Каждая запись – структура вида:

     //структура  содержащая текущую запись

     struct

           {

                 char name[20];//имя

                 char street[20];//улица

                 char dom[5];//дом

                 char flat[5];//квартира

                 char tel[15];//телефон

           }

           data;

     Как видно каждое поле имеет ограниченный размер, который можно изменить в  зависимости от потребностей программы.

     Алгоритм  удаления представляет собой создание копии структуры записи, но уже  в виде массива:

     struct

           {

                 char name[20];//имя

                 char street[20];//улица

                 char dom[5];//дом

                 char flat[5];//квартира

                 char tel[15];//телефон

           }

           data2[100];

     В этот массив будут заноситься все  записи из файла Telefon.db, кроме удаляемой. Затем файл перезаписывается, но в нём уже нет удалённой записи.

     Алгоритм  поиска заключается в переборе полей  базы данных на соответствие заданным параметрам. 

 

      2.2 Описание программы “Telefon” 

     Данный  проект создавался с помощью AppWizard – генератором кода, создающим рабочую заготовку Windows-приложения с теми компонентами, именами классов и исходными файлами, что были указаны через диалоговые окна. В частности: в закладке Project выбираем - MFC AppWizard (exe). Затем нужно пройти серию экранов AppWizard:

     Step 1: выбираем “Single document”

     Step 2: оставляем без изменения

     Step 3: без изменения

     Step 4: оставляем только флажки “3D controls”, “Docking ToolBar”.

     Step 5: устанавливаем “As a statically linked library”

     Step 6: отображает информацию о созданных классах

     После этого AppWizard сгенерирует код для поддержки функциональных возможностей программы на базе библиотеки MFC, т.е. создаст каркас приложения. Рассмотрим некоторые элементы программы, созданные на данном этапе:

     Класс CTelefonApp. Объект класса  CTelefonApp представляет программу. В программе определяется единственный глобальный объект класса CTelefonApp – theApp. Базовый класс CWinApp определяет основные характеристики объекта theApp.

     Класс CTelefonView. Объект класса CTelefonView представляет основное окно программы. Когда конструктор вызывает функцию-член Create базового класса  CFrameWnd, Windows создаёт действительную оконную структуру, а каркас приложения связывает её с C++-объектом. Функции ShowWindow и UpdateWindow, являющиеся также функциями-членами базового класса, вызываются для вывода окна на экран.

       При запуске проекта операционная  система вызывает в программе  функцию WinMain, а та ищет глобально сконструированный объект класса, производного от CWinApp. В любом приложении, в том числе и в “Telefon”, обязательно должна присутствовать эта функция, на которую возлагается ряд специфических задач. И самая важная – создание основного окна программы, с которым должен быть связан код, способный обрабатывать сообщения, передаваемые операционной системой этому окну. В нашем случае при программировании на Microsoft Visual C++ 6.0, с библиотекой классов Microsoft Foundation Class (MFC) Library 6.0,  эта функция скрыта внутри каркаса приложения и нет необходимости в её написании, но необходимо понимать, что именно с помощью неё осуществляется связь между операционной системой и программой.   

     Библиотека  MFC прямо поддерживает около 140 функций, обрабатывающих Windows-сообщения. Кроме того, можно определять свои собственные сообщения, связанные с обработчиками команд меню, элементов управления и т.д.  В программе “Telefon”  используется более 40 функций, методов и сообщений Windows. Ниже они перечислены в порядке их появления в программе с кратким описанием:

           UpdateData – обновляет данные окна;

     Strcpy – копирование одной строки в другую;

     Fopen – открытие файла;

     Sizeof – определение размера;

     Fwrite – запись в файл;

     Fclose – завершение работы с файлом;

     MessageBox – выводит окно с сообщением;

     PostQuitMessage – посылает окну сообщение WM_DESTROY;

     Fseek – установка указателя в файле;

     Fread – чтение из файла;

     Feof – определение конца файла;

     Format – преобразует типы переменных;

     GetItemText – получение текста из списка;

     GetFirstSelectedItemPosition и GetNextSelectedItem - получение позиции выделенного элемента;

     InsertItem – вставка данных в список;

     SetItemText – вставка данных в список;

     DeleteAllItems - очистка списка;

     SetPaneText – установка текста в панель  статуса; 

           После вызова функции  UpdateWindow, окно окончательно выведено на экран. Теперь программа должна подготовить себя для получения информации от пользователя через клавиатуру и мышь. Windows поддерживает “очередь сообщений” (message queue) для каждой программы, работающей в данный момент в системе Windows. Когда происходит ввод информации, Windows преобразует её в “сообщение”, которое помещается в очередь сообщений программы. Каждое получаемое окном сообщение идентифицируется номером, который содержится в параметре message оконной процедуры. В заголовочных файлах Windows определены идентификаторы, начинающиеся с префикса WM (“window message”) для каждого типа сообщений. Ниже приведены все сообщения используемые в курсовом проекте:

     Сообщение WM_CREATE – это первое сообщение, которое Windows посылает объекту View. Оно передаётся, когда каркас приложения вызывает оконную функцию Create, т.е. в тот момент, когда создание окна ещё не закончено и его не видно на экране. Следовательно, обработчик OnCreate пока не может обращаться к Windows-функциям, доступным только после отображения окна. Такие функции можно вызвать из замещённой функции OnInitialUpdate. В программе “Telefon” в обработчике OnCreate() происходит  определение количества записей в базе и информация об этом выводится на экран.

      Когда пользователь выбирает пункт меню или  нажимает кнопку, Windows посылает программе сообщение WM_COMMAND, содержащее идентификатор этого пункта меню или кнопки в младшем слове параметра сообщения. Ниже рассмотрены идентификаторы, соответствующее пунктам меню и кнопкам программы:

     IDC_ALL - идентификатор пункта “Все записи” в меню. Выбор этого пункта выводит все записи из базы в список.

     IDC_CLEAR – это идентификатор пункта  “Очистить” в меню. Выбор этого  пункта приводит к очистке  заполненных полей.

     ID_APP_EXIT – этому идентификатору в меню  соответствует пункт “Выход”.  При выборе этого пункта происходит  вызов функции OnDestroy, что приводит к разрушению окна и завершению работы с программой.

     IDC_ADD – идентификатор пункта “Добавить ” в меню. Выбор этого пункта добавляет запись в конец базы данных.

     IDC_DELETE – этому идентификатору в меню соответствует пункт “Удалить”. Выбор этого пункта приводит к удалению той записи, которая выделена в данный момент.

     Идентификатору  IDC_FIND в меню соответствует пункт “Поиск”. Его выбор приводит к поиску записи, данные которой совпадают с данными, введёнными в поля.

     Выбор пункта меню “О программе…”, которому соответствует идентификатор ID_APP_ABOUT, выведет модальное окно диалога, в котором содержится краткая информация о разработчике и программе.

     Каждому пункту меню соответствует кнопка с  таким же названием и идентификатором, которая находится непосредственно  на диалоговом окне, а также на панели инструментов. 

     Windows посылает сообщение WM_CLOSE, когда пользователь закрывает окно через системное меню или когда закрывается родительское окно. Определив, что окно можно безопасно закрыть, следует вызвать функцию OnClose() базового класса, которая и продолжает процесс закрытия. Объект View и соответствующее окно пока остаются активными.

     Сообщение WM_DESTROY Windows отправляет вслед за сообщением WM_CLOSE и его обрабатывает функция карты сообщений OnDestroy. Программа, получив сообщение WM_DESTROY, должна считать, что окно отображения уже не видно на экране, но ещё активно – равно как и его дочерние окна. Функцию OnDestroy() нужно обязательно вызывать, но в её теле уже нельзя отменить процесс разрушения объекта View. Это допустимо только в функции OnClose.

 

      3 ИНСТРУКЦИЯ ПОЛЬЗОВАТЕЛЯ 

     Запуск  программы осуществляется при открытии файла Telefon.exe, который находится на дискете. При этом на экране появиться окно, в левой верхней части которого будет видна надпись “Телефонный справочник” – это имя программы. Ниже располагается меню, с помощью которого можно выполнить различные действия с данным приложением. При нажатии на пункте меню “Файл”, выпадет, так называемое, всплывающее меню, в котором находится пункт “Выход”. При выборе этого пункта программа закрывается.

     Следующий пункт главного меню – это “Опции”, подменю которого содержит пункты “Очистить”, “Добавить”, “Удалить”, “Все записи” и “Поиск”. При выборе первого пункта, произойдёт очистка содержимого полей, в которых находится текст. Второй и третий пункты меню позволяют добавлять и удалять записи из базы. Пункт “Все записи” позволяет отобразить все записи из базы данных. Нажатие на пункте меню ”Поиск” приводит к поиску записи, данные которой совпадают с данными введёнными в поля.

     Последним пунктом меню является “Помощь”. Если выбрать этот пункт, то в подменю можно увидеть пункт: “О программе”, который содержит информацию о разработчике и о самой программе.

     Под меню располагается панель инструментов, которая дублирует все пункты основного меню. Ещё ниже расположена  клиентская область, в которой происходит вывод информации. Здесь, также, расположены основные элементы навигации.

     Первое  окно – “Телефон”. Здесь вводится телефон абонента.

     Для задания фамилии, имени и отчества необходимо заполнить окно “ФИО”.

     Для задания адреса абонента, необходимо заполнить окна “Улица”, “Дом” и “Квартира”.

     Системные требования: Pentium 133, 16 MB RAM, Windows 95/98/2000 NT/XP.

     ЗАКЛЮЧЕНИЕ 

      

     В ходе выполнения данного курсового  проекта были разработана программа  на языке высокого уровня Visual C++. А также изучены возможности данного языка.

     Систематизированы и закреплены практические навыки использования  ЭВМ, программного обеспечения, существующих средств обслуживания системных  программистов, а также теоретические  знания по основным разделам курса "XXX". Основное внимание уделено изучению современных операционных систем, способов проектирования приложений, объектно-ориентированному и системному программированию.

     При выполнении курсового проекта произведено  знакомство с реферативными журналами  и другими информационными источниками  по объектно-ориентированному и системному программированию с целью анализа состояния решаемой задачи.

     Получены  практические навыки работы в среде Visual C++. 
 
 
 
 
 
 
 
 
 
 

 

      ЛИТЕРАТУРА 

1. Петзольд Ч.   Программирование  под  Windows 95.    В двух книгах: BHV –

    Санкт  -  Петербург, 1997, silt.

2. Ричард С.Линкер, Том Арчер.   Программирование  для Windows 98. Библия

    разработчика.   “Диалектика ” – Москва, 1999.-864 с.:  ил.- Парал.  тит.  англ.

    Уч.пос.

3. Джесс Либерти.  С++  за  21  день.  ”Вильямс”  - Москва, 2000.-816 с.:  ил. -  

    Парал.тит.  англ.

4. Дэвид Дж. Круглински. Основы С++. “Русская редакция”  – Москва, 1997.- 696 с.: ил.

5. Кэйт Грегори.  Использование Visual C++. “Вильямс” – Москва, 1999.-864 с.:  ил.. - Парал.тит. англ., уч. пос. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 

ПРИЛОЖЕНИЕ

 

// TelefonView.cpp : implementation of the CTelefonView class

// 

#include "stdafx.h"

#include "Telefon.h" 

#include "TelefonDoc.h"

#include "TelefonView.h"

#include "MainFrm.h" 

#ifdef _DEBUG

#define new DEBUG_NEW

#undef THIS_FILE

static char THIS_FILE[] = __FILE__;

#endif 

//структура содержащая  текущую запись

struct

      {

            char name[20];//имя

            char street[20];//улица

            char dom[5];//дом

            char flat[5];//квартира

            char tel[15];//телефон

      }

      data; 

struct

      {

            char name[20];//имя

            char street[20];//улица

            char dom[5];//дом

            char flat[5];//квартира

            char tel[15];//телефон

      }

      data2[100]; 

FILE *f;

CString str; 

int n=0, kol=0;

bool fnd=false;

int p;

/////////////////////////////////////////////////////////////////////////////

// CTelefonView 

IMPLEMENT_DYNCREATE(CTelefonView, CFormView) 

BEGIN_MESSAGE_MAP(CTelefonView, CFormView)

      //{{AFX_MSG_MAP(CTelefonView)

      ON_WM_CREATE()

      ON_BN_CLICKED(IDC_ADD, OnAdd)

      ON_BN_CLICKED(IDC_CLEAR, OnClear)

      ON_BN_CLICKED(IDC_DELETE, OnDelete)

      ON_BN_CLICKED(IDC_FIND, OnFind)

      ON_WM_MOUSEMOVE()

      ON_BN_CLICKED(IDC_ALL, OnAll)

      ON_NOTIFY(NM_CLICK, IDC_LIST1, OnClickList1)

      //}}AFX_MSG_MAP

END_MESSAGE_MAP() 

/////////////////////////////////////////////////////////////////////////////

// CTelefonView construction/destruction 

CTelefonView::CTelefonView()

      : CFormView(CTelefonView::IDD)

{

      //{{AFX_DATA_INIT(CTelefonView)

      m_street = _T("");

      m_tel = _T("");

      m_name = _T("");

      m_flat = _T("");

      m_dom = _T("");

      //}}AFX_DATA_INIT

      // TODO: add construction code here 

} 

CTelefonView::~CTelefonView()

{

} 

void CTelefonView::DoDataExchange(CDataExchange* pDX)

{

      CFormView::DoDataExchange(pDX);

      //{{AFX_DATA_MAP(CTelefonView)

      DDX_Control(pDX, IDC_LIST1, m_list);

      DDX_Text(pDX, IDC_STREET, m_street);

      DDX_Text(pDX, IDC_TEL, m_tel);

      DDX_Text(pDX, IDC_NAME, m_name);

      DDX_Text(pDX, IDC_FLAT, m_flat);

      DDX_Text(pDX, IDC_DOM, m_dom);

      //}}AFX_DATA_MAP

} 

BOOL CTelefonView::PreCreateWindow(CREATESTRUCT& cs)

{

      // TODO: Modify the Window class or styles here by modifying

      //  the CREATESTRUCT cs 

      return CFormView::PreCreateWindow(cs);

} 

void CTelefonView::OnInitialUpdate()

{

Работа с базами данных