Hoc Java Qua Cac Vi Du

Embed Size (px)

Citation preview

  • 8/8/2019 Hoc Java Qua Cac Vi Du

    1/21

    Giao Lu Trc Tuyn Vit Nam

    Thuviensv.com -- In bi Vo lc : 09:31:38 Fri/17/Sep/2010 Tr v

    Hc Java qua cc v d c th.

    Ta bt u hc nh.

    Bi 1 - Hello world

    *L thuyt: cu trc mt chng trnh JavaCode:

    public class Core {

    public static void main(String[] args) {System.out.println("Hello,Everybody in the World!");

    System.out.println("Chao moi nguoi trong Pho Bach

    Khoa!");

    System.out.println("Chao tat ca Sinh vien Da Nang!");

    }

    }

    public class Core bn bt u mt lp Javapublic static void main(String[] args) y l mt phng thc main trong Java, chochng trnh chy c. Tm thi bn phi g y nh th nySystem.out.println("Hello,Everybody in the World!") y l mt cu lnh trong Java,

    n gin n ch in ra chui nm trong 2 du ra mn hnh.Mi lp v phng thc trong Java m ra bng { v ng li bng }Mi cu lnh trong java kt thc bng ;

    Bi 2 In ra chui nhp voBn hc cch Java in ci g ra mn hnh, trong bi ny, bn s hc cch nhpvo ci g v Java in ci ra mn hnh. G ci ny i bn (lu , bn phi g, khngc copy v paste). V sao li phi g th sau ny bn t bit nh:

    Code:

    import java.io.*;

    public class Hello {

    public static void main(String[] args) throws Exception {BufferedReader in = new BufferedReader(new

    InputStreamReader(System.in));

    System.out.print("Your name is: ");

    String str;

    str = in.readLine();

    System.out.println("Welcome " + str + " to Java");

  • 8/8/2019 Hoc Java Qua Cac Vi Du

    2/21

    }

    Bi 3 Bin trong JavaCode:

    import java.io.*;

    public class Hello {public static void main(String[] args) throws Exception {

    BufferedReader in = new BufferedReader(new

    InputStreamReader(System.in));

    System.out.print("Nhap a: ");

    int a = Integer.parseInt(in.readLine());

    System.out.print("Nhap b: ");

    int b = Integer.parseInt(in.readLine());

    int ketqua;

    ketqua = a+b;

    System.out.println("Ket qua bai toan a+b la: +

    ketqua);

    }

    }

    Nhp th 2 s a v b vo i bn, kt qu bi ton a+b s c in ra

    *L thuyt:Code:

    import java.io.*;

    public class Hello {

    public static void main(String[] args) throws Exception {

    BufferedReader in = new BufferedReader(new

    InputStreamReader(System.in));

    System.out.print("Your name is: ");

    String str;

    str = in.readLine();System.out.println("Welcome " + str + " to Java");

    }

    }

    Tm thi, trong chng trnh ny, bn ch nn quan tm n dngString str khai bo bin str kiu chui, vCode:

    System.out.println("Welcome " + str + " to Java")

    y cng l dng System.out.println nh chng trnh u, c khc l + str + tc l amt bin vo chui in ra. Ch n thi nh, sau , hy quan tm n bi hm nay

    Code:

    System.out.print("Nhap a: ");

    int a = Integer.parseInt(in.readLine());

    System.out.print("Nhap b: ");

    int b = Integer.parseInt(in.readLine());

    int ketqua;

  • 8/8/2019 Hoc Java Qua Cac Vi Du

    3/21

    System.out.println("Ket qua bai toan a+b la: + ketqua);

    Gii thchimport bn nhp class hay th vin chun, tm thi ng quan tm n l g, ch cn nhl c n chng trnh chySystem.out.print in ra mt chui, nhng khng xung dngSystem.out.println in ra mt chui, nhng xung dngint ketqua tc l khai bo bin ketqua kiu intketqua = a+b tc l gn kt qu mt biu thc tnh ton ( y l bin a + bin b ) chobin ketquaSystem.out.println("Ket qua bai toan a+b la: + ketqua) th n gin ri, in ci dng ra, ch khc l n a bin ketqua ca bn vo chui .

    Bi 4 Chia ht, chia ly d*L thuyt: mt s kiu bin trong JavaBn bit 2 kiu String (chui) v int (nguyn) by gi bn bit thm kiu float (thc)S nguyn v s thc bn bit s khc nhau ri ch. By gi ta bt u bi ton v d

    Code:import java.io.*;

    public class Hello {

    public static void main(String[] args) throws Exception {

    BufferedReader in = new BufferedReader(new

    InputStreamReader(System.in));

    System.out.print("Nhap a: ");

    float a = Float.parseFloat(in.readLine());

    System.out.print("Nhap b: ");

    float b = Float.parseFloat(in.readLine());

    float ketqua = a/b;

    System.out.println("Ket qua bai toan a+b la: " +

    ketqua);

    }}

    Bn th bi ton xem, nh ng nhp s b=0 nh, chuyn y s x l sau. V d nhp a=5, b=2, kt qu in ra s l 2.5, th v phi khng ?

    Bi 4 Chia ht, chia ly d (tip theo)By gi cng bi ton y, bn thay i nh sau

    Code:

    import java.io.*;

    public class Hello {

    public static void main(String[] args) throws Exception {

    BufferedReader in = new BufferedReader(newInputStreamReader(System.in));

    System.out.print("Nhap a: ");

    int a = Integer.parseInt(in.readLine());

    System.out.print("Nhap b: ");

    int b = Integer.parseInt(in.readLine());

    float ketqua = a/b;

    System.out.println("Ket qua bai toan a+b la: " +

  • 8/8/2019 Hoc Java Qua Cac Vi Du

    4/21

    }

    }

    Cng nhp a=5, b=2, ln ny kt qu in ra l 2Php chia s l php chia ht nu c 2 ton hng u kiu nguyn, gi l chia ly nguyn(/) hay div

    Bi 4 Chia ht, chia ly d (tip theo)By gi cng chng trnh y m ta thay i li cht xu xem sao

    Code:

    import java.io.*;

    public class Hello {

    public static void main(String[] args) throws Exception {

    BufferedReader in = new BufferedReader(new

    InputStreamReader(System.in));

    System.out.print("Nhap a: ");

    int a = Integer.parseInt(in.readLine());

    System.out.print("Nhap b: ");

    int b = Integer.parseInt(in.readLine());

    float ketqua = a%b;

    System.out.println("Ket qua bai toan a+b la: " +

    ketqua);

    }

    }

    Cng nhp a=5, b=2, ln ny kt qu in ra l 1y l kt qu php chia ly d 5 chia cho 2, gi l chia ly d (%) hay mod*Th nu ti mun 2 s nguyn chia nhau m ra kiu thc ch khng phi php chia lynguyn th sao ? Trong trng hp , bn dng p kiuint a=5,b=2;float ket qua;

    ketqua=(float)a/b;Bi 5 Lp trnh OOP

    classy l mt class, class ny c hai property (thuc tnh) l name v ageCode:

    public class Person

    {

    String name;

    int age;

    }

    y l mt class, class ny ngoi property cn c constructor (khi to) ca class Code:

    public class Person

    {

    String name;

    int age;

    public Person(String name)

  • 8/8/2019 Hoc Java Qua Cac Vi Du

    5/21

    this.name = name;

    }

    }

    Trong ci constructor ny hy lu mt iu, l bin this. Bin this c ngha l bnthn ci class ( y l class Person).

    Trong class Person c mt property l age, cu this.age = age c ngha l ci thuc tnhage ca class Person s nhn gi tr ci i s age do constructor Person(int age) avo.Lu l mi class u c sn t nht mt constructor khng c i s.

    y l mt class, class ny ngoi property, constructor cn c mt behavior (hnh vi)Code:

    public class Person

    {

    String name;

    int age;public Person(int age)

    {

    this.age = age;

    }

    public void Nhap()

    {

    nameonsole.readLine("Nhap ho ten:");

    }

    }

    Khi ta vit cu lnh sauPerson personOne = new Person(12);Th ta to ra mt instance (th hin) l personOne ca class Person

    Bi 5 Lp trnh OOP (tip)Khai bo mt classpublic abstract class MyClass {}

    T th 1 l khai bo quyn truy xut v k tha,c 3 loi-public:c php truy xut t bt c ni no v bt c lp no cng c quyn ktha-protected:ch c phng thc cng gi c php truy xut v k tha-private:ch c phng thc cng gi c php truy xut nhng khng lp no cphp k tha-nu khng khai bo,mc nh l protected

    T th 2 l khai bo mt lp tru tng hay l khng tru tngNhiem vu: tao 1 lop Person, tao tiep 2 lop Students va Teachers ke thua lop Person, taolop Execute chua ham chinh de chay chuong trinh.

    --lop Person-Code:

  • 8/8/2019 Hoc Java Qua Cac Vi Du

    6/21

    abstract class Person

    {

    //cai nay goi la cac property hay state-thuoc tinh cua doi

    tuong

    String hoten;

    int age;

    String diachi;int luong;

    //cac constructor

    public Person(int age)

    {

    this.age = age;

    }

    //cac method hay behavior-hanh vi cua doi tuong

    public void Nhap()

    {

    hoten = Console.readLine("Nhap ho ten:");

    diachi = Console.readLine("Nhap dia chi:");

    }

    //vi la 1 class thuoc loai abstract nen Person duoc phep khai

    bao cac method khong co noi dung, noi dung cua class In se duoc cac

    lop ke thua no them vao noi dung cua rieng no

    public abstract void In();

    public abstract int Tinhluong();

    }

    --lop Students-Code:

    import corejava.*;

    class Students extends Person

    {

    int MaSV,Malop;

    public void Nhap()

    {

    super.Nhap();

    MaSV = Console.readInt("Nhap ma SV:");

    Malop = Console.readInt("Nhap ma lop:");

    }

    public void In()

    {

    System.out.println(hoten);

    System.out.println(diachi);

    System.out.println(MaSV);

    System.out.println(Malop);

    }

    public int Tinhluong()

    {return 150000;

    }

    }

    tu khoa super se goi ham Nhap() tu lop Person la cha cua lop Students

    --lop Teachers-Code:

  • 8/8/2019 Hoc Java Qua Cac Vi Du

    7/21

    import corejava.*;

    class Teachers extends Person

    {

    int Makhoa;

    public void Nhap()

    {

    super.Nhap();

    Makhoa = Console.readInt("Nhap ma khoa::");

    }

    public void In()

    {

    System.out.println(hoten);

    System.out.println(diachi);

    System.out.println(Makhoa);

    }

    public int Tinhluong()

    {

    return 500000;

    }

    }

    --lop Execute-

    import corejava.*;

    class Execute

    {

    public static void main(String args[])

    {

    Students st = new Students();

    st.Nhap();

    st.In();

    st.luong=st.Tinhluong();

    Teachers tc = new Teachers();

    tc.Nhap();

    tc.In();

    tc.luong=tc.Tinhluong();

    }

    }

    Khai bo mt thuc tnh:Khai bo 1 thuc tnhpublic static void temp;

    T th 1 l khai bo quyn truy xut,c 3 loi-public:c php truy xut t bt c ni no

    -protected:ch c lp con mi c php truy xut-private:ch c lp xi(thuc tnh ring ca n)-nu khng khai bo,mc nh l protectedb.T th 2 l khai bo cch truy xut(static)static(tnh)-nu khng khai bo,mc nh l khng tnhTt c cc i tng th hin t lp cha u c php thay i gi tr ca cc thuc

  • 8/8/2019 Hoc Java Qua Cac Vi Du

    8/21

  • 8/8/2019 Hoc Java Qua Cac Vi Du

    9/21

    - synchronized: ch cho php 1 thread truy cp vo khi m cng mt thi im- volatile: s dng vi bin thng bo rng gi tr ca bin c th c thay i viln v vy khng ghi vo thanh ghi.T th 3 l gi tr tr v.Nu khng c gi tr tr v th l voidinterface-template

    By gi ta c 1 khi nim mi, l giao din. Giao din ra i chnh l gii quyt ak tha. Mi lp trong Java ch c 1 lp cha, nhng c th implements nhiu giao din.Giao din c khai bo ging nh 1 lp, cng c state v behavior. Nhng state cagiao din l final cn behavior l abstractGi s, ta s khai bo mt giao din

    Code:

    public interface Product

    {

    //hai state duoi day la final, tuc la lop implements khong

    duoc phep doi gia tri

    static string maker = My Corp;

    static string phone = 555-7767;

    //behavior duoi day la abstract, tuc la khong co noi dung

    public int getPrice(int id);

    }

    By gi, ta s vit mt class c ci t (implements) giao din nyCode:

    public class Shoe implements Product

    {

    public int getPrince(int id)

    {

    return (id= =1)?5:10;

    }

    public String getMaker()

    {

    return maker;

    }

    }

    Mun implements nhiu giao din, lm nh sau, v d class Toyota extends Carimplements ActionCar, ActionMobilation

    package-unitHy to 1 th mc c tn l TransportBn trong th mc ny hy to 2 file l Car.java v Bicycle.java nh sau

    --Car.java-

    Code:

    package Transport;

    public class Car

    {

    public String manufacturer;

  • 8/8/2019 Hoc Java Qua Cac Vi Du

    10/21

    }

    --Bicycle.java-

    Code:

    package Transport;

    public class Bicycle

    {

    public int cost;

    public Bicycle(int cost)

    {

    this.cost = cost;

    }

    }

    Nh vy l ta to ra 1 gi cha 2 lp l Car v Bicycle. By gi ta c 1 chng trnhmun s dng gi ny l TestProgram.java. Ta vit:--ViDuTransport.java-Code:

    import Transport.*;class TestProgram

    {

    public static void main(String args[])

    {

    Car myCar = new Car();

    myCar.manufacturer = Toyota;

    Bicycle myBicycle = new Bicycle(1500);

    }

    }

    Lu nu trong file ViDuTransport bn khng khai bo import Transport.* th bn vnc th khai bo tng minh nh sau

    Transport.Car myCar = new Transport.Car();np chng (overload) 1 phng thc

    Code:

    class Vidu

    {

    public satic void main(String a[])

    {

    private float cost;

    public float CalculateSalePrice()

    {

    return cost*1.5;

    }

    public float CalculateSalePrice(double heso){

    return cost*(1+heso);

    }

    }

    }

    y c 2 phng thc trng tn CalculateSalePrice nhng phng thc th 2 khctham s, gi l np chng

  • 8/8/2019 Hoc Java Qua Cac Vi Du

    11/21

    * np chng (overload) v ghi (override)Nhng phng thc c np chng l nhng phng thc trong cng mt lp, c cngmt tn nhng danh sch i s khc nhau Phng thc c ghi l phng thc c mt lp cha, c xc nh l phngthc chung cho cc lp con, ri xut hin cc lp conNp chng l mt hnh thc a hnh (polymorphism) trong qu trnh bin dch (compile)cn ghi l trong qu trnh thc thi (runtime)

    Bi 6 Cc kiu d liu nguyn thy v php ton- Kiu nguyn: gm s nguyn(int,long)- Kiu du phy ng (hay kiu thc): gm s thc(float,double) - Kiu k t (char)- Kiu chui (String)Hng k t khai bo nh sau, v d 'H' (khc vi "H" l mt chui k t)Mt s hng k t c bit, v d '\\' biu din chnh k t\, v \u biu din Unicode,v d:

    '\u00B2' biu din (bnh phng)'\u00BC' biu din (mt phn t)'\u0170' biu din (m a)- Kiu booleanC 2 gi tr l 2 t kha true v false, v khng th chuyn kiu sang int*Khai bo binint i,j; //2 bin i v j c kiu d liu l intchar ch='A'; //bin ch kiu char khi to gi tr u 'A'*Khai bo hngHng c khai bo vi t kha final. V d:final float PI = 3.14159;

    *Php tonPhp ton ca Java ging C. Trong class java.lang.Math c mt s method dngtrong ton hc nh saudouble y = Math.pow(x,a) = x

    v random, sin, cos, tan, exp (m), log(logarit) ...* Cc php ton s hc- Vi c kiu nguyn v kiu thc: + - * / (php chia s cho ra kt qu kiu thc nu mttrong 2 ton t l kiu thc)- Chia ht (/) ch p dng khi c 2 ton t l kiu nguyn, v d 10/3=3- Chia ly d (%) ch p dng khi c 2 ton t l kiu nguyn, v d 10%3=1* Cc php ton quan h (so snh)- Bao gm ==,,= tr v kiu boolean* Cc php ton vi kiu logic- Bao gm and(k hiu &&) or(k hiu ||) not(k hiu !)* Php ++ v --- Php ny c 2 dng, mt l ++bin hay --bin, hai l bin++ hay bin-- S khc nhauch l khi php ny thc hin chung vi mt php ton khc th- Vi ++bin v --bin th n s thc hin php ton ny trc ri mi thc hin phpton khc

  • 8/8/2019 Hoc Java Qua Cac Vi Du

    12/21

    - Vi bin++ v bin-- th n s thc hin php ton khc trc ri mi thc hin phpton ny

    * Php gn- Php ny c dng a=5- Php gn phc, v d a+=5 ngha l a=a+5, hay a*=2 ngha l a=a*2* Trnh t kt hpHu ht cc php ton iu c trnh t kt hp t tri sang phi, ch c cc php sau lt phi sang tri- Php ++ v --- Cc php gn nh =,+=,-=,=

    Bi 7 Mnh ifnu em p th ti s ca em khng th ti ca a khcIF em p THEN ti s ca em ELSE ti ca a khcIF(em p) ti s ca em;ELSE ti ca a khc;C php (syntax) ca mnh IF lif(mnh ) lnh 1;else lnh 2;Nu mnh ng th thc hin lnh 1;Khng th thc hin lnh 2;V dCode:

    if(a>b) System.out.println(So lon nhat la +a);

    else System.out.println(So lon nhat la +b);

    *Ta xy dng mt bi ton lm trn sNhp vo mt s bt k. Nu phn thp phn s ny >=0.5, lm trn tng ln mt n v,ngc li gim i mt n v.Code:

    import java.io.*;

    public class Hello {

    public static void main(String[] args) throws Exception {

    BufferedReader in = new BufferedReader(new

    InputStreamReader(System.in));

    System.out.print("Nhap a: ");

    float a = Float.parseFloat(in.readLine());

    float ketqua=a%1;

    if(ketqua>=0.5) a=a-ketqua+1;

    else a=a-ketqua;

    System.out.println("Ket qua bai toan la: " + a);}

    }

    Bi 7 Mnh if(tt)* Php iu kin ? v php chn :- Gi s c mnh if

  • 8/8/2019 Hoc Java Qua Cac Vi Du

    13/21

  • 8/8/2019 Hoc Java Qua Cac Vi Du

    14/21

    Thay v lp li nhng cu if y, bn nn dng switch

    Code:

    import java.io.*;

    public class Hello {

    public static void main(String[] args) throws Exception {BufferedReader in = new BufferedReader(new

    InputStreamReader(System.in));

    System.out.print("Nhap diem so: ");

    int diem = Integer.parseInt(in.readLine());

    switch(diem)

    {

    case 0:

    case 1:

    case 2:System.out.println("Yeu");break;

    case 3:System.out.println("Trung binh");break;

    case 4:

    case 5:System.out.println("Gioi");break;

    default:System.out.println("Vao sai");

    }

    }

    }

    *break vi switch: break s thot ngay ra khi khi lnh trong thn ca switch

    Bi 9 StringKhc vi C, String l mt lp ca Java. String c khai bo nh sauString a = "Hello";Cng 2 String bng du +System.out.println("Gia tri la " + n);Java c kh nng t chuyn kiu bt c d liu kiu s no khi cng vo String. D n l

    int, float, double u c th chuyn thnh String nh mo vt ("" + n)Cc method trong class String* substringString s1 = "Hello";

    String s2 = s1.substring(0,4); //bt u t k t th 0 (tc l 'H') ly i 4 k t (tc l"Hell")

    * lengthint n = s1.length(); //tc l bng 5* charAtchar ch = s1.charAt(4); //tc l bng 'o'y l method tm k t th i trong String, cc k t trong String c nh s t 0

    * equalsKiu tra xem chui ngun s c ging chui ch d hay khng, ta dng method equals trv booleanboolean b = s.equals(t);String khng ging d liu kiu s, tuyt i khng dng ging nh if(s==t)* compareToint a = s2.compareTo(s1);

    a>0 s2>s1

  • 8/8/2019 Hoc Java Qua Cac Vi Du

    15/21

    a

  • 8/8/2019 Hoc Java Qua Cac Vi Du

    16/21

    VD: in tt c cc s t 0 n 10, b qua 3,4,5

    Code:

    for(int i=0;i

  • 8/8/2019 Hoc Java Qua Cac Vi Du

    17/21

  • 8/8/2019 Hoc Java Qua Cac Vi Du

    18/21

    * int binarySearchN s tm v tr ca mt phn t trong mt mng, tr v -1 nu khng tm thyint[] s = {28,7,14,11};int n = Arrays.binarySearch(s,14); n s bng 2Mng nhiu chiuint[][] = new int[100][50];Hoc khai bo 1 mng c gi tr u. y l mng 2 chiu gm 4 phn t l 4 mng 1chiu, mi mng 1 chiu cha 3 phn tCode:

    int[][] a =

    {

    {16, 3, 2},

    {5, 10, 11},

    {9, 6, 7},

    {4, 15, 14}

    }

    Bi 14 - ngoi l

    Code:

    int x,y;

    x=10;y=x-10;

    x=x/y;

    Khi chy on m ny bn s thy xut hin thng bojava.lang.ArithmeticException: divide by zeroV chng trnh s thot ra ngay lc . Mun chng trnh chy tip v khng thot ra,ta n "bt" ngoi l ny, a ra bin e, cui cng in e ( xem l ngoi l g)

    Code:

    int x,y;

    try

    {

    x=10;y=x-10;

    x=x/y;

    }

    catch(Exception e)

    {

    System.out.println(e.getMessage());}

    X l ngoi l (Exception) "nm" ngoi l do bt c dng m no trong mt phng thc sinh ra, bn c thkhai bo nm b ngoi l

  • 8/8/2019 Hoc Java Qua Cac Vi Du

    19/21

    Code:

    public void divide() throws Exception

    {

    int a=5/0;

    }

    hoc nu mun "bt" ngoi l li xem l ngoi l g x l, bn "bt" n ri inra

    Code:

    try

    {

    int a=5/0;

    }

    catch(Exception e)

    {

    System.out.println(e.getMessage());

    }

    Nu mun chng trnh thnh cng th sinh thng bo thnh cng, tht bi th sinhthng bo ngoi l, bn c th dng

    Code:

    boolean done=false;

    try

    {

    int a=5/b;

    done=true;

    }catch(Exception e)

    {

    System.out.println(e.getMessage());

    }

    if(done==true) System.out.println("Successful");

    Bi 15 - Vector (mng khng gii hn s phn t)Cc method trong bi ny nm 2 class java.util.Vector v java.util.EnumerationKhai bo

    Vector vt = new Vector();

    Nhp d liu cho mt Vector (class Console nm trong gi corejava)Lu l mi phn t ca Vector u phi l mt i tng, nn ta phi c newInteger(n) khi mun a vo mt bin kiu int. Tng t vi Byte, Long, Float, ...

    Code:

    do

  • 8/8/2019 Hoc Java Qua Cac Vi Du

    20/21

    int n = Console.readInt("");

    if(n!=0) vt.addElement(new Integer(n));

    }

    while(n!=0);

    In ra cc phn t ca mt Vector

    Code:

    for(int i=0;i

  • 8/8/2019 Hoc Java Qua Cac Vi Du

    21/21

    - th hin tnh ng gi cao- cc lp ni c th truy xut trc tip cc bin ca lp chaLu l lp ni khc vi cc lp m nm chung mt file, v d nh tp tinMainClass.java di y

    Code:

    public class MainClass

    {

    }

    class Subclass

    {

    }

    Khi bin dch n s to ra 2 file l MainClass.class v Subclass.class

    Bi 17 - To tp tin jar t chyGi s chng trnh ca bn c vi file .class trong file chng trnh chnh lMainPro.class chng hn.Bn hy to mt file ly tn l mymf.mf c ni dung nh sauMain-Class: MainPro

    Bt buc phi chnh xc nh th (tc l phi c c xung dng), khng th trnh chy jarkhng hiu c.Sau bn vo %JAVA_HOME%\bin\ chp tt c cc tp tin .class ca ng dng v cmymf.mf vo , ri chy jar.exe vi tham s dng lnh nh saujar cmfv mymf.mf MyProgram.jar *.classTng t nu bn mun a thm 2 th mc dir1 v dir2 v file JAR th bn cng gjar cmfv mymf.mf MyProgram.jar *.class dir1 dir2Trnh jar s to file MyProgram.jar (tn khc ty bn) c th chy c, khng phidng lnh java hay gi s khng c IDE quen thuc ca bn

    Ngun : thuviensv.comIn bi Tr v