File:  [LON-CAPA] / capa / capa51 / Historic / bubblersurvey.c
Revision 1.2: download - view: text, annotated - select for diffs
Fri Jul 7 18:33:51 2000 UTC (23 years, 10 months ago) by albertel
Branches: MAIN
CVS tags: version5-1-2-first_release, HEAD
- added GPL notices

    1: /* scantron for surveys control program
    2:    Copyright (C) 1992-2000 Michigan State University
    3: 
    4:    The CAPA system is free software; you can redistribute it and/or
    5:    modify it under the terms of the GNU Library General Public License as
    6:    published by the Free Software Foundation; either version 2 of the
    7:    License, or (at your option) any later version.
    8: 
    9:    The CAPA system is distributed in the hope that it will be useful,
   10:    but WITHOUT ANY WARRANTY; without even the implied warranty of
   11:    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   12:    Library General Public License for more details.
   13: 
   14:    You should have received a copy of the GNU Library General Public
   15:    License along with the CAPA system; see the file COPYING.  If not,
   16:    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
   17:    Boston, MA 02111-1307, USA.
   18: 
   19:    As a special exception, you have permission to link this program
   20:    with the TtH/TtM library and distribute executables, as long as you
   21:    follow the requirements of the GNU GPL in regard to all of the
   22:    software in the executable aside from TtH/TtM.
   23: */
   24: 
   25: #include <stdio.h>
   26: #include "Capa/capaCommon.h"
   27: #include "bubbler.h"
   28: #include <ctype.h>
   29: 
   30: #ifdef   F_DBUG
   31: extern FILE *dfp; 
   32: #endif
   33: 
   34: int main()
   35: {
   36:   T_entry grade;
   37:   FILE * inputFile, * outputFile;
   38:   int i=0,setnumber,score,section,setId,done=0,numQuestions;
   39:   char class[10],set[3],name[MAX_NAME_CHAR+1],buf,buffmt[128],
   40:       studentnumber[MAX_STUDENT_NUMBER+1],filename[128];
   41:   int q=0,r=0,answer[MAXQUEST][11];
   42:   Question questions[MAXQUEST];
   43:   
   44:   printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
   45:   printf("Covert form Bubbler output to survey results ");
   46:   printf("Version 0.1.00\n");
   47:   printf("Please enter the Set Id number.");
   48:   scanf("%d",&setId);
   49:   sprintf(filename,"bubbler.output.%d",setId);
   50:   inputFile=fopen(filename,"r");
   51: 
   52:   if (inputFile==NULL)
   53:     {
   54:       fprintf(stderr,"%s not found\n",filename);
   55:       exit(-1);
   56:     }
   57: 
   58:   fscanf(inputFile,"%s %s",class,set);
   59:   printf("%s %s\n",class,set);
   60:   setnumber=atoi(set);
   61: 
   62:   i=0;
   63:   fscanf(inputFile,"%c",&buf);
   64:   while(!done)
   65:     {
   66:       buf=fgetc(inputFile);
   67:       if (buf!='\n')
   68: 	{
   69: 	  questions[i].type=buf;
   70: 	  buf=fgetc(inputFile);
   71: 	  questions[i].points=questions[i].leafs=(int)(buf-'0');
   72: 	  i++;
   73: 	}
   74:       else
   75: 	{
   76: 	  done=1;
   77: 	}
   78:     }
   79:   
   80:   numQuestions=i;
   81: 
   82:   for(q=0;q<MAXQUEST;q++)
   83:     for(r=0;r<11;r++)
   84:       answer[q][r]=0;
   85: 
   86:   printf("Processing");
   87:   while(fscanf(inputFile,"%9c",studentnumber)!=EOF)
   88:     {
   89:       printf(".");
   90:       fflush(stdout);
   91:       fscanf(inputFile,"%32c",name);
   92:       sprintf(buffmt,"%%%dc",numQuestions);
   93:       fscanf(inputFile,buffmt,grade.answers);
   94:       fscanf(inputFile,"%d",&score);
   95:       fscanf(inputFile,"%d",&section);
   96:       buf='\0';
   97:       while(buf!='\n')
   98: 	{
   99: 	  buf=fgetc(inputFile);
  100: 	}
  101: #ifdef DEBUG
  102:       printf("%d %d\n",numQuestions,strlen(grade.answers));
  103: #endif /*DEBUG*/
  104:       for(i=0;i<numQuestions;i++)
  105: 	{
  106: 	  switch(questions[i].type)
  107: 	    {
  108: 	    case 'a':
  109: 	    case 'f':
  110: 	    case 'g':
  111: 	    case 'b':
  112: 	    case 'c':
  113: 	    case 'e':
  114: 	    case 'd':
  115: 	      if (isdigit(grade.answers[i]))
  116: 		answer[i][grade.answers[i]-'0']++;
  117: 	      else if(isspace(grade.answers[i]))
  118: 		{
  119: 		  answer[i][10]++;
  120: 		}
  121: 	      break;
  122: 	    default:
  123: 	      printf("Unknown question type\n");
  124: 	      break;
  125: 	    }
  126: 	}
  127:       grade.answers[i]='\0';
  128: #ifdef DEBUG
  129:       printf("%s\n",studentnumber);
  130: #endif /*DEBUG*/
  131:     }
  132: 
  133:   sprintf(filename,"survey.%d",setId);
  134:   outputFile=fopen(filename,"w");
  135:   if (outputFile==NULL)
  136:     {
  137:       fprintf(stderr,"%s not found\n",filename);
  138:       exit(-1);
  139:     }
  140: 
  141:   fprintf(outputFile,"Survey results for class: %s\n\n",class);
  142:   for(q=0;q<numQuestions;q++)
  143:     {
  144:       fprintf(outputFile,"Question: %d\n",q+1);
  145:       fprintf(outputFile,"  0   1   2   3   4   5   6   7   8   9   S\n");
  146:       for(r=0;r<11;r++)
  147: 	{
  148: 	  fprintf(outputFile,"%3d ",answer[q][r]);
  149: 	}
  150:       fprintf(outputFile,"\n");
  151:     }
  152:   printf("\nProcessing completed. Look in survey.%d for results.\n",
  153: 	 setId);
  154:   return 0;
  155: }

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>