Tải bản đầy đủ (.pdf) (68 trang)

Bai tap thuc hanh lap trinh truyen thong

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.77 MB, 68 trang )



TR !NG ∃%I H∋C QU)NG NAM
KHOA CÔNG NGH THÔNG TIN
 & 




L
L


P
P


T
T
R
R
Ì
Ì
N
N
H
H


T
T


R
R
U
U
Y
Y


N
N


T
T
H
H
Ô
Ô
N
N
G
G













Biên so n: ThS. Nguy&n V(n Kh+,ng
Email:

Sinh viên:……………………………………………
L

p:……………………………………………………






TP Tam K∀, 2013
Bài t p: “L p trình truy#n thông”


Biên so#n: ThS. Nguy∃n V∋n Kh)∗ng – MB: 0905.065317 Trang 1
GI%I THI U H(C PH∗N:
Tên h+c ph−n: L,p trình truy/n thông.
S0 ti1t: 45 ti1t (3 tín ch3).
10%: Chuyên c−n và thái 56 h+c t7p.
20%: Ki8m tra gi9a k< (Th>c hành trên máy tính)
20%: Ti8u lu7n (Chia nhóm).
50%: Thi k1t thúc h+c ph−n (Theo hình th?c trΑc nghiΧm)


N1I DUNG H(C PH∗N:
H+c ph−n g∆m 5 ch:Εng nh: sau:
1. Ch:Εng 1: TΦng quan vΓ l7p trình truyΓn thông
2. Ch:Εng 2: TΦng quan ngôn ng9 l7p trình Java
3. Ch:Εng 3: Ηng dΙn - PIPE
4. Ch:Εng 4: L7p trình Socket
5. Ch:Εng 5: Kích hoΚt ph:Εng th?c tΛ xa - RMI
Bài t p: “L p trình truy#n thông”


Biên so#n: ThS. Nguy∃n V∋n Kh)∗ng – MB: 0905.065317 Trang 2
CH2&NG 1:
T3NG QUAN V4 L5P TRÌNH TRUY4N THÔNG
1.1. C& CH6 LIÊN L7C LIÊN QUÁ TRÌNH
§ TruyΓn thông là m6t khái niΧm dùng 58 ch3 s> giao ti1p, trao 5Φi thông tin gi9a hai hay
nhiΓu th>c th8 trong m6t hΧ th0ng nào 5ó.
§ ViΧc giao ti1p phΜi có nh9ng tiΧn ích hΝ trΟ bΠi hΧ 5iΓu hành máy tính.
§ Các tiΧn ích này th:Θng 5:Οc g+i vΡi cái tên là CΕ ch1 giao ti1p liên quá trình (IPC -
Inter-Process Communication).

1.2. PHÂN LO7I C& CH6 GIAO TI6P LIÊN QUÁ TRÌNH
§ LoΚi 1: CΕ ch1 giao ti1p liên quá trình hΝ trΟ giao ti1p gi9a các quá trình trên cùng m6t
máy tính.

§ LoΚi 2: CΕ ch1 giao ti1p liên quá trình hΝ trΟ giao ti1p gi9a các quá trình nΣm trên các
máy tính khác nhau.
§ ThΤa thu7n vΡi nhau vΓ các qui tΑc trao 5Φi thông tin, g+i các qui tΑc này là các giao
th?c (Protocol)
Bài t p: “L p trình truy#n thông”



Biên so#n: ThS. Nguy∃n V∋n Kh)∗ng – MB: 0905.065317 Trang 3

1.3. MÔ HÌNH OSI (Open Systems Interconnection)

1/ T−ng ?ng dΥng (Application Layer): cung cΩp các ?ng dΥng truy xuΩt 51n các dΞch vΥ
mΚng; Web Browser, Web Server,…
2/ T−ng trình bày (Presentation Layer): 5Μm bΜo các máy tính có ki8u 5Ξnh dΚng d9 liΧu
khác nhau vΙn có th8 trao 5Φi thông tin cho nhau.
3/ T−ng giao dΞch (Session Layer): cho phép các ?ng dΥng thi1t l7p, sΖ dΥng và xóa các
kênh giao ti1p gi9a chúng (5:Οc g+i là giao dΞch).
4/ T−ng v7n chuy8n (Transport Layer): D9 liΧu gΠi 5i 5:Οc 5Μm bΜo không có lΝi, theo
5úng trình t>, không bΞ mΩt mát, trùng lΑp.
5/ T−ng mΚng (Network Layer): tìm 5:Θng 5i cho d9 liΧu 51n các 5ích khác nhau trong hΧ
th0ng mΚng.
6/ T−ng liên k1t d9 liΧu (Data-Link Layer): 5Μm bΜo truyΓn tΜi các khung d9 liΧu (Frame)
gi9a hai máy tính.
7/ T−ng v7t lý (Physical Layer): ∃iΓu khi8n viΧc truyΓn tΜi th7t s> các bit trên 5:Θng truyΓn
v7t lý.
Bài t p: “L p trình truy#n thông”


Biên so#n: ThS. Nguy∃n V∋n Kh)∗ng – MB: 0905.065317 Trang 4
1.4. M7NG TCP/IP
∃ây là ki1n trúc c[a mΚng Internet (5 t−ng), ch3 g∆m 4 t−ng nh: hình v∴ d:Ρi 5ây và t−ng
v7t lý d:Ρi cùng:

1.5. MÔ HÌNH CLIENT/SERVER
§ Server: chuyên cung cΩp m6t s0 phΥc vΥ nào 5ó, ch]ng hΚn: phΥc vΥ t7p tin, phΥc vΥ
máy in, phΥc vΥ th: 5iΧn tΖ, phΥc vΥ Web

§ Client: yêu c−u sΖ dΥng các dΞch vΥ do các server cung cΩp.

Bài t p: “L p trình truy#n thông”


Biên so#n: ThS. Nguy∃n V∋n Kh)∗ng – MB: 0905.065317 Trang 5
1.6. BÀI T5P TH8C HÀNH
Bài t,p 1.1: Tìm 5+c và vi1t m6t báo cáo không quá 10 trang vΓ giao th?c HTTP.
H:Ρng dΙn tham khΜo:
- Sinh viên chia thành nhóm <=3 bΚn.
- Các nhóm tìm ki1m tài liΧu trên Internet.
- Vi1t báo cáo (File word) theo 3 ch:Εng sau:
o Ch:Εng 1: GiΡi thiΧu vΓ giao th?c HTTP.
o Ch:Εng 2: M6t s0 vΩn 5Γ liên quan 51n giao th?c HTTP.
o Ch:Εng 3: K1t lu7n.
- Trình bày lΚi báo cáo cho 5úng mΙu, 5⊥p, rõ ràng.
- Trang 5−u tiên báo cáo ghi h+ tên các thành viên trong nhóm.
- N6p lΚi File báo cáo (file word) vào h6p mail:

Bài t,p 1.2: Tìm 5+c và vi1t m6t báo cáo không quá 10 trang vΓ giao th?c POP3.
H:Ρng dΙn tham khΜo:
- T:Εng t> Bài t7p 1.1.
Bài t,p 1.3: Tìm hi8u vΓ dΞch vΥ Chat trên mΚng Internet. Vi1t lΚi báo cáo không quá 10 trang
trình bày các n6i dung sau:
- M6t bΜng mô tΜ các ch?c n_ng th:Θng 5:Οc hΝ trΟ trong m6t dΞch vΥ Chat.
- Xây d>ng Chat Protocol riêng c[a bΚn trong 5ó mô tΜ:
o Các ch?c n_ng hΝ trΟ bΠi Chat Server.
o Khuôn dΚng (Format) và các loΚi thông 5iΧp (Message) hΝ trΟ bΠi Protocol.
o SΕ 5∆ trΚng thái hoΚt 56ng c[a server và client (giΜi thu7t).
o Minh h+a các kΞch bΜn khác nhau cho tΛng ch?c n_ng c[a dΞch vΥ.



Bài t p: “L p trình truy#n thông”


Biên so#n: ThS. Nguy∃n V∋n Kh)∗ng – MB: 0905.065317 Trang 6
CH2&NG 2:
T3NG QUAN NGÔN NG9 L5P TRÌNH JAVA
2.1. GI%I THI U NGÔN NG9 L5P TRÌNH JAVA
Ngôn ng9 l7p trình Java 5:Οc Sun Microsystems 5:a ra giΡi thiΧu vào tháng 6 n_m 1995 và
5ã nhanh chóng trΠ thành m6t ngôn ng9 l7p trình c[a các l7p trình viên chuyên nghiΧp. Java
5:Οc xây d>ng d>a trên nΓn tΜng c[a C và C++ ngha là Java sΖ dΥng cú pháp c[a C và 5αc
tr:ng h:Ρng 50i t:Οng c[a C++. Java là ngôn ng9 vΛa biên dΞch vΛa thông dΞch. ∃−u tiên mã
ngu∆n 5:Οc biên dΞch thành dΚng bytecode. Sau 5ó 5:Οc th>c thi trên tΛng loΚi máy nhΘ trình
thông dΞch. M c tiêu c∀a các nhà thi#t k# Java là cho phép ng&∋i l∗p trình vi#t ch&(ng trình
m,t l.n nh&ng có th/ ch1y trên các n2n ph.n c3ng khác nhau.

Biên d5ch ch&(ng trình Java.
Ngày nay, Java 5:Οc sΖ dΥng r6ng rãi, không ch3 58 vi1t các ?ng dΥng trên máy cΥc b6 hay
trên mΚng mà còn 58 xây d>ng các trình 5iΓu khi8n thi1t bΞ di 56ng, …
2.2. B1 JDK VÀ ECLIPSE
JDK (Java Development Kit) là b6 công cΥ cho ng:Θi phát tri8n ?ng dΥng bΣng ngôn ng9
l7p trình Java, là m6t t7p hΟp nh9ng công cΥ ph−n mΓm 5:Οc phát tri8n bΠi Sun
Microsystems. B6 công cΥ này 5:Οc phát hành miβn phí g∆m có trình biên dΞch, trình thông
dΞch, trình giúp sΖa lΝi trình chΚy applet và tài liΧu nghiên c?u.
Các bΚn vào 5Ξa ch3 sau 58 tΜi b6 cài 5αt vΓ:

Eclipse là m6t ph−n mΓm mã ngu∆n mΠ 5:Οc thi1t k1 58 hΝ trΟ các l7p trình viên vi1t các
?ng dΥng bΣng nhiΓu ngôn ng9 khác nhau trong 5ó có ngôn ng9 Java.
Eclipse tΚo ra m6t môi tr:Θng l7p trình 5Εn giΜn, tr>c quan vΡi viΧc hΝ trΟ rΩt nhiΓu plugin

(ph−n thêm vào) 58 các l7p trình viên 5Εn giΜn và tiΧn ích hΕn trong viΧc l7p trình.
∃8 cài 5αt Eclipse vào máy tính, 5−u tiên phΜi cài 5αt b6 biên dΞch Java JDK, sau 5ó các bΚn
tΜi b6 ngu∆n Eclipse vΓ tΛ Internet vΓ và chΚy ch:Εng trình.
Bài t p: “L p trình truy#n thông”


Biên so#n: ThS. Nguy∃n V∋n Kh)∗ng – MB: 0905.065317 Trang 7
Các bΚn vào 5Ξa ch3 sau 58 tΜi Eclipse:


2.3. C;U TRÚC <I4U KHI=N TRONG JAVA
2.3.1. L>nh ?i/u ki>n if-else
if (<bi u th∀c %i&u ki∋n>)
<l∋nh/ kh∗i l∋nh 1>;
else
<l∋nh/ kh∗i l∋nh 2>;
N1u <bi8u th?c 5iΓu kiΧn> có giá trΞ true thì th>c hiΧn <lΧnh/ kh0i lΧnh 1> c[a if, ng:Οc lΚi
thì th>c hiΧn <lΧnh/ kh0i lΧnh 2> c[a else, sau 5ó th>c hiΧn các lΧnh ti1p theo c[a ch:Εng
trình.
2.3.2. L>nh l≅a chΒn switch
switch (<bi u th∀c nguyên>)
{
case <giá tr, 1> : <kh∗i l∋nh 1>;
[break];

case <giá tr, n> : <kh∗i l∋nh n>;
[break];
[defaulse: <kh∗i l∋nh n>;]
}
Bài t p: “L p trình truy#n thông”



Biên so#n: ThS. Nguy∃n V∋n Kh)∗ng – MB: 0905.065317 Trang 8
2.3.3. Vòng l∆p for
for (<kh.i t1o bi3n>; <bi u th∀c %i&u ki∋n>; <b#4c nh5y>)
{
<thân vòng l6p> // thân vòng l6p là l∋nh / kh∗i l∋nh
}
2.3.4. Vòng l∆p while
while (<bi u th∀c %i&u ki∋n>)
<Thân vòng l6p>;
2.3.5. Vòng l∆p do-while
do
<thân vòng l6p>
while (<bi u th∀c %i&u ki∋n>)
2.4. TÍNH K6 THΦA VÀ <A HÌNH TRONG JAVA
2.4.1. Tính kΓ thΗa
S> k1 thΛa 5:Οc sΖ dΥng khi mu0n tΚo m6t lΡp mΡi tΛ m6t lΡp 5ã bi1t. Khi 5ó, tΩt cΜ các
thu6c tính và ph:Εng th?c c[a lΡp cχ 5Γu trΠ thành thu6c tính và ph:Εng th?c c[a lΡp mΡi.
LΡp cχ 5:Οc g+i là lΡp cha, lΡp mΡi 5:Οc g+i là lΡp con.
Khai báo lΙp kΓ thΗa
Khai báo lΡp k1 thΛa 5:Οc th>c hiΧn bΠi tΛ khoá extends:
<thu8c tính> <tên l4p con> extends <tên l4p cha>
{
}
2.4.2. Tính ?a hình
NΚp chΛng: Java cho phép trong cùng m6t lΡp, có th8 khai báo nhiΓu ph:Εng th?c có cùng
tên. NΚp ch∆ng là hiΧn t:Οng các ph:Εng th?c có cùng tên.
<a hình: ∃a hình là viΧc triΧu g+i 51n các ph:Εng th?c nΚp ch∆ng c[a 50i t:Οng. Khi m6t
ph:Εng th?c nΚp ch∆ng 5:Οc g+i, ch:Εng trình s∴ d>a vào ki8u các tham s0 và ki8u trΜ vΓ 58

g+i ph:Εng th?c c[a 50i t:Οng cho phù hΟp.
2.5. BÀI T5P TH8C HÀNH
Bài t,p 2.1: Cài 5αt JDK và Eclipse 58 l7p trình ngôn ng9 Java:
Bài t p: “L p trình truy#n thông”


Biên so#n: ThS. Nguy∃n V∋n Kh)∗ng – MB: 0905.065317 Trang 9
Cài ?∆t JDK:
Các bΚn vào 5Ξa ch3 sau 58 tΜi b6 cài 5αt vΓ:



Bài t p: “L p trình truy#n thông”


Biên so#n: ThS. Nguy∃n V∋n Kh)∗ng – MB: 0905.065317 Trang 10


Công viΧc cài 5αt c[a bΚn lúc này ch3 là next next finish mà thôi.
Download Eclipse:
Các bΚn vào URL:

Sau 5ó ch+n nh: hình d:Ρi, nhΡ ch+n theo 5úng hΧ 5iΓu hành mình 5ang sΖ dΥng nhé:


Sau khi download vΓ các bΚn ch3 c−n unzip ra chΝ nào 5ó trên Φ c?ng và click 5úp vào file
eclipse.exe là có th8 chΚy 5:Οc luôn.

Bài t p: “L p trình truy#n thông”



Biên so#n: ThS. Nguy∃n V∋n Kh)∗ng – MB: 0905.065317 Trang 11
N u không ch#y %&∋c thì thi t l)p l#i bi n môi tr&∗ng nh& sau:
a. BΩm chu6t phΜi vào bi8u t:Οng MyComputer trên màn hình Desktop và ch+n
“Properties” -> ch+n tab “Advanced” -> ch+n nút “Environment Variables”
b. Ti1p theo chΝ “System variables” ta chon New 58 bΑt 5−u tΚo bi1n môi tr:Θng
“JAVA_HOME”, bΚn s∴ thΩy dialog hiΧn ra 58 nh7p thông tin vào bao g∆m: Variable
name (bΚn gõ vào là “JAVA_HOME”) và Variable value (là th: mΥc bΚn 5ã cài 5αt jdk
tr:Ρc 5ó, thông th:Θng s∴ nΣm Π th: mΥc “C:\Program Files\Java\jdk1.7.0_25δ) sau 5ó
bΚn ch+n OK.
c. Ti1p theo bΚn c−n c7p nh7t thông tin c[a bi1n “JAVA_HOME” vào hΧ th0ng 58 sΖ
dΥng chung cho các ?ng dΥng c−n chΚy trên nΓn máy Μo JVM bΣng cách tΚi dialog c[a
“System variables” bΚn kéo thanh scroll xu0ng và tìm 51n “Path” -> ch+n nút “Edit” và
có m6t dialog hiΧn ra 58 bΚn c7p nh7t thông tin cho “Path”, tΚi ph−n “Variable value”
bΚn di chuy8n 51n cu0i và gõ vào “;%JAVA_HOME%\bin;” (l:u ý là dΩu “;” Π 5−u
bi1n “JAVA_HOME” s∴ không c−n n1u tr:Ρc 5ó 5ã có r∆i) -> sau 5ó bΚn ch+n các nút
“OK” Π các dialog 58 hoàn tΩt.
d. ∃8 xác nh7n lΚi viΧc thi1t l7p bi1n môi tr:Θng thì tΚi màn hình CMD (Terminal) bΚn
dùng lΧnh: echo %JAVA_HOME%, n1u bΚn nh7n 5:Οc k1t quΜ là 5:Θng dΙn tΡi th:
mΥc cài 5αt jdk là 5úng.
1. ChΚy lΚi file eclipse.exe 58 chΚy ch:Εng trình.
2. N1u vΙn không chΚy 5:Οc thì vào 5:Θng dΙn trong th: mΥc eclipse:
eclipse\configuration\org.eclipse.osgi\.manager, xóa file: .fileTableLock.
3. ChΚy lΚi file eclipse.exe 58 chΚy ch:Εng trình. OK
Bài t,p 2.2: Vi1t ch:Εng trình Java giΜi ph:Εng trình b7c 2. (SΖ dΥng lΧnh if else)
Bài gi7i:
- KhΠi 56ng Eclipse.
- Ch+n File / New/ Java Project 58 tΚo d> án mΡi. Ch+n Next
- Gõ tên Baitap2.2 vào mΥc Project Name. Ch+n Next, Ch+n Finish.
- Click chu6t phΜi vào d> án: Baitap2.2 phía bên trái cΖa sΦ làm viΧc, ch+n New / Class

58 tΚo lΡp.
- Gõ tên lΡp là Baitap2_2 vào mΥc Name, 5ánh dΩu ch+n vào public static void main
(String[] args) 58 tΚo ph:Εng th?c chính c[a lΡp.
- Ch+n Finish.
- Vi1t lΧnh cho ch:Εng trình nh: sau:
//Khai bao cac thu vien
Bài t p: “L p trình truy#n thông”


Biên so#n: ThS. Nguy∃n V∋n Kh)∗ng – MB: 0905.065317 Trang 12
i mport java.util.Scanner;

publ i c cl as s Baitap2_2 {

//Khai bao doi tuong input cua lop Scanner nhan du lieu nhap vao

pri vat e s t at i c Scanner i nput ;

//Chuong trinh chinh

publ i c s t at i c voi d main(String[] args){

//Khoi tao doi tuong input

i nput = new Scanner(System.i n);

//Nhap gia tri cho he so a, b, c kieu so thuc tu ban phim
System.
out .print("Nh9p a: ");


f l oat a = i nput .nextFloat();
System.
out .print("Nh9p b: ");

f l oat b = i nput .nextFloat();
System.
out .print("Nh9p c: ");

f l oat c = i nput .nextFloat();

//Tinh gia tri delta

f l oat delta=b*b-4*a*c;

//Xet cac truong hop cua delta de cho ra nghiem

i f (delta<0)
System.
out .println("Ph#/ng trình vô nghi∋m.");

el se i f (delta==0)
System.
out .println("Ph#/ng trình có nghi∋m kép: "+(-b/(2*a)));

el se{
System.
out .println("Ph#/ng trình có 2 nghi∋m:");
System.
out .println("X1 = "+(-b+Math.s qrt (delta))/(2*a));
System.

out .println("X2 = "+(-b-Math.s qrt (delta))/(2*a));
}
}
}
- Biên dΞch và chΚy ch:Εng trình, Ctrl + F11.
Bài t,p 2.3: Vi1t ch:Εng trình Java nh7p tên và m7t khφu (t0i 5a nh7p 3 l−n). N1u nh7p 5úng
tên là “khuong”, m7t khφu là “123” thì hi8n thΞ các s0 tΛ 100 51n 200 mà chia h1t cho 3, 5 và
tính tΦng các s0 5ó.

Bài gi7i:
- KhΠi 56ng Eclipse.
- Ch+n File / New/ Java Project 58 tΚo d> án mΡi. Ch+n Next
- Gõ tên Baitap2.3 vào mΥc Project Name. Ch+n Next, Ch+n Finish.
Bài t p: “L p trình truy#n thông”


Biên so#n: ThS. Nguy∃n V∋n Kh)∗ng – MB: 0905.065317 Trang 13
- Click chu6t phΜi vào d> án: Baitap2.3 phía bên trái cΖa sΦ làm viΧc, ch+n New / Class
58 tΚo lΡp.
- Gõ tên lΡp là Baitap2_3 vào mΥc Name, 5ánh dΩu ch+n vào public static void main
(String[] args) 58 tΚo ph:Εng th?c chính c[a lΡp.
- Ch+n Finish.
- Vi1t lΧnh cho ch:Εng trình nh: sau:
//Khai bao cac thu vien
i mport java.util.Scanner;

publ i c cl as s Baitap2_3 {

//Khai bao doi tuong input cua lop Scanner nhan du lieu nhap vao


pri vat e s t at i c Scanner i nput ;

//Chuong trinh chinh

publ i c s t at i c voi d main(String[] args){

//Khoi tao doi tuong input

i nput = new Scanner(System.i n);

//Khai bao 2 bien ten, matkhau
String ten=
nul l , matkhau=nul l ;

i nt dem=1;

//Thuc hien nhap ten, matkhau toi da 3 lan

whi l e(dem<=3)
{
System.
out .print("Nh9p tên ng#:i dùng: ");
ten =
i nput .next();
System.
out .print("Nh9p m9t kh<u: ");
matkhau =
i nput .next();
dem=dem+1;
//Neu ten va matkhau nhap vao dung thi thoat vong lap


i f ((ten.equals("khuong")) && (matkhau.equals("123")))

break;
}
//Khai bao bien tong

i nt tong=0;

//Thuc hien vong lap for kiem tra tung so tu 100 den 200

f or (i nt i=100; i<=200; i++)
{
//Neu i thoa dieu kien thi hien thi va cong i vao bien tong

i f ((i%3==0)&&(i%5==0))
{
System.out .print(i + " ");
tong=tong+i;
}
}
System.out .println("\nT=ng các s∗ thoa %i&u ki∋n là: " + tong);
}
}
- Biên dΞch và chΚy ch:Εng trình, Ctrl + F11
Bài t p: “L p trình truy#n thông”


Biên so#n: ThS. Nguy∃n V∋n Kh)∗ng – MB: 0905.065317 Trang 14
Bài t,p 2.4: Vi1t ch:Εng trình Java nh7p mΜng s0 nguyên g∆m n ph−n tΖ (n là s0 nguyên nh7p

vào tΛ bàn phím). Yêu c−u:
- Hi8n thΞ mΜng vΛa nh7p.
- SΑp x1p các ph−n tΖ mΜng theo th? t> t_ng d−n và hi8n thΞ mΜng.
- Nh7p 1 s0 tΛ bàn phím và hi8n thΞ ph−n tΖ th? mΩy c[a mΜng có giá trΞ bΣng s0 vΛa
nh7p (L:u ý: ch3 hi8n thΞ ph−n tΖ 5−u tiên)
Bài gi7i:
- KhΠi 56ng Eclipse.
- Ch+n File / New/ Java Project 58 tΚo d> án mΡi. Ch+n Next
- Gõ tên Baitap2.4 vào mΥc Project Name. Ch+n Next, Ch+n Finish.
- Click chu6t phΜi vào d> án: Baitap2.4 phía bên trái cΖa sΦ làm viΧc, ch+n New / Class
58 tΚo lΡp.
- Gõ tên lΡp là Baitap2_4 vào mΥc Name, 5ánh dΩu ch+n vào public static void main
(String[] args) 58 tΚo ph:Εng th?c chính c[a lΡp.
- Ch+n Finish.
- Vi1t lΧnh cho ch:Εng trình nh: sau:
i mport java.util.Scanner;

publ i c cl as s Baitap2_4 {

//Khai bao doi tuong input cua lop Scanner nhan du lieu nhap vao

pri vat e s t at i c Scanner i nput ;

//Xay dung ham nhap gia tri theo kieu so nguyen

publ i c s t at i c i nt nhapgiatri(){

//Khoi tao doi tuong input

i nput = new Scanner(System.i n);


bool ean check= f al s e;

i nt n=0;

whi l e(!check){
System.
out .print(" ");

t ry{
n=
i nput .nextInt();
check=
t rue;
}
cat ch(Exception e){
System.
out .println("B1n ph5i nh9p s∗, hãy nh9p l1i ");

i nput .nextLine();
}
}

ret urn (n);
}
//Xay dung ham nhap gia tri cac phan tu mang
publ i c s t at i c voi d nhapmang(i nt mang[], i nt n)
{
Bài t p: “L p trình truy#n thông”



Biên so#n: ThS. Nguy∃n V∋n Kh)∗ng – MB: 0905.065317 Trang 15

f or (i nt i=0; i<n; i++)
{
System.out .print("Nh9p mang["+i+"]= ");
mang[i]=nhapgi at r i ();
}
}
//Xay dung ham xuat mang

publ i c s t at i c voi d xuatmang(i nt mang[], i nt n)
{
System.out .println("\nHi n th, m5ng:");

f or (i nt i=0; i<n; i++)
{
System.out .print(mang[i] + " ");
}
}

//Xay dung ham sap xep mang tang dan

publ i c s t at i c voi d sapxeptang(i nt mang[], i nt n)
{
i nt bientam;

f or (i nt i=0; i<(n-1); i++)
{
f or (i nt j=i+1; j<n; j++)

{
i f (mang[j]<mang[i])
{
bientam=mang[j];
mang[j]=mang[i];
mang[i]=bientam;
}
}
}
System.
out .println("\nM5ng %ã %#>c s?p x3p t≅ng dΑn.");
}


//Chuong trinh chinh

publ i c s t at i c voi d main(String [] args)
{
//Nhap so phan tu cua mang
System.
out .print("Nh9p giá tr, n: ");

i nt n=nhapgi at ri ();

//Khoi tao bien mang[] gom n phan tu

i nt [] mang=new i nt [n];

//Goi lai ham nhap mang
nhapmang(mang,n);

//Goi lai ham xuat mang
xuat mang(mang,n);
//Goi lai ham sap xep mang tang dan va hien thi
sapxept ang(mang,n);
xuat mang(mang,n);

//Nhap gia tri can tim
System.
out .print("\nNh9p giá tr, cΑn tìm: ");

i nt giatri=nhapgi at ri ();

//Duyet mang de tim phan tu dau tien bang bien giatri

f or(i nt i=0; i<n; i++)
{
Bài t p: “L p trình truy#n thông”


Biên so#n: ThS. Nguy∃n V∋n Kh)∗ng – MB: 0905.065317 Trang 16

i f (mang[i] == giatri)
{
System.out .println("PhΑn tΒ %Αu tiên bΧng " + giatri + "
là phΑn tΒ th∀: "
+ (i+1));

break;
}
}

}
}
- Biên dΞch và chΚy ch:Εng trình, Ctrl + F11.

Bài t,p 2.5: Vi1t ch:Εng trình Java nh7p mΜng 2 chiΓu có m hàng, n c6t vΡi m, n là 2 s0
nguyên nh7p vào tΛ bàn phím. Yêu c−u:
- Hi8n thΞ mΜng vΛa nh7p.
- Hi8n thΞ tΦng giá trΞ tΛng hàng c[a mΜng
- Hoán vΞ hàng th? 2 và th? 3 c[a mΜng và hi8n thΞ.
Bài gi7i:
- KhΠi 56ng Eclipse.
- Ch+n File / New/ Java Project 58 tΚo d> án mΡi. Ch+n Next
- Gõ tên Baitap2.5 vào mΥc Project Name. Ch+n Next, Ch+n Finish.
- Click chu6t phΜi vào d> án: Baitap2.5 phía bên trái cΖa sΦ làm viΧc, ch+n New / Class
58 tΚo lΡp.
- Gõ tên lΡp là Baitap2_5 vào mΥc Name, 5ánh dΩu ch+n vào public static void main
(String[] args) 58 tΚo ph:Εng th?c chính c[a lΡp.
- Ch+n Finish.
- Vi1t lΧnh cho ch:Εng trình nh: sau:
Bài t p: “L p trình truy#n thông”


Biên so#n: ThS. Nguy∃n V∋n Kh)∗ng – MB: 0905.065317 Trang 17
i mport java.util.Scanner;
publ i c cl as s Baitap2_5 {

//Khai bao doi tuong input cua lop Scanner nhan du lieu nhap vao

pri vat e s t at i c Scanner i nput ;


//Xay dung ham nhap gia tri theo kieu so nguyen

publ i c s t at i c i nt nhapgiatri(){

//Khoi tao doi tuong input

i nput = new Scanner(System.i n);

bool ean check= f al s e;

i nt n=0;

whi l e(!check){
System.
out .print(" ");

t ry{
n=
i nput .nextInt();
check=
t rue;
}
cat ch(Exception e){
System.
out .println("B1n ph5i nh9p s∗, hãy nh9p l1i ");

i nput .nextLine();
}
}


ret urn (n);
}
//Xay dung ham nhap gia tri cac phan tu mang

publ i c s t at i c voi d nhapmang(i nt mang[][], i nt m, i nt n)
{
f or (i nt i=0; i<m; i++)
{

f or (i nt j=0; j<n; j++)
{
System.out .print("Nh9p mang["+i+"]["+j+"]= ");
mang[i][j]=nhapgi at r i ();
}
}
}

//Xay dung ham xuat mang

publ i c s t at i c voi d xuatmang(i nt mang[][], i nt m, i nt n)
{
System.out .println("\nHi n th, m5ng:");

f or (i nt i=0; i<m; i++)
{
f or(i nt j=0; j<n; j++)
{
System.out .print(mang[i][j] + " ");
}
System.out .println();

}
}

//Xay dung ham tinh tong tung hang va hien thi

publ i c s t at i c voi d tonghang(i nt mang[][], i nt m, i nt n)
{
f or (i nt i=0; i<m; i++)
{
i nt tonghang=0;

f or (i nt j=0; j<n; j++)
{
Bài t p: “L p trình truy#n thông”


Biên so#n: ThS. Nguy∃n V∋n Kh)∗ng – MB: 0905.065317 Trang 18
tonghang=tonghang + mang[i][j];
}
System.
out .println("T=ng hàng " + i + " = " + tonghang);
}
}

//Xay dung ham hoan vi hang 2 va hang 3

publ i c s t at i c voi d hoanvi(i nt mang[][], i nt m, i nt n)
{
i nt bientam;


f or (i nt j=0; j<n; j++)
{
bientam=mang[1][j];
mang[1][j]=mang[2][j];
mang[2][j]=bientam;
}
System.
out .println("Hàng 2 và hàng 3 c∆a m5ng %ã hoán v,");
}


//Chuong trinh chinh

publ i c s t at i c voi d main(String [] args)
{
//Nhap so hang, so cot cua mang
System.
out .print("Nh9p s∗ hàng: ");

i nt m=nhapgi at ri ();
System.
out .print("Nh9p s∗ c8t: ");

i nt n=nhapgi at ri ();

//Khoi tao bien mang[] gom m hang, n cot

i nt [][] mang=new i nt [m][n];

//Goi lai ham nhap mang

nhapmang(mang,m,n);

//Goi lai ham xuat mang
xuat mang(mang,m,n);
//Goi lai ham tong hang
t onghang(mang,m,n);
//Goi lai ham hoan vi
hoanvi (mang,m,n);

//Hien thi lai mang da hoan vi
xuat mang(mang,m,n);
}
}
- Biên dΞch ch:Εng trình, Ctrl + F11

Bài t p: “L p trình truy#n thông”


Biên so#n: ThS. Nguy∃n V∋n Kh)∗ng – MB: 0905.065317 Trang 19
Bài t,p 2.6: Vi1t ch:Εng trình quΜn lý sách cho 1 th: viΧn, vΡi các ch?c n_ng nh: giao diΧn
ch:Εng trình bên d:Ρi:

Bài gi7i:
• Xây d≅ng lΙp Sach:
LΡp này l:u thông tin tΛng quy8n sách:
- KhΠi 56ng Eclipse.
- Ch+n File / New/ Java Project 58 tΚo d> án mΡi. Ch+n Next
- Gõ tên Baitap2.6 vào mΥc Project Name. Ch+n Next, Ch+n Finish.
- Click chu6t phΜi vào d> án: Baitap2.6 phía bên trái cΖa sΦ làm viΧc, ch+n New / Class
58 tΚo lΡp.

- Gõ tên lΡp là Sach vào mΥc Name. Ch+n Finish.
- Vi1t lΧnh cho lΡp Sach nh: sau:
//Khai bao lop Sach
cl as s Sach
{
//Khai bao cac thuoc tinh
String
tensach; //Ten sach
String
loaisach; //Loai sach
String
tacgia; //Tac gia

i nt giasach; //Gia sach

i nt masach; //Ma sach

i nt namxb; //Nam xuat ban

//Khai bao phuong thuc khoi tao cho lop Sach

publ i c Sach()
{
tensach = "";

loaisach = "";

tacgia = "";

giasach = 0;


masach = 0;

namxb = 0;
}
}
Bài t p: “L p trình truy#n thông”


Biên so#n: ThS. Nguy∃n V∋n Kh)∗ng – MB: 0905.065317 Trang 20
• Xây d≅ng lΙp Thuvien:
LΡp này k1 thΛa lΡp sách, khai báo mΜng các 50i t:Οng sách và th>c hiΧn các thao tác nh::
Nh7p sách, Tìm ki1m sách, Hi8n thΞ thông tin sách.
- Click chu6t phΜi vào d> án: Baitap2.6 phía bên trái cΖa sΦ làm viΧc, ch+n New / Class
58 tΚo lΡp.
- Gõ tên lΡp là Thuvien vào mΥc Name.
- Ch+n Finish.
- Vi1t lΧnh cho lΡp Thuvien nh: sau:
i mport java.util.Scanner;

//Khai bao lop thu vien
cl as s Thuvien{
Sach []
sach; //Khai bao mang sach thuoc lop Sach

i nt sachcounter; //Khai bao bien dem so luong sach trong thu vien
pri vat e Scanner nhap;//Khai bao bien nhan gia tri nhap tu ban phim

//Phuong thuc khoi tao lop thu vien


publ i c Thuvien()
{
sachcounter = 0;
}
//Phuong thuc nhap thong tin sach

publ i c voi d nhapsach()
{
nhap = new Scanner(System.i n);

i f (sachcounter < sach.length)
{
//Khai bao mot mang sach thuoc lop Sach

sach[sachcounter] = new Sach();
System.
out .print("Nh9p vào mã sách: ");

sach[sachcounter].masach = nhap.nextInt();

nhap.nextLine();
System.
out .print("Nh9p vào tên sách: ");

sach[sachcounter].tensach = nhap.nextLine();
System.
out .print("Nh9p vào tác gi5: ");

sach[sachcounter].tacgia = nhap.nextLine();
System.

out .print("Nh9p vào lo1i sách: ");

sach[sachcounter].loaisach = nhap.nextLine();
System.
out .print("Nh9p vào giá sách: ");

sach[sachcounter].giasach = nhap.nextInt();
System.
out .print("Nh9p vào n≅m xuΦt b5n: ");

sach[sachcounter].namxb = nhap.nextInt();

sachcounter++;
}
el se
{
System.
out .println("Không th nh9p s∗ l#>ng sách qui %,nh.");
}
Bài t p: “L p trình truy#n thông”


Biên so#n: ThS. Nguy∃n V∋n Kh)∗ng – MB: 0905.065317 Trang 21
}


//Phuong thuc tim sach
publ i c voi d timsach()
{
nhap = new Scanner(System.i n);

String sachName =
""; //Khai bao bien sachName

i nt i;

bool ean sachFound = f al s e; //Khai bao bien tim sach
String tensach =
"";

//Neu co sach trong thu vien

i f (sachcounter > 0)
{

//Nhap tu hay cum tu trong ten sach cam tim
System.
out .print("Nh9p vào 1 or cΓm tΗ trong tên sách cΑn tìm: ");
sachName =
nhap.nextLine();

//Chuyen gia tri sachName thanh chu thuong
sachName = sachName.toLowerCase();
//Lan luot tim tat ca sach trong thu vien

f or (i = 0; i < sachcounter; i++)
{
//Chuyen tat ca ten sach thanh chu thuong
tensach =
sach[i].tensach.toLowerCase();
//Kiem tra xem chuoi sachName co xuat hien trong chuoi tensach

hay khong


i f (tensach.indexOf(sachName) != -1)
{
sachFound =
t rue; //Tim thay sach
}
}

//Neu tim thay sach

i f (sachFound == t rue)
{
System.out .println("Danh sách sách tìm %#>c là:");
System.
out .printf("\n%1$5s %2$10s %3$20s %4$15s %5$15s %6$10s
%7$10s"
, "STT", "Mã", "Tên sách", "Lo1i sách", "Tác gi5", "Giá sách", "N≅m xuΦt
b5n"
);

f or (i = 0; i < sachcounter; i++)
{
tensach = sach[i].tensach.toLowerCase();

i f (tensach.indexOf(sachName) != -1)
{
System.out .printf("\n%1$5s %2$10s %3$20s %4$15s
%5$15s %6$10s %7$10s"

, i + 1, sach[i].masach, sach[i].tensach, sach[i].loaisach,
sach[i].tacgia, sach[i].giasach, sach[i].namxb);
}
}
}
el se
{
System.out .println("Không tìm thΦy sách nói trên."); //Khong
tim thay sach

}
}

el se
Bài t p: “L p trình truy#n thông”


Biên so#n: ThS. Nguy∃n V∋n Kh)∗ng – MB: 0905.065317 Trang 22
{
System.
out .println("Không tìm thΦy sách nào trong th# vi∋n");
}
}

//Phuong thuc hien thi thong tin sach

publ i c voi d hienthisach()
{
i nt i;


//Neu khong co sach trong thu vien

i f (sachcounter == 0)
{
System.out .println("Không tìm thΦy sách nào trong th# vi∋n");
}
el se
{
System.
out .println("Danh sách sách hi∋n có là:");
System.
out .printf("\n%1$5s %2$15s %3$20s %4$15s %5$15s %6$10s
%7$10s"
, "STT", "Mã sách", "Tên sách", "Lo1i sách", "Tác gi5", "Gía sách", "N≅m
xuΦt b5n"
);

f or (i = 0; i < sachcounter; i++) {
System.
out .printf("\n%1$5s %2$15s %3$20s %4$15s %5$15s %6$10s
%7$10s"
, i + 1, sach[i].masach, sach[i].tensach, sach[i].loaisach,
sach[i].tacgia, sach[i].giasach, sach[i].namxb);
}
}
}
}
• ViΓt lΙp Quanlythuvien:
LΡp này ch?a ch:Εng trình chính 58 chΚy:
- Click chu6t phΜi vào d> án: Baitap2.6 phía bên trái cΖa sΦ làm viΧc, ch+n New / Class

58 tΚo lΡp.
- Gõ tên lΡp là Quanlythuvien vào mΥc Name.
- Ch+n Finish.
- Vi1t lΧnh cho lΡp Quanlythuvien nh: sau:
i mport java.util.Scanner;

//Khai bao lop Quanlythuvien
cl as s Quanlythuvien {

//Khai bao bien nhan gia tri nhap tu ban phim

pri vat e s t at i c Scanner nhap;

//Chuong trinh chinh

publ i c s t at i c voi d main(String args[]){

nhap = new Scanner(System.i n);

//Khai bao doi tuong newsach thuoc lop Thuvien
Thuvien newsach =
new Thuvien();
//Khai bao doi tuong newsach co toi da 100 Sach

Bài t p: “L p trình truy#n thông”


Biên so#n: ThS. Nguy∃n V∋n Kh)∗ng – MB: 0905.065317 Trang 23
newsach.
sach = new Sach[100];


i nt chon =0; //Khai bao bien chon

//Trong khi khong lua chon 4. Thoat

whi l e(chon !=4)
{
System.out .println("\n");
System.
out .println("******* Qu5n lý th# vi∋n ********");
System.
out .println("Các thao tác c∆a ch#/ng trình:");
System.
out .println("1. Thêm sách");
System.
out .println("2. Tìm sách");
System.
out .println("3. Hi n th, sách");
System.
out .println("4. Thoát");
System.
out .println("**************************");
System.
out .print("Nh9p vào thao tác cΑn dùng: ");
chon =
nhap.nextInt();

//Xet gia tri bien chon de thuc hien chuc nang tuong ung

swi t ch (chon)

{
case 1:
newsach.nhapsach();
break;

cas e 2:
newsach.timsach();
break;

cas e 3:
newsach.hienthisach();

break;

cas e 4:
System.
out .println("*****K3t thúc ch#/ng trình*****");
System.exi t (0);
break;

def aul t :
System.
out .println("Thao tác sai!!!!!");
}
}
}
}
- Biên dΞch và chΚy ch:Εng trình, Ctrl + F11

Bài t,p 2.7: Vi1t ch:Εng trình giΜi ph:Εng trình b7c 1 nh: hình bên d:Ρi.


H:Ρng dΙn tham khΜo:
Bài t p: “L p trình truy#n thông”


Biên so#n: ThS. Nguy∃n V∋n Kh)∗ng – MB: 0905.065317 Trang 24
- KhΠi 56ng Eclipse.
- Ch+n File / New/ Java Project 58 tΚo d> án mΡi.
- Gõ tên Baitap2.7 vào mΥc Project Name. Ch+n Finish.
- Click chu6t phΜi vào d> án: Baitap2.7 phía bên trái cΖa sΦ làm viΧc, ch+n New / Other /
WindowBuider / Swing Designer / Application Window, ch+n Next 58 tΚo ?ng dΥng
Window
- Gõ tên là PTB1 vào mΥc Name. Ch+n Finish.
- Ch+n thγ Design 58 thi1t k1 theo ki8u tr>c quan s∴ xuΩt hiΧn các công cΥ tr>c quan.
- Ch+n Form 5ang thi1t k1, thi1t l7p thu6c tính Variable: frmptb1, thi1t l7p thu6c tính
title: GiΜi ph:Εng trình b7c 1.
- Click chu6t phΜi vào Form 5ang thi1t k1, ch+n Set layout / Absolute layout.
- TΚo 1 JLable sang Form 5ang thi1t k1, thi1t l7p thu6c tính text: GiΜi ph:Εng trình b7c
1: ax + b = 0, thay 5Φi thu6c tính font: Bold, cη ch9 16.
- L−n l:Οt tΚo 3 JLable, thi1t l7p thu6c tính text t:Εng ?ng: Nh7p a, Nh7p b, K1t quΜ.
- L−n l:Οt tΚo 3 JTextField, 5αt name t:Εng ?ng: textFielda, textFieldb, textFieldketqua.
- L−n l:Οt tΚo 3 JButton, thi1t l7p thu6c tính name t:Εng ?ng là: btngiaipt, btnlamlai,
btnthoat; thi1t l7p thu6c tính text t:Εng ?ng: GiΜi PT, Làm lΚi, Thoát.
- Click 5ôi vào JButton btngiaipt gõ 5oΚn lΧnh sau:
publ i c voi d actionPerformed(ActionEvent arg0) {

f l oat a = Float.parseFloat(textFielda.getText());

f l oat b = Float.parseFloat(textFieldb.getText());


i f (a==0)
{

i f (b==0)
textFieldketqua.setText(
"Ph#/ng trình vô s∗ nghi∋m");

el se
textFieldketqua.setText(
"Ph#/ng trình vô nghi∋m");
}
el s e
textFieldketqua.setText(
"Ph#/ng trình có nghi∋m: " + (Math.round(-b/a
* 100)/100f));
}
- Click 5ôi vào JButton btnlamlai gõ 5oΚn lΧnh sau:
publ i c voi d actionPerformed(ActionEvent arg0) {
textFielda.setText(
nul l );
textFieldb.setText(nul l );
textFieldketqua.setText(nul l );

×