#!/bin/ch /* Calculate the Grade Report in the form of html format. Created by Harry H. Cheng, 11/7/1995 Last time modified, 10/25/1996 */ #include void errorHandler(char *reason) { printf("Content-type: text/html\n\n"); printf("Grade Report Failed\n"); printf("\n"); printf("

Grade Report Failed

\n"); printf("Your SSN has not been submitted to Grade Report,\n"); printf("because %s. ",reason); printf("Try again.\n"); printf("


\n"); printf("\n"); printf("\"Powered\n"); exit(1); } void sendGrade(int ssn) { /* grading */ /* number of students */ #define NUMST 11 /* number of homework */ #define NUMHW 9 /* number of project */ #define NUMPJ 1 /* number of midterm */ #define NUMMID 1 /* number of final */ #define FINAL 1 struct student_t { int ssn; float hw[NUMHW]; float pj[NUMPJ]; float mid[NUMMID]; float final; float score; } s[NUMST+1] = { // }s[12] = { {123456789, 10,10,32, 45,65,55,85,50,10,200,100,100}, /* full mark */ {1,10,10,23, 0, 0,44,76, 0,10,140,52,49}, {2,8, 10,23, 37,50,55,84,35,10,200,86,69}, {3,10,10,30.5,44,45,50,83,47,10,170,68,51}, {4,10,10,29, 32,45,37,74,35,10,140,69,64.5}, {5,10, 9,29.5,42,65,55,81,35,10,190,80,86}, {6,10,10,29, 40,35,55,81,35,10,200,91,56.5}, {7,10,10,15, 19,45,55,81,32,10,170,80,78}, {8,10,10,32, 12,50,55,84,40,10,165,70,67.5}, {9,10,10,30, 42,60,42,72,37,10,200,65,64}, {10,10,10,30, 37,35,55,73,35,10,160,74,70}, {11,10,10,27, 24,25,55,81,38,10,165,90,61} }; float g_hwpj, g_mid, g_final; float hwpj, mid; float p_hwpj=40, p_mid=20, p_final=40; /* grade percentage */ int i, j, st; string_t reason, score; class CResponse Response; for(i=0; iGrade Report\n"); printf("\n"); printf("

Grade Report

\n"); printf("
\n");
   printf(" \t Grade \n");
   printf("----------------------\n");

  //for(j=1; j 95)
     score = "Congratulation! Your final grade for my class is 'A+'.\nKeep up good work.\n";
   else if (s[st].score > 90)
     score = "Congratulation! Your final grade for my class is 'A'. \nKeep up good work.\n";
   else if (s[st].score > 80)
     score = "Good work! Your final grade for this class is 'A-'.\n";
   else if (s[st].score > 70)
     score = "Your final grade for this class is 'B+'.\n";
   else 
     score = "Your final grade for this class is 'C'.\n";
   printf(score);

   printf("
\n"); printf("


\n"); printf("\n"); printf("\"Powered\n"); Response.end(); } int main() { int i, num, ssn; chstrarray name; /* name[i] is a string of char with a passed name */ chstrarray value; /* value[i] is a string of char with a passed value */ class CRequest Request; setvbuf(stdout, NULL, _IONBF, 0); num = Request.getFormNameValue(name, value); if(num == 0) { errorHandler("No name/value has been submitted\n"); exit(0); } else if(num == -2) { errorHandler("No enough memory\n"); } if(!strcmp("SSN", name[i]) && isnum(value[i])) ssn = atoi(value[i]); else errorHandler(stradd(name[i], " is not a valid integral number")); sendGrade(ssn); exit(0); }