#!/bin/ch /* Calculate the Grade point Average (GPA) of a class Report in the form of html format. Created by Harry H. Cheng, 11/7/1995 Last time modified, 10/25/1996 */ #include int a ,am , bp ,b , bm ,cp ,c ,cm ,dp , d, dm , f, sum; float sa ,sam , sbp ,sb , sbm ,scp ,sc ,scm ,sdp , sd, sdm, sf, gpa; void errorHandler(char *reason) { printf("Content-type: text/html\n\n"); printf("GPA Calculator Failed\n"); printf("\n"); printf("

GPA Calculator Failed

\n"); printf("Your GPA information has not been submitted to GPA Calculator,\n"); printf("because %s. ",reason); printf("Try again.\n"); printf("


\n"); printf("\n"); printf("\"Powered\n"); exit(1); } void sendGPA() { printf("Content-type: text/html\n\n"); printf("GPA Calculator Report\n"); printf("\n"); printf("

GPA Calculator Report

\n"); sum = a +am + bp +b + bm +cp +c +cm +dp + d + dm+ f; gpa = (sa * a +sam*am + sbp *bp+sb *b+ sbm*bm+scp *cp+sc *c+scm *cm +sdp*dp +sd *d + sdm*dm + sf *f)/sum; printf("
\n");
    printf("Grade\t Num of students\t Score\n");
    printf("---------------------------------------\n");
    printf(" A/A+\t\t %d\t\t %.1f \n", a, sa);
    printf(" A-\t\t %d\t\t %.1f \n", am, sam);
    printf(" B+\t\t %d\t\t %.1f \n", bp, sbp);
    printf(" B\t\t %d\t\t %.1f \n", b, sb);
    printf(" B-\t\t %d\t\t %.1f \n", bm, sbm);
    printf(" C+\t\t %d\t\t %.1f \n", cp, scp);
    printf(" C\t\t %d\t\t %.1f \n", c, sc);
    printf(" C-\t\t %d\t\t %.1f \n", cm, scm);
    printf(" D+\t\t %d\t\t %.1f \n", dp, sdp);
    printf(" D\t\t %d\t\t %.1f \n", d, sd);
    printf(" D-\t\t %d\t\t %.1f \n", dm, sdm);
    printf(" F\t\t %d\t\t %.1f \n", f, sf);
    printf("---------------------------------------\n");
    printf(" Total number of students: %d \n", sum);
    printf(" Grade point average: %.2f \n", gpa);
    printf("
\n"); printf("


\n"); printf("\n"); printf("\"Powered\n"); } int main() { int i, num; class CRequest Request; chstrarray name_tmp, value_tmp; char *value; setvbuf(stdout, NULL, _IONBF, 0); num = Request.getFormNameValue(name_tmp, value_tmp); if(num == 0) { errorHandler("no name/value has been submitted\n"); } else if(num == -1) { errorHandler("not invoked through WWW-CGI\n"); } else if(num == -2) { errorHandler("no enough memory\n"); } value = Request.getForm("A"); if(isnum(value)) a = atoi(value); else errorHandler("A is not a valid integral number"); value = Request.getForm("score_A"); if(isnum(value)) sa = atof(value); else errorHandler("score_A is not a valid number"); value = Request.getForm("A-"); if(isnum(value)) am = atoi(value); else errorHandler("A- is not a valid integral number"); value = Request.getForm("score_A-"); if(isnum(value)) sam = atof(value); else errorHandler("score_A- is not a valid number"); value = Request.getForm("B+"); if(isnum(value)) bp = atoi(value); else errorHandler("B+ is not a valid integral number"); value = Request.getForm("score_B+"); if(isnum(value)) sbp = atof(value); else errorHandler("score_B+ is not a valid number"); value = Request.getForm("B"); if(isnum(value)) b = atoi(value); else errorHandler("B is not a valid integral number"); value = Request.getForm("score_B"); if(isnum(value)) sb = atof(value); else errorHandler("score_B is not a valid number"); value = Request.getForm("B-"); if(isnum(value)) bm = atoi(value); else errorHandler("B- is not a valid integral number"); value = Request.getForm("score_B-"); if(isnum(value)) sbm = atof(value); else errorHandler("score_B- is not a valid number"); value = Request.getForm("C+"); if(isnum(value)) cp = atoi(value); else errorHandler("C+ is not a valid integral number"); value = Request.getForm("score_C+"); if(isnum(value)) scp = atof(value); else errorHandler("score_C+ is not a valid number"); value = Request.getForm("C"); if(isnum(value)) c = atoi(value); else errorHandler("C is not a valid integral number"); value = Request.getForm("score_C"); if(isnum(value)) sc = atof(value); else errorHandler("score_C is not a valid number"); value = Request.getForm("C-"); if(isnum(value)) cm = atoi(value); else errorHandler("C- is not a valid integral number"); value = Request.getForm("score_C-"); if(isnum(value)) scm = atof(value); else errorHandler("score_C- is not a valid number"); value = Request.getForm("D+"); if(isnum(value)) dp = atoi(value); else errorHandler("D+ is not a valid integral number"); value = Request.getForm("score_D+"); if(isnum(value)) sdp = atof(value); else errorHandler("score_D+ is not a valid number"); value = Request.getForm("D"); if(isnum(value)) d = atoi(value); else errorHandler("D is not a valid integral number"); value = Request.getForm("score_D"); if(isnum(value)) sd = atof(value); else errorHandler("score_D is not a valid number"); value = Request.getForm("D-"); if(isnum(value)) dm = atoi(value); else errorHandler("D- is not a valid integral number"); value = Request.getForm("score_D-"); if(isnum(value)) sdm = atof(value); else errorHandler("score_D- is not a valid number"); value = Request.getForm("F"); if(isnum(value)) f = atoi(value); else errorHandler("F is not a valid integral number"); value = Request.getForm("score_F"); if(isnum(value)) sf = atof(value); else errorHandler("score_F is not a valid number"); sendGPA(); exit(0); }