36
Báo cáo Thực hành JAVA GVHD : Trịnh Công Duy MỤC LỤC LỜI NÓI ĐẦU........................................................................................................................... 2 PHẦN 1: CÁC BÀI TẬP CƠ BẢN............................................................................................... 3 Bài 1:........................................................................................................................................ 3 Bài 2:........................................................................................................................................ 3 Bài 3:........................................................................................................................................ 4 Bài 4:........................................................................................................................................ 4 Bài 5:........................................................................................................................................ 5 Bài 6:........................................................................................................................................ 5 Bài 7:........................................................................................................................................ 7 Bài 8:........................................................................................................................................ 7 Bài 9:........................................................................................................................................ 8 Bài 10:..................................................................................................................................... 8 Bài 11:..................................................................................................................................... 9 Bài 12:..................................................................................................................................... 9 Bài 13:................................................................................................................................... 11 Bài 14:................................................................................................................................... 13 Bài 15:................................................................................................................................... 15 Bài 16:................................................................................................................................... 17 Bài 17:................................................................................................................................... 18 PHẦN 2: CÁC BÀI TẬP VỀ GIAO DIỆN................................................................................... 20 Bài 1:...................................................................................................................................... 20 Bài 2:...................................................................................................................................... 20 Bài 3:...................................................................................................................................... 21 Bài 4:...................................................................................................................................... 21 Bài 5:...................................................................................................................................... 22 Bài 6:...................................................................................................................................... 23 Bài 7:...................................................................................................................................... 23 Bài 8:...................................................................................................................................... 24 Bài 9:...................................................................................................................................... 25 Bài 10:................................................................................................................................... 25 KẾT LUẬN............................................................................................................................... 27 I.Kết quả đạt được :............................................................................................................. 27 II.Những điều chưa đạt được :........................................................................................... 27 Nguyễn Minh Khoa - Lớp 06T4- Nhóm 12A Trang 1

Bao cao TH JAVA

Embed Size (px)

Citation preview

Page 1: Bao cao TH JAVA

Báo cáo Thực hành JAVA GVHD : Trịnh Công Duy

MỤC LỤC LỜI NÓI ĐẦU...............................................................................................................................2PHẦN 1: CÁC BÀI TẬP CƠ BẢN.................................................................................................3Bài 1:............................................................................................................................................3Bài 2:............................................................................................................................................3Bài 3:............................................................................................................................................4Bài 4:............................................................................................................................................4Bài 5:............................................................................................................................................5Bài 6:............................................................................................................................................5Bài 7:............................................................................................................................................7Bài 8:............................................................................................................................................7Bài 9:............................................................................................................................................8Bài 10:..........................................................................................................................................8Bài 11:..........................................................................................................................................9Bài 12:..........................................................................................................................................9Bài 13:........................................................................................................................................11Bài 14:........................................................................................................................................13Bài 15:........................................................................................................................................15Bài 16:........................................................................................................................................17Bài 17:........................................................................................................................................18PHẦN 2: CÁC BÀI TẬP VỀ GIAO DIỆN...................................................................................20Bài 1:..........................................................................................................................................20Bài 2:..........................................................................................................................................20Bài 3:..........................................................................................................................................21Bài 4:..........................................................................................................................................21Bài 5:..........................................................................................................................................22Bài 6:..........................................................................................................................................23Bài 7:..........................................................................................................................................23Bài 8:..........................................................................................................................................24Bài 9:..........................................................................................................................................25Bài 10:........................................................................................................................................25KẾT LUẬN..................................................................................................................................27I.Kết quả đạt được :....................................................................................................................27II.Những điều chưa đạt được :...................................................................................................27

Nguyễn Minh Khoa - Lớp 06T4- Nhóm 12A Trang 1

Page 2: Bao cao TH JAVA

Báo cáo Thực hành JAVA GVHD : Trịnh Công Duy

LỜI NÓI ĐẦU ------

Lập trình Java là một trong những môn chuyên ngành của khoa công nghệ thông tin. Nó cung cấp cho chúng em rất nhiều kiến thức về lập trình cơ sở,đặt biệt là phương pháp lập trình hướng đối tượng. Qua bài thực hành này đã giúp chúng em nắm vững thêm kiến thức cơ bản trên lớp và rèn luyện kỹ thuật lập trình trên ngôn ngữ Java với nhiều kĩ năng rất bổ ích.Xin cảm ơn thầy Trịnh Công Duy đã nhiệt tình giảng dạy và hướng dẫn em hoàn thành bài thực hành này cũng như các thầy cô khác trong khoa đã giảng dạy chúng em trong những học kỳ vừa qua.

Em đã cố gắng rất nhiều,nhưng có lẽ không tránh khỏi thiếu sót,mong các thầy cô và các bạn giúp đỡ.

Đà Nẵng, ngày 30 tháng 12 năm 2009 Giáo viên hướng dẫn : Trịnh Công Duy Sinh viên thực hiện : Nguyễn Minh Khoa Nhóm 12A-Lớp 06T4-Khoa CNTT

Đại Học Bách Khoa Đà Nẵng

Nguyễn Minh Khoa - Lớp 06T4- Nhóm 12A Trang 2

Page 3: Bao cao TH JAVA

Báo cáo Thực hành JAVA GVHD : Trịnh Công Duy

BÀI LÀM

