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

<BODY bgcolor=#ccddff> 
<font color=blue size=4><b>
<pre><font color=red>
  Ъ`N: nDШ e3.nctu.edu.tw DQת̷ӳWw post,
  B Subject: LAB05 from ǸmW
 H󤺮eO߱o, L]ARunning Script PaLine numbers{Xɰƥ</font>

LAB05  LAB04  Java אּ GUI ( Frame, Button, TextField)
     ewƦۦoзN:-)
     `NkW X niH{! 
<font color=red>
Due: 2011/04/09 Saturday 23:59

Purpose: x GUI programming P Event handling H Listener
Hint: 
     (1) ⤧eڭ̻LGiGi*dҬsMN|GUI+Event handling!
       WindowListener  windowClosing; H
      ActionListener  actionPerformed аѦҧڵd:
      http://www.cs.nctu.edu.tw/~tsaiwn/oop/  ̭lؿ java
      <a href="http://www.cs.nctu.edu.tw/~tsaiwn/oop/java/03_sample_JavaPrograms/01_gigi/" target=_blank> java/03_sample_JavaPrograms/01_gigi/ </a>  ̭U GiGi*.java
     (2) java.awt.TextField     javax.swing.JTextField
         ۤvd java.sun.com  API
             javap javax.swing.JTextField  ݬ<font color=red>
         (Hint: Υ̪  .getText( ) o̭)</font>
        ͥXXkҥi TextArea, 
         TextField, Ʃ Button i.
     (3) iAݬݩҵ java d:
http://www.cs.nctu.edu.tw/~tsaiwn/oop/java/03_sample_JavaPrograms/
      ̭ӤlؿGɮ: (O Application + Applet)
          11_grid/Grid.java     (Ψ JTextfield)
            M 
          13_soundwin/SoundWin.java    (Ψ TextArea, TextField)
</font>
<font color=darkGreen> PǰݻiiHnΧ諸, ۤvgii?
Mi, ۤvQۤvgn, Цb߱o̻ۤvg, [:-)!
</font>
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 size=4 color=Blue> <font size=2 color=grey>
(1)LAB04  mߥ Java Application gXҵ{
      gXS  GUI Yi, NO rNn!
  oD²:)  idcheck.c ӤjXNiHn :-) (nns@U!) 
  ĳD{u new ۤv, uˬdu@gbO functionp testID():
  ]A class O class IDCheck { //...  D{: <font color=darkRed>
        IDCheck me = new IDCheck( );
        me.testID( );
     }// main(   // oO Java  main !
     void testID( ) { // C  int main( ); <font color=red>W٥i int main()  </font>
        //...
     } // testID(  </font>
  Y٬Oӷ|, ѦҥؿUHlؿ sample_BATNUM ̭ C P Java
  רOs C ]٤ӷ|nJӬݸ̭Ud stepwise refinementL{!
  M]n bat6ok.c P bat6ok.java nnӤ@U! </font> <font color=red>
<font color=blue size=4>
(2)LAB05  LAB04  Java אּ GUI ( Frame, Button, TextField)
   ib class Τ@ Frame Φۤv extends java.awt.Frame
</font> <font color=red size=5>
HUwiӦUgm: </font>
(3)LAB06  LAB05  Java אּ Applet, üg@² HTML PtX
   `Ng Java {MiH@ Java Application

(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=726865&f=16711680&b=16776960" border="0" height="24" width="83" alt="">

<!--
</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>
<hr size=3><font size=5>
<a href="./idcheck.txt"> Reference answer to LAB04 
( idcheck.c ==> idcheck.java  Java Application)
</a>
<hr size=3 color=blue>
<a href="./LAB05.jar">
LAB05 YLAB05.jar (zip榡)
</a>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br>
<font color=red size=3>
 BATNUM s諸Java: <font size=5>
<a href="./bat7.java">
 bat7.java </a>
&nbsp; &nbsp; + &nbsp;
<a href="./c2java.java">
 c2java.java  </a></font>(iΦb Cאּ Java²Ƥu@) </font>

<br>
<br>
 PERL g CGI 
<a href="./for_Extra_credit/PerlCGI_FAQ.html"
  target=_blank>

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

<hr size=3 color=red>
</pre>
<font color=blue size=5>

<!--
<a href="http://www.cs.nctu.edu.tw/~tsaiwn/oop/03_Labs/Lab05/">
^oӧ@~ؿ(LAB05)
</a>

&nbsp; &nbsp; &nbsp; 
------>



&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>

You are the

<img src="http://simplehitcounter.com/hit.asp?uid=726865&f=16711680&b=16776960" border="0" height="24" width="83" alt="">

-th visitors to this page.

