Xây dựng hệ thống phục vụ bạn đọc qua mạng tại Trung tâm thông tin tư liệu đại học Đà Nẵng

MỞ ĐẦU Việc phát triển các chương trình ứng dụng trên mạng hiện nay và đặc biệt là phát triển ứng dụng trên Internet là vấn đề rất cần thiết để phù hợp với xu hướng phát triển chung của CNTT, nâng cao tính chuyên nghiệp và giải pháp thực thi một công việc cụ thể của một phần mềm máy tính. Trong tình hình mới hiện nay, khi mọi mặt trong đời sống xã hội và khoa học kỹ thuật đều có những tiến bộ và nâng cao thì nhu cầu thông tin phục vụ học tập, nghiên cứu, tham khảo, giải trí .của con người càng cao. Do vậy, thư viện là thực sự cần thiết và không thể thiếu được để phục vụ con người. Đồ án tốt nghiệp “Xây dựng hệ thống phục vụ bạn đọc qua mạng tại Trung tâm thông tin tư liệu ĐHĐN” là một tiếp cận mới cho thư viện. Đó là khả năng sử dụng thư viện từ xa thông qua mạng máy tính. Đề tài được phân tích trên cơ sở mô hình liên kết giữa TTTTTL và các thư viện thuộc các trường thành viên. Nội dung đồ án được chia thành 4 chương Chương 1: Giới thiệu về TTTTTL và các thư viện thuộc các trường trong ĐHĐN. Xem xét các vấn đề hạn chế của các chương trình quản lý thư viện đề tìm được vấn đề cần thực thi giải quyết của đề tài. Phát biểu bài toán đặt ra và nêu nhiệm vụ của đề tài và phương hướng giải quyết. Chương 2: Là chương quan trọng nhất. Chương này sẽ nêu mô hình tổng quát của bài toán, đề xuất các phương án và lựa chọn một phương án giải quyết hợp lý kết hợp triển khai mô hình theo phương án đã chọn. Đồng thời, chương này cũng phân tích kỹ về cách thiết kế ứng dụng và đề ra các giải thuật tổng quát nhất. Chương 3: Là chương quan trọng của đồ án. Chương này sẽ trình bày tổng thể của một chương trình ứng dụng phục vụ bạn đọc trên mạng. Xây dựng chương trình khả thi trên nền WWWW. Hơn nữa, chương này cũng đã đi sâu phân tích các thành phần cần thiết của ứng dụng và nêu ra thuật toán chi tiết về sự triển khai chương trình. Ngoài ra, trong chuơng còn đề cập đến một số đoạn mã Java tiêu biểu và kết quả Demo chương trình. Chương 4: Tổng kết đề tài. Nội dung chương này sẽ kết lại toàn bộ nội dung thực hiện của đồ án tốt nghiệp gồm: Những kết quả đạt được của chương trình, Ưu điểm và hạn chế của đề tài, Phạm vi ứng dụng và Hướng phát triển mở rộng của chương trình đồ án. Mặc dù đã có nhiều cố gắng song nội dung và chương trình của đồ án tốt nghiệp vẫn còn thiếu sót. Rất mong sự đánh giá, nhận xét và đóng góp ý kiến của các thầy, cô và bạn bè. Xin thành thật cảm ơn.

