Thứ Hai, 20 tháng 4, 2015

Bài tập lớn CTDLGT cho lớp VUW-IT

Bài 1. (Phát triển từ bài tìm danh từ riêng) Tìm xem danh từ riêng nào được đề cập đến nhiều nhất trong một tập văn bản ( khoảng 50-100 văn bản).

  • Các danh từ riêng bao gồm cả danh từ nối và không được nối.

Từ đó đưa ra xem danh từ nào đang là hot trend. (các danh từ được đề cập đến nhiều nhất trong nhiều văn bản)

  • Chú ý việc các danh từ viết tắt (cùng xuất hiện trong văn bản)

Tập văn bản (50-100) văn bản do sinh viên lấy từ các nguồn như BBC.com hoặc CNNNews.com hoặc VOANews.com

Có thể sử dụng chung tập dữ liệu nếu cùng làm một bài (Miễn là không dùng chung code :D )

Bài 2. Tìm tập danh từ riêng theo chủ đề

Đầu vào là một tập văn bản tiếng Anh thuộc nhiều chủ đề (>=3 chủ đề), mỗi chủ đề khoảng (10-20 văn bản). Các chủ đề như
  • Thể thao
  • Chính trị
  • Khoa học công nghệ
  • Kinh doanh
Với mỗi một chủ đề ta tìm các danh từ riêng và đưa ra tập danh từ riêng đăc jtrung cho từng chủ đề dựa trên tần số xuất hiện.

Danh từ riêng nào xuất hiện đồng thời trong nhiều chủ đề khác nhau ?
Danh từ đó có đặc điểm gì ?


Thứ Tư, 15 tháng 4, 2015

Tuyển thực tập làm về Big Data

Yêu cầu

  • Sử dụng thành thạo Java (Core Java)
  • Có kiến thức tốt về cấu trúc dữ liệu và thuật toán
  • Có khả năng tự học, tự nghiên cứu

Quyền lợi
  • Môi trường làm việc tốt
  • Có chế đỗ đãi ngộ tùy theo năng lực
  • Thời gian làm việc linh động tùy theo thời gian học (nửa buổi sáng hoặc chiều nếu phải học trên trường)
  • Được đào tạo cơ bản về các công nghệ tiên tiến nhất về Big Data và phân tích dữ liệu lớn
  • Được nhận vào làm chính thức nếu làm tốt
  • Được tham gia vào các dự án về Big Data (hệ thống recommendation, finger printing, big data analysis, real time ads-scheduler,..)
Liên hệ.
  • Comment vào cuối bài viết này hoặc PM nguyenduyhiep@gmail.com

Thứ Ba, 17 tháng 3, 2015

Bài tập giữa kỳ cho lớp VUW-IT 20142

Bài 1. Thống kê tần số xuất hiện và vị trí xuất hiện (theo câu hoặc dòng) của các danh từ riêng trong văn văn tiếng Anh.
Chương trình đọc vào 1 trong 5 file văn bản đính kèm, hiển thị ra các danh từ riêng trong văn bản đó.
Chương trình cho phép người dùng nhập vào một danh từ riêng, in ra màn hình kết quả:

  • Tần số xuất hiện
  • Vị trí xuất hiện
Nếu danh từ đó có xuất hiện trong văn bản đã cho.
Chú ý: Các danh từ riêng nếu đứng cạnh nhau thì cần được nối lại với nhau

Bài 2. Thống kê tần số xuất hiện và vị trí xuất hiện (theo câu hoặc dòng) của các từ trong văn văn tiếng Anh.
Chương trình đọc vào 1 trong 5 file văn bản đính kèm, hiển thị ra :

  • Các từ
  • Tần số xuất hiện
  • Độ dài từ và tần số của các từ theo độ dài 9độ dài của 1 từ là số ký tự trong từ đó)
Chương trình cho phép người dùng nhập vào một từ, in ra màn hình kết quả:

  • Tần số xuất hiện
  • Vị trí xuất hiện
Nếu từ đó có xuất hiện trong văn bản đã cho.
Có lựa chọn thống kê phân loại chữ hoa/thường hoặc không phân loại hoa/thường.

Chú ý. Các từ trong văn bản được ngăn cách nhau bởi dấu cách trống.

Bài 3. Cho một văn bản và một tập từ điển tiếng Anh. Kiểm tra xem trong văn bản tiếng anh đó có bao nhiêu từ lỗi chính tả (bỏ qua những từ có chữ hoa, hoặc chữ số).
Những từ lỗi là những từ không có trong từ điển.

Nếu đề xuất được phương án sửa từ sai sẽ được cộng điểm.

Tài liệu download tại

Chủ Nhật, 22 tháng 2, 2015

Bài tập lớn CTDL & GT cho lớp chiều thứ 2 (tiết 1-4)

Bài tập lớn CTDL & GT cho lớp chiều thứ 2 (tiết 1-4)


Yêu cầu chung:

  • Sinh viên tự đề xuất thuật toán dựa trên yêu cầu của đề bài
  • Tự chọn CTDL phù hợp và giải thích vì sao mình chọn CTDL đó
  • Đánh giá hiệu quả về thời gian và bộ nhớ của thuật toán 
Đây là các đề bài xuất phát từ yêu cầu thực tế, rất khó có thuật toán cho kết quả chính xác 100% (Điểm đánh giá sẽ ưu tiên các thuật toán nào cho kết quả tốt hơn)

Dữ liệu đầu vào:

Dữ liệu cho tất cả cacsc bài tập ở dưới được Download theo link sau: https://www.dropbox.com/s/k7y57sqsy5qzrkl/TechCrunch_Files.rar?dl=0
  • Các tập dữ liệu đầu vào được lấy từ các bài viết mới gần đây trên trang công nghệ TechCrunch, và ở dạng ngôn ngữ tiếng Anh.
  • Các bài viết được tổ chức thành từng file riêng theo dạng 0001.txt, 0002.txt,... (có khoảng gần 5K bài viết)
  • Format của mỗi bài viết gồm
    • Dòng đầu tiên là tiêu đề : title
    • Dòng tiếp là tác giả: author
    • Dòng tiếp là ngày được xuất bản : publish date
    • Các dòng tiếp theo là nội dung bài viết 
  • Trong bài viết có nhiều ngoại lệ (exception), sinh viên nên tự phát hiện và loại bỏ để tăng độ chính xác (VD. các thông tin phụ ở cuối bài viết) 

    Dữ liệu đầu ra:

    • Sinh viên nên tổ chức dữ liệu đầu ra dưới dạng file văn bản để dễ theo dõi

    Sinh viên có thể dùng các hệ quản trị CSDL đễ hỗ trợ tổ chức và lưu trữ dữ liệu (tuy nhiên điều này không được khuyến khích)

    Bài 1. Phát hiện các danh từ riêng, tên riêng trong các văn bản


    Sắp xếp các danh từ này theo tần số xuất hiện trên toàn bộ tập văn bản, và trên số lượng văn bản mà nó xuất hiện

    Hai cặp danh từ được coi là cùng xuất hiện nếu chúng xuất hiện gần nhau (trong khoảng cách 2-3 câu)

    Những danh từ nào có tần số xuất hiện nhiều nhất?

    • Trên toàn bộ tập văn bản (mỗi từ được tính nhiều lần nếu xuất hiện nhiều lần ở cùng 1 văn bản)
    • Trên nhiều văn bản nhất (mỗi từ chỉ được tính 1 lần xuất hiện trong 1 văn bản)

    Cặp danh từ nào được xuất hiện nhiều nhất?

    VD với văn bản

    A recent article in TechCrunch characterized nascent upstarts in the restaurant industry as wide-eyed idealists with little reality of the harsh, high-touch operating environment in which they operate. Having worked in the tech, food and health worlds for most of my career, I believe the article misrepresented the significant progress being made across the industry. On almost every front within hospitality — be it point of sale, loyalty, delivery or sourcing — change is in the air.

    For all the talk of the Aloha and MICROS point of sale (POS) systems dominanting in restaurants, a bevy of newcomers have been making inroads. Square, with its slick reader and now retail POS terminal, carries the most gravitas among the mobile POS companies for good reason: it inks deals with large retailers: Starbucks in 2012, then Whole Foods, Uniqlo and Godiva in 2014. Granted, none of these establishments switched over an entire store to Square, but these relationships suggest large retailers will embrace new technology.

    Danh từ riêng được in đậm
    • là các từ có ít nhất 1 chữ in hoa
    • Không chấp nhận các từ ở đầu câu hoặc đầu đoạn
    • Các từ hoa liền nhau (ngăn cách bởi 1 dấu cách trống) nên nối thành 1 từ dài
    • Các từ hoa liền nhau ngăn cách từ >= 2 dấu cách trống thì nên tách riêng ra.
    • Nếu mà phân biệt được các từ viết tắt thì càng tốt (các từ mà tất cả các ký tự đều viết hoa)
    Cặp danh từ trong phạm vi 2 câu là
    • {Aloha - MICROS} - POS
    • POS - {Starbucks - Whole Foods - Uniqlo - Godiva} 
    • {Starbucks - Whole Foods - Uniqlo - Godiva} - Square

    Bài 2. Thống kê tên thương hiệu (sản phẩm)/ công ty được đề cập trong bài báo

    Với các danh từ riêng trong bài báo ta cần phân ra được thành

    • Tên địa điểm, vị trí
    • Tên người
    • Tên sản phẩm/ tên công ty
    Làm sao phân biệt được tên địa điểm, tên người với các tên riêng khác ?

    • Tên địa điểm, vị trí, thời gian: gần đó thường có các giới từ như at, in, on
    • Tên người: gần đó thường có sở hữu cách:'s hoặc of
    • Tên sản phẩm/ tên công ty:
    Nếu không làm được ==> tự xây dựng từ điển tên công ty/ sản phẩm bằng tay (không khải thi cho lắm nếu chạy trên dữ liệu thực tế - khoảng vài tỷ bài viết)

    Công ty / sản phẩm nào được đề cập đến nhiều nhất ?

    Bài 3. sản phẩm nào là của công ty nào được đề cập trong các bài báo?


    VD. Apple : iphone, ipad,....

    Làm thế nào biết được sản phẩm nào của công ty nào?

    • Phát hiện tên công ty
    • Tên sản phẩm
    • Thường có các từ đặc trưng để kết nối như: a product of, a service of,....

    Bài 4. Tìm các bài viết đánh giá tốt hoặc xấu về một sản phẩm/ thương hiệu của công ty

    • Phát hiện ra các tên công ty, tên sản phẩm
    • Các tính từ đánh giá như : good, bad, worse,, (sinh viên tự xây dựng từ điển) 
    Các tính từ này phải nằm gần các câu chứa các danh từ thương hiệu (trong phạm vi khoảng 2-3 câu)

    Bài 5. Hai văn bản được coi là có liên quan đến nhau nếu có tập danh từ riêng trùng nhau nhiều

    • Tìm các tập danh từ riêng của 2 văn bản
    • Xác định tập danh từ riêng trùng nhau của 2 văn bản
    • Quyết định xem 2 văn bản có liên quan đến nhau hay không dựa trên ngưỡng (số lượng từ trùng nhau trên tổng số danh từ riêng của cả 2 văn bản). Ngưỡng này do sinh viên tự đề xuất!
    Với 1 bài đang đọc, hãy đưa ra danh sách các bài viết có liên quan (được sắp xếp theo thứ tự độ liên quan giảm dần)

    Để đảm bảo yêu cầu về thời gian xử lý, sinh viên có thể cần tính trước độ liên quan của các bài viết và đưa vào file tạm.

    Bài 6. n-gram là các cụm từ liên tiếp nhau (ở đây ta quan tâm tới 2-gram và 3-gram)

    Ta chỉ xét các n-gram trong phạm vi một bộ phận câu (bị ngăn cách bởi các dấu câu như  dấu ! dấu . dấu : dấu - ) 

    Dấu , được bỏ qua

    VD. Với văn bản 

    I believe the article misrepresented the significant progress being made across the industry. On almost every front within hospitality — be it point of sale, loyalty, delivery or sourcing — change is in the air.

    Ta có các bộ phận câu như

    • I believe the article misrepresented the significant progress being made across the industry
    • On almost every front within hospitality
    • be it point of sale, loyalty, delivery or sourcing
    • change is in the air
    Với câu 
    • change is in the air
    Ta có các 3-gram là:
    1. change is in
    2. is in the
    3. in the air

    Hai văn bản liên quan đến nhau (thường là trùng nhau hoặc cùng một chủ đề) nếu có số lượng n-gram trùng nhau nhiều.

    Hãy tìm các văn bản trùng/ có liên quan đến văn bản hiện tại dựa trên 3-gram (hoặc 2-gram)
    Ngưỡng trùng do sinh viên tự đề xuất.

    Thứ Ba, 18 tháng 11, 2014

    NGÀY TRỞ LẠI??

    Bỏ bẵng đi 1 thời gian do bận việc này việc khác, cũng bỏ quên không vào chăm sóc viết bài cho cái blog này. Tình hình nay quay lại vẫn thấy nhiều bạn ghé vào thường xuyên để ngâm cứu, cũng thấy vui vui.

    Dự tính thời gian tới lại cày kéo tiếp không thì kiến thức nó mai một đi hết thì phí. Mình thấy số lượng các bạn quan tâm tới Cocos2d-x cũng ngày càng tăng lên đáng kể, mới làm quen lập trình game cũng có, chuyển đổi từ engine - ngôn ngữ khác sang cũng có, nhưng túm lại là có phát triển. Tương lai của Engine này không biết tới đâu vì còn tùy thuộc vào Team phát triển của nó ( đang phát triển 3.3 - 3.4 rồi), nhưng chắc chắn cũng đang có nhiều người quan tâm. Càng đông càng vui nhỉ. Và sẽ học hỏi được nhiều điều hơn.

    Không biết từ Blog này có bạn nào đã tạo được dự án nào chưa? Mềnh cũng ủ làm vài cái nho nhỏ cho vui, mà giờ trượt tiến độ quá, hix. Chắc phải cày lại thôi

    Đôi lời cùng những ai đang ghé qua đây, hi vọng sẽ trở lại sớm sớm!


    Thứ Ba, 11 tháng 11, 2014

    Bài 10: Thêm một ví dụ về TextView, EditText, CheckBox, Button và ImageButton trong Android

    Để ôn tập kỹ hơn về TextView, EditText, CheckBox, Button và ImageButton, chúng ta sẽ làm thêm một ví dụ tổng hợp và nâng cao hơn. Để hiểu tốt bài này, các bạn cần có kiến thức về hướng đối tượng trong java, và việc triển khai, viết các class của nó. Chúng ta sẽ cùng nghiên cứu về bài tập này, và mình sẽ cố gắng giải thích một cách dễ hiểu nhất.


    Đề bài: Viết một chương trình cho phép nhập tên của học sinh, giới tính, học lực. Sau đó thống kê tổng số học sinh, và thống kê số học sinh theo giới tính, học lực.

    Giao diện Android
    Giao diện chương trình

    -Mô tả yêu cầu:
    • Khi bấm nút "Thêm", chương trình sẽ lưu lại kết quả vào trong một Arraylist.
    • Khi bấm nút  "Thống kê" chương trình sẽ hiển thị ra kết quả...
    • Khi bấm nút "Thoát" có biểu tượng như trên, chương trình sẽ hiện một hộp hội thoại AlertDialog hỏi có thoát hay không, và thực thi.
    Nếu các bạn đã theo dõi từ các bài trước, mình chắc là việc thiết kế giao diện như hình trên là một điều hoàn toàn dễ dàng, không hề khó khăn. Việc sử dụng các control như TextView, Editext, hay Button đều quen thuộc. Trong bài này, vấn đề của chúng ta nằm ở việc lưu trữ dữ liệu và thống kê để hiển thị ra ngoài.

    Theo yêu cầu đề bài, các bạn sẽ sử dụng một ArrayList để lưu trữ khi nhập dữ liệu của học sinh. Mỗi đối tượng học sinh có các thuộc tính: Tên học sinh, Giới tínhXếp Loại. Vì vậy các bạn cần phải tạo ra một class để lưu thông tin của học sinh và một class để lưu thông tin của danh sách học sinh.

    Bạn tạo thêm 2 class Java trong package chứa MainActivity.Java  và đặt tên như sau:
    Package Android


    Và sau đây là toàn bộ code của chương trình:
    + activity_main.xml:

    <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
         xmlns:tools="http://schemas.android.com/tools"
         android:id="@+id/ScrollView1"
         android:layout_width="match_parent"
         android:layout_height="match_parent" >
    <LinearLayout android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
       
        <TextView
            android:text="Thông Tin Học Sinh"
            android:textSize="18sp"
            android:textStyle="bold"
            android:textColor="#008000"
            android:background="#FFFF00"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" />
       
        <TableLayout android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:stretchColumns="*"
            android:layout_weight="1">
           
            <TableRow android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="10dp"
                android:layout_marginLeft="10dp">
               
                <TextView
                    android:text="Tên Học Sinh"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content" />
                <EditText
                    android:id="@+id/edtTenHS"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:ems="10"
                    />
               
            </TableRow>
           
            <TableRow android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="10dp"
                android:layout_marginLeft="10dp">
               
                <TextView
                    android:text="Giới tính"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content" />
                <RadioGroup android:id="@+id/rgGioiTinh"
                    android:orientation="horizontal">
                    <RadioButton
                        android:id="@+id/rgNam"
                        android:text="Nam"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:checked="true"/>
                    <RadioButton
                        android:id="@+id/rgNu"
                        android:text="Nữ"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content" />
                </RadioGroup>
               
            </TableRow>
           
            <TableRow android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="10dp"
                android:layout_marginLeft="10dp">
               
                <TextView
                    android:text="Xếp Loại:"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content" />
                <RadioGroup android:id="@+id/rgXepLoai"
                    android:orientation="horizontal">
                    <RadioButton
                        android:id="@+id/rgTB"
                        android:text="TB"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:checked="true"/>
                    <RadioButton
                        android:id="@+id/rgKha"
                        android:text="Khá"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content" />
                    <RadioButton
                        android:id="@+id/rgGioi"
                        android:text="Giỏi"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content" />
                </RadioGroup>
               
            </TableRow>
           
        </TableLayout>
       
        <LinearLayout android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:layout_marginTop="10dp"
            android:layout_weight="1">
           
            <Button android:id="@+id/btnThem"
                android:text="Thêm"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"/>
            <Button android:id="@+id/btnThongKe"
                android:text="Thống kê"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"/>
        </LinearLayout>
       
         <TextView
            android:text="Thống kê"
            android:textSize="18sp"
            android:textStyle="bold"
            android:textColor="#008000"
            android:background="#FFFF00"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="10sp"/>
       
         <TableLayout android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:stretchColumns="*"
            android:layout_weight="1">
            <TableRow android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1">
                <TextView
                    android:text="Tổng học sinh: "
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content" />
               
                <EditText
                    android:id="@+id/edtTongHS"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:ems="10"  />
            </TableRow>
           
            <TableRow android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1">
                <TextView
                    android:text="Học sinh Nam: "
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content" />
               
                <EditText
                    android:id="@+id/edtHSNam"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:ems="10"  />
            </TableRow>
           
            <TableRow android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1">
                <TextView
                    android:text="Học sinh Nữ: "
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content" />
               
                <EditText
                    android:id="@+id/edtHSNu"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:ems="10"  />
            </TableRow>
            <TableRow android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1">
                <TextView
                    android:text="Số học sinh giỏi: "
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content" />
               
                <EditText
                    android:id="@+id/edtHSGioi"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:ems="10"  />
            </TableRow>
            <TableRow android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1">
                <TextView
                    android:text="Số học sinh khá: "
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content" />
               
                <EditText
                    android:id="@+id/edtHSKha"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:ems="10"  />
            </TableRow>
           
            <TableRow android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1">
                <TextView
                    android:text="Số học sinh TB: "
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content" />
               
                <EditText
                    android:id="@+id/edtHSTB"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:ems="10"  />
            </TableRow>
           
         </TableLayout>
        
         <ImageButton
             android:id="@+id/imgbtnExit"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:src="@drawable/exit"/>
    </LinearLayout>   
    </ScrollView>


    +MainActivity.java

    package com.example.dshocsinh;

    import com.example.tthoadon.R;

    import android.support.v7.app.ActionBarActivity;
    import android.support.v7.app.ActionBar;
    import android.support.v4.app.Fragment;
    import android.app.AlertDialog;
    import android.app.AlertDialog.Builder;
    import android.content.DialogInterface;
    import android.os.Bundle;
    import android.view.LayoutInflater;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.view.ViewGroup;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.ImageButton;
    import android.widget.RadioGroup;
    import android.os.Build;

    public class MainActivity extends ActionBarActivity {

    private ImageButton imgbtnExit;
    private Button btnThem, btnThongKe;
    private EditText edtTenHS, edtTongHS,edtHSNam, edtHSNu, edtHSGioi, edtHSKha, edtHSTB;
    private RadioGroup rgGioitinh, rgXepLoai;
    private DanhSachHocSinh dshs = new DanhSachHocSinh();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    getControl(); //Hàm lấy control của các View trong activty_main.xml
    doYourWork(); //Thực thi công việc theo yêu cầu
    }


    private void getControl() {
    // TODO Auto-generated method stub

    imgbtnExit = (ImageButton)findViewById(R.id.imgbtnExit);
    btnThem = (Button)findViewById(R.id.btnThem);
    btnThongKe = (Button)findViewById(R.id.btnThongKe);
    edtTongHS = (EditText)findViewById(R.id.edtTongHS);
    edtHSNam = (EditText)findViewById(R.id.edtHSNam);
    edtHSNu = (EditText)findViewById(R.id.edtHSNu);
    edtHSGioi = (EditText)findViewById(R.id.edtHSGioi);
    edtHSKha = (EditText)findViewById(R.id.edtHSKha);
    edtHSTB = (EditText)findViewById(R.id.edtHSTB);
    edtTenHS = (EditText)findViewById(R.id.edtTenHS);
    rgGioitinh = (RadioGroup)findViewById(R.id.rgGioiTinh);
    rgXepLoai = (RadioGroup)findViewById(R.id.rgXepLoai);
    }

    private void doYourWork() {
    // TODO Auto-generated method stub

    btnThem.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
    //Tạo mới 1 đối tượng hs và gán thuộc tính
    HocSinh hs = new HocSinh();
    if(rgGioitinh.getCheckedRadioButtonId()==R.id.rgNam){
    hs.setGioiTinh(true);
    }else{
    hs.setGioiTinh(false);
    }
    if(rgXepLoai.getCheckedRadioButtonId()==R.id.rgTB){
    hs.setXepLoai(1);
    }else if(rgXepLoai.getCheckedRadioButtonId()==R.id.rgKha){
    hs.setXepLoai(2);
    }else{
    hs.setXepLoai(3);
    }
    //Thêm đối tượng hs vào trong dshs
    dshs.addHocSinh(hs);
    edtTenHS.setText("");
    }
    });

    btnThongKe.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
    edtTongHS.setText(""+dshs.tongHocSinh());
    edtHSGioi.setText(""+dshs.hsGioi());
    edtHSKha.setText(""+dshs.hsKha());
    edtHSTB.setText(""+dshs.hsTB());
    edtHSNam.setText(""+dshs.tongHSNam());
    edtHSNu.setText(""+dshs.tongHSNu());
    }
    });

    imgbtnExit.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
    // TODO Auto-generated method stub

    AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this);
    builder.setTitle("Thoát chứ nhỉ");
    builder.setMessage("Có là thoát này ...");
    builder.setNegativeButton("Không", new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
    dialog.cancel();
    }
    });

    builder.setPositiveButton("Có", new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
    finish();
    }
    });

    builder.create().show();


    }
    });
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {

    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();
    if (id == R.id.action_settings) {
    return true;
    }
    return super.onOptionsItemSelected(item);
    }

    /**
    * A placeholder fragment containing a simple view.
    */


    }

    + HocSinh.java
    package com.example.dshocsinh;

    public class HocSinh {
    private String tenHocSinh;
    private boolean gioiTinh;
    private int xepLoai;

    public String getTenHocSinh() {
    return tenHocSinh;
    }
    public void setTenHocSinh(String tenHocSinh) {
    this.tenHocSinh = tenHocSinh;
    }
    public boolean isGioiTinh() {
    return gioiTinh;
    }
    public void setGioiTinh(boolean gioiTinh) {
    this.gioiTinh = gioiTinh;
    }
    public int getXepLoai() {
    return xepLoai;
    }
    public void setXepLoai(int xepLoai) {
    this.xepLoai = xepLoai;
    }


    public int checkXepLoai(){
    return this.getXepLoai();
    }
    }

    + DanhSachHocSinh.java
    package com.example.dshocsinh;

    import java.util.ArrayList;

    public class DanhSachHocSinh {

    private ArrayList listHS = new ArrayList();

    public void addHocSinh(HocSinh hs){
    listHS.add(hs);
    }

    public int tongHocSinh(){
    return listHS.size();
    }

    public int tongHSNam(){
    int tong = 0;
    for (HocSinh hs : listHS) {
    if(hs.isGioiTinh()==true){
    tong++;
    }
    }
    return tong;
    }
    public int tongHSNu(){
    int tong = 0;
    for (HocSinh hs : listHS) {
    if(hs.isGioiTinh()==false){
    tong++;
    }
    }
    return tong;
    }

    public int hsTB(){
    int tong = 0;
    for(HocSinh hs: listHS){
    if(hs.getXepLoai()==1){
    tong++;
    }
    }
    return tong;
    }

    public int hsKha(){
    int tong = 0;
    for(HocSinh hs: listHS){
    if(hs.getXepLoai()==2){
    tong++;
    }
    }
    return tong;
    }

    public int hsGioi(){
    int tong = 0;
    for(HocSinh hs: listHS){
    if(hs.getXepLoai()==3){
    tong++;
    }
    }
    return tong;
    }
    }

    *** Chú ý:
    •  Các bạn lưu ý cách xây dựng 2 class HocSinh.java và DanhSachHocSinh.java. Điều này rất quan trọng cho sau này khi các bạn muốn xây dựng ứng dụng Android phức tạp hơn.
    • Một mẹo nhỏ để code nhanh khi xây dựng một class tương tự HocSinh.java. Các bạn chỉ cần khai báo các thuộc tính sau: 
        private String tenHocSinh;
        private boolean gioiTinh;
        private int xepLoai;

    Sau đó chuột phải vào nền soạn thảo của eclipse, chọn Source, chọn Generate Getters and Setters... Sau đó đánh dấu vào các ô vuông và OK. Trình soạn thảo sẽ tự sinh ra code của các hàm này.
    Getter And Setter Android

    Qua bài tập này, mình hy vọng các bạn đã nắm vững được việc sử dụng các control cơ bản: TextView, EditText, Checkbox... Mong rằng các bạn sẽ mở rộng và tự mầy mò thêm các bài tập để nắm vững kiến thức, tránh để học trước quên sau nhé :). Nếu các bạn có gì thắc mắc, hãy bình luận ngay tại đây. Hoặc các bạn có thể sử dụng anh Gu Gồ để thỏa mãn https://www.google.com.vn/

    Bài đăng phổ biến