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

Автор: Пользователь скрыл имя, 13 Февраля 2012 в 16:16, курсовая работа

Описание работы

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

Содержание

ВВЕДЕНИЕ…………………………………………………………………….4
1 Решение интеллектуальной задачи на компьютере…..5
2 ПОСТРОЕНИЕ АЛГОРИТМА РАБОТЫ БАЗЫ ДАННЫХ НА VISUAL C++…………………………………...…………...................……………….…6
2.1 Алгоритм работы базы данных…………………..….…..………….......7
2.2 Описание программы “Telefon”.....………………………………….....9
3 Инструкции пользователя …………………………………….….13
ЗАКЛЮЧЕНИЕ ……………………………………………………………….15
ЛИТЕРАТУРА И ИСТОЧНИКИ ………………………………………….…16
Приложение ……………………………………………………………....17

Работа содержит 1 файл

!!!!Записка!!!!.doc

— 114.50 Кб (Скачать)

      CFormView::OnInitialUpdate();

      GetParentFrame()->RecalcLayout();

      ResizeParentToFit(); 

      m_list.InsertColumn(0,"№ телефона",LVCFMT_CENTER,100,-1);

      m_list.InsertColumn(1,"ФИО",LVCFMT_CENTER,150,-1);

      m_list.InsertColumn(2,"Улица",LVCFMT_CENTER,150,-1);

      m_list.InsertColumn(3,"Дом",LVCFMT_CENTER,80,-1);

      m_list.InsertColumn(4,"Квартира",LVCFMT_CENTER,80,-1); 
 

} 

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

// CTelefonView diagnostics 

#ifdef _DEBUG

void CTelefonView::AssertValid() const

{

      CFormView::AssertValid();

} 

void CTelefonView::Dump(CDumpContext& dc) const

{

      CFormView::Dump(dc);

} 

CTelefonDoc* CTelefonView::GetDocument() // non-debug version is inline

{

      ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CTelefonDoc)));

      return (CTelefonDoc*)m_pDocument;

}

#endif //_DEBUG 

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

// CTelefonView message handlers 

//при создании окна

int CTelefonView::OnCreate(LPCREATESTRUCT lpCreateStruct)

{

      if (CFormView::OnCreate(lpCreateStruct) == -1)

            return -1; 

      // TODO: Add your specialized creation code here 

      kol=0; 

      f=fopen("Telefon.db","rt");//открытие  файла для чтения

      if(f!=0)//если  файл не пуст

      {

            while(fread(&data, sizeof(data), 1, f)>0)//пока не достигнут конец  файла

            {

                  kol++;//подсчёт количества  записей в файле

            }

            fclose(f);//завершение работы с файлом

      } 

      return 0;

} 

//при нажатии  на кнопке "Добавить"

void CTelefonView::OnAdd()

{

      UpdateData(true);//инициализация  данных в диалоговом окне

      try//попытка  открыть файл для записи

      {

            strcpy(data.name, m_name);//заносим  в data.name значение из m_name

            strcpy(data.street, m_street);//заносим в data.street значение из m_street

            strcpy(data.dom, m_dom);//заносим в data.dom значение из m_dom

            strcpy(data.flat, m_flat);//заносим в data.flat значение из m_flat

            strcpy(data.tel, m_tel);//заносим в data.tel значение из m_tel 

            f=fopen("Telefon.db","at");//открытие  файла для добавления записи  в конец

            fwrite(&data, sizeof(data), 1, f);//запись в файл 

            kol++;//увеличиваем  счётчик количества записей

            fclose(f);//завершение  работы с файлом

      }

      catch(...)//если  невозможно открыть файл

      {

            //вывод сообщения

            MessageBox("Невозможно  инициализировать базу данных!!!","ВНИМАНИЕ!!!",MB_OK|MB_ICONWARNING);

      }

      UpdateData(false);//обновление  данных в диалоговом окне  

} 

//при нажатии  на кнопке "Очистить"

void CTelefonView::OnClear()

{

      //очистка  полей

      m_name="";

      m_street="";

      m_dom="";

      m_flat="";

      m_tel=""; 

      UpdateData(false);//обновление  данных в диалоговом окне 

} 

//при нажатии  на кнопке "Удалить"

void CTelefonView::OnDelete()

