You are on page 1of 27

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

MỤC LỤC

................................................................................................2
LỜI NÓI ĐẦU....................................................................2
............................................................................................3
PHẦN 1: CÁC BÀI TẬP CƠ BẢN..............................................................................................3
PHẦN 2: CÁC BÀI TẬP VỀ GIAO DIỆN................................................................................20
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


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


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) :

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


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

+ Nếu n chẵn : Trong khi i<=n ; nếu i lẻ ,gán S=S+i;


+ 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[]

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


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

là số chẵn thì tăng biến đếm 1 đơn vị


• Đế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

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


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 hàm String numberToTextA(int number) để trả về tên gọi một số ở
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”

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


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

- 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”
- 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.

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


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

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:
• 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)

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


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

• 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” 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
Nguyễn Minh Khoa - Lớp 06T4- Nhóm 12A Trang 9
Báo cáo Thực hành JAVA GVHD : Trịnh Công Duy

• 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:

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à :

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


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

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

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


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


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

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


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

+ Gọi các phương thức tính tuổi nhân viên

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


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


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;

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


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

private int Mauso;


• 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


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


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ất
b. 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


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


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


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


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


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


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


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

You might also like