Đồ án Xây dựng Web site khối phổ thông chuyên Toán-Tin trường đại học Sư phạm Hà nội

Mô hình hai mức là một sự phát triển từ ứng dụng chia sẻ file ở trên. Trong ứng dụng chia sẻ file, ta thay thế file Server bằng một hệ thống quản trị CSDL (DBMS). Khi client cần thông tin từ CSDL, nó sẽ yêu cầu DBMS thông qua mạng máy tính giữa các phòng ban; DBMS xử lý yêu cầu và sau đó trả về cho Client những thông tin client yêu cầu. Ưu điểm của mô hình hai mức so với ứng dụng chia sẻ file là làm giảm bớt được lưu thông trên mạng. ở ứng dụng chia sẻ file, đơn vị truyền nhận giữa Client và Server là một file, do đó, khi client yêu cầu thông tin từ Server thì Server sẽ trả cho Client toàn bộ một file có chứa thông tin đó. Trong khi ở mô hình hai mức thì Server có thể trả cho Client đúng những gì mà Client yêu cầu với đơn vị truyền nhận có thể tính bằng byte. Ngoài ra, hiện nay các DBMS còn cung cấp nhiều khả năng khác như hỗ trợ giao dịch, cho phép nhiều người dùng cùng thao tác trên CSDL cùng lúc mà vẫn đảm bảo được tính toàn vẹn của dữ liệu.

