You are on page 1of 73

i Hc Cng Ngh ng Nai

Khoa Cng Ngh Thng Tin

Khi: i Hc V Cao ng
Nm 2013

Hng dn: Bi tp thc hnh c chia theo Module Mi Module c thit k cho thi lng l 312 tit thc hnh ti lp vi s hng dn ca ging vin. Ty theo s tit phn b, mi tun hc c th thc hin nhiu Module. Sinh vin phi lm tt c cc bi tp trong cc Module tun tng ng. Nhng sinh vin cha han tt phn bi tp ti lp c trch nhim t lm tip tc nh. Cc bi c du (*) l cc bi tp nng cao dnh cho sinh vin kh gi i. Trang 1

i Hc Cng Ngh ng Nai

Khoa Cng Ngh Thng Tin

MC LC
Module 1: Program and Statement ................................................................................. 3 Module 2: Objects and Primitive data .......................................................................... 22 Module 3: Writing Class ................................................................................................ 29 Module 4: Enhancing Class ........................................................................................... 38 Module 5: Array and Collections .................................................................................. 43 Module 6: Inheritance .................................................................................................... 48 Module 7: Exception IO Stream ................................................................................. 51 Module 8: Graphic User Interface ................................................................................ 54

Trang 2

i Hc Cng Ngh ng Nai

Khoa Cng Ngh Thng Tin

Module 1: Program and Statement


Ni dung kin thc thc hnh:
+ S dng JDK bin dch v thc thi chng trnh. + S dng Eclipse son tho, bin dch v thc thi chng trnh. + Khai bo v s dng bin, i tng. + S dng cc cu trc iu khin. + Nhn d liu t i s hm main.

Bi tp 1:
Mc ch: - Download v ci t c JDK. Yu cu: - Hy ti v ci t JDK Hng dn: bin dch c cc source code Java, my tnh ca chng ta phi c my o Java c c my o Java cc bn vo link bn di download b JDK http://www.oracle.com/technetwork/java/javase/downloads/index.html Sau khi click vo ng link bn trn, danh mc JAVA Kit s hin th nh hnh bn di:

Trang 3

i Hc Cng Ngh ng Nai

Khoa Cng Ngh Thng Tin

chn JDK Download, sau khi click chn Download th mt mn hnh mi s c hin th ra, trong mn hnh mi ny ty vo cu hnh ca my tnh m chng ta chn tp tin Download cho hp l.

Gi s rng my tnh ca bn 32bits, bn s chn Windows x86 load. Sau khi load v ci t thnh cng bn vo Control Panel kim tra xem my o Java c ci t vo my hay cha. Nu c biu tng Java nh hnh bn di th coi nh bn ci t thnh cng:

Trang 4

i Hc Cng Ngh ng Nai

Khoa Cng Ngh Thng Tin

Bi tp 2:
Mc ch:
-

Thit lp c bin mi trng chy java c ch command-line.

Yu cu:
-

Hy thit lp bin mi trng chy c java c ch command -line

Hng dn:

1. Bm chut phi vo biu tng Computer/ chn Properties

2. Mt ca s mi hin ln, chng ta chn Advanced System Settings

Trang 5

i Hc Cng Ngh ng Nai

Khoa Cng Ngh Thng Tin

3. Ca s System Properties s hin th ra, chng ta vo tab Advanced, click chn button Environment VariablesCa s Environment variables s hin th nh hnh bn di:

4. Trong mc System variables, click chn button New.

Mc Variable name, chng ta nhp vo bin JAVA_HOME Mc Variable value, chng ta copy ng dn ci t JDK vo y, trong v d ny th JDK c ci t nh hnh minh ha. Tc l nu my ca bn ci JDK u th copy paste ng dn vo mc ny.

Trang 6

i Hc Cng Ngh ng Nai

Khoa Cng Ngh Thng Tin

Sau khi chn OK, bn quan st trong vng System Variables, bin JAVA_HOME v gi tr ca n s xut hin nh hnh minh ha bn di:

Trang 7

i Hc Cng Ngh ng Nai

Khoa Cng Ngh Thng Tin

5. Bc tip theo, cc bn tm ti bin Path trong mc System variables, click chn Edit:

Trong mc Variable value, cc bn di chuyn ti cui, nhp vo cc gi tr nh hnh minh ha : ;%JAVA_HOME%\bin;.;

6. Kim tra li cu hnh c chnh xc hay khng: kim tra xem my tnh ca bn ang ci JDK version bao nhiu, vo Start/ Run. Hoc g t hp phm Windows+R hin th ca s Run, trong ca s ny cc bn g vo lnh cmd ri nhn phm Enter.

Trang 8

i Hc Cng Ngh ng Nai G java version kim tra JDK version. G javac version kim tra javac version.

Khoa Cng Ngh Thng Tin

Bi tp 3:
Mc ch: - Vit c chng trnh Java bng notepad v bin dch bng command - line Yu cu: 1. nh on code sau s dng Notepad: class Welcome { public static void main(String []arg) { System.out.println("\nMy first Java Program"); } } 2. Chn menu File Save As v nh tn file Welcome.java (ging tn ca class) 3. Chn Start Run v nh lnh cmd vo trong hp thoi Run 4. Click vo button OK ca s command prompt xut hin. Thay i ng dn th mc lu file trong bc 3. 5. Bin dch chng trnh s dng lnh javac 6. Chy chng trnh s dng java Hng dn:

Bi tp 4:
Mc ch:
-

S dng c Eclipse

Trang 9

i Hc Cng Ngh ng Nai Yu cu:

Khoa Cng Ngh Thng Tin

1.Khi ng Eclipse Sau khi download v gii nn, cc bn khi ng Eclipse s c giao din nh hnh bn di:

thit lp Perspective: Vo menu Window / Open Perspective / chn Other

Trong ca s Open Perspective cc bn chn Java sau nhn nt OK. - Cch to Java Project:

Trang 10

i Hc Cng Ngh ng Nai

Khoa Cng Ngh Thng Tin

-Vo menu File / New / Java Project

Trong mc Project name ca ca s New Java Project: Bn nhp tn project vo mc ny, sau nhn Finish. By gi ta tin hnh to 1 class tn l HelloTeo113. Cc bn bm chut phi vo Project / New/ chn Class (xem hnh minh ha bn di).

Trang 11

i Hc Cng Ngh ng Nai

Khoa Cng Ngh Thng Tin

Ca s New Java Class s xut hin nh bn di:

Nhn Finish to Class. Cc bn quan st trong hm main, y Ta vit dng lnh: System.out.println("HI...I'm Teo 113"); Hm ny c tc dng xut d liu ra mn hnh trn nhng dng khc nhau.

Trang 12

i Hc Cng Ngh ng Nai

Khoa Cng Ngh Thng Tin

bin dch v thc thi chng trnh, ta vo menu Run/Run (hoc nhn t hp phm Ctrl+ F11)

Sau khi chn Run, cc bn quan st ca s Console bn di, kt qu s c hin th ra nh hnh minh ha.

Ch : Nu nh trong Project ca bn c cha Font ch ting vit th nh cu hnh dng UTF-8

Trang 13

i Hc Cng Ngh ng Nai

Khoa Cng Ngh Thng Tin

T menu Project/ chn Properties (xem hnh minh ha bn trn). Sau khi chn Properties th ca s Properties for test s hin th ra ( y test l tn Project). Cc bn chn Resource/ chn UTF-8 nh hnh bn di, sau chn OK thit lp cu hnh.

Mc nh mi mt Project, Eclipse thit lp mc nh Build Automatically, Nu trong c trnh bin dch m xut hin nhng li m chng ta khng hiu bit nguyn nhn v sao th ta c th vo menu Project/ Clean

Ca s Clean s xut hin nh hnh bn di, nu mun clean ton b Project th bn chn Clean all projects, cn nu mun ch clean nhng project ring l th bn chn clean projects selected below. Nhn OK tin hnh Clean.

Trang 14

i Hc Cng Ngh ng Nai

Khoa Cng Ngh Thng Tin

Cc bn rng, nu nh mun t mnh Build Project th hy unchecked Build Automatically. Lc ny cc mc Build All, Build Projects c hin th cho php chng ta chn la chng.

Mt s editing template hay dng: G sysout sau nhn Ctrl-Spacebar s cho System.out.println(); G main sau nhn Ctrl-Spacebar s cho public static void main(String[] args) {} . tm hiu thm, vo menu Window->Reference

Trang 15

i Hc Cng Ngh ng Nai

Khoa Cng Ngh Thng Tin

Cc phm tt hay dng: Trong Eclipse, vo menu Help->Key Assitst hoc nhn t hp Ctrl-Shift-L hin th. 1. Thc thi chng trnh: Nhn chu phi ln lp cn chy, chn menu Run As-> Java Application.

2. M Project trong Eclipse Eclipse khng h tr m project trc tip nn bn khng c kiu double-click-for open thng thy, m bn phi import project vo workspace nh sau: Vo menu File->Import ri chn nh hnh

Trang 16

i Hc Cng Ngh ng Nai

Khoa Cng Ngh Thng Tin

Nhn Next. Sau nhn nt Browse tm n th mc cha project.

Chn Project cn import ri nhn Finish 3. Export file jar t chy(executable jar file) trong eclipse Nhn chut phi ln Project cn export, chn Export.

Trang 17

i Hc Cng Ngh ng Nai Chn Runnable JAR file nh hnh. Nhn Next

