БД автомобилей

Автор: Пользователь скрыл имя, 29 Апреля 2013 в 11:22, практическая работа

Краткое описание

Написать базу данных (БД) на языке С++ позволяющую хранить информацию о студентах (Ф.И.О., номер группы, средний балл, уникальный код записи (порядковый №)). База данных должна содержать основные функции : добавление записи, удаление записи, редактирование записи, поиск и сортировку по заданным параметрам.

Оглавление

1. Название программы.
2. Поставленная задача.
3. Функциональное предназначение программы.
4. Описание управления, интерфейса, основных переменных и функций.
5. Блок-схема по ЕСПД 19.003-80.
6. Исходный код программы.
7. Список используемой литературы

Файлы: 1 файл

Отчет БД.doc

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

textcolor(10);  textbackground(1); cprintf("%14s",fn);

window(1,1,80,25);  textcolor(15);

fclose(fp);

}

 

void sort(char *fn)

{

FILE *fp;

data s1,s2;

int num=1,size=sizeof(data),counter=0,key=0;

int oldfs,newfs,color[]={0,4,4,4,4};

 

while(1)

{

_setcursortype(_NOCURSOR);  textcolor(10);

cprintf("::::::::::::::::::::::::: М е н ю с о р т и р о в к и "

":::::::::::::::::::::::::");

switch(key)

{

case LEFT: if (counter>0) {

color[counter]=4;

color[--counter]=0;

}

break;

case RIGHT: if (counter<4) {

color[counter]=4;

color[++counter]=0;

}

break;

}

textbackground(4); cprintf("        "); textcolor(WHITE);

textbackground(color[0]);cprintf("  по № записи  ");

textbackground(color[1]);cprintf("  по Ф.И.О  ");

textbackground(color[2]);cprintf("  по № группы ");

textbackground(color[3]);cprintf("  по ср.балу  ");

textbackground(color[4]);cprintf("  Назад  ");

textbackground(4);cprintf("        "); textbackground(1);

 

view(fn,num);

 

key=bioskey(0);

 

switch(key)

{

case UP: num--;if (num==0)

num=1;

view(fn,num); break;

case DOWN: num++;if (num+16>=get_number(fn))

num--;

view(fn,num); break;

}

 

if (key==283)

return;

if (key == ENTER)

{

if ((fp=fopen(fn,"rb+")) == NULL)

{

cout<<"error.file does not exist.";

return;

}

switch(counter)  {

case 1:  /*-----------по Ф.И.О--------------------*/

oldfs=1;  newfs=0;

fread(&s1,size,1,fp);

while(oldfs) {

fread(&s2,size,1,fp);

 

if(feof(fp)) {

 

if(!newfs)

break;

oldfs=1; newfs=0;

rewind(fp); 

fread(&s1,size,1,fp);

continue; 

}

 

if (strcmp(s1.lastName,s2.lastName) > 0) {

fseek(fp,-2*size,1);

fwrite(&s2,size,1,fp);

fwrite(&s1,size,1,fp);

newfs=1;

}

if (strcmp(s1.lastName,s2.lastName) == 0)

if (strcmp(s1.firstName,s2.firstName) > 0) {

fseek(fp,-2*size,1);

fwrite(&s2,size,1,fp);

fwrite(&s1,size,1,fp);

newfs=1;

}

if (strcmp(s1.firstName,s2.firstName) == 0)

if (strcmp(s1.midName,s2.midName) > 0) {

fseek(fp,-2*size,1);

fwrite(&s2,size,1,fp);

fwrite(&s1,size,1,fp);

newfs=1;

}

 

else

s1=s2;

else

s1=s2;

}

break;

case 0:     /*------------ПО НОМЕРУ ЗАПИСИ-----------*/

oldfs=1;  newfs=0;

fread(&s1,size,1,fp);

while(oldfs) {

fread(&s2,size,1,fp);

 

if(feof(fp)) {

 

if(!newfs)

break;

oldfs=1; newfs=0;

rewind(fp);

fread(&s1,size,1,fp);

continue;

}

 

if (s1.num > s2.num)  {

fseek(fp,-2*size,1);

fwrite(&s2,size,1,fp);

fwrite(&s1,size,1,fp);

newfs=1;

}

else

s1=s2;

}

break;

case 2:     /*----------ПО НОМЕРУ ГРУППЫ---------------*/

oldfs=1;  newfs=0;

fread(&s1,size,1,fp);

while(oldfs) {

fread(&s2,size,1,fp);

 

if(feof(fp)) {

 

if(!newfs)

break;

oldfs=1; newfs=0;

rewind(fp);

fread(&s1,size,1,fp);

continue;

}

 

if (strcmp(s1.groupNumber,s2.groupNumber) > 0) {

fseek(fp,-2*size,1);

fwrite(&s2,size,1,fp);

fwrite(&s1,size,1,fp);

newfs=1;

}

else

s1=s2;

}

break;

case 3:     /*---------ПО СР.БАЛУ----------------*/

oldfs=1;  newfs=0;

fread(&s1,size,1,fp);

while(oldfs) {

fread(&s2,size,1,fp);

 

if(feof(fp)) {

 

if(!newfs)

break;

oldfs=1; newfs=0;

rewind(fp);

fread(&s1,size,1,fp);

continue;

}

 

if (s1.mark < s2.mark) {

fseek(fp,-2*size,1);

fwrite(&s2,size,1,fp);

fwrite(&s1,size,1,fp);

newfs=1;

}

else

s1=s2;

} break;

case 4:

fclose(fp);

return;

}

fclose(fp);

}

}

}

 

