topical media & game development
lib-ch-example-sample-gpa.cgi / cgi
#!/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 <cgi.h>
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("<TITLE>GPA Calculator Failed</TITLE>\n");
printf("<body bgcolor=\"#FFFFFF\" text=\"#000000\" vlink=\"#FF0000\">\n");
printf("<H3>GPA Calculator Failed</H3>\n");
printf("Your GPA information has not been submitted to GPA Calculator,\n");
printf("because \%s. ",reason);
printf("<A HREF=\"/chhtml/toolkit/demos/cgi/sample/gpa.html\">Try again.</A>\n");
printf("<p>
\n");
printf("<A HREF=\"http://www.softintegration.com\" target=\"_top\">\n");
printf("<img src=\"/chhtml/images/poweredbych.gif\" alt=\"Powered by Ch\"></A>\n");
exit(1);
}
void sendGPA() {
printf("Content-type: text/html\n\n");
printf("<TITLE>GPA Calculator Report</TITLE>\n");
printf("<body bgcolor=\"#FFFFFF\" text=\"#000000\" vlink=\"#FF0000\">\n");
printf("<H3>GPA Calculator Report</H3>\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("<PRE>\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("</PRE>\n");
printf("<p>
\n");
printf("<A HREF=\"http://www.softintegration.com\" target=\"_top\">\n");
printf("<img src=\"/chhtml/images/poweredbych.gif\" alt=\"Powered by Ch\"></A>\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);
}
(C) Æliens
20/2/2008
You may not copy or print any of this material without explicit permission of the author or the publisher.
In case of other copyright issues, contact the author.