Khoa Cng Ngh Thng Tin

Chn Lauch configuration. Chn th mc cha cng nh tn file jar. Nhn Finish. Thc thi jar file di dng command-line:

Nu Project ca bn c ch GUI th bn c th m file jar ca bn bng Java Plaform SE library nh hnh.

Hng dn: Trang 18

i Hc Cng Ngh ng Nai

Khoa Cng Ngh Thng Tin

Bi tp 5:
Mc ch:
-

Thao tc vi ton t trong Java.


import java.util.*; public class MathOps { //method to print a string and an int static void printInt(String s, int i) { System.out.println(s + " = " + i); } //method to print a string and a float static void printFloat(String s, float f) { System.out.println(s + " = " + f); } public static void main(String[] args) { Random random = new Random(); int i, j, k; //Choose value from 1 to 100 j = random.nextInt (100) + 1; k = random.nextInt (100) + 1; printInt("j", j); printInt("k" , k); i = j + k; printInt("j + k", i); i = j - k; printInt("j - k", i); i = j/ k; printInt("j/k", i); i = j * k; printInt("j * k", i); i = j % k; printInt("j % k", i); j %= k; printInt("j %= k" , j); // Floating-point number tetts float u, v, w; // also applies to doubles v = random.nextFloat (); w = random.nextFloat (); printFloat("v", v); printFloat("w", w); u = v + w; printFloat("v + w", u); // contd u = v - w; printFloat("v - w", u); u = v * w; printFloat("v * w", u); u = v / w; printFloat("v/w", u); //The following also works for char, byte, short, int, long, and double u += v; printFloat("u += v", u); u -= v; printFloat("u -= v", u); u *= v; printFloat("u *= v", u); u /= v; printFloat("u /= v", u); }

Yu cu:

Kt qu c xut ra l g? Gii thch cc ton t trn. Hng dn: Trang 19

i Hc Cng Ngh ng Nai

Khoa Cng Ngh Thng Tin

Bi tp 6:
Mc ch:
-

Thao tc vi ton t t ng tng gim

Yu cu: public class AutoInc_DecOps { public static void main(String[] args) { int i = 1; System.out.println("i : " + i); System.out.println("++i : " + ++i); // Pre-increment System.out.println("i++ : " + i++); // Post-increment System.out.println("i : " + i); System.out.println("--i : " + --i); // Pre-decrement System.out.println("i-- : " + i--); // Post-decrement System.out.println("i : " + i); } } Kt qu c xut ra l g? Gii thch. Hng dn:

Bi tp 7:
Mc ch:
-

Thao tc vi ton t logic

Yu cu:
import java.util.*; public class Rel_LogOps { public static void main(String[] args) { Random random = new Random(); int i = random.nextInt (100); int j = random.nextInt (100); // Using Relational Operators System.out.println("i = " + i); System.out.println("j = " + j); System.out.println("i > j is " + (i > j)); System.out.println("i < j is " + (i < j)); System.out.println("i >= j is " + (i >= j)); System.out.println("i <= j is " + (i <= j));

Trang 20

i Hc Cng Ngh ng Nai


System.out.println("i == j is " + (i == j)); System.out.println("i != j is " + (i != j)); //Using Logical Operators System.out.println("(i < 10) && (j<10) is " + ((i<10)&&(j<10)) ); System.out.println("(i < 10) || (j<10) is " + ((i<10)||(j<10)) ); } } Kt qu c xut ra l g? Gii thch

Khoa Cng Ngh Thng Tin

Hng dn:

Bi tp 8:
Mc ch:
-

n luyn li cu trc iu khin

Yu cu: a) b) c) d) e) Vit chng trnh in ra tng ca 10 s chn u tin (s dng vng lp for hoc while) Vit chng trnh in ra nhng s l t 1 n 99. Vit chng trnh xut ra tng cc s l bi s ca 7 (t 1 n 100) Vit chng trnh in ra tng 1+2+3.+n vi n c nhp t tham s command line Vit chng trnh in ra tng 1+3+5.+n nu n l s chn, 2+4+6+.n nu n l s l. Gi tr n c nhp vo t tham s command line

f) Vit chng trnh in ra gi tr ln nht v nh nht trong mt dy cc gi tr user nhp vo t tham s command line. g) Vit chng trnh gii phng trnh bc 1 vi h s a, b c nhp vo bi user t tham s command line. h) Vit chng trnh c mt gi tr nguyn t bn phm v in ra s l s chn, l hoc zero i) Vit chng trnh in ra bi s ca 3 t 300 n 3 j) Vit chng trnh in ra s ln k t a xut hin trong mt chui. k) V cc hnh bn di:

Hng dn: Trang 21

i Hc Cng Ngh ng Nai

Khoa Cng Ngh Thng Tin

Module 2: Objects and Primitive data


Ni dung kin thc thc hnh:
-

Dng lp Scanner nhp d liu S dng lp Math S dng lp String, lp Character Vit hm (method) Vit hm overload

Bi tp 1:
Mc ch:
-

S dng lp Scanner nhp s. nh dng xut. S dng lp Math.

Yu cu: Vit chng trnh tnh th tch v din tch b mt ca mt hnh cu vi bn knh r nhp vo (r>=0). Kt qu ch cn ly 4 ch s thp phn. Cng thc tnh: Th tch = Din tch b mt = 4PI*r2 HD: Dng lp DecialFormat nh dng kt qu vi 4 ch s thp phn: DecialFormat df = new DecialFormat ("0.####"); Hng dn:

Bi tp 2:
Mc ch: Yu cu: Vit chng trnh cho nhp vo kch thc 3 cnh a, b, c ca mt tam gic. Tnh v xut din tch ca tam gic, s dng cng thc Heron. Trc khi tnh phi kim tra xem 3 s a, b, c c lp thnh mt tam gic khng (a, b, c lp thnh tam gic khi tng 2 s bt k lun ln hn s cn li). HD: Din tch = Hng dn: , bit s bng 1/2 chu vi tam gic. Trang 22

i Hc Cng Ngh ng Nai

Khoa Cng Ngh Thng Tin

Bi tp 3:
Mc ch: Yu cu: Vit chng trnh tnh khong cch gia 2 im c ta (x1,y1) v (x2,y2), bit cng thc tnh khong cch l: distance = Hng dn:

Bi tp 4:
Mc ch: + Nhp chui. + Ly tng k t trong chui. Yu cu: Vit chng trnh cho nhp mt chui v in ra cc k t trong chui ra mn hnh, mi k t trn mt dng.
HD: dng hm charAt(int)

Hng dn:

Bi tp 5:
Mc ch: Yu cu: Vit chng trnh cho nhp mt chui v m s khong trng c trong chui . HD: dng hm isSpace(char) ca lp Character kim tra khong trng. Hng dn:

Bi tp 6:
Mc ch: Yu cu: Vit chng trnh cho nhp mt chui v in ra cc k t ch ci (a-z hoc A-Z) c trong chui. HD: dng hm isLetter(char) ca lp Character kim tra ch ci. Hng dn: Trang 23

i Hc Cng Ngh ng Nai

Khoa Cng Ngh Thng Tin

Bi tp 7:
Mc ch: - So snh 2 chui Yu cu: Vit chng trnh cho nhp vo hai chui, kim tra xem hai chui c bng nhau khng, khng phn bit ch hoa ch thng. Hng dn:

Bi tp 8:
Mc ch: - Ni chui Yu cu: Vit chng trnh cho nhp mt chui v mt s nguyn n. Chng trnh in ra mt chui mi l chui c ghp t n ln chui nhp. Nu n<2 th xut ra chui gc. V d nhp hi v 4, kt qu xut ra hihihihi. Hng dn:

Bi tp 9:
Mc ch: - Tch chui Yu cu: Vit chng trnh cho nhp vo mt chui, tch chui ny thnh cc chui con da vo khong trng, xut kt qu thnh tng dng. V d: nhp s = Xin Chao ban! Xut kt qu: Xin Chao ban! Hng dn:

Bi tp 10 :
Mc ch: - Vit hm Yu cu: Trang 24

i Hc Cng Ngh ng Nai

Khoa Cng Ngh Thng Tin

(i) Vit mt hm c tn square, hm c 1 tham s x kiu s thc. Hm ny tnh ton v tr v bnh phng ca x. (ii) a hm trn vo mt chng trnh v n c gi thc hin bi hm main. Test hm va vit bng cch thc hin vi ln, mi ln vi cc gi tr truyn khc nhau. Hng dn:

Bi tp 11:
Mc ch: Yu cu: Vit chng trnh trong c mt hm s nhn mt tham s nguyn, hm tr v gi tr false nu s l s chn, ngc li tr v gi tr true. Test hm va vit bng cch thc hin vi ln, mi ln vi cc gi tr truyn khc nhau. Hng dn:
-

Bi tp 12:
Mc ch: Yu cu: Vit chng trnh gii phng trnh bc hai ax2 + bx + c = 0, vit hm tnh delta. Hng dn:

Bi tp 13:
Mc ch: Yu cu: Vit hm alarm in ra cc chui Alarm!, mi chui trn mt dng. Hm alarm c mt tham s kiu s nguyn biu th cho s dng cn in, nu s ny nh hn 1 th in ra cu thng bo li. Test hm va vit bng cch thc hin vi ln, mi ln vi gi tr truyn khc nhau. Hng dn:

