Дипломная работа

от 20 дней
от 7 499 рублей

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

от 10 дней
от 1 499 рублей

Реферат

от 3 дней
от 529 рублей

Контрольная работа

от 3 дней
от 79 рублей
за задачу

Билеты к экзаменам

от 5 дней
от 89 рублей

 

Курсовая Разработка программной документации - Базы данных

  • Тема: Разработка программной документации
  • Автор: Юлия
  • Тип работы: Курсовая
  • Предмет: Базы данных
  • Страниц: 34
  • ВУЗ, город: Москва
  • Цена(руб.): 1500 рублей

altText

Выдержка

//Шаблон структуры водителя
typedef struct {
int code;//шифр-номер
char fio[30]; //ФИО
char otstran;//Признак отстранения от работы
} voditel;
//Шаблон структуры машины
typedef struct {
int code; //шифр-номер
char model[15]; //марка
char nomer[10]; //номер
char remont; //признак ремонта
} avto;
//Шаблон структуры рейса
typedef struct {
int voditel;//Шифр водителя
int avto;//шифр машины
char nazv[20];//Название маршрута
long scnach;//Начальные показания счетчика
long sckon;//Конечные показания счетчика
char done;//Признак выполненного маршрута
} _reys;
//Шаблон структуры Окно
typedef struct {
int LtRow, LtCol;//координаты верхнего левого угла
int Width; //ширина окна
int Height; //высота окна
int TypteBorder; //тип рамки
char *Titl; //заголовок
int SimvolColor; //цвет символов
int Background; //цвет фона
int n; //количество тем меню
char **Text; //текстовое содержание окна
} Menu_W;
//Текстовые строки, используемые для расшифровки полей справочников
char to[]="Отстранен";
char tr[]="Работает";
char trr[]="В ремонте";
char rv[]="Выполнен";
char rnv[]="Не вып.";
voditel drivers[20];//Массив водителей
int numdrivers=0;//кол-во водителей в массиве
avto mash[20];//Массив машин
int nummash=0;//количество машин в массиве
_reys reys[20];//массив рейсов
int numreys=0;//количество рейсов в массиве
//Пункты главного меню
char *mainmenu[]={ "Справочник водителей\n",
"Справочник автомобилей\n",
"Рейсы\n",
"Печать ведомости",
"Выход\n"};
//Инициализируем пункты меню справочника водителей
char *sprvod[]={"Добавить",
drivers[0].fio,
drivers[1].fio,
drivers[2].fio,
drivers[3].fio,
drivers[4].fio,
drivers[5].fio,
drivers[6].fio,
drivers[7].fio,
drivers[8].fio,
drivers[9].fio,
drivers[10].fio,
drivers[11].fio,
drivers[12].fio,
drivers[13].fio,
drivers[14].fio,
drivers[15].fio,
drivers[16].fio,
drivers[17].fio,
drivers[18].fio,
drivers[19].fio,
};
//Инициализируем пункты меню справочника машин
char *sprmash[]={"Добавить",
mash[0].nomer,
mash[1].nomer,
mash[2].nomer,
mash[3].nomer,
mash[4].nomer,
mash[5].nomer,
mash[6].nomer,
mash[7].nomer,
mash[8].nomer,
mash[9].nomer,
mash[10].nomer,
mash[11].nomer,
mash[12].nomer,
mash[13].nomer,
mash[14].nomer,
mash[15].nomer,
mash[16].nomer,
mash[17].nomer,
mash[18].nomer,
mash[19].nomer};
//Инициализируем пункты меню списка рейсов
char *sprreys[]={"Добавить",
reys[0].nazv,
reys[1].nazv,
reys[2].nazv,
reys[3].nazv,
reys[4].nazv,
reys[5].nazv,
reys[6].nazv,
reys[7].nazv,
reys[8].nazv,
reys[9].nazv,
reys[10].nazv,
reys[11].nazv,
reys[12].nazv,
reys[13].nazv,
reys[14].nazv,
reys[15].nazv,
reys[16].nazv,
reys[17].nazv,
reys[18].nazv,
reys[19].nazv};
Menu_W menusprvod={1,1,25,24,0,"Справочник водителей",BLACK,LIGHTGRAY,0,sprvod};
Menu_W menusprmash={1,1,25,24,0,"Справочник машин",BLACK,LIGHTGRAY,0,sprmash};
Menu_W menusprreys={1,1,25,24,0,"Рейсы",BLACK,LIGHTGRAY,0,sprreys};

// описание прототипов функций
long filesize(FILE *stream);
//---------------------------------------------------------
void spravvod();
//---------------------------------------------------------
void addvod();
//---------------------------------------------------------
void showvod(int num);
//---------------------------------------------------------
void spravmash();
//---------------------------------------------------------
void addmash();
//---------------------------------------------------------
void showmash(int num);
//---------------------------------------------------------
void spravreys();
//---------------------------------------------------------
void addreys();
//---------------------------------------------------------
void showreys(int num);
//---------------------------------------------------------
void delvod(int num);
//---------------------------------------------------------
void delmash(int num);
//---------------------------------------------------------
void cgetstring(char * str,unsigned char cnt);
//---------------------------------------------------------
int maxdriverscode(void);
//---------------------------------------------------------
int maxmashcode(void);
//---------------------------------------------------------
void printved();
//---------------------------------------------------------
int ShowWindow(Menu_W Menu);
//---------------------------------------------------------
int Select_tema(Menu_W Menu,int kod);
//---------------------------------------------------------
int Navig(Menu_W Menu);
//---------------------------------------------------------
int main()
{
FILE *f;
int a;
union REGS regs;
Menu_W Menu1= {20,5,25,6,0,"Главное меню",BLACK,LIGHTGRAY,5,mainmenu},
Menu2= {1,1,79,0,0,"АРМ \"Автобаза\"",RED,LIGHTGRAY,0,NULL};
regs.h.ah = 1;
regs.h.ch = 32;
int86(VIDEO, ®s, ®s); //Курсор невидим
//очищаем массивы
memset(drivers,0,sizeof(drivers));
memset(mash,0,sizeof(mash));
memset(reys,0,sizeof(reys));
//Загрузка массивов из файлов в каталоге программы
f=fopen("vodit.dat","r");
if(f)
{
numdrivers=filesize(f)/sizeof(voditel);
fread(drivers,sizeof(voditel),numdrivers,f);
fclose(f);
}
f=fopen("mash.dat","r");
if(f)
{
nummash=filesize(f)/sizeof(avto);
fread(mash,sizeof(avto),nummash,f);
fclose(f);
}
f=fopen("reys.dat","r");
if(f)
{
numreys=filesize(f)/sizeof(_reys);
fread(reys,sizeof(_reys),numreys,f);
fclose(f);
}
//Главное меню
do
{
textbackground(BLACK);
clrscr();
ShowWindow(Menu2);
ShowWindow(Menu1);
a=Navig(Menu1);
//Выбор действия в зависимости от выбранного пункта меню
if (a==0) spravvod();
if (a==1) spravmash();
if (a==2) spravreys();
if (a==3) printved();
}
while(a!=-1&& a!=4);//закончить цикл, если нажата Esc или соотв. пункт меню
//Сохранение массивов в файлы
f=fopen("vodit.dat","w");
fwrite(drivers,sizeof(voditel),numdrivers,f);
fclose(f);
f=fopen("mash.dat","w");
fwrite(mash,sizeof(avto),nummash,f);
fclose(f);
f=fopen("reys.dat","w");
fwrite(reys,sizeof(_reys),numreys,f);
fclose(f);
return a;
}
//------------------------------------------------------
// Нарисовать окно с меню
int ShowWindow(Menu_W Menu)
{
int i;
window(Menu.LtRow,Menu.LtCol,Menu.LtRow+Menu.Width,
Menu.LtCol+Menu.Height);
textcolor(Menu.SimvolColor);
textbackground(Menu.Background);
clrscr();
gotoxy((1+Menu.Width/2-strlen(Menu.Titl)/2),1);
cprintf("%s",Menu.Titl);
if(Menu.Text!=NULL)
{gotoxy(2,2);
for(i=0;i { cprintf("%s",Menu.Text[i]);
gotoxy(2,2+i+1);
}
}
return 0;
}
//-----------------------------------------------------
// Отобразить активный пункт меню
int Select_tema(Menu_W Menu,int kod)
{gotoxy(2,kod+2);
textcolor(abs(Menu.SimvolColor-15));
textbackground(abs(Menu.Background-15));
cprintf("%s",Menu.Text[kod]);
return 0;
}
//-------------------------------------------------------
// Отобразить неактивный пункт меню
int tema(Menu_W Menu,int kod)
{gotoxy(2,kod+2);
textcolor(Menu.SimvolColor);
textbackground(Menu.Background);
cprintf("%s",Menu.Text[kod]);
return 0;
}
//----------------------------------------------------------
// передвижение по меню
int Navig(Menu_W Menu)
{
/* установить номер активного пункта (kod), максимально возможный номер пункта (kodmax) */
int res=-1;
int kod=0,kodmax=Menu.n;
union KEY {int i;
char ch[2];
}press;
int flag=1;
// отобразить активный пункт меню
Select_tema(Menu,kod);
do {
press.i=bioskey(0); // прием с ожиданием
if (press.ch[0]) // нажата ASCII-клавиша
{ switch (press.ch[0])
{ case 27: flag=0;break;
case 13: flag=0;res=kod;break;
}
}
else //Нажата специальная клавиша
{ switch (press.ch[1])
{// передвижение в верх по меню
case 72: {tema(Menu,kod);
kod-=1;STOP;
Select_tema(Menu,kod);;
break;
}
// передвижение вниз по меню
case 80:{tema(Menu,kod);
kod+=1; STOP;
Select_tema(Menu,kod);;
break;
}
//Нажата клавиша del - возвращается отрицательный код
case 83:{res=-kod-2;
flag=0;
break;
}
}
}
} while (flag==1);
return res;
}
//определение размера файла
long filesize(FILE *stream)
{
long curpos, length;
curpos = ftell(stream);
fseek(stream, 0L, SEEK_END);
length = ftell(stream);
fseek(stream, curpos, SEEK_SET);
return length;
}
//справочник водителей
void spravvod()
{
int a;
do{
textbackground(BLACK);
clrscr();
menusprvod.n=numdrivers+1;
menusprvod.Height=numdrivers+2;
ShowWindow(menusprvod);
a=Navig(menusprvod);
if (a==-1) break;
if (a==0)
{
//добавление водителя в справочник
if(numdrivers<20)
{
addvod();
}
continue;
}
if(a>=0)
{
//Показать информацию о водителе
showvod(a-1);
}
if(a<-2)
{
//удаление из справочника
delvod(-a-3);
}
}
while(1);
}
//Добавление волителя в справочник
void addvod()
{
voditel v;
Menu_W m= {1,23,32,2,0,"Введите ФИО:",RED,LIGHTGRAY,0,NULL};
memset(&v,0,sizeof(v));
ShowWindow(m);
_setcursortype(_NORMALCURSOR);
gotoxy(2,2);
cgetstring(v.fio,30);
_setcursortype(_NOCURSOR);
//Вводится только ФИО
v.code=maxdriverscode()+1;//Код генерируется уникальный
v.otstran=0;
drivers[numdrivers]=v;
numdrivers++;
}
//Определение максимального шифра в массиве водителей
int maxdriverscode(void)
{
int i,max;
for(i=0,max=drivers[0].code;i{
if(drivers[i].code>max) max=drivers[i].code;
}
return max;
}
//Определение максимального шифра в массиве машин
int maxmashcode(void)
{
int i,max;
for(i=0,max=mash[0].code;i{
if(mash[i].code>max) max=mash[i].code;
}
return max;
}
//удаление водителя
void delvod(int num)
{
int i;
for(i=num;inumdrivers--;
}
//удаление машины
void delmash(int num)
{
int i;
for(i=num;inummash--;
}
//показать информацию о водителе
void showvod(int num)
{
char *v[3];
int a;
char tmp[10];
Menu_W menuvodinfo={28,10,32,4,0,"Информация о водителе",BLACK,LIGHTGRAY,3,0};
//itoa(drivers[num].code,tmp,10);
do{
sprintf(tmp,"Код: %d",drivers[num].code);
//формирование пунктов меню
v[0]=tmp;
v[1]=drivers[num].fio;
if(drivers[num].otstran)
v[2]=to;
else
v[2]=tr;
menuvodinfo.Text=v;
ShowWindow(menuvodinfo);
a=Navig(menuvodinfo);
if(a==-1) break;
if(a==1)
{
//Изменение фамилии
Menu_W m= {1,23,32,2,0,"Введите ФИО:",RED,LIGHTGRAY,0,NULL};
ShowWindow(m);
_setcursortype(_NORMALCURSOR);
gotoxy(2,2);
cgetstring(drivers[num].fio,30);
textbackground(BLACK);
clrscr();
_setcursortype(_NOCURSOR);
}
//отстранение/допуск к работе
if(a==2)
{
drivers[num].otstran=!drivers[num].otstran;
}
}
while(1);

}
//----------------------------------------------
//справочник машин
void spravmash()
{
int a;
do
{
textbackground(BLACK);
clrscr();
menusprmash.n=nummash+1;
menusprmash.Height=nummash+2;
ShowWindow(menusprmash);
a=Navig(menusprmash);
if (a==-1) break;
if (a==0)
{
//добавление машины в справочник
if(nummash<20)
{
addmash();
}
continue;
}
if(a>0)
{
//показать информацию о машине
showmash(a-1);
}
//удаление машины из справочника
if(a<-2)
{
delmash(-a-3);
}
}
while(1);
}
//добавление машины в справочник
void addmash()
{
avto v;
Menu_W m= {1,23,30,2,0,"Введите марку автомобиля:",RED,LIGHTGRAY,0,NULL};
Menu_W m1= {1,23,20,2,0,"Введите гос. номер:",RED,LIGHTGRAY,0,NULL};
memset(&v,0,sizeof(v));
//марка
ShowWindow(m);
_setcursortype(_NORMALCURSOR);
gotoxy(2,2);
cgetstring(v.model,15);
textbackground(BLACK);
clrscr();
//номер
ShowWindow(m1);
_setcursortype(_NORMALCURSOR);
gotoxy(2,2);
cgetstring(v.nomer,10);
_setcursortype(_NOCURSOR);
//код генерируется уникальный
v.code=maxmashcode()+1;
v.remont=0;
mash[nummash]=v;
nummash++;
}
//показать информацию о машине
void showmash(int num)
{
char *v[3];
int a;
char tmp[10],tmp1[20],tmp2[20];
Menu_W menumashinfo={28,10,32,5,0,"Информация об автомобиле",BLACK,LIGHTGRAY,4,0};
//itoa(drivers[num].code,tmp,10);
do{
sprintf(tmp,"Код: %d",mash[num].code);
sprintf(tmp1,"Марка: %s",mash[num].model);
sprintf(tmp2,"Номер: %s",mash[num].nomer);
//Формирование пунктов меню
v[0]=tmp;
v[1]=tmp1;
v[2]=tmp2;
if(mash[num].remont)
v[3]=trr;
else
v[3]=tr;
menumashinfo.Text=v;
ShowWindow(menumashinfo);
a=Navig(menumashinfo);
if(a==-1) break;
if(a==1)
{
//Изменение марки машины
Menu_W m= {1,23,30,2,0,"Введите марку автомобиля:",RED,LIGHTGRAY,0,NULL};
ShowWindow(m);
_setcursortype(_NORMALCURSOR);
gotoxy(2,2);
cgetstring(mash[num].model,15);
textbackground(BLACK);
clrscr();
_setcursortype(_NOCURSOR);
}
if(a==2)
{
//Изменение номера машины
Menu_W m1= {1,23,20,2,0,"Введите гос. номер:",RED,LIGHTGRAY,0,NULL};
ShowWindow(m1);
_setcursortype(_NORMALCURSOR);
gotoxy(2,2);
cgetstring(mash[num].nomer,15);
textbackground(BLACK);
clrscr();
_setcursortype(_NOCURSOR);
}
if (a==3)
{
//измнение признака ремонта машины
mash[num].remont=!mash[num].remont;
}
}
while(1);
}
//------------------------------------------------------------
//Список рейсов
void spravreys()
{
int a;
do
{
textbackground(BLACK);
clrscr();
menusprreys.n=numreys+1;
menusprreys.Height=numreys+2;
ShowWindow(menusprreys);
a=Navig(menusprreys);
if (a==-1) break;
if (a==0)
{
if(numreys<20)
{
//добавление маршрута
addreys();
}
continue;
}
if(a>0)
{
//показать информацию о маршруте
showreys(a-1);
}
}
while(1);
}
//добавление рейса
void addreys()
{
_reys v;
char *rabvod[20],*rabmash[20];
int rabvodcodes[20],rabmashcodes[20];
int i,j,k,a;
Menu_W menurabvod={28,2,25,24,0,"Выберите водителя",BLACK,LIGHTGRAY,0,NULL};
Menu_W menurabmash={28,2,25,24,0,"Выберите машину",BLACK,LIGHTGRAY,0,NULL};
Menu_W m= {1,23,30,2,0,"Введите название маршрута:",RED,LIGHTGRAY,0,NULL};
Menu_W m1= {1,23,40,2,0,"Введите начальные показания счетчика:",RED,LIGHTGRAY,0,NULL};
memset(&v,0,sizeof(v));
//формируем массив только работающих водителей
for(i=0,j=0;i {
if(!drivers[i].otstran)
{
rabvod[j]=drivers[i].fio;
rabvodcodes[j]=drivers[i].code;
j++;
}
}
//формируем массив только работающих машин
for(i=0,k=0;i {
if(!mash[i].remont)
{
rabmash[k]=mash[i].nomer;
rabmashcodes[k]=mash[i].code;
k++;
}
}
//Выбираем водителя только из работающих
do{
menurabvod.n=j;
menurabvod.Height=j+1;
menurabvod.Text=rabvod;
ShowWindow(menurabvod);
a=Navig(menurabvod);
if (a==-1) continue;
else
{
v.voditel=rabvodcodes[a];
break;
}
}
while(1);
textbackground(BLACK);
clrscr();
//выбираем машину из тех, которые не а ремонте
do{
menurabmash.n=k;
menurabmash.Height=k+1;
menurabmash.Text=rabmash;
ShowWindow(menurabmash);
a=Navig(menurabmash);
if (a==-1) continue;
else
{
v.avto=rabmashcodes[a];
break;
}
}
while(1);
textbackground(BLACK);
clrscr();
ShowWindow(m);
//Вводим название маршрута
_setcursortype(_NORMALCURSOR);
gotoxy(2,2);
cgetstring(v.nazv,20);
textbackground(BLACK);
clrscr();
ShowWindow(m1);
_setcursortype(_NORMALCURSOR);
gotoxy(2,2);
while(kbhit())getch();//очищеам буфер клавиатуры
//cgetstring(tmp,12);
//v.scnach=atol(tmp);
//нач. значение счетчика
cscanf("%ld",&v.scnach);
textbackground(BLACK);
clrscr();
_setcursortype(_NOCURSOR);
v.sckon=0;
v.done=0;
reys[numreys]=v;
numreys++;
}
//показать информацию о рейсе
void showreys(int num)
{
char *v[6];
int a,i;
char tmp[50],tmp1[50],tmp2[50],tmp3[50];
Menu_W menureysinfo={28,10,32,7,0,"Информация о рейсе",BLACK,LIGHTGRAY,6,0};
Menu_W m2= {1,23,40,2,0,"Введите конечные показания счетчика:",RED,LIGHTGRAY,0,NULL};
do
{
//формирование пунктов меню
for(i=0;drivers[i].code!=reys[num].voditel;i++);
sprintf(tmp,"Водитель: %s",drivers[i].fio);
for(i=0;mash[i].code!=reys[num].avto;i++);
sprintf(tmp1,"Автомобиль: %s",mash[i].nomer);
sprintf(tmp2,"Нач. счетчик: %ld",reys[num].scnach);
sprintf(tmp3,"Кон. счетчик: %ld",reys[num].sckon);
v[0]=reys[num].nazv;
v[1]=tmp;
v[2]=tmp1;
v[3]=tmp2;
v[4]=tmp3;
if(reys[num].done)
v[5]=rv;
else
v[5]=rnv;
menureysinfo.Text=v;
ShowWindow(menureysinfo);
a=Navig(menureysinfo);
if(a==-1) break;
if(a==4)
{
//ввод кочечных показаний счетчика
ShowWindow(m2);
_setcursortype(_NORMALCURSOR);
gotoxy(2,2);
while(kbhit())getch();
//cgetstring(tmpnum,12);
//reys[num].sckon=atol(tmpnum);
cscanf("%ld",&reys[num].sckon);
textbackground(BLACK);
clrscr();
_setcursortype(_NOCURSOR);
}
if (a==5)
{
//Изменение признака выполненного маршрута
reys[num].done=!reys[num].done;
}
}
while(1);
}
//Ввод строки с клавиатуры
void cgetstring(char * str,unsigned char cnt)
{
char temp[200];
temp[0]=cnt+2;//максимальная длина строки
while(kbhit())getch();//очиска буфера клавиатуры
cgets(temp);//чтение строки
strcpy(str,&temp[2]);//сохранение
}
//печать ведомости.
void printved()
{
Menu_W Menu= {1,24,79,1,0,"Сформирован файл ved.txt",RED,BLUE,0,NULL};
FILE *file;
int i,j,k;
long sum=0,rast;
file=fopen("ved.txt","w");
//шапка
fprintf(file,"Маршрут |Водитель |Машина |Номер |Проехал|Состояние\n");
fprintf(file,"--------------------------------------------------------------------------------\n");
for(i=0;i {
for(j=0;drivers[j].code!=reys[i].voditel;j++);//находим водителя рейса
for(k=0;mash[k].code!=reys[i].avto;k++); //находим машину
//Расчет расстояния
rast=reys[i].sckon&&reys[i].done?rast=reys[i].sckon-reys[i].scnach:0;
//Вывод строки в файл
fprintf(file,"%20s|%19s|%12s|%8s|%7ld|%s\n",
reys[i].nazv,
drivers[j].fio,
mash[k].model,
mash[k].nomer,
rast,
reys[i].done?rv:rnv);
sum=sum+rast;
}
//итог
fprintf(file,"--------------------------------------------------------------------------------\n");
fprintf(file,"Итого: %7ld",sum);
fclose(file);
ShowWindow(Menu);
getch();
}
HYPER13PAGE HYPER15

2


int main()
Mash.dat
Vodit.dat
Reys.dat
Mash.dat
Vodit.dat
Reys.dat

void spravvod()

void spravmash()

void spravreys()

void printved()

ved.txt
void addvod()
void delvod(int num)
void showvod(int num)
void addmash()
delmash(int num)
void showmash(int num)
void addreys()
void showreys(int num)


 

НАШИ КОНТАКТЫ

Skype: forstuds E-mail: [email protected]

ВРЕМЯ РАБОТЫ

Понедельник - пятница 9:00 - 18:00 (МСК)

ПРИНИМАЕМ К ОПЛАТЕ