Bài tập lập trình Java - Pdf 26

Thực hành Java
Phần I Java applet
1. Bài tập mẫu để hiểu các thành phần cơ bản của một Java-applet.
Mục đích: Học viên nắm đợc các thành phần cơ bản của một Applet đơn giản. Sau đó
dựa vào applet này phát triển các applet tơng tự.
Nội dung: Một applet có nhiệm vụ vẽ một hình chữ thập qua tâm applet.
Mã ch ơng trình mẫu :
import java.applet.*;
import java.awt.*;
public class MyApplet1 extends Applet
{
String text;
public void paint(Graphics g)
{
Dimension d = getSize();
g.setColor(Color.blue);
g.drawLine(0, d.height / 2, d.width -1, d.height /2);
g.drawLine(d.width / 2, 0, d.width / 2, d.height -1);
}
}
2. Dựa vào bài tập mẫu 1, viết một applet hiển thị đồ thị một hàm số.
Mục đích: Hiểu kỹ hơn applet ở bài tập 1 và làm quen với cách thể hiện chơng trình
trong Java.
Hàm số cần thể hiện đồ thị:
cos(x/5) + sin(x/7) + 2) * H / 4
với H là chiều cao của applet
Lời giải:
import java.applet.*;
import java.awt.*;
public class MyApplet1 extends Applet
{

}
public void paint(Graphics g)
{
Font f = new Font("Helvetica", Font.BOLD, 20);
g.setFont(f);
FontMetrics fm = g.getFontMetrics(f);
g.setColor(Color.red);
g.drawString(text,
(getSize().width - fm.stringWidth(text))/2,
(getSize().height - fm.getHeight())/2);
}
}
4. Dựa vào bài mẫu 3, viết một applet hiển thị một đoạn văn bản truyền cho
applet qua trang Web, và chuỗi ký tự đợc hiển thị trên đờng chéo.
Mục đích: Hiểu kỹ hơn applet ở bài tập 3 và làm quen với cách thể hiện chơng trình
trong Java.
Hàm số của đờng chéo hiển thị chuỗi ký tự
y = 300 - x
Lời giải:
import java.awt.*;
public class MyApplet4 extends Applet
{
String text;
int f(int x)
{
return 300-x;
}
public void init()
{
text = getParameter("Text");

{
Panel p = new Panel();
p.setLayout(new FlowLayout());
putText = new Button("Set Text");
p.add(putText);
xField = new TextField("0", 3);
p.add(xField);
yField = new TextField("0", 3);
p.add(yField);
contentField = new TextField("Vien DTCNTT",15);
p.add(contentField);
paintCanvas = new PaintCanvas();
setLayout(new BorderLayout());
add("Center", paintCanvas);
add("South", p);
} public boolean action(Event evt, Object arg)
{
if (arg.equals("Set Text"))
{
paintCanvas.setData(
Integer.parseInt(xField.getText()),
Integer.parseInt(yField.getText()),
contentField.getText());
paintCanvas.repaint();
}
else return false;
return true;

Mã ch ơng trình mẫu :
import java.applet.*;
import java.awt.*;
public class MyApplet6 extends Applet
{

public void paint(Graphics g)
{
g.drawString(Integer.toString(x),10,10);
g.drawString(Integer.toString(y),10,30);
}

public boolean mouseMove(Event evt, int x, int y)
{
this.x = x;
this.y = y;
repaint();
return true;
}

private int x,y;
}
7. Bài tập áp dụng cả 2 bài 5,6 để xây dựng một applet chặn các sự kiện của
chuột và hiển thị nội dung văn bản tại toạ độ chuột.
Mục đích: Học viên hiểu rõ 2 bài tập 5,6 để xây dựng một bài tập kết hợp nội dung cả 2
bài trên.
Nội dung: Applet có khả năng hiển thị toạ độ con chuột trong 2 hộp thoại khi NSD di
chuột trong applet. Khi NSD ấn chuột trong applet, applet sẽ hiển thị một chuỗi văn
bản tại vị trí ấn chuột. Chuỗi văn bản này NSD có thể tuỳ biến qua một hộp thoại cho
phép nhập liệu.

public void setData(TextField x, TextField y, TextField t)
{
xField = x;
yField = y;
text = t;
}
public void paint(Graphics g)
{
g.setColor(Color.yellow);
g.fillRect(0,0,getSize().width, getSize().height);
g.setColor(Color.red);
g.drawString(text.getText(), x, y);
}
public boolean mouseMove(Event evt, int x, int y)
{
xField.setText(Integer.toString(x));
yField.setText(Integer.toString(y));
return true;
}
public boolean mouseDown(Event evt, int x, int y)
{
this.x = x;
this.y = y;
repaint();
return true;
}
int x,y;
TextField xField, yField, text;
}
8. Bài tập mẫu thể hiện khả năng tơng tác với NSD qua hộp thoại (Dialog) từ

public void processData()
{
message.setText("Button was pressed.");
}
Frame p;
Label message;
}
class AboutDialog extends Frame
{ public AboutDialog(MyApplet8 parent)
{
this.parent = parent;
setTitle("About MyApplet8");
Panel p1 = new Panel();
p1.setLayout(new GridLayout(2,1));
p1.add(new Label("Vien Dao tao CNTT"));
p1.add(new Label("Ha Noi, 1/2000"));
add("Center", p1);
Panel p2 = new Panel();
p2.add(new Button("Ok"));
add("South", p2);
setSize(220, 150);
}
public boolean action(Event evt, Object arg)
{
if (arg.equals("Ok"))
{
parent.processData();
dispose();
return true;
}

}
public boolean action(Event evt, Object arg)
{
if(arg.equals("Open About Dialog"))
{
AboutDialog ab = new AboutDialog(this);
ab.show();
}
else return false;
return true;
}
public void processData(String name, String place)
{
message.setText(name + " is living in " + place);
}
Frame p;
TextField message;
}
class AboutDialog extends Frame
{ public AboutDialog(MyApplet9 parent)
{
this.parent = parent;
setTitle("About MyApplet8");
Panel p1 = new Panel();
p1.setLayout(new GridLayout(2,2));
p1.add(new Label("Enter name"));
p1.add(name = new TextField("", 10));
p1.add(new Label("Place"));
p1.add(place = new TextField("", 10));
add("Center", p1);

- Các phiên bản JDBC phổ biến : JDBC 1 và JDBC 2.0
- Cách cấu hình một ODBC-DSN trên Windows để sử dụng kết nối JDBC-ODBC try
xuất dữ liệu.
1. Bài tập mẫu thẻ hiện khả năng truy xuất dữ liệu qua kết nối JDBC-ODBC từ
một ứng dụng Java.
Mục đích: Học viên biết cách kết nối một ứng dụng Java với một CSDL qua kết nối
trung gian ODBC sử dụng JDBC. Thể hiện đợc khả năng truy xuất (query) và cập nhật
dữ liệu (update) sử dụng Java.
Nội dung: Hiển thị nội dung thông tin của một CSDL về bảng lơng ( CSDL Access) và
cập nhật thêm thông tin vào CSDL này.
Mã ch ơng trình mẫu :
import java.sql.*;
class jdbc1
{
public static void main(String args[])
{
String url = "jdbc:odbc:Emp";
String query = "SELECT Name,Address from BangLuong";
String update = "INSERT INTO BangLuong VALUES ('Pham Ba Hung','TP.Hai Phong',3000)";
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
java.sql.Connection con = DriverManager.getConnection(url, null, null);
checkForWarning(con.getWarnings());
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(query);
dispResultSet(rs);
int i = stmt.executeUpdate(update);
rs = stmt.executeQuery(query);
dispResultSet(rs);

{
System.out.println("\n *** Warning ***\n");
rc = true;
while(warn != null)
{
System.out.println("SQLState: " + warn.getSQLState());
System.out.println("Message: " + warn.getMessage());
System.out.println("Vendor: " + warn.getErrorCode());
System.out.println("");
warn = warn.getNextWarning();
}
}
return rc;
}
private static void dispResultSet(ResultSet rs) throws SQLException
{
int i;
ResultSetMetaData rsmd = rs.getMetaData();
int numCols = rsmd.getColumnCount();
System.out.println("+++++");
while(rs.next())
{
for(i=1; i<=numCols; i++)
{
if(i > 1) System.out.print(", ");
System.out.print(rs.getString(i));
}
System.out.println("");
}
}

p2.add(name = new TextField("",25));
p2.add(new Label("Address"));
p2.add(address = new TextField("",25));
p2.add(new Label("Salary"));
p2.add(salary = new TextField("",10));
add("Center", p2);
}
public void finalize()
{
try
{
rs.close();
stmt.close();
con.close();
}
catch(SQLException ex)
{
reportSQLError(ex);
}
}
private void reportSQLError(SQLException ex)
{
System.out.println("\n*** SQLException caught ***\n");
while(ex != null)
{
System.out.println("SQLState: " + ex.getSQLState());
System.out.println("Message: " + ex.getMessage());
System.out.println("Vendor: " + ex.getErrorCode());
ex = ex.getNextException();
System.out.println("");

{
System.out.println("SQLState: " + warn.getSQLState());
System.out.println("Message: " + warn.getMessage());
System.out.println("Vendor: " + warn.getErrorCode());
System.out.println("");
warn = warn.getNextWarning();
}
}
return rc;
}
private void dispResultSet(ResultSet rs) throws SQLException
{
if (rs.next())
{
name.setText(rs.getString("Name"));
address.setText(rs.getString("Address"));
salary.setText(rs.getString("Salary"));
}
}
public boolean handleEvent(Event evt)
{ if (evt.id == Event.WINDOW_DESTROY) System.exit(0);
return super.handleEvent(evt);
}
public boolean action(Event evt, Object arg)
{
if (arg.equals("First"))
{
try
{
rs = stmt.executeQuery(query);

}
3. Dựa vào bài 1 và bài 2, bổ sung thêm tính năng cập nhật dữ liệu cho CSDL
Mục đích: Hiểu đợc bài 1 và 2, qua đó xây dựng một ứng dụng Java nhỏ có thể kết nội
và truy xuất, cập nhật DL nh các ứng dụng trong thực tế.
Nội dung: Ngoài khả năng duyệt bản ghi nh bài 2, cho phép NSD cập nhật dữ liệu
( thêm bản ghi). Kết thúc chế độ cập nhật, NSD có thể quay về chế độ duyệt.
Lời giải:
import java.awt.*;
import java.sql.*;
public class jdbc3 extends Frame
{
String url = "jdbc:odbc:Emp";
String query = "SELECT Name,Address,Salary from BangLuong";
ResultSet rs;
Connection con;
Statement stmt;
TextField name, address, salary;
Button first, next, add, quit;
public jdbc3()
{
setTitle("JDBC Testing 3");
Panel p1 = new Panel();
p1.setLayout(new FlowLayout());
p1.add(first = new Button("First"));
p1.add(next = new Button("Next"));
p1.add(add = new Button("Add"));
p1.add(quit = new Button("Quit"));
add("South", p1);
Panel p2 = new Panel();
p2.setLayout(new GridLayout(3,2));

System.out.println("");
}
}
public void openDatabase()
{
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con = DriverManager.getConnection(url, null, null);
checkForWarning(con.getWarnings());
stmt = con.createStatement();
rs = stmt.executeQuery(query);
dispResultSet(rs);
}
catch(SQLException ex)
{
reportSQLError(ex);
}
catch(java.lang.Exception ex)
{
ex.printStackTrace();
}
}
private static boolean checkForWarning(SQLWarning warn) throws SQLException
{
boolean rc = false;
if(warn != null)
{
System.out.println("\n *** Warning ***\n");
rc = true;

}
catch(SQLException ex)
{
reportSQLError(ex);
}
}
private void updateMode()
{
first.hide();
next.hide();
add.setLabel("OK");
quit.setLabel("Cancel");
clearFields();
}
private void clearFields()
{
name.setText("");
address.setText("");
salary.setText("0");
}
public boolean handleEvent(Event evt)
{ if (evt.id == Event.WINDOW_DESTROY) System.exit(0);
return super.handleEvent(evt);
}
public boolean action(Event evt, Object arg)
{
if (arg.equals("First"))
{
try
{

viewMode();
}
else if (arg.equals("Quit")) System.exit(0);
else return false;
return true;
}
private void updateDatabase()
{
String update = "INSERT INTO BangLuong VALUES ('"+
name.getText() + "','" + address.getText()+"'," +
salary.getText()+")";
try
{
stmt.executeUpdate(update);
}
catch(SQLException ex)
{
reportSQLError(ex);
}
}

public static void main(String[] args)
{
jdbc3 f = new jdbc3();
f.resize(400, 150);
f.openDatabase();
f.show();
}
}


Nhờ tải bản gốc
Music ♫

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