PHẦN 1: CÁC BÀI TẬP CƠ BẢN

Bài 1:a.Đề bài: Viết chương trình nhập vào n từ bàn phím, nếu n nguyên dương hãy tính tổng của biểu thức sau: 1/1+1/2+1/3+…+1/n , ngược lại hãy thông báo lỗi. Kết quả định dạng lấy 3 số lẻ.

Ví dụ: Nhập vào n=5 thì tổng =1/1+1/2+1/3+1/4+1/5=2.283 Nhập vào n<=0 thì thông báo : Hãy nhập vào số nguyên dương.

b.Cách giải quyết: Xây dựng hàm tính tổng : TinhS(int n) - Cho S=0; trong khi biến i<=n thì gán S=S+1.0/i; Hàm làm tròn : round(double number, int digit)

- Cho biến tạm =1;- Trong khi biến i<digit + Nhân biến tạm lên 10 + Nhân số number với biến tạm rồi làm tròn với hàm Math.round(number); + Chia number cho tạm.

c.Kết quả chạy demo: Nhập n=5

Nhập n<0

Bài 2: a. Đề bài: Viết chương trình nhập vào n từ bàn phím, in ra tổng các số lẻ (1+3+5….+n) nếu n là số chẳn, và in ra tổng các số chẳn (2+4+6+….n) nếu n là số lẻ.

Ví dụ: Nhập vào n=8 thì tổng=1+3+5+7=16 Nhập n=7 thì tổng=2+4+6=12 b. Cách giải quyết:

Xây dựng hàm TinhS(int n) : + Nếu n chẵn : Trong khi i<=n ; nếu i lẻ ,gán S=S+i;

Nguyễn Minh Khoa - Lớp 06T4- Nhóm 12A Trang 3

Page 4: Bao cao TH JAVA

Báo cáo Thực hành JAVA GVHD : Trịnh Công Duy

+ Nếu n lẻ : Trong khi i<=n ; nếu i chẵn ,gán S=S+i;c. Kết quả chạy Demo: Nhập n=8 :

Nhập n=7:

Bài 3:a. Đề bài: Viết chương trình tạo ra 100 số ngẫu nhiên từ 10-100. In ra số lớn nhất trong 100 số ngẫu nhiên vừa tạo.b. Cách giải quyết:

Xây dựng hàm random trong khoảng (a,b): +Tạo hàm : getRandomIntInBetween(int min, int max) +Trả về min+r.nextInt(max-min);

Hàm tìm max: timmax(int b[]): trả về số lớn nhất trong mảng b Hàm main : khai báo một mảng,gán các phần tử của mảng là các giá trị random vừa tạo ra rồi tìm max.

c. Kết quả chạy Demo:

Bài 4: a. Đề bài: Viết chương trình tạo ra 100 số ngẫu nhiên từ 10-100. Đếm số các phần tử chẳn, số các phần tử lẻ và xuất kết quả ra màn hình. b. Cách giải quyết:

Xây dựng hàm random trong khoảng (a,b): +Tạo hàm : getRandomIntInBetween(int min, int max) +Trả về min+r.nextInt(max-min);

Đếm số chẵn : cho i chạy từ 1 đến 100,nếu phần tử nào trong mảng b[] là số chẵn thì tăng biến đếm 1 đơn vị

Nguyễn Minh Khoa - Lớp 06T4- Nhóm 12A Trang 4

Page 5: Bao cao TH JAVA

Báo cáo Thực hành JAVA GVHD : Trịnh Công Duy

Đếm số lẻ : cho i chạy từ 1 đến 100,nếu phần tử nào trong mảng b[] là số lẽ thì tăng biến đếm 1 đơn vị In ra số các số chẵn và số các số lẻ.

c. Kết quả chạy Demo:

Bài 5: a. Đề bài: Viết phương thức dùng để chuyển ký tự đầu của mỗi từ trong câu sang chữ hoa (giống như chức năng Title Case trong MS.Word). Phương thức gồm một tham số, đó chính là câu cần chuyển. Phương thức trả về câu sau khi chuyển chữ cái đầu mỗi từ sang chữ hoa.

Ví dụ: Câu nhập vào: “Hôm qua, trời mưa rất to.” Câu xuất ra: “Hôm Qua, Trời Mưa Rất To.”

b. Cách giải quyết: Xây dựng hàm chuẩn hóa: chuanHoa(String st) + Khai báo một chuỗi trắng: String str = ""; + Cắt khoảng trắng ở hai đầu chuỗi đầu vào : st=st.trim(); + Chia chuỗi ra thành các chuỗi con tại khoảng trắng : String arr[] = st.split(" ");rồi gán vào mảng. + Đổi kí tự đầu tiên thành chữ in hoa : arr[i]=arr[i].substring(0,1).toUpperCase().concat(arr[i].substring(1))+" ";

c. Kết quả chạy Demo:

Bài 6:a. Đề bài: Hãy viết phương thức docSoSangChu, phương thức nhận vào một tham số thuộc kiểu số nguyên (int), phương thức trả về kết quả là chuỗi (String) cho biết cách đọc số n ra dạng chữ:

Ví dụ: n=235 => Hai trăm ba mươi lăm n=1305 => Một nghìn ba trăm lẻ năm

b. Cách giải quyết: Khai báo hàm String numberToTextA(int number) để trả về tên gọi một số ở

Nguyễn Minh Khoa - Lớp 06T4- Nhóm 12A Trang 5

Page 6: Bao cao TH JAVA

Báo cáo Thực hành JAVA GVHD : Trịnh Công Duy

một cấp nào đó chẳng hạn (hàng trăm, hàng chục,đơn vị..vv) ta sử dụng cấu trúc switch case với các trường hợp:

case 0: sR = "khong"; break; case 1: sR = "mot"; break; case 2: sR = "hai"; break; case 3: sR = "ba"; break; case 4: sR = "bon"; break; case 5: sR = "nam"; break; case 6: sR = "sau"; break; case 7: sR = "bay"; break; case 8: sR = "tam"; break; case 9: sR = "chin"; break;

default: sR = ""; Khai báo hàm String numberToTextB(int number) để trả về tên đọc kèm theo tên số đã đặt ở hàm trước ,ta cũng sử dụng cấu trúc switch case với khai báo như sau: case 0: sR = " "; break; case 1: sR = "Muoi"; break; case 2: sR = "Hai muoi"; break; case 3: sR = "Ba muoi"; break; case 4: sR = "Bon muoi"; break; case 5: sR = "Nam muoi"; break; case 6: sR = "Sau muoi"; break; case 7: sR = "Bay muoi"; break; case 8: sR = "Tam muoi"; break; case 9: sR = "Chin muoi"; break; default: sR = ""; Xây dựng làm chuyển đơn vị để thực hiện đổi các cấu trúc số sang cách đọc

của người Việt: ChuyenDV(String Number) + Lấy giá độ dài chuỗi đầu vào vào len = Number.length(); + Nếu len=1 đọc tên số đó. + Nếu len=2 : - Nếu số hàng chục = 1,số hàng đơn vị >0 ,nếu số hàng đơn vị =5 thì đọc “muoi lam” ,nếu số hàng đơn vị khác 5 thì đọc “muoi”+ tên số ở hàng đơn vị. - Nếu số hàng đơn vị là 0 thì đọc “muoi” - Nếu số hàng chục khác 1 đọc tên số hàng chục + “muoi”+ tên số ở hàng đơn vị. + Nếu len=3 : - Nếu số hàng chục =0 và số hàng đơn vị >0 ; đọc tên số hàng trăm + “tram linh”+tên số hàng đơn vị. - Nếu số hàng chục và đơn vị =0 ;đọc tên số hàng trăm + “tram”

- Nếu số hàng chục bằng 1 ta đọc tương tự như trường hợp len=2 nhưng thêm vào chữ “tram”

Nguyễn Minh Khoa - Lớp 06T4- Nhóm 12A Trang 6

Page 7: Bao cao TH JAVA

Báo cáo Thực hành JAVA GVHD : Trịnh Công Duy

- Nếu số hàng chục khác 1 ta cũng đọc tương tự : đọc tên số hàng Trăm+ “tram”+tên số hàng chục+ “chuc”+ tên số hàng đơn vị.

Khai báo hàm String tranlate(int a) để chia số nhập vào thành lớptỷ,triệu, nghìn…,mỗi lớp lấy 3 chữ số. Sau khi xử lý 3 chữ số này với hàm

ChuyenDV(String Number) ta thêm các kí tự “ty”, “trieu”, “nghin” tương ứng kết quả cuối cùng được một chuỗi đọctheo tiếng Việt.

c. Kết quả chạy Demo: n=235

n=1305

Bài 7:a. Đề bài: Viết chương trình nhập vào một chuỗi các con số ngăn cách bởi dấu phẩy. Tính tổng các số đó và xuất ra màn hình.

Ví dụ: N hập vào chuỗi: 12, 4, 5, 7, 8 In ra tổng là: 12+4+5+7+8=36.

b. Cách giải quyết: Khai báo hàm tính tổng : tong(String st) Khai báo một chuỗi trắng String str = ""; Cắt khoảng trắng hai đầu chuỗi nhập vào st=st.trim() Cắt chuỗi ra từng con số ngăn bởi dấu “, ” : String arr[] = st.split(","); Gán vào một mảng rồi tính tổng

c. Kết quả chạy Demo:

Bài 8:a. Đề bài: Viết phương thức dùng để đếm số lần 1từ nào đó xuất hiện trong một câu. Phương thức gồm hai tham số, tham số thứ nhất là một câu, tham số thứ hai là từ cần kiểm tra. Phương thức trả về số lần từ đó xuất hiện trong câu.b. Cách giải quyết:

Nguyễn Minh Khoa - Lớp 06T4- Nhóm 12A Trang 7

Page 8: Bao cao TH JAVA

Báo cáo Thực hành JAVA GVHD : Trịnh Công Duy

Khai báo hàm kiểm tra : kiemtra(String cau,String tu) Cho biến k chạy từ 0 đến độ dài của câu- độ dài của từ Lấy ra từng đoạn trong “cau” có độ dài bằng “tu” rồi gán vào chuỗi “tam” như sau : tam=cau.substring(k,k+tu.length()); Nếu “tam”= “tu” tăng biến đếm lên 1 đơn vị,cuối cùng trả về biến đếm

c. Kết quả chạy Demo:

Bài 9: a. Đề bài: Viết chương trình nhập vào một chuỗi các ký tự từ bàn phím. Đếm số ký tự nguyên âm có trong chuỗi vừa nhập (các nguyên âm: a, e, u, o, i).