Bi tp 14:
Mc ch: Yu cu: Trang 25

i Hc Cng Ngh ng Nai

Khoa Cng Ngh Thng Tin

Vit hm sumRange, hm c hai tham s kiu s nguyn biu th cho khong gi tr. Nu tham s th hai nh hn tham s th nht th xut ra mt thng bo li v tr ra gi tr 0, ngc li hm tr v tng ca cc gi tr trong khong . Test hm va vit bng cch thc hin vi ln, mi ln vi cc gi tr truyn khc nhau. Hng dn:

Bi tp 15:
Mc ch: Yu cu: Vit hm countA, hm ny nhn mt tham s kiu String v tr v s ln xut hin k t A trong chui . Test hm va vit bng cch thc hin vi ln, mi ln vi gi tr truyn khc nhau. Hng dn:

Bi tp 16:
Mc ch: - Vit hm overload. Yu cu: (i) Vit hm average, hm c hai tham s kiu s nguyn, hm tr v gi tr trung bnh ca hai s . (ii) Overload hm average vi ba tham s nguyn, hm tr v gi tr trung bnh ca ba s . Test cc hm va vit bng cch thc hin vi ln, mi ln vi cc gi tr truyn khc nhau. Hng dn:

Bi tp 17:
Mc ch: Yu cu: Vit hm multiConcat, hm nhn mt tham s kiu String v mt s nguyn n, hm tr v mt chui mi l chui c ghp t n ln chui trong tham s. Nu n<2 th xut ra chui gc. V d gi hm multiConcat(hi,4) kt qu xut ra hihihihi. Test hm va vit bng cch thc hin vi ln, mi ln vi cc gi tr truyn cho hm khc nhau. Hng dn:

Trang 26

i Hc Cng Ngh ng Nai

Khoa Cng Ngh Thng Tin

Bi tp 18:
Mc ch: Yu cu: Vit chng trnh xut ra dy s Fibonacci, Yu cu phi vit 2 phng thc. Phng thc 1 dng tr v s Fibonacci ti v tr th k bt k. Phng thc 2 dng xut dy s Fibonacci t 1n. Dy Fibonacci : 1 1 2 3 5 8 13 21 34 - S Fib th k = (s Fib th k-1) + (s Fib th k-2), tc l 13 =8+5, 21=13+8 - 2 s Fib u tin trong dy lun lun l 1 Hng dn:

Bi tp 19:
Mc ch: Yu cu: Hy vit phng thc tn Panlyndrome nhn 1 tham s c kiu String v tr v true nu tham s l chui panlyndrome (chui panlyndrome l chui c chui o ngc bng chnh n, v d madam) Hng dn: public static boolean isPanlyndrome(String s) { for(int i=0;i<s.length();i++) { if(s.charAt(i)!=s.charAt(s.length()-i-1)) return false; } return true; }

Bi tp 20:
Mc ch: Yu cu: Vit mt hm t tn l NegativeNumberInStrings(String str). Hm ny c i s truyn vo l mt chui bt k, Hy vit lnh xut ra cc s nguyn m trong chui. V d: Nu nhp vo chui abc-5xyz-12k9l--p th hm phi xut ra c 2 s nguyn m l -5 v -12 Trang 27

i Hc Cng Ngh ng Nai Hng dn:

Khoa Cng Ngh Thng Tin

Bi tp 21:
Mc ch: Yu cu: Vit chng trnh chi game on s, m t game nh sau: - Khi to ban u ngi chi c 5 im - My t ng Random ngu nhin 1 s t 0->5 (s ny s khng xut ra, ch dng so snh vi s s m ngi chi on - Ngi chi on s, Nu on ng th + 1 im vo im khi to, ngc li -1 im (Ch l c xut thng bo khi ngi chi on trng hay on sai) - Khi ngi chi khng cn im no th thng bo Game Over - Nu ngi chi tch ly c 10 im th thng bo Congratulations! You Win! Hng dn: Random rd=new Random(); int so=rd.nextInt(6);

Bi tp 22:
Mc ch: Yu cu: Vit hm xut ra 5 hnh bn di (Vit 5 hm ring bit, mi hm cha 2 vng lp)

Hng dn:

Trang 28

i Hc Cng Ngh ng Nai

Khoa Cng Ngh Thng Tin

Module 3: Writing Class


Ni dung kin thc thc hnh:
-

Khai bo v s dng lp Vit cc lp vi mi quan h composition

Bi tp 1:
Mc ch:
-

Tm hiu cch vit lp trong Java.

Yu cu: Cho lp Distance nh sau:

Tm hiu lp ny v gii thch kt qu. Nu chng trnh b li, hy sa li. Hng dn:
-

Bi tp 2:
Mc ch: - Bit cch vit v s dng overloaded constructors. Yu cu: - Cho cc lp sau, hy tm hiu v gii thch cch s dng lp Time. Cho bit kt qu ca chng trnh l g? Trang 29

i Hc Cng Ngh ng Nai

Khoa Cng Ngh Thng Tin

// Time.java import java.text.DecimalFormat; public class Time { private int hour; // 0 - 23 private int minute; // 0 - 59 private int second; // 0 - 59 // Time constructor initializes each instance variable to zero. Ensures that Time object // starts in a consistent state. public Time() { setTime( 0, 0, 0 ); } // Time constructor: hour supplied, minute and second defaulted to 0 public Time( int h ) { setTime( h, 0, 0 ); } // Time constructor: hour and minute supplied, second defaulted to 0 public Time( int h, int m ) { setTime( h, m, 0 ); } // Time constructor: hour, minute and second supplied public Time( int h, int m, int s ) { setTime( h, m, s ); } // Time constructor: another Time object supplied public Time( Time time ) { setTime( time.hour, time.minute, time.second ); } // Set a new time value using universal time. Perform // validity checks on data. Set invalid values to zero. private void setTime( int h, int m, int s ) { // hour = ( ( h >= 0 && h < 24 ) ? h : 0 ); if (( h >= 0 && h < 24 )) hour = h; else hour =0; minute = ( ( m >= 0 && m < 60 ) ? m : 0 ); second = ( ( s >= 0 && s < 60 ) ? s : 0 ); } // convert to String in universal-time format public String toUniversalString() { DecimalFormat twoDigits = new DecimalFormat( "00" ); return twoDigits.format( hour ) + ":" + twoDigits.format( minute ) + ":" + twoDigits.format( second ); } // convert to String in standard-time format public String toString() { DecimalFormat twoDigits = new DecimalFormat( "00" ); return ( (hour == 12 || hour == 0) ? 12 : hour % 12 ) + ":" + twoDigits.format( minute ) + ":" + twoDigits.format( second ) + ( hour < 12 ? " AM" : " PM" ); } }

Trang 30

i Hc Cng Ngh ng Nai

Khoa Cng Ngh Thng Tin

// TimeTest.java import javax.swing.*; public class TimeTest { // test constructors of class Time2 public static void main( String args[] ) { Time t1, t2, t3, t4, t5, t6; t1 = new Time(); // 00:00:00 t2 = new Time( 2 ); // 02:00:00 t3 = new Time( 21, 34 ); // 21:34:00 t4 = new Time( 12, 25, 42 ); // 12:25:42 t5 = new Time( 27, 74, 99 ); // 00:00:00 t6 = new Time( t4 ); // 12:25:42 String output=""; output = "Constructed with: " + "\nt1: all arguments defaulted" + "\n " + t1.toUniversalString() + "\n " + t1.toString(); output += "\nt2: hour specified; minute and " + "second defaulted" + "\n " + t2.toUniversalString() + "\n " + t2.toString(); output += "\nt3: hour and minute specified; " + "second defaulted" + "\n " + t3.toUniversalString() + "\n " + t3.toString(); output += "\nt4: hour, minute, and second specified" + "\n " + t4.toUniversalString() + "\n " + t4.toString(); output += "\nt5: all invalid values specified" + "\n " + t5.toUniversalString() + "\n " + t5.toString(); output += "\nt6: Time2 object t4 specified" + "\n " + t6.toUniversalString() + "\n " + t6.toString(); JOptionPane.showMessageDialog( null, output, "Demonstrating Overloaded Constructors", JOptionPane.INFORMATION_MESSAGE ); System.exit(0); } }

Hng dn:

Bi tp 3:
Mc ch: - Bit cch vit v s dng lp thnh phn (composition class). Yu cu: - Cho cc lp sau, hy tm hiu v gii thch cch s dng lp Date, lp Employee. Cho bit kt qu ca chng trnh l g? // Date.java public class Date { private int month; // 1-12 private int day; // 1-31 based on month private int year; // any year public Date( int theMonth, int theDay, int theYear ) { if ( theMonth > 0 && theMonth <= 12 ) // validate month month = theMonth; else { month = 1; Trang 31

i Hc Cng Ngh ng Nai

Khoa Cng Ngh Thng Tin

System.out.println( "Month " + theMonth + " invalid. Set to month 1." ); } year = theYear; // could validate year day = checkDay( theDay ); // validate day System.out.println( "Date object constructor for date " + toString() ); } private int checkDay( int testDay ) { int daysPerMonth[] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; // check if day in range for month if ( testDay > 0 && testDay <= daysPerMonth[ month ] ) return testDay; // check for leap year if ( month == 2 && testDay == 29 && ( year % 400 == 0 || ( year % 4 == 0 && year % 100 != 0 ) ) ) return testDay; System.out.println( "Day " + testDay + " invalid. Set to day 1." ); return 1; // leave object in consistent state } // Create a String of the form month/day/year public String toDateString() { return month + "/" + day + "/" + year; } }

