Главная страница

Курсовая. Курсовая работа по дисциплине Информатика


Скачать 19.69 Kb.
НазваниеКурсовая работа по дисциплине Информатика
АнкорКурсовая
Дата13.08.2019
Размер19.69 Kb.
Формат файлаdocx
Имя файлаkurs666.docx
ТипКурсовая
#85068

Федеральное агентство связи

Кафедра ПМ и К

Курсовая работа

по дисциплине «Информатика»:

Разработка системы управления базой данных

Выполнил:

студент 1 курса

гр.

Проверил:

2019

Задание


Написать программу управления базой данных телефонных номеров, реализующей поиск, добавление, удаление и вывод элементов базы данных. Хранение данных реализовать в файле. Вариант по номеру в журнале.

ФИО

Группа

Вариант







1



Вариант

База данных

Поле 1

Поле 2

Поле 3

Поле 4

1

Аптеки

Название

Телефон

Адрес

Время работы


Оглавление


Задание 2

Код программы 4

Заключение 17


Код программы



#include

#include

#include

#include

#include

using namespace std;

void setcolor(int color)//функция изменения цвета символов

{

SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),color);

}

void setpos(int x,int y)//функция задания позиции курсора

{

COORD pos;

pos.X=x;

pos.Y=y;

SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);

}

struct Apteka//структура базы данных

{

string name;//название аптеки

long long int number;//телефон

string address;//адрес

int time[4];//часы работы

};

struct Button//структура кнопки

{

string text;//текст кнопки

int color;//цвет кнопуи

};

struct Menu//структура меню

{

int count;//количество кнопок

Button* button;//указатель на массив кнопок

};

int ch;//код клавиши

void print_menu(Menu* menu,int selected)//функция вывода меню

{

for(int i=0;icount;i++)//прогон по всем кнопкам

{

if(i==selected)//если кнопка выделена

setcolor(menu->button[i].color>>4|(menu->button[i].color<<4)&0xff);//меняем фон с цветом символа

else

setcolor(menu->button[i].color);

printf("%s\n",menu->button[i].text.c_str());//вывод текста кнопки

}

}

Apteka** database;//указатель на базу данных

int count;//количество элементов

void append(Apteka* element)//добавление элемента

{

Apteka** db=new Apteka*[count+1];

for(int i=0;i
{

db[i]=database[i];

}

db[count]=element;

delete database;

database=db;

count++;

}

void remove(int index)//удаление элемента по его индексу

{

Apteka** db=new Apteka*[count-1];

for(int i=0;i
{

if(i>=index)

db[i]=database[i+1];

else

db[i]=database[i];

}

delete database;

database=db;

count--;

}

int find(string name)

{

for(int i=0;i
{

if(name.compare(database[i]->name)==0)

{

return i;

}

}

return -1;

}

void save()//сохранение базы данных в двоичный файл

{

FILE* f=fopen("db.bin","wb");

fwrite(&count,sizeof(int),1,f);

for(int i=0;i
{

int buf=database[i]->name.size();

fwrite(&buf,sizeof(int),1,f);

fwrite(database[i]->name.c_str(),1,buf,f);

fwrite(&(database[i]->number),sizeof(long long int),1,f);

buf=database[i]->address.size();

fwrite(&buf,sizeof(int),1,f);

fwrite(database[i]->address.c_str(),1,buf,f);

fwrite(&(database[i]->time[0]),sizeof(int),1,f);

fwrite(&(database[i]->time[1]),sizeof(int),1,f);

fwrite(&(database[i]->time[2]),sizeof(int),1,f);

fwrite(&(database[i]->time[3]),sizeof(int),1,f);

}

fclose(f);

}

void load()//загрузка базы данных из двоичного файла

{

FILE* f;

if((f=fopen("db.bin","rb"))==NULL)

{

//system("cls");

//printf("FIle not exists\n\nPress any key to continue...");

//getch();

save();

return;

}

for(int i=0;i
delete database[i];

delete database;

fread(&count,sizeof(int),1,f);

database=new Apteka*[count];

for(int i=0;i
{

database[i]=new Apteka;

int buf;

char* str;

fread(&buf,sizeof(int),1,f);

str=new char[buf+1];

fread(str,1,buf,f);

str[buf]=0;

database[i]->name=string(str);

delete str;

fread(&(database[i]->number),sizeof(long long int),1,f);

fread(&buf,sizeof(int),1,f);

str=new char[buf+1];

fread(str,1,buf,f);

str[buf]=0;

database[i]->address=string(str);

delete str;

fread(&(database[i]->time[0]),sizeof(int),1,f);

fread(&(database[i]->time[1]),sizeof(int),1,f);

fread(&(database[i]->time[2]),sizeof(int),1,f);

fread(&(database[i]->time[3]),sizeof(int),1,f);

}

fclose(f);

}

void swapsort(int i,int j)

{

if(database[i]->name.compare(database[j]->name)>0)

{

Apteka* c=database[i];

database[i]=database[j];

database[j]=c;

}

}

void sort()

{

int left=0,right=count-1;

while(left<=right)

{

for(int i=left;i
swapsort(i,i+1);

right--;

for(int i=right;i>=left;i--)

swapsort(i,i+1);

left++;

}

}

int main()

{

count=0;

load();

system("cls");

Menu mmain;

mmain.count=7;//главное меню

mmain.button=new Button[mmain.count];

mmain.button[0].text="Create";

mmain.button[0].color=0x07;

mmain.button[1].text="Remove";

mmain.button[1].color=0x07;

mmain.button[2].text="Edit";

mmain.button[2].color=0x07;

mmain.button[3].text="View all";

mmain.button[3].color=0x07;

mmain.button[4].text="Clear";

mmain.button[4].color=0x07;

mmain.button[5].text="Find";

mmain.button[5].color=0x06;

mmain.button[6].text="Exit";

mmain.button[6].color=0x04;

ch=0;

int selected=0;

while(true)

{

setcolor(0x07);

system("cls");

print_menu(&mmain,selected);

//setpos(14,14);

//printf("%i",ch);

ch=getch();

if(ch==72&&selected>0)

selected--;

if(ch==80&&selected
selected++;

if(ch==13)

switch(selected)

{

case 0:

{

setcolor(0x07);

system("cls");

setpos(0,0);

char* st=new char[80];

printf("name:\nnumber:\naddress:\ntime(usage: 8:00 17:00):");

setpos(6,0);

gets(st);

string name=string(st);

if(find(name)!=-1)

{

setcolor(0x07);

system("cls");

setpos(0,0);

printf("Element \"%s\" is exists.\n\nPress any key to continue...",name.c_str());

getch();

break;

}

long long int number;

setpos(8,1);

scanf("%lli",&number);

setpos(9,2);

//scanf("%s",st);

gets(st);

gets(st);

string address=string(st);

int time[4];

setpos(25,3);

scanf("%i:%i %i:%i",&time[0],&time[1],&time[2],&time[3]);

Apteka* element=new Apteka;

element->name=name;

element->number=number;

element->address=address;

element->time[0]=time[0];

element->time[1]=time[1];

element->time[2]=time[2];

element->time[3]=time[3];

append(element);

sort();

save();

break;

}

case 1:

{

setcolor(0x07);

system("cls");

setpos(0,0);

printf("name: ");

char* st=new char[80];

gets(st);

string name=string(st);

system("cls");

setpos(0,0);

int index=find(name);

if(index==-1)

printf("Element \"%s\" not exists.\n\n",name.c_str());

else

{

remove(index);

sort();

save();

printf("Element \"%s\" removed.\n\n",name.c_str());

}

printf("Press any key to continue...");

getch();

break;

}

case 2:

{

setcolor(0x07);

system("cls");

setpos(0,0);

char* st=new char[80];

printf("[edit]name:\nnumber:\naddress:\ntime(usage: 8:00 17:00):");

setpos(12,0);

gets(st);

string name=string(st);

int index=find(name);

if(index==-1)

{

setcolor(0x07);

system("cls");

setpos(0,0);

printf("Element \"%s\" is not exists.\n\nPress any key to continue...",name.c_str());

getch();

break;

}

setcolor(0x03);//подсказка в виде уже существующих значений в элементе

setpos(40,1);

printf("%lli",database[index]->number);

setpos(40,2);

printf("%s",database[index]->address.c_str());

setpos(40,3);

printf("%i:%i - %i:%i",database[index]->time[0],database[index]->time[1],database[index]->time[2],database[index]->time[3]);

setcolor(0x07);

long long int number;

setpos(8,1);

scanf("%lli",&number);

setpos(9,2);

gets(st);

string address=string(st);

int time[4];

setpos(25,3);

scanf("%i:%i %i:%i",&time[0],&time[1],&time[2],&time[3]);

Apteka* element=new Apteka;

element->name=name;

element->number=number;

element->address=address;

element->time[0]=time[0];

element->time[1]=time[1];

element->time[2]=time[2];

element->time[3]=time[3];

delete database[index];//замена элемента

database[index]=element;

save();

break;

}

case 3:

{

setcolor(0x07);

system("cls");

setpos(0,0);

if(count==0)

printf("Not enought elements.\n\n");

for(int i=0;i
{

printf("name: %s\nnumber: %lli\naddress: %s\ntime: %i:%i - %i:%i\n\n",

database[i]->name.c_str(),database[i]->number,database[i]->address.c_str(),

database[i]->time[0],database[i]->time[1],database[i]->time[2],database[i]->time[3]);

}

printf("Press any key to continue...");

getch();

break;

}

case 4:

{

for(int i=0;i
{

delete database[i];

}

delete database;

count=0;

setcolor(0x07);

system("cls");

printf("All elements is deleted.\n\nPress any key to continue...");

getch();

save();

break;

}

case 5:

{//поиск по названию

setcolor(0x07);

system("cls");

setpos(0,0);

char* st=new char[80];

printf("[find]name:\nnumber:\naddress:\ntime(usage: 8:00 17:00):");

setpos(12,0);

gets(st);

string name=string(st);

int index=find(name);

if(index==-1)

{

setcolor(0x07);

system("cls");

setpos(0,0);

printf("Element \"%s\" is not exists.\n\nPress any key to continue...",name.c_str());

getch();

break;

}

setcolor(0x06);//подсказка в виде уже существующих значений в элементе

setpos(8,1);

printf("%lli",database[index]->number);

setpos(9,2);

printf("%s",database[index]->address.c_str());

setpos(25,3);

printf("%i:%i - %i:%i\n",database[index]->time[0],database[index]->time[1],database[index]->time[2],database[index]->time[3]);

setcolor(0x07);

getch();

break;

}

case 6:

{//выход из программы

for(int i=0;i
delete database[i];

delete database;

setcolor(0x07);//возврат оформления консоли

system("cls");

return 0;

}

}

}

setcolor(0x07);

system("cls");

return 0;

}

Заключение


В ходе написания курсовой работы мной был изучен язык программирования С++, который является одним из самых популярных языков программирования. В результате выполнения курсовой работы было разработано управление базой данных телефонных номеров, реализующей поиск, добавление, удаление и вывод элементов базы данных. Область применения данного языка включает создание операционных систем, разнообразных прикладных программ, драйверов устройств, приложений для встраиваемых систем, высокопроизводительных серверов, а также развлекательных приложений. Я познакомился с объектно-ориентированным программированием и изучил библиотеку стандартных шаблонов. В данной работе выполнены все поставленные задачи.



написать администратору сайта