Ví dụ: Chuỗi nhập vào: “trung tam tin hoc” Xuất ra tổng các nguyên âm: 4

b. Cách giải quyết: Cho biến i chạy theo độ dài của chuỗi Nếu kí tự thứ i của câu là nguyên âm thì tăng biến đếm lên 1 đơn vị. Câu lệnh lấy kí tự thứ i của câu và so sánh với nguyên âm có dạng :

(cau.charAt(i)=='a') c. Kết quả chạy Demo:

Bài 10:a. Đề bài: Viết phương thức dùng để thay thế một từ nào đó xuất hiện trong một câu bằng một từ khác, không phân biệt chữ thường hay chữ hoa (giống như chức năng Replace All trong MS.Word). Phương thức gồm ba tham số: tham số thứ nhất là một câu, tham số thứ hai là từ cần thay thế và tham số thứ ba là từ mới. Phương thức trả về câu sau khi đã thay thế tất cả các từ.

Ví dụ: Câu cần thay: “Ah Hoa! Ah Dao. Hien Ah, Thao My” Cần thay từ “Ah” thành từ “Anh”

Kết quả sau khi thay thế: “Anh Hoa! Anh Dao. Hien Anh, Thao My”b. Cách giải quyết:

Khai báo hàm thay thế : thaythe(String cau, String tu, String tumoi) Cho biến k chạy từ 0 đến độ dài của câu- độ dài của từ Lấy ra từng đoạn trong “cau” có độ dài bằng “tu” rồi gán vào chuỗi “tam”

như sau : tam=cau.substring(k,k+tu.length());

Nguyễn Minh Khoa - Lớp 06T4- Nhóm 12A Trang 8

Page 9: Bao cao TH JAVA

Báo cáo Thực hành JAVA GVHD : Trịnh Công Duy

Nếu “tam”= “tu” thay thế “tu” bằng “tumoi” : cau=cau.replace(tu,tumoi)c. Kết quả chạy Demo:

Bài 11:a. Đề bài: Viết phương thức dùng để kiểm tra 1 từ có xuất hiện trong một câu không. Phương thức gồm hai tham số, tham số thứ nhất là một câu, tham số thứ hai là từ cần kiểm tra. Phương thức trả về true nếu từ xuất hiện trong câu, ngược lại phương thức trả về false b. Cách giải quyết:

Khai báo hàm kiểm tra : kiemtra(String cau,String tu) Cho biến k chạy từ 0 đến độ dài của câu- độ dài của từ Lấy ra từng đoạn trong “cau” có độ dài bằng “tu” rồi gán vào chuỗi “tam”

như sau : tam=cau.substring(k,k+tu.length()); Nếu “tam”= “tu” trả về true

c. Kết quả chạy Demo:

Bài 12:a. Đề bài: Tạo lớp PhuongTrinhBacNhat có 2 biến a và b là 2 số nguyên.

• Định nghĩa các phương thức setters/getters cho các biến. • Tạo 2 hàm constructors cho đối tượng: + constructor default: là constructor không có tham số, dùng để khởi gán các giá trị bằng 0 cho các biến của đối tượng. + constructor copy: constructor có đầy đủ tham số (số tham số của constructor này bằng với số data instance ta đã khai báo). Constructor này thường dùng để khởi tạo 1 đối tượng đầy đủ. • Định nghĩa phương thức đặc tả dạng chuỗi của đối tượng (phương thức toString). • Viết một phương thức giaiPT dùng để giải phương trình bậc nhất ax+b = 0 • Viết lớp cho phần thử nghiệm (Driver Class) của lớp PhuongTrinhBacNhat vừa tạo. • A UML class diagram:

Nguyễn Minh Khoa - Lớp 06T4- Nhóm 12A Trang 9

Page 10: Bao cao TH JAVA

Báo cáo Thực hành JAVA GVHD : Trịnh Công Duy

b. Cách giải quyết: Khai báo biến :

+ private int a; + private int b; Phương thức geta() : return a; Phương thức getb(): return b; Phương thức seta(): this.a = a; Phương thức setb(): this.b = b; Constructor default: bai12PhuongTrinhBacNhat(){}; Constructor copy: bai12PhuongTrinhBacNhat(int a,int b)throws Exception {

seta(a); setb(b);

} Phương thức toString: mô tả dạng String String s=""; s=s+Integer.toString(a)+"x + "+Integer.toString(b)+" =0"; Phương thức giaiPT:

+ Nếu a=0&&b=0 phương trình vô số nghiệm. + Nếu a=0&&b!=0 phương trình vô nghiệm. + Các trường hợp khác có nghiệm –b/a

Phần thử nghiệm: + Tạo đối tượng “t” kieu PhuongTrinhBacNhat + Gọi “t.giaiPT”

c. Kết quả chạy Demo: Giả sử ta gọi t= new bai12PhuongTrinhBacNhat(8,4); Có kết quả là :

Với t= new bai12PhuongTrinhBacNhat(8,0);

Nguyễn Minh Khoa - Lớp 06T4- Nhóm 12A Trang 10

Page 11: Bao cao TH JAVA

Báo cáo Thực hành JAVA GVHD : Trịnh Công Duy

Bài 13:a. Đề bài: Viết lớp Date nhằm đặc tả đối tượng ngày tháng năm. Các thuộc tính của Date bao gồm: Day (ngày), month (tháng) và year (năm).

