Từ khoảng cuối thập niên 90, ASP Active Server Page đã được nhiều lập trình viên lựa chọn để xây dựng và phát triển ứng dụng web động trên máy chủ sử dụng hệ điều hành Windows. ASP
Trang 1MỤC LỤC
LỜI CAM ĐOAN 6
Chương 1 CƠ SỞ LÝ THUYẾT 7
1.1 Phát biểu bài toán 7
1.2.Tìm hiểu bài toán 7
1.2.1 Trường cao kinh tế kỹ thuật Thái Nguyên 7
1.2.2 Quy trình nghiệp vụ thực tế 8
1.3 Tìm hiểu công nghệ xây dựng đồ án 9
1.3.1 Tổng quan về công nghệ ASP.NET 9
1.3.2 Giới thiệu công nghệ LINQ 12
1.5.4 Trình gỡ rối của Visual Studio Net 27
1.5.5 Các kiểu dữ liệu trong C# Biến: 29
1.5.6 Các cấu trúc lệnh trong C# 31
Chương 2 KHẢO SÁT VÀ PHÂN TÍCH THIẾT KẾ HỆ THỐNG 362.1 Khảo sát 36
2.1.1 Các chức năng cần quản lí 36
Trang 22.1.2 Quy trình quản lí của hệ thống hiện tại 37
2.1.3 Quy trình tổng hợp báo cáo 38
2.2 Phân tích thiết kế hệ thống 38
2.2.1 Biểu đồ use case tổng quát 38
2.2.2 Biểu đồ tuần tự chức năng đăng nhập hệ thống 39
2.2.3 Biểu đồ hoạt động chức năng đăng nhập hệ thống 40
2.3 Biểu đồ Use case cho chức năng quản lý hồ sơ sinh viên 412.3.1 Biểu đồ tuần tự chức năng Thêm sinh viên 42
2.3.2 Biểu đồ cộng tác chức năng Thêm sinh viên 42
2.3.3 Biểu đồ tuần tự chức năng Sửa sinh viên 43
2.3.4 Biểu đồ cộng tác chức năng Sửa sinh viên 43
2.3.5 Biểu đồ lớp chức năng Quản lý hồ sơ sinh viên 44
2.4 Cập nhật danh mục 44
2.4.1 Biểu đồ tuần tự chức năng Nhập điểm rèn luyện 45
2.4.2 Biểu đồ tuần tự chức năng Xóa điểm rèn luyện 46
Trang 34.7 Danh mục hệ đào tạo 59
4.7.1 Danh mục hệ đào tạo 59
4.7.2 Danh mục chuyên ngành đào tạo 60
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN61
DANH MỤC TÀI LIỆU THAM KHẢO 62
Trang 4DANH MỤC HÌNH ẢNH
Hình 1.1: Sơ đồ cấu trúc trường CĐ KT-KT Thái Nguyên 12
Hình 1.2.: Quy trình nghiệp vụ thực tế tại trường CĐKTKT Thái Nguyên 13Hình 1.3.: Mô hình công nghệ LINQ 16
Hình 1.4.: Thực thi câu lệnh trong LINQ 18
Hình 1.5: LINQ to XML element 19
Hình 1.6:Cấu trúc LINQ to XML 19
Hình 1.7 Thêm thư viện Ext.NET DLL vào project 25
Hình 1.8 Các View trong OOAD sử dụng UML26
Hình 1.9 Các bản vẽ trong OOAD sử dụng UML 26
Hình 1.10 Ký hiệu về Use Case 27
Hình 1.11 Ký hiệu về Class 27
Hình 1.12 Ký hiệu về Actor 28
Hình 1.13: Tạo New Project trong C# 28
Hình 1.13 Minh họa một điểm ngắt 31
Hình 2.1: Biểu đồ Use case tổng quát 42
Hình 2.2.: Biểu đồ tuần tự chức năng Đăng nhập 43
Hình 2.3: Biểu đồ hoạt động chức năng Đăng nhập 44
Hình 2.4: Biểu đồ tuần tự chức năng Quản lý hồ sơ sinh viên 45
Hình 2.5: Biểu đồ tuần tự chức năng Thêm sinh viên 46
Hình 2.6.: Biểu đồ cộng tác chức năng Thêm sinh viên 46
Hình 2.7: Biểu đồ tuần tự chức năng Sửa sinh viên 47
Hình 2.8: Biểu đồ tuần tự chức năng Sửa sinh viên 47
Hình 2.9: Biểu đồ lớp chức năng Lập mã sinh viên 48
Hình 2.10: Biểu đồ tuần tự chức năng Nhập điểm rèn luyện 48
Hình 2.11: Biểu đồ tuần tự chức năng Nhập điểm rèn luyện 49
Trang 5Hình 2.12: Biểu đồ tuần tự chức năng Xóa điểm rèn luyện 50
Hình 2.13: Biểu đồ tuần tự chức năng Tổng hợp điểm rèn luyện 51Hình 2.14: Biểu đồ tuần tự chức năng Thống kê các quá trình 51
Hình 3.1: Sơ đồ quan hệ Hồ sơ sinh viên 57
Hình 4.1: Giao diện chính của hệ thống 58
Hình 4.2: Giao diện đăng nhập của hệ thống 59
Hình 4.3: Giao diện Tạo lớp mới 59
Hình 4.4: Giao diện Danh sách sinh viên 60
Hình 4.5: Giao diện Hồ sơ sinh viên chi tiết 61
Hình 4.6: Giao diện Nhập điểm rèn luyện62
Hình 4.7: Giao diện Tổng hợp điểm rèn luyện 63
Hình 4.8: Giao diện danh mục hệ đào tạo 63
Hình 4.9: Giao diện danh mục chuyên ngành đào tạo 64
Trang 6LỜI CẢM ƠN
Sau hơn hai tháng tìm hiểu và thực hiện đề tài " Tìm hiểu Ext.NET framework và xây dựng phần mềm quản lý hồ sơ sinh viên cho trường cao đẳng kinh tế kỹ thuật Thái Nguyên" đã cơ bản hoàn thành Để đạt được kết quả này, em
đã nỗ lực hết sức đồng thời cũng nhận được rất nhiều sự quan tâm, giúp đỡ, ủng hộ của các thầy cô, bạn bè và gia đình
Em xin bày tỏ lòng biết ơn sâu sắc đến các thầy cô Khoa Công Nghệ Thông Tin - Trường Đại Học Công Nghệ Thông Tin và Truyền Thông - Thái Nguyên đã tận tình giảng dạy, trang bị cho em những kiến thức quý báu trong những năm học vừa qua
Em xin gửi lời cảm ơn chân thành đến cô Nguyễn Thị Tính đã tận tình giúp
đỡ, hướng dẫn em hoàn thành đề tài này
Tôi cũng xin chân thành cảm ơn tới tất cả các bạn đã tham gia đóng ý kiến giúp tôi hoàn thiện hơn đề tài này
Đề tài đã hoàn thành với một số kết quả nhất định, tuy nhiên vẫn không tránh khỏi thiếu sót Em rất mong nhận được sự thông cảm và đóng góp ý kiến của các thầy cô và các bạn
Trang 7LỜI CAM ĐOAN
Em xin cam đoan rằng số liệu và kết quả nghiên cứu trong đồ án này là trung thực và không trùng lặp với các đề tài khác Em cũng xin cam đoan rằng mọi sự giúp đỡ cho việc thực hiện đồ án này đã được cảm ơn và các thông tin trích dẫn trong đồ án đã được chỉ rõ nguồn gốc
Sinh viên
Bùi Văn Vương
Trang 8Chương 1.
CƠ SỞ LÝ THUYẾT 1.1 Phát biểu bài toán
Quy trình Quản lý hồ sơ sinh viên cho trường cao đẳng kinh tế kỹ thuật Thái Nguyên hiện nay là một công việc rất phức tạp bởi lượng sinh viên nhập trường hàng năm khá lớn, vào khoảng trên 1000 sinh viên với nhiều chuyên ngành khác nhau
Hiện tại quy trình Quản lý hồ sơ sinh viên của trường cao đẳng kinh tế kỹ thuật Thái Nguyên hiệu quả công việc không cao và gây chậm trễ trong các khâu tuyển sinh đầu vào Do đó để tin học hóa quy trình quản lý hồ sơ sinh viên cho trường thì ban lãnh đạo nhà trường đã quyết định lựa chọn giải pháp tin học hóa quy trình quản lý hồ sơ sinh viên bằng phần mềm để tiến tới tin học hóa hoàn toàn các quy trình quản lý tất cả các công việc quản lý đào tạo của nhà trường
Đó là lý do tôi lựa chọn xây dựng đề tài cho mình là “Tìm hiểu Ext.NET framework và xây dựng phần mềm quản lý hồ sơ sinh viên cho trường cao đẳng kinh tế kỹ thuật Thái Nguyên”
1.2.Tìm hiểu bài toán
1.2.1 Trường cao kinh tế kỹ thuật Thái Nguyên
Trang 9Làm thật và Đào tạo gắn liền với thực tiễn nhằm giải quyết đầu ra cho sinh viên” là mối quan tâm hàng đầu của nhà trường.
Với sự cố gắng và quyết tâm to lớn của Lãnh đạo Nhà trường, sự phấn đấu,
nỗ lực hết mình của đội ngũ cán bộ, giáo viên, nhân viên và sự gắn bó của toàn thể học sinh, sinh viên trong những năm qua, trường Cao đẳng kinh tế kĩ thuật Thái Nguyên luôn hoàn thành xuất sắc nhiệm vụ, đạt được nhiều kết quả và thành tích đáng khích lệ
Hình 1.1: Sơ đồ cấu trúc trường CĐ KT-KT Thái Nguyên
1.2.2 Quy trình nghiệp vụ thực tế
Quy trình nghiệp vụ quản lý phân hệ sinh viên của trường được thực hiện như sau:Danh sách sinh viên sau khi đã trúng tuyển vào trường cao đẳng kinh tế kỹ
Trang 10thuật sẽ được lưu vào một tệp tin Microsoft Excel bao gồm các thông tin cán nhân
cơ bản như Họ tên, ngày sinh, nơi sinh, CMND… và thông tin nhập học của sinh viên đó bao gồm Khoa, Ngành và Chuyên ngành đăng ký
Từ danh sách thí sinh trúng tuyển, nhà trường sẽ có kế hoạch để nhập học cho sinh viên và thu các giấy tờ cần thiết của sinh viên Mỗi sinh viên đến sẽ được yêu cầu cho cán bộ biết thông tin nhập học để cán bộ tiến hành nhập học cho sinh viên Sau đó cán bộ sẽ kết hợp với phần kế toán của nhà trường thu học phí kì đầu
và các loại tiền phí ban đầu như bảo hiểm, lệ phí giấy tờ Cán bộ sẽ thu luôn các giấy tờ cần thiết khác như học bạ, bản sao giấy khai sinh sau đó in ra hai phiếu biên lai thu giấy tờ và học phí giao cho sinh viên và giữ lại một bản cho nhà trường
Sau khi đã nhập học cho sinh viên thì nhà trường tiến hành phân lớp và thực hiện các quy trình quản lý sinh viên như các trường khác theo các quy định của bộ Giáo dục đào tạo cho đến lúc sinh viên tốt nghiệp ra trường
o
Hình 1.2.: Quy trình nghiệp vụ thực tế tại trường CĐKTKT Thái Nguyên
Các quy trình quản lý hồ sơ sinh viên hiện tại:
Nhập trường cho sinh viên
Phân lớp và lập mã quản lý
Trang 11 Quản lý hồ sơ, giấy tờ nộp
Quản lý điểm rèn luyện, khen thưởng, kỷ luật
Tổng hợp báo cáo danh sách, số lượng sinh viên
Thống kê các quá trình khen thưởng, kỷ luật
1.3 Tìm hiểu công nghệ xây dựng đồ án
1.3.1 Tổng quan về công nghệ ASP.NET
Giới thiệu
ASP.NET là một nền tảng ứng dụng web (web application framework) được phát triển và cung cấp bởi Microsoft, cho phép những người lập trình tạo ra những trang web động, những ứng dụng web và những dịch vụ web
Trang 12 Lần đầu tiên được đưa ra thị trường vào tháng 2 năm 2002 cùng với phiên bản 1.0 của NET framework, là công nghệ nối tiếp của Microsoft's Active Server Pages(ASP) ASP.NET được biên dịch dưới dạng Common Language Runtime (CLR), cho phép những người lập trình viết mã ASP.NET với bất kỳ ngôn ngữ nào được hỗ trợ bởi NET language.
Bên cạnh đó là một "phong cách" lập trình mới mà Microsoft đặt cho nó một tên gọi rất kêu: code behind Đây là cách mà lập trình viên xây dựng các ứng dụng Windows based thường sử dụng – giao diện và lệnh được tách riêng
Tuy nhiên, nếu bạn đã từng quen với việc lập trình ứng dụng web, đây đúng là một sự "đổi đời" vì bạn đã được giải phóng khỏi mớ lệnh HTML lộn xộn tới hoa cả mắt
Sự xuất hiện của ASP.NET làm cân xứng giữa quá trình xây dựng ứng dụng trên Windows và Web
Nó cũng cho phép chúng ta chuyển một ứng dụng trước đây viết chỉ để chạy trên Windows thành một ứng dụng Web khá dễ dàng Ví dụ cho các lớp trong thư viện này là WebControl, HTMLControl, …
Trang 13 Từ khoảng cuối thập niên 90, ASP (Active Server Page) đã được nhiều lập trình viên lựa chọn để xây dựng và phát triển ứng dụng web động trên máy chủ sử dụng hệ điều hành Windows.
ASP đã thể hiện được những ưu điểm của mình với mô hình lập trình thủ tục đơn giản, sử dụng hiệu quả các đối tượng COM: ADO (ActiveX Data Object) - xử lý dữ liệu, FSO (File System Object) - làm việc với hệ thống tập tin
Tuy nhiên, ASP vẫn còn tồn đọng một số khó khăn như Code ASP
và HTML lẫn lộn, điều này làm cho quá trình viết code khó khăn, thể hiện
và trình bày code không trong sáng, hạn chế khả năng sử dụng lại code
Bên cạnh đó, khi triển khai cài đặt, do không được biên dịch trước nên dễ bị mất source code
Thêm vào đó, ASP không có hỗ trợ cache, không được biên dịch trước nên phần nào hạn chế về mặt tốc độ thực hiện Quá trình xử lý Postback khó khăn, …
Đầu năm 2002, Microsoft giới thiệu một kỹ thuật lập trình Web khá mới mẻ với tên gọi ban đầu là ASP+, tên chính thức sau này là ASP.NET
Những ưu điểm của ASP.NET
ASP.Net cho phép bạn lựa chọn một trong các ngôn ngữ lập trình
mà bạn yêu thích: Visual Basic.Net, J#, C#,…
Trang ASP.Net được biên dịch trước Thay vì phải đọc và thông dịch mỗi khi trang web được yêu cầu, ASP.Net biên dịch những trang web động thành những tập tin DLL mà Server có thể thi hành nhanh chóng và hiệu quả
ASP.NET hỗ trợ mạnh mẽ bộ thư viện phong phú và đa dạng của Net Framework, làm việc với XML, Web Service, truy cập cơ sở dữ liệu
Trang 14qua ADO.Net,…
ASPX và ASP có thể cùng hoạt động trong 1 ứng dụng
ASP.Net sử dụng phong cách lập trình mới: Code behide Tách code riêng, giao diện riêng nên dễ đọc, dễ quản lý và bảo trì
Kiến trúc lập trình giống ứng dụng trên Windows.
Hỗ trợ quản lý trạng thái của các control
Tự động phát sinh mã HTML cho các Server control tương ứng với từng loại Browser
Hỗ trợ nhiều cơ chế cache
Triển khai cài đặt
Không cần lock, không cần đăng ký DLL
Cho phép nhiều hình thức cấu hình ứng dụng
Hỗ trợ quản lý ứng dụng ở mức toàn cục
Global.aspx có nhiều sự kiện hơn
Quản lý session trên nhiều Server, không cần Cookies
1.3.2 Giới thiệu công nghệ LINQ
Trang 15Hình 1.3.: Mô hình công nghệ LINQ
LINQ là gì?
LINQ (Language Integrated Query) là giải pháp lập trình hợp nhất, đem đến khả năng truy vấn dữ liệu theo cú pháp SQL trực tiếp trong C#, VB.NET…, áp dụng cho tất cả các dạng dữ liệu từ đối tượng đến CSDL SQL, Access, hay XML…
Xử lý thông tin hay dữ liệu là nhiệm vụ quan trọng nhất của bất kỳ phần mềm nào và một trong những trở ngại chính mà các nhà phát triển hiện nay phải đối mặt
là khác biệt giữa ngôn ngữ lập trình hướng đối tượng và ngôn ngữ truy vấn dữ liệu, vấn đề càng phức tạp với với sự xuất hiện của XML (eXtensible Markup
Trang 16Language- ngôn ngữ đánh dấu mở)
Hiện tại, cách phổ biến nhất để ứng dụng lấy dữ liệu từ các hệ CSDL là sử dụng SQL (Structure Query Language – ngôn ngữ truy vấn dữ liệu) SQL có cú pháp rất khác với những ngôn ngữ lập trình phổ dụng như C# hay VB.Net, do vậy lập trình viên phải nhọc công liên kết 2 thực thể khác biệt này với nhau trong mỗi
dự án phần mềm
Một vấn đề khác với SQL là nó chỉ dùng để truy vấn dữ liệu trong các CSDL dạng quan hệ Nếu muốn truy cập dữ liệu XML hay dạng khác (như trang HTML, email ), nhà phát triển lại phải sử dụng cú pháp truy vấn khác (XPath/ XQuery).Chú ý:
LINQ là ngôn ngữ hiện đại cho phép tác động truy vấn CSDL SQL một cách
tự nhiên LINQ hỗ trợ với:
- Môi trường: Net Framework 3.5
- Ngôn ngữ: C#, VB.NET…
- Truy vấn với: Đối tượng, CSDL MS SQL, ACCESS, XML…
Các dạng đối tượng trong LINQ
Ví dụ dưới đây, name là một mảng chuỗi, có Tom, Dick, Harry là phần tử: string [] names = {“Tom”, “Dich”, “Harry”};
IEnumerable<string> filter = System.Linq.Enumable.Where (names, n =>
n.Length >= 4);
Foreach (string n in filter)
Console.Write (n+”|”);
Trang 17// Result: Dick|Harry|
Ở ví dụ trên, yêu cầu là lấy ra các phần tử của mảng names có độ dài lớn hơn
4, có thể viết lại câu lệnh trên bằng một query expression
var filteredNames= names.Where (n=> n.Length >=4);
Một query operator không thay đổi dữ liệu đầu vào mà thực chất nó tạo ra một tập hợp mới Nó tượng tác một cách sáng tạo với nhiều kiểu tham số khác nhau Ví dụ như:
public static IEnumerable<TSource> Where<TSource>
(this IEnumerable<TSource> source, Func<TSource, bool> predicate)
public static IEnumerable<TSource> OrderBy<TSource, TKey>
(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector)public static IEnumerable<TResult> Select<TSource, TResult>
(this IEnumerable<TSource> source, Func<TSource, TResult> selector)
Hình 1.4.: Thực thi câu lệnh trong LINQ
Chú ý:
Ý nghĩa của các câu lệnh truy vấn của LINQ tới đối tượng Collection không
có gì khác biệt so với ý nghĩa câu lệnh truy vấn bằng ngôn ngữ SQL tới các đối
Trang 18tượng collection trong CSDL, chúng có sự tương đồng.
LINQ to XML
LINQ to XML bao gồm các đối tượng tương tác với CSDL XML một cách
dễ dàng, nó gồm 2 phần chính: XML DOM hay còn gọi là X-DOM và tập hợp của
10 kiểu câu lệnh truy vấn
X-DOM bao gồm các đối tượng: XDocument, XElement, XAttribute Một điều thú vị là với X-DOM người dùng có thể đọc, tìm duyệt, cập nhật và lưu một X-DOM không cần viết câu lệnh LINQ
Ngược lại, người dùng có thể sử dụng LINQ để truy vấn một DOM được tạo
ra theo tiêu chuẩn của W3C cũ Tuy nhiên, nó gây ra sự phiền toái và có giới hạn
Sự khác biệt đặc trưng của X-DOM là nó là LINQ- friendly Nghĩa là:
- Nó là phương thức tương tác tốt với tập hợp IEnumerable, mà người dùng
có thể truy vấn
- Cấu trúc của nó được thiết kế để người dùng có thể xây dựng một biểu đồ X-DOM trong một dự án LINQ
Trang 19Hình 1.5: LINQ to XML element
Trang 20Hình 1.6:Cấu trúc LINQ to XML
3.Mô hình hóa CSDL dùng LINQ TO SQL
Lớp thực thể từ CSDL
LINQ to SQL cho phép người dùng có thể sử dụng bất kỳ lớp nào để đặc tả
dữ liệu, nếu như sử dụng nó với các thuộc tính thích hợp Ví dụ như:
Trang 21tương ứng với các cột trong bảng Customer.
DataContext và câu lệnh LINQ
DataContext:
Khi bạn bấm nút “Save” bên trong màn hình thiết kế LINQ to SQL, Visual Studio sẽ lưu các lớp NET biểu diễn các thực thể và quan hệ bên trong CSDL mà chúng ta vừa mô hình hóa Cứ mỗi một file LINQ to SQL chúng ta thêm vào solution, một lớp DataContext sẽ được tạo ra, nó sẽ được dùng khi cần truy vấn hay cập nhật lại các thay đổi Lớp DataContext được tạo sẽ có các thuộc tính để biểu diễn mỗi bảng được mô hình hóa từ CSDL, cũng như các phương thức cho mỗi SPROC mà chúng ta đã thêm vào
Tập các phương thức cơ bản của DataContext
new DataContext(); Khởi tạo thể hiện cho DataContext
SubmitChange(); Hoàn tác thay đổi dữ liệu
GetTable();
GetTable<T>;
Trả về một bảng csdl kiểu ITable
Dispose(); Giải phóng bộ nhớ cho DataContext
Bảng 1.3.1: Tập các phương thức cơ bản quả DataContext
Trang 22 LINQ Query
Các câu lệnh truy vấn dùng cú pháp LINQ cơ bản rất giống với câu lệnh truy vấn dùng cú pháp SQL
Ví dụ: Với mô hình với CSDL Northwind
NorthwinDataContext db=new NorthwinDataContext();
var products = from p in db.Products
where p.category==2 select p;
Select * from Product where category = 2
var products = from p in db.Products
Values ("DLEAP", "DevLeap", )
Trang 23Update Customer LastName = ‘Thomas ‘
set where CustomerID == 11111
Delete from [dbo].[Order Details]
where [OrderID] = 10422 and [ProductID] = 26 and
Bảng 1.3.2 : So sách câu lện LINQ với SQL
Truy vấn LINQ sử dụng storedProcedure
Khi sử dụng LINQ, người dùng có thể viết các biểu thức truy vấn LINQ kiểu như “bảng 1.2”, LINQ sẽ thực thi các câu lệnh SQL động để có thể lấy ra các đối tượng khớp với câu lệnh truy vấn đó Ngoài ra, LINQ cho phép sử dụng các lớp DataContext, đó là cách khác để lấy các đối tượng trong CSDL bằng cách gọi thủ tục tương ứng:
Có thể kết hợp giữa các câu lệnh SQL động và các SPROCs với mô hình dữ liệu rõ ràng, mạnh mẽ và mềm dẻo Các bước sử dụng SPROCs:
Ánh xạ một SPROC trong CSDL vào một DataContext của LINQ
Kéo thả một SPROC trong CSDL vào cửa sổ Server Explorer trong SQL designer, một phương thức trong DataContext của LINQ to SQL sẽ được tạo thành tương ứng với thủ tục đó Mặc nhiên tên của phương thức được tạo ra trong lớp DataContext sẽ chính là tên SPROC
Ví dụ: gọi SPROC như một phương thức của lớp DataContext, với kiểu trả
về phụ thuộc vào Result type của SPROC.
Trang 24Thay vì lấy về một Collection (var productHistory) như trên, ta có thể gắn trực tiếp kết quả của một thủ tục vào đối tượng Data Object Ví dụ:
1.3.3 Ext.NET framework
Trang 25 Giới hiệu
Ext.NET là một thành phần khung (component framework) mã nguồn mở của ASP.NET (WebForm & MVC) được tích hợp bộ thư viện javascript Sencha Ext JS
Ext.NET bao gồm hơn 100 các điều khiển (controls) hiệu suất thực thi cao như Data Grid, Tree, Menu, Form, Advanced Layout và cơ chế giao tiếp AJAX
Ext.NET giúp cho việc xây dựng ứng ASP.NET WebForm với các giao diện đã được thiết kế sẵn để giúp cho giao diện người dùng trở nên dễ
sử dụng như ứng dụng trên nền Desktop (desktop-like application)
Việc thiết kế một ứng dụng web (web application) với các menu, tree, grid data trở nên rất đơn giản với Ext.NET Người dùng không cần viết các dòng CSS để style cho các thành phần trên một ứng dụng thường
có như textbox, combobox, toolbar, status bar, button,…
Quá trình phát triển
Ext.NET là bộ thư viện được xây dựng với phần lõi sử dụng bộ
Trang 26thư viện Sencha Ext JS Đây là bộ thư viện javascript hỗ trợ xây dựng các ứng dụng trên nền web rất mạnh với ưu điểm là tốc độ chạy cao và hỗ trợ giao diện mạnh mẽ.
Ext.NET được phát triển vào năm 2008 với tên mã ban đầu là Coolite Sau 2 năm phát triển phiên bản 1.2 được đổi tên thành Ext.NET và phát hành song song 2 phiên bản nguồn mở miễn phí và bản trả phí có hỗ trợ
Trang 27 Bộ thư viện Ext.NET được biên dịch thành tệp tin DLL(Dynamic
Linked Library)và được tải về tại địa chỉhttp://www.ext.net/download/
Hiện tại
Ưu điểm của Ext.NET
Hỗ trợ xây dựng ứng dụng kiểu desktop-like hiệu suất cao, ít tốn
Trang 28tài nguyên máy chủ và xử lý hoàn toàn trên nền AJAX ( Asynchronous JavaScript and XML).
Hỗ trợ Visual Studio 2008, 2010, ASP.NET 3.5 WebForm và MVC
Ext.NET được xây dựng trên bộ thư viện Sencha ExtJS do đó nó được thừa hưởng tất cả các ưu điểm của bộ thư viên này ví dụ như các data grid, các tree view, menu, charting…
Sử dụng thư viện Ext.NET
Tạo một solution web application mới, chọn ngôn ngữ là c#, sau
đó chọn Add new reference để thêm bộ thư viện của Ext.Net đã được biên dịch thành tệp DLL
Trang 29Hình 1.7 Thêm thư viện Ext.NET DLL vào project
Sau đó để thêm các component của Ext.NET vào toolbox, ta tạo một tab mới trong toolbox sau đó chọn Choose Items và duyệt đến thư mục chứa tệp DLL
Đây là các component của Ext.NET hỗ trợ cho việc thiết kế giao diện ứng dụng
Cột toolbox bên trái chứa các component của Ext.NET trong phần viết markup ta chỉ cần kéo các item cần dùng vào là sẽ tự sinh ra các đoạn markup tương ứng
1.4 Lí thuyết chung về phân tích thiết kế hướng đối tượng UML
Trang 30UML là ngôn ngữ mô hình hóa hợp nhất dùng để biểu diễn hệ thống Nói một cách đơn giản là nó dùng để tạo ra các bản vẽ nhằm mô tả thiết kế hệ thống Các bản vẽ này được sử dụng để các nhóm thiết kế trao đổi với nhau cũng như dùng để thi công hệ thống (phát triển), thuyết phục khách hàng, các nhà đầu tư v.v
UML có các thành phần sau: view (góc nhìn), diagram (bản vẽ), notations (ký hiệu), mechanisms (qui tắc, cơ chế)
Logical View: cung cấp góc nhìn về cấu trúc hệ thống, xem nó được tổ
chức như thế nào Bên trong nó có gì
Process View: cung cấp góc nhìn động về hệ thống, xem các thành phần
Trang 31trong hệ thống tương tác với nhau như thế nào.
Component View: Cũng là một góc nhìn về cấu trúc giúp chúng ta hiểu
cách phân bổ và sử dụng lại các thành phần trong hệ thống ra sao
Deployment View: cung cấp góc nhìn về triển khai hệ thống, nó cũng ảnh
hưởng lớn đến kiến trúc hệ thống
1.4.1 Diagram (Bản vẽ)
Diagram các bạn có thể dịch là sơ đồ Tuy nhiên ở đây chúng ta sử dụng từ bản
vẽ cho dễ hình dung Các bản vẽ được dùng để thể hiện các góc nhìn của hệ thống
Hình 1.9 Các bản vẽ trong OOAD sử dụng UML
Trong đó:
Use Case Diagram: bản vẽ mô tả về ca sử dụng của hệ thống
Class Diagram: bản vẽ này mô tả cấu trúc của hệ thống, tức hệ thống được cấu tạo từ những thành phần nào Nó mô tả khía cạnh tĩnh của hệ thống
Object Diagram: Tương tự như Class Diagram nhưng nó mô tả đến đối tượng thay vì lớp (Class)
Sequence Diagarm: là bản vẽ mô tả sự tương tác của các đối tượng trong
hệ thống với nhau được mô tả tuần tự các bước tương tác theo thời gian
Collaboration Diagram: tương tự như sequence Diagram nhưng nhấn mạnh về sự tương tác thay vì tuần tự theo thời gian
Trang 32 State Diagram: bản vẽ mô tả sự thay đổi trạng thái của một đối tượng Nó được dùng để theo dõi các đối tượng có trạng thái thay đổi nhiều trong hệ thống.
Activity Diagram: bản vẽ mô tả các hoạt động của đối tượng, thường được sử dụng để hiểu về nghiệp vụ của hệ thống
Component Diagram: bản vẽ mô tả về việc bố trí các thành phần của hệ thống cũng như việc sử dụng các thành phần đó
Deployment Diagram: bản vẽ mô tả việc triển khai của hệ thống như việc kết nối, cài đặt, hiệu năng của hệ thống v.v…
1.4.2 Notations (các ký hiệu)
Notations là các ký hiệu để vẽ, nó như từ vựng trong ngôn ngữ tự nhiên Bạn phải biết từ vựng thì mới ghép thành câu, thành bài được Chúng ta sẽ tìm hiểu kỹ các notations trong từng bản vẽ sau này Dưới đây là vài ví dụ về notation
Hình 1.10 Ký hiệu về Use Case
Hình 1.11 Ký hiệu về Class
Hình 1.12 Ký hiệu về Actor
1.4.3 Mechanisms (Rules)
Trang 33Mechanisms là các qui tắc để lập nên bản vẽ, mỗi bản vẽ có qui tắc riêng và bạn phải nắm được để tạo nên các bản vẽ thiết kế đúng.
1.5 Lí thuyết ngôn ngữ C#
1.5.1 Các thành phần cơ bản của chương trình C# đơn giản :
Để bắt đầu tìm hiểu ngôn ngữ C# và tạo tiền đề cho các chương sau, ta sẽ xem chương trình C# đơn giản sau:
- Nhấn Start/ nhấn All Program
- Chọn Microsoft Visual Studio 2008
- Từ menu File chọn New, chọn Project thì hình (1.1) xuất hiện
Hình 1.13: Tạo New Project trong C#
Trang 34C# là một ngôn ngữ rất đơn giản, với khoảng 80 từ khóa và hơn mười kiểu
dữ liệu dựng sẵn, nhưng C# có tính diễn đạt cao C# hỗ trợ lập trình có cấu trúc, hướng đối tượng, hướng thành phần (component oriented)
Trọng tâm của ngôn ngữ hướng đối tượng là lớp Lớp định nghĩa kiểu dữ liệu mới, cho phép mở rộng ngôn ngữ theo hướng cần giải quyết C# có những từ khóa dành cho việc khai báo lớp, phương thức hướng đối tượng: đóng gói, kế thừa, đa hình.Định nghĩa lớp trong C# không đòi hỏi tách rời tập tin tiêu đề với tập tin cài đặt như C++ Hơn thế C# hỗ trợ kiểu sưu liệu mới cho phép sưu liệu trực tiếp trong tập tin mã nguồn Đến khi biên dịch sẽ tạo tập tin sưu liệu theo định dạng XML
C@ hỗ trợ khái niệm giao diện, interface( tương tự java) Một lớp chỉ có thể kế thừa duy nhất một lớp cha nhưng có thể cài đặt nhiều giao diện
C# có kiểu cấu trúc, struct ( không giống C++) Cấu trúc là kiểu hạng nhẹ và
bị giới hạn Cấu trúc không thể thừa kế lớp hay được kế thừa nhưng có thể cài đặt giao diện
C# cung cấp những đặc trưng lập trình hướng thành phần như property, sự kiện và dẫn hướng khai báo (được gọi là attribute) Lập trình hướng component được hỗ trợ bởi CLR thông qua siêu dữ liệu (metadata) Siêu dữ liệu mô tả các lớp bao gồm các phương thức và thuộc tính, các thông tin bảo mật
Assembly là một tập hợp các tập tin mà theo cách nhìn của lập trình viên là các thư viện lien kết động (DLL) hay tập tin thực thi (EXE) Trong NET một assembly là một đơn vị của việc tái sử dụng, xác định phiên bản, bảo mật và phân phối CLR cung cấp một số các lớp để thao tác assembly
C# cũng cho truy cập trực tiếp bộ nhớ dung con trỏ kiểu C++, nhưng vùng
mã đó được xem như không an toàn, CLR sẽ không thực thi việc thu dọn rác tự động các đối tượng được tham chiếu bởi con trỏ cho đến khi lập trình viên tự giải phóng
1.5.1 Lớp, đối tượng và kiểu
Trang 35Bản chất của lập trình hướng đối tượng là tạo các kiểu mới Một kiểu biểu diễn một vật gì đó Giống với các ngôn ngữ lập trình hướng đối tượng khác, một kiểu trong C# cũng định nghĩa bằng từ khóa class (và được gọi là lớp) còn thể hiện của lớp được gọi là đối tượng.
Để định nghĩa một kiểu dữ liệu mới hay một lớp đầu tiên phải khai báo rồi sau đó mới định nghĩa các thuộc tính và phương thức của kiểu dữ liệu đó
Khai báo một lớp bằng cách sử dụng từ khóa class Cú pháp đầy đủ của khai
báo một lớp như sau:
[Thuộc tính] [Bổ sung truy cập] class <Định danh lớp> [:Lớp cơ sở]
Cũng như nhiều ngôn ngữ lập trình hướng đối tượng khác, kiểu trong C# được định nghĩa là một lớp (class), và các thể hiện riêng của từng lớp được gọi là đối tượng (object) Ngoài ra còn có các kiểu khác nhai ngoài kiểu lớp như kiểu liệt
kê, cấu trúc và kiểu ủy quyền (delegates)
Hai thành phần chính cấu thành một lớp là thuộc tính hay tính chất và phương thức hay còn gọi là hành động ứng xử của đối tượng Trong C# hành vi được định nghĩa như một phương thức thành viên của lớp Phương thức chính là các hàm được định nghĩa trong lớp Do đó, ta còn có thể gọi các phương thức thành viên là các hàm thành viên trong một lớp Các phương thức này chỉ ra rằng các hành động mà lớp có thể làm được cùng với cách thức làm hành động đó Thông thường, tên của phương thức thường được đặt theo tên hành động, ví dụ như DrawLine() hay GetString()
Trang 361.5.2 Phương thức
Các hành vi của một lớp được gọi là phương thức thành viên ( gọi tắt là phương thức) của lớp đó Một phương thức là một hàm (phương thức thành viên còn gọi là hàm thành viên) Các phương thức định nghĩa những gì mà một lớp có thể làm Cách khai báo, nội dung và cách sử dụng các phương thức hoàn toàn giống với Java và C++ Trong ví dụ trên có một phương thức đặc biệt là phương thức Main() là phương thức bắt đầu của một ứng dụng C#, có thể trả về kiểu void hay int Mỗi một chương trình (assembly) có thể có nhiều phương thức Main nhưng khi đó chỉ định phương thức Main() nào sẽ bắt đầu chương trình
1.5.3 Namespaces – Vùng tên
Console là một trong rất nhiều lớp trong bộ thư viện NET Mỗi lớp đều có tên và như vậy có hàng ngàn tên mà lập trình viên phải nhớ hoặc phải tra cứu mỗi khi sử dụng Vấn đề là phải làm sao giảm bớt lượng tên phải nhớ
Ngoài vấn đề phải nhớ quá nhiều tên ra, còn một nhận xét sau: một số lớp có mối liên hệ nào đó về mặt ngữ nghĩa, ví dụ như lớp Stack, Queue, Hashtabke…là các lớp cài đặt cấu trúc dữ liệu túi chứa Như vậy có thể nhóm những lớp này thành một nhóm và thay vì phải nhớ tên các lớp thì lập trình viên chỉ cần nhớ tên nhóm, sau đó có thể thực hiện việc tra cứu tên lớp trong nhóm nhanh chóng hơn Nhóm là một tên vùng trong C#
Một vùng tên có thể có nhiều lớp và cùng tên khác Nếu vùng tên A nằm trong vùng tên B, ta nói vùng tên A là vùng tên con của vùng tên B Khí đó các lớp trong vùng tên A được ghi như sau: B.A.Tên_lớp_trong_cùng_tên_A
System là vùng tên chứa nhiều lớp hữu ích cho việc giao tiếp với hệ thống hoặc các lớp công dụng chung như lớp Console, Math, Exception…
1.5.4 Trình gỡ rối của Visual Studio Net
Trình gỡ rối của VS Net rất mạnh, hữu ích Ba kĩ năng chủ yếu để sử dụng của trinh gỡ rối là:
Cách đặt điểm ngắt (breakpoint) và làm sao chạy cho đến điểm ngắt
Trang 37Làm thế nào để chạy từng bước và chạy vượt qua một phương thức.
Làm sao để quan sát và hiệu chỉnh giá trị của biến, dữ liệu thành viên…Cách đơn giản nhất để đặt điểm ngắt là bấm chuột trái vào phía lề trái, tại đó sẽ hiện lên một chấm đỏ
Hình 1.13 Minh họa một điểm ngắt
Trang 38Các dùng trình gỡ rối hoàn toàn giống với trình gỡ rối trong VS 6.0 Nó cho phép ta dừng lại ở một vị trí bất kì, cho ta kiểm tra giá trị tức thời bằng cách di chuyển chuột đến bị trí biến Ngoài ra, khi gỡ rối ta cũng có thể xem các biến thông qua cửa sổ Watch và Local.
Để chạy trong chế độ gỡ rối ra chọn Debug→Start hay nhấn F5, muốn chạy từng bước ta bấm F11 và chạy vượt qua một phương thức ta bấm F10
Phương thức
Hai thành phần chính cấu thành một lớp là thuộc tính hay phương thức Phương thức chính là các hàm thành viên trong một lớp Về bản chất, phương thức trong C# cũng giống như hàm trong C++ Một phương thúc có thể lấy bất kỳ số lượng tham số nào, Các tham số này thao sau bởi tên của phương thức và được bao bọc bên trong dấu ngoặc tròn ().Mỗi tham số phải khai báo kem với kiểu dữ liệu của nó.Bên trong thân của phương thức, các tham số này như những biến cục bộ, giống như là khai báo biến bên trong phương thức và khởi tạo giá trị bằng giá trị của tham số truyền vào
Trong ví dụ trên, chúng ta có một phương thức, nhưng đây là một phương thức đặc biệt đó là phương thức Main()
Khi chương trình thực thi, CLR gọi hàm Main() đầu tiên, hàm Main() là đầu vào của chương trình, và mỗi chương trình đều phải có một hàm Main()
Để khai báo một phương thức, ta phải xác định kiểu giá trị trả về, tên phương thức, và các tham số càn thiết cho phương thức thực hiện
Đối tượng:
Những kiểu dữ liệu chuẩn của C# như int, char, float, …là những kiểu dữ liệu giá trị, và các biến được tạo ta từ các kiểu dữ liệu này được lưu trên stack.Tuy nhiên, với các đối tượng kiểu dữ liệu tham chiếu thì được tạo ta trên heap, sử dụng
từ khóa new để tạo một đối tượng:
Thoigian t= new Thoigian();
Trang 39T thật sự không chứa giá trị của đối tượng Thoigian, nó chỉ chứa địa chỉ của đối tượng được tạo ta trên heap, do vậy t chỉ chứa tham chiếu đến một đối tượng.
Trang 40 Chú thích
Một chương trình tốt là một chương trình có các dòng chú thích kèm theo Các đoạn chú thích này sẽ không được biên dịch và cũng không tham gia vào chương trình Mục đích chính của nó là làm cho đoạn mã nguồn rõ ràng và dễ hiểu
Cũng giống như trong C++, trong ngôn ngữ C# chúng ta có 2 cách chú thích
Để chú thích trên một dòng thì ta bắt đầu bằng 2 ký tự “//” Khi trình biên dịch gặp
Toán tử ‘.’
Toán tử ‘.’ Được sử dụng để truy cập đến phương thức hay thuộc tính trong một lớp, và ngăn cách giữa tên lớp đến một namespace Việc thực hiện này được viết theo hướng từ trên xuống (hay từ cao xuống thấp), trong đó mức đầu tiên là namespace, rồi đến lớp, đến phương thức,…tuy nhiên nếu ta đã khai báo namespace rồi thì ta hoàn toàn có thể bỏ qua không gian tên
Từ khóa using
Để cho chương trình trở lên gọn hơn, không mất thời gian phải viết từng namespace cho từng đối tượng, C# cung cấp từ khóa using, sau từ khóa này là một namespace với mô tả đầy đủ trong cấu trúc phân cấp của nó
Ví dụ: