• полнота - чем полнее база данных, тем вероятнее, что она содержит нужную информацию (однако, не должно быть избыточной информации);
• правильная организация - чем лучше структурирована база данных, тем легче в ней найти необходимые сведения;
• актуальность - любая база данных может быть точной и полной, если она постоянно обновляется, т.е. необходимо, чтобы база данных в каждый момент времени полностью соответствовала состоянию отображаемого ею объекта;
• удобство для использования - база данных должна быть проста и удобна в использовании и иметь развитые методы доступа к любой части информации.
Соответственно возможностям организации реляционных, иерархических и сетевых информационых структур, существуют и аналогичные виды баз данных.
2.3 Основные типы баз данных
1) Иерархические
2) Сетевые
3) Реляционные
Иерархические базы данных
Иерархические БД применялись в начале 60-х годов. Они построены в виде обычного дерева. Данные делятся на 2 категории: главные и подчинённые. Таким образом, один тип объекта является главным, а остальные, находящиеся на более низких ступенях иерархии, - подчинёнными.БД, организованные по такому принципу, удобно использовать в тех случаячх, когда информамция упорядочена соответствующим образом.
Сетевые базы данных
Сетевые БД начали применятся практически одновременно с иерархическими. В этих БД любой объект может быть как главным, так и подчинённым.
В использовании довольно сложно реализовать представление данных в таком виде, поэтому от этого типа тоже отказались.
Реляционные базы данных
Именно реляционные БД используются в повседневной жизни. (от англ. relation - отношение). Такой тип БД представляется собой несколько взаимосвязанных таблиц прямоугольной формы. В которых собственное есть поля, ключи, записи, аторибуты и прочее и прочее.
3. Действие программы
3.1 Структура программы
Программа состоит из 2 функций отвечающих за интерфейс программы и основной программы в которой выполняются все действия с базой данных.
Функции отвечающие за интерфейс программы предназначены для придания программе более приятного вида и для упрощения работы с ней. Это функция вывода сообщения об ошибке ввода и функция создания рамки в окне программы.
Функция вывода сообщения об ошибке ввода предназначена для упрощения работы с программой. Вообще сама «защита» от ошибки ввода защищает программу от совершения каких-либо ошибок, связанных с вводом. Если пользователь случайно введет неправильное значение то программа выдаст ему соответствующее сообщение и пользователь сможет исправить свою ошибку.
Функция создания рамки в окне программы предназначена для придания интерфейсу программы более «товарного» вида. Пользователю будет приятнее работать в красивом окне чем в простом черном окне.
Основная программа выполняет действия над записями: ввод - вывод данных, изменение записей, поиск записей, добавление записей к уже имеющимся.
3.2 Работа программы
Программа начинается с ввода первоначальных данных.
При запуске появляется окно в котором пользователю предлагается ввести нужные данные. Окно выглядит так:
После ввода данных пользователю предлагается продолжить ввод данных или же завершить ввод.
В случае неправильного ввода программа выдает сообщение об ошибке:
Если пользователь вводит символ 'n' то программа переходит к окну ввода данных, Если же пользователь ввел символ 'q' то в окне появляется сообщение о завершении ввода.
Программа переходит к следующему окну
Далее пользователю предлагается выбрать дальнейшее действие.
При выборе вывода данных на экране появляется окно с введенными данными
При выборе добавления данных на экране появляется окно ввода данных. При выборе поиска на экране появляется окно выбора критерия поиска:
Далее появляется окно в котором предлагается ввести определенные данные для поиска. После выполнения поиска при наличии данной записи она выводится на экран.
При выборе изменения данных на экране появится окно в котором пользователю предлагается ввести данные записи которую нужно изменить
Далее пользователю предлагается ввести новые данные.
Далее выводится сообщение об изменении записи.
При выборе выхода из программы программа завершает свое выполнение и заврывается.
Данная работа выполнена на языке высокого уровня программирования в среде Borland С++, Первые версии языка программирования С++ (тогда он назывался "Си с классами") были разработаны в начале 80-х годов Бьярном Страуструпом, сотрудником знаменитой AT&T Bell Labs, где ранее были разработаны такие шедевры программирования, как операционная система UNIX и язык программирования Си. При написании и разработки программного обеспечения использовались различные возможности С++.
В ходе выполнения курсовой работы была разработана база данных группы студентов, с помощью которой можно добавить данные о студенте, просмотреть их , совершить поиск по определенным критериям студента.
Также данные записываются в файл на жесткий диск, тем самым мы сохраняем их. Уже поиск совершается в самом файле.
Данная курсовая работа позволила укрепить знания, которые были получены в процессе учебы, и реализовать их в виде данной программы.
Список литературы
1. Е Зуев, А Кротов "Новые возможности языка Си++", PC Magazine/Russian Edition, #7, 1994.
2. В.Шелест. Программирование. 2002.3. Г. Шилдт «Самоучитель С++» - СПб.:БХВ-Петербург. 2001. — 670с.
4. Карпов Б., Баранов Т. «С++: специальный справочник» - СПб.: Питер, 2001. — 480 с.:ил.
5. Культин Н. «С/С++ в задачах и примерах» - СПб.:БХВ-Петербург, 2002. — 288 с.
6. А. Мешков, Ю. Тихомиров «Visual C++ и MFC» - СПб.:БХВ-Петербург. 2002 — 1017с.
9. Роберт Седжвик, Фундаментальные алгоритмы на С++,
Санкт-Петербург, ООО "ДиаСофтЮП", 2002. Части 1-4 - 688 с., часть 5 - 496 с.
10. М. Эллис, Б. Строуструп. Справочное руководство по языку C++ с комментариями: Пер. с англ. - Москва: Мир, 1992. 445с.
11. Стенли Б. Липпман. C++ для начинающих: Пер. с англ. 2тт. - Москва: Унитех; Рязань: Гэлион, 1992, 304-345сс.
12. Бруно Бабэ. Просто и ясно о Borland C++: Пер. с англ. - Москва: БИНОМ, 1994. 400с.
13. В.В. Подбельский. Язык C++: Учебное пособие. - Москва: Финансы и статистика, 1995. 560с.
14. Ирэ Пол. Объектно-ориентированное программирование с использованием C++: Пер. с англ. - Киев: НИИПФ ДиаСофт Лтд, 1995. 480с.
15. Т. Фейсон. Объектно-ориентированное программирование на Borland C++ 4.5: Пер. с англ. - Киев: Диалектика, 1996. 544с.
Приложение
Листинг программы
#include <clx.h>
#include <stdlib.h>
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <math.h>
void ramka(),error();
void error()
{textcolor(4);
cprintf("Nepravil'nyi vybor");
textcolor(15);}
void ramka ()
{int xx1,yy1,xx2,yy2;
int xi;
xx1=2; yy1=1; xx2=78; yy2=24;
for (xi=xx1;xi<=xx2-1;xi++)
{textcolor(14);
gotoxy(xi,yy1);
cprintf("Н");
gotoxy(xi,yy2);
cprintf("Н");}
for (xi=yy1;xi<=yy2;xi++)
{gotoxy(xx1,xi);
cprintf("є");
gotoxy(xx2,xi);
cprintf("є");}
gotoxy(xx1,yy1);
cprintf("Й");
gotoxy(xx2,yy1);
cprintf("»");
gotoxy(xx1,yy2);
cprintf("И");
gotoxy(xx2,yy2);
cprintf("ј");
textcolor(15);}
void main()
{const int n=9999;
int m,i,j;
char l,k,x,y;
char vybor[25],vtip[25],vproizv[25],vmodel[25];
struct detal {int nomer; char naim[25]; char proizv[25]; char model[25];};
detal baza[n];
textmode(C80);
textbackground(1);
clrscr();
ramka();
gotoxy(25,5);
cprintf ("Vvedite dannye\n");
i=0;
metka2:
j=i;
gotoxy(25,7);
cprintf ("Tip produkta :");
cscanf ("%s",&baza[i].naim);
gotoxy(25,8);
cprintf ("Proizvoditel' :");
cscanf ("%s",&baza[i].proizv);
gotoxy(25,9);
cprintf ("Model' produkta :");
cscanf ("%s",&baza[i].model);
i++;
metka4:clrscr();
ramka();
gotoxy(8,9);
cprintf("Nazhmite 'n' dlya dobavleniya zapisi ili 'q' dlya zaversheniya vvoda\n");
gotoxy(33,10);
cscanf("%s",&x);
if (x=='n' || x=='q')
{if (x=='n')
{clrscr();
goto metka2;}
else {gotoxy(27,11);
cprintf ("zapisi dobavleny\n");}}
else
{gotoxy (27,11);
error();
getch(); getch();
goto metka4;}
getch(); getch();
metka1:clrscr();
ramka();
gotoxy(25,5);
cprintf("Vyberite deistvie");
gotoxy(25,7);
cprintf("1-Vyvesti spisok na ekran");
gotoxy(25,8);
cprintf("2-Dobavit' dannye v spisok");
gotoxy(25,9);
cprintf("3-Vypolnit' poisk");
gotoxy(25,10);
cprintf("4-Izmenit' zapis'");
gotoxy(25,11);
cprintf("0-vyhod");
gotoxy(25,13);
cprintf("Vash vybor : ");
cscanf("%s",&k);
if (k=='0' || k=='1' || k=='2' || k=='3' || k=='4')
{if (k=='1')
{clrscr();
ramka();
for (m=0;m<i;m++)
{gotoxy(20,m+2);
cprintf (baza[m].naim);
cprintf(" ");
cprintf (baza[m].proizv);
cprintf(" ");
cprintf (baza[m].model);
printf("\n");}
getch(); getch();
goto metka1;}
if (k=='2')
{clrscr();
gotoxy(25,5);
cprintf ("Vvedite dannye\n");
metka3:j=i;
ramka();
gotoxy(25,7);
cprintf ("Tip produkta :");
cscanf ("%s",&baza[i].naim);
gotoxy(25,8);
cprintf ("Proizvoditel' :");
cscanf ("%s",&baza[i].proizv);
gotoxy(25,9);
cprintf ("Model' produkta :");
cscanf ("%s",&baza[i].model);
i++;
metka6:clrscr();
ramka();
gotoxy(9,8);
cprintf("Nazhmite 'n' dlya dobavleniya zapisi ili 'q' dlya zaversheniya vvoda\n");
gotoxy(30,9);
cscanf("%s",&y);
if (y=='n' || y=='q')
{if (y=='n') {clrscr();
goto metka3;}
else {gotoxy(27,11);
cprintf ("Zapisi dobavleny");
getch(); getch();
goto metka1;}}
else
{gotoxy (27,11);
error();
getch(); getch();
goto metka6;}}
if (k=='3')
{metka5:clrscr();
ramka();
gotoxy(25,5);
cprintf("Kryterii poiska");
gotoxy(25,7);
cprintf("1-Tip");
gotoxy(25,8);
cprintf("2-Proizvoditel'");
gotoxy(25,9);
cprintf("3-model' produkta");
gotoxy(25,11);
cprintf("Vash vybor : ");
cscanf("%s",&l);
if (l=='1' || l=='2' || l=='3')
{if (l=='1')
{clrscr();
ramka();
gotoxy(25,5);
cprintf("Vvedite tip produkta");
gotoxy(30,7);
cscanf("%s",&vybor);
for (m=0;m<i;m++)
{if (!strcmp(baza[m].naim,vybor))
{gotoxy(20,m+9);
cprintf (baza[m].naim);
cprintf(" ");
cprintf (baza[m].proizv);
cprintf(" ");
cprintf (baza[m].model);
cprintf("\n");}}}
if (l=='2')
{clrscr();
ramka();
gotoxy(25,5);
cprintf("Vvedite proizvoditelya produkta");
gotoxy(30,7);
cscanf("%s",&vybor);
for (m=0;m<i;m++)
{if (!strcmp(baza[m].proizv,vybor))