• Định nghĩa các phương thức setters/getters cho các biến. • Tạo 2 hàm constructors cho đối tượng: + constructor default: là constructor không có tham số, dùng để khởi gán các giá

trị mặc định là 0 cho các biến của đối tượng. + constructor copy: constructor có đầy đủ tham số (số tham số của constructor

này bằng với số data instance ta đã khai báo). Constructor này thường dùng để khởi tạo 1 đối tượng đầy đủ.

• Định nghĩa phương thức đặc tả dạng chuỗi “dd/mm/yyyy” của đối tượng (phương thức toString). • Viết một phương thức có tên isLeapYear, nhận vào một tham số tượng trưng cho năm cần kiểm tra, phương thức dùng kiểm tra có phải là năm nhuần không. Kết quả là true nếu là năm nhuần, ngược lại là false. Là năm nhuần nếu chia hết cho 4, trừ khi chia hết cho 100 mà không chia hết cho 400. • Viết một phương thức có tên validDate, nhận vào một tham số thuộc đối tương Date vừa tạo. Phương thức trả về true nếu ngày tháng năm nhập vào là hợp lệ. Ngày tháng năm hợp lệ nếu năm sau 1582, tháng (1, 3, 5, 7, 8, 12) có tối đa 31 ngày, tháng (4, 6, 9, 10, 11) có tối đa 30 ngày, riêng tháng 2 năm nhuần có tối đa 29 ngày và không phải là năm nhuần có tối đa 28 ngày. N gày luôn luôn dương. • Viết lớp cho phần thử nghiệm (Driver Class) của lớp vừa tạo. • Sơ đồ UML:

Nguyễn Minh Khoa - Lớp 06T4- Nhóm 12A Trang 11

Page 12: Bao cao TH JAVA

Báo cáo Thực hành JAVA GVHD : Trịnh Công Duy

b. Cách giải quyết:

Khai báo biến : + private int day;

+ private int month; + private int year;

Phương thức getday() : return day; Phương thức getmonth() : return day; Phương thức getyear() : return day; Phương thức setday(): if(day<0||day>31)

throw new Exception("ngay khong hop le"); this.day = day;

Phương thức setmonth(): if(month<0||month>12) throw new Exception("thang khong hop le"); this.month = month; Phương thức setyear(): if(year<0) throw new Exception("nam khong hop le"); this.year = year; Constructor default: bai13Date(){}; Constructor copy: bai13Date(int day,int month,int year)throws Exception { setday(day); setmonth(month);

Nguyễn Minh Khoa - Lớp 06T4- Nhóm 12A Trang 12

Page 13: Bao cao TH JAVA

Báo cáo Thực hành JAVA GVHD : Trịnh Công Duy

setyear(year);}

Phương thức toString: String s=""; s=s+Integer.toString(day)+"/"+Integer.toString(month)+"/" + Integer.toString(year);

Phương thức validDate: nếu year>1582+ Nếu tháng =1,3,5,7,8,12 và số ngày <=31 thì trả về true.+ Nếu tháng = 4,6,9,10,11 và số ngày <=30 thì trả về true+ Nếu là năm nhuận và số ngày =29 hoặc năm thường và số ngày =28 thì trả về true

Phương thức iLeapYear: Nếu năm là nhuận(năm chia hết cho 400 hoặc chia hết cho 4 và không chia hết cho 100 ) thì trả về true

Phần thử nghiệm: + Tạo đối tượng “t” kieu Date + Gọi các phương thức “t.isLeapYear ” và phương thức “t.validDate ”

c. Kết quả chạy Demo: Giả sử tạo đối tượng t=new bai13Date(25,8,1988); Kết quả là:

Với t=new bai13Date(25,2,198);

Bài 14:a. Đề bài: Viết lớp NhanVien nhằm đặc tả cho một đối tượng là nhân viên làm việc trong công ty nào đó. Các thuộc tính của nhân viên bao gồm: Mã nhân viên, họ tên nhân viên và ngày sinh của nhân viên (Ngày sinh: Sử dụng đối tượng Date ở câu 11).

• Định nghĩa các phương thức setters/getters cho các biến. • Với phương thức setNgaySinh, có một tham số kiểu String tượng trưng cho ngày

sinh của nhân viên. Kiểm tra nếu năm sinh <=1990 và >=1953, thì thiết lập ngày sinh cho nhân viên. Ngược lại thì ngày sinh không hợp lệ.

• Tạo 2 hàm constructors cho đối tượng + Constructor 1: là constructor không có tham số, dùng để khởi gán các giá trị ban

đầu cho các biến của đối tượng.

Nguyễn Minh Khoa - Lớp 06T4- Nhóm 12A Trang 13

Page 14: Bao cao TH JAVA

Báo cáo Thực hành JAVA GVHD : Trịnh Công Duy

+ Constructor 2: constructor có đầy đủ tham số (số tham số của constructor này bằng với số data instance ta đã khai báo). Constructor này dùng để khởi tạo 1 đối tượng đầy đủ.

• Viết phương thức tính tuổi cho nhân viên, biết rằng tuổi là năm hiện hành trừ năm sinh của nhân viên. • Định nghĩa phương thức đặc tả dạng chuỗi của đối tượng (phương thức toString). • Viết lớp cho phần thử nghiệm (Driver Class) của lớp NhanVien vừa tạo.

