THỰC HÀNH LẬP TRÌNH JAVA _NGÔN NGỮ LẬP TRÌNH JAVA pot - Pdf 21

Lập trình JAVA (10 – 2010) Ngôn ngữ lập trình Java
THỰC HÀNH LẬP TRÌNH JAVA
Phần 1. NGÔN NGỮ LẬP TRÌNH JAVA
o0o
I. Hướng dẫn thực hành
Ví dụ mẫu: Viết chương trình nhập số nguyên / xuất số nguyên ra màn hình
package BTConsole;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class BTConsole {
public static int Nhap1So(){
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.print("Nhap 1 so nguyen: ");
try{
int n = Integer.parseInt(br.readLine());
return n;
}
catch(Exception ee){
System.out.println("\nLoi nhap du lieu! Nhap lai!!");
int n = Nhap1So();
return n;
}
}
public static void main(String []args){
int n = Nhap1So();
System.out.println("So vua nhap: "+n);
}
}
package BTConsole;
import java.io.*;
public class BTConsole {


4, 3: xếp loại yếu.

2 , 1, 0: xếp loại kém.
Bài 3. Cho ba số a, b, c. Hãy giải phương trình bậc hai: ax
2
+ bx + c = 0.
Bài 4. Nhập vào ba số nguyên d, m, y. Hãy viết chương trình:

Kiểm tra xem d/m/y có tạo thành một ngày hợp lệ không?

Kiểm tra y có là năm nhuận không?

Tháng m có bao nhiêu ngày?

Nếu d/m/y là ngày hợp lệ, hãy cho biết:
o d/m/y là ngày thứ mấy thứ mấy tron năm?
o d/m/y là thứ mấy của tuần?
Bài 5. Cho ba số nguyên a, b, c. Hãy kiểm tra a, b, c có thể là ba cạnh của một tam giác hay không? Nếu có,
hãy cho biết đó là tam giác vuông, nhọn hay tù?
Cấu trúc lặp (while,do…while, for)
Bài 6. Viết chương trình xuất bảng cửu chương từ 2 đến 9
2x1= 2 3*1= 3 4*1= 4 9*1= 9
2x2= 4 3*2= 6 4*2= 8 9*2=18

2x9=18 3*9=27 4*9=36 9*9=81
Với mọi i= 1 đến 9
{ Với mọi j = 2 đến 9
System.print ( “” + i + ‘x’ + j + ‘=’ + ( i*j<10 ? “ “ : “”) + i*j );
Syctem.out.println(“\n”);

= F
n-1
+ F
n-2
(n>2)
Nhập vào số nguyên n. Hãy tính F
n
.
Bài 13.Tạo 1 mảng 10 phần tử, xuất mảng tăng dần
Cần 1 class BAIMANG
Có các hành vi:
void SapXepTang (int a[], int n)
void XuatMang (int a[], int n)
Có hàm main
{ int a[] = { 3,2,1,6,5,8,9,0,12,-4};
SapXepTang(a,10);
XuatMang(a,a0);
}
GVHD: ĐỖ NHƯ TÀI - LUT Trang 2
Lập trình JAVA (10 – 2010) Ngôn ngữ lập trình Java
Bài 14.Sinh ngẫu nhiên một dãy số nguyên n phần tử (n nhập từ bàn phím). Viết một hàm tìm giá trị lớn
nhất và hàm tìm nhỏ nhất của dãy.
Cần 1 lớp cho bài toán
Dữ liệu int n, a[]; // số phần tử và tập trị
Hành vi : Hành vi NhapNN(int[] arr), Hành vi LonNhat (int[] arr), hành vi NhoNhat(int[] arr) , Hành vi main
Giải thuật cho hành vi NhapNN(int[] arr) // nhập mảng
{ Đã có giải thuật trên lớp
}
Giải thuật cho hành vi LonNhat(int[] arr)
{

- method tha(chuong?)
- method baocao(); báo cáo tình hình các chuồng
Bài 19.test
GVHD: ĐỖ NHƯ TÀI - LUT Trang 3
Lập trình JAVA (10 – 2010) Ngôn ngữ lập trình Java
III. HƯỚNG DẪN THỰC HÀNH THÊM :

Các ví dụ minh họa:
Ví dụ 1: Nhập 1 dãy số từ bàn phím. Tính tổng của dãy số đó.
package btconsole;
import java.util.*;
import java.io.*;
public class TinhTong {
public static int[] Nhap1DaySo() throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.print("Nhap so phan tu cua mang: ");
int n = Integer.parseInt(br.readLine());
int a[] = new int[n];
for(int i=0;i<a.length;i++){
System.out.print("A["+i+"]=");
a[i] = Integer.parseInt(br.readLine());
}
return a;
}
public static void In1DaySo(int[] l) {
System.out.print("Day so: ");
for(int i=0;i<l.length;i++) {
System.out.print(l[i]+" ");
}
System.out.println(" ");

ArrayList lst = new ArrayList();
while(true) {
StringTokenizer tok = new StringTokenizer(br.readLine()," ");
GVHD: ĐỖ NHƯ TÀI - LUT Trang 4
Lập trình JAVA (10 – 2010) Ngôn ngữ lập trình Java
while(tok.hasMoreElements()) {
int n = Integer.parseInt(tok.nextToken());
if(n==0) return lst;
lst.add(new Integer(n));
}
}
}
public static void In1DaySo(List l) {
System.out.print("Day so: ");
for (int i = 0; i < l.size(); i++) {
System.out.print(l.get(i).toString()+" ");
}
System.out.println();
}
public static int HamTinhTich(List l) {
Iterator it = l.iterator();
int tich = 1;
while(it.hasNext()) {
tich *= Integer.parseInt(it.next().toString());
}
return tich;
}
public static void main(String[] args) {
try {
ArrayList a = null;


Các lớp mảng và tập hợp:

int[], float[], …
GVHD: ĐỖ NHƯ TÀI - LUT Trang 5
Lập trình JAVA (10 – 2010) Ngôn ngữ lập trình Java

ArrayList

Vector

Arrays

Collections

Các lớp xử lý chuỗi:

String

StringBuffer

StringTokenizer

Các lớp tiện ích khác:

Random

Math

Các giao diện cần chú ý:

Bài 27.Nhập vào chuỗi ký tự từ bàn phím. Hãy xóa các ký tự là nguyên âm.
Bài 28.Nhập vào chuỗi ký tự từ bàn phím. Hãy lấy đối xứng các từ của chuỗi. Ví dụ: “KIEN AN
CA””CA AN KIEN”.
Bài 29.Nhập một chuỗi từ bàn phím. Hãy in lần lượt các từ có 1 ký tự, 2 ký tự, 3 ký tự, …
Nhập hai chuỗi a, b. Hãy trộn các từ của a, b lần lượt từ trái sang phải và xen kẽ nhau.
Hướng đối tượng
Bài 30.Tạo đối tượng Person, Teacher, Employee. Cho 1 danh sách các nhân viên trong trường gồm Teacher
và Employee (SV hãy xem xét các thuộc tính liên quan để thiết kế cho phù hợp với thực tế).
Bài 31.Thiết kế các đối tượng hình học 2D.
Bài 32.Thiết kế lớp thư viện các hàm như: Số nguyên tố, dãy Fibonacy, hàm sort, …
GVHD: ĐỖ NHƯ TÀI - LUT Trang 6
Lập trình JAVA (10 – 2010) Ngôn ngữ lập trình Java
BÀI TẬP LẬP TRÌNH JAVA
Phần 2: Luồng nhập/xuất
o0o
V. Hướng dẫn thực hành :
GVHD: ĐỖ NHƯ TÀI - LUT Trang 7
Lập trình JAVA (10 – 2010) Ngôn ngữ lập trình Java
Ví dụ 1: Viết chương trình sao chép từ tập tin này sang tập tin khác.
package FileIO;
import java.io.*;
import java.util.*;
public class CopyFile {
public static void copyfile(String filesrc, String filedst){
try{
FileInputStream fi = new FileInputStream(filesrc);
FileOutputStream fo = new FileOutputStream(filedst,false);
int ch;
while((ch=fi.read())!=-1){
fo.write(ch);

throw new Exception("Duong dan khong ton tai!");
}
if(fi.isDirectory()==false){
throw new Exception("Duong dan khong phai la thu muc!");
}
File[] subFile = fi.listFiles();
for(int i=0;i<subFile.length;i++){
String name = subFile[i].getName();
String type = subFile[i].isDirectory() ? "<DIR> " : "<FILE> ";
System.out.println(type+""+name);
}
}
public static void main(String[] args) throws Exception {
dirfolder("C:\\");
GVHD: ĐỖ NHƯ TÀI - LUT Trang 8
Lập trình JAVA (10 – 2010) Ngôn ngữ lập trình Java
}
}
Ví dụ 3: Viết chương trình tạo 100 số nguyên ngẫu nhiên, ghi các số này vào một tập tin, mỗi dòng chứa tối
đa 10 số. Viết chương trình ghi các số từ tập tin ra màn hình.
package FileIO;
import java.io.*;
import java.util.*;
public class IntRandom {
public static void RandomInt2File(String filename, int numrand) throws Exception {
PrintWriter wt = new PrintWriter(new FileWriter(filename),true);
int count = 0;
while(count<numrand){
int a = (int)Math.ceil(Math.random()*(100-10+1))+10;
wt.print(a+" ");

}
VI. Bài tập thực hành :
Bài 33.Viết chương trình xuất nội dung một tập tin văn bản ra màn hình.
Bài 34.Cho một tập tin chứa các số nguyên cách nhau bởi dấu chấm phẩy. Hãy viết chương trình tính tổng
các số nguyên đó và in kết quả ra màn hình.
Bài 35.Cho cấu trúc file như sau:
Mỗi dòng là 1 đối tượng Car, mỗi đối tượng gồm các thuộc tính: Serial, Model. Các thuộc tính cách
nhau dấu “,”.
a. Hãy viết chương trình nhập vào 1 danh sách các đối tượng từ file có cấu trúc trên.
b. Nhập vào 1 số serial, cho biết Model của xe có số serial vừa nhập.
GVHD: ĐỖ NHƯ TÀI - LUT Trang 9
Lập trình JAVA (10 – 2010) Ngôn ngữ lập trình Java
c. Nhập vào giá trị Model, hãy xóa hết các xe nào có cùng Model trong DS.
d. Thêm 1 xe mới vào DS với các thuộc tính nhập từ bàn phím.
e. Ghi DS vào file theo cấu trúc file đã định nghĩa ở trên. (Nếu file đã tồn tại thì overwrite).
VII. Bài tập thực hành thêm :
Xử lý tập tin nhị phân
Bài 36.Nhập đường dẫn chứa tập tin. Hãy đếm dung lượng của tập tin đó.
Bài 37.Nhập đường dẫn hai tập tin. Hãy so sánh hai tập tin đó có giống nhau hay không?
Bài 38.Nhập đường dẫn tập tin cần di chuyển và vị trí di chuyển. Hãy di chuyển tập tin đó vào nơi di chuyển
đến.
Bài 39.Nhập đường dẫn tập tin từ bàn phím. Viết chương trình xóa tập tin đó.
Bài 40.Nhập đường dẫn một thư mục. Hãy liệt kê các tập tin có đuôi là .txt và ghi ra một tập tin kết quả.
Xử lý tập tin văn bản (BufferedReader, FileReader, FileWriter, …)
Bài 41.Viết chương trình tạo một tập tin từ nội dung nhập từ bàn phím. Việc nhập kết thúc khi người dùng
nhập 1 dòng chứa chữ END để thoát chương trình.
Bài 42.Cho một tập tin chứa các số nguyên cách nhau bởi dấu chấm phẩy hay xuống dòng. Hãy viết chương
trình tính tổng các số nguyên đó và in kết quả ra màn hình.
Bài 43.Viết chương trình đếm một tập tin văn bản có bao nhiêu câu. Biết các câu cách nhau bởi dấu chấm.
Viết chương trình quản lý một danh sách sinh viên từ console. Chương trình cho phép thêm sinh viên, tìm

 itemStateChanged(ItemEvent)
c. ComponentListener  ComponentAdapter
 componentHidden(ComponentEvent)
 componentShown(ComponentEvent)
 componentMoved(ComponentEvent)
 componentResized(ComponentEvent)
GVHD: ĐỖ NHƯ TÀI - LUT Trang 11
Lập trình JAVA (10 – 2010) Ngôn ngữ lập trình Java
d. AdjustmentListener
 adjustmentValueChanged(AdjustmentEvent)
e. ActionListener
 actionPerformed(ActionEvent)
f. TextListener
 textValueChanged(TextEvent)
Ví dụ 1: Thiết kế chương trình HelloWorld có giao diện như sau:
Hãy viết chương trình thực hiện các yêu cầu sau:
a) Chữ Hello World! nằm ở chính giửa cửa sổ.
b) Màu nền cửa sổ là màu trắng.
c) Xử lý nút thoát cho cửa sổ.
package btswing;
import java.io.*;
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class HelloWorld extends JFrame implements ActionListener {
public JLabel lblText;
private Container container = getContentPane();
public HelloWorld() {
// XU LY DU LIEU

}
public void actionPerformed(ActionEvent e){
}
public static void main(String[] args) {
HelloWorld helloWorld1 = new HelloWorld();
}
}
Ví dụ 2: Thiết kế chương trình DaySo có giao diện như sau:
Hãy viết chương trình thực hiện các yêu cầu sau:
a) Xử lý nút Thoát: có xác nhận Yes/No khi thoát.
b) Xử lý nút Ngẫu nhiên: cho nhập số phần tử từ Input Dialog. Sau đó sinh giá trị ngẫu nhiên cho dãy
số cách nhau bởi dấu phẩy.
c) Xử lý các sự kiện trên nút Tất cả, Chẵn, Lẻ, Sắp xếp: liệt kê kết quả tương ứng vào phần Kết Quả.
d) Xử lý nút “Xử lý”: lưu xuống tập tin dayso.txt nội dung phần Kết Quả.
package btswing;
import java.io.*;
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class DaySo extends JFrame implements ActionListener, ItemListener {
private JRadioButton radAll,radChan, radLe;
private JCheckBox chkSapXep;
private JButton btnRandom, btnXuLy, btnThoat;
private JTextField txtDaySo;
GVHD: ĐỖ NHƯ TÀI - LUT Trang 13
Lập trình JAVA (10 – 2010) Ngôn ngữ lập trình Java
private JTextArea txtKetQua;
private Container container = getContentPane();
public DaySo() {

p1.add(p12,BorderLayout.CENTER);
container.add(p1,BorderLayout.NORTH);
container.add(new JScrollPane(txtKetQua,
JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS),
BorderLayout.CENTER
);
JPanel p2 = new JPanel(new FlowLayout(FlowLayout.CENTER));
p2.add(btnXuLy); p2.add(btnThoat);
container.add(p2,BorderLayout.SOUTH);
// XU LY SU KIEN
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
int ret = JOptionPane.showConfirmDialog(null,"Ban co muon thoat
chuong trinh?","Thoat chuong trinh!",JOptionPane.YES_NO_OPTION);
GVHD: ĐỖ NHƯ TÀI - LUT Trang 14
Lập trình JAVA (10 – 2010) Ngôn ngữ lập trình Java
if(ret==JOptionPane.YES_OPTION) System.exit(0);
}});
// this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
btnRandom.addActionListener(this);
btnXuLy.addActionListener(this);
chkSapXep.addItemListener(this);
radAll.addItemListener(this);
radChan.addItemListener(this);
radLe.addItemListener(this);
btnThoat.addActionListener(this);
// HIEN THI JFRAME
this.setTitle("Day so");
this.setLocation(100,100);

if(radChan.isSelected()) chanle=0;
else if(radLe.isSelected()) chanle=1;
Object [] v = LayDuLieu(chanle,chkSapXep.isSelected());
String txt = "";
for(int i=0;i<v.length;i++) {
txt += v[i]+ " ";
}
txtKetQua.setText(txt);
txtKetQua.setLineWrap(true);
}
// chanle==-1 > lay tat ca
// chanle==1 > lay ra so le
// chanle==0 > lay ra so chan
public Object[] LayDuLieu(int chanle,boolean sort){
Vector v = new Vector();
StringTokenizer tok = new StringTokenizer(txtDaySo.getText(),",");
GVHD: ĐỖ NHƯ TÀI - LUT Trang 15
Lập trình JAVA (10 – 2010) Ngôn ngữ lập trình Java
while(tok.hasMoreTokens()){
int n = Integer.parseInt(tok.nextToken());
if(n%2==chanle||chanle==-1){
v.add(new Integer(n));
}
}
Object []a_obj = v.toArray();
if(sort) Arrays.sort(a_obj);
return a_obj;
}
public static void main(String[] args) {
DaySo daySo1 = new DaySo();

• Đối tượng GridBagLayout tương tự như GridLayout (quản lý các đối tượng theo ô). Tuy nhiên,
GridBagLayout có phần linh động hơn, ta có thể xác định mỗi đối tượng chiếm bao nhiêu ô, và nằm
ở vị trí nào trên ô, cách co dãn, neo của từng đối tượng.
• Cách sử dụng GridBagLayout:
o Khai báo:
private Container container = getContentPane();
private GridBagLayout gbLayout = new GridBagLayout();
private GridBagConstraints gbConstraints = new GridBagConstraints();
Trong hàm tạo của Jframe:
// LAYOUT
container.setLayout(gbLayout);
gbConstraints.insets = new Insets(5,5,5,5); // khoảng hở giữa các đối tượng
o Viết thêm hàm addComponent
// them doi tuong vao dung GridBagLayout
private void addComponent(Component component,int row, int column, int nrow,
int ncolumn, int weightrow, int weightcolumn)
{
gbConstraints.gridx = column; // vi tri cot
gbConstraints.gridy = row; // vi tri dong
gbConstraints.gridwidth = ncolumn; // so cot chiem
gbConstraints.gridheight = nrow; // so dong chiem
gbConstraints.weighty = weightrow; // ty le co dan theo dong
gbConstraints.weightx = weightcolumn; // ty le co dan theo cot
// rang buoc doi tuong
gbLayout.setConstraints( component, gbConstraints );
container.add(component); // them vao container
} // addComponent
o Thêm 1 đối tượng vào JFrame
gbConstraints.fill = GridBagConstraints.NONE; // dãn nở
gbConstraints.anchor = GridBagConstraints.CENTER; // neo

addComponent(a_btn[4],0,2,2,1,0,0);
addComponent(a_btn[5],2,1,1,2,0,0);
addComponent(txtText,3,0,1,3,1,1);
// XU LY SU KIEN
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// HIEN THI JFRAME
this.setTitle("GridBagLayout Demo1!");
this.setLocation(100,100);
this.setSize(430,300);
this.setVisible(true);
this.show();
}
// them doi tuong vao dung GridBagLayout
private void addComponent(Component component,int row, int column, int nrow, int
ncolumn, int weightrow, int weightcolumn)
{
gbConstraints.gridx = column; // vi tri cot
gbConstraints.gridy = row; // vi tri dong
gbConstraints.gridwidth = ncolumn; // so cot chiem
gbConstraints.gridheight = nrow; // so dong chiem
gbConstraints.weighty = weightrow; // ty le co dan theo dong
gbConstraints.weightx = weightcolumn; // ty le co dan theo cot
gbLayout.setConstraints( component, gbConstraints ); // rang buoc doi tuong
container.add(component); // them vao container
} // addComponent
public static void main(String[] args) {
GVHD: ĐỖ NHƯ TÀI - LUT Trang 19
Lập trình JAVA (10 – 2010) Ngôn ngữ lập trình Java
GridBagLayoutDemo1 gridBagLayoutDemo11 = new GridBagLayoutDemo1();
}

