Обработка записей

Автор работы: Пользователь скрыл имя, 18 Марта 2014 в 23:39, курсовая работа

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

Представление данных в виде структур применяется в основном при машинной обработке документов. Любой документ делится на три части: «шапка», колонки и строки. Каждая строка документа является записью, которая представляет из себя единое целое и состоит из отдельных данных, называемых реквизитами, с разной формой (числа, буквенные рядки и т.д.). Цель курсовой работы – освоить способы организации программ при решении задач с использованием структур. Проанализирована задача и выведены методы ее программной реализации. Написана программа для решения индивидуального задания. В курсовой работе использованы приемы передачи массива записей в функцию, организации графического интерфейса в текстовом режиме. Реализована возможность построения графика.

Содержание

Вступление …………………..….….……………….……… ..… 4
Постановка задачи .…………………………………………. 5
Анализ существующих методов работы со структурами .6
Описание программы …………………………………….... 7
Общие сведения ……………………………………….. 7
Исходные данные …………….………………………. 13
Обработанные данные ………………………………... 14
Переменные, константы и функции ………..……….. 15
Выводы …………………………………………………………... 17

Прикрепленные файлы: 1 файл

Пояснительная записка.doc

— 258.50 Кб (Скачать документ)

    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.Surname,&buffer.Name,&buffer.Patron,&buffer.BirthDate[0],&buffer.BirthDate[1],&buffer.BirthDate[2],&buffer.StDate[0],&buffer.StDate[1],&buffer.StDate[2],&buffer.WBnum);

    for(j=0;j<buffer.WBnum;j++)

     {fscanf(f,"%d %d %d %d %d %d %s",&buffer.wb[j].StartDate[0],&buffer.wb[j].StartDate[1],&buffer.wb[j].StartDate[2],&buffer.wb[j].EndDate[0],&buffer.wb[j].EndDate[1],&buffer.wb[j].EndDate[2],&buffer.wb[j].FactName);}

    MyStackPush(This,buffer.TableNum,buffer.Surname,buffer.Name,buffer.Patron,buffer.BirthDate,buffer.StDate,buffer.wb,buffer.WBnum);

    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,n5=0,exp;

  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->WBnum;

    for(j=0;j<This->TopIter->WBnum;j++)

     {for(k=0;k<3;k++)

       {buffer[i].wb[j].StartDate[k]=This->TopIter->wb[j].StartDate[k];

buffer[i].wb[j].EndDate[k]=This->TopIter->wb[j].EndDate[k];}

strcpy(buffer[i].wb[j].FactName,This->TopIter->wb[j].FactName);}

    buffer[i].TableNum = This->TopIter->TableNum;

    strcpy(buffer[i].Surname,This->TopIter->Surname);

    strcpy(buffer[i].Name,This->TopIter->Name);

    strcpy(buffer[i].Patron,This->TopIter->Patron);

    for(j=0;j<3;j++)

     {buffer[i].BirthDate[j]=This->TopIter->BirthDate[j];

      buffer[i].StDate[j]=This->TopIter->StDate[j];}

      buffer[i].Exp=This->TopIter->Exp;

    MyStackPop(This);}

  for(i=0;i<n;i++)

   {MyStackPush(This,buffer[n-i-1].TableNum,buffer[n-i-1].Surname,buffer[n-i-1].Name,buffer[n-i-1].Patron,buffer[n-i-1].BirthDate,buffer[n-i-1].StDate,buffer[n-i-1].wb,buffer[n-i-1].WBnum);}

  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()-50,getmaxy()-50);

  outtextxy(getmaxx()-45,getmaxy()-50,"Exp");

  line(getmaxx()-50,getmaxy()-50,getmaxx()-55,getmaxy()-55);

  line(getmaxx()-50,getmaxy()-50,getmaxx()-55,getmaxy()-45);

  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+i*18,getmaxy()-47);

    sprintf(str,"%d",i);

    outtextxy(47+i*18,getmaxy()-45,str);}

  for(i=0;i<9;i++)

   {line(47,getmaxy()-50-i*47,53,getmaxy()-50-i*47);

    sprintf(str,"%d",i);

    outtextxy(40,getmaxy()-50-i*47,str);}

  setcolor(RED);

  line(50,getmaxy()-50,50,getmaxy()-50-n1*47);

  line(50+5*18,getmaxy()-50,50+5*18,getmaxy()-50-n1*47);

  line(50,getmaxy()-50-n1*47,50+5*18,getmaxy()-50-n1*47);

  line(50+5*18,getmaxy()-50,50+5*18,getmaxy()-50-n2*47);

  line(50+8*18,getmaxy()-50,50+8*18,getmaxy()-50-n2*47);

  line(50+5*18,getmaxy()-50-n2*47,50+8*18,getmaxy()-50-n2*47);

  line(50+8*18,getmaxy()-50,50+8*18,getmaxy()-50-n3*47);

  line(50+20*18,getmaxy()-50,50+20*18,getmaxy()-50-n3*47);

  line(50+8*18,getmaxy()-50-n3*47,50+20*18,getmaxy()-50-n3*47);

  line(50+20*18,getmaxy()-50,50+20*18,getmaxy()-50-n4*47);

  line(50+25*18,getmaxy()-50,50+25*18,getmaxy()-50-n4*47);

  line(50+20*18,getmaxy()-50-n4*47,50+25*18,getmaxy()-50-n4*47);

  line(50+25*18,getmaxy()-50,50+25*18,getmaxy()-50-n5*47);

  line(50+30*18,getmaxy()-50,50+30*18,getmaxy()-50-n5*47);

  line(50+25*18,getmaxy()-50-n5*47,50+30*18,getmaxy()-50-n5*47);

  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,"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","Patron","Birth Date","Startwork Date","Number of workbook entries","Workbook","View","Ok","Cancel"};

  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,4))

   {case 0:

    {for(i=0;i<mainbuf.WBnum;i++)

     {

     clrscr();

     printf("\nEnter the day of the startwork date: ");

     cin>>mainbuf.wb[i].StartDate[0];

     printf("\nEnter the month of the startwork date: ");

     cin>>mainbuf.wb[i].StartDate[1];

     printf("\nEnter the year of the startwork date: ");

     cin>>mainbuf.wb[i].StartDate[2]; }

     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],mainbuf.BirthDate[1],mainbuf.BirthDate[2]);

gotoxy(20,10);

cprintf("Startwork Date: %d.%d.%d",mainbuf.StDate[0],mainbuf.StDate[1],mainbuf.StDate[2]);

getch();

continue;}

      case 9:

       {MyStackPush(This,mainbuf.TableNum,mainbuf.Surname,mainbuf.Name,mainbuf.Patron,mainbuf.BirthDate,mainbuf.StDate,mainbuf.wb,mainbuf.WBnum);

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:/TC/BGI");

  errorcode=graphresult();

  if(errorcode!=grOk)

   {cout<<"Error:"<<endl<<grapherrormsg(errorcode)<<endl<<"Press any key to exit"<<endl;

    getch();

    exit(1);}

  pMyStack Stack=MyStackCreate();

  int n=0,c,itSelect,run=1,i,delnum,flexit=0;

  char *drawMenu[]={"File","Workers","Processing","Graphic","About","Exit"};

  char *drawFile[]={"Open","Save","Save as","Back"};

  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();}

 

 


Информация о работе Обработка записей