{

      int i=0, ii=0; 

            f=fopen("Telefon.db","rt");//открываем  файл для чтения

            while(fread(&data, sizeof(data), 1, f)>0)//пока не достигнут конец  файла

            {

                  if(i!=p)//заносим все  записи в новую структуру data2, кроме удаляемой записи

                  {

                        strcpy(data2[ii].name, data.name);

                        strcpy(data2[ii].street, data.street);

                        strcpy(data2[ii].dom, data.dom);

                        strcpy(data2[ii].flat, data.flat);

                        strcpy(data2[ii].tel, data.tel); 

                        ii++; 

                  }

                  i++;

            }

            fclose(f);//завершение  работы с файлом 

            f=fopen("Telefon.db","wt");//открываем файл для записи (очистка содержимого)

            fclose(f);//завершение  работы с файлом 

            f=fopen("Telefon.db","at");//открываем  файл для добавления записи

            for(int j=0;j<ii;j++)

            {

                  fwrite(&data2[j], sizeof(data2[j]), 1, f);//записываем данные в файл из новой структуры

            }

            fclose(f);//завершение  работы с файлом 

            //очистка содержимого  полей

            m_name="";

            m_street="";

            m_dom="";

            m_flat="";

            m_tel=""; 

            kol--; 

            UpdateData(false);//обновление  данных в диалоговом окне  

} 

//при нажатии  на кнопке "Поиск"

void CTelefonView::OnFind()

{

      UpdateData(true);//инициализация  данных в диалоговом окне 

            f=fopen("Telefon.db","rt");//открываем  файл для чтения 

            m_list.DeleteAllItems();

            while(fread(&data, sizeof(data), 1, f)>0)//пока не достигнут конец файла

            {

                  //fread(&data, sizeof(data), 1, f);//считываем по 1 записи 

                  if((data.tel==m_tel || m_tel=="") && (data.name==m_name || m_name=="") && (data.street==m_street || m_street=="") && (data.dom==m_dom || m_dom=="") && (data.flat==m_flat || m_flat==""))

                  {

                              fnd=true;//если запись  найдена 

                              m_list.InsertItem(m_list.GetItemCount(),data.tel,0);

                              m_list.SetItemText(m_list.GetItemCount()-1,1,data.name);

                              m_list.SetItemText(m_list.GetItemCount()-1,2,data.street);

                              m_list.SetItemText(m_list.GetItemCount()-1,3,data.dom);

                              m_list.SetItemText(m_list.GetItemCount()-1,4,data.flat);

                  }

            } 

            if(!fnd)//если фамилия  по запросу не найдена в  базе, то выводим сообщение

                  MessageBox("По данному  запросу данных не найдено!","Внимание!!!",MB_OK|MB_ICONWARNING);

            fnd=false;//сброс флага  поиска 

            fclose(f);//завершение  работы с файлом 

            UpdateData(false);//обновление  данных в диалоговом окне

} 

void CTelefonView::OnMouseMove(UINT nFlags, CPoint point)

{

      CMainFrame* pFrame=(CMainFrame*) AfxGetApp()->m_pMainWnd;

      CStatusBar* pStatus = &pFrame->m_wndStatusBar;

      if(pStatus)

      {

            str.Format("Количество  записей в базе данных: %d",kol);

            pStatus->SetPaneText(0,str);

      }  

      CFormView::OnMouseMove(nFlags, point);

} 

//при нажатии на кнопке "Все записи"

void CTelefonView::OnAll()

{

      if(kol>0)//если  количество записей больше нуля

      {

            f=fopen("Telefon.db","rt");//открытие  файла для чтения

            if(f!=0)//если файл  не пуст

            {

                  m_list.DeleteAllItems(); //очистка  списка 

                  while(fread(&data, sizeof(data), 1, f)>0)//пока не достигнут конец файла

                  {

                        //заполняем список  данными из файла

                        m_list.InsertItem(m_list.GetItemCount(),data.tel,0);

                        m_list.SetItemText(m_list.GetItemCount()-1,1,data.name);

                        m_list.SetItemText(m_list.GetItemCount()-1,2,data.street);

                        m_list.SetItemText(m_list.GetItemCount()-1,3,data.dom);

                        m_list.SetItemText(m_list.GetItemCount()-1,4,data.flat);

                  }

                  fclose(f);//завершение  работы с файлом

            }

      }

} 

//при нажатии  на одном из элементов списка

void CTelefonView::OnClickList1(NMHDR* pNMHDR, LRESULT* pResult)

{

      POSITION pos; 

      pos=m_list.GetFirstSelectedItemPosition();//получение позиции выделенного элемента 

      p=m_list.GetNextSelectedItem(pos);//получение  индекса выделенного элемента 

      //заполнение полей данными из списка

      m_tel=m_list.GetItemText(p, 0);

      m_name=m_list.GetItemText(p, 1);

      m_street=m_list.GetItemText(p, 2);

      m_dom=m_list.GetItemText(p, 3);

      m_flat=m_list.GetItemText(p, 4); 

      UpdateData(false);//обновление  данных в диалоговом окне 

      *pResult = 0;

}

Информация о работе Работа с базами данных