// XU LY SU KIEN
colorJList.addListSelectionListener(this);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// HIEN THI JFRAME
this.setTitle("LixBox Demo!");
this.setLocation(100, 100);
GVHD: ĐỖ NHƯ TÀI - LUT Trang 20
Lập trình JAVA (10 – 2010) Ngôn ngữ lập trình Java
this.setSize(430, 300);
this.setVisible(true);
this.show();
}
public void valueChanged( ListSelectionEvent event )
{
getContentPane().setBackground(colors[ colorJList.getSelectedIndex()]);
}
public static void main(String[] args) {
ListBoxDemo listBoxDemo1 = new ListBoxDemo();
}
}
Ví dụ 2:
package btswing;
import java.io.*;
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
public class ComboBoxDemo extends JFrame implements ItemListener {
private JComboBox colorBox; // list to display colors

{
getContentPane().setBackground(colors[ colorBox.getSelectedIndex()]);
}
public static void main(String[] args) {
ComboBoxDemo comboBoxDemo1 = new ComboBoxDemo();
}
}
XII. Bài tập thực hành :
Bài tập 1. Thiết kế giao diện QuanLySinhVien :
GVHD: ĐỖ NHƯ TÀI - LUT Trang 22
Lập trình JAVA (10 – 2010) Ngôn ngữ lập trình Java
BÀI TẬP LẬP TRÌNH JAVA
ÔN TẬP
o0o
Thiết kế chương trình QuanLySinhVien có giao diện như sau:
Hãy viết chương trình thực hiện các chức năng sau đây:
a. Khi khung ứng dụng hiển thị, tất cả các nút đều mờ đi trừ nút Load, Exit.
b. Xử lý sự kiện Thoát: khi người dùng nhấn nút Exit hay nút Close trên thanh tiêu đề. Xác nhận coi
người dùng muốn thoát không.
c. Xử lý sự kiện nhấn nút Load:

Hiển thị hộp thoại cho người dùng chọn tập tin dữ liệu.

Nạp dữ liệu lưu trong tập tin lên các đối tượng của chương trình, biết cấu trúc tập tin dữ liệu như
sau:
a. Mỗi dòng lưu 1 sinh viên
b. Các dữ liệu các nhau bởi dấu chấm phẩy
c. Thứ tự dữ liệu trên một dòng: MaSV;HoTen;Khoa;Lop;Diem;Phai
Ví dụ:
0111438;Nguyen Van A;CNTT;TH0102;9;Nam

Tong sinh vien: 2
SoTT Ma so Ho ten Gioi tinh Ghi chu

01 01234 Nguyen Van A Nam Lop 01
02 02468 Tran Thi B Nu Lop 02
Lưu ý ngày cập nhật trong tập tin là ngày hiện tại của hệ thống.
GVHD: ĐỖ NHƯ TÀI - LUT Trang 24
Lập trình JAVA (10 – 2010) Ngôn ngữ lập trình Java
Bài 2. Tạo form với giao diện như sau
• Nạp dữ liệu từ file MatHang.txt cho ComboBox “Ten Hang”, và xử lý sự kiện khi chọn một mặt hàng
trong ComboBox thì chương trình sẽ tự động điền đơn giá của mặt hàng đó vào TextField “Don Gia”. “Don
gia” không cho phép nhập.
• Xử lý sự kiện cho nút “Them”:
Khi nhấn nút, chương trình sẽ:
- Thêm một dòng vào ListBox. Mỗi dòng gồm có: Ten hang, Don gia, So luong, Thanh tien, trong đó
“Thanh tien” = “So Luong” x “Don gia” (các thành phần được nối cách nhau bằng dấu chấm phẩy).
- Cập nhật lại giá trị của Label “Tong cong” (bằng tổng tất cả “Thanh tien” của các mặt hàng được thêm
vào ListBox)
• Xử lý sự kiện cho nút “Thoat” (dừng chương trình).
• Xử lý sự kiện cho nút “Ghi hoa don”: Ghi trên List xuống file HoaDon.txt theo mẫu sau (đường
ngang là các dấu “_” ):
HOA DON BAN LE
Ten KH: Nguyen Van Teo
Dia chi: 123 Tran Hung Dao - Q5
_____________________________________
CPU Intel 3.0G_115.0$_2_230.0$
MB Asus 845_76.0$_3_228.0$
HDD SG 200G_120.0$_5_600.0$
FDD Mitsumi_6.5$_10_65.0$
DDRAM 256M_22.5$_6_135.0$


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status