Автор работы: Пользователь скрыл имя, 26 Января 2013 в 18:54, курсовая работа
Целью работы является разработка программы на языке Си с использованием класса статических и динамических массивов структур для обработки базы данных «Страны».
В отчете необходимо разработать программу на языке Си для обработки данных. Обработка данных включает в себя следующие функции:
1) создание новой базы данных (с возможностью задания имени файла);
2) просмотр существующей базы данных (чтение данных осуществляется из файла);
3) редактирование базы данных (с сохранением изменений в файле);
4) дополнение базы данных новыми записями (с сохранением в файле);
5) удаление записей из базы данных (с сохранением в файле);
6) поиск в базе данных (по одному и двум поисковым признакам) с выводом на экране найденных записей или сообщения о неуспешном поиске;
7) сортировка данных по заданному полю (с сохранением в файле).
Введение 5
1 Краткие теоретические сведения 6
2 Описание разработанных функций 9
3 Блок-схемы 10
3.1 Блок-схема функции Void main() 10
3.2 Блок-схема функции void input() 11
3.3 Блок-схема функции void output() 12
3.4 Блок-схема функции void sohrfile () 13
3.5 Блок-схема функции void add() 14
3.6 Блок-схема функции void sortstr () 15
3.7 Блок-схема функции void sortstol() 16
3.8 Блок-схема функции void sozd() 17
3.9 Блок-схема функции void sortplo() 17
3.10 Блок-схема функции void sortfor() 18
3.11 Блок-схема функции void sortnas() 19
3.12 Блок-схема функции void poiskstr() 20
3.13 Блок-схема функции void redakt() 20
4 Руководство по эксплуатации программы 22
5 Список литературы 26
Заключение 27
Приложение А. Листинг программы БД «Страна» 28
Приложение В. Листинг программы графические примитивы
cout<<"Baza dannuih sohranena\n";
getch(); return;}
void dmassiv::add()
{int i;
input();output();
strana t,//переменная для инфо о добавляемом
*p;//указатель для сохранения адреса исходного массива
cout<<"vvedi stranu: ";cin>>t.name;
cout<<"stolicu: ";cin>>t.stolica;
cout<<"plochadb: ";cin>>t.plochad;
cout<<"formu: ";cin>>t.forma;
cout<<"naselenie: ";cin>>t.naselenie;
p=pst;//сохранение адреса
//выделение памяти для
pst=new strana[n+1];
if(pst==NULL){cout<<"net dinamich pamyati.\n"; getch();exit(1);}
for(i=0;i<n;i++)
pst[i]=p[i];
pst[n]=t; //добавление записи в массив
n++;
delete[] p;//удаление предыдущего массива
sohrfile();}
void dmassiv::deletename()
{int i,j,n,k,y;
input(); strana *t, *p;
t=new strana[n-1];
if(n==1){delete[] pst;pst==NULL;}
else
{output(); {cout<<"kakuju stroku udalit? "; cin>>y;
if(y<0||y>n+1){cout<<" net takoi stroki.\n";getch();}return;
}; for(i=0;i<y;i++)
t[i]=pst[i];
for(i=y+1;i<n;i++)
t[i-1]=pst[i]; delete[] pst; pst=t;} {n--;cout<<"zapic udalena\n";};
output();
sohrfile();}
dmassiv::~dmassiv()
{ //очистка рабочих областей
if(pst!=NULL){delete[] pst;n=0;pst=NULL;} sohrfile();}
void dmassiv::sortstr()
{strana t;
int i,j;
input ();
cout<<"\n ishodnyi massiv:\n\n";
output();
for(i=0;i<=n-1;i++)
for(j=i+1;j<=n-1;j++)
if(strcmp(pst[i].name,pst[j].
{t=pst[i];pst[i]=pst[j];pst[j]
cout<<"\n otsortirovan po stranam\n\n";
for(i=0;i<=n-1;i++)
{cout.width(16);cout<<pst[i].
cout.width(16);cout<<pst[i].
cout.width(16);cout<<pst[i].
cout.width(16);cout<<pst[i].
cout.width(16);cout<<pst[i].
sohrfile();}
void dmassiv::sortstol()
{strana t;
int i,j;
input ();
cout<<"\n ishodnyi massiv:\n\n";
output();
for(i=0;i<=n-1;i++)
for(j=i+1;j<=n-1;j++)
if(strcmp(pst[i].stolica,pst[
{t=pst[i];pst[i]=pst[j];pst[j]
cout<<"\n otsortirovan po stolicam\n\n";
for(i=0;i<=n-1;i++)
{cout.width(16);cout<<pst[i].
cout.width(16);cout<<pst[i].
cout.width(16);cout<<pst[i].
cout.width(16);cout<<pst[i].
cout.width(16);cout<<pst[i].
sohrfile();}
void dmassiv::sortplo()
{strana t;
int i,j;
input ();
cout<<"\n ishodnyi massiv:\n\n";
output();
for(i=0;i<=n-1;i++)
for(j=i+1;j<=n-1;j++)
if(strcmp(pst[i].plochad,pst[
{t=pst[i];pst[i]=pst[j];pst[j]
cout<<"\n otsortirovan po plochadi\n\n";
for(i=0;i<=n-1;i++)
{cout.width(16);cout<<pst[i].
cout.width(16);cout<<pst[i].
cout.width(16);cout<<pst[i].
cout.width(16);cout<<pst[i].
cout.width(16);cout<<pst[i].
sohrfile();}
void dmassiv::sortfor()
{ strana t;
int i,j;
input ();
cout<<"\n ishodnyi massiv:\n\n";
output();
for(i=0;i<=n-1;i++)
for(j=i+1;j<=n-1;j++)
if(strcmp(pst[i].forma,pst[j].
{t=pst[i];pst[i]=pst[j];pst[j]
cout<<"\n otsortirovan po forme pravlenia\n\n";
for(i=0;i<=n-1;i++)
{cout.width(16);cout<<pst[i].
cout.width(16);cout<<pst[i].
cout.width(16);cout<<pst[i].
cout.width(16);cout<<pst[i].
cout.width(16);cout<<pst[i].
sohrfile();}
void dmassiv::sortnas()
{ strana t;
int i,j;
input ();
c out<<"\n ishodnyi massiv:\n\n";
output();
for(i=0;i<=n-1;i++)
for(j=i+1;j<=n-1;j++)
if(strcmp(pst[i].naselenie,
{t=pst[i];pst[i]=pst[j];pst[j]
cout<<"\n otsortirovan po naseleniyu\n\n";
for(i=0;i<=n-1;i++)
{cout.width(16);cout<<pst[i].
cout.width(16);cout<<pst[i].
cout.width(16);cout<<pst[i].
cout.width(16);cout<<pst[i].
cout.width(16);cout<<pst[i].
sohrfile();}
void dmassiv::poiskstr()
{ char name[10];
int fl,i,j;
input();
cout<<"\n ishodnyi massiv:\n\n";
output();
if(pst==NULL){cout<<"Massiv pust\n";getch();return;}
cout<<"vvedi stranu: "; cin>>name;
fl=0;
for(i=0;i<n;i++)
if (strcmp(pst[i].name,name)==0) {fl++;cout<<"rezultaty poiska:\n\n"<<
"strana: "<<pst[i].name<<
"\nstolica: "<<pst[i].stolica<<
"\nplochad: "<<pst[i].plochad<<
"\nforma: "<<pst[i].forma<<
"\nnaselenie: "<<pst[i].naselenie;}
if (fl==0) {cout<<" Net takoi zapisi\n";}getch(); return;}
void dmassiv::redakt()
{int j;
strana t;
input();
output();
cout<<"kakuju stroku redaktirovat?\n";
cin>>j;
if(j<0||j>=n){cout<<"net takoi stroki.\n";getch();return;}
cout<<"vvedite izmenenia:\n";
cout<<"strana: "; cin>>t.name;
cout<<"stolica: ";cin>>t.stolica;
cout<<"plochad: ";cin>>t.plochad;
cout<<"forma pravlenia: ";cin>>t.forma;
cout<<"naselenie: ";cin>>t.naselenie;getch();
pst[j-1]=t;sohrfile();}
void dmassiv::sozd()
{int i;
if(pst!=NULL){delete []pst;}
cout<<"kolichestvo strok: ";cin>>n;
pst=new strana[n];
for(i=0;i<n;i++)
{cout<<"strana: ";cin>>pst[i].name;
cout<<"stolica: ";cin>>pst[i].stolica;
cout<<"plochad: ";cin>>pst[i].plochad;
cout<<"forma pravlenia: ";cin>>pst[i].forma;
cout<<"naselenie: ";cin>>pst[i].naselenie;}
sohrfile();}
void main()
{dmassiv a;//объект класса dmassiv
int i,j,n;
while(1)
{ clrscr();
cout<<"\n Menu progi:\n";
cout<<"1.vvod tabl iz faila.\n";
cout<<"2.vyvod tabl na ekran.\n";
cout<<"3.dobavlenie zapisi v tabl.\n";
cout<<"4.udalenie zapisiiz tabl.\n";
cout<<"5.sohranenie v fail\n";
cout<<"6.sortirovka po strane\n";
cout<<"7.sortirovka po stolice\n";
cout<<"8.sortirovka po plochadn\n";
cout<<"9.sortirovka po forme pravlenia\n";
cout<<"10.sortirovka po naseleniyu\n";
cout<<"11.poisk po strane\n";
cout<<"12.redaktirovanie\n";
cout<<"13.sozdanie BD\n";
cout<<"14.vyhod iz progi\n";
cout<<"\n Vash vybor(1-14): ";
cin>>j;
switch(j)
{case 1: a.input(); getch(); break;
case 2: a.output();getch();break;
case 3: a.add();getch();break;
case 4: a.deletename();getch();break;
case 5: a.sohrfile();getch();break;
case 6: a.sortstr();getch();break;
case 7: a.sortstol();getch();break;
case 8: a.sortplo();getch();break;
case 9: a.sortfor();getch();break;
case 10: a.sortnas();getch();break;
case 11: a.poiskstr();getch();break;
case 12: a.redakt();getch();break;
case 13: a.sozd();getch();break;
case 14: cout<<"zavershenie raboty.";getch();exit(1);
default: cout<<"oshibka. povtorite!";getch();}}}
Приложение В. Листинг программы графические примитивы
#include<graphics.h>
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<dos.h>
void main()
{
int gd,gm,error,midx,midy,radius=
detectgraph (&gd, &gm); // Переходим в графический режим
initgraph (&gd, &gm,"c:\\BORLANDC\\BGI" );
error=graphresult();
if(error!=grOk)
{
puts("oshibka graphiki");
puts(grapherrormsg(error));
exit(0);
}
setbkcolor(LIGHTBLUE);// цвет фона
setcolor(WHITE);// Текущее значение рисующего цвета
setlinestyle(SOLID_LINE,0,3);
// прямоугольник с точками (карта)
rectangle(10,10,400,200);
circle(30,40,2);
circle(90,50,2);
circle(60,90,2);
circle(200,80,2);
circle(250,40,2);
circle(310,120,2);
circle(370,170,2);
circle(350,60,2);
//человек
circle(200,150, 20);
line(200,170,200,250);
line(200,190,150,180);
line(200,190,250,180);
line(200,250,150,290);
line(200,250,250,290);
setviewport(0,0,0,0,0);// подмассив - прямоугольное окно со своей системой координат
setcolor(RED);
//глобус
circle(500,300,90);
line(500,210,500,390);
circle(460,260,2);
circle(440,290,2);
circle(470,310,2);
circle(490,350,2);
circle(515,245,2);
circle(560,290,2);
circle(540,320,2);
line(500,390,550,430);
line(500,390,450,430);
line(550,430,450,430);
clearviewport();//очистка графического окна
delay(500); //Замораживает выполнение программы на интервал в микросекундах
setviewport(409,210,593,390,0)
setviewport(0,0,0,0,0);
setcolor(RED);
//глобус в измененном виде (меняется автоматически)
circle(500,300,90);
line(500,210,500,390);
circle(480,280,2);
circle(460,300,2);
circle(470,340,2);
circle(470,340,2);
circle(545,275,2);
circle(580,290,2);
circle(540,340,2);
getch();
clearviewport();
getch();
cleardevice();
closegraph();//Прекращает работу графической системы
exit(0); //выход из программы после нажатия enter
}
Рис. 11 – Графический примитив