Автор работы: Пользователь скрыл имя, 18 Марта 2014 в 23:39, курсовая работа
Представление данных в виде структур применяется в основном при машинной обработке документов. Любой документ делится на три части: «шапка», колонки и строки. Каждая строка документа является записью, которая представляет из себя единое целое и состоит из отдельных данных, называемых реквизитами, с разной формой (числа, буквенные рядки и т.д.). Цель курсовой работы – освоить способы организации программ при решении задач с использованием структур. Проанализирована задача и выведены методы ее программной реализации. Написана программа для решения индивидуального задания. В курсовой работе использованы приемы передачи массива записей в функцию, организации графического интерфейса в текстовом режиме. Реализована возможность построения графика.
Вступление …………………..….….……………….……… ..… 4
Постановка задачи .…………………………………………. 5
Анализ существующих методов работы со структурами .6
Описание программы …………………………………….... 7
Общие сведения ……………………………………….. 7
Исходные данные …………….………………………. 13
Обработанные данные ………………………………... 14
Переменные, константы и функции ………..……….. 15
Выводы …………………………………………………………... 17
i++;
if(i<n)
{fprintf(f,"\n");}}
for(i=0;i<n;i++)
{delete[] buffer[i].wb;}
delete[] buffer;
fclose(f);}
void ReadFile(pMyStack This)
{int i,j,n;
FILE * f;
f=fopen("C:/curs.txt","rt");
if(!f)
{cout<<"Can't open this file";
getch();
exit(1);}
i=0;
buffStr buffer;
buffer.wb=new WorkBook[This->TopIter->WBnum]
while(!feof(f))
{fscanf(f,"%d %s %s %s %d %d %d %d %d %d %d",&buffer.TableNum,&buffer.
for(j=0;j<buffer.WBnum;j++)
{fscanf(f,"%d %d %d %d %d %d %s",&buffer.wb[j].StartDate[0]
MyStackPush(This,buffer.
i++;}
fclose(f);
MyStackPop(This);
delete[] buffer.wb;}
void Graphic(pMyStack This)
{int i,j,k,n,n1=0,n2=0,n3=0,n4=0,
char str[20];
buffStr *buffer;
n=StackSize;
buffer=new buffStr[StackSize];
for(i=0;i<n;i++)
{buffer[i].wb=new WorkBook[This->TopIter->WBnum]
buffer[i].WBnum=This->TopIter-
for(j=0;j<This->TopIter->
{for(k=0;k<3;k++)
{buffer[i].wb[j].StartDate[k]=
buffer[i].wb[j].EndDate[k]=
strcpy(buffer[i].wb[j].
buffer[i].TableNum = This->TopIter->TableNum;
strcpy(buffer[i].Surname,This-
strcpy(buffer[i].Name,This->
strcpy(buffer[i].Patron,This->
for(j=0;j<3;j++)
{buffer[i].BirthDate[j]=This->
buffer[i].StDate[j]=This->
buffer[i].Exp=This->TopIter->
MyStackPop(This);}
for(i=0;i<n;i++)
{MyStackPush(This,buffer[n-i-
clrscr();
for(i=0;i<n;i++)
{exp=buffer[i].Exp;
if(exp>=0 && exp<5)
{n1++;}
if(exp>=5 && exp<8)
{n2++;}
if(exp>=8 && exp<20)
{n3++;}
if(exp>=20 && exp<25)
{n4++;}
if(exp>=25)
{n5++;}}
setcolor(WHITE);
line(50,getmaxy()-50,getmaxx()
outtextxy(getmaxx()-45,
line(getmaxx()-50,getmaxy()-
line(getmaxx()-50,getmaxy()-
line(50,getmaxy()-50,50,50);
outtextxy(30,40,"Amount");
line(50,50,45,55);
line(50,50,55,55);
for(i=1;i<30;i++)
{line(50+i*18,getmaxy()-53,50+
sprintf(str,"%d",i);
outtextxy(47+i*18,getmaxy()-
for(i=0;i<9;i++)
{line(47,getmaxy()-50-i*47,53,
sprintf(str,"%d",i);
outtextxy(40,getmaxy()-50-i*
setcolor(RED);
line(50,getmaxy()-50,50,
line(50+5*18,getmaxy()-50,50+
line(50,getmaxy()-50-n1*47,50+
line(50+5*18,getmaxy()-50,50+
line(50+8*18,getmaxy()-50,50+
line(50+5*18,getmaxy()-50-n2*
line(50+8*18,getmaxy()-50,50+
line(50+20*18,getmaxy()-50,50+
line(50+8*18,getmaxy()-50-n3*
line(50+20*18,getmaxy()-50,50+
line(50+25*18,getmaxy()-50,50+
line(50+20*18,getmaxy()-50-n4*
line(50+25*18,getmaxy()-50,50+
line(50+30*18,getmaxy()-50,50+
line(50+25*18,getmaxy()-50-n5*
getch();
for(i=0;i<n;i++)
{delete[] buffer[i].wb;}
delete[] buffer;}
void MyStackAdd(pMyStack This)
{clrscr();
int runadd=1,i;
buffStr mainbuf;
mainbuf.TableNum=0;
strcpy(mainbuf.Surname,"
strcpy(mainbuf.Name,"Name");
strcpy(mainbuf.Patron,"Patron"
for(i=0;i<3;i++)
{mainbuf.BirthDate[i]=0;
mainbuf.StDate[i]=0;}
mainbuf.WBnum=0;
/*
clrscr();
for(i=0;i<mainbuf.WBnum;i++)
{clrscr();
printf("\n Work Book Entry");
} */
//
char *addworker[]={"Table Number","Surname","Name","
char *addworkbook[]={"Startwork Date","Endwork Date","Factory name","Ok"};
while(runadd)
{clrscr();
switch(menuMain(addworker,11))
{case 0:
{clrscr();
cprintf("\nEnter the table number: ");
cin>>mainbuf.TableNum;
continue;}
case 1:
{clrscr();
cprintf("\nEnter the surname: ");
cin>>mainbuf.Surname;
continue;}
case 2:
{clrscr();
cprintf("\nEnter the name: ");
cin>>mainbuf.Name;
continue;}
case 3:
{clrscr();
cprintf("\nEnter the patron: ");
cin>>mainbuf.Patron;
continue;}
case 4:
{clrscr();
cprintf("\nEnter the day of the birth date: ");
cin>>mainbuf.BirthDate[0];
cprintf("\nEnter the month of the birth date: ");
cin>>mainbuf.BirthDate[1];
cprintf("\nEnter the year of the birth date: ");
cin>>mainbuf.BirthDate[2];
continue;}
case 5:
{clrscr();
cprintf("\nEnter the day of the startwork date: ");
cin>>mainbuf.StDate[0];
cprintf("\nEnter the month of the startwork date: ");
cin>>mainbuf.StDate[1];
cprintf("\nEnter the year of the startwork date: ");
cin>>mainbuf.StDate[2];
continue;}
case 6:
{clrscr();
cprintf("\nEnter the number of entries in the workbook: ");
cin>>mainbuf.WBnum;
mainbuf.wb=new WorkBook[mainbuf.WBnum];
continue;}
case 7:
{switch(menuMain(addworkbook,
{case 0:
{for(i=0;i<mainbuf.WBnum;i++)
{
clrscr();
printf("\nEnter the day of the startwork date: ");
cin>>mainbuf.wb[i].StartDate[
printf("\nEnter the month of the startwork date: ");
cin>>mainbuf.wb[i].StartDate[
printf("\nEnter the year of the startwork date: ");
cin>>mainbuf.wb[i].StartDate[
continue;}
case 1:
{for(i=0;i<mainbuf.WBnum;i++)
{
clrscr();
printf("\nEnter the day of the endwork date: ");
cin>>mainbuf.wb[i].EndDate[0];
printf("\nEnter the month of the endwork date: ");
cin>>mainbuf.wb[i].EndDate[1];
printf("\nEnter the year of the endwork date: ");
cin>>mainbuf.wb[i].EndDate[2];
continue;}
case 2:
{for(i=0;i<mainbuf.WBnum;i++)
{clrscr();
printf("\nEnter the name of the factory: ");
cin>>mainbuf.wb[i].FactName;}
continue;}
case 3:
{continue;}
default: continue;}}
case 8:
{clrscr();
gotoxy(20,5);
cprintf("Table number: %d",mainbuf.TableNum);
gotoxy(20,6);
cprintf("Surname: %s",mainbuf.Surname);
gotoxy(20,7);
cprintf("Name: %s",mainbuf.Name);
gotoxy(20,8);
cprintf("Patron: %s",mainbuf.Patron);
gotoxy(20,9);
cprintf("Birth Date: %d.%d.%d",mainbuf.BirthDate[0]
gotoxy(20,10);
cprintf("Startwork Date: %d.%d.%d",mainbuf.StDate[0],
getch();
continue;}
case 9:
{MyStackPush(This,mainbuf.
runadd=0;
break;}
case 10:
{runadd=0;
break;}
default:
{runadd=0;
break;}}}
delete[] mainbuf.wb;}
void main(void)
{clrscr();
int Driver,Mode,errorcode;
Driver=DETECT;
detectgraph(&Driver,&Mode);
initgraph(&Driver,&Mode,"C:/
errorcode=graphresult();
if(errorcode!=grOk)
{cout<<"Error:"<<endl<<
getch();
exit(1);}
pMyStack Stack=MyStackCreate();
int n=0,c,itSelect,run=1,i,delnum,
char *drawMenu[]={"File","Workers",
char *drawFile[]={"Open","Save","
char *drawWorker[]={"Print workers","New worker","Delete worker","Back"};
char *drawProc[]={"Sort exp","Sort table number","Back"};
textmode(3);
window(1,1,80,25);
textattr(7);
textbackground(BLACK);
clrscr();
while(run)
{if(flexit)
{run=0;
break;}
restorecrtmode();
clrscr();
switch(menuMain(drawMenu,6))
{case 0:
{switch(menuMain(drawFile,4))
{case 0:
{ReadFile(Stack);
break;}
case 1:
{SaveFile(Stack,0);
break;}
case 2:
{SaveFile(Stack,1);
break;}
case 3: continue;
default: continue;}
break;}
case 1:
{switch(menuMain(drawWorker,4)
{case 0:
{MyStackPrint(Stack);
getch();
break;}
case 1:
{clrscr();
MyStackAdd(Stack);
break;}
case 2:
{clrscr();
cout<<endl<<"Enter the number of worker: ";
cin>>delnum;
MyStackDelete(Stack,delnum);
getch();
break;}
case 3: continue;
default: continue;}
break;}
case 2:
{switch(menuMain(drawProc,3))
{case 0:
{MyStackSortExp(Stack);
cout<<endl<<"Stack was sorted by the exp growing";
getch();
break;}
case 1:
{MyStackSortTable(Stack);
cout<<endl<<"Stack was sorted by the table number growing";
getch();
break;}
case 2: continue;
default: continue;}
break;}
case 3:
{textcolor(BLACK);
setgraphmode(getgraphmode());
Graphic(Stack);
break;}
case 4:
{clrscr();
gotoxy(24,20);
cprintf("Kursovaia rabota");
gotoxy(20,21);
cprintf("Studenta gruppi IUS-09v");
gotoxy(26,22);
cprintf("Meh Dmitria");
getch();
continue;}
case 5:
{getch();
run=0;
flexit=1;
break;}
default:
{getch();
run=0;
break;}}}
window(1,1,80,25);
textattr(7);
textbackground(BLACK);
MyStackDel(Stack);
closegraph();}