<HTML>
 <head><meta http-equiv="Content-Type"
 content="text/html; charset=big5" /></head>

<BODY bgcolor=#ccffaa>
<font color=blue size=4><b>


<pre><font color=red>
  Ъ`N: nDШ e3.nctu.edu.tw DQת̷ӳWw post,
  B Subject: B Subject: LAB06 from ǸmW
  H󤺮eO߱o, L]ARunning Script PaLine numbers{Xɰƥ</font>
LAB06  LAB05  Java אּ Applet, üg@² HTML PtX
<font color=red>
Due: 2011/04/10 Sunday 23:59 (: YewgnhoD²)
Purpose: F Applet P Application {ഫ`Nƶ
Description:
       LAB05  GUI Java אּ Applet, üg@² HTML PtX
      `Ng Java {MiH@ Java Application <font color=blue>
      pGAg GUI  Application ΦnߺD, 
      nאּ Applet ]², jӥib 20 ::-)  
      ƦܧAibWg LAB05 wgpߧFo LAB06 ! </font>
          Applet אּ Application ² ! <font color=darkBlue>
      OѤF Application _IO main,  Applet _IO init,  start
      `N Applet Oq Panel XRӪ, ҥH Applet 
      Default Layout Manager O FlowLayout, ]NO add ih
      Applet Oάy[J覡, 
      YnΨ䥦\覡h setLayout( ), 
       setLayout( ) ѼƬOY Layout manager . </font>
          pGAwgoD, ж}lUgD,
      Ug Javascript O{gb̭, ]jPǨSgL,
      |nhɶ, ĳI}l! ܤ֥iHAbtW²!
      (̦nݧڵqqHBullcows C cowBull.htm P hello.txt) 
</font> SLĳmߦpbtWإߧA!(ݤUgLAB07)
<font color=black size=3>
LAB04_05_06_07_08 ҵ{
  *** D@]AgmD: Lab04, Lab05, Lab06, Lab07, Lab08
  Ѧҩҵd: 
     http://www.cs.nctu.edu.tw/~tsaiwn/oop/03_Labs/Lab04/
     a. C++ gҵ{ (uΨ C++ @Ǩǥ\) idc.cpp
     b. º C gҵ{ idcheck.c  (iLX id Ҧ~)

   * ѦҤWǴPҦD
     <a target=_blank href="http://www.cs.nctu.edu.tw/~tsaiwn/introcs/story/idcheck.htm">
     http://www.cs.nctu.edu.tw/~tsaiwn/introcs/story/idcheck.htm </a>
     ΦۦW䨭ҽsX, FѦpP_@ӨҸXOXk?

   * JӬsҵd, UˬdPp⪺ statements

   * dҤrഫƦrOĥ table look up (dk)
     s{X, ҦHno˰?
      Yo˰? ٦Ǥ|gkҿk?

   * C++ dҵ{u|LX@ؿ~..  ҭYn@ӿJ ID LX
     Ҧi઺~nק?  (QXNCd) </font>
<font color=grey>
(1)LAB04  mߥ Java Application gXҵ{
   gXS  GUI Yi, NO rNn (²:)
  ĳD{u new ۤv, uˬdu@gbO functionp testID():
  ]A class O class IDCheck { //...  D{:
        IDCheck me = new IDCheck( );
        me.testID( );
     }// main(
     void testID( ) { // C  int main( ); W٥i int main()
        //...
     }
(2)LAB05  LAB04  Java אּ GUI ( Frame, Button, TextField)
   ib class Τ@ Frame Φۤv extends java.awt.Frame
</font><font color=red>
(3)LAB06  LAB05  Java אּ Applet, üg@² HTML PtX
   `Ng Java {MiH@ Java Application
</font>
(4)LAB07 mߥκ(HTML) + JavaScript gXҵ{
   `N JavaScript O Java, oӴNu@ HTML 
   hݤ@Ǻ˵ ==> lX Niݨ@ JavaScript 
   {unݴXӺN|,  JavaScript , oݬݴN: 
http://residence.educities.edu.tw/brencar/JsTeach/JsTeach_grammar.html
   γo̦ykPо:  http://www.w3schools.com/jS/
   AMۤv gogle.com d JavaScript о
</font> <font color=darkRed>
(5)LAB08 ҵ{(Javag²{)
     LAB04  Java application 令(ΧAgӧ),
     tXڵ TCP Server dҵy@ק, ft, NܦF!</font>
<font color=Red>
(6)Extra credit:
   mߥκ(HTML) + CGI { gXҵ{,
   YJ ID e Server ݥ CGI {P_ҸXO_Xk
   A⵲Gκe^ Browser.
   `Nҿ CGI {O|b Server ݰyg{
   i google.com "FORM P CGI"
   * A CGI {iH C  PERL Ψ䥦Awy
   * ]i PHP  䥦p ASP, JSP
   `No ID ˬdu@Ob Server , Ob client ݪ Browser
Ѧ: http://webdesign.about.com/od/cgi/ss/aa022299.htm
      http://www.ck.tp.edu.tw/~thyu/perl-cgi-faq/pcp_faq.html
      
     Φۤv gogle.com  FORM CGI о
</pre>
You are the

<!-- Start of SimpleHitCounter Code -->
<!--
<div align="center"><a href="http://www.simplehitcounter.com" target="_blank">
------>
<img src="http://simplehitcounter.com/hit.asp?uid=726868&f=16711680&b=65280" border="0" height="24" width="88" alt="free hit counters">
<!------
</a><br><a href="http://www.simplehitcounter.com" target="_blank"><font size="-3">free hit counters</font></a></div>
-------->
<!-- End of SimpleHitCounter Code -->

-th visitors to this page.

</pre>
<hr size=3 color=red>
<font color=red size=5> idcheck.c  (LЬLAB04ؿ)
</font>
<font color=blue size=4><b><pre>
     1	//idcheck.c -- by tsaiwn@csie.nctu.edu.tw
     2	//gcc idcheck.c
     3	//gӵ{iHˬdҸXO_T
     4	//Extra credit: J 999 hͤ@ӥiΪXkҸX
     5	////////////
     6	#include &lt;stdio.h>
     7	#include &lt;ctype.h>
     8	void generateID( ), squeeze(char*); // ŧi function 
     9	int testID(char*);  // d稭ҦUإi઺~ öǦ^~NX
    10	void printError(int code); // print error message according code
    11	
    12	// `N Java ݭnŧi, ]b class SY 
    13	
    14	int main( ) {
    15	   static char id[99];  // 'a :-) Ҥ~ 10 X 
    16	   int code = 0;   // ΨӰO~NX 
    17	   while(38 == 38) {   // for( ;; ) {
    18	       printf("пJҸX Input ID: ");
    19	       fgets(id, sizeof(id), stdin); // CŪJ  id
    20	       // check EOF 
    21	       if(feof(stdin)) break;  //EOF == ^D in Unix; ^Z on DOS/Window
    22	       squeeze(id); // Ҧťճh  white space
    23	       //printf("strlen(id)=%d\n", strlen(id));
    24	       if(strcmp(id, "-1") == 0) break; //Java  id.equals("-1")
    25	       if(strcmp(id, ".") == 0) break; 
    26	       if(strcmp(id, "quit") == 0) break; 
    27	       if(id[1] == 'U') break;  // QUIT ?  // Java  id.charAt(1)==
    28	       if(strcmp(id, "999") == 0) {generateID( ); continue; }
    29	       code = testID(id);  // o~N, 0 ܵL :-)
    30	       printf(" ID %s is ", id);
    31	       if(code==0) printf(" OK.\n");   // LXoXT 
    32	       else {
    33	          printf(" Error ID! Reason(s):\n");
    34	       }//if
    35	       printError(code); // ̾ code LT 
    36	   }// while(
    37	   printf("\r\nThank you and bye bye!\n");
    38	   return 0;
    39	}//main(
    40	
    41	//  squeeze(char*) onΪ function, ] C {wS,ۤvg:
    42	//`N NewLine ] white space, ҥHoƤ]|ڪ '\n' !
    43	// ] fgets ŪJƧڦ NewLine; C++  getline hS NewLine!
    44	void squeeze(char*p) {    // Ҧ white space; Java np󰵩O?
    45	   char*p2 = p;    
    46	   if(*p == 0)return;   // NULL terminated, @}lNr굲: Ŧr
    47	   while(*p2 !=0) {  // white space Ь  K&amp;RҥĤGP B
    48	      if(isspace(*p2)) { ++p2; continue; }  // ᱼ white space
    49	      *p = *p2; 
    50	      p++; ++p2;   // advance one char
    51	   }//while
    52	   *p = *p2;  // 0 == '\0'   == NULL 
    53	}// squeeze(
    54	
    55	//  int testID(char* id) : ̾ڨҳWhd id Ǧ^~NX
    56	int yy[ ]={ 10,11,12,13,14,15,16,17, 34,  //ABCDEFGH I
    57	            18,19,20,21,22,  35,   //JKLMN O
    58	            23,24,25,26,27,28,     //PQRSTU
    59	            29,32,30,31, 33 };     //VWXY Z 
    60	int checkSum(char * id){  //  checkSum  testID(id)  
    61	   int sum, i;    // ]sXSӦr, κ⪺nܦh if(...
    62	   int ynum;
    63	   // άdk table look up dXrƸ²檽ı !
    64	   // حӪ int yy[ ] = { 10, 11, 12, 13, ...};  // ӳWw AB..
    65	   // M Let i = id[0]rh 'A' o 0..25
    66	   // AdX yy[i] ӥ: ynum = yy[i];  // 10..OO35..ZO35 !!
    67	   i = id[0] - 'A';
    68	   ynum = yy[i];
    69	   sum = ynum/10 + 9* (ynum%10);  // weight 1, 9, [876543211]
    70	   for(i=1; i&lt;=8; ++i) sum += (id[i] - '0') *(9-i);  // 87654321
    71	   sum += (id[9] - '0') ;  // *1   ˬdX weight ]O  1
    72	   return sum;   // ڥutdX checksum
    73	}//checkSum(
    74	
    75	int testID(char* id) {   //Ǧ^~NX, i bitwise "&amp;" BX 
    76	   int i, ans = 0, sum=0;  // sum ΨӺ weighted check sum
    77	   id[0] = toupper(id[0]); // ରjg
    78	   if(!isalpha(id[0])) ans = ans + 1;  // 1   ans = ans | 1;
    79	   if(id[1] != '1'  &amp;&amp; id[1] != '2') ans += 2; // 2  kͤk?
    80	   if(strlen(id) &lt; 10) ans += 4;   // ӵu
    81	   if(strlen(id) > 10) ans += 8;   // Ӫ
    82	   for(i=1; i&lt;=9; ++i) if(!isdigit(id[i])) ans = ans | 16; // DƦr
    83	   if((ans&amp;16) != 0) return ans;  // DƦrΦA check sum  
    84	   if(ans != 0) return ans;  // N..NΦA check sum  
    85	   sum = checkSum(id);   // ]SLǦrNX check sum
    86	   if(sum%10 != 0) ans |= 32;   // H 10 oɤ~ 
    87	   return ans;
    88	}// testID(
    89	
    90	char what[ ][88]={ "!!oOXkҦr", //T0
    91	                "..Ĥ@ӦrOr!",    // T1
    92	                "AOĤTʶ?",            // T2
    93	              "ӵuF!X!!",      // T3
    94	              "|ohX!!",     // T4
    95	            "!!ӬOƦr!!",   // T5     
    96	            "ƦrXӬO??"     // T6
    97	                };  // do NOT forget the ";"
    98	// String what[ ] = { ... };  // in Java 
    99	void printError(int code) {  // print all errors found use bitwise and
   100	   int i, yy[ ] = {0, 1, 2, 4, 8, 16, 32, 64, 128};
   101	   if(code == 0) { printf("%s\n", what[0]); return; }
   102	   for(i=1; i &lt;= 6; ++i)if((code&amp;yy[i]) != 0)printf("%s\n", what[i]);
   103	}// printError(
   104	
   105	void generateID( ) {
   106	   char id[11]={ 0 };   // | 0  (NULL)  ==  '\0'   == 0
   107	   int i;
   108	   id[0] = 'A' +  rand( ) % 26;  // 'A' .. 'Z'
   109	   id[1] = '1' + rand( ) % 2;   // '1' .. '2'
   110	   for(i=2; i&lt;=8; ++i) {
   111	     // ζüƥͥX id[2] .. id[8]
   112	     id[i] = '0' + rand( )%10;   // '0' .. '9'
   113	   } //
   114	   /// id[9] OˬdX, n, i '0' s checkSum( )Aվ 
   115	   id[9] = '0';
   116	   i = checkSum(id);   // ɥ i Ӧs  checkSum
   117	   i = i % 10;
   118	   if(i != 0) id[9] = '0' + (10-i);     // ˬdX 
   119	   printf(" Good ID: %s\n", id);   // legal ID now
   120	}// generateID(

</pre>
</pre>
<font color=blue size=5>
<!-------
<a href="http://www.cs.nctu.edu.tw/~tsaiwn/oop/03_Labs/Lab06/">
^oӧ@~ؿ(LAB06)
</a>
&nbsp; &nbsp; &nbsp; 
-------------->
</pre> </pre>

<hr size=2 color=blue>
<a href="http://www.cs.nctu.edu.tw/~tsaiwn/oop/03_Labs/Lab06/Lab06.jar">
o LAB06 YLab06.jar (zip榡)
</a>
<br><br>

<a href="http://www.cs.nctu.edu.tw/~tsaiwn/oop/03_Labs/Lab04/hint_C_to_Java.htm">
More hints to translate C programs into Java programs
</a>
<br><br>


<font color=red size=3>
 BATNUM s諸Java: <font size=5>
<a href="http://www.cs.nctu.edu.tw/~tsaiwn/oop/03_Labs/Lab04/bat7.java">
 bat7.java </a>
&nbsp; &nbsp; + &nbsp;
<a href="http://www.cs.nctu.edu.tw/~tsaiwn/oop/03_Labs/Lab04/c2java.java">
 c2java.java  </a></font>(iΦb Cאּ Java²Ƥu@) </font>

<br> <br>
<a href="http://www.cs.nctu.edu.tw/~tsaiwn/oop/03_Labs/Lab05/idcheck.txt"> Reference answer to LAB04
( idcheck.c ==> idcheck.java  Java Application; |Ψ c2java.java)
</a>
<hr size=4 color=blue>


<br> <br>
[DΪ:  PERL g CGI 
<a href="http://www.cs.nctu.edu.tw/~tsaiwn/oop/03_Labs/Lab04/for_Extra_credit/PerlCGI_FAQ.html"
  target=_blank>

 FAQ(`ݰD)
 ./for_Extra_credit/
</a>
 &nbsp; &nbsp; &nbsp;


<br>
<br>
&nbsp; &nbsp; &nbsp;
<a href="http://www.cs.nctu.edu.tw/~tsaiwn/oop/03_Labs/">
^@~ؿ
</a>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
<a href="http://www.cs.nctu.edu.tw/~tsaiwn/oop/">
^ҵ{ؿ
</a><br>
<hr color=red size=3>

<!------
 006LAB04567.txt         16-Mar-2010 22:21  9.6K  
 LAB06.jar               17-Mar-2010 19:40   43K  
 bat7.java               17-Mar-2010 19:31  5.9K  
 c2java.java             17-Mar-2010 19:29  1.4K  
 for_Extra_credit/       08-Mar-2010 22:47    -   
 idc.cpp                 08-Mar-2010 21:40  3.3K  
 idcheck.c               08-Mar-2010 21:58  4.9K  
 idcheck.java            17-Mar-2010 21:03  5.5K  
 idcheck.txt    
----------------------->
You are the
<img src="http://simplehitcounter.com/hit.asp?uid=726868&f=16711680&b=65280" border="0" height="24" width="88" alt="free hit counters">
-th visitors to this page.

</br><font color=blue size=5>