// Employee.java public class Employee { private String firstName; private String lastName; private Date birthDate; private Date hireDate; // constructor to initialize name, birth date and hire date public Employee() { firstName=; lastName=; birthDate=new Date(0,0,0); hireDate=new Date(0,0,0); } public Employee( String first, String last, Date dateOfBirth, Date dateOfHire) { firstName = first; lastName = last; birthDate = dateOfBirth; hireDate = dateOfHire; } // convert Employee to String format public String toEmployeeString() { Trang 32

i Hc Cng Ngh ng Nai

Khoa Cng Ngh Thng Tin

return lastName + ", " + firstName + " Hired: " + hireDate.toDateString() + " Birthday: " + birthDate.toDateString(); } } //EmployeeTest.java import javax.swing.JOptionPane; public class EmployeeTest { public static void main( String args[] ) { Date birth = new Date( 7, 24, 1949 ); Date hire = new Date( 3, 12, 1988 ); Employee employee = new Employee( "Bob", "Jones", birth, hire ); JOptionPane.showMessageDialog( null, employee.toEmployeeString(), "Testing Class Employee", JOptionPane.INFORMATION_MESSAGE ); System.exit( 0 ); } } Hng dn:
-

Bi tp 4:
Mc ch: Yu cu: Vit lp HinhTron dng tnh din tch v chu vi hnh trn t bn knh. Vit hm main test lp ny. Hng dn:

Bi tp 5:
Mc ch:
-

Yu cu: (i) Xy dng lp CHinhTamGiac nh sau: CHinhTamGiac - ma : int - mb : int - mc : int + CHinhTamGiac() + CHinhTamGiac(a: int, b: int, c: int) + getCanhA() : int + setCanhA(v : int) : void Trang 33

i Hc Cng Ngh ng Nai + getCanhB() : int + setCanhB(v : int) : void + getCanhC() : int + setCanhC(v : int) : void + laTamGiac() : boolean + laTamGiac(int, int, int) : boolean + getChuVi() : int + getDienTich() : double Trong : c tnh ma, mb, mc l ba cnh ca tam gic.

Khoa Cng Ngh Thng Tin

i to CHinhTamGiac(int, int, int): yu cu kim tra: o nu gi tr truyn c s m th thng bo v gn thuc tnh tng ng bng 0; o nu 3 gi tr truyn vo khng lp thnh mt hnh tam gic th thng bo "Khng phi hnh tam gic" v gn 3 thuc tnh bng 0. HD : ba gi tr lp thnh mt hnh tam gic khi v ch khi tng hai cnh bt k lun ln hn cnh cn li. setCanhA, setCanhB, setCanhC cng yu cu phi kim tra gi tr gn c l s dng v lp thnh tam gic hay khng, nu khng th khng gn (gi li gi tr c). getChuVi(), getDienTich(): tnh chu vi v din tch ca tam gic. laTamGiac(): tr v gi tr true khi ba gi tr ma, mb, mc lp thnh mt hnh tam gic, ngc li tr v gi tr false. laTamGiac(int, int, int): tr v gi tr true khi ba gi tr a, b, c lp thnh mt hnh tam gic, ngc li tr v gi tr false. (ii) Vit hm main kim tra lp CHinhTamGiac theo yu cu sau: Cho nhp vo 3 gi tr s nguyn v khi to hnh tam gic c cc cnh ng vi 3 gi tr ny, nu 3 gi tr ny khng lp thnh tam gic th thng bo, ngc li th tnh v xut ra chu vi v din tch ca n. Hng dn:

Bi tp 6:
Mc ch:
-

Yu cu: (i) Xy dng lp NhanVien nh sau: NhanVien - maNV : String - soSP : int + NhanVien() + NhanVien (ma: String, sp : int) Trang 34

i Hc Cng Ngh ng Nai + getMaNV() : String + setMaNV(ma : String) : void + getSoSP() : int + setSoSP(sp : int) : void + coVuotChuan() : boolean + getTongKet() : String + getLuong(): double + XuatTieuDe() : static void + toString() : String

Khoa Cng Ngh Thng Tin

rong cc hm khi to v cc hm setSoSP, khi gn gi tr cho thuc tnh soSP th cn kim tra gi tr c phi l s dng khng, nu l s dng th mi gn gi tr cho thuc tnh, ngc li th gn bng 0. coVuotChuan() : tr v true nu soSP > 500, ngc li tr v false. Gii thch: hm ny dng kim tra xem s lng sn phm ca nhn vin c vt qu s lng chun hay khng. getTongKet() : tr v ch "Vt" khi soSP > 500, ngc li trng (c th s dng hm coVuotChuan() kim tra). getLuong() : tr v lng ca mt nhn vin, lng n theo sn phm vi n gi c bn cho 1 sn phm l 20000, v nu s sn phm ca nhn vin vt chun th phn vt chun c tnh n gi l 30000. XuatTieuDe() : xut tiu gm cc ct : m nhn vin, s sn phm, lng, tng kt. toString() : tr v chui cha thng tin ca nhn vin gm cc ct: M nhn vin (maNV), S sn phm (soSP), Lng v Tng kt. (ii) Vit hm main kim tra lp NhanVien theo yu cu sau: To 2 nhn vin vi cc thuc tnh cho ngi dng nhp vo. Xut ra cc thng tin ca h, gm m, s sn phm, lng, tng kt. Hng dn:

Bi tp 7:
Mc ch: Yu cu: (i) Xy dng lp CNhanVien, bit: n lt l cc thuc tnh h, tn v s sn phm ca nhn vin. t hm khi to CNhanVien(String, String, int), hm ny s khi to h, tn, s sn phm ca nhn vin; hm phi kim tra s sn phm l s ln hn hoc bng 0, nu l s m th gn gi tr cho mSoSP bng 0. t cc hm ly v gn gi tr cho thuc tnh ca lp (cc hm get/set). t hm getLuong() tnh lng cho nhn vin, lng = s sn phm * n gi, vi n gi ty thuc vo s sn phm nh sau: Trang 35

i Hc Cng Ngh ng Nai S sn phm 1 - 199 200 - 399 400 - 599 600 tr ln n gi 0.5 0.55 0.6 0.65

Khoa Cng Ngh Thng Tin

t hm LonHon(CNhanVien nv2): hm ny tr v gi tr true khi s sn phm (mSoSP) ln hn s sn phm ca nv2, ngc li tr v false (ii) Vit hm main s dng lp CNhanVien theo yu cu sau: Cho ngi dng nhp vo 2 nhn vin, mi nhn vin nhp vo h, tn, s sn phm ca h. Hy tnh v xut ra lng ca tng nhn vin. So snh v xut ra thng bo nhn vin no c s sn phm nhiu hn v nhiu hn bao nhiu. Dng 2 cch so snh: dng hm LonHon v khng dng hm LonHon. Hng dn:

Bi tp 8:
Mc ch:
-

Yu cu: Xy dng lp SinhVien vi cc thuc tnh ca sinh vin l m sinh vin, h tn, im l thuyt, im thc hnh. Vit hm main cho php thc hin: (i) Nhp thng tin cho mt sinh vin. (ii) Tnh im trung bnh ca sinh vin (im trung bnh = (lt+dth)/2). (iii) Xut thng tin sinh vin v cho bit kt qu hc tp ca sinh vin (u khi im trung bnh >=5, ngc li l Rt). Hng dn:

Bi tp 9:
Mc ch:
-

Yu cu: Xy dng lp NhanVien, bit cu trc ca mt nhn vin nh sau: - M NV: kiu s nguyn Trang 36

i Hc Cng Ngh ng Nai

Khoa Cng Ngh Thng Tin

- H tn: kiu chui. - a ch: kiu chui. - CBQL: kiu logic, c gi tr true nu nhn vin ny l cn b qun l. Vit hm main cho php khi to mt s i tng thuc lp NhanVien, sau in ra m, h tn ca cc nhn vin l cn b qun l. Hng dn:

Bi tp 10:
Mc ch: - Vit cc lp vi mi quan h cu thnh, tp hp (aggregation) Yu cu: Cho lc cc lp nh sau :

Hy ci t theo m hnh ny. Vit hm main cho nhp vo mt s Student v xut ra cc thng tin . Hng dn:

Trang 37

i Hc Cng Ngh ng Nai

Khoa Cng Ngh Thng Tin

Module 4: Enhancing Class


Ni dung kin thc thc hnh:
-

Cch truyn tham s trong Java Cch s dng t kha static Vit Interface v thc thi

Bi 1:
Mc ch:
Hiu cch truyn tham s cho hm trong Java.

Yu cu: Cho cc lp di y, cho bit kt qu chng trnh v gii thch. // Num.java public class Num { private int value; public Num (int update) { value = update; } public void setValue (int update) { value = update; } public String toString () { return value + ""; } } // ParameterTester.java public class ParameterTester { public static void changeValues (int f1, Num f2, Num f3) { System.out.println ("Before changing the values:"); System.out.println ("f1\tf2\tf3"); System.out.println (f1 + "\t" + f2 + "\t" + f3 + "\n"); f1 = 999; f2.setValue (888); f3 = new Num (777); System.out.println ("After changing the values:"); System.out.println ("f1\tf2\tf3"); Trang 38