doc105 trang | Chia sẻ: oanh_nt | Lượt xem: 1261 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Đồ án Xây dựng Web site khối phổ thông chuyên Toán-Tin trường đại học Sư phạm Hà nội, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ient (fat Client-thin Server): ở loại này, phía Client phải đảm nhận cả hai lớp là giao diện và chức năng còn Server chỉ làm nhiệm vụ của lớp CSDL. Database Server DBMS Data access logic -presentation logic -business logic Ưu điểm của mô hình loại này là đơn giản, thích hợp cho các ứng dụng nhỏ và vừa. Tuy nhiên, nó cũng có một số nhược điểm sau: Do phần tính toán nghiêng về phía Client nhiều nên đòi hỏi Client phải có cấu hình đủ mạnh. Cũng do phần lõi (chức năng) của chương trình nằm ở phía Client nên khi chương trình cần nâng cấp thì sẽ rất khó khăn vì phải cập nhật lại chương trình nằm ở toàn bộ các Client. Do mọi thao tác trên CSDL đều thông qua mạng giữa Client và Server nên tốc độ của chương trình sẽ chậm đi. Tính toán tập trung ở Server (fat Server-thin Client): ở loại này, Client chỉ đảm nhiệm phần giao diện còn Server thực hiện chức năng của lớp chức năng và lớp CSDL. Ngược lại, với loại fat Client-thin Server thì loại này có ưu điểm là giảm sự lưu thông trên mạng và tốc độ nhanh hơn do lớp chức năng của chương trình nằm ở Server cùng với CSDL, do đó mọi thao tác với CSDL của chương trình đều được thực hiện ngay trên Server và thông tin lưu thông trên mạng chỉ là những kết quả được trả về cho người dùng sau khi được tính toán. Mặt khác, do phần lõi của chương trình được đặt tập trung tại Server nên việc cập nhật chương trình sẽ dễ dàng hơn. Tuy nhiên, do công việc được tập trung quá nhiều tại Server nên đòi hỏi cấu hình Server phải đủ mạnh, đặc biệt là khi có nhiều Client cùng truy xuất tới Server cùng lúc. Database Server DBMS Data access logic Data access logic -presentation logic 2.2.2.2. Mô hình ba mức(3-tier) Client/Server Database Server DBMS Data access logic Application Server -business logic -presentation logic Trong mô hình 3 mức, lớp chức năng của chương trình được tách ra thành một mức tạo thành một mức riêng biệt. Việc tách lớp này làm cho các phần của chương trình độc lập hơn, đáng tin cậy hơn, chương trình trở nên linh động hơn trong việc thay thế, nâng cấp và do đó, mô hình này rất thích hợp với ứng dụng có yêu cầu thay đổi thường xuyên như ứng dụng Web. Để thấy được tính linh hoạt của mô hình ba mức, ta lấy một ứng dụng có cấu trúc theo mô hình ba mức, có mức giữa chức năng là các thành phần COM giao tiếp với mức giao diện thông qua các nhập xuất chuẩn (standard I/O) và với mức CSDL bằng các câu lệnh SQL thông qua ODBC hoặc ADO. Khi đó, mức CSDL của ứng dụng có thể là bất cứ DBMS nào mà ODBC hoặc ADO hỗ trợ như Access, SQL Server, .. và ứng dụng có thể là một ứng dụng stand-alone chạy trên một máy hoặc trở thành một ứng dụng Web chạy trên nhiều máy khác nhau bằng cách nhúng thành phần COM này vào phần giao diện là một cửa sổ ứng dụng hoặc một trang Web. Chương 3: Công nghệ ASP 3.1 Lựa chọn công nghệ cho đề tài Xây dựng Web site khối PTCTT đồng nghĩa với việc xây dựng một Web Server trên máy chủ chứa dữ liệu, các trang Web và các chương trình phục vụ cho việc quản lý các thông tin như: thông tin về giáo viên, học sinh, ... Web Server này phải có khả năng tương tác với Client, xử lý dữ liệu do Client gửi đến, trả về kết quả động tuỳ thuộc vào nội dung dữ liệu mà Client yêu cầu, ... Tức là chúng ta phải xây dựng các trang Web động. Nếu không xây dựng những trang Web động thì người thiết kế phải thiết kế lại những trang Web đó mỗi khi có yêu cầu cập nhật. Việc xây dựng các trang Web động có thể sử dụng các công nghệ như: CGI, Perl, ISAPI, ASP, JSP,Servlet ... CGI ( Cômmon Gateway Interface) CGI là một phương thức giao tiếp giữa Web Server và chương trình ứng dụng. Một chương trình CGI thực chất là một chương trình .exe (trên Windows) hoặc một chương trình thực thi (trên Unix). Nó có thể được xây dựng từ nhiều ngôn ngữ như C, Pascal, Visual Basic, .. Thuận lợi của ứng dụng CGI là tính phổ biến và dễ viết (vì các ngôn ngữ như C, Pascal, Visual Basic ... là rất thông dụng). CGI cũng tỏ ra rất hiệu quả trong các ứng dụng truy xuất Web trên Internet. Ngày nay CGI hiện vẫn còn được sử dụng rộng rãi trên các trình Web Server chạy trên máy chủ Unix và Linux. Tuy nhiên, nó có nhược điểm là tiêu tốn tài nguyên và hạn chế về tốc độ thực thi. Mỗi khi có yêu cầu gửi từ Client, Web Server phải triệu gọi CGI theo các bước: - Nạp chương trình vào bộ nhớ. - Thực thi chương trình. - Trả kết quả về cho Client. - Giải phóng CGI khỏi bộ nhớ Việc lưu vết trạng thái trong mỗi kết nối giữa Client và Server của ứng dụng .Web CGI cũng rất khó quản lý. Perl (Practical Extraction and Report Language): Perl là một ngôn ngữ lập trình dùng cho CGI, do Larry Wall tạo ra, được dùng khá rộng rãi trên Unix và Linux. Perl khác biệt với các ngôn ngữ khác là có tính chất xử lý text rất mạnh do có nhiều toán cũng như hàm để hỗ trợ riêng cho xử lý text. Nó có thể xử lý dễ dàng những tác vụ giống như C hoặc Unix shell thường làm trong việc viết một Script nhưng có thể ngắn gọn và đơn giản hơn. Không giống như các trình biên dịch C hay C++, Perl là một trình thông dịch. Vì là một ngôn ngữ lập trình cho nên Perl cũng có đầy đủ các công cụ hỗ trợ cho nó như tất cả các ngôn ngữ lập trình khác như: biến, dãy, danh sách, ... Perl đã mở rộng các chức năng của trình CGI phục vụ cho Web Server. Mở đầu cho thời kỳ viết ứng dụng biên dịch kịch bản (scipting) phục vụ cho phía máy chủ (Server side) như ASP, JSP, ... IASP , Servlet, ASP, JSP: Như ta đã biết, nhược điểm chính của chương trình CGI là vấn đề tốc độ. Mỗi lần thực thi chương trình CGI, Web Server phải nạp và giải phóng chương trình CGI ra khỏi bộ nhớ. Công nghệ Web đã đưa ra rất nhiều giải pháp khắc phục yếu điểm này. Windows cung cấp cho ta cách thức xây dựng các chương trình CGI ở dạng thư viện liên kết động DLL. ứng dụng CGI kiểu mới này còn gọi là các ứng dụng ISAPI. Chương trình ISAPI chỉ phải nạp một lần vào bộ nhớ khi lần đầu tiên Web Server gọi nó. Do không phải nạp nhiều lần nên tốc độ thực thi được cải thiện đáng kể. Hơn nữa, các chương trình ISAPI phục vụ Web Server hiệu quả và ít tốn tài nguyên hơn các chương trình ISAPI thông thường. Để viết ISAPI ta có thể sử dụng bất kỳ công cụ nào trên Windows hỗ trợ việc biên dịch thư viện liên kết động DLL như Visual Basic, Delphi, ... Về phía Java, câu trả lời tương tự cho ISAPI của Windows đó là Servlet. Servlet là các chương trình java chỉ cần nạp một lần vào máy ảo. Chức năng của nó cũng tương tự như các chương trình CGI hay ISAPI. Đối với ngôn ngữ kịch bản, Microsoft đưa ra phương án thiết kế các trang ASP, đó là sự kết hợp giữa các thẻ định dạng HTML và ngôn ngữ Vbscipt. Còn java đưa ra phương án thiết kế các trang JSP là sự kết hợp giữa HTML và ngôn ngữ java. ASP và JSP cần một bộ diễn dịch (ASP, JSP engine) để thông dịch chúng. Xét về phương diện “sức mạnh” thì Servlet, ISAPI, ASP hay JSP có thể coi là ngang nhau. Tuy nhiên, trong đề tài này em chọn ASP làm công cụ phát triển bởi nó được hỗ trợ thiết kế mạnh mẽ của Visual InterDev và FrontPage. Sau đây, em xin giới thiệu về ASP và một kỹ thuật lập trình liên quan – lập trình COM. 3.2. ASP – ACTIVE SERVER PAGES 3.2.1. Những khái niệm mở đầu về ASP. ASP là gì? ASP (Microsort đ Active Server Page) là một môi trường Server-side scripting cho phép ta tạo ra và chạy các ứng dụng Wed động, tương tác với Client một cách hiệu quả. ASP hoạt động dựa vào các script do người lập trình tạo sẵn. Môi trường hoạt động của ASP: Microsoft Internet Internet Server 3.0 trở lên chạy trên WinNT Server trở lên. Microsoft Personal Web Server chạy trên Window 9x. Cấu trúc của một trang ASP. Trang ASP đơn giản là một trang văn bản với phần mở rộng là .asp, gồm có 3 thành phần: Văn bản (Text) HTML tag (HTML: Hypertext Markup Langue) Các đoạn script ASP. Khi thêm một đoạn script vào HTML, ASP dùng dấu phân cách để phân biệt giữa đoạn HTML và đoạn ASP. < % mã ASP %> Có thể xem trang ASP như một trang HTML có bổ sung các ASP Script Command. Ví dụ: Bạn bắt đầu với trang ASP này ngày: Client side scripting. Một Client side scripting được thêm vào trang html sử dụng cặp tag . Để định nghĩa ngôn ngữ script, ta sử dụng thuộc tính language chèn vào tag . Ví dụ: ASP dùng Client side scripting để có thể tương tác với các đối tượng nguyên tố (các tag, hình ảnh, văn bản ...), với các đối tượng brower (window, frame, history ...) và bất kỳ thành phần ActiveX nào bên trong máy chủ Microsoft. Server side scripting: ASP dùng Server side scripting để tạo tự động tạo các trang Web trả về cho Client, những nội dung được phát sinh dựa trên những định nghĩa của User như các tham số, các HTTP request và bất kỳ tương tác nào với các đối tượng khác (đối tượng ASP, các đối tượng business Client/Server đa lớp, middleware truy cập DBS và các hệ thống kế thừa, các thành phần BackOffice ..). ASP cung cấp các đối tượng có sẵn và các component có ích (Active Server components và DB Access component). Các đối tượng có sẵn đơn giản hoá những nhiệm vụ của Server side như việc xử lý các HTTP request và respone, phiên làm việc của User và môi trường web. Server side scripting cũng sử dụng cặp tag hoặc . Khác với Client side script, Server side sử dụng thêm thuộc tính runat=”Server”. Mặc định của Server side scripting là Vbscript. Active Server Components. Như đã biết, ta có thể tạo các trang Web động bằng cách sử dụng Server side script, và nó hầu như không giới hạn đối với những gì ta muốn thực hiện. Tiến trình này giống như việc viết một chương trình ứng dụng hơn là tạo một trang HTML. Tuy nhiên, Vbscript hay javascript cũng có những mặt hạn chế chẳng hạn như nó không thể truy cập trực tiếp vào file hoặc các chương trình ứng dụng khác. Và do đó sẽ gặp khó khăn khi viết các ứng dụng thương mại phức tạp. Cách hay nhất để khắc phục những hạn chế của ngôn ngữ Script là tích hợp các thành phần phần mềm (software components) viết bằng ngôn ngữ bậc cao với ASP sử dụng chuẩn COM . Các thành phần phần mềm ứng dụng theo cách này thường được gọi là Active Server Components. ASP cung cấp sẵn một số Active Server Component là: Adrotator Browser Capabilities Database Access Content Linking File Access Cách hoạt động của ASP. Browser gởi một request đến Web Server yêu cầu một trang ASP. Khi Web Server nhận được Request, nó sẽ đọc toàn bộ tập tin ASP và thực hiện các script trong trang ASP tương ứng với giá trị của các giá trị của các tham số nhận từ Request. Sau khi thực hiện xong nó sẽ trả kết quả về cho Browser dưới dạng file HTML. Interprest ASP code Hello Gets ASP page Hello Web Server Client HTTP Request Browser creates the web page Server Respone 3.2.2 Mô hình các đối tượng trong ASP Client Server Server Object Application Object Session Object Response Object Request Object ObjectContext Object Nhằm đem lại sự tiện lợi và dễ dàng trong việc xây dựng một ứng dụng trên Web, ASP đã xây dựng sẵn 6 đối tượng rất mạnh. Các đối tượng này không quan hệ với nhau theo mô hình phân cấp, cha-con, chúng liên hệ với nhau dựa trên vai trò và tính năng mà chúng cung cấp. Các đối tượng này bao gồm Server, Application. Session, Request, Response và ObjectContext xây dựng nên môi trường cho các ứng dụng Active Server. Application Object ---------- ----------- Session Client Session Client Session Client Trong mô hình trên, đối tượng Application được dùng để chia sẻ thông tin giữa các User trong cùng một ứng dụng. Mỗi Application bao gồm nhiều phiên làm việc của user khác nhau mà đại diện cho mỗi phiên làm việc là một đối tượng Session. Chúng ta dùng đối tượng Session này để lưu trữ những thông tin riêng chỉ dành cho user đó mà thôi. Các biến trong đối tượng Session vẫn tồn tại khi user nhảy qua lại giữa các trang web trong ứng dụng đó. Ngoài ra ASP còn cung cấp đối tượng Request cho phép nắm bắt các thông tin được yêu cầu từ user và cho phép các ứng dụng chạy trên Server xử lý chúng. Server sẽ nhận những giá trị được đưa đến qua yêu cầu HTTP và đặt chúng trong đối tượng Request này. Ngược lại, để gửi dữ liệu lại cho trình duyệt trên máy Client ta có đối tượng Response. Các hàm và thuộc tính của nó cho phép ta tạo và sửa đổi thông tin phản hồi về cho Client. Đối tượng ObjectContext được xây dựng nhằm quản lý các giao dịch dựa trên lệnh gọi ASP script đến Microsoft Transaction Server (MTS). Đối tượng Request. Đối tượng Request cung cấp đầy đủ những thông tin được chuyển đến cùng với các yêu cầu HTTP. Những thông tin này gồm có các tham số của Form khi được submit dùng phương thức POST hoặc GET hay các tham số được ghi cùng với trang ASP trong lời gọi đến trang đó. Dùng đối tượng Request có thể chia sẻ thông tin qua lại giữa các trang ASP trong một ứng dụng và để lấy giá trị các cookie lưu trữ trên máy Client. Nó bao gồm tập các biến và thuộc tính như trên hình vẽ sau: Request Object Collections Query string Forms Server Variable Cookies ClientCertificate Properties TotalByte Methods BinaryRead Tập hợp Mô tả Kiểu ClientCertificate Cookies Forms Query string Server Variable Các giá trị chứng nhận từ Client Giá trị trong Cookie được gửi từ trình duyệt Giá trị của các phần tử trong Form Trị của các biến trong chuỗi truy vấn HTTP Giá trị của HTTP và các biến môi trường ReadOnly ReadOnly ReadOnly ReadOnly ReadOnly Thuộc tính Mô tả Kiểu TotalBytes Đây là thuộc tính cho biết số byte trong thân của yêu cầu từ Client ReadOnly Phương thức Mô tả BinaryRead Đây là hàm dùng để nhận những dữ liệu gửi đến Server như là một phần của yêu cầu POST Có hai cách cơ bản để trình duyệt gửi những thông tin đặc biệt đến Web Server: đó là thông tin từ phần trong trang được đưa vào HTTP header hay được đưa trực tiếp từ chuỗi truy vấn trong địa chỉ liên kết URL. Đó chính là vai trò của hai tập hợp Form và QueryString trong đối tượng Request. QueryString Collection: QueryString Collection chứa toàn bộ thông tin được gửi tới Server từ Form bằng phương thức Get. Các giá trị này chứa trong một chuỗi Query và được thêm vào sau dấu ? bằng các cặp name=value theo mẫu: Name1=value1&name2=value2 ... Ta có thể thấy rõ chuỗi URL khi quan sát hộp Address của Browser. Ví dụ có một Form Name: Age: Khi user nhập giá trị vào hai hộp name và Age (giả sử là “Hoàn” và “22”) sau đó nhấn Submit thì hộp Address của Browser sẽ có dạng như sau: àn&Age=22 Tại Server ta có thể nhận giá trị của txtName và lưu vào một biến (ở đây là Name) như sau: Name=Request.QueryString(“txtName”) Cú pháp chung: Request.QueryString(“tên thành phần”)[.item] Lưu ý, ta có thể đưa trực tiếp thông tin vào QueryString mà không cần dùng Form. Form Collection: Khi phương thức gửi dữ liệu của là Post thì tập hợp QueryString sẽ rỗng, và lúc này dữ liệu được gửi đi trong phần header của HTTP. Nếu quan sát hộp Address của browser thì ta không thấy được tên và giá trị dữ liệu như trường hợp Get. Để nhận dữ liệu tại Server, ta dùng cú pháp: Request.Form(“tên thành phần”)[.item] Chẳng hạn, như để lấy giá trị của dữ liệu có tên là txtName ở trên: Name=Request.Form(“txtName”) So sánh giữa hai tập hợp QueryString và Form: ở mỗi cách dùng một phương pháp riêng được khái quát theo mô hình sau: Server (ASP Application) Data is sent inside HTTP header Data read using Form collection Method=POST Method=POST Data is sent inside HTTP header Data read using Form collection Client (browser) Form Theo phương pháp dùng QueryString có hạn chế đó là giới hạn chiều dài của chuỗi địa chỉ URL ( khoảng 1000 ký tự) đây chính là yêu cầu của giao thức HTTP. Do đó, sẽ rất phiền phức khi có yêu cầu gửi đi quá dài. Mặt khác, giá trị mà ta gửi đi được hiển thị rõ ràng trong ô địa chỉ URL trên trình duyệt máy Client nên dễ dàng bị người khác đọc được. Phương pháp dùng POST đã khắc phục được nhược điểm trên bằng cách đưa dữ liệu vào trong phần header của HTTP. Server Variable Collection: Theo tên gọi thì ta thấy tập hợp này không có tác dụng gì mấy đối với yêu cầu của Client, nhưng hầu hết các thông tin lấy được từ các collection khác đều bắt nguồn từ đây. Bất kỳ một header HTTP nào được gửi từ trình duyệt đều có trong đây và lấy ra bằng đoạn mã sau: Strvalue=Request.ServerVariables(“HeaderType”) Cookies collection: Được xây dựng dựa vào yêu cầu lưu trữ thông tin một cách liên tục trên máy Client. Các cookies được lưu thành file trên máy Client và chỉ được đọc thông qua đối tượng Request. Ta có thể sửa đổi cookies dựa vào đối tượng Response. Cookie có thuộc tính quan trọng đó là thời gian mà nó tồn tại trong hệ thống, vấn đề này sẽ được đề cập trong phần Response Object. ClientCertificate collection: Bảo mật dữ liệu luôn luôn là vấn đề đáng quan tâm trên mạng, nhất là vào thời điểm hiện nay khi mà nhu cầu kinh doanh trên mạng ngày càng tăng. Giao thức SSL/PCT ra đời cung cấp phương thức truyền nhận dữ liệu bằng cách mã hoá và giải mã dữ liệu thông qua Web Server và trình duyệt hỗ trợ SSL/PCT nằm giữa lớp TCP/IP transport và lớp các ứng dụng. S-HTTP SSL Transport Internet Network interface Physical Layer Application TELNET NNTP HTTP FTP Khi dùng SSL, trình duyệt gửi đến Server chứng nhận định danh máy Client. Việc làm này nhằm đăng ký với Server và bảo đảm cho Client gửi dữ liệu đến đúng Server và dữ liệu chỉ có thể được đọc bởi Server đó mà thôi. Để đảm bảo cho user được phép chia sẻ thông tin cho những ai được phép, ta dùng tập hợp ClientCentificate. Ta có thể truy xuất các thành phần của ClientCentificate bằng các Key sau: Key Mô tả Centificate Flags Issuer ValidForm ValidUntil SerialNumber Subject Chuỗi chứa nội dung chứng nhận dưới dạng ASN.1 Cho phép thêm các thông tin chứng nhận Chuỗi bao gồm danh sách các thông tin về nhà cung cấp sự xác nhận Cho biết thời gian mà sự xác nhận có hiệu lực Cho biết khi nào thì hết hiệu lực Chuỗi số serial của xác nhận Thông tin về người sở hữu xác nhận TotalByte Properties: Số byte của Request mà Client gởi lên trong body. BinaryRead method: Được dùng để lấy dữ liệu gởi đến Server từ Client thông qua phương thức POST. Request.BinaryRead(tên dữ liệu) Đối tượng Response. Trong hệ thống các đối tượng xây dựng sẵn của ASP thì đối tượng response đóng vai trò rất quan trọng. Khi mà đối tượng Request bao gồm những thông tin gửi đến Web Server từ trình duyệt thì đối tượng Response nắm giữ những gì mà Web Server phải gửi trả lại cho trình duyệt. Tóm lại, ta dùng đối tượng response để gửi thông tin ra user, gồm có thông tin trực tiếp ra trình duyệt, chuyển trình duyệt đến địa chỉ URL khác hay để thiết lập các cookie trên máy Client. Phần Interface của đối tượng này được trình bày như hình vẽ sau: Response Object Collection Cookie Properties Buffer CacheControl Charset ContentType Expires ExpiresAbsolute IsClientConnected PICS Status Methods AddHeader AppendToLog BinaryWrite Clear End Flush Redirect Write Tập hợp Mô tả Cookies Giá trị của các cookies sẽ gửi cho trình duyệt. Thuộc tính Mô tả Buffer CacheControl Charset ContentType Expires ExpiresAbsolute IsClientConnected PICS Status Yêu cầu vùng đệm trang cho đến khi hoàn tất Xác định proxy Server cache các trang được tạo ra bởi ASP. Tên tập ký tự cho phần header content-type Kiểu nội dung của HTTP Thời gian bao lâu thì trang được cache trên trình duyệt hết hiệu lực Ngày giờ khi trang được cache trên trình duyệt hết hiệu lực Cho biết Client có ngắt kết nối khỏ Server hay chưa Thêm trị của nhãn PICS vào trường pics-label của phần header response Trị dòng trạng thái HTTP được Server trả về Phương thức Mô tả AddHeader AppendToLog BinaryWrite Clear End Flush Redirect Write Thêm hay sửa đổi phần HTTP header Thêm đoạn text vào phần log của Web Server cho yêu cầu này Gửi text đến trình duyệt mà không chuyển đổi bảng ký tự Xoá tất cả những vùng đệm của những trang HTML output Ngừng xử lý trang và trả về kết quả hiện hành Gửi những vùng đệm của output ngay lập tức Buộc trình duyệt connect tới địa chỉ URL khác Ghi một biến vào trang hiện hành dưới dạng chuỗi Từ đó ta thấy có thể chia các thành phần trên thành các nhóm chức năng sau: Chèn thêm thông tin vào trang: write và binary write. Gửi cookies đến trình duyệt: cookies Định địa chỉ mới cho trình duyệt: redirect Vùng buffer của trang: buffer, flush, clear, end Đặt thuộc tính của trang: ContentType, Expires, ExpiresAbsolute, PICS, Status, AddHeader, CacheControl, Charset Kiểm tra xem Client có connect hay không: IsClientConnected Đối tượng Server Đối tượng Server cung cấp những thuộc tính và các phương thức cơ bản trên Server được dùng trong hầu hết các trang ASP. Đối tượng Server không có kiểu tập hợp. Server Object Collections Propertier ScriptTimeout Methods CreateObject HTMLEncode Mappath URLEncode Thuộc tính Mô tả ScriptTimeout Thời gian script được thực thi trước khi xảy ra lỗi (mặc định là 90s) Phương thức Mô tả CreateObject HTMLEncode Mappath URLEncode Tạo ra bảng instance của đối tượng hay thành phần Server Đưa vào mã HTML cho một chuỗi Chuyển đường dẫn ảo thành đường dẫn vật lý Đưa vào mã URL gồm cả ký tự escape cho một chuỗi Đối tượng Application. Đối tượng Application được dùng để chia sẻ thông tin giữa các user trong cùng một ứng dụng. Ngoài ra còn có thể dùng để đếm số lần truy cập đến ứng dụng của user. Application Object Collections Contents StatisObjects Events OnStart OnEnd Methods Lock Unlock Tập hợp Contents StatisObjects Chứa các khoản được thêm vào trong ứng dụng qua lệnh script Chứa các đối tượng được thêm vào ứng dụng bằng thẻ . Phương thức Mô tả Lock Unlock Không cho Client thay đổi thuộc tính của ứng dụng. Cho phép Client thay đổi thuộc tính của ứng dụng. Sự kiện Mô tả OnStart OnEnd Xảy ra khi bắt đầu ứng dụng Xảy ra khi ứng dụng kết thúc, sau sự kiện Session_onEnd Chúng ta thấy có hai sự kiện liên quan đến việc bắt đầu và kết thúc của một ứng dụng ASP. Vậy khi nào thì bắt đầu một ứng dụng ASP và khi nào thì nó kết thúc? ứng dụng ASP là một ứng dụng trên Web mà nội dung của nó tương tác và được tạo ra một cách linh động. Do đó, ứng dụng chỉ thật sự bắt đầu chạy khi có một yêu cầu đầu tiên nào của Client đến trang tài liệu nằm trong thư mục của ứng dụng trên Web Server. ứng dụng ASP kết thúc khi Web Server ngưng hoạt động và sự kiện trong kịch bản onend sẽ được thực thi. Trong trường hợp Web Server bị hỏng thì ứng dụng vẫn kết thúc nhưng kịch bản onend không thực thi. Để lưu trữ các thông tin toàn cục ta lưu chúng vào file global.asa trong thư mục gốc của ứng dụng. Cú pháp: Sub _() ... End Sub Đối tượng Session Đối tượng Session được dùng trong trường hợp cần chia sẻ dữ liệu giữa các trang nhưng giữa các Client khác nhau thì không. Mỗi Client yêu cầu một trang trong ứng dụng sẽ được gán bởi một Session Object. Vậy một phiên làm việc được tạo ra khi Client lần đầu tiên yêu cầu dữ liệu và mặc định sau 20 phút mà Client không yêu cầu gì nữa thì mất. Phần giao tiếp của đối tượng Session như sau: Session Object Collections Contents StatisObject Properties Codepage LCID SessionID Timeout Methods Abadon Events OnStart OnEnd Tập hợp Mô tả Contents StatisObject Chứa các khoản được thêm vào trong Session qua lệnh script Chứa các đối tượng được thêm vào Session bằng thẻ Methods Mô tả Abadon Huỷ một đối tượng Session và giải phóng tài nguyên mà nó chiếm Thuộc tính Mô tả Codepage LCID SessionID Timeout Định codepage của trang Định danh vùng địa lý Trả về số ID của Session dành cho user đó Định thời gian timeout cho trạng thái của Session Sự kiện Mô tả OnStart OnEnd Xảy ra khi Server tạo một Session mới Xảy ra khi Session bị huỷ hay bị timeout Cũng giống như đối tượng Application, Session object có sự kiện dành cho việc bắt đầu 1 session và kết thúc session. Các kịch bản dành cho 2 sự kiện này được đặt trong file global của ứng dụng dưới dạng như sau: Sub Session_OnStart ... End Sub Sub Session_OnEnd ... End Sub Đến đây một vấn đề đặt ra là khi nào thì bắt đầu Session và nó kết thúc khi nào? Có ba cách tạo một session: Khi có khai báo Session_OnStart trong file global.asa trong thư mục gốc của ứng dụng. Ngoài ra khi truy xuất đến dữ liệu trong đối tượng Session mà đối tượng này chưa có thì khi đó đối tượng Session được tạo ra. Khi có một bản Intance của một đối tượng nào đó có tầm vực là SCOPE=session. Và có hai cách kết thúc một Session: Dùng phương thức abandon của đối tượng Session. Điều này sẽ giải phóng tất cả tài nguyên mà Session chiếm giữ đồng thời các lệnh trong sự kiện Session_OnEnd được thực thi. Nếu quá thời gian timeout mà Client không có yêu cầu nào đến ứng dụng thì Server sẽ huỷ Session đó. Đối tượng ObjectContext Dùng để chấp thuận hoặc huỷ bỏ transaction được khởi tạo bởi một ASP script. Phương thức Mô tả Setcomplete Setabort Khai báo hoàn tất transaction Huỷ bỏ transaction được tạo bởi ASP Sự kiện Mô tả OnTransactioncommit OnTransactionabort Xảy ra khi giao phó cho một transaction Xảy ra khi huỷ bỏ một transaction 3.2.2 Truy vấn CSDL trong ASP Một ứng dụng Web database viết bằng ASP có thể truy xuất dữ liệu trong một database, bằng cách sử dụng Component Database Access của ActiveX hay còn gọi là thư viện ADO (Active Data Object). Đây cũng chính là điểm mạnh nhất của ASP trong việc phát triển ứng dụng Web Database. ADO cung cấp kỹ thuật truy xuất cơ sở dữ liệu dễ dàng và nhanh chóng thông qua ngôn ngữ script đơn giản và linh động. Các ứng dụng dùng ADO rất dễ hiểu, đạt hiệu quả cao với chi phí thấp. Những Object mà ADO cung cấp có thể tạo ra các kết nối (Connection) với hầu hết các kiểu Database, cũng như việc truy xuất cập nhật các Database này. Sự giao tiếp giữa ADO và các thành phần khác trong hệ thống có thể được mô tả theo hình vẽ sau: Active Server Pages Active Database Component Active Data Object ODBC Drivers Data Provider Interface DataSource ADO có ba đối tượng chính là: Connection, RecordSet và Command. Ngoài ba đối tượng chính này còn có các đối tượng, tham số, thuộc tính, phương thức con. Để sử dụng các đối tượng ADO trong trang ASP, ta cần phải khởi tạo một Intance của nó. Ví dụ tạo một Intance cho đối tượng Connection: <% Connection_name=Server.CreateObject(“AĐOB.Connection”) %> Sau khi tạo đối tượng ta có thể sử dụng nó để truy xuất CSDL. 3.3. Com – Component Object Model. 3.3.1. Com là gì? COM là một cách thức để viết các thành phần phần mềm (software component) cung cấp các chức năng phục vụ cho các ứng dụng, các hệ điều hành cũng như những thành phần khác. Com thực chất là một sự đặc tả. Nó chỉ ra làm thế nào để xây dựng các thành phần có thể được thay thế một cách “động”. Com cung cấp một “chuẩn” để các ứng dụng và các thành phần phải tuân theo để chúng có thể hoạt động được với nhau. 3.3.2. Thành phần Com là gì? Thành phần COM là những đoạn mã hiện thực các hàm, các chức năng được chứa trong file .DLL hoặc .EXE. Thành phần COM cần phải thoả mãn được những “chuẩn” của COM: Vì được chứa trong các file .DLL và .EXE nên thành phần COM có thể được liên kết động. Các thành phần COM có thể được đóng bao vì nó thoả mãn các ràng buộc: Thành phần COM hoàn toàn độc lập với ngôn ngữ hiện thực nó. Thành phần COM có thể được hiện thực bằng nhiều ngôn ngữ như VC++, VB, ... hay thậm chí bằng Assembly. Thành phần COM được sử dụng dưới dạng mã nhị phân Thành phần COM có thể được nâng cấp mà không làm hỏng chương trình đang chạy. Điều này được giải thích ở phần “COM trong Windows”. Thành phần COM trong suốt về mặt vị trí. Điều này cũng được giải thích ở phần sau. 3.3.3. Giao diện (Interface). Giao diện là tất cả đối với com. Các ứng dụng chỉ có thể nhìn thấy và truy xuất đến các thành phần COM thông qua giao diện của nó. Quan hệ giữa thành phần và giao diện là quan hệ n: n. Một thành phần có thể có nhiều giao diện và ngược lại, một giao diện có thể được hiện thực bởi nhiều thành phần. Lợi ích của giao diện: Giao diện làm tăng mức độ độc lập giữa các ứng dụng và các thành phần COM. Nhờ có giao diện mà một thành phần COM có thể được thay thế động mà không ảnh hưởng đến ứng dụng đang chạy. Giao diện làm cho các thành phần khác nhau có thể được đối xử như nhau bởi ứng dụng. Đặc tính này chính là sự đa hình (pholymorphism) Đặc điểm của giao diện: Giao diện không bao giờ được thay đổi. Nếu một giao diện thay đổi thì ứng dụng phải được sửa đổi và biên dịch lại nếu còn muốn sử dụng các thành phần tương ứng. Nếu muốn thay đổi hoặc nâng cấp một giao diện có sẵn thì COM chỉ cho phép tạo ra một giao diện mới tồn tại song song với giao diện cũ. Sự đa hình: nếu 2 thành phần cùng hỗ trợ một giao diện thì chúng có thể được sử dụng như nhau ở ứng dụng. Đây là đặc điểm quan trọng của giao diện. Nó cho phép một ứng dụng có thể được dùng lại cho nhiều thành phần khác nhau (dĩ nhiên là cùng hỗ trợ một giao diện). Hay nói một cách khác, ứng dụng có thể tuỳ biến (customize) các thành phần được. Giao diện là một tập hợp các hàm chức năng (function). Trong bộ nhớ, một giao diện được tổ chức như sau: Tất cả các ngôn ngữ lập trình nào có thể tạo ra trong bộ nhớ một cấu trúc như vậy đều có thể tạo được COM (hay nói cách khác là thoả mãn các “chuẩn “ của COM ). 3.3.4. COM trong Windows Trong Windows, các thành phần COM cũng như các giao diện COM đều được gán một ID. ID của thành phần COM được gọi là CLSID (class identifier) của giao diện COM là IID (interface identifier). Các ID này gọi chung là GUID (globally unique identifier) là một cấu trúc 16 byte và được xác định duy nhất trên toàn thế giới!. Mỗi khi một thành phần COM được tạo ra, nó được chứa trong một file .DLL hoặc .EXE (một file có thể chứa nhiều thành phần COM). Mỗi thành phần COM được gán một CLSID và mỗi giao diện COM cũng được gán một IID duy nhất. Tất cả các ID này đều được chứa trong registry của windows cùng với thông tin về các thành phần hoặc giao diện mà nó đại diện. Khi ứng dụng muốn sử dụng COM, nó sẽ gọi một hàm API của windows là CoCreateInstance với thông số truyền vào là CLSID và IID tương ứng với thành phần và giao diện mà thành phần đó hỗ trợ để có được giao diện mong muốn. COM được chia làm 3 loại: 1) Improcess Server: làm COM được chứa trong file .DLL. Do đó, nó sẽ được nạp vào cùng không gian bộ nhớ với quá trình đang chạy. Việc sử dụng ImprocessServer vừa đơn giản mà lại nhanh. 2) Local Server: được chứa trong file .EXE. Mỗi khi COM được sử dụng, nó được nạp vào một quá trình khác với quá trình đang chạy và do đó nó sẽ sử dụng không gian bộ nhớ riêng. Để giao tiếp giữa hai quá trình, ta dùng một kỹ thuật đã biết như LPC (Local Procedure Call). 3) Remote Server: được chứa trong file .DLL hoặc .EXE. Sử dụng RemoteServer cũng giống như sử dụng Inprocess hoặc LocalServer thông thường. Mỗi khi một thành phần loại Remote Server được tạo ra thì thường có hai thành phần phụ cũng được tạo ra là proxy và stub (trong VC++, việc tạo hai thành phần này là tự động, không cần phải viết thêm một đoạn mã nào). Thành phần proxy có nhiệm vụ nhận lời gọi từ phía ứng dụng, sau đó tạo ra một RPC (Remote Procedure Call) tới thành phần stub nằm trên máy khác. Thành phần stub này sẽ gọi thành phần COM nằm trên máy này, nhận kết quả trả về rồi chuyển nó cho proxy để proxy trao kết quả đó cho ứng dụng. Trước khi tìm hiểu chi tiết cách tổ chức các ID trong registry của windows, có một số thuật từ (term) được sử dụng trong registry như sau: Các ID được tổ chức trong registry như sau: Tất cả các CLSID trong windows đều được chứa như là các subkey trong Key CLSID là con trực tiếp của Root HKEY_CLASSES_ROOT. Trong mỗi clsid của thành phần COM chứa một số thông tin sau: - Tên gợi nhớ của thành phần. Ví dụ như trong hình là “Tail Rotor Simulator”. Tên này thường là default value của clsid chỉ có tác dụng giúp cho người sử dụng hiểu thêm về thành phần mà thôi. - InprocServer: chứa đường dẫn tới .DLL chứa thành phần loại Inprocess Server loại 16/32 bit - InprocServer32: chứa đường dẫn tới .DLL chứa thành phần loại Inprocess Server loại 32 bit - LocalServer32: chứa đường dẫn tới .EXE chứa thành phần loại LocalServer loại 32 Insertable: dạng boolean chỉ ra rằng thành phần COM 32 bit có thể sử dụng cho ứng dụng 16 bit hay không. - ProID (programmatic identifier): là một tên gợi nhớ có thể thay thế cho clsid. Tuy nhiên, ProgID chỉ duy nhất trong hệ thống mà không duy nhất trên toàn thế giới như clsid. Trong thực tế, ProgID thường được dùng hơn là clsid. VersionIndependentProgID: bởi vì một thành phần COM có thể có nhiều phiên bản (version) hay nhiều ProgID cùng đồng thời tồn tại trong hệ thống. Do đó, phải có một ProgID chung để ứng dụng có thể tìm đến để biết được hiện phiên bản nào là mới nhất. Để cho việc tìm kiếm theo ProgID được nhanh, người ta tổ chức ProgID thành một Key riêng cũng là con của HKEY_CLASSES_ROOT, Key này chứa một số thông tin như sau: - Tên gợi nhớ của thành phần: giống như tên gợi nhớ trong clsid. - CLSID: là clsid tương ứng với ProgID - Curver: chỉ ra ProgID mới nhất của thành phần hiện đang dùng trong hệ thống. Thông tin này chỉ có trong VersionIndependentProgID. 3.3.5. Vấn đề tái sử dụng (reuse) các thành phần COM Tuy COM có mô hình hướng đối tượng nhưng COM không hỗ trợ việc thừa kế về sự hiện thực (hay còn gọi là thừa kế về kiểu-theo lý thuyết của hướng đối tượng). COM chỉ hỗ trợ sự kế thừa về giao diện. Có hai kiểu kế thừa về giao diện là kế thừa theo kiểu ngăn chặn (containment) và kế thừa theo kiểu kết hợp (aggregation). 3.3.5.1. Kế thừa theo kiểu ngăn chặn Thành phần bên ngoài (outer component) có hai giao diên là IX và IY. Trong đó IY được kế thừa từ giao diên IZ của một thành phần khác (được gọi là thành phần bên trong-inner component). Khi một ứng dụng sử dụng giao diện IY, giao diện này sẽ chuyển lời gọi tới giao diện IZ của thành phần bên trong. Sau đó sẽ nhận kết quả trả về từ IZ và chuyển nó cho ứng dụng. Thành phần bên ngoài có thể làm thêm một số tác vụ khác trước khi chuyển lời gọi tới hoặc nhận kết quả trả về từ IZ. 3.3.5.2. Kế thừa theo kiểu kết hợp Khác với thừa kế theo kiểu ngăn chặn là chặn các lời gọi cũng như kết quả trả về từ giao diện của thành phần bên trong, một thành phần bên ngoài khi kết hợp một giao diện của thành phần bên trong thì nó sẽ chuyển lời gọi trực tiếp từ ứng dụng tới giao diện của thành phần bên trong và cũng sẽ trả giá trị trả về trực tiếp tới ứng dụng mà không có một sự tác động nào. Việc sử dụng kiểu thừa kế nào tuỳ thuộc vào từng trường hợp. Nếu một giao diện đáp ứng một cách chính xác tất cả các yêu cầu mong muốn thì có thể thừa kế theo kiểu kết hợp. Nếu cần phải sửa đổi giao diện trước hoặc sau khi sử dụng nó thì bắt buộc phải thừa kế theo kiểu ngăn chặn. Chương 4. Phân tích và thiết kế hệ thống 4.1. Phân tích hệ thống. 4.1.1. Khảo sát yêu cầu. Xây dựng Web site khối PTCTT nhằm mục đích giúp cho các thày, cô biết được thông tin về lớp, học sinh mà mình đang dạy; các học sinh biết được thông tin về thời khóa biểu, về môn học, về giáo viên, lịch thi, các tin tức về hoạt động ngoại khoá, văn nghệ, thể thao đặc biệt là thông tin về điểm. Nhu cầu các cựu học sinh khối PTCTT cần liên lạc với nhau để trao đổi là rất cấp thiết. Việc thành lập hội cựu học sinh là không khả thi vì các vấn đề khách quan như thời gian, nơi công tác, ... vì vậy, cần xây dựng một diễn đàn trên mạng để các cựu học sinh có thể trao đổi về công tác, nghiên cứu. 4.1.2. Hiện trạng quản lý Hiện nay, việc quản lý giáo viên, môn học, học sinh, ... đều phải lưu trên giấy tờ, sổ sách. Khi có yêu cầu tìm kiếm thông tin thì chúng ta rất mất thời gian để tìm trên sổ sách. Giáo viên, học sinh rất thụ động trong việc xem thông tin về tất cả các vấn đề mà mình quan tâm. Hơn nữa, do đặc điểm học sinh của khối không phải chỉ ở Hà nội mà có cả các em quê ở các tỉnh khác nên việc xem phụ huynh học sinh không thể theo dõi tình hình học tập của con cái mình một cách trực tiếp và nhanh chóng được ( thực tế đôi khi còn không biết tình hình học tập của con cái mình) 4.1.3. Nhiệm vụ. Hiện nay Internet phát triển rộng khắp từ thành phố đến vùng nông thôn nên việc tìm kiếm thông tin qua mạng là khá dễ dàng. Việc xây dựng một Web site nhằm đưa tất cả các thông tin liên quan đến học sinh là cần thiết. Đây là nơi để các học sinh cũ trưởng thành từ khối có thể biết được tình hình hiện trạng của khối và trao đổi trực tiếp Qua Internet, phụ huynh, giáo viên và học sinh có thể xem tất cả thông tin cần tìm hiểu và trao đổi trực tiếp với nhau. Vì vậy, nhiệm vụ đặt ra là làm thế nào để mọi người cảm thấy việc truy cập là tiện lợi và thoải mái còn người quản lý thì dễ dàng thực hiện công việc quản lý của mình. Muốn vậy, Web site phải được thiết kế thân thiện, dễ sử dụng, không có thao tác thừa mà còn hấp dẫn người truy cập, thể hiện ở cách trình bày và nội dung của nó. 4.2. Phân tích hệ thống về chức năng. 4.2.1. Sơ đồ phân cấp chức năng. 4.2.2. Sơ đồ luồng dữ liệu (DFD). Sơ đồ luồng dữ liệu thể hiện sự trao đổi luồng dữ liệu giữa hệ thống và môi trường ngoài cũng như giữa các thành phần bên trong hệ thống. Sơ đồ luồng dữ liệu được chia làm nhiều mức tương ứng với từng cấp của sơ đồ phân cấp chức năng. Sơ đồ dữ liệu mức khung cảnh (DFD mức 0) tương ứng với mức 0 của sơ đồ phân cấp chức năng. Cả hệ thống được coi như là một hộp đen, ta chỉ cần quan tâm đến các thông tin đầu vào và các thông tin đầu ra. Đối với đề tài này đây chính là các luồng dữ liệu giữa hệ thống và các tác nhân: nhà trường, giáo viên, học sinh, hội viên và gia đình. Tương ứng với mức 1 của sơ đồ phân cấp chức năng là sơ đồ dữ liệu mức đỉnh. ở đây gồm có các hoạt động như: thông tin điểm; thông tin hồ sơ; thông tin kỷ luật, khen thưởng; trao đổi, hội thảo; các thông tin liên quan đến học sinh và thông tin về cựu học sinh. Sơ đồ dữ liệu mức dưới đỉnh tương ứng với mức 2 của sơ đồ phân cấp chức năng. Các ký hiệu được dùng: : Tác nhân : Chức năng Tên : Chức năng : Tệp dữ liệu : Luồng dữ liệu Sau đây là các sơ đồ: Biểu đồ luồng dữ liệu mức bối cảnh. Biểu đồ luồng dữ liệu mức đỉnh. Biểu đồ luồng dữ liệu mức1. ` Biểu đồ luồng dữ liệu mức2. 4.3 Phân tích hệ thống về dữ liệu. Trong sơ đồ trên ta đã thấy được các luồng thông tin vào, ra hệ thống cũng như các luồng thông tin truyền trong hệ thống. Phần này ta sẽ đi sâu vào phân tích nội dung dữ liệu và mối quan hệ về dữ liệu của các luồng thông tin đó. Mô hình được sử dụng để phân tích là mô hình thực thể liên kết. Trong mô hình này, thông tin được quy về các đối tượng mà ta gọi là thực thể, tính chất của các thực thể được thể hiện bằng các thuộc tính và các mối quan hệ giữa chúng. 4.3.1 Xác định các thực thể. Thực thể là các đối tượng cần lưu trữ thông tin trong hệ thống, nó có thể là tài nguyên, giao dịch hay thông tin đã được cấu trúc hoá. Đối với hệ thống trong đề tài này, các thực thể được xác định là: Học sinh Lớp Thời khoá biểu Điểm Học sinh-Điểm Giáo viên Môn học Giáo viên-Môn học Huy chương Học sinh-Huy chương Cựu học sinh Học hàm Học vị Lĩnh vực công tác 4.3.2 Các thuộc tính của thực thể. Bảng Học sinh(Số thẻ, lớp, khóa, họ, tên, năm sinh, giới tính, quê quán, địa chỉ, điện thoại, Email, mã huy chương, khen thưởng, kỷ luật, ghi chú) Column name Data type Length null MaHS Char 10 Malop Char 10 Hoten Char 40 Chucvu Char 25 ệ Ngaysinh Datetime 8 Gioitinh Bit 1 Quequan Nvarchar 200 ệ Diachi Nvarchar 200 ệ Dienthoai Char 12 ệ Email char 50 ệ Khenthuong Nvarchar 200 ệ Kyluat Nvarchar 200 ệ Anh Nvarchar 50 ệ Ghichu Nvarchar 200 ệ Bảng Lớp(malop, giáo viên chủ nhiệm, ghi chú) Column name Data type length Null Malop Char 10 Gvchunhiem Nvarchar 50 Ghi chú Nvarchar 200 ệ Bảng Mônhọc (mamon, tên môn, hệ số, tài liệu, học kỳ) Column name Data type length null Mamon Char 10 Tenmon Nvarchar 50 Heso Char 1 Hocky Char 1 Bảng Giaovien(magv, tengv, mamon, diachi, dienthoai, Email, ghichu) Column name Data type length Null Magv Char 10 Tengv Nvarchar 50 Diachi char 50 ệ dienthoai char 10 ệ Email char 50 ệ Hocvi Nvarchar 30 ệ Hocham Nvarchar 30 ệ Ghichu nvarchar 200 ệ Bảng Giáo viên-Môn học(magv, mamon) Column name Data type Length null Magv Char 10 mamon Char 10 Bảng thoikhoabieu(thu, malop, Tiết1, Tiết2, Tiết3, Tiết4, Tiết5, Ca học, ghichu) Column name datatype length null thu Char 10 malop char 10 Tiet1 Nvarchar 30 ệ Tiet 2 Nvarchar 30 ệ Tiet 3 Nvarchar 30 ệ Tiet 4 Nvarchar 30 ệ Tiet 5 Nvarchar 30 ệ Cahoc Nvarchar 10 ệ ghichu nvarchar 200 ệ Bảng Huychuong ( Mahuychuong, Tenhuychuong, ghichu) Column name datatype length null Mahuychuong char 5 Tenhuychuong char 30 ghichu nvarchar 200 ệ Bảng Lvcongtac (Malinhvuc, Tenlinhvuc, Ghichu) Column name datatype length null Malinhvuc char 10 Tenlinhvuc Nvarchar 70 Ghichu nvarchar 200 ệ Bảng Diem ( maHS, mamon, Diemm, Diem15, Diem45, Diemhk, Ghichu) Column name datatype length null maHS char 10 mamon char 10 Diemm char 2 Diem15 char 2 Diem45 char 2 Diemhk char 2 Ghichu nvarchar 100 ệ Bảng HS-D (maHS, mamon) Column name datatype length null MaHS Char 10 mamon Char 10 Bảng CuuHS ( MacuuHS, Hoten, Ngaysinh, Gioitinh, Quequan, Diachi, Dienthoai, Didong, Email, Giadinh, Chucvu, Hocham, Hocvi, Lvcongtac, Anh, ghichu) Column name datatype length null MacuuHS Char 10 Hoten Nvarchar 50 Ngaysinh Datetime 8 Gioitinh Bit 1 Quequan Nvarchar 70 diachi Nvarchar 70 Dienthoai Char 12 ệ Didong Char 12 ệ Email Nvarchar 50 ệ Giadinh Bit 1 ệ Chucvu Nvarchar 10 ệ mahocham char 10 ệ mahocvị char 10 ệ Lvcongtac Nvarchar 70 ệ Anh Nvarchar 50 ệ Ghichu Nvarchar 200 ệ Bảng Hocvi (mahocvi, Ten) Column name Datatype length null mahocvi char 10 Ten Nvarchar 30 Bảng Hocham (mahocham, Ten) Column name Datatype length null mahocham char 10 Ten Nvarchar 30 4.3.3. Mô hình thực thể liên kết. Học hàm Giáo viên Môn học Học sinh-Điểm Điểm Thời khoá biểu Lớp Cựu học sinh Học sinh Học vị Huy chương Học sinh-Huy chương Giáo viên-Môn học 4.4. Thiết kế các modul. Các modul là các thành phần cơ bản tạo nên chương trình ứng dụng. Khi thực thi chương trình chính thì các modul sẽ triệu gọi lẫn nhau và thực hiện các chức năng của mình. Các modul được xây dựng trong đề tài này được mô tả theo các lược đồ chi tiết sau: ( Kí hiệu: các modul được biểu diễn bằng các hình chữ nhật. Trong đó hình chữ nhật mảnh là các trang ASP cu thể, chúng là những đơn vị chương trình nhỏ nhất. Các hình chữ nhật đậm là modul lớn, modul này bao gồm nhiều trang ASP. Mũi tên là lời gọi giữa các modul. Mũi tên là lời gọi giữa các modul. Các tham số trong lời gọi được ghi trên dưới mũi tên) Trang chủ.asp Tin tức- Hoạt động Diễn đàn Giới thiệu chung Tập san HHT.asp Phản hồi Bạn cần biết !!! Tìm kiếm Hỗ trợ-Tư vấn Forum Hội cựu HS Thông tin điểm 1) Modul tìm kiếm. Trang tìm kiếm.asp Tìm kiếm Kết quả.asp Thông tin về GV hay HS B1: Gọi trang tìm kiếm để có thể nhập nội dung tìm kiếm là giáo viên hay học sinh. B2: Gọi modul tìm kiếm B3: Hiển thị kết quả 2) Modul Giới thiệu chung Gioithieu.asp Gioithieu.asp Trang lịch sử vàng.asp Sodotochuc.asp Anhhoatdong. asp 3) Modul Tin tức-Hoạt động. Tin tức-Hoạt động Văn hoá-Thể thao .asp Thi học sinh giỏi .asp Hội thảo NCKH .asp Công tác đoàn .asp 4) Modul Bạn cần biết Bancanbiet.asp Bài toán hay Sachmienphi. asp Xemdiem.asp ` 5) Modul Hỗ trợ Tư vấn. Hỗ trợ tư vấn .asp Hươngnghiep.asp Hocbong .asp PhongtraoDoan .asp 6) Modul Phản hồi Form nhập tt.asp Ghi dữ liệu.asp phản hồi (Nơi gọi modul) Cám ơn.asp Thông tin * Modul quản lý Trang quản lý.asp Cập nhật Đổi mật khẩu Hỗ trợ tuyển sinh Chương 5. Giới thiệu chương trình 5.1. Cài đặt và triển khai chương trình. 5.1.1. Yêu cầu về trình duyệt Qua thử nghiệm cho thấy Web site hoạt động tốt trên Microsoft Internet Explorer 4.0 và Netscape 4.0 trở lên. 5.1.2. Yêu cầu về hệ điều hành. ASP là công nghệ của Microsoft do đó, như hầu hết các công nghệ của hãng này, nó chỉ hoạt động trên hệ điều hành của Microsoft đó là: Window NT, Window 9X, Window 2000. Đối với Win NT ( hay Win 2000 Server) thì cần cài đặt bộ Option Pack 4 (hoặc mới hơn). Trong bộ này có 3 sản phẩm chính tạo ra môi trường hoạt động cho ASP là Microsoft Internet Information Server 4.0 (IIS 4.0) và Microsoft Certificate Server cùng với Microsoft Transaction Server (MTS). Đối với Win 9x ( hay Win 2000 bẩn Professional) thì cần cài đặt Personal Web Server 3.0 (hoặc mới hơn). Personal Web Server là giải pháp Microsoft đưa ra để tạo điều kiện cho các nhà phát triển thiết kế Web Server ở dạng “Offline (nghĩa là không kết nối Client/Server thật) và vì thế nó không cài trên Server mà cài trên PC. Nhà phát triển có thể ngồi ở nhà thiết kế Web Server trên PC của mình mà không cần có mạng thật, sau khi thiết kế xong thì đưa Web Server lên mạng thật để chạy chương trình ở dạng “nline”. Lúc này, Web Server mới hoạt động đúng mục đích của nó. Tuy nhiên, sự khác biệt giữa thiết kế “ offline” và “online” là không đáng kể. Nếu Web Server hoạt động tốt ở dạng “offline” thì cũng sẽ hoạt động tốt ở dạng “online”. 5.2. Một số giao diện tiêu biểu. Trang chủ Trang sơ đồ tổ chức Một trang tin Trang cập nhật tin tức Trang cập nhật tổng thể( ví dụ bảng Thời khoá biểu) 5.3 Kết luận. 5.3.1.Những kết quả đạt được Về lý thuyết: Trước khi thực hiện đề tài tốt nghiệp này, những khái niệm về xây dựng một trang Web đối với em còn hết sức mới mẻ. Nhờ sự giúp đỡ của Tiến sĩ Phan Trung Huy- là người trực tiếp hướng dẫn – cùng với sự nỗ lực của bản thân, sau khi hoàn thành đề tài này em thu được nhiều kiến thức bổ ích. Những kiến thức đó sẽ rất hữu ích cho quá trình làm việc của em sau này. Về chương trình: - Trang Web đã đạt được yêu cầu của khối phổ thông chuyên Toán Tin đặt ra. - Được thiết kế công phu đẹp mắt - Chương trình được kiểm soát lỗi chặt chẽ đảm bảo hoạt động thông suốt - Tiện lợi cho việc quản lý - Có chức năng đưa tin hiệu quả Phụ lục : Một số đoạn code của chương trình - Trang hiện yêu cầu cập nhật học sinh; view, xoá, có chức năng tìm kiếm nhanh : <% Response.expires = 0 Response.expiresabsolute = Now() - 1 Response.addHeader "pragma", "no-cache" Response.addHeader "cache-control", "private" Response.CacheControl = "no-cache" %> <% displayRecs = 20 recRange = 10 %> <% ' Get table name tablename = "[Hocsinh]" dbwhere = "" a_search = "" b_search = "" %> <% pSearch = Request.QueryString("psearch") If pSearch "" Then pSearch = replace(pSearch,"'","''") pSearch = replace(pSearch,"[","[[]") b_search = b_search & "[MaHS] LIKE '%" & pSearch & "%' OR " b_search = b_search & "[Malop] LIKE '%" & pSearch & "%' OR " b_search = b_search & "[Hoten] LIKE '%" & pSearch & "%' OR " b_search = b_search & "[Ten] LIKE '%" & pSearch & "%' OR " b_search = b_search & "[Quequan] LIKE '%" & pSearch & "%' OR " b_search = b_search & "[Diachi] LIKE '%" & pSearch & "%' OR " b_search = b_search & "[Dienthoai] LIKE '%" & pSearch & "%' OR " b_search = b_search & "[Email] LIKE '%" & pSearch & "%' OR " b_search = b_search & "[Khenthuong] LIKE '%" & pSearch & "%' OR " b_search = b_search & "[Kyluat] LIKE '%" & pSearch & "%' OR " b_search = b_search & "[Anh] LIKE '%" & pSearch & "%' OR " b_search = b_search & "[Ghichu] LIKE '%" & pSearch & "%' OR " End If If len(b_search) > 4 Then b_search = mid(b_search,1,len(b_search)-4) b_search = "(" & b_search & ")" End If %> <% 'Build search criteria If a_search "" Then dbwhere = dbwhere & a_search 'advance search ElseIf b_search "" Then dbwhere = dbwhere & b_search 'basic search End If If dbwhere "" Then Session("tablename") = tablename Session("dbwhere") = dbwhere 'reset start record counter startRec = 1 Session("startRec") = startRec Else If tablename = Session("tablename") Then dbwhere = Session("dbwhere") Else 'reset search criteria dbwhere = "" Session("dbwhere") = dbwhere End If End If 'Get clear search cmd If Request.QueryString("cmd").Count > 0 then cmd=Request.QueryString("cmd") If ucase(cmd) = "RESET" Then 'reset search criteria dbwhere = "" Session("dbwhere") = dbwhere End If End If %> <% DefaultOrder = "" DefaultOrderType = "" OrderBy = "" If Request.QueryString("order").Count > 0 Then OrderBy = Request.QueryString("order") ' Check if an ASC/DESC toggle is required If Session("Hocsinh_OB") = OrderBy Then If Session("Hocsinh_OT") = "ASC" Then Session("Hocsinh_OT") = "DESC" Else Session("Hocsinh_OT") = "ASC" End if Else Session("Hocsinh_OT") = "ASC" End If Session("Hocsinh_OB") = OrderBy Session("Hocsinh_REC") = 1 Else OrderBy = Session("Hocsinh_OB") if OrderBy = "" then OrderBy = DefaultOrder Session("Hocsinh_OB") = OrderBy Session("Hocsinh_OT") = DefaultOrderType End If End If If Request.QueryString("start").Count > 0 Then startRec = Request.QueryString("start") Session("Hocsinh_REC") = startRec Else startRec = Session("Hocsinh_REC") if not isnumeric(startRec) or startRec = "" then 'reset start record counter startRec = 1 Session("Hocsinh_REC") = startRec End If End If set conn = Server.CreateObject("ADODB.Connection") conn.Open xDb_Conn_Str 'xây dựng câu truy vấn strsql = "select * from [Hocsinh]" If dbwhere "" Then strsql = strsql & " WHERE " & dbwhere End If if OrderBy "" then strsql = strsql & " ORDER BY [" & OrderBy & "] " & Session("Hocsinh_OT") end if set rs = Server.CreateObject("ADODB.Recordset") rs.Open strsql, conn, 1, 2 totalRecs = rs.RecordCount %> Tài liệu tham khảo [1] Mạng căn bản-VnGuide Nhà xuất bản thống kê 1997 [2] Mạng máy tính và các hệ thống mở – Nguyễn thúc Hải, NXB Giáo dục [3] ASP database-Sài Gòn book, NXB Giáo dục 2001 [4] ASP 3.0 và ASP.Net – Nguyễn Thu Lan NXB Minh Khai [5] MSDN 2000 [6] Inside COM- Dale Rogerson [7] Phân tích và thiết kế hệ thống – Nguyễn Văn Ba Mục lục Chương 5 : Cài đặt, triển khai và đánh giá chương trình Phụ lục: Một số đoạn mã của chương trình Tài liệu tham khảo

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

  • docP0106.doc