Professional Documents
Culture Documents
Bao Cao Thuc Hanh Lap Trinh Mang
Bao Cao Thuc Hanh Lap Trinh Mang
BO CO THC HNH
LP TRNH MNG
NNG, 3/2014
Mc Lc
Chng 1: CC BI TP THC HNH.......................................................................................................1
1.1 BI THC HNH BUI 1..................................................................................................................1
1.1.1 Bi tp 1..........................................................................................................................................1
1.1.2 Bi tp 2..........................................................................................................................................3
1.2 BI THC HNH BUI 2..................................................................................................................6
1.2.1 bi:............................................................................................................................................6
1.2.2 Phn chng trnh Client:...............................................................................................................6
1.2.3 Phn chng trnh Server:..............................................................................................................7
1.2.4 Phn chng trnh x l ca Server:..............................................................................................7
1.2.5 Phn chng trnh x l biu thc:................................................................................................8
1.3 BI THC HNH BUI 3................................................................................................................14
1.3.1 bi............................................................................................................................................14
1.3.2 To cc class tnh ton ma trn.....................................................................................................14
1.3.3 Nhp ma trn:...............................................................................................................................14
1.3.4 Cng, tr ma trn..........................................................................................................................15
1.3.5 Nhn 2 ma trn.............................................................................................................................16
1.3.6 Chia 2 ma trn..............................................................................................................................17
1.3.7 Chng trnh Client......................................................................................................................22
1.3.8 Chng trnh Server:....................................................................................................................25
1.3.9 Demo............................................................................................................................................28
Chng 2: BI TP LM THM................................................................................................................30
2.1 BI................................................................................................................................................30
2.2 CHNG TRNH THM, SA, XA DANH SCH U VO...................................................30
2.2.1 Chun b........................................................................................................................................30
2.2.2 Tm kim trong danh sch............................................................................................................30
2.2.3 Sa d liu....................................................................................................................................31
2.2.4 Xa d liu...................................................................................................................................33
2.2.5 Thm d liu.................................................................................................................................34
2.2.6 Kim tra d liu............................................................................................................................36
2.3 TRUYN NHN d LIU GIA CLIENT SERVER...................................................................37
2.3.1 Bn Client.....................................................................................................................................37
Page | 1
2.3.2 Bn Server....................................................................................................................................40
2.4 X L CA CLIENT.........................................................................................................................42
2.5 X L CA SERVER........................................................................................................................43
2.6 THUT TON PHN CNG GIO VIN COI THI.......................................................................44
2.6.1 Lu danh sch gio vin v phng thi..........................................................................................44
2.6.2 Sp xp gim th...........................................................................................................................44
2.7 DEMO..................................................................................................................................................46
Page | 2
LI NI U
Lp trnh mng l mt trong nhng nhim v quan trong trong vic pht trin cc ng dng doanh
nghip. Mt chng trnh mng c vit ra cc chng trnh trn cc my tnh khc nhau c th truyn
tin vi nhau mt cch hiu qu v an ton cho d chng c ci t trn mng LAN, WAN hay mng ton
cu Internet, y l iu cn bn i vi s thnh cng ca nhiu h thng.
Java l ngn ng lp trnh hng i tng thun thy vi nhiu c trng u vit so vi cc ngn
ng lp trnh hng i tng khc nh tnh c lp vi nn, tnh bo mt, Java l ngn ng ngay t khi
ra i hng n lp trnh mng nn vic vit mt chng trnh lp trnh mng bng Java d dng hn
nhiu so vi cc ngn ng khc.
Page | 3
CHNG 1: CC BI TP THC HNH
1.1 BI THC HNH BUI 1
1.1.1 Bi tp 1
1.1.1.1 bi:
Dng Java xy dng chng trnh ly d liu sinh vin t Access v xut ra bng.
1.1.1.3 Ci t
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con = DriverManager.getConnection("jdbc:odbc:testDB");
Statement stmt = (java.sql.Statement) con.createStatement();
String sql = "Select * from SinhVien";
ResultSet rs = ((java.sql.Statement) stmt).executeQuery(sql);
ResultSetMetaData rsmd = rs.getMetaData();
int numberOfColumns = rsmd.getColumnCount();
rows = 0;
while (rs.next())
rows++;
data = new Object[rows][numberOfColumns];
i = 0;
rs = ((java.sql.Statement) stmt).executeQuery(sql);
while (rs.next()) {
for (j = 1; j <= numberOfColumns; j++) {
data[i][j - 1] = rs.getObject(j);
i++;
}
rs.close();
stmt.close();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
Page 2
1.1.1.4 Demo
D liu trong Access
1.1.2 Bi tp 2
1.1.2.1 bi:
Dng Java xy dng giao din ca chng trnh scan IP.
1.1.2.2 Ci t:
import java.awt.*;
import javax.swing.*;
public ScanIP(String a) {
super(a);
myIP = new JTextField("192.168.1.3");
myIP.setPreferredSize(new Dimension(200, 25));
myIP.setEditable(false);
pn1 = new JPanel(new FlowLayout(FlowLayout.CENTER));
pn1.setPreferredSize(new Dimension(550, 35));
pn1.add(new JLabel("a ch IP ca my: "));
pn1.add(myIP);
IP1_1 = new JTextField();
IP1_1.setPreferredSize(new Dimension(35, 25));
IP1_2 = new JTextField();
IP1_2.setPreferredSize(new Dimension(35, 25));
Page 4
pn5 = new JPanel(new FlowLayout(FlowLayout.CENTER));
pn5.setPreferredSize(new Dimension(520, 170));
pn5.add(scanbt);
pn5.add(cancelbt);
pn5.add(exitbt);
pn = new JPanel(new FlowLayout(FlowLayout.CENTER));
pn.add(pn1);
pn.add(pn2);
pn.add(new JLabel("La chn s thread thc hin cng vic"));
pn.add(pn3);
pn.add(pn4);
pn.add(pn5);
add(pn);
setTitle("Chng trnh scan ip mng lan");
setSize(550, 400);
setResizable(false);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setVisible(true);
}
}
}
1.1.2.3 Demo:
1.2.2.2 Ci t:
import java.io.*;
import java.net.*;
import java.awt.*;
import java.awt.event.*;
Page 6
@Override
public void actionPerformed(ActionEvent e) {
double nhan;
if (e.getSource() == bt1) {
try {
String s = tfnhap.getText();
outputStream.writeUTF(s);
nhan = inputStream.readDouble();
tfkq.setText("" + nhan);
} catch (UnknownHostException e1) {
} catch (IOException e1) {}
}
if (e.getSource() == bt2)
System.exit(0);
}
}
1.2.3.2 Ci t:
import java.net.*;
1.2.4.2 Ci t:
import java.io.*;
@Override
public void run() {
DataInputStream inputStream;
DataOutputStream outputStream;
double kq;
try {
inputStream = new DataInputStream(socket.getInputStream());
outputStream = new DataOutputStream(socket.getOutputStream());
while (true) {
String snhan;
try {
snhan = inputStream.readUTF();
TinhBieuThuc t = new TinhBieuThuc();
kq = t.TinhToan(snhan);
outputStream.writeDouble(kq);
} catch (IOException ex) {
Logger.getLogger(server_Process.class.getName()).log(
Level.SEVERE, null, ex);
}
}
} catch (IOException ex) {
Logger.getLogger(server_Process.class.getName()).log(Level.SEVERE,
null, ex);
}
}
}
Page 8
B3.1: Chng no cn c mt ton t O2 nh ngn xp v u tin ca O1 u tin ca
O2 th ly O2 ra khi ngn xp v ghi vo kt qu.
B3.2: Push O1 vo ngn xp
B4: Nu gp du ) th c ly cc ton t trong ngn xp ra v ghi vo chui kt qu cho n khi
ly c du ( ra khi ngn xp.
B5: Khi duyt ht biu thc trung t, ln lt ly tt c ton hng (nu c) t ngn xp ra v ghi
vo chui kt qu.
V d: Chuyn i biu thc: 3 + sin(4) * 2
1.2.5.3 Ci t:
// Loi b tt c du cch
str = str.replaceAll("\\s", "");
// Tch biu thc thnh cc phn t
StringTokenizer tk = new StringTokenizer(str, "()+-*/", true);
// Danh sch lu cc phn t
ArrayList<String> tkList = new ArrayList<String>();
// Ly danh sch cc ton t
List<String> operatorList = Arrays.asList(toanTu);
// To ngn xp
Stack<String> stack = new Stack<String>();
// To mng kt qu
ArrayList<String> resultList = new ArrayList<String>();
// Chuyn i
for (String s : tkList) { // Ly ln lt cc phn t
if (operatorList.contains(s)) { // Ton t
while (!stack.isEmpty() && DoUuTien(stack.peek()) > 0
&& DoUuTien(stack.peek()) >= DoUuTien(s)) {
resultList.add(stack.pop());
}
stack.push(s);
} else if (s.equals("(")) { // '('
stack.push(s);
} else if (s.equals(")")) { // ')'
// Ly tt c ton t trong ngn xp cho n khi gp '('
while (!stack.peek().equals("("))
resultList.add(stack.pop());
stack.pop();
} else { // Ton hng
resultList.add(s);
}
}
while (!stack.isEmpty()) {
// a cc ton t cn li trong ngn xp vo kt qu
resultList.add(stack.pop());
}
return resultList;
}
Page 10
Phn t Thao tc Stack
3 Push 3 3
4 Push 4 34
sin Tnh sin(4), push ht qu 3 [sin(4)]
2 Push 2 3 [sin(4)] 2
* Tnh sin(4)*2, push kt qu 3 [sin(4)*2]
+ Tnh sin(4)*2 + 3, push kt qu [sin(4)*2+3]
1.2.5.5 Ci t:
if (toanTu.equals("-")) {
return Double.parseDouble(toanHang1) -
Double.parseDouble(toanHang2);
}
if (toanTu.equals("*")) {
return Double.parseDouble(toanHang1) *
Double.parseDouble(toanHang2);
}
if (toanTu.equals("/")) {
return Double.parseDouble(toanHang1) /
Double.parseDouble(toanHang2);
}
return 0;
}
Thut ton:
Ta c cng thc trin khai tnh sin(x):
(1 )n x 2n +1 x3 x5 x7
sin ( x )= = x + +
n=0 ( 2 n+1 ) ! 3 ! 5! 7 !
Ta s dng 1 bin temp tnh gi tr tng phn t, sau cng vo kt qu chung, kt qu tnh
c ca phn t trc s c s dng tnh tip phn t pha sau, thut ton c trin khai theo
cng thc:
ketQua+ temp ; Vi ban u :ketQua=0, temp=x
(1 )x 2
temp+ Vi ban u :i=1
( ++ i )(++i)
5 5
Vic tm kt qu bng cch trn s lp lin tc v kt thc khi: 10 temp 10
Ci t:
do {
ketQua += temp;
temp = (-1) * temp * x * x / ((++i) * (++i));
} while (temp > 10E-10 || temp < -10E-10);
return ketQua;
}
Page 12
Ta c cng thc trin khai tnh cos(x):
(1 )n x 2 n x2 x4 x6
cos ( x )= =1 + +
n=0 ( 2 n) ! 2! 4 ! 6 !
Ta s dng 1 bin temp tnh gi tr tng phn t, sau cng vo kt qu chung, kt qu tnh
c ca phn t trc s c s dng tnh tip phn t pha sau, thut ton c trin khai theo
cng thc:
ketQua+ temp ; Vi ban u :ketQua=0, temp=1
(1 )x 2
temp+ Vi ban u :i=0
( ++ i )(++i)
5 5
Vic tm kt qu bng cch trn s lp lin tc v kt thc khi: 10 temp 10
Ci t:
do {
ketQua += temp;
temp = (-1) * temp * x * x / ((++i) * (++i));
} while (temp > 10E-10 || temp < -10E-10);
return ketQua;
}
1.2.5.6 Demo:
Chng trnh Client:
1.3.2.1 Ci t:
a) Lp MaTran c nh ngha nh sau:
class MaTran {
double maTran[][];
int n, m; // S dng, s ct
public MaTran(int dong, int cot) {}
public MaTran(File file){}
public void Nhap_MaTran() {}
public void In_MaTran() {}
}
Page 14
1.3.3 Nhp ma trn:
Nhp bng file: Trong file, cc s ngn cch nhau bi k t tab - \t - v mi hng phn bit
nhau bi enter.
1.3.3.2 Ci t:
public void Nhap_MaTran(File file) {
Reader in;
BufferedReader br;
String token[],temp;
try {
in = new InputStreamReader(new FileInputStream(file.getPath()), "UTF-
8");
br = new BufferedReader(in);
temp = br.readLine();
token = temp.split("\t");
m = Integer.parseInt(token[0]);
n = Integer.parseInt(token[1]);
1.3.4.2 Ci t:
Page 16
1.3.5 Nhn 2 ma trn
1.3.5.1 Thut ton:
Gi s c sn 2 ma trn A v B v ma trn C dng lu kt qu. Php ton nhn ma trn A vi
ma trn B.
Phn t C[i][k] ca ma trn C c tnh bng cng thc:
j= s c t A
(ho c s hng B)
c [i] [ k ] = A [i][ j]B[ j][k ]
j=0
1.3.5.2 Ci t:
if (A.n == B.m) {
C = new MaTran(A.m, B.n);
1
B1= P
|B| B
PB
l ma trn ph hp ca B.
, ngha l B ij =(1) |M j|
B ij bij i+j i
Trong : l phn b i s ca phn t
t
Ma trn X l ma trn chuyn v ca ma trn X
ij
M l ma trn cp n - 1 c c t ma trn B bng cch b hng i v ct j ca B.
t
Ma trn chuyn v X bng cch i hng thnh ct hoc ct thnh hng ca ma trn X.
Page 18
B1.1: Lp i = 1n-:
B1.1.1: Nu aij == 0:
B1.1.1.1: Tm j sao cho aij 0, j = i+1n
B1.1.1.2: Nu j<= n th hon i dng i v dng j cho nhau
B1.1.1.3: Ngc li kt thc v d liu khng hp l
B1.1.2: Lp j = i+1n
B1.1.2.1: m = -aij / aii
B1.1.2.2: Lp k = in: ajk = ajk + aik * m
B2: Tnh nh thc
B2.1: dt = 1
B2.2: Lp i = 1n: dt = dt * aii
B3: Tr v kt qu:
Ci t:
return dinhThuc;
H v tn: Bi Tn Vit Lp: 10T2 Nhm 11BPage 19
}
Bo co thc hnh lp trnh mng 2014
b) Tnh B ij =(1) |M j| :
i+j i
ij
M
Vi ma trn vung B cp, loi b hng i v ct j ta s c
if ((i + j) % 2 == 0)
return DinhThuc(temp);
else
return -DinhThuc(temp);
}
Page 20
Vi ma trn vung C cp n, ma trn chuyn v ca n chnh l ma trn c to thnh bng cch
i ch hng v ct ca C.
B1: To ma trn vung temp cp n.
B2: Cho i = 0. Lp khi i < n:
B2.1: Cho j = 0, k = 0. Lp khi j < n:
B2.1.2: temp[i][j] = C[k][i];
B2.1.2: k++, j++;
B2.2: i++;
B3: tr v ma trn temp;
Ci t:
d) Chia 2 ma trn A v B:
B1: To ma trn C(0, 0)
B2: Nu B l ma trn vung: // To ma trn kh nghch
B2.1: dinhThuc = nh thc ma trn B;
B2.2: Nu dinhThuc != 0:
B2.2.1: To mi ma trn C[B.n][B.n];
B2.2.1: Nu B.n == 1: C[0][0] = (1 / C[0][0]) / dinhThuc;
B2.2.2: Ngc li:
B2.2.2.1: Cho i = 0. Lp khi i < B.n:
B2.2.2.1: Cho j = 0. Lp khi j < B.n:
C[i][j] = PhanTu_MaTran_PhuHop(B, i, j) / dinhThuc;
B2.2.3: C= ChuyenVi(C);
B2.2.4: C = Nhan(A, C);
B3: Return C;
Ci t:
Page 22
1.3.7 Chng trnh Client
1.3.7.2 Gi ma trn ln
Server:
Thut ton:
B1: Gi s hng.
B2: Ch nhn phn hi.
B3: Gi s ct.
B4: Ch nhn phn hi.
B5: Duyt tt c phn t ma trn t tri qua phi, t trn xung di:
B5.1: Gi phn t ma trn.
B5.2: Ch phn hi
Ci t:
if (operator.equals("+")) {
this.operator = 1;
} else if (operator.equals("-")) {
this.operator = 2;
} else if (operator.equals("*")) {
this.operator = 3;
} else if (operator.equals("/")) {
this.operator = 4;
}
this.socket = socket;
}
public void PhepToan() {
int n, m;
try {
dos.writeInt(operator); dis.read();
GuiMaTran(A);
GuiMaTran(B);
PhepToan();
Print_Debug("\nKt qu php ton:");
In_MaTran(ketQua);
socket.close();
dis.close();
dos.close();
} catch (UnknownHostException e) {
} catch (IOException e) {}
// Cc thay i v giao din
}
}
}
try {
ss = new ServerSocket(7777);
System.out.println("Server dang lang nghe tren cong 7777:");
while (true) {
socket = ss.accept();
dis = new DataInputStream(socket.getInputStream());
dos = new DataOutputStream(socket.getOutputStream());
A = Nhan_MaTran();
B = Nhan_MaTran();
In_MaTran(A);
Page 26 In_MaTran(B);
operator = dis.readInt();
dos.write(0);
switch (operator) {
case (1):
ketQua = pt.Cong(A, B);
Gui_KetQua(ketQua);
break;
case (2):
ketQua = pt.Tru(A, B);
Gui_KetQua(ketQua);
break;
case (3):
ketQua = pt.Nhan(A, B);
Gui_KetQua(ketQua);
break;
case (4):
ketQua = pt.Chia(A, B);
Gui_KetQua(ketQua);
}
}
} catch (IOException e) {}
}
Page 28
1.3.9 Demo
Page 30
CHNG 2: BI TP LM THM
2.1 BI
Client gi cho Server vo danh sch n phng v m gim th, v k gim th s coi thi. Sao cho s
gim th s coi thi phi ln hn 2 ln s phng v b hn hoc bng m gim th. Server chia ngu nhin
2n gim th vo n phng, s gim th cn li l gim th hnh lang.
iu kin chia sao cho khng c gim th no coi 1 phng 2 ln v khng gim th no coi cng
vi nhau hn 1 ln.
Client c th thm, sa xa vo danh sch gim th.
D liu u vo v u ra l file Excel.
List<Integer> kq;
Thut ton:
B1: Ly t kha tm kim.
B3: Loi b cc khong trng trc v sau t kha v chuyn t kha thnh chui thng.
B2: Nu chn danh sch phng tm kim:
B2.1: Duyt danh sch t trn xung di:
B2.2.1: Chuyn tn phng thnh chui thng v kim tra vi t kha.
B2.2.2: Nu ng, lu v tr ca b d liu vo kq.
B2.2: Hin th d liu ra bng.
B3: Nu chn danh sch gio vin:
B2.1: Duyt danh sch t trn xung di:
B2.2.1: Chuyn m gio vin, tn gio vin thnh chui thng v kim tra vi t kha.
key = jtfSearch.getText();
key = key.toString().toLowerCase();
kq = new ArrayList<Integer>();
if (isRoom == true) {
// Tm trong danh sch phng
for (int i = 0; i < soP; i++) {
if (dsP.get(i)[0].toString().toLowerCase().equals(key)) {
kq.add(i);
}
}
ViewTabel(headerP, dsP);
} else {
// Tm trong danh sch gio vin
for (int i = 0; i < soGV; i++) {
if (dsGV.get(i)[0].toString().toLowerCase().equals(key)
|| dsGV.get(i)[1].toString().toLowerCase().equals(key))
kq.add(i);
ViewTabel(headerGV, dsGV);
}
}
}
2.2.3 Sa d liu
Sau khi tm kim trong danh sch, ta c th sa phn t c chn ang hin th trong bng.
Thut ton:
B1: Tm kim trong danh sch.
B2: Ly v tr hng trong bng c chn (hng c sa i).
B3: a xc nhn mun sa d liu hay khng.
B5: Kim tra s ct c d liu ng trong hng.
B6: Nu tt c cc ct u ng d liu th:
B6.1: Tm v tr tng ng ca b d liu trong file v trong danh sch lu t danh sch ghi v
tr kq thng qua v tr hng trong bng c chn.
B6.2: Cp nht d liu.
Ci t:
public void jbEdit_ActionPerformed(ActionEvent evt) {
WorkbookSettings ws;
Workbook wb;
WritableWorkbook wwbCopy;
Page 32
WritableSheet wsPhong, wsGiaoVien;
int rowSelect, col;
rowSelect = jtData.getSelectedRow();
if (dialogResult == JOptionPane.YES_NO_OPTION) {
// Chun b cho sa i file
ws = new WorkbookSettings();
ws.setEncoding("CP1252");
try {
if (isRoom == true) {
col = KiemTra_BoDuLieu_Phong(rowSelect);
if (col != headerP.length - 1) {
JOptionPane.showMessageDialog(null,
"D liu sa i b li!");
return;
} else {
wb = Workbook.getWorkbook(file, ws);
wwbCopy = Workbook.createWorkbook(file, wb);
wsPhong = wwbCopy.getSheet(0);
JOptionPane.showMessageDialog(null
," sa thnh cng!");
jbReset.doClick();
}
} else {
col = KiemTra_BoDuLieu_GiaoVien(rowSelect);
if (col != headerGV.length - 1) {
JOptionPane.showMessageDialog(null,
"D liu sa i b li!");
return;
} else {
wb = Workbook.getWorkbook(file, ws);
wwbCopy = Workbook.createWorkbook(file, wb);
wsGiaoVien = wwbCopy.getSheet(1);
2.2.4 Xa d liu
Sau khi tm kim trong danh sch, ta c th xa phn t c chn ang hin th trong bng.
Thut ton:
B1: Tm kim trong danh sch.
B2: Ly v tr hng trong bng c chn (d liu cn xa).
B3: a xc nhn mun xa d liu hay khng.
B4: Tm v tr tng ng ca b d liu trong file v trong danh sch lu t danh sch ghi v tr kq
thng qua v tr hng trong bng c chn.
B5: Xa d liu.
Ci t:
rowSelect = jtData.getSelectedRow();
int dialogResult = JOptionPane.showConfirmDialog(this,
"Bn c mun xa dng ny?", "Cnh bo",
JOptionPane.YES_NO_OPTION);
if (dialogResult == JOptionPane.YES_NO_OPTION) {
// Chun b cho sa i file
ws = new WorkbookSettings();
ws.setEncoding("CP1252");
try {
wb = Workbook.getWorkbook(file, ws);
wwbCopy = Workbook.createWorkbook(file, wb);
wsPhong = wwbCopy.getSheet(0);
wsGiaoVien = wwbCopy.getSheet(1);
if (isRoom == true) {
// Xa hng trong file
wsPhong.removeRow(kq.get(rowSelect) + 1);
// Xa hng trong danh sch lu
dsP.remove(kq.get(rowSelect));
// Xa hng trong bng hin th
kq.remove(rowSelect);
ViewTabel(headerP, dsP);
Page 34
// Cp nht li s lng
soP--;
// Ghi vo file v ng
try {
wwbCopy.write();
wwbCopy.close();
wb.close();
} catch (IOException e) {
} catch (WriteException e) {}
} else {
// Xa hng trong file
wsGiaoVien.removeRow(kq.get(rowSelect) + 1);
// Xa hng trong danh sch lu
dsGV.remove(kq.get(rowSelect));
// Xa hng trong bng hin th
kq.remove(rowSelect);
ViewTabel(headerGV, dsGV);
// Cp nht li s lng
soGV--;
// Ghi vo file v ng
try {
wwbCopy.write();
wwbCopy.close();
wb.close();
} catch (IOException e) {
} catch (WriteException e) {}
}
} catch (BiffException | IOException e1) {}
}
}
if (dialogResult == JOptionPane.YES_NO_OPTION) {
ws = new WorkbookSettings();
ws.setEncoding("CP1252");
try {
if (isRoom == true) {
if (!KiemTra_DuLieuVao_Phong()) {
JOptionPane.showMessageDialog(null,
"D liu nhp vo li!");
} else {
wb = Workbook.getWorkbook(file, ws);
wwbCopy = Workbook.createWorkbook(file, wb);
wsPhong = wwbCopy.getSheet(0);
}
}
}
wwbCopy.write(); wwbCopy.close(); wb.close();
JOptionPane.showMessageDialog(null,
" thm thnh cng!");
}
}
Page 36
} catch (WriteException e) {
JOptionPane.showMessageDialog(null, "Li!");
} catch (BiffException e) {
JOptionPane.showMessageDialog(null, "Li!");
} catch (IOException e) {
JOptionPane.showMessageDialog(null, "Li!");
}
}
}
Page 38
public void TransData() throws IOException {
long sizeFile;
fis = new FileInputStream(file);
int x;
x = fis.read(part);
// Gi d liu
while (x > -1) {
dos.write(part);
dis.read();
x = fis.read(part);
}
fis.close();
try {
rf = new RandomAccessFile("s ln phn cng.txt", "r");
soLanPhanCong = rf.readInt();
} catch (FileNotFoundException e) {
soLanPhanCong = 0;
} catch (IOException e) {
soLanPhanCong = 0;
}
// Nhn tn file
nameFile = dis.readUTF();
dos.write(1);
Print_Debug("Tn file kt qu: " + nameFile);
// To file
fileResult = new File(file.getParent() + "\\" + nameFile);
fos = new FileOutputStream(fileResult);
Print_Debug("ng dn: " + fileResult.getPath());
// Nhn d liu
remainSize = sizeFile;
while (remainSize > 0) {
if (remainSize < 1024) {
byteRead = dis.read(part, 0, (int) remainSize);
fos.write(part, 0, (int) remainSize);
} else {
byteRead = dis.read(part);
fos.write(part);
}
remainSize -= byteRead;
dos.write(1);
}
fos.close();
Page 40
2.3.2 Bn Server
2.3.2.1 Nhn d liu t Client
Thut ton:
B1: Nhn tn file. Gi xc nhn.
B2: To file vi tn file nhn. M lung ghi.
B3: Nhn kch thc file. Gi xc nhn.
B4: Lp khi cha nhn s byte ca file: c d liu vo mng byte 1024 phn t
B4.1: Nu s byte cn li < 1024:
B4.1.1: Ch nhn ng s lng byte cn li t lung vo.
B4.1.2: Ghi vo file s byte cn li.
B4.2: Ngc li:
B4.2.1: Nhn s byte trong mng t lung vo.
B4.2.2: Ghi vo file s byte va nhn.
B4.3: Gi xc nhn.
B5: ng lung ghi file.
B6: Nhn s gim th coi thi. Gi xc nhn.
B7: Nhn s ln phn cng. Gi xc nhn.
Ci t:
// Nhn tn file
nameFile = dis.readUTF();
dos.write(1);
Print_Debug("Tn file: " + nameFile);
// To con tr file
file = new File(nameFile);
fos = new FileOutputStream(file);
// Nhn d liu
remainSize = sizeFile;
while (remainSize > 0) {
if (remainSize < 1024) {
byteRead = dis.read(part, 0, (int) remainSize);
fos.write(part, 0, (int) remainSize);
} else {
byteRead = dis.read(part);
fos.write(part);
}
remainSize -= byteRead;
dos.write(1);
}
fos.close();
// c s ln phn cng
soLan_PhanCong = dis.readInt();
dos.write(1);
Print_Debug("S ln phn cng: " + soLan_PhanCong);
Print_Debug("----------------------------");
int x;
x = fis.read(part);
// Gi d liu
while (x > -1) {
dos.write(part);
dis.read();
x = fis.read(part);
}
Page 42
// Hon thnh vic gi
Print_Debug(" hon thnh vic gi");
Print_Debug("----------------------------");
fis.close();
}
2.4 X L CA CLIENT
Thut ton:
B1: Gi d liu ln Server.
B2: Ch hi p kt qu t Server.
B3: Nu c kt qu:
B3.1: Nhn d liu tr v t Server.
B3.2: Ghi s ln phn cng vo file.
B4: Nu khng, thng bo li.
Ci t:
try {
Print_Debug("Gi file ln server");
TransData();
// c kt qu tr v
Print_Debug("Ch nhn kt qu");
complete = dis.readBoolean();
Print_Debug("----------------------------");
if (complete) {
Print_Debug("Server x l thnh cng");
Print_Debug("Nhn kt qu tr v...");
ReceiveFile();
Luu_SoLanPhanCong(++soLanPhanCong);
} else {
Print_Debug("Server x l khng thnh cng");
Print_Debug("----------------------------");
}
Print_Debug("ng tt c kt ni");
Print_Debug("----------------------------");
dis.close();
dos.close();
} catch (IOException e) {}
}
2.5 X L CA SERVER
Thut ton:
B1: Nhn file t Client.
B2: Ly d liu vo v kim tra cc iu kin u vo.
B3: Nu cc iu kin u vo tha:
B3.1: Phn cng danh sch.
B3.2: To file kt qu lu.
B3.4 Ghi vo file.
B3.5: Thng bo cho Client l x l xong.
B3.6: Truyn file v cho Client.
B4: Nu khng:
B4.1: Thng bo cho Client l tht bi.
B5: ng cc lung vo ra v socket.
Ci t:
if (GetData() == true) {
PhanCong();
fileResult = new File("Danh sch phn cng.xls");
GhiVaoFile();
Print_Debug(" x l xong");
Print_Debug("----------------------------");
dos.writeBoolean(true);
Print_Debug("Gi kt qu v cho client");
TransFile();
} else {
dos.writeBoolean(false);
Print_Debug("Server x l khng thnh cng");
Print_Debug("----------------------------");
}
Print_Debug("ng tt c kt ni");
Print_Debug("----------------------------");
socket.close();
dis.close();
dos.close();
} catch (IOException | WriteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Page 44
2.6 THUT TON PHN CNG GIO VIN COI THI
2.6.1 Lu danh sch gio vin v phng thi
Danh sch gio vin c lu vo mng giamThi = new String[][].Th t cc ct
trong mng tng ng vi cc trng trong danh sch v cc hng tng ng vi cc trng trong danh
sch.
Danh sch phng thi c lu vo mng 1 chiu: phongThi = new String[]. Th t
tng ng vi phng thi trong danh sch.
2.6.2 Sp xp gim th
S dng mng 1 chiu Xep_GiamThi = new int[] lu cc ch s c sp xp. Cc ch
s ny s nh x n hng ca mng giamThi ly thng tin gim th.
- Mng Xep_GiamThi tnh t phn t th 0 2n 1 (n l s phng thi) th c 2 gim th s
chung 1 phng. Phn t th t chn l gim th 1 v phn t th t l l gim th 2.
- S cn li t 2n m 1 l gim th hnh lang (m l s gim th coi thi).
Gi s c 10 gim th v 5 phng thi. Xt 1 phng thi, mi phng thi s c 10 lt gim th i
vo. V v mi ln vo phng l 2 lt gim th ng thi khng gim th no vo 1 phng 2 ln nn ta
s c ti a tng cng 5 ln i vo 1 phng. Nu s gim th l 11 th vn ch c ti a l 5 ln i vo 1
phng, v nu l 6 ln th s c 12 lt i vo phng nn suy ra phi c 1 gim th i vo phng 2 ln.
Chnh v th ta ch quan tm s gim th l chn. Nu s gim th l th ta tr i 1 gim th ny c th
lm gim th hnh lang.
T ta rt ra, s cch xp gim th vo cc phng ti a c: Tng s gim th / 2 cch
Ta xp gim th s dng phng php quay vng:
- Gim th 1 phng i + 1 s qua phng i.
- Gim th 1 phng u tin s chuyn v gim th 1 phng cui cng.
- Gim th 2 phng i + 2 s qua phng i.
- Gim th 2 phng u tin s chuyn v gim gim th 2 phng k cui.
- Gim th 2 phng th 2 s chuyn v gim th 2 phng cui cng.
Gi s c 5 phng v 10 gim th
Ci t:
n = soGiamThi;
if (soGiamThi % 2 == 1) {
--n;
}
if (n > 3) {
for (int k = 0; k < soLan_PhanCong; k++) {
// i v tr cc gim th 1
// Lu gim th u tin
n1 = Xep_GiamThi[0];
for (int i = 2; i < n; i += 2) {
Xep_GiamThi[i - 2] = Xep_GiamThi[i];
}
Page 46
2.7 DEMO
Page 48
H v tn: Bi Tn Vit Lp: 10T2 Nhm 11BPage 49