i Hc Cng Ngh ng Nai System.out.println (f1 + "\t" + f2 + "\t" + f3 + "\n"); } public static void main (String[] args) { int a1 = 111; Num a2 = new Num (222); Num a3 = new Num (333); System.out.println ("Before calling changeValues:"); System.out.println ("a1\t a2\t a3"); System.out.println (a1 + "\t" + a2 + "\t" + a3 + "\n"); changeValues (a1, a2, a3); System.out.println ("After calling changeValues:"); System.out.println ("a1\t a2\t a3"); System.out.println (a1 + "\t" + a2 + "\t" + a3 + "\n"); } } Hng dn:

Khoa Cng Ngh Thng Tin

Bi tp 2:
Mc ch: - Hiu cch s dng thuc tnh v hm static. Yu cu: Cho cc lp di y, cho bit kt qu chng trnh v gii thch. // NhanSu.java class HoSo { static int soNguoi; String hoTen; HoSo( String ht ){ hoTen = ht; soNguoi++; } static void tongKet(){ System.out.println( "Ho khau nay co " + soNguoi +" nguoi" ); } void xuatHoTen(){ System.out.println( hoTen ); } } public class NhanSu{ public static void main( String argv[] ){ HoSo n1 = new HoSo( "Tran Van Lang" ); HoSo n2 = new HoSo( "Le Thi Binh Minh" ); HoSo n3 = new HoSo( "Tran Thuy Thuc Trinh" ); Trang 39

i Hc Cng Ngh ng Nai HoSo n4 = new HoSo( "Tran Thuy Anh Quynh" ); HoSo.tongKet(); n1.xuatHoTen(); n2.xuatHoTen(); n3.xuatHoTen(); n4.xuatHoTen(); } } Hng dn:

Khoa Cng Ngh Thng Tin

Bi tp 3:
Mc ch: - Tm hiu cch vit v s dng interface. Yu cu: Ci t cc lp theo m hnh di y:

Hng dn:

Bi tp 4:
Trang 40

i Hc Cng Ngh ng Nai

Khoa Cng Ngh Thng Tin

Mc ch: - Tm hiu cch vit v s dng interface Yu cu: - Thit k class theo m hnh bn di, sinh vin la chn ni dung thch hp cho tng phng thc c th.

Hng dn:

Bi tp 5:
Mc ch: - Tm hiu cch vit abstract class Yu cu: - Hy thit k class hp l theo m hnh UML di y, du - l private, du # l protected, du + l public

Trang 41

i Hc Cng Ngh ng Nai

Khoa Cng Ngh Thng Tin

Vit thm class TestMain kim tra class Staff, phng thc payday() s xut ton b bng lng chi tit cho mi nhn vin ti thi im tnh lng, cch tnh lng cho mi nhn vin l khc nhau da vo cc thuc tnh c m t trong mi class. Hng dn:

Trang 42

i Hc Cng Ngh ng Nai

Khoa Cng Ngh Thng Tin

Module 5: Array and Collections


Ni dung kin thc thc hnh:
-

Thao tc trn mng d liu c s Thao tc trn mng i tng Vit lp tp hp s dng mng v ArrayList Sp xp mng i tng vi Comparable interface

Bi 1:
Mc ch: - S dng mng. Yu cu: Vit chng trnh cho nhp mng n s nguyn vi cc gi tr ngu nhin. Xut tng, gi tr nh nht ca mng. Sp xp mng. Yu cu vit hm x l mng. Hng dn:
-

Bi tp 2:
Mc ch: Yu cu: Lm li bi tp 1 bng cch vit lp RandomArray x l mng. HD: lp RandomArray c 2 thuc tnh l mng s nguyn v v tr hin hnh, trong vit hm thm 1 phn t vo mng ti v tr hin hnh, hm in mng, hm tnh tng mng, hm tm gi tr nh nht, hm sp xp mng. Hng dn:
-

Bi tp 3:
Mc ch:
-

Yu cu: Lm li bi tp 2 bng cch s dng ArrayList thay cho mng thng thng. HD: lp RandomArray ch c 1 thuc tnh l mng s nguyn. Hng dn: Trang 43

i Hc Cng Ngh ng Nai

Khoa Cng Ngh Thng Tin

Bi tp 4:
Mc ch: Yu cu: Thao tc trn mng s nguyn, vit hm thc hin cc yu cu sau: - Nhp / xut mng nguyn bt k - Tm kim gi tr bt k nhp vo t bn phm - Xut tt c cc s nguyn t trong mng - Sp xp mng: BubbleSort, SelectionSort, InsertionSort, QuickSort - Xa mt gi tr bt k trong mng - Kim tra mng c i xng hay khng Hng dn:

Bi tp 5:
Mc ch:
-

Vit v s dng lp mng i tng.

Yu cu: (i) Vit lp Circle, bit lp c mt thuc tnh l radius (bn knh). Vit hm getArea() tnh din tch hnh trn, v hm toString() tr v chui gm bn knh v din tch hnh trn. Kim tra lp Circle. (ii) Vit lp CircleCollection, trong vit cc hm: + addCircle: thm 1 hnh trn vo mng; +getSize: ly s lng hnh trn trong mng; +getCircle/setCircle: ly/gn hnh trn ti v tr xc nh trong mng; +toString: tr v thng tin ca tp cc hnh trn trong mng; + Hm tnh tng din tch hnh trn; + Hm tm din tch ln nht; + Hm ly hnh trn c din tch nh nht. (iii) Vit chng trnh to mt mng N hnh trn, vi bn knh c pht sinh ngu nhin. Thc hin cc yu cu sau: - Xut thng tin ca cc hnh trn nhp. - Xut tng din tch ca chng. - Xut din tch ln nht. - Xut thng tin hnh trn c din tch nh nht. Hng dn:

Bi tp 6:
Trang 44

i Hc Cng Ngh ng Nai Mc ch: - S dng ArrayList.

Khoa Cng Ngh Thng Tin

Yu cu: Sa li bi v d CDColection.java trong gio trnh: s dng ArrayList thay cho mng thng thng. Hng dn:
-

Bi tp 7:
Mc ch: Yu cu: (i) S dng lp NhanVien vit trong bi tp 6 Module 3, vit lp DanhSachNhanVien vi cc yu cu sau: 1. Thm mt nhn vin vo danh sch (mi nhn vin cho nhp vo m nhn vin v s sn phm). 2. Ly thng tin ca tt c nhn vin, xut dng bng vi cc ct: m nhn vin, s sn phm, lng, tng kt. 3. Ly tng s nhn vin. 4. Ly thng tin ca cc nhn vin c s sn phm vt chun. 5. m s nhn vin c s sn phm khng vt chun. 6. Tnh tng lng ca cc nhn vin vt chun. 7. Ly nhn vin c s sn phm t nht. 8. Ly nhn vin c lng cao nht. 9. Ly nhn vin khng vt chun c lng cao nht. 10. Ly tng lng ca tt c nhn vin. 11. Tm kim nhn vin theo m nhp vo, tr v nhn vin tm thy. 12. Sp xp mng nhn vin tng dn theo s sn phm. 13. Xa 1 nhn vin ti v tr nhp vo. (ii) Vit chng trnh cho nhp mng n nhn vin v thc hin cc yu cu trong (i) Ch : ty chn s dng ArrayList thay hoc mng thng thng. Hng dn:

Bi tp 8:
Mc ch: Yu cu: - Vit chng trnh cho nhp vo danh sch sinh vin ca mt trng v xut danh sch theo tng lp. Bit rng trng c nhiu lp v mt lp c nhiu sinh vin. Lp gm cc thng tin: m lp, tn lp, s s. Sinh vin gm cc thng tin: m sinh vin, h tn, ni sinh, m lp. Trang 45

i Hc Cng Ngh ng Nai Hng dn:

Khoa Cng Ngh Thng Tin

Bi tp 9:
Mc ch: Yu cu: Vit chng trnh qun l bn hng c m t nh bn di, yu cu dng ArrayList : Mi mt danh mc sn phm s c nhiu sn phm, thng tin danh mc sn phm gm: M danh mc, tn danh mc. Thng tin sn phm gm: m sn phm, tn sn phm, gi c, xut x. - Vit hm cho php thng tin danh mc sn phm v sn phm - Xut danh sn phm thuc mt danh mc bt k nhp vo t bn phm - Cho php cp nht thng tin sn phm - Xa sn phm bt k trong danh mc - Thng k tng gi tr ca cc mt hng - Lit k cc sn phm c xut x t trung quc Hng dn:

Bi tp 10:
Mc ch: Yu cu: Vit chng trnh cho php nhp lin tc cc gi tr trong khong t 1100. Sau khi kt thc qu trnh nhp d liu th xut thng tin nh yu cu bn di:

Hng dn: - Nu ngi s dng nhp 4,5,4,3, 100,91. Th 110 s xut hin 4 du *. 91100 xut hin 2 du *. Cc vng cn li trng.

Bi tp 11:
Trang 46

i Hc Cng Ngh ng Nai

Khoa Cng Ngh Thng Tin