void find(char *fn)

{

void ramka();

FILE* fp;

data st;

char string[15];

int pr,prs;

 

int key=0,counter=0;

int color[]={0,4,4,4};

 

while (1) {

clrscr(); textcolor(10);

   cprintf("::::::::::::::::::::::::::::: М е  н ю  П о и с к а "

":::::::::::::::::::::::::::::");

textcolor(WHITE);

textbackground(4);

cprintf("                   ");

switch(key)

{

case LEFT: if (counter>0) {

color[counter]=4;

color[--counter]=0;

} break;

case RIGHT: if (counter<3) {

color[counter]=4;

color[++counter]=0;

} break;

}

textbackground(color[0]);  cprintf(" по №  записи ");

textbackground(color[1]);  cprintf(" по Фамилии  ");

textbackground(color[2]);  cprintf(" по Имени ");

textbackground(color[3]);  cprintf(" Отмена ");

textbackground(4);

cprintf("                  ");

textbackground(1);

 

key=bioskey(0);

 

if (key==283)

return;

if (key == ENTER)

{

if((fp=fopen(fn,"rb"))==NULL) {

puts("File couldn't be open");

return;

}

 

switch(counter)

{

case 0:

int number;

pr=0;

prs=1;

cout<<"ВВЕДИТЕ НОМЕР ЗАПИСИ : ";

fflush(stdin);

scanf("%d",&number);

rewind(fp);

 

while(fread(&st,sizeof(data),1,fp)) {

if (feof(fp)) {

break;

}

if(st.num == number)  {

if (prs) {

ramka();

gotoxy(1,6);

prs=0;

}

printf(" %4d   %-16s %-12s %-17s %8s     "

"%7.2f\n",st.num,st.lastName,st.firstName, 

st.midName,st.groupNumber,st.mark); 

pr=1;  

}

}

if(!pr) {

cout<<"\nЗАПИСИ С ТАКИМ НОМЕРОМ НЕ СУЩЕСТВУЕТ";

}

getch();

break;

case 1:

prs=1;

pr=0;

cout<<"ВВЕДИТЕ ФАМИЛИЮ : ";

fflush(stdin);

cin>>string;

rewind(fp);

 

while(fread(&st,sizeof(data),1,fp)) {

if (feof(fp))

break;

if(!strcmp(st.lastName,string)) {

if (prs) {

ramka();

gotoxy(1,6);

prs=0;

}

printf(" %4d   %-16s %-12s %-17s %8s     "

"%7.2f\n",st.num,st.lastName,st.firstName,

st.midName,st.groupNumber,st.mark);

pr=1;

}

}

if(!pr) {

cout<<"\nНЕТ ДАННЫХ";

}

getch();

break;

case 2:

prs=1;

pr=0;

cout<<"ВВЕДИТЕ ИМЯ : ";

fflush(stdin);

cin>>string;

rewind(fp);

 

while(fread(&st,sizeof(data),1,fp)) {

if (feof(fp))

break;

 

if(!strcmp(st.firstName,string)) {

if (prs) {

ramka();

gotoxy(1,6);

prs=0;

}

printf(" %4d   %-16s %-12s %-17s %8s     "

"%7.2f\n",st.num,st.lastName,st.firstName,

st.midName,st.groupNumber,st.mark);

pr=1;

}

}

if(!pr) {

cout<<"\nНЕТ ДАННЫХ";

}

getch();

break;

case 3:

fclose(fp);

return;

}

fclose(fp);

}

}

}

 