b. Cách giải quyết: Khai báo biến : private String MaNV;

private String HoTen; private bai13Date NgaySinh;

Phương thức getMaNV() : return MaNV; Phương thức getHoTen(): return HoTen; Phương thức getNgaySinh(): return NgaySinh; Phương thức setMaNV(): Yêu cầu mã nhân viên không được trống.

if(MaNV.trim().equals("")) throw new Exception("Ma nhan vien khong the khong co");

this.MaNV = MaNV; Phương thức setHoTen(): Yêu cầu họ tên không được trống.

if(HoTen.trim().equals("")) throw new Exception("Ho ten khong the khong co"); this.HoTen = HoTen; Phương thức setNgaySinh():

if(NgaySinh.validDate()&&(NgaySinh.getyear()>=1953) &&(NgaySinh.getyear()<=1990))

this.NgaySinh=NgaySinh; else System.out.print("Ngay Sinh khong hop le!\n"); Constructor default: bai14NhanVien() {} Constructor copy:

bai14NhanVien(String MaNV, String HoTen,bai13Date NgaySinh) throws Exception {

setMaNV(MaNV); setHoTen(HoTen); setNgaySinh(NgaySinh);

} Phương thức toString: return HoTen; Phương thức tuoiNV: + Khai báo đối tượng kiểu Date để lấy năm hiện tại của hệ thống. + tuổi nhân viên = năm hiện tại – năm sinh Phần thử nghiệm: + Tạo đối tượng kiểu date + Tạo đối tượng kiểu NhanVien + Gọi các phương thức tính tuổi nhân viên

Nguyễn Minh Khoa - Lớp 06T4- Nhóm 12A Trang 14

Page 15: Bao cao TH JAVA

Báo cáo Thực hành JAVA GVHD : Trịnh Công Duy

c. Kết quả chạy Demo: Đối tượng lớp Date ns= new bai13Date(25,8,1988); Đối tượng lớp NhanVien : nv =new bai14NhanVien("1234","Nguyen Minh Khoa",ns); Kết quả:

Bài 15:a. Đề bài: Tạo một lớp PhepTinh có 3 thuộc tính: Toán hạng 1, toán hạng 2, toán tử.

• Định nghĩa các phương thức setters/getters cho các biến. • Tạo 2 hàm constructors cho đối tượng: + constructor default: là constructorkhông có tham số, dùng để khởi gán các giá

trị mặc định cho các biến của đối tượng (gán giá trị mặc nhiên cho toán tử là +, toán hạng là 0).

+ constructor copy: constructor có đầy đủ tham số (số tham số của constructor này bằng với số data instance ta đã khai báo). Constructor này thường dùng để khởi tạo 1 đối tượng đầy đủ.

• Định nghĩa phương thức đặc tả dạng chuỗi của đối tượng (phương thức toString). • Viết một phương thức tinhToán() để trả về kết quả của phép tính ứng với tioán hạng và toán tử đó. • Viết lớp cho phần thử nghiệm (Driver Class) của lớp vừa tạo. Sơ đồ UML

Nguyễn Minh Khoa - Lớp 06T4- Nhóm 12A Trang 15

Page 16: Bao cao TH JAVA

Báo cáo Thực hành JAVA GVHD : Trịnh Công Duy

b. Cách giải quyết: Khai báo biến : private int ToanHang1;

private int ToanHang2; private char ToanTu; Phương thức getToanHang1() : return ToanHang1; Phương thức getToanHang2 (): return ToanHang2; Phương thức getToanTu (): return ToanTu; Phương thức setToanHang1 (): this.ToanHang1 = ToanHang1; Phương thức setToanHang2 (): this.ToanHang1 = ToanHang2; Phương thức setToanTu (): this.ToanHang1 = ToanTu; Constructor default: bai15PhepTinh() throws Exception{

this(0,0,'+'); }

Constructor copy: bai15PhepTinh(int ToanHang1, int ToanHang2,char ToanTu) throws Exception {

setToanHang1(ToanHang1); setToanHang2(ToanHang2); setToanTu(ToanTu); }

Phương thức toString: String s=""; s=s+Integer.toString(ToanHang1)+ToanTu+Integer.toString(ToanHang2); Phương thức TinhToan: Thực hiện phép tính tương ứng với toán tử nhập

vào Phần thử nghiệm: Tạo đối tượng kiểu tính phép toán và gọi hàm

Nguyễn Minh Khoa - Lớp 06T4- Nhóm 12A Trang 16

Page 17: Bao cao TH JAVA

Báo cáo Thực hành JAVA GVHD : Trịnh Công Duy

c. Kết quả chạy Demo: Giả sử tạo t=new bai15PhepTinh(25,8,'*'); Kết quả :

Bài 16:a. Đề bài: Tạo một lớp PhanSo gồm tử số và mẫu số thuộc kiểu số nguyên.

• Định nghĩa các phương thức setters/getters cho các biến. • Tạo 2 hàm constructors cho đối tượng: + constructor default: là constructor không có tham số, dùng để khởi gán các giá

trị mặc định cho các biến của đối tượng (tử số bằng 0 và mẫu số bằng 1). + constructor copy: constructor có đầy đủ tham số (số tham số của constructor

này bằng với số data instance ta đã khai báo). Constructor này dùng để khởi tạo 1 đối tượng đầy đủ.