Mc ch: Lu i tng: Object Serializable Yu cu: - Tt c cc class phi implements Serializable: o public class Sanpham implements Serializable{} o public class DanhMucSanPham implements Serializable{} - Vit mt class MyFile c 2 phng thc: o Lu i tng: public static void luuDoiTuong(Object obj, String fileName) { try { FileOutputStream fOut=new FileOutputStream(fileName); ObjectOutputStream out=new ObjectOutputStream(fOut); out.writeObject(obj); out.close(); } catch(Exception ex) { ex.printStackTrace(); } } o c i tng public static Object docDoiTuong(String fileName) { try { FileInputStream fIn=new FileInputStream(fileName); ObjectInputStream in=new ObjectInputStream(fIn); Object o=in.readObject(); in.close(); return o; } catch(Exception ex) { ex.printStackTrace(); } return null; } - Trong testMain: DanhMucSanPham dsDienTu=(DanhMucSanPham )MyFile.docDoiTuong("luuluu.data"); if(dsDienTu!=null) System.out.println(dsDienTu); MyFile.luuDoiTuong(dsDienTu, "luuluu.data"); Hng dn: Trang 47

i Hc Cng Ngh ng Nai

Khoa Cng Ngh Thng Tin

Module 6: Inheritance
Ni dung kin thc thc hnh:
-

To lp con k tha t lp cha . a hnh thng qua k tha

Bi 1:
Mc ch: - Cch vit lp k tha. Yu cu: Cho cc lp sau: // Vehicle.java public class Vehicle{ private int numOfWheels; public Vehicle(int x){ numOfWheels = x; } public void drive() { System.out.println(Driving a vehicle); } } //Car.java public class Car extends Vehicle{ private int numOfDoors; public Car(int d, int w) { numOfDoors = d; super(w); } public void drive() { System.out.println(Driving a car); } } a. B sung cc hm get/set cho cc lp. b. Lp Car b li bin dch. Hy sa li. c. Gi s lp Car c sa li, kt qu chng trnh l g khi vit: TH1: Car audi = new Car(); Car.drive(); TH2: Car p = new Car(2, 4); p.drive(); Hng dn: Trang 48

i Hc Cng Ngh ng Nai

Khoa Cng Ngh Thng Tin

Bi tp 2:
Mc ch: Yu cu: - Ci t cho lc sau:

Trong : + toString(): xut gi tr x, y, radius ca Point hoc Circle tng ng (x, y xut kiu ta [x,y]) + setRadius(): kim tra gi tr a vo. + getDiameter(): tnh ng knh hnh trn. + getCircumference(): tnh chu vi hnh trn. + getArea(): tnh din tch hnh trn. + Hm main() yu cu nhp mt mng n i tng Circle, xut ra ng knh, chu vi, din tch ca chng, kt qu hin th 2 s l. Hng dn:

Trang 49

i Hc Cng Ngh ng Nai

Khoa Cng Ngh Thng Tin

Bi tp 3:
Mc ch: Yu cu: a. Xy dng lp hnh ch nht vi cc thuc tnh l chiu di, chiu rng, vit cc hm tnh chu vi, din tch ca n. b. Xy dng lp hnh vung tha k lp hnh ch nht. c. Vit chng trnh tnh chu vi, din tch hnh vung vi di nhp vo. Hng dn:

Bi tp 4:
Mc ch: - Vit a hnh thng qua k tha Yu cu: a. Vit lp Shape, lp ny ch c mt hm l draw() khng c tham s v khng tr v gi tr, ch xut ra dng ch Drawing a Shape. b. Vit lp Rectangle k tha t lp Shape. Thm vo lp Rectangle hai thuc tnh l chiu di v chiu rng (s nguyn). Vit cc hm khi to v cc hm get/set cho lp ny, ch gi tr gn cho 2 thuc tnh nm trong [1, 15]. Trong lp Rectangle, vit li hm draw() ca lp Shape v ra hnh ch nht bi cc du *, vi s lng du * mi cnh ty thuc vo cc thuc tnh chiu di v chiu rng. V d thuc tnh chiu di v chiu rng ln lt l 7 v 3 th hm draw() v c hnh: ******* * * ******* c. Vit lp RightTriangle k tha t lp Shape. Thm vo lp RightTriangle mt thuc tnh l cnh vung (s nguyn). Vit cc hm khi to v cc hm get/set cho lp ny, ch gi tr gn cho thuc tnh nm trong [1, 20]. Trong lp RightTriangle, vit li hm draw() ca lp Shape v ra hnh tam gic vung bi cc du *, vi s lng du * mi cnh ty thuc vo cc thuc tnh cnh vung. V d thuc tnh cnh vung l 4 th hm draw() v c hnh: * ** *** **** d. Vit lp Artist, lp ny c hm drawShape(), hm ny khng tr v gi tr v c mt tham s kiu Shape, trong hm ny gi hm draw() v hnh ty theo tham s Shape truyn vo. e. Vit lp ArtistDemo, lp ny cha hm main(): khai bo bin Shape; dng bin ny khi to cho i tng Rectangle vi chiu di l 8, chiu rng l 4; to i tng Artist v hnh ch nht ny; dng li bin Shape khi to cho i tng RightTriangle vi cnh l 20, dng i tng Artist v hnh tam gic ny. Vit li hm main ny vi cc gi tr chiu di, chiu rng, cnh vung do ngi dng nhp vo. Hng dn: Trang 50

i Hc Cng Ngh ng Nai

Khoa Cng Ngh Thng Tin

Module 7: Exception IO Stream


Ni dung kin thc thc hnh:
-

X l d liu vi try-catch Nm ngoi l To lp ngoi l ring Lu tr i tng vo tp tin

Bi 1:
Mc ch: - Kim tra d liu nhp ca ngi dng bng cch s dng try-catch. Yu cu: Vit chng trnh cho nhp vo 2 s nguyn, xut kt qu php chia 2 s ny. Yu cu kim tra vic nhp s (khng c nhp ch), php chia cho 0. Hng dn:

Bi tp 2:
Mc ch: - Kim tra d liu nhp ca ngi dng bng cch vit lp x l ngoi l. Yu cu: - Lm li bi 1 vi yu cu kim tra vic nhp 2 s phi l s dng, vit lp x l ring. Hng dn:

Bi tp 3:
Mc ch: - Kim tra d liu nhp ca ngi dng bng cch vit lp x l ngoi l. Yu cu:
-

Vit lp x l ngoi l StringTooLongException, lp ny gip thng bo 1 chui no c qu nhiu k t. Vit hm main, cho ngi dng nhp vo tng chui cho n khi ngi dng nhp DONE. Khi mt chui c nhp vo, cn kim tra xem chui c vt qu 20 k t khng, nu vt th chng trnh thng bo cho ngi dng bit v kt thc chng trnh. Yu cu s dng lp StringTooLongException x l li ny.

Hng dn: Trang 51

i Hc Cng Ngh ng Nai

Khoa Cng Ngh Thng Tin

Bi tp 4:
Mc ch: - Kim tra d liu nhp ca ngi dng bng cch vit lp x l ngoi l. Yu cu: - Lm li bi 3 vi yu cu nu ngi dng nhp vo mt chui vt qu 20 k t th chng trnh thng bo li v vn tip tc thc hin. Hng dn:
-

Bi tp 5:
Mc ch: Yu cu: - Hy to mt class tn l OutOfRangeException kim tra vic nhp d liu ca ngi s dng. Sinh vin hy to thm mt class s dng OutOfRangException. V d nh yu cu nhp vo 1 s n c gi tr t -113 ti 113 t bn phm, nu khng nm trong on gi tr ny th dng OutOfRangException thng bo li. Hng dn:
-

Bi tp 6:
Mc ch: - Thc hnh IOException Yu cu: a) Vit hm cho php lu tp tin di dng text file, yu cu khi to l 10 dng, mi dng s c 10 s ngu nhin cch nhau bi du ;. Xem hnh minh ha

b) Tip theo vit hm cho php c tp tin t cu a, xut ra tng gi tr ca cc phn t trn mi dng. Ghi ch: Trng hp ny c th pht sinh li IOException. Trang 52

i Hc Cng Ngh ng Nai

Khoa Cng Ngh Thng Tin