void ramka()

{

window(1,3,80,6);

cprintf("------------------------------------"

"--------------------------------------------");

textcolor(14);

cprintf("%5s   %-16s %-12s %-17s %-8s %12s   ",

"№","Фамилия","Имя","Отчество","№  группы","Ср.балл");

textcolor(WHITE);

cprintf("------------------------------------"

"--------------------------------------------");

window(1,1,80,25);

}

 

int find_max_num(char *fn)

{

FILE *fp;

data st;

int max;

 

if ((fp = fopen(fn,"rb")) == NULL)  {

printf("File could not be opened.\n");

return -1;

}

 

max=0;

while (fread(&st,sizeof(data),1,fp)) {

if (feof(fp))

break;

if (st.num>max)

max=st.num;

}

fclose(fp);

return max;

}

 

int get_number(char *fn)

{

FILE *fp;

int fd,n=0;

 

if ((fp = fopen(fn,"rb")) == NULL)

{

printf("File could not be opened.\n");

return -1;

}

fd=fileno(fp);

n=filelength(fd)/sizeof(data);

fclose(fp);

 

return n;

}

 

void create()

{

FILE *fp;

char *fn;

 

cout<<"Введите имя новой БД : ";

fflush(stdin);

cin>>fn;

strcat(fn,".dat");

 

if ((fp=fopen(fn,"wb")) == NULL) {

cout<<"Ошибка...Файл не может быть создан\n";

getch();

exit(10);

}

fclose(fp);

interface(fn);

}

 

void open()

{

FILE *fp;

char *fn;

 

cout<<"Введите имя БД : ";

fflush(stdin);

cin>>fn;

strcat(fn,".dat");

 

if (!(fp=fopen(fn,"rb"))) {

cout<<"Ошибка...Файл не может быть открыт\n";

getch();

exit(10);

}

fclose(fp);

interface(fn);

}

 

int check(char *fn, data st)

{

FILE *fp;

data temp;

int pr=0;

 

if ((fp = fopen(fn,"rb")) == NULL) {

printf("File could not be opened.\n");

return 0;

}

 

while ( fread( &temp, sizeof( data ), 1, fp)) {

if (feof(fp))

break;

if (!strcmp(st.lastName,temp.lastName)

&& !strcmp(st.firstName,temp.firstName)

&& !strcmp(st.midName,temp.midName)

&& !strcmp(st.groupNumber,temp.groupNumber)

&& (st.mark == temp.mark))  {

pr=1;

break;

}

} fclose(fp);

  return pr;

}

 

 

СПИСОК ЛИТЕРАТУРЫ

 

  1. Харви Дейтел, Пол Дейтел “Как программировать на Си”
  2. Е. М. Демидович “Основы алгоритмизации и программирования”, Минск 1999 г.
  3. Керниган Б., Ритчи Д. “Язык программирования Си”, Финансы и     статистика, 1992 г.



Информация о работе БД автомобилей