• Định nghĩa phương thức đặc tả dạng chuỗi của đối tượng có dạng TuSo/MauSo (phương thức toString). • Viết một phương thức tinhToan() dùng để trả về giá trị của phân số (ví dụ: phân số 2/4 có giá trị 0.5). • Viết một phương thức rutGon() dùng để rút gọn một phân số (ví dụ: phân số 9/12 sau khi rút gọn sẽ là 3/4) .Sơ đồ UML:

b. Cách giải quyết: Khai báo biến : private int TuSo;

private int Mauso;

Nguyễn Minh Khoa - Lớp 06T4- Nhóm 12A Trang 17

Page 18: Bao cao TH JAVA

Báo cáo Thực hành JAVA GVHD : Trịnh Công Duy

Phương thức getTuSo () : return TuSo; Phương thức getMauso (): return MauSo; Phương thức setTuSo (): this.TuSo = TuSo; Phương thức setMauso ():

if(MauSo==0) throw new Exception("Mau so phai khac 0!");

this.MauSo =MauSo; Constructor default:

bai16PhanSo() throws Exception{ this(0,1); } Constructor copy:

bai16PhanSo(int TuSo, int MauSo)throws Exception { setTuSo(TuSo); setMauSo(MauSo); } Phương thức toString:

String s=""; s=s+Integer.toString(TuSo)+"/"+Integer.toString(MauSo);

Phương thức TinhToan: Thực hiện phép tính chia tử số cho mẫu số Phương thức RutGon : Chia tử số và mẫu số cho ước chung lớn nhất. Phần thử nghiệm: Tạo đối tượng kiểu tính phân số và gọi hàm

c. Kết quả chạy Demo: Giả sử tạo t=new bai16PhanSo(10,50); Kết quả :

Bài 17:a. Đề bài: Cho một mảng ngẫu nhiên có 100 phần tử, có giá trị từ 0-100:

1. Viết phương thức tính tổng các phần tử của mảng. 2. Viết phương thức tìm phần tử lớn nhất, nhỏ nhất của mảng. 2. Viết phương thức sắp xếp mảng. 4. Viết phương thức xóa phần tử nào đó trong mảng. 5. Viết phương thức đếm số phần tử chẳn, lẻ của mảng.

b. Cách giải quyết: c. Kết quả chạy Demo: Menu chức năng:

Nguyễn Minh Khoa - Lớp 06T4- Nhóm 12A Trang 18

Page 19: Bao cao TH JAVA

Báo cáo Thực hành JAVA GVHD : Trịnh Công Duy

Tạo mảng :

Tính tổng:

Tìm Min Max

….

Nguyễn Minh Khoa - Lớp 06T4- Nhóm 12A Trang 19

Page 20: Bao cao TH JAVA

Báo cáo Thực hành JAVA GVHD : Trịnh Công Duy

PHẦN 2: CÁC BÀI TẬP VỀ GIAO DIỆN

Bài 1:a. Đề bài: Viết chương trình sử dụng JoptionPane để nhập vào 2 số nguyên tương ứng cho một miền giá trị. In ra số ngẫu nhiên có giá trị trong phạm vi của miền đó. Thông báo lỗi nếu số thứ hai nhỏ hơn số thứ nhấtb. Cách giải quyết: Sử dụng JoptionPane ,ta khai báo 2 JoptionPane để lấy giá trị 2 số nhập vào rồi in kết quả ra màn hình.c. Kết quả chạy Demo:

Bài 2:a. Đề bài: Viết chương trình để nhập vào độ F. Sau đó chuyển sang độ C tương ứng, theo giao diện cho trước. b. Cách giải quyết: Sử dụng Jlabel ,JtextField, JButton để tạo các nhãn, nút và dòng nhập text.Dùng FlowLayout để bố trí các đối tượng, và sử dung JoptionPane để thông báo khi dữ liệu nhập sai.c. Kết quả chạy Demo:

Nguyễn Minh Khoa - Lớp 06T4- Nhóm 12A Trang 20

Page 21: Bao cao TH JAVA

Báo cáo Thực hành JAVA GVHD : Trịnh Công Duy

Bài 3:a. Đề bài: Tạo form Welcome theo mẫu:b. Cách giải quyết: Sử dụng Jlabel ,JtextField, Jbutton, JRadioButton để tạo các nhãn, nút và dòng nhập text. Sử dụng JPanel để bố trí giao diện ở top,bottom...c. Kết quả chạy Demo:

Bài 4: a. Đề bài: Viết chương trình mô phỏng phép toán theo giao diện cho trước: b. Cách giải quyết: Sử dụng Jlabel ,JtextField, Jbutton, JComboBox để tạo các nhãn, nút ,dòng nhập text và thanh cuộn các phép tính. Tạo các Box rồi đưa các đối tượng vào c. Kết quả chạy Demo:

Nguyễn Minh Khoa - Lớp 06T4- Nhóm 12A Trang 21

Page 22: Bao cao TH JAVA

Báo cáo Thực hành JAVA GVHD : Trịnh Công Duy

Bài 5: a. Đề bài:Thiết kế giao diện “THÔNG TIN SINH VIÊN” theo mẫu cho trước b. Cách giải quyết: Sử dụng Jlabel ,JtextField, Jbutton, để tạo các nhãn, nút ,dòng nhập text. Sử dụng Border để tạo đường viền,Jlist để tạo danh sách,JSplitPanel để chia các vùng .Sử dụng Jpanel và các Box , BorderLayout để đưa các đối tượng vào trong JFrame.

c. Kết quả chạy Demo:

Nguyễn Minh Khoa - Lớp 06T4- Nhóm 12A Trang 22

Page 23: Bao cao TH JAVA

Báo cáo Thực hành JAVA GVHD : Trịnh Công Duy

Bài 6: a. Đề bài: Thiết kế giao diện “THÔNG TIN SINH VIÊN” theo mẫu cho trước có sử dụng Jtree b. Cách giải quyết: Sử dụng Jlabel ,JtextField, Jbutton, để tạo các nhãn, nút ,dòng nhập text. Sử dụng Jtree để tạo danh cây danh sách sinh viên,JSplitPanel để chia các vùng .Sử dụng Jpanel và các Box, BorderLayout để đưa các đối tượng vào JFrame.

c. Kết quả chạy Demo:

Bài 7: a. Đề bài: Thiết kế giao diện “ QUẢN LÝ SÁCH” theo mẫu cho trước b. Cách giải quyết: Sử dụng Jlabel ,JtextField, Jbutton, để tạo các nhãn, nút ,dòng nhập text. Sử dụng Jtable để tạo bảng “Book ID, Book name ,Publish” .Sử dụng Jpanel và các Box để đưa các đối tượng vào.Sử dụng JscrollPane để có thể dịch chuyển bảng “Book ID, Book name ,Publish”,Dùng BorderLayout để xác định vị trí các đối tượng vào JFrame. c. Kết quả chạy Demo:

Nguyễn Minh Khoa - Lớp 06T4- Nhóm 12A Trang 23

Page 24: Bao cao TH JAVA

Báo cáo Thực hành JAVA GVHD : Trịnh Công Duy

Bài 8: a. Đề bài: Thiết kế giao diện “THÔNG TIN SINH VIÊN” theo mẫu cho trước có sử dụng box,Jtree…. b. Cách giải quyết: Sử dụng Jlabel ,JtextField, Jbutton, để tạo các nhãn, nút ,dòng nhập text. Sử dụng Jtree để tạo danh cây danh sách sinh viên,Sử dụng Sử Jlist để tạo danh sách sinh viên ,JSplitPanel để chia các vùng ,JScrollPane để tạo tính cuộn, và Border để làm viền.Dùng Jpanel và các Box,Flowlayout để đưa các đối tượng vào JFrame. c. Kết quả chạy Demo:

Nguyễn Minh Khoa - Lớp 06T4- Nhóm 12A Trang 24

Page 25: Bao cao TH JAVA

Báo cáo Thực hành JAVA GVHD : Trịnh Công Duy

Bài 9: a. Đề bài: Thiết kế giao diện “CÔNG TY TNHH THÀNH AN” theo mẫu cho trước b. Cách giải quyết: Sử dụng Jlabel ,JtextField, Jbutton, để tạo các nhãn, nút ,dòng nhập text. Sử dụng Jtree để tạo danh cây danh sách phòng ban,Sử dụng Sử Jlist để tạo danh sách nhân viên ,JSplitPanel để chia các vùng ,JScrollPane để tạo tính cuộn, và Border để làm viền.Dùng Jpanel và các Box, và BorderLayout để đưa các đối tượng vào JFrame. c. Kết quả chạy Demo:

Bài 10: a. Đề bài: Thiết kế giao diện “QUẢN LÝ SÁCH ” theo mẫu cho trước b. Cách giải quyết: Sử dụng JMenu và JMenuItem để tạo các thanh thực đơn. Sử dụng Jlabel ,JtextField, Jbutton, để tạo các nhãn, nút ,dòng nhập text. Sử dụng Jtable để tạo bảng “ID, Title ,Publish” .Sử dụng JscrollPane để có thể dịch chuyển bảng “ID, Title ,Publish”.Sau đó đưa các đối tượng vào Container và đưa vào Jframe.Dùng câu lệnh setBounds để định vị trí.c. Kết quả chạy Demo:

Nguyễn Minh Khoa - Lớp 06T4- Nhóm 12A Trang 25

Page 26: Bao cao TH JAVA

Báo cáo Thực hành JAVA GVHD : Trịnh Công Duy

Nguyễn Minh Khoa - Lớp 06T4- Nhóm 12A Trang 26

Page 27: Bao cao TH JAVA

Báo cáo Thực hành JAVA GVHD : Trịnh Công Duy

KẾT LUẬN I.Kết quả đạt được :

Nắm được cách tạo các thành phần,xử lý các đối tượng. Biết cách kết hợp các đối tượng để tạo giao diện. Nắm vững các câu lệnh trong Java và các thao tác với Eclipse.

II.Những điều chưa đạt được :

Bố cục chương trình có chỗ chưa chặt chẽ,các đoạn mã chưa thực sự tối ưu. Do còn hạn chế về kinh nghiệm và kiến thức, nên bài thực hành chắc chắn còn

có nhiều thiếu sót. Chúng em rất mong nhận được sự chỉ bảo của thầy cô và góp ý của các bạn để bài thực hành hoàn thiện hơn.

Nguyễn Minh Khoa - Lớp 06T4- Nhóm 12A Trang 27