Hng dn: Sinh vin xem cch lu tp tin di dng TextFile v cch c d liu ln. T v d ny hy kt hp vi StringTokenizer hoc hm split tin hnh tch s trong qu trnh c tng dng d liu, cng dn cc gi tr ny l chng ta s c tng gi tr cc phn t ngu nhin trn mi dng. Hm lu TextFile:
public static void luuTextFile(String filename) { try { FileOutputStream fOut=new FileOutputStream(filename); PrintWriter print=new PrintWriter(fOut, true); Random rd=new Random(); for(int i=0;i<10;i++) { String line=""; for(int j=0;j<10;j++) { line+=rd.nextInt(100)+";"; } print.println(line); } print.close(); fOut.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } Hm c TextFile: public static void docTextFile(String filename) { try { FileInputStream fIn=new FileInputStream(filename); Scanner sc=new Scanner(fIn); while(sc.hasNextLine()) { System.out.println(sc.nextLine()); } fIn.close(); sc.close(); } catch(IOException ex) { ex.printStackTrace(); } }

Trang 53

i Hc Cng Ngh ng Nai

Khoa Cng Ngh Thng Tin

Module 8: Graphic User Interface


Ni dung kin thc thc hnh:
-

Mc ch ca Module ny gip cc sinh vin hiu c LayoutManager, Common Control, Event, DialogBox, Advanced Control

Bi tp 1:
Mc ch: - Thc hnh cch hin th ca s Windows trong Java Yu cu:

Hy hin th ca s trn, yu cu vit class k tha t JFrame Hng dn:

Gii thch:

Trang 54

i Hc Cng Ngh ng Nai

Khoa Cng Ngh Thng Tin

Bi tp 2:
Mc ch: - Thc hnh v FlowLayout Yu cu: FlowLayout cho php add cc control trn cng mt dng, khi no ht ch cha n s t ng xung dng, ta cng c th iu chnh hng xut hin ca control. Mc nh khi mt JPanel c khi to th bn thn lp cha ny s c kiu Layout l FlowLayout.

Hng dn:

Trang 55

i Hc Cng Ngh ng Nai

Khoa Cng Ngh Thng Tin

Bi tp 3:
Mc ch: - Thc hnh v BoxLayout Yu cu: BoxLayout cho php add cc control theo dng hoc ct, ti mi v tr add n ch chp nhn 1 control, do mun xut hin nhiu control ti mt v tr th bn nn add v tr l 1 JPanel ri sau add cc control khc vo JPanel ny. BoxLayout.X_AXIS : Cho php add cc control theo hng t tri qua phi. BoxLayout.Y_AXIS : Cho php add cc control theo hng t trn xung di. BoxLayout s khng t ng xung dng khi ht ch cha, tc l cc control s b che khut nu nh thiu khng gian cha n.

Hng dn:

Trang 56

i Hc Cng Ngh ng Nai

Khoa Cng Ngh Thng Tin

Bi tp 4: Thc hnh v BorderLayout


Mc ch: - Thc hnh v BoxLayout Yu cu: BorderLayout gip chng ta hin th cc control theo 5 vng: North, South, West, East, Center

Nu nh khng c 4 vng : North, West, South, East. Th vng Center s trn y ca s, thng thng khi a cc control JTable, JTree, ListView, JScrollpane ta thng a vo vng Center n c th t co gin theo kch thc ca s gip giao din p hn.

Bi tp 5:
Thit k giao din nh sau:

Hot ng: Chng trnh cho php thay i nh dng ch trong JTextField khi nhn chn checkbox tng ng. Trang 57

i Hc Cng Ngh ng Nai

Khoa Cng Ngh Thng Tin

Bi tp 6:
Thit k giao din nh sau:

Hot ng: Chng trnh cho php thay i nh dng ca ch trong JTextField khi nhn chn radiobutton tng ng.

Bi tp 7:
Thit k giao din gii phng trnh bc 2:

Hng dn: Sinh vin phi xc nh Layout Manager trc, ta cng c th k hp cc Layout thit k giao din, t tn control theo yu cu bn di Tn Control Tn Bin Control M t JTextField txtSoa Dng nhp gi tr cho a JTextField txtSob Dng nhp gi tr cho b JTextField txtSoc Dng nhp gi tr cho c JTextField txtKetqua Dng hin th kt qu JButton btnGiai Vit lnh gii phng trnh JButton btnXoaTrang Xa ton b d liu trong dl JButton btnThoat Vit lnh thot chng trnh JLabel lblTieuDe Gii Phng Trnh Bc 2

Trang 58

i Hc Cng Ngh ng Nai

Khoa Cng Ngh Thng Tin

Bi tp 8:
Thit k giao din thc hin cc php ton : + - * :

Khi bm nt Gii th ty thuc vo php ton c chn m kt qu thc hin khc nhau.

Bi tp 9:
Thit k giao din nh sau:

Hot ng: Khi ngi dng chn mt dng trn JList th dng s hin ra trn JLabel bn trn. Yu cu thit lp: + Ni dung trong JLabel c canh gia, to ng vin, i mu nn, i mu ch cho JLabel. + Khng cho php chn nhiu dng trn JList. + Khi chng trnh hin ln th dng u tin phi c chn.

Bi tp 10:
Thit k giao din nh sau:

Trang 59

i Hc Cng Ngh ng Nai

Khoa Cng Ngh Thng Tin

Chng trnh cho php ngi dng sao chp cc mc chn trong JList bn tri qua JList bn phi khi nhn nt Copy>>>. D liu trong cc JList phi c c t file ra v khi nhn nt ng chng trnh th chng trnh s cho php lu d liu thay i trong JList bn phi vo file. Thm vo chng trnh menu lu, ng, sao chp.

Bi tp 11:
Thit k giao din nh sau:

JComboBox cha sn mt s tn file hnh, khi chng trnh hin ln th cho xut hin hnh u tin ln JLabel. Hot ng: Khi ngi dng chn tn hnh no trong JComboBox th chng trnh s hin hnh ra label.

Bi tp 12:
Thit k giao din nh sau: giao din gm 2 JButton v 1 JList c thanh cun.

Hot ng: Chng trnh cho php thm v xa mt mc trong JList nh sau: + Khi ngi dng nhn nt Add Philosopher th chng trnh hin ra mt ca s cho nhp

Trang 60

i Hc Cng Ngh ng Nai

Khoa Cng Ngh Thng Tin

+ Khi ngi dng nhn nt Remove Selected Philosopher th chng trnh s xa mc ang chn trong JList, trc khi xa phi hi xc nhn li, nu khng chn mc no xa th phi thng bo.

Bi tp 13:
Thit k giao din nh hnh sau:

Yu cu x l: + Khi nhn nt Add Item th thm ni dung nhp vo JList, cnh bo ngi dng trng hp trng nhp hoc nhp trng d liu c. + Khi nhn nt Remove Item th cho php xa cc dng ang chn trong JList, trc khi xa phi hi xc nhn li, cnh bo ngi dng trng hp khng chn m xa. + Khi nhn nt Edit Item th cho php sa ni dung dng ang chn thnh ni dung mi trong nhp liu. + Khi nhn chn mt dng trn JList th hin ni dung dng ln nhp liu.

Bi tp 14:
Thit k giao din nh hnh bn di v thc hin cc thao tc theo yu cu:

Trang 61

i Hc Cng Ngh ng Nai -

Khoa Cng Ngh Thng Tin

Chng trnh cho php nhp vo cc s nguyn t giao din trong phn nhp thng tin, Khi ngi s nhp gi tr vo JTextField v click nt Nhp th s cp nhp d liu xung JList, Nu checked vo Cho nhp s m th cc s m mi c php a vo JList cn khng th thng bo li. Chn tc v, sinh vin phi thc hin ton b cc yu cu Nt ng chng trnh: s hin th thng bo hi ngi s dng c mun ng hay khng.

Bi tp 15:
Vit chng trnh i mu panel dng JSlider nh hnh:

Bi tp 16:
Thit k giao din nh hnh bn di:

+ Khi ngi dng nhn nt Add Philosopher th chng trnh ln lt hin ra cc Trang 62

i Hc Cng Ngh ng Nai

Khoa Cng Ngh Thng Tin

ca s cho nhp vo First Name, Last Name v Years, sau a cc thng tin ny ln JTable + Khi ngi dng nhn nt Remove Selected Philosopher th chng trnh s xa mc ang chn trong JTable, nu khng chn mc no xa th phi thng bo, trc khi xa phi hi xc

Bi tp 17:
Vit chng trnh qun l Account

Bi tp 18:
i. Vit lp NhanVien vi cc yu cu sau: Thuc tnh: m nhn vin (String), phn xng (String), s sn phm (int). Cc hm khi to. Cc hm get/set. Hm getChuan(): tr v gi tr 300 nu l phn xng A, cn li tr v 500. (ch c cc phn xng l A, B, C, D). Hm VuotChuan(): tr v true khi s sn phm vt chun (chun ty theo phn xng), ngc li tr v false. Hm TinhLuong(): tr v lng ca nhn vin, lng = s sn phm * n gi, nu s sn phm vt chun th phn vt c tnh n gi l 30000, cn li tnh n gi l 20000. Hm toString(): tr v m nhn vin. ii. Thit k giao din nh hnh bn di Giao din cho nhp m nhn vin, s sn phm, chn phn xng. Yu cu Tin lng c nh dng nh hnh. Trang 63

i Hc Cng Ngh ng Nai

Khoa Cng Ngh Thng Tin

Yu cu x l: + Khi ngi dng chn phn xng no trn combobox th hin S sn phm chun tng ng. + Nt Tnh lng: xut ra lng ca nhn vin ang nhp (xem hnh). Yu cu kim tra d liu nhp. + Nt Thm: thm nhn vin ang nhp vo JTable vi cc ct nh hnh. Ch khng c thm khi: - Khng nhp d liu. - S sn phm khng phi l s. - Trng m nhn vin. + Nt Xa: xa mt nhn vin ang chn trn JTable. Ch phi hi trc khi xa v khng c xa khi cha chn dng no. + Khi chn 1 dng trn JTable th hin thng tin nhn vin ln cc nhp liu (xem hnh). + Khi ngi dng nhn nt Sa th chng trnh sa thng tin ca nhn vin ang chn vo JTable. Ch khng c sa khi: - Khng c d liu. - S SP khng phi l s. - Trng m nhn vin.

Bi tp 19:
Vit chng trnh qun l sn phm Yu cu chc nng: Cho php nhp/ xut danh mc, danh sch sn phm Trang 64

i Hc Cng Ngh ng Nai Cho php cp nht thng tin Cho php lu / c danh mc sn phm Yu cu s dng JMenuBar, JList, JTable, JCombobox,

Khoa Cng Ngh Thng Tin

Menu Write Data to disk dng lu d liu xung cng Menu Open Data from disk c d li t cng Menu Exit dng thot chng trnh

Bi tp 20:
(i).Vit lp SinhVien vi yu cu sau: Thuc tnh: m sinh vin (String), h tn (String), m lp (String), im mn 1 (double), im mn 2 (double). Cc hm khi to. Cc hm get/set. Hm DiemTrungBinh(): tr v im trung bnh ca 2 mn hc. Hm KetQua(): tr v u khi im trung bnh >=5, ngc li l Rt. Hm toString(): tr v m sinh vin. (ii) Thit k giao din nh hnh bn di Giao din cho nhp m sinh vin, h tn, chn m lp, nhp im mn 1, mn 2. Trang 65

i Hc Cng Ngh ng Nai

Khoa Cng Ngh Thng Tin

Yu cu x l: + Nt Kt qu: xut ra im trung bnh v kt qu ca sinh vin ang nhp (xem hnh). Ch nhp im mn 1 v mn 2 phi l s. + Nt Thm: thm mt sinh vin vo table vi cc ct nh hnh. Ch khng c thm khi: - Khng nhp d liu. - im mn 1 v mn 2 khng phi l s. - Trng m sinh vin. + Nt Xa: xa mt sinh vin ang chn trn table. Ch phi hi trc khi xa v khng c xa khi cha chn dng no. + Khi chn 1 dng trn table th hin thng tin sinh vin ln cc nhp liu (xem hnh).

Bi tp 21:
Thit k giao din v thc hin nh hnh bn di:

Chng trnh cho php thm 1 nt con hoc nt anh em ca nt ang chn khi ngi dng nhn nt Add Child hoc Add Sibling, nt Delete s xa nt ang chn. Trang 66

i Hc Cng Ngh ng Nai

Khoa Cng Ngh Thng Tin

Bi tp 22:
(i) Vit lp SinhVien vi yu cu sau: Thuc tnh: m sinh vin (String), h tn (String), gii tnh (boolean), m lp (String). Cc hm khi to. Cc hm get/set. Hm toString(): tr v chui thng tin gm: m sinh vin h tn gii tnh. (ii) Thit k giao din nh hnh bn di:

Yu cu giao din: Trn JTree c sn nt gc DS lop v cc nt con l cc m lp: NCTH2A, NCTH2B, NCTH2C, NCTH2K. Yu cu x l: + Nt Thm: thm mt sinh vin vo lp ang chn trn JTree (xem hnh). Ch khng c thm khi: - Khng nhp d liu. - Khng chn m lp trn JTree. - Trng m sinh vin. + Nt Xa: xa sinh vin ang chn trn JTree. Ch phi hi trc khi xa v khng c xa khi: - Khng chn nt mun xa. - Chn vo nt gc hoc nt m lp. + Khi chn nt sinh vin th hin thng tin sinh vin ln cc nhp liu (xem hnh).

Trang 67

i Hc Cng Ngh ng Nai

Khoa Cng Ngh Thng Tin

Bi tp 23:
Thc hnh v to Menu. Yu cu thit k Menu theo hnh sau, ng vi mi menu item sinh vin hy ci t coding hin th thng bo l ang chn menu no. Hng dn: JMenuBarJMenuJMenuItem. Phi bit kt hp cc class ny. MenuBar s add Menu, Menu s add MenuItem, ri gi setJMenuBar(menuBar); Yu cu gi lp Menu ging nh chng trnh Foxit Reader:

Menu File c giao din nh trn

Menu Edit c giao din nh trn Trang 68

i Hc Cng Ngh ng Nai

Khoa Cng Ngh Thng Tin

Bi tp 24:
Thc hnh v JToolBar, tng t nh cu 12, gi lp Toolbar ca chng trnh Foxit Reader, ng vi mi lnh trn JToolBar, sinh vin hy xutt thng bo ang s dng chc nng no. Hng dn: to cc JButton ri add vo JToolBar

Bi tp 25:
Thc hnh v Timer class Dng class Timer thit k ng dng ImageAnimation. Giao din s c 2 JButton: Start v Stop. Khi bm Start chng trnh s hin th hnh nh tun t trong mng 10 hnh nh c sn. Bm Stop tm dng duyt hnh nh. Xem hnh yu cu

Hng dn: Dng CardLayout v Timer


import java.awt.*; import java.awt.event.*; import javax.swing.*; public class ImageAnimation extends JFrame{ private static final long serialVersionUID = 1L; Timer timer; private int pos=1; public ImageAnimation(String title) { super(title); timer=new Timer(500, null); } public void doShow()

Trang 69

i Hc Cng Ngh ng Nai


{ setSize(500,550); setLocationRelativeTo(null); setDefaultCloseOperation(EXIT_ON_CLOSE); addControl(); setVisible(true); } public void addControl() { JPanel pnBorder=new JPanel(); pnBorder.setLayout(new BorderLayout()); JPanel pnNorth=new JPanel(); JButton btnStart=new JButton("Start"); JButton btnStop=new JButton("Stop"); pnNorth.add(btnStart); pnNorth.add(btnStop); pnBorder.add(pnNorth,BorderLayout.NORTH);

Khoa Cng Ngh Thng Tin

final JPanel pnCenter=new JPanel(); pnCenter.setLayout(new CardLayout()); pnBorder.add(pnCenter,BorderLayout.CENTER); pnCenter.setBackground(Color.RED); JPanel []pnArr=new JPanel[10]; addImage(pnCenter,pnArr); showImage(pnCenter,"card1"); btnStart.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { timer.start(); timer.addActionListener(new TimerPanel(pnCenter)); } }); btnStop.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { timer.stop(); } }); Container con=getContentPane(); con.add(pnBorder); } private void addImage(JPanel pnCenter,JPanel []pnArr) { for(int i=0;i<pnArr.length;i++) { pnArr[i]=new JPanel(); JLabel lbl=new JLabel(); ImageIcon icon=new ImageIcon("E:\\hoa\\"+i+".jpg"); lbl.setIcon(icon); pnArr[i].add(lbl); pnCenter.add(pnArr[i],"card"+i); } } public void showImage(JPanel pn,String cardName) { CardLayout cl=(CardLayout)pn.getLayout(); cl.show(pn, cardName);

Trang 70

i Hc Cng Ngh ng Nai

Khoa Cng Ngh Thng Tin

} private class TimerPanel implements ActionListener { JPanel pn=null; public TimerPanel(JPanel pn) { this.pn=pn; } public void actionPerformed(ActionEvent arg0) { showImage(pn,"card"+pos); pos++; if(pos>=10) pos=1; } } public static void main(String[] args) {; ImageAnimation imgUi=new ImageAnimation("Image Animation!"); imgUi.doShow(); } }

Bi tp 26:
Ci tin bi tp 10. Chng trnh s cho php c danh sch cc hnh nh bt k trong a.

Hng dn:
import java.awt.*; import java.awt.event.*; import java.io.File; import javax.swing.*; public class ImageAnimation2 extends JFrame{

Trang 71

i Hc Cng Ngh ng Nai


private static final long serialVersionUID = 1L; Timer timer; private int pos=0; public ImageAnimation2(String title) { super(title); timer=new Timer(500, null); } public void doShow() { setSize(500,550); setLocationRelativeTo(null); setDefaultCloseOperation(EXIT_ON_CLOSE); addControl(); setVisible(true); } public void addControl() { JPanel pnBorder=new JPanel(); pnBorder.setLayout(new BorderLayout()); JPanel pnNorth=new JPanel(); JButton btnBrowser=new JButton("Browser"); JButton btnStart=new JButton("Start"); JButton btnStop=new JButton("Stop"); pnNorth.add(btnBrowser); pnNorth.add(btnStart); pnNorth.add(btnStop); pnBorder.add(pnNorth,BorderLayout.NORTH); final JPanel pnCenter=new JPanel(); pnCenter.setLayout(new CardLayout()); pnBorder.add(pnCenter,BorderLayout.CENTER); pnCenter.setBackground(Color.RED);

Khoa Cng Ngh Thng Tin

btnStart.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { timer.start(); timer.addActionListener(new TimerPanel(pnCenter)); } }); btnStop.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { timer.stop(); } }); btnBrowser.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { JFileChooser jfc=new JFileChooser(); jfc.setMultiSelectionEnabled(true); if(jfc.showOpenDialog(null)==JFileChooser.APPROVE_OPTION) { File []files=jfc.getSelectedFiles(); for(int i=0;i< files.length;i++) {

Trang 72

i Hc Cng Ngh ng Nai

Khoa Cng Ngh Thng Tin


File f=files[i]; ImageIcon icon=new ImageIcon(f.getPath()); JPanel pn=new JPanel(); JLabel lbl=new JLabel(icon); pn.add(lbl); pnCenter.add(pn,"card"+i); } showImage(pnCenter, "card0");

} } }); Container con=getContentPane(); con.add(pnBorder); } public void showImage(JPanel pn,String cardName) { CardLayout cl=(CardLayout)pn.getLayout(); cl.show(pn, cardName); } private class TimerPanel implements ActionListener { JPanel pn=null; public TimerPanel(JPanel pn) { this.pn=pn; } public void actionPerformed(ActionEvent arg0) { showImage(pn,"card"+pos); pos++; if(pos>=pn.getComponentCount()) pos=0; } } public static void main(String[] args) {; ImageAnimation2 imgUi=new ImageAnimation2("Image Animation!"); imgUi.doShow(); } }

Trang 73

You might also like