doc45 trang | Chia sẻ: lvcdongnoi | Lượt xem: 2323 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Xây dựng hệ thống phục vụ bạn đọc qua mạng tại Trung tâm thông tin tư liệu đại học Đà Nẵng, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
.. Dãù daìng thæûc hiãûn caïc yãu cáöu cuía baûn âoüc sau khi tra cæïu båíi vç trong thåìi âiãøm âoï baûn âoüc chè laìm viãûc våïi mäüt thæ viãûn nãn caïc yãu cáöu cuía baûn âoüc chè chuyãøn âãún mäüt thæ viãûn. Màût khaïc, Baûn âoüc cuîng thuäüc sæû quaín lyï cuía thæ viãûn nãn caïc hoaût âäüng âàng kyï mæåün taìi liãûu tæì xa cuîng âæåüc thæ viãûn xaïc nháûn dãù daìng. Vê duû: Baûn âoüc gåíi yãu cáöu tçm kiãúm taìi liãûu coï chuí âãö laì “Java” cuía taïc giaí “Noel Enete”. Nãúu taìi liãûu laì saïch thç baûn coï thãø âàng kyï mæåün våïi thæ viãûn hoàûc nãúu taìi liãûu âoï laì Webbook thç baûn coï thãø âoüc træûc tiãúp trãn maûng. Yãu cáöu cuía baûn âoüc âæåüc chuyãøn âãún thàóng cho thæ viãûn maì baûn âàng kyï, thæ viãûn seî luûc tçm caïc file dæî liãûu tæång æïng âãø gåíi vãø cho baûn âoüc. Âiãöu naìy khäng thãø triãøn khai trong hai phæång aïn âáöu. Haûn chãú quaï taíi cho maïy chuí vaì cho âæåìng truyãön vç maïy chuí chè coï chæïc nàng tiãúp nháûn yãu cáöu vaì traí låìi, khäng coï chæïc nàng chuyãøn yãu cáöu sang caïc thæ viãûn khaïc. Baûn âoüc kãút näúi sang thæ viãûn khaïc thç liãn kãút våïi thæ viãûn ban âáöu bë huyí boí nãn giaíi phoïng âæåìng truyãön. Täøng kãút Våïi caïc phæång aïn trãn, ta choün phæång aïn thæï 3 âãø xáy dæûng æïng duûng. Nguyãn lyï hoaût âäüng cuía phæång aïn 3 âæåüc mä taí theo så âäö thuáût toaïn sau: Bàõt âáöu Baûn âoüc âàng kyï laìm viãûc taûi mäüt thæ viãûn Baûn âoüc giao tiãúp dæî liãûu våïi thæ viãûn Tråü giuïp kãút näúi Âãún thæ viãûn khaïc Kãút thuïc S  Yãu cáöu chuyãøn sang thæ viãûn khaïc Hçnh 10: Læu âäö thuáût toaïn cuía phæång aïn giaíi quyãút thæï 3 Tæì mä hçnh phæång aïn vaì læu âäö hoaût âäüng, ta nháûn tháúy: Baûn âoüc sæí duûng chæång trçnh âãø truy cáûp âãún mäüt thæ viãûn báút kyì hoàûc Trung tám TTTL thäng qua âëa chè cuía maïy chuí taûi âoï âãø gåíi caïc yãu cáöu vãö taìi liãûu cáön thiãút cho muûc âêch cuía mçnh nãn chè cáön xáy dæûng mäüt chæång trçnh æïng duûng chung cho baûn âoüc. Chæång trçnh æïng duûng Chæång trçnh maïy khaïch Chæång trçnh maïy chuí Nãúu tháút baûi trong cäng viãûc tçm kiãúm taìi liãûu vaì thäng tin cáön thiãút taûi mäüt thæ viãûn, chæång trçnh seî tæû âäüng giuïp baûn âoüc kãút näúi våïi mäüt thæ viãûn khaïc. Qua âoï, baûn âoüc coï thãø bàõt âáöu moüi cäng viãûc tçm kiãúm, âoüc qua maûng, copy... træûc tiãúp våïi thæ viãûn âæåüc chè âënh vaì chëu sæû quaín lyï cuía thæ viãûn âoï. Do váûy, chæång trçnh maïy chuí thæ viãûn cuîng duy nháút laì mäüt nhæng âæåüc âàût taûi nhiãöu nåi khaïc nhau. Hçnh 11: Cáúu truïc chung cuía chæång trçnh Phán têch vaì triãøn khai Trong pháön naìy ta tiãúp tuûc khaío saït caïc thaình pháön cuía mäüt æïng duûng Khaïch/Chuí âãø xaïc âënh nhæîng yãu cáöu cáön thiãút cuía mäüt chæång trçnh maïy khaïch maì baûn âoüc sæí duûng tæång taïc våïi TTTTTL, caïc thæ viãûn vaì chæång trçnh maïy chuí phuûc vuû nhu cáöu cho baûn âoüc; quyãút âënh sæû phán bäú caïc thaình pháön æïng duûng âoï trãn maûng nhæ thãú naìo, laìm cå såí xáy dæûng thuáût toaïn xæí lyï trong chæång sau. Caïc thaình pháön cuía æïng duûng CSDL Khaïch/Chuí Pháön mãöm xáy dæûng cho kiãún truïc CSDL Khaïch/Chuí coï ba thaình pháön chênh sau: Thaình pháön trçnh baìy/Giao tiãúp våïi ngæåìi duìng (Presentation component/User interaction) Thaình pháön naìy thæûc hiãûn toaìn bäü caïc chæïc nàng giao tiãúp våïi ngæåìi sæí duûng qua giao diãûn âäö hoüa. Nhiãûm vuû cå baín nháút cuía thaình pháön naìy laì tiãúp nháûn caïc tçnh huäúng phaït sinh cuía ngæåìi duìng trãn caïc âäúi tæåüng âäö hoaû nhæ häüp læûa choün, menu, nuït lãûnh, ä vàn baín... cuía giao diãûn chæång trçnh âãø tiãún haình cäng viãûc hçnh thaình caïc cáu hoíi, caïc yãu cáöu trong caïc thuí tuûc tçnh huäúng, chuáøn bë chuyãøn cho chæång trçnh maïy chuí. Ngoaìi ra, noï coìn coï nhiãûm vuû sàõp âàût caïc thäng tin traí låìi tæì maïy chuí lãn caïc âäúi tæåüng âäö hoaû. Thaình pháön æïng duûng (Application component) Thaình pháön naìy thæûc thi nhæîng yãu cáöu cho æïng duûng trong ngæî caính maì æïng duûng hoaût âäüng. Trong træåìng håüp æïng duûng thæûc hiãûn trãn maûng thç nhiãûm vuû chênh cuía thaình pháön naìy truyãön thäng dæî liãûu trãn maûng, nghéa laì thæûc hiãûn cäng viãûc chuyãøn dæî liãûu tæì chæång trçnh maïy khaïch âãún chæång trçnh trãn maïy chuí vaì ngæåüc laûi nháûn dæî liãûu traí låìi tæì maïy chuí cho maïy khaïch. Ngoaìi ra, âãø chuáøn bë cho viãûc truyãön thäng dæî liãûu qua maûng vaì sàõp xãúp dæî liãûu phuûc vuû cho chæång trçnh, thaình pháön naìy coìn coï thãm chæïc nàng âënh khuän daûng cho dæî liãûu Thaình pháön quaín trë CSDL (Database management) Thaình pháön naìy gäöm hai bäü pháûn cå baín âoï laì: Bäü pháûn giao tiãúp CSDL vaì baín thán CSDL. Bäü pháûn giao tiãúp CSDL coìn âæåüc goüi laì Database Gateway. Noï coï nhiãûm vuû xaïc âënh loaûi CSDL cáön sæí duûng nhæ Foxpro, MS Access, Dbase...,thiãút láûp mäüt kãút näúi âãún CSDL, tiãúp nháûn caïc yãu cáöu truy váún (Query) dæî liãûu cuía ngæåìi duìng, tiãún haình váún tin våïi CSDL. Kãút quaí traí vãö laì mäüt táûp con cuía CSDL. Coìn baín thán CSDL coï nhiãûm vuû læu træî dæî liãûu cuû thãø phuûc vuû cho chæång trçnh. AÏp duûng vaìo xáy dæûng chæång trçnh Phán bäú thaình pháön CSDL Khaïch/Chuí cho æïng duûng Dæûa trãn mä hçnh baìi toaïn, ta phán bäú caïc thaình pháön cuía æïng duûng Khaïch/Chuí vaìo chæång trçnh nhæ sau: Baûn âoüc laì ngæåìi duìng cuäúi sæí duûng chæång trçnh hay noïi caïch khaïc, chæång trçnh baûn âoüc sæí duûng laì chæång trçnh cuía phêa maïy khaïch. Moüi váún âãö liãn quan âãún ngæåìi duìng (baûn âoüc) âãöu phaíi âæåüc thæûc thi taûi âáy. Hiãøn nhiãn, thaình pháön trçnh baìy âæåüc âàût taûi chæång trçnh cuía maïy khaïch. CSDL chæïa caïc thäng tin vãö taìi liãûu phuûc vuû cho baûn âoüc tra cæïu, tçm kiãúm, copy...thuäüc traïch nhiãûm quaín lyï cuía caïc thæ viãûn caïc træåìng vaì TTTTTL. Mäùi thæ viãûn coï mäüt CSDL riãng nhæng giäúng nhau vãö cáúu truïc. Do váûy, chæång trçnh maïy chuí âàût taûi caïc thæ viãûn âoï vaì thaình pháön quaín trë CSDL phaíi thuäüc chæång trçnh maïy chuí. Thaình pháön æïng duûng âæåüc chia âãöu cho caí hai phêa maïy khaïch vaì maïy chuí båíi vç chæång trçnh coï mäüt säú âàûc âiãøm sau: Caí hai chæång trçnh maïy chuí vaì maïy khaïch âãöu phaíi coï chæïc nàng gåíi vaì nháûn dæî liãûu qua maûng. Dæî liãûu cuía chæång trçnh maïy khaïch gåíi cho maïy chuí cáön phaíi âæåüc tuán theo mäüt khuän daûng qui æåïc âãø chæång trçnh trãn maïy chuí dãù xæí lyï vaì thuáûn tiãûn trong viãûc måí räüng chæång trçnh. Màût khaïc, chæång trçnh maïy chuí khäng chëu traïch nhiãûm vãö sæû hiãøn thë kãút quaí traí låìi trãn maïy khaïch nãn chæång trçnh maïy khaïch phaíi coï chæïc nàng xæí lyï caïc dæî liãûu traí låìi cuía maïy chuí âãø trçnh baìy lãn giao diãûn. Yãu cáöu cuía Baûn âoüc coï thãø laì yãu cáöu tçm kiãúm taìi liãûu hoàûc coï thãø laì yãu cáöu xem hay copy mäüt taìi liãûu âiãûn tæí naìo âoï. Do váûy, chæång trçnh maïy chuí cáön phaíi coï chæïc nàng nháûn biãút tæìng loaûi yãu cáöu cuía baûn âoüc âãø chuyãøn sang bäü pháûn xæí lyï thêch håüp, traí kãút quaí âuïng cho tæìng baûn âoüc. Chæång trçnh æïng duûng Chæång trçnh maïy khaïch Chæång trçnh maïy chuí TP. Trçnh baìy TP. Æïng duûng TP. Æïng duûng TP. Quaín trë CSDL Hçnh 12: Phán bäú caïc thaình pháön cho æïng duûng Âàûc taí caïc thaình pháön cho æïng duûng a. Thaình pháön trçnh baìy: Hiãøn thë caïc biãøu máùu âãø baûn âoüc âiãön caïc thäng tin cáön thiãút vãö taìi liãûu âãø tçm kiãúm. Chè tiãu tçm kiãúm taìi liãûu gäöm: Tçm kiãúm theo thãø loaûi taìi liãûu: Saïch, taûp chê,CD ROM, luáûn aïn, taìi liãûu âiãûn tæí... Tçm kiãúm theo tãn Taïc giaí cuía taìi liãûu Tçm kiãúm theo phán ngaình taìi liãûu Tçm kiãúm theo nhaì xuáút baín Tçm kiãúm theo chuí âãö chênh cuía taìi liãûu Tçm kiãúm chênh xaïc theo tãn taìi liãûu Tçm kiãúm nhanh taìi liãûu, thäng tin khoa hoüc måïi theo chuí âãö tuyì yï Caïc chè tiãu tçm kiãúm åí trãn laì tuyì choün. Baûn âoüc chè cáön xaïc âënh êt nháút mäüt âiãöu kiãûn laì coï thãø tçm kiãúm. Nãúu baûn âoüc xaïc âënh caìng nhiãöu âiãöu kiãûn tçm kiãúm thç kãút quaí coï âäü chênh xaïc caìng cao hån. Kãút quaí tçm kiãúm laì mäüt danh saïch caïc taìi liãûu thoaí maîn âiãöu kiãûn keìm theo caïc maî säú tæång æïng cuía chuïng. Vê duû: Nãúu âiãöu kiãûn tçm laì: Tãn taïc giaí=Phan Huy Khaïnh thç kãút quaí coï thãø laì: T0001 Lyï thuyãút ngän ngæî hçnh thæïc vaì Automat. T0002 Cäng nghãû pháön mãöm. T0003 Phán têch vaì thiãút kãú hãû thäúng. Nhæng âiãöu kiãûn tçm laì: Tãn taïc giaí=Phan Huy Khaïnh, Chuí âãö=Cäng nghãû pháön mãöm - thç kãút quaí: T0002 Cäng nghãû pháön mãöm. Nãúu muäún biãút thãm thäng tin chi tiãút vãö taìi liãûu âoï nhæ Taïc giaí, Nhaì xuáút baín, Näüi dung toïm tàõt, Phán ngaình...Baûn âoüc coï thãø choün taìi liãûu âoï tæì danh saïch kãút quaí vaì yãu cáöu “Xem chi tiãút”. Træåìng håüp âäúi våïi taìi liãûu âiãûn tæí. Sau khi coï kãút quaí tçm kiãúm, baûn âoüc coï thãø choün mäüt tãn taìi liãûu trong danh saïch âoï vaì yãu cáöu Copy hoàûc Âoüc Online. Sau âoï, näüi dung taìi liãûu seî âæåüc chæïc nàng Download cuía trçnh duyãût Web (Web Browse) sao cheïp vãö maïy cuûc bäü hoàûc seî âæåüc hiãøn thë trãn cæía säø trçnh duyãût âãø baûn âoüc tham khaío træûc tiãúp (vàn baín, hçnh aính, ám thanh, video...). Trong thaình pháön trçnh baìy cuía æïng duûng phaíi kãø âãún mäüt bäü pháûn khäng thãø thiãúu âoï laì caïc thuí tuûc tçnh huäúng. Thuí tuûc tçnh huäúng laì caïc chæång trçnh con âæåüc taûo láûp sàôn nhæng goüi thæûc hiãûn noï laûi laì caïc thao taïc cuía ngæåìi duìng trãn giao diãûn. Coï thãø hiãøu ràõng mäùi tçnh huäúng cuía baûn âoüc laì mäüt yãu cáöu. Vê duû: tçnh huäúng kêch chuäüt vaìo nuït “Âoüc Online”. Mäüt chæång trçnh con thæûc hiãûn láúy Maî säú taìi liãûu tæì trong Danh saïch kãút quaí taìi liãûu, taûo ra mäüt cáu yãu cáöu vaì gåíi yãu cáöu naìy âãún Server, Server cung cáúp file tæång æïng våïi maî säú âoï vãö cho chæång trçnh. Trçnh duyãût seî âaím traïch vai troì hiãøn thë file kãút quaí. b. Thaình pháön æïng duûng cuía maïy khaïch Thaình pháön æïng duûng cuía maïy khaïch thãø hiãûn trong chæång trçnh naìy bao gäöm hai chæïc nàng chênh: Âënh daûng dæî liãûu vaì gåíi dæî liãûu cho maïy chuí; Xæí lyï kãút quaí nháûn tæì maïy chuí vaì hiãøn thë. Âënh daûng dæî liãûu vaì gåíi dæî liãûu cho maïy chuí Chæång trçnh ta âang xáy dæûng thuäüc táöng æïng duûng. Theo tham chiãúu cuía mä hçnh OSI (Open System Interconnection) 7 táöng thç mäùi táöng coï mäüt qui tàõc truyãön thäng dæî liãûu riãng goüi laì giao thæïc. Vç váûy, chæång trçnh phaíi coï mäüt qui æåïc vãö dæî liãûu âãø coï thãø thäúng nháút trong viãûc viãút chæång trçnh trao âäøi dæî liãûu qua maûng maïy tênh. Xæí lyï kãút quaí nháûn tæì maïy chuí vaì hiãøn thë Dæî liãûu maì maïy chuí gåíi vãö cho maïy khaïch laì caïc chuäùi kyï tæû âæåüc âënh daûng bàòng caïc kyï tæû âàûc biãût. Vê duû: Kãút quaí laì mäüt táûp baín ghi cuía CSDL, caïc træåìng âæåüc phán caïch bàòng kyï tæû “^” vaì kãút thuïc mäüt baín ghi båíi kyï tæû “~”. “T0001^Lyï thuyãút ngän ngæî hçnh thæïc vaì Automat~T0002^Cäng nghãûpháön mãöm~T0003^Phán têch vaì thiãút kãú hãû thäúng~” Tuyì theo tæìng âäúi tæåüng âäö hoüa trãn giao diãûn chæång trçnh cuía baûn âoüc maì chuäùi kyï tæû trãn âæåüc xæí lyï vaì âiãön vaìo caïc âäúi tæåüng âäö hoaû. Java cung cáúp mäüt säú tiãûn êch khaï maûnh âãø xæí lyï chuäùi âoï laì thay thãú mäüt kyï tæû trong chuäùi bàòng kyï tæû khaïc vaì caïc phæång thæïc cheí chuäùi thaình caïc tæì täú dæûa trãn caïc kyï tæû cho træåïc. Thuáût toaïn hoaût âäüng täøng quaït cuía chæång trçnh maïy khaïch. Khåíi taûo chæång trçnh If coï yãu cáöu tæì baûn âoüc then Nháûn caïc tham säú tra cæïu, tçm kiãúm taìi liãûu Âënh daûng dæî liãûu Gåíi dæî liãûu âãún thæ viãûn If coï kãút quaí traí låìi tæì thæ viãûn then Nháûn dæî liãûu vaì âënh daûng dæî liãûu Hiãøn thë vaì âåüi yãu cáöu tiãúp theo Else Thäng baïo khäng tçm tháúy taìi liãûu Else tiãúp tuûc âåüi c. Thaình pháön æïng duûng cuía maïy chuí Thaình pháön æïng duûng cuía maïy chuí khaï phæïc taûp hån so våïi thaình pháön æïng duûng cuía maïy khaïch båíi vç cuìng mäüt luïc coï thãø coï nhiãöu yãu cáöu cuía baûn âoüc gåíi âãún vaì näüi dung cuía yãu cáöu cuía baûn âoüc coï thãø khaïc biãût nhau âoìi hoíi maïy chuí phaíi coï khaí nàng xæí lyï song song vaì coï nhiãöu chæïc nàng phuûc vuû hån. Khäúi âiãöu khiãøn chung (Master Process) Khäúi naìy coï nhiãûm vuû nháûn táút caí yãu cáöu kãút näúi cuía nhiãöu chæång trçnh baûn âoüc. Mäùi khi nháûn âæåüc mäüt yãu cáöu kãút näúi tæì maïy khaïch, noï seî taûo ra mäüt tiãøu trçnh phuû (Slave Process). Nhiãöu tiãøu trçnh phuû coï thãø hoaût âäüng âäöng thåìi våïi nhau. Mäùi maïy khaïch coï kãút näúi seî âæåüc mäüt tiãøu trçnh phuû âaím traïch viãûc liãn laûc. Váún âãö xáy dæûng chæång trçnh khäúi naìy âæåüc trçnh baìy chi tiãút trong chæång 3. Giaíi thuáût cho khäúi naìy nhæ sau: While true do Begin Âåüi kãút näúi If coï kãút näúi then Taûo tiãøu trçnh phuû liãn kãút våïi maïy coï yãu cáöu End Khäúi giao tiãúp våïi baûn âoüc Yãu cáöu cuía baûn âoüc ráút âa daûng. Coï thãø laì mäüt yãu cáöu truy váún dæî liãûu âãø tçm kiãúm taìi liãûu, yãu cáöu xaïc nháûn baûn âoüc, yãu cáöu âàng kyï taìi liãûu cuîng coï thãø laì yãu cáöu xem hoàûc copy mäüt vàn baín (Text/HTML), file hçnh aính, video, flie ám thanh, file chæång trçnh...Do âoï, khäúi naìy coï nhiãûm vuû xaïc âënh tæìng yãu cáöu cuû thãø âãø chuyãøn sang chæång trçnh xæí lyï tæång æïng thêch håüp. Giaíi thuáût cho khäúi naìy nhæ sau: If yãu cáöu laì truy váún dæî liãûu then Goüi chæång trçnh giao tiãúp CSDL Else If yãu cáöu tçm file then Goüi chæång trçnh tçm file Else thäng baïo läùi Khäúi tçm file Nãúu yãu cáöu cuía baûn âoüc xaïc âënh mäüt file cuû thãø trãn maïy chuí thç khäúi naìy coï nhiãûm vuû tçm ra file âoï, kiãøm tra loaûi file vàn baín hay nhë phán vaì goüi khäúi chuyãøn dæî liãûu âãø truyãön vãö cho baûn âoüc. Khäúi chuyãøn dæî liãûu Xaïc âënh loaûi dæî liãûu maì coï phæång thæïc truyãön thêch håüp. Giaíi thuáût cho khäúi naìy nhæ sau: If dæî liãûu laì vàn baín then Chuyãøn theo daûng chuäùi kyï tæû (Text) Else Chuyãøn theo daûng nhë phán (Byte) d. Thaình pháön quaín trë CSDL Thaình pháön quaín trë CSDL bao gäöm khäúi giao tiãúp CSDL vaì baín thán CSDL. Khäúi giao tiãúp CSDL Coï nhiãûm vuû taûo mäüt liãn kãút våïi CSDL âæåüc chè âënh vaì tiãún haình truy váún trãn CSDL âoï âãø láúy kãút quaí. Giaíi thuáût cho khäúi naìy nhæ sau: If yãu cáöu laì xaïc nháûn baûn âoüc then Goüi thuí tuûc xaïc nháûn Else If yãu cáöu tçm kiãúm caïc thäng tin vãö taìi liãûu then Goüi thuí tuûc tçm kiãúm Else If yãu cáöu laì âàng kyï mæåün taìi liãûu then Goüi thuí tuûc âàng kyï Baín thán CSDL Coï nhiãûm vuû læu giæî caïc thäng tin liãn quan vãö taìi liãûu phuûc vuû cho cäng viãûc tçm kiãúm cuía baûn âoüc. Thiãút kãú CSDL khäng phaíi laì mäüt váún âãö cuía æïng duûng. Thæûc cháút, chæång trçnh sæí duûng CSDL âaî thiãút kãúï sàôn cuía caïc thæ viãûn nhæ laì mäüt phæång tiãûn âãø phuûc vuû cho muûc âêch xáy dæûng æïng duûng. CSDL phuûc vuû cho chæång trçnh seî trçnh baìy åí phuû luûc A. CHÆÅNG III THIÃÚT KÃÚ CHÆÅNG TRÇNH Hoaût âäüng cuía chæång trçnh trãn maûng Tæång lai maûng cuía ÂHÂN seî laì sæû liãn kãút cuía caïc LAN cuía caïc træåìng ÂH, phuì håüp våïi âàûc âiãøm cuía hãû thäúng âæåüc mä taí trong chæång træåïc. Baûn âoüc truy cáûp vaì sæí duûng thæ viãûn tæì xa åí mäüt vë trê báút kyì. Baûn âoüc coï thãø åí laìm viãûc våïi maïy chuí trong mäüt maûng LAN. Træåìng håüp maûng LAN naìy coï kãút näúi våïi mäüt LAN khaïc thç baûn âoüc cuîng coï thãø laìm viãûc våïi maïy chuí cuía maûng LAN âoï.Ngoaìi ra, baûn âoüc åí xa khäng thuäüc mäüt LAN naìo cuîng coï thãø sæí duûng modem våïi âæåìng dáy âiãûn thoaûi âãø sæí duûng thæ viãûn tæì xa. Khi baûn âoüc khäng muäún giao tiãúp våïi mäüt thæ viãûn thç baûn âoüc coï thãø chuyãøn sang mäüt thæ viãûn khaïc bàòng caïch kãút näúi våïi thæ viãûn chè âënh trong chæång trçnh qua âëa chè cuía maïy chuí thæ viãûn. ÆÏïng duûng coï âãö cáûp âãún sæí duûng thæ viãûn âiãûn tæí, âoï laì caïc hoaût âäüng âoüc/xem taìi liãûu træûc tiãúp qua maûng, xem caïc thäng tin laì ám thanh, hçnh aính, hay caïc âoaûn phim video hoàûc copy taìi liãûu vãö maïy caï nhán âãø sæí duûng. Do váûy, âãø giaíi quyãút tênh khaí thi cuía chæång trçnh trãn maûng, chæång trçnh âæåüc xáy dæûng trãn nguyãn tàõc hoaût âäüng cuía World Wide Web (WWW). Dæûa trãn cå såí cuía WWW, cäng viãûc thiãút kãú chæång trçnh khäng coìn quan tám âãún caïc yãúu täú váût lyï cáúu thaình cuía maûng vç sæû truy cáûp cuía maïy khaïch âãún maïy chuí dæûa trãn âënh danh (âëa chè) cuía maïy chuí trãn maûng, nãn baûn âoüc åí vë trê báút kyì coï kãút näúi maûng âãöu coï thãø truy cáûp âãún maïy chuí cuía caïc thæ viãûn âãø sæí duûng chæång trçnh. Khi baûn âoüc muäún chuyãøn âäøi sang thæ viãûn khaïc thç chè cáön xaïc âënh mäüt âëa chè maïy chuí cuía thæ viãûn âæåüc cung cáúp sàôn trong chæång trçnh âãø tiãún haình kãút näúi âãún âoï. Kãút näúi cuía baûn âãún thæ viãûn cuî bë huíy boí vaì baûn âoüc bàõt âáöu cäng viãûc giao tiãúp dæî liãûu våïi thæ viãûn måïi. Chæïc nàng naìy tæång tæû nhæ hoaût âäüng cuía siãu liãn kãút (hyperlink) cuía Web. Trãn Web, chuång trçnh coìn coï thãø sæí duûng caïc chæïc nàng trçnh baìy vàn baín, âäö hoüa, ám thanh, copy âãø häù tråü sæí duûng thæ viãûn âiãûn tæí. Caïch thæïc xáy dæûng chæång trçnh Chæång trçnh duìng cho baûn âoüc (Chæång trçnh trãn maïy khaïch) Java coï hai hæåïng láûp trçnh. mäüt laì xáy dæûng chæång trçnh æïng duûng âäüc láûp, âoï laì caïc chuång trçnh thæûc thi bçnh thæåìng trãn mäüt hãû âiãöu haình. Hai laì xáy dæûng chæång trçnh têch håüp trong caïc trçnh duyãût Web, âoï laì caïc Applet. Chæång trçnh baûn âoüc gäöm mäüt trçnh duyãût thäng duûng maì haût nhán âiãöu khiãøn chênh laì caïc Applet. Chæång trçnh Applet seî thæûc thi caïc hoaût âäüng cuía æïng duûng nhæ taûo giao diãûn, nháûn caïc thäng tin yãu cáöu cuía baûn âoüc vãö taìi liãûu, chuyãøn yãu cáöu cuía baûn âoüc âãún mäüt thæ viãûn maì baûn âoüc âang laìm viãûc vaì nháûn kãút quaí traí låìi. Trçnh duyãût seî tham gia vaìo caïc chæïc nàng phuû nhæ hiãøn thë vàn baín, ám thanh, hçnh aính vaì copy file. Chæång trçnh duìng cho thæ viãûn (Chæång trçnh maïy chuí). Muûc âêch chênh cuía chæång trçnh maïy chuí laì âaïp æïng caïc âoìi hoíi vãö thäng tin taìi liãûu cho baûn âoüc. Tuy nhiãn âãø hoaût âäüng trãn maûng, chæång trçnh maïy chuí âæåüc xáy dæûng mä phoíng theo nguyãn lyï laìm viãûc cuía maïy chuí Web. Chæång trçnh coï khaí nàng nháûn caïc kãút näúi cuía baûn âoüc phaït âi tæì caïc trçnh duyãût Web, coï khaí nàng tiãúp nháûn vaì xæí lyï âäöng thåìi nhiãöu yãu cáöu cuía baûn âoüc gåíi âãún (xæí lyï âa truy cáûp taûi cuìng thåìi âiãøm). Âàûc biãût, âãø phuûc vuû troüng tám æïng duûng laì tçm kiãúm taìi liãûu vaì sæí duûng caïc taìi liãûu âiãûn tæí, chæång trçnh maïy chuí phaíi coï nhiãûm vuû kãút näúi âãún CSDL cuía thæ viãûn, váún tin vaì gåíi kãút quaí traí låìi cho baûn âoüc, âäöng thåìi phaíi chuyãøn âæåüc caïc loaûi file maì baûn âoüc yãu cáöu vãö trçnh duyãût âang sæí duûng. Hoaût âäüng cuía chæång trçnh trãn maûng Hoaût âäüng cuía chæång trçnh trãn maûng maïy tênh âæåüc thãø hiãûn trong hçnh veî sau âáy: Gateway to database laì mäüt chæång trçnh giao tiãúp våïi CSDL Hçnh 13: Hoaût âäüng cuía chæång trçnh Caïc váún âãö chênh khi xáy dæûng chæång trçnh. Khuän daûng dæî liãûu truyãön thäng trãn maûng Trong pháön trãn, chuïng ta coï âãö cáûp âãún phæång aïn sæí duûng chæång trçnh Java têch håüp trãn caïc trçnh duyãût Web. Do doï, ta coï thãø kãút håüp sæí duûng khuän daûng dæî liãûu cuía giao thæïc HTTP (HyperText Transfer Protocol-Giao thæïc dæî liãûu duìng cho Web) âãø duìng cho chæång trçnh maì khäng cáön phaíi âi xáy dæûng mäüt táûp qui tàõc âënh daûng dæî liãûu riãng. HTTP laì giao thæïc chuáøn duìng cho WWW nãn coï thãø khai thaïc caïc âiãøm maûnh cuía Web nhæ hiãøn thë hçnh aính, vàn baín, ám thanh, video, download...âãø phuûc vuû cho chæång trçnh. Trong chæång trçnh, viãûc sæí duûng HTTP chuí yãúu âãø tiãún haình gåíi mäüt yãu cáöu cho Server vaì chuáøn bë cho viãûc gåíi kãút quaí traí låìi tæì Server. Åí âáy, ta khäng cáön phaíi dæûng nguyãn laûi cáúu truïc maì chè táûp trung vaìo doìng âáöu tiãn cuía mäüt yãu cáöu hay mäüt âaïp æïng. Vê duû: Mäüt yãu cáöu coï thãø coï daûng GET HTTP/1.0 GET /SQL?Select+tentailieu+from+tailieu HTTP/1.0 Mäüt âaïp æïng coï thãø coï daûng HTTP/1.0 200 Document follow Content-type: text/html --------Data---------- Trong Java, nhiãûm vuû naìy âæåüc thæûc hiãûn bàòng viãûc khåíi taûo mäüt âëa chè URL (Uniform Resource Locator) vaì gàõn caïc phæång thæïc vaìo noï âãø gåíi yãu cáöu hoàûc nháûn dæî liãûu qua URL. Nhæng træåïc khi gåíi yãu cáöu ta phaíi âënh daûng chuäùi yãu cáöu theo qui âënh cuía HTTP. Xeït âoaûn maî sau: s="SELECT TAILIEU.Ma_TL,TAILIEU.Ten_TL FROM TAILIEU” s="&"+URLEncoder.encode(s); host=”” +"SQL?"+"Ketqua"+"&"+bang+s; try{ url=new URL(host); } catch(MalformedURLException e){} getAppletContext().showDocument(url); Trong âoaûn maî trãn, ta sæí duûng phæång thæïc URLEncode.encode(s) våïi tham säú s laì mäüt chuäùi kyï tæû. Kãút quaí laì ta âæåüc mäüt chuäùi måïi theo âënh daûng cuía HTTP. Chuäùi måïi nhæ sau: “SELECT+TAILIEU.Ma_TL,+TAILIEU.Ten_TL+FROM+TAILIEU” Våïi cáu lãûnh getAppletContext().showDocument(url) vaì giaí sæí tham säú url coï daûng: thç cáu lãûnh naìy âæåüc phiãn dëch thaình mäüt HTTP Request coï daûng: GET HTTP/1.0 Cáu yãu cáöu naìy âoìi Server phaíi gåíi táûp tin coï tãn index.html vãö cho Client. Âoaûn maî sau laì chuáøn bë cho pháön header cuía mäüt cáu traí låìi våïi dæî liãûu thuäüc daûng vàn baín tæì Server: public void putHtmlMime() { putMime(200, "text/html"); } public void putMime(int iReturnCode, String sContentType) { put ("HTTP/1.0 " + iReturnCode + " Document follows\n" // Status-line + "Content-type: " + sContentType + "\n" + "\n"); // Empty Line } Xæí lyï nhiãöu truy cáûp cuía baûn âoüc âãún thæ viãûn taûi cuìng thåìi âiãøm Mäüt váún âãö âàût ra cho chæång trçnh laì khaí nàng nhiãöu ngæåìi duìng. Trong cuìng mäüt thåìi âiãøm, coï thãø coï nhiãöu hån mäüt baûn âoüc kãút näúi âãún Thæ viãûn hoàûc TTTTTL âãø tra cæïu taìi liãûu. Mäüt chæång trçnh tuáön tæû xæí lyï vaì âaïp æïng tæìng yãu cáöu cuía baûn âoüc laì khäng thãø cháúp nháûn maì phaíi coï chæïc nàng xæí lyï song song nhiãöu yãu cáöu cuía baûn âoüc. Giaíi quyãút váún âãö naìy laì xáy dæûng chæång trçnh MultiThread. Mäüt chæång trçnh MultiThread laì chæång trçnh coï nhiãöu hån mäüt âoaûn chæång trçnh khaïc nhau thæûc hiãûn gáön nhæ cuìng mäüt luïc. Hçnh 14: Chæång trçnh tuáön tæû vaì chæång trçnh MultiThread Chæång trçnh MultiThread âæåüc sæí duûng âãø viãút chæång trçnh cho Server. Sau khi chæång trçnh chênh taûi Server nháûn âæåüc mäüt kãút näúi cuía baûn âoüc thç láûp tæïc noï taûo ra mäüt tiãøu trçnh (Thread). Tiãøu trçnh naìy seî thæûc hiãûn moüi cäng viãûc giao tiãúp våïi baûn âoüc âoï. Nãúu coï nhiãöu baûn âoüc kãút näúi thç seî coï nhiãöu Thread âæåüc taûo ra. Mäùi Thread tæång æïng cho mäüt baûn âoüc cuû thãø. Giao tiãúp CSDL Caïc nhaì thiãút kãú Java âaî nháûn tháúy ràòng láûp trçnh giao tiãúp CSDL trãn maûng seî laì mäüt æu thãú maûnh cuía Java nãn âaî cung cáúp mäüt API (Application Programming Interface) chuáøn âãø moüi chæång trçnh Java coï thãø kãút näúi våïi nhiãöu CSDL khaïc nhau trãn caïc hãû thäúng khaïc nhau. API naìy laì JDBC (Java Database Connectivity). JDBC laì caïc låïp API duìng cho viãûc xáy dæûng caïc chæång trçnh Java xæí lyï CSDL. Muûc tiãu cuía JDBC cuîng nhæ ngän ngæî Java laì tênh âäüc láûp nãön vaì khaí nàng laìm viãûc våïi nhiãöu hãû quaín trë CSDL trãn mäüt qui tàõc chung. Pháön bãn dæåïi cuía API naìy laì caïc trçnh quaín lyï âiãöu khiãøn JDBC cho ráút nhiãöu loaûi CSDL viãút cho sæû kãút håüp giæîa pháön cæïng vaì hãû âiãöu haình. Tuy nhiãn, baín thán JDBC âang trong giai âoaûn phaït triãøn vaì sæû häù tråü JDBC cuía caïc nhaì saín xuáút DBMS (Database Management System) cuîng coìn haûn chãú. Trãn mäi træåìng Windows, Sun cung cáúp mäüt trçnh âiãöu khiãøn JDBC laìm viãûc våïi ODBC. ODBC (Open Database Connectivity) laì nghi thæïc do Microsoft phaït triãøn âãø caïc æïng duûng trãn mäi træåìng Windows coï thãø truy xuáút cå såí dæî liãûu báút kyì. Query Statement JdbcOdbcDriver DATABASE JDBC ODBC Chæång trçnh âæåüc viãút trãn JDK 1.11 do Sun cung cáúp. Phiãn baín naìy chè häù tråü JDBC cho ODBC. Do váûy chæång trçnh phaíi sæí duûng caí JDBC vaì ODBC. Viãûc truy xuáút cå såí dæî liãûu bàòng Java phaíi thäng qua cáöu näúi JDBC vaì ODBC. Cáöu näúi JDBC/ODBC laì mäüt låïp moíng bãn trãn JDBC âãø chuyãøn âäøi caïc låìi goüi âãún JDBC sang caïc låìi goüi cho ODBC. Hçnh 15: Giao tiãúp JDBC-ODBC Maî chæång trçnh minh hoaû: String execQuery(String query){ String result=""; String url="jdbc:odbc:MS Access 97 Database"; try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection conn=DriverManager.getConnection(url,"Myname","Password"); Statement stmt=conn.createStatement(); ResultSet rs=stmt.executeQuery(query); Int col=(rs.getMetaData()).getColumnCount(); while(rs.next()){ for(int i=1;i<=col;i++){ if(!rs.wasNull()){ result+=rs.getString(i); } } catch(SQLException e){System.out.println(e.getMessage());} catch(ClassNotFoundException e){System.out.println(e.getMessage());} return result; } Täøng thãø chæång trçnh Theo kãút quaí phán têch hãû thäúng åí chæång 2, æïng duûng âæåüc chia laìm hai chæång trçnh chênh : Mäüt chæång trçnh cho maïy chuí thæ viãûn vaì mäüt chæång trçnh cho maïy khaïch (baûn âoüc). Chæång trçnh cuía maïy chuí bao gäöm caïc låïp: Låïp âiãöu khiãøn chung(Server class): coï nhiãûm vuû nháûn caïc kãút näúi tæì baûn âoüc vaì taûo ra mäüt tiãøu trçnh måïi âãø giao tiãúp hai chiãöu våïi baûn âoüc. Låïp giao tiãúp (SvrConnection class): coï nhiãûm vuû quaín lyï moüi giao tiãúp giæîa maïy chuí vaì mäüt maïy khaïch. Âàûc âiãøm näøi báût cuía chæång trçnh naìy laì naûp mäüt chæång trçnh Server måí räüng thêch håüp sau khi chæång trçnh Server måí räüng âaî xaïc âënh âæåüc taìi nguyãn vaì chuyãøn caïc tham säú cáön thiãút cuía mäüt yãu cáöu cuía mäüt baûn âoüc cho chæång trçnh Server måí räüng âäöng thåìi âoïng vai troì laì cäng cuû âãø caïc chæång trçnh Server måí räüng chuyãøn dæî liãûu vãö chæång trçnh maïy khaïch. Chæång trçnh naìy âæåüc thiãút kãú âãø chaûy trong mäüt tiãøu trçnh. Låïp Server måí räüng (ServerExtend class): coï nhiãûm vuû xaïc âënh taìi nguyãn maì baûn âoüc yãu cáöu (file hay chæång trçnh giao tiãúp CSDL) âãø goüi chæång trçnh xæí lyï thêch håüp. Noï coìn coï hai låïp phuû tråü sau: + Chæång trçnh file (FileSeek class): coï nhiãûm vuû xaïc âënh file maì baûn âoüc yãu cáöu vaì chuyãøn file âoï vãö cho baûn âoüc. + Chæång trçnh giao tiãúp CSDL (SQL class): coï nhiãûm vuû nháûn caïc yãu cáöu truy váún tæì baûn âoüc, váún tin trãn CSDL vaì gåíi kãút quaí vãö cho chæång trçnh maïy khaïch. Dæû aïn cuía chæång trçnh baûn âoüc gäöm coï nhiãöu chæång trçnh nhoí. Mäùi chæång trçnh xæí lyï mäüt nhiãûm vuû riãng nhæ Tra cæïu, Hiãøn thë kãút quaí, Âàng kyï taìi liãûu, Kiãøm tra baûn âoüc...Nhçn chung, caïc chæång trçnh nhoí naìy âãöu coï ba chæïc nàng cå baín: Xæí lyï tçnh huäúng trãn giao diãûn âãø nháûn tham säú cho caïc yãu cáöu. Âënh daûng dæî liãûu vaì gåíi cho maïy chuí. Xæí lyï kãút quaí traí låìi tæì maïy chuí vaì hiãøn thë. CHÆÅNG TRÇNH PHUÛC VUÛ BAÛN ÂOÜC QUA MAÛNG CHÆÅNG TRÇNH CUÍA MAÏY CHUÍ THÆ VIÃÛN CHÆÅNG TRÇNH CUÍA BAÛN ÂOÜC LÅÏP ÂIÃÖU KHIÃØN (SERVER CLASS) LÅÏP GIAO TIÃÚP (SVRCONNECTION CLASS) LÅÏP MÅÍ RÄÜNG (SERVEREXTEND CLASS) TÇM FLIE GIAO TIÃÚP CSDL LÅÏP TRÅÜ GIUÏP KÃÚT NÄÚI LÅÏP TRA CÆÏU TAÌI LIÃÛU LÅÏP HIÃØN THË KÃÚT QUAÍ LÅÏP KIÃØM TRA BAÛN ÂOÜC LÅÏP ÂÀNG KYÏ TÆÌ XA Hçnh 16: Täøng thãø chæång trçnh Chæång trçnh cuía maïy chuí thæ viãûn Låïp âiãöu khiãøn chung - Låïp Server Laì chæång trçnh âoïng vai troì âiãöu khiãøn hoaût âäüng cuía maïy chuí, cäng viãûc âáöu tiãn cuía chæång trçnh naìy laì nháûn caïc tham säú âãø thiãút láûp cáúu hçnh cho chæång trçnh maïy chuí nhæ cäøng æïng duûng, thæ muûc gäúc, thæ muûc chæång trçnh, thæ muûc dæî liãûu...Sau âoï, chæång trçnh khåíi taûo mäüt voìng làûp vä haûn âåüi kãút näúi tæì baûn âoüc. Nãúu coï kãút näúi, noï taûo ra mäüt socket (cäng cuû naìy âaím traïch vai troì truyãön thäng dæî liãûu giæîa mäüt maïy khaïch vaì mäüt maïy chuí qua maûng) vaì mäüt tiãøu trçnh âäöng thåìi âáøy mäüt âäúi tæåüng cuía låïp giao tiãúp vaì socket vaìo tiãøu trçnh væìa âæåüc taûo âoï. Læu âäö thuáût toaïn Måí file, naûp tham säú màûc âënh Start Tham sä khåíi taûo ban âáöu Cäøng æïng duûng Thæ muûc gäúc Thæ muûc Document Âaî nháûn âæåüc Goüi accept() nháûn kãút näúi Coï kãút näúi Khåíi âäüng âäúi tæåüng conn thuäüc låïp ServerConnection. Chuyãøn socket cho conn. Âàût conn vaìo tiãøu trçnh. Cho tiãøu trçnh chaûy.  S  S Hçnh 17: Læu âäö thuáût toaïn låïp âiãöu khiãøn (Server Class) Chæång trçnh Âæåüc thãø hiãûn trong låïp Server: public class Server{} våïi âoaûn maî chênh: try { svrsock = new ServerSocket (iPortRequest); } catch (Exception e) { } if (svrsock == null) return; try{ while (true){ sock = svrsock.accept (); conn = new SvrConnection (sock); thConn = new Thread (conn); thConn.start (); } } catch (Exception e) { } Âoaûn maî trãn seî taûo ra mäüt voìng làûp vä haûn goüi phæång thæïc accept () cuía âäúi tæåüng srvsock âãø nháûn yãu cáöu kãút näúi tæì chæång trçnh Client. Nãúu coï mäüt kãút näúi nháûn âæåüc, mäüt Socket âæåüc taûo ra, laì kãút quaí traí vãö cuía phæång thæïc accept(). Sau âoï, chæång trçnh taûo ra mäüt âäúi tæåüng conn cuía låïp SvrConnection (Låïp giao tiãúp) våïi tham säú khåíi taûo laì socket vuìa taûo ra. Socket naìy seî âoïng vai troì gåíi vaì nháûn dæî liãûu trong låïp giao tiãúp. Tiãúp âãún, âäúi tæåüng conn âæåüc âàût vaìo mäüt tiãøu trçnh thConn = new Thread (conn) vaì âæåüc cho chaûy thConn.start (). Låïp giao tiãúp - Låïp SrvConnection Låïp naìy laì cáöu näúi trung gian giæîa Låïp âiãöu khiãøn vaì Låïp Server måí räüng vaì âoïng vai troì chuí âaûo trong mäüt phiãn giao tiãúp træûc tiãúp våïi mäüt Client. Âiãøm âàûc biãût cuía låïp naìy laì âæåüc xáy dæûng âãø sàôn saìng chaûy trong mäüt tiãøu trçnh. Do váûy, khai baïo cuía låïp naìy nhæ sau: public class SvrConnection implements Runnable Låïp Server Låïp Giao tiãúp Låïp måí räüng (Tçm file) Låïp Giao tiãúp Låïp måí räüng (Giao tiãúp CSDL) Yãu cáöu kãút näúi Så âäö hoaût âäüng Hçnh 18: Hoaût âäüng cuía caïc låïp thuäüc chæång trçnh maïy chuí Start Gàõn luäúng I/O vaìo socket Thaình cäng Âoüc dæî liãûu tæì socket Coìn dæî liãûu Nháûn doìng vaìo Vaì xæí lyï Taûo âäúi tæåüng Svrext cuía låïp ServerExtend Tham säú chuyãøn conn Goüi phæång thæïc cuía SvrExt chuyãøn dæî liãûu cho baûn âoüc Thäng baïo läùi Vaì ngàõt kãút näúi Âoïng socket End S  S  Læu âäö thuáût toaïn Hçnh 19: Læu âäö thuáût toaïn låïp giao tiãúp (ServerConnection Class) Chæång trçnh minh hoüa public SvrConnection(Socket s) { sock = s; } public void run() { try { disIn = new DataInputStream(sock.getInputStream()); psOut = new PrintStream(sock.getOutputStream()); receiveRequest(); svrext = ServerExtend.fromConnection (this); svrext.get(this, getResParms ()); sock.close(); } catch (Exception e) {} } Vç låïp naìy seî coï nhiãûm vuû truyãön thäng dæî liãûu nãn âäúi muûc noï nháûn trong Constructor (haìm dæûng) laì mäüt socket liãn laûc våïi mäüt maïy khaïch do låïp âiãöu khiãøn chuyãøn sang. Âäöng thåìi noï cuîng gàõn mäüt luäöng nháûp vaì mäüt luäöng xuáút cho socket naìy: disIn = new DataInputStream(sock.getInputStream()); psOut = new PrintStream(sock.getOutputStream()); Tiãúp âãún laì chæång trçnh con nháûn yãu cáöu âæåüc gåíi âãún tæì baûn âoüc. Chæång trçnh con naìy coìn coï nhiãûm vuû phán têch cáu yãu cáöu âãø læu caïc thäng tin cáön thiãút cuía mäüt yãu cáöu nhæ loaûi taìi nguyãn, âæåìng dáùn, caïc tham säú vaìo caïc biãún phuûc vuû cho caïc taïc nghiãûp sau naìy. st = new StringTokenizer(s, " \n\r", false); try { htParms.put (METHOD, st.nextToken()); sResource = st.nextToken(); if ((sResource.length() > 1) && (sResource.endsWith("/"))){ sResource = sResource.substring(0, sResource.length() - 1); } htParms.put (PROTOCOL, st.nextToken()); htParms.put (RESOURCE, sResource); st = new StringTokenizer(sResource, "?", false); sResObject = st.nextToken(); htParms.put(RESOBJECT, sResObject); vResParms = new Vector(); while (st.hasMoreElements()) { vResParms.addElement(st.nextToken("&")); } as = new String[vResParms.size()]; vResParms.copyInto(as); htParms.put(RESPARMS, as); st = new StringTokenizer(sResObject, "/\\", true); sbResPath = new StringBuffer(); sToken = st.nextToken(); while (st.hasMoreElements()){ sbResPath.append (sToken); sToken = st.nextToken(); } htParms.put(RESPATH, sbResPath.toString()); htParms.put(RESNAME, sToken); } catch(Exception e){} } Âiãøm chuï yï cuäúi cuìng cuía låïp naìy laì noï seî naûp mäüt âäúi tæåüng cuû thãø cuía låïp Server måí räüng âãø âaïp æïng tæìng yãu cáöu cuû thãø cuía baûn âoüc: svrext = ServerExtend.fromConnection (this); Trong låïp naìy cuîng âënh nghéa hai phæång thæïc truyãön dæî liãûu âãø caïc âäúi tæåüng thuäüc låïp Server måí räüng sæí duûng âãø chuyãøn dæî liãûu cho chæång trçnh maïy khaïch. + Dæî liãûu thuäüc daûng vàn baín public void put(String s){ psOut.print(s); } + Dæî liãûu nhë phán public void put(byte[] ab, int iStartPosition, int iEndPosition){ psOut.write (ab, iStartPosition, iEndPosition); } Låïp Server måí räüng Låïp naìy âæåüc xáy dæûng khaï âàûc biãût. Noï mang mäüt caïch thæïc chung cho viãûc thæûc hiãûn mäüt yãu cáöu cuía Client. Do váûy noï âæåüc xáy dæûng täøng quaït laì mäüt låïp cå såí (låïp cha). Coìn xæí lyï mäüt yãu cáöu cuû thãø cuía baûn âoüc thç coï caïc låïp khaïc âæåüc dáùn xuáút (extend) tæì låïp naìy. Start Nháûn tãn taìi nguyãn tæì Âäúi tæåüng conn Laì chæång trçnh giao tiãúp CSDL Naûp chæång trçnh File Naûp chæång trçnh CSDL Chuyãøn âäúi tæåüng conn cho chæång trçnh End S  Læu âäö thuáût toaïn Hçnh 20: Læu âäö thuáût toaïn låïp Server måí räüng (SerrverExtend class) Chæång trçnh minh hoaû sResName = conn.getResName (); SvrExt = newServerExtend (sResName); if (SvrExt == null){ SvrExt = new FileSeek (); } SvrExt.conn = conn; return (SvrExt); Låïp SQL Låïp naìy âæåüc xáy dæûng laì låïp dáùn xuáút cuía låïp ServerExtend, coï nhiãûm vuû thæûc hiãûn caïc yãu cáöu truy váún dæî liãûu cuía baûn âoüc public class SQL extends ServerExtend Start Yãu cáöu Taûo khuän daûng dæî liãûu. Chuyãön dæî liãûu qua âäúi tæåüng conn. S  Nháûn tãn yãu cáöu vaì Tham säú query Tra cæïu Taìi liãûu måïi Âàng kyï Copy Truy váún CSDL End Læu âäö thuáût toaïn Hçnh 21: Læu âäö thuáût toaïn låïp giao tiãúp CSDL (SQL Class) Caïc cáu hoíi váún tin cuía baûn âoüc âãø yãu cáöu dæî liãûu tæì thæ viãûn Khi baûn âoüc gåíi yãu cáöu tçm kiãúm taìi liãûu cho thæ viãûn, chæång trçnh maïy khaïch seî tiãúp nháûn caïc tçnh huäúng trãn giao diãûn cuía baûn âoüc âãø taûo thaình caïc cáu lãûnh SQL, sau âoï chuyãøn caïc cáu SQL cho chæång trçnh thæ viãûn. Chæång trçnh thæ viãûn seî chuyãøn cáu lãûnh yãu cáöu cuía baûn âoüc cho Låïp SQL. Låïp naìy seî træûc tiãúp váún tin trãn CSDL cuía thæ viãûn vaì gåíi kãút quaí vãö cho baûn âoüc. Sau âáy laì caïc vê duû minh hoaû: Cáu lãûnh yãu cáöu tra cæïu taìi liãûu laì SAÏCH, thuäüc ngaình Tin hoüc, coï chuí âãö laì Java: SELECT TAILIEU.Ten_TL, THELOAI.Ten_Theloai, NGANH.Ten_nganh FROM (((TAILIEU INNER JOIN THUOCTHELOAI ON TAILIEU.Ma_TL = THUOCTHELOAI.Ma_TL) INNER JOIN THELOAI ON THUOCTHELOAI.Ma_Theloai = THELOAI.Ma_Theloai) INNER JOIN THUOCNGANH ON TAILIEU.Ma_TL = THUOCNGANH.Ma_TL) INNER JOIN NGANH ON THUOCNGANH.Ma_nganh = NGANH.Ma_nganh WHERE NGANH.Ten_nganh=’Tin hoüc’ AND THELOAI.Ten_Theloai=’SACH’ AND TAILIEU.Noidung LIKE ’%Java%’ Cáu lãûnh kiãøm tra taìi liãûu coìn hay hãút, kiãøm tra baûn âoüc coï vi phaûm qui âënh cuía thæ viãûn nhæ mæåün taìi liãûu láön træåïc chæa traí hay khäng: sql="SELECT * FROM DAMUON WHERE Ma_TL='"+edtmasotl.getText()+"'"; sql="SELECT * FROM DAMUON WHERE Maso_bandoc='"+edtsothe.getText()+"'"; Nãúu kãút quaí cuía caïc cáu lãûnh truy váún kiãøm tra trãn coï kãút quaí laì räùng nghéa laì taìi liãûu váùn coìn vaì baûn âoüc khäng vi phaûm qui âënh thç baûn âoüc coï thãø âàng kyï mæåün taìi liãûu bàóng cáu lãûnh gäöm coï caïc tham säú laì maî säú cuía baûn âoüc, maî säú cuía taìi liãûu vaì âãö nghë thæ viãûn chuyãøn giuïp taìi liãûu cho baûn qua âæåìng bæu âiãûn: INSERT INTO DAMUON ( Maso_Bandoc, Ma_TL, Quabuudien ) VALUES ('000003', 'L0002', 1;) INSERT INTO DAMUON ( Maso_Bandoc, Ma_TL, Quabuudien ) VALUES ('000012', 'H001', 1;) Sau khi tçm kiãúm taìi liãûu thç kãút quaí laì mäüt danh saïch taìi liãûu. Nãúu taìi liãûu maì baûn âoüc cáön thuäüc thãø loaûi laì taìi liãûu âiãûn tæí thç baûn âoüc coï thãø choün mäüt taìi liãûu trong danh saïch âoï vaì yãu cáöu cho xem/âoüc hoàûc copy. Nhæng træåïc hãút chæång trçnh seî càn cæï tçnh huäúng cuía baûn âãø gåíi mäüt yãu cáöu truy váún cho chæång trçnh maïy chuí. Kãút quaí truy váún laì mäüt tãn file. File naìy seî âæåüc låïp tçm file (FileSeek) chuyãøn vãö cho maïy khaïch. Trçnh duyãût trãn maïy khaïch seî hiãøn thë näüi dung file naìy. Cáu lãûnh sau yãu cáöu láúy tãn file cuía taìi liãûu âiãûn tæí: SELECT Tenfile FROM THUOCTHELOAI WHERE Ma_TL=’L00989’ SELECT Tenfile FROM THUOCTHELOAI WHERE Ma_TL=’H01011’’ Låïp FileSeek Låïp naìy cuîng laì låïp dáùn xuáút cuía låïp ServerExtend, coï nhiãûm vuû thæûc hiãûn caïc yãu cáöu vãö file cho baûn âoüc: public class FileSeek extends ServerExtend. Thäng baïo cho baûn âoüc Start File tçm tháúy Gàõn luäöng I/O vaìo file Âoüc file vaìo bäü âãûm. Goüi phæång thæïc cuía âäúi tæåüng conn chuyãøn dæî liãûu cho baûn âoüc. End S  Nháûn tãn file tæì Âäúi tæåüng conn Læu âäö thuáût toaïn Hçnh 22: Læu âäö thuáût toaïn låïp tçm vaì chuyãøn file (Fileseek Class) Maî chæång trçnh minh hoaû try{ conn.putMime (200, sContentType); while ((iBytesRead = fisIn.read (abBuffer)) >= 0){ conn.put (abBuffer, 0, iBytesRead); } fisIn.close (); } catch (Exception eReadWrite){ conn.put ("Khäng âoüc âæåüc file " + sFileName); return; } Chæång trçnh Client Læu âäö thuáût toaïn cuía chæång trçnh baûn âoüc Start Âàng nháûp vaìo mäüt thæ viãûn Thæ viãûn xaïc nháûn Nháûn thäng tin tçm kiãúm. Âënh daûng dæî liãûu vaì Chuyãøn cho thæ viãûn. Coï taìi liãûu Hiãøn thë tråü giuïp liãn laûc våïi thæ viãûn khaïc. Nháûn tãn thæ viãûn vaì tiãún haình kãút näúi. S  S  Âäöng yï End Chuyãøn sang chæång trçnh Kãút quaí  S Hçnh 23: Læu âäö thuáût toaïn chæång trçnh baûn âoüc Start Taìi liãûu vàn baín Nháûn traí låìi tæì thæ viãûn. Hiãøn thë lãn maìn hçnh. S  Xæí lyï kãút quaí traí låìi tæì thæ viãûn vaì hiãøn thë. Âoüc/Xem Xem chi tiãút Âàng kyï Copy Chuyãøn dæî liãûu cho thæ viãûn End Nháûn yãu cáöu måïi cuía baûn âoüc Taìi liãûu âiãûn tæí Nháûn caïc tham säú yãu cáöu  Yãu cáöu khaïc  Yãu cáöu khaïc  S S S S Hçnh 24: Læu âäö hoaût âäüng cuía chæång trçnh Kãút quaí Chæång trçnh minh hoaû Âoaûn maî minh hoaû viãûc gåíi vaì nháûn dæî liãûu qua âëa chè URL public String urlRequest (URL urlhost,String sResource, String sParm){ URL url; InputStream isIn; byte[] ab = new byte[2048]; StringBuffer sb; int iNumBytes; sb = new StringBuffer (); try{ url = new URL (urlhost,"SQL?"+ sResource + sParm); isIn = url.openStream (); while ((iNumBytes = isIn.read (ab, 0, 2048)) >= 0) { sb.append (new String (ab, 0, 0, iNumBytes)); } } catch (Exception e){ System.out.println ("Exception receiving the data: " + e);} return sb.toString (); } Sau âáy laì mäüt âoaûn maî thãø hiãûn viãûc xæí lyï dæî liãûu âãø hiãøn thë trãn mäüt âäúi tæåüng giao diãûn âäö hoaû laì Listbox (häüp thoaûi danh saïch). public void updateList (List lst, String sRes){ StringTokenizer st; String sItem; lst.clear(); st = new StringTokenizer (sRes, "^", false); while (st.hasMoreElements ()) { sItem = st.nextToken (); lst.addItem (sItem); } lst.select (0); lst.makeVisible (0); tenTlieu.setText (lst.getSelectedItem ()); edtketqua.setText (""); } Låïp tråü giuïp kãút näúi Nãúu baûn âoüc tháút baûi trong cäng viãûc tçm kiãúm taìi liãûu taûi mäüt thæ viãûn, låïp naìy seî âæåüc goüi âãø cung cáúp âëa chè caïc thæ viãûn khaïc trãn maûng cho baûn âoüc. Baûn âoüc chè cáön choün mäüt âëa chè, chæång trçnh seî giuïp baûn âoüc kãút näúi âãún thæ viãûn âæåüc chè âënh. Hçnh 25: Låïp tråü giuïp kãút näúi Låïp kiãøm tra baûn âoüc Baûn âoüc khi laìm viãûc våïi mäüt thæ viãûn thç phaíi coï sæû âàng kyï træåïc våïi thæ viãûn âãø thæ viãûn quaín lyï baûn âoüc. Låïp naìy seî kiãøm tra sæû âàng kyï cuía baûn âoüc våïi thæ viãûn. Nãúu coï âàng kyï thç baûn âoüc måïi coï quyãön sæí duûng thæ viãûn nhæ tçm kiãúm, âàng kyï mæåün, âoüc, xem qua maûng... Hçnh26: Låïp kiãøm tra baûn âoüc Låïp Tra cæïu taìi liãûu Cung cáúp cho baûn âoüc mäüt chæïc nàng tra cæïu taìi liãûu tuyì choün vaì chênh xaïc dæûa trãn ngän ngæ truy váún dæî liãûu SQL. Baûn âoüc coï thãø læûa choün caïc thäng tin cáön thiãút âæåüc giao diãûn cung cáúp âãø tçm kiãúm. Caïc thäng tin cáön thiãút cho tçm kiãúm caìng nhiãöu thç kãút quaí caìng chênh xaïc. Ngoaìi ra, baûn âoüc coìn coï thãø tra cæïu nhanh caïc thäng tin khoa hoüc måïi cuîng nhæ caïc taìi liãûu måïi theo mäüt chuí âãö naìo âoï. Hçnh 27: Låïp tra cæïu taìi liãûu Låïp hiãøn thë kãút quaí tra cæïu Sau khi coï kãút quaí tra cæïu taìi liãûu, chæång trçnh seî hiãøn thë kãút quaí lãn giao diãûn maìn hçnh mäüt caïch håüp lyï âãø baûn âoüc coï thãø thao taïc våïi danh saïch taìi liãûu kãút quaí âoï nhæ âoüc, xem, copy, âàng kyï. Tuyì tæìng thãø loaûi taìi liãûu maì seî cung cáúp cho baûn âoüc caïc chæïc nàng tæång taïc khaïc nhau. Vê duû våïi taìi liãûu âiãûn tæí thç coï thãø âoüc hay copy, våïi taìi liãûu laì saïch thç chè coï âàng kyï mæåün tæì xa. Hçnh 28: Kãút quaí tra cæïu taìi liãûu Hçnh 29: Kãút quaí tçm kiãúm taìi liãûu måïi Hçnh 30: Copy taìi liãûu vãö maïy cuûc bäü Låïp Âàng kyï tæì xa Våïi thãø loaûi taìi liãûu thuäüc daûng vàn baín nhæ saïch, baïo, taûp chê, luáûn aïn... thç baûn âoüc coï thãø laìm thuí tuûc âàng kyï tæì xa. Chæång trçnh seî kiãøm tra caïc thuí tuûc cáön thiãút nhæ taìi liãûu coìn hay hãút, baûn âoüc âaî traí taìi liãûu mæåün láön træåïc chæa âãø tiãún haình cho mæåün. Ngoaìi ra, baûn âoüc coï thãø yãu cáöu thæ viãûn gåíi taìi liãûu qua âæåìng bæu âiãûn. Hçnh 31: Âàng kyï tæì xa vaì caïc kãút quaí CHÆÅNG IV KÃÚT LUÁÛN Nhæîng kãút quaí âaût âæåüc Âäö aïn täút nghiãûp “Xáy dæûng hãû thäúng phuûc vuû baûn âoüc qua maûng” laì mäüt tiãúp cáûn cuía tin hoüc cho thæ viãûn trong hoaìn caính måïi. Trong khuän khäø giåïi haûn, âäö aïn täút nghiãûp naìy âaî trçnh baìy mä hçnh täøng quan vaì caïch thæïc giaíi quyãút cuû thãø âãø xáy dæûng mäüt æïng duûng CSDL trãn maûng, måí räüng dëch vuû trãn maûng Internet/Intranet cho caïc hoaût âäüng sæí duûng thæ viãûn tæì xa. Näüi dung âäö aïn âaî táûp trung thaío luáûn vaì triãøn khai xáy dæûng æïng duûng theo nhæîng hæåïng chênh sau âáy: Khaïi quaït mä hçnh hoaût âäüng täøng thãø cuía hãû thäúng æïng duûng trãn maûng, âoï laì mäúi quan hãû giæîa TTTTTL vaì caïc thæ viãûn cuía caïc træåìng thaình viãn trong ÂHÂN; mäúi giao tiãúp cuía baûn âoüc våïi thæ viãûn qua maûng maïy tênh. Læûa choün giaíi phaïp khaí thi laì mä hçnh CSDL Client/Server vaì tiãún haình phán têch, xáy dæûng thuáût toaïn cho mä hçnh baìi toaïn trãn cå såí giaíi phaïp âaî læûa choün. Triãøn khai xáy dæûng æïng duûng têch håüp trãn mäi træåìng WWW vaì xáy dæûng caïc giaíi thuáût cuû thãø âãø hiãûn thæûc chæång trçnh. Nhæîng kãút quaí âaût âæåüc cuía âãö taìi thãø hiãûn roî åí caïc màût sau âáy: Vãö lyï thuyãút: Váûn duûng âæåüc lyï thuyãút Cäng nghãû pháön mãöm våïi quan âiãøm tiãúp cáûn tæì trãn xuäúng (top-down) âãø phán têch vaì xáy dæûng âæåüc mäüt saín pháøm pháön mãöm duìng trãn maûng. Âoï laì sæû tuán thuí tæìng bæåïc trong quaï trçnh phán têch thiãút kãú tæì viãûc xem xeït, tçm hiãøu mä hçnh toaìn cuûc cuía baìi toaïn, thuáût toaïn mæïc yï niãûm âãún sæû phán têch tæìng bæåïc caïc thaình pháön cå baín trong æïng duûng vaì cuäúi cuìng laì xáy dæûng thuáût toaïn chi tiãút. Vãö thæûc nghiãûm: Âäö aïn âaî tçm hiãøu ngän ngæî láûp trçnh Java, khai thaïc vaì sæí duûng caïc cäng cuû láûp trçnh trãn maûng cuía Java nhæ socket, URL, Input/Output kãút håüp våïi giao thæïc HTTP âãø láûp trçnh truyãön thäng trãn maûng maïy tênh theo chuáøn Internet. Ngoaìi ra, âäö aïn coìn æïng duûng mäüt kyî thuáût âàûc træng cuía ngän ngæî cho láûp trçnh giao tiãúp våïi CSDL laì JDBC gàõn våïi chuáøn ODBC cuía Microsoft. Vãö chæång trçnh: Pháön chênh cuía chæång trçnh táûp trung vaìo cäng viãûc phuûc vuû baûn âoüc sæí duûng thæ viãûn tæì xa, bao gäöm: Cung cáúp cho baûn âoüc mäüt phæång thæïc tra cæïu, tçm kiãúm taìi liãûu håüp lyï vaì thuáûn tiãûn. Caïch thæïc tra cæïu laì tuyì choün våïi nhiãöu chè tiãu tçm kiãúm taìi liãûu linh hoaût khaïc nhau, aïp duûng âæåüc cho táút caí CSDL cuía caïc thæ viãûn. Häù tråü cho baûn âoüc âoüc âàng kyï mæåün taìi liãûu tæì xa. Cung cáúp caïc dëch vuû âãø baûn âoüc coï thãø sæí duûng âæåüc caïc tênh nàng måïi cuía mäüt thæ viãûn âiãûn tæí nhæ copy; âoüc, xem caïc taìi liãûu laì vàn baín, hçnh aính, ám thanh... Âaïnh giaï vaì nháûn xeït Æu âiãøm Trong phaûm vi thæûc hiãûn, âãø taìi coï caïc æu âiãøm sau: Giaíi quyãút âæåüc váún âãö baìi toaïn âàût ra laì xáy dæûng âæåüc mäüt æïng duûng phuûc vuû baûn âoüc trong viãûc sæí duûng thæ viãûn vaì chæång trçnh âæåüc sæí duûng trãn maûng. Kêch thæåïc chæång trçnh nhoí goün. Giao diãûn chæång trçnh bàòng âäö hoaû, sinh âäüng, thuáûn tiãûn cho viãûc sæí duûng cuía baûn âoüc vç âæåüc kãút håüp våïi mäüt chæång trçnh duyãût Web. Chæång trçnh sæí duûng âæåüc tiãúng Viãût. Chæång trçnh nguäön âæåüc viãút bàòng ngän ngæî Java vaì âæåüc têch håüp trãn mäi træåìng trçnh duyãût nãn baûn âoüc khäng cáön caìi âàût chæång trçnh træåïc khi sæí duûng, âäöng thåìi khaí chuyãøn trãn nhiãöu mäi træåìng hãû âiãöu haình: maïy tênh cuía baûn âoüc duìng Windows, Unix... âãöu coï thãø sæí duûng âæåüc chæång trçnh. Chæång trçnh âæåüc thiãút kãú theo quan âiãøm hæåïng âäúi tæåüng nãn âaî cung cáúp sàôn caïc låïp thæ viãûn âãø phaït triãøn vaì måí räüng æïng duûng sau naìy. Haûn chãú Tuy nhiãn, âãö taìi váùn coìn mäüt säú haûn chãú nhæ sau: Màûc duì chæång trçnh coï thãø triãøn khai thæûc thi trãn maûng vaì giaíi quyãút âæåüc caïc yãu cáöu baìi toaïn. Song mä hçnh triãøn khai cho baìi toaïn váùn chæa phaíi laì mä hçnh täúi æu nháút. Baûn âoüc coï thãø gàûp ràõc räúi khi kãút näúi sang mäüt thæ viãûn khaïc nãúu baûn khäng truy cáûp vaìo maûng tæì træåïc. Dëch vuû cung cáúp cho baûn âoüc khi sæí duûng thæ viãûn coìn haûn chãú vç måïi dæìng laûi åí cäng viãûc häù tråü cho tçm kiãúm vaì tra cæïu taìi liãûu. Java laì ngän ngæî væìa biãn dëch væìa thäng dëch nãn cáön phaíi thiãút láûp caïc cáúu hçnh thäng dëch trãn Server âãø chaûy chæång trçnh Server. Ngoaìi ra, thåìi gian khåíi taûo chæång trçnh trãn maïy tênh cuía baûn âoüc coï thãø bë cháûm, tuyì theo cáúu hçnh maïy. Phaûm vi æïng duûng cuía âãö taìi Chæång trinh âaî âæåüc âoïng goïi vaì thæí nghiãûm thaình cäng taûi maûng maïy tênh Windows NT cuía khoa CNTT ÂH Kyî Thuáût. Do váûy, træåïc hãút, chæång trçnh coï thãø sæí duûng âãø phuûc vuû cho sinh viãn khoa CNTT trong viãûc sæí duûng tçm kiãúm taìi liãûu vaì tham khaío caïc âäö aïn cuía caïc khoaï âi træåïc taûi thæ viãûn cuía khoa. Ngoaìi ra, chæång trçnh coìn coï thãø sæí duûng cho caïc thæ viãûn âãø phuûc vuû baûn âoüc våïi âiãöu kiãûn thæ viãûn phaíi coï maûng maïy tênh. Hån næîa, chæång trçnh Server âæåüc viãút khäng nhæîng chè phuûc vuû âaïp æïng yãu cáöu cuía baûn âoüc maì coìn âæåüc xáy dæûng theo mä hçnh cuía Server Web nãn coï thãø sæí duûng chæång trinh naìy nhæ laì mäüt WebServer âån giaín phuûc vuû cho nhu cáöu tham khaío caïc âäö aïn Web cuía khoa CNTT cuía sinh viãn. Trong tæång lai, khi maûng cuía ÂHÂN âæåüc xáy dæûng näúi kãút caïc træåìng vaì caïc thæ viãûn cuîng nhæ TTTTL, chæång trçnh cáön âæåüc thæí nghiãûm tiãúp tuûc trãn maûng naìy âãø coï kãút quaí thæûc tãú hån. Hæåïng phaït triãøn, måí räüng Ngoaìi hæåïng tiãúp tuûc thæí nghiãûm âãø bäø sung hoaìn thaình, chæång trçnh cáön khàõc phuûc nhæîng haûn chãú nhæ âaî nãu trãn bàòng caïch: Måí räüng caïc dëch vuû phuûc vuû baûn âoüc nhæ hoaìn chènh caïc chè tiãu tra cæïu taìi liãûu vaì bäø sung caïc chè tiãu tçm kiãúm måïi taûi mäüt thæ viãûn nhæ: tçm kiãúm dæûa vaìo chè muûc cuía taìi liãûu, tçm kiãúm theo tæì khoaï, tçm kiãúm gáön âuïng theo luáût tæì âiãøn kãút håüp tæì khoaï... Tiãúp tuûc náng cao cháút læåüng phuûc vuû baûn âoüc qua maûng bàòng viãûc xáy dæûng thãm caïc chæång trçnh nhæ âàng kyï mæåün traí taìi liãûu tæì xa, chæång trçnh häüi thoaûi cho pheïp baûn âoüc trao âäøi thäng tin våïi nhau vaì trao âäøi thäng tin våïi thæ viãûn, chæång trçnh hoíi âaïp trãn maûng qua thæ âiãûn tæí cho pheïp baûn âoüc gåíi caïc yãu cáöu cáön thiãút âãún thæ viãûn vaì nháûn traí låìi ngay trong chæång trçnh... Xáy dæûng caïc cäng cuû cho pheïp hiãøn thë træûc tiãúp video, hçnh aính, ám thanh maì khäng phaíi dæûa vaìo trçnh duyãût. Tiãúp tuûc bäø sung caïc cäng cuû tråü giuïp thäng baïo läùi cho chæång trçnh âæåüc hoaìn thiãûn. Hån næîa, coï thãø cung cáúp caïc chæïc nàng tæì xa cho ngæåìi quaín thæ nhæ xaïc nháûn sæû âàng kyï sæí duûng cuía baûn âoüc, cáûp nháût taìi liãûu giaïm saït hoaût âäüng mæåün, traí taìi liãûu cuía baûn âoüc...

Các file đính kèm theo tài liệu này:

  • docTMdoantn.doc
  • docBIA.doc
  • doccamdoan.doc
  • doccamon.doc
  • rarCHUONGTRINH.rar
  • docgthiu.doc
  • docphuû luc.doc