CHƯƠNG 1
CƠ SỞ LÝ THUYẾT
I. C# và kiến trúc NET
I.1. Tổng quan
ASP.NET là viết tắt của cụm từ Active Server Pages. NET (.NET ở đây là .NET framework). ASP.NET là phương pháp tổ chức hay khung tổ chức (framework) để thiết lập các ứng dựng cho mạng dựa trên CLR (Common Language Runtime) chứ không phải là một ngôn ngữ lập trình. Tóm lại ASP.NET là một công nghệ.
Giữa ASP.NET và ASP cổ điển tuy có cùng tên họ nhưng ta không thể đánh đồng chúng với nhau bởi ASP.NET cung cấp một phương pháp làm việc hoàn toàn khác ASP. Mặc dù vậy ASP.NET và ASP vẫn có thể sống chung dưới một mái nhà IIS.
ASP có thể hỗ trợ đến 25 ngôn ngữ Lập trình : C#, VB.NET, Trong đó C# là một ngôn ngữ lập trình mới, và được biết đến với hai lời chào:
Nó được thiết kế riêng để dùng cho Microsoft's .NET Framework (Một nền khá mạnh cho sự phát triển, triển khai, hiện thực và phân phối các ứng dụng)
Nó là một ngôn ngữ hoàn toàn hướng đối tượng được thiết kế dựa trên kinh nghiệm của các ngôn ngữ hướng đối tượng khác.
ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CÔNG NGHỆ THÔNG TIN Tel. (84-511) 736 949, Fax. (84-511) 842 771 Website: itf.ud.edu.vn, E-mail: cntt@edu.ud.vn LUẬN VĂN TỐT NGHIỆP KỸ SƯ NGÀNH CÔNG NGHỆ THÔNG TIN MÃ NGÀNH : 05115 ĐỀ TÀI : XÂY DỰNG HỆ THỐNG QUẢN LÝ CÔNG VĂN CƠ QUAN BAN NGÀNH Mã số : 06TLT-212 Ngày bảo vệ : 10/06/2008 SINH VIÊN : NGUYỄN VIỆT TUẤN LỚP : 06TLT CBHD : TS. NGUYỄN THANH BÌNH ĐÀ NẴNG, 06/2008 LỜI CẢM ƠN Tôi chân thành cảm ơn cán bộ công nhân viên Trung Tâm Công Nghệ Thông Tin Phú Yên, nhất là anh Nguyễn Chí Sỹ phó giám đốc Trung Tâm Công Nghệ Thông Tin Phú Yên đã gần gủi và tận tình giúp đỡ tôi trong suốt thời gian làm luận văn tốt nghiệp. Ngoài ra tôi còn chân thành cảm ơn Thầy TS. Nguyễn Thanh Bình trong thời gian qua đã thường xuyên quan tâm, có những buổi gặp mặt trao đổi hết sức bổ ích, giúp tôi có thêm một số kiến thức cần thiết kịp thời bổ sung những kiến thức còn thiếu trong bài luận văn tốt nghiệp này. Một lần nữa “em xin cảm ơn thầy”. LỜI CAM ĐOAN Tôi xin cam đoan : Những nội dung trong luận văn này là do tôi thực hiện dưới sự hướng dẫn trực tiếp của thầy TS. Nguyễn Thanh Bình và các cán bộ Trung tâm Công Nghệ Thông Tin Phú Yên trực tiếp là ThS Nguyễn Chí Sỹ. Mọi tham khảo dùng trong luận văn đều được trích dẫn trong tài liệu: phân tích và thiết kế Hệ Thống Thông Tin theo UML của TS. Dương Kiều Hoa – Tôn Thất Hoà An, Beginning ASP.NET 2.0 in C# 2005 From Novice to Professional - Hew MacDonald. Mọi sao chép không hợp lệ, vi phạm quy chế đào tạo, hay gian trá, tôi xin chịu hoàn toàn trách nhiệm. Sinh viên, Nguyễn Việt Tuấn MỤC LỤC CHƯƠNG 1 CƠ SỞ LÝ THUYẾT C# và kiến trúc NET Tổng quan ASP.NET là viết tắt của cụm từ Active Server Pages. NET (.NET ở đây là .NET framework). ASP.NET là phương pháp tổ chức hay khung tổ chức (framework) để thiết lập các ứng dựng cho mạng dựa trên CLR (Common Language Runtime) chứ không phải là một ngôn ngữ lập trình. Tóm lại ASP.NET là một công nghệ. Giữa ASP.NET và ASP cổ điển tuy có cùng tên họ nhưng ta không thể đánh đồng chúng với nhau bởi ASP.NET cung cấp một phương pháp làm việc hoàn toàn khác ASP. Mặc dù vậy ASP.NET và ASP vẫn có thể sống chung dưới một mái nhà IIS. ASP có thể hỗ trợ đến 25 ngôn ngữ Lập trình : C#, VB.NET, Trong đó C# là một ngôn ngữ lập trình mới, và được biết đến với hai lời chào: Nó được thiết kế riêng để dùng cho Microsoft's .NET Framework (Một nền khá mạnh cho sự phát triển, triển khai, hiện thực và phân phối các ứng dụng) Nó là một ngôn ngữ hoàn toàn hướng đối tượng được thiết kế dựa trên kinh nghiệm của các ngôn ngữ hướng đối tượng khác. Mối quan hệ giữa C# và .NET C# được xem là một trình biên dịch hướng .NET, nghĩa là tất cả các mã của C# luôn luôn chạy trên trên môi trường .NET Framework. Sự phụ thuộc của C# với .NET được thể hiện qua: Cấu trúc và các lập luận C# được phản ánh các phương pháp luận của .NET ngầm bên dưới. Trong nhiều trường hợp, các đặc trưng của C# thậm chí được quyết định dựa vào các đặc trưng của .NET, hoặc thư viện lớp cơ sở của .NET. Một điều quan trọng chúng ta nên biết C# là một ngôn ngữ độc lập. Nó được thiết kế để có thể sinh ra mã đích trong môi trường .NET, nó không phải là một phần của .NET bởi vậy có một vài đặc trưng được hỗ trợ bởi .NET nhưng cũng có những đặc trưng C# hỗ trợ mà .NET không hỗ trợ (chẳng hạn như quá tải toán tử). Common Language Runtime Trung tâm của .NET frameword.rk là môi trường thời gian chạy, gọi là Common Language Runtime (CLR) hoặc .NET runtime. Mã của các điều khiển trong CLR thường là mã có quản. Tuy nhiêu, trước khi được thực thi bởi CLR, mã được phát triển trong C# (hoặc các ngôn ngữ khác) cần phải được biên dịch.Quá trình biên dịch trong .NET xảy ra theo hai bước: Dịch mã nguồn thành Microsoft Intermediate Language (MS-IL) Dịch IL thành mã nền cụ thể bởi CLR Mới nhìn có vẻ hơi dài dòng. Nhưng thật sự, một tiến trình dịch hai mức là rất cần thiết, bởi vì trạng thái của Microsoft Intermediate Language (mã có quản) là chìa khóa cung cấp nhiều lợi ích trong .NET. Các lợi ích của mã có quản: Độc lập nền, Sự cải tiến trong thực thi, Tương hoạt giữa các ngôn ngữ Intermediate Language Intermediate Language hoạt động như là bản chất của .NET Framework. Là lập trình viên C#, chúng ta nên biết rằng mã C# sẽ luôn được dịch sang Intermediate Language trước khi nó được thực thi (thật vậy, trình biên dịch C# chỉ dịch sang mã có quản). Chúng ta hãy cùng khám phá các tính năng chính của IL, bất kì ngôn ngữ nào hướng .NET cũng sẽ hỗ trợ các đặc tính chính của IL. Những đặc tính chính của Intermediate Language đó là: Hướng đối tượng và dùng interfaces Sự tách biệt giữa kiểu giá trị và kiểu tham chiếu Định kiểu mạnh Quản lỗi thông qua các ngoại lệ Sự dụng các thuộc tính Các lớp .NET Framework Có lẽ một trong những lợi ích lớn nhất của viết mã có quản, ít nhất là đối với một nhà phát triển, đó là bạn có thể sử dụng thư viện lớp cơ sở của .NET. Thư viện lớp cơ sở của .NET là một tập hợp lớn các lớp mã có quản được viết bởi Microsoft, những lớp này cho phép bạn thao tác rất nhiều các tác vụ sẵn có trong Windows. Bạn có thể tạo các lớp của mình từ các lớp có sẵn trong thư viện lớp cơ sở của .NET dựa trên cơ chế thừa kế đơn. Thư viện lớp cơ sở của .NET rất trực quan và rất dễ sử dụng. Ví dụ, để tạo một tiến trình mới, bạn đơn giản gọi phương thức Start() của lớp Thread. Để disable một TextBox, bạn đặt thuộc tính Enabled của đối tượng TextBox là false. Thư viện này được thiết kế để dễ xài như là Visual Basic và Java. Tất nhiên là nó dễ sử dụng hơn các lớp của C++: các vỏ bọc ngoài các hàm API thô như GetDIBits(), RegisterWndClassEx(), và IsEqualIID(). Mặt khác, những nhà phát triển C++ luôn dễ dàng truy cập đến các API, ngược lại những nhà phát triển Visual Basic và Java đã bị giới hạn trong những thao tác hệ thống cơ bản mà ngôn ngữ đã từng ngôn ngữ đã cung cấp sẵn. Cái mới của thư viện lớp cơ sở .NET là kết hợp tính đơn giản của các thư viện Visual Basic và Java với hầu hết các đặc tính trong các hàm Windows API. Có nhiều đặc tính của Windows không sẵn có trong các lớp của thư viện .NET, trong trường hợp đó bạn cần phải gọi các hàm API, những đặc tính này thường là các đặc tính lạ, ít sử dụng. Những đặc tính thông dụng đều đã được hỗ trợ đầy đủ trong thư viện lớp của .NET. Và nếu bạn muốn gọi một hàm API, .NET gọi là "platform-invoke", cơ chế này luôn bảo đảm tính đúng đắn của kiểu dữ liệu, vì vậy thao tác này không khó hơn việc gọi trực tiếp từ mã C++, nó được hỗ trợ cho cả C#, C++, và VB.NET. WinCV, một tiện ích Windows-based, bạn có thể dùng để tham khảo các lớp, cấu trúc, giao diện, kiểu liệt kê trong thư viện .NET base class. Một cách tổng quát .NET base classes bao gồm các vấn đề: Các đặc tính lõi cung cấp bởi IL Hỗ trợ Windows GUI và controls Web Forms Data Access Directory Access File system và registry access Networking và web browsing .NET attributes và reflection Truy xuất vào hệ điều hành Windows COM interoperability Một cách tình cờ, hầu hết các thư viện lớp cơ sở của .NET được viết bằng C#! Tạo các ứng dụng .NET bằng C# C# có thể dùng để tạo các ứng dụng console: các ứng dụng thuần văn bản chạy trên DOS window. Hầu như bạn chỉ tạo các ứng dụng console khi cần kiểm tra các thư viện lớp, hoặc cho các tiến trình daemon Unix/Linux. Tất nhiên, bạn cũng có thể dùng C# để tạo các ứng dụng dùng cho các công nghệ tương thích .NET. Trong phần này, chúng ta xem qua về các kiểu ứng dụng khác nhau có thể tạo ra bằng C#. Tạo các ứng dụng ASP.NET ASP là một công nghệ của Microsoft dùng để tạo các trang web có nội dung động. Một trang ASP thực chất là một file HTML có nhúng các khối server-side VBScript hay JavaScript. Khi một trình duyệt khách yêu cầu một trang ASP page, web server sẽ sinh ra mã HTML, xử lí các server-side script khi chúng đến. Thường thì các script sẽ truy cập vào một cơ sở dữ liệu để lấy dữ liệu, và biểu diễn trên trang HTML. ASP là cách đơn giản nhất để tạo các ứng dụng browser-based. ASP tất nhiên cũng có một vài hạn chế. Trước tiên, các trang ASP thỉnh thoảng trở nên rất chậm bởi vì mã server-side được thông dịch thay vì được biên dịch. Thứ hai, các file ASP khó bảo trì bởi vì chúng không có cấu trúc; mã server-side ASP và HTML được trộn lẫn với nhau. Thứ ba, ASP đôi khi kho phát triển bởi nó không quan tâm đến bẫy lỗi và kiểm tra kiểu. Cụ thể, nếu bạn dùng VBScript và muốn bẫy lỗi trên các trang của bạn, bạn phải dùng câu lệnh On Error Resume Next, và cho phép tất cả các thành phần gọi thông qua một Err.Number để chắc rằng tất cả đều tốt. Các đặc tính của ASP.NET Trước tiên, và có lẽ là quan trọng nhất, các trang ASP.NET là các trang có cấu trúc. Có nghĩa là mỗi trang là thực tế là một lớp được thừa kế từ lớp .NET System.Web.UI.Page, và có thể ghi đè một tập các phương thức sẽ dùng trong thời gian sống của trang web (bạn hãy tưởng tượng rằng những sự kiện này như là anh em bà con với các sự kiện OnApplication_Start và OnSession_Start trong file global.asa của ASP cũ.) Bởi vì bạn có thể chuyển các thao tác của một trang thành các sự kiện sáng nghĩa hơn, chính vì thể mà các trang ASP.NET dễ hiểu hơn. Một điểm mạnh khác là các trang ASP.NET có thể được tạo trong VS.NET, cùng chung môi trường với các thành phần luận lí và dữ liệu sẽ được dùng trong các trang web này. Một nhóm đề án VS.NET, hoặc solution, chứa tất cả các file liên quan đến một ứng dụng. Hơn thế nữa bạn có thể bẫy lỗi các trang ASP của bạn ngay trong trình thiết kế; trước đây, thật là khó khăn để có thể cấu hình InterDev và các đề án web server để thực hiện bẫy lỗi. Rõ ràng, đặc tính ASP.NET's code-behind giúp các bạn có thể dễ dàng cấu trúc một trang web. ASP.NET cho phép bạn tách biệt các chức năng server-side của trang thành một lớp, biên dịch lớp đó thành một DLL, và đặt DLL đó vào một thư mục bên dưới phần HTML. Một code-behind chi phối đỉnh của một trang web tương đương với file DLL của nó. Khi một trình duyệt yêu cầu trang, web server phát ra các sự kiện trong lớp của page's code-behind DLL. Cuối c ... c void Delete() { try { string[] fieldname = FieldName(); string xsql = "delete from " + _table + " where " + fieldname[_icondition[0]] + "=" + obj_proc.valuefield(fieldname[_icondition[0]], _condition[0]); obj.ExecuteSQL(System.Data.CommandType.Text, xsql); } catch (Exception err) { Console.WriteLine("An exception was thrown. Message was: " + err.Message); } } public string[] FieldName() { try { string xsql = "select * from " + _table; return obj.FieldName(System.Data.CommandType.Text, xsql); } catch (Exception err) { Console.WriteLine("An exception was thrown. Message was: " + err.Message); return null; } } } } Các lớp xử lý liên quan Tạo kết nối với cầu nối OLEDB public class Access:GenericDataAccess { public Access(string strCon) { this.strCon =strCon; } public override System.Data.IDbConnection GetConnection() { return new System.Data.OleDb.OleDbConnection(); } public override System.Data.IDbCommand GetCommand() { return new System.Data.OleDb.OleDbCommand(); } } Tạo chuổi kết nối với các hệ quản trị cơ sở dữ liệu sealed public class Factory { public enum Provider { sql, access, db2, oracle } public Factory() { // // TODO: Add constructor logic here // } public static string GetValue(string idString) { return System.Configuration.ConfigurationSettings.AppSettings[idString].ToString(); } public static GenericDataAccess FactoryMethod() { string provider; provider = GetValue("provider"); switch ((Provider)System.Enum.Parse(typeof(Provider), GetValue("provider"))) { case Provider.sql: return new Sql(GetValue("ConnectionStringSQL")); case Provider.access: return new Access(GetValue("ConnectionStringAccess")); default: throw new ArgumentException("Khong ton tai Provider!"); } } } public class Sql:GenericDataAccess { public Sql(string strCon) { this.strCon =strCon; } public override System.Data.IDbConnection GetConnection() { return new System.Data.SqlClient.SqlConnection(); } public override System.Data.IDbCommand GetCommand() { return new System.Data.SqlClient.SqlCommand(); } Gọi truy vấn QSL truy cập vào cơ sở dữ liệu abstract public class GenericDataAccess { protected IDbConnection con; protected IDbCommand cmd; protected string strCon; public GenericDataAccess() { this.strCon=""; } abstract public IDbConnection GetConnection(); abstract public IDbCommand GetCommand(); public void Prepare() { con=GetConnection(); cmd=GetCommand(); con.ConnectionString=strCon; con.Open(); cmd.Connection=con; } public virtual void ExecuteSQL(CommandType commandType, string sql) { try { Prepare(); cmd.CommandType = commandType; cmd.CommandText = sql; cmd.ExecuteNonQuery(); con.Close(); } catch (System.Data.OleDb.OleDbException err) { Console.WriteLine(err); } } public DataSet ExecuteReaderSQL(CommandType commandType, string sql) { IDataReader idr; DataTable dat = new DataTable(); DataSet das = new DataSet(); ; Prepare(); cmd.CommandType = commandType; cmd.CommandText = sql; idr = cmd.ExecuteReader(); dat.Load(idr); das.Tables.Add(dat); idr.Close(); con.Close(); return das; } public string[] FieldName(CommandType commandType, string sql) { IDataReader idr; Prepare(); cmd.CommandType = commandType; cmd.CommandText = sql; idr = cmd.ExecuteReader(); idr.Read(); string[] t = new string[idr.FieldCount]; for (int j = 0; j < idr.FieldCount; j++) { object l = idr.GetName(j); t[j] = l.ToString(); } idr.Close(); con.Close(); return t; } } Ưu và khuyết điểm: Ưu điểm: Đáp ứng được yêu cầu linh động việc sử dụng cơ sở dữ liệu của người sử dụng. Hệ thống này còn giúp người lập trình giảm bớt gánh nặng trong việc xây dựng kết nối cơ sở dữ liệu. Người lập trình chỉ cần gọi, truyền tham số, và gọi yêu cầu, mọi công đoạn khác sẽ được hệ thống tự động xử lý và thực thi yêu cầu của người lập trình. Khuyết điểm: Do hệ thống này được xây dựng bằng cách tự động sản sinh ra câu lệnh SQL dựa vào những thông tin mà người dùng định nghĩa, rồi thông qua cầu nối OLEDB để thực thi yêu cầu của người dùng. Chính vì điều đó sẽ bị mắt một số lỗi như chuỗi kết nối quá dài, hoặc dễ bị hacker lợi dụng, tuy hệ thống đã được xây dựng chống hack dữ liệu. Do khả năng, và thời gian có hạn nên tôi chưa thể xây dựng được một hệ thống vừa ý. Nếu có thời gian tôi sẽ phát triển thêm một số tính năng mà tôi chưa làm được vào hệ thống này. Như: tự động tạo quan hệ giữa các Table, hay chống hack dữ liệu một cách triệt để. Tạo ra tính bảo mật cao trong việc nhập dữ liệu của người dùng. Khả năng ứng dụng trên thực tế Hệ thống “Quản lý công văn cơ quan ban ngành” được xây dựng dựa trên nền tảng của công nghệ ASP.NET sử dụng ngôn ngữ C# kết hợp với mẫu thiết kế, tạo nên một hệ thống được xây dựng trên mô hình 3 lớp: lớp dữ liệu, lới xử lý và lớp giao diện. Nó tạo ra sự độc lập của hệ thống, giúp cho người lập trình dễ dàng trong việc sữa chữa cũng như nâng cấp trong hệ thống, bởi lẽ lớp giao diện và lớp dữ liệu hoàn toàn tách bạch với nhau, chúng được liên kết với nhau thông qua lớp xử lý. Nên việc thay đổi bất kỳ nội dung gì trong hay lớp này đều không ảnh hưởng đến nhau (Hình 26. Luồng dữ liệu trong mô hình 3 lớp), cái mà công nghệ lập trình truyền thống không thể làm được. Hình 31. Luồng dữ liệu trong mô hình 3 lớp Ngoài ra hệ thống cũng được xây dựng dựa trên mô hình Web Server-client, mọi thao tác đều được xử lý trên máy chủ, giảm thiểu các thao tác cài đặt cho người dùng khi muốn truy cập vào hệ thống. Giao diện chương trình được xây dựng rất thân thiện, với các chức năng đơn giản dễ sử dụng. Nên có khả năng sử dụng trong thực tế cao. KẾT LUẬN Với hệ thống “Quản lý công văn cơ quan ban ngành” mà em đã xây dựng, đã đáp ứng được một số yêu cầu về thực tế, như: linh động trong việc sử dụng hệ quản trị cơ sở dữ liệu, với việc xây dựng thành các module riêng lẽ, giúp người lập trình viên dễ sữa và dễ phát triển. Tuy nhiên việc xây dựng đề tài vẫn chưa đạt được mục tiêu đã đặt ra, một số chức năng vẫn còn thiếu, như tính bảo mật về dữ liệu vẫn chưa cao, vẫn chưa đặt tả hết được các yêu cầu đặt ra., chính vì điều đó em vẫn chưa xây dựng được một hệ thống có tính thực tế cao, vẫn còn rất nhiều khuyết điểm, nhiều vấn đề cần được giải quyết như: vẫn chưa giải quyết được một số lỗi trong hệ thống, vẫn chưa đảm bảo tính bảo mật trong việc quản lý luân chuyển công văn, Tiến trình phát triển của hệ thống vẫn chưa thật sự đúng khoa học, một số công đoạn vẫn xơ xài, có những công đoạn bị bỏ qua như công đoạn kiểm thử phần mềm. Điều đó làm cho việc ứng dụng vào thực tế của hệ thống không cao. Hoàn thiện hệ thống đang có, phát triển trở thành một hệ thống “Luân chuyển công văn nội bộ giữa các cơ quan ban ngành”, hệ thống này có cơ chế giống hoạt động như hệ thống mà tôi đã xây dựng. nhưng có cơ chế hoặt động lớn hơn. Đó là, ngoài tính hoặt động độc lập, hệ thống còn cho phép người dùng trong hệ thống có thể trao đổi công văn với các Hệ thống khác thông qua môi trường mạng Internet hoặt mạng WAN. Ý tưởng rộng hơn mà tôi muốn xây dựng ở đây đó là xây dựng được một “Hệ thống luân chuyển công văn từ Trung ương tới địa phương” dựa vào công nghệ Web-service mà tôi đã trình bày ở trên, tạo thành một hệ thống được sử dụng chung cho cả nước. Em hy vọng sau này có thể hoàn thiện những chức năng mà hệ thống còn thiếu, và phát triển hệ thống này thành hệ thống “Luân chuyển công văn giữa các cơ quan ban ngành” với các tiêu chí: đó sẽ là một hệ thống chuẩn trong việc luân chuyển công văn cho các cơ quan ban ngành, đảm bảo tốt tính bảo mật về thông tin cũng như tránh mất mát về dữ liệu. Kính mong Thầy, Cô hướng dẫn, góp ý giúp em có thể hoàn thiện kiến thức, kịp thời bổ sung những thứ còn thiếu trong hệ thống, để em có thể xây dựng được một hệ thống có tính thực tế cao như ý tưởng mà em đã đặt ra.TÀI LIỆU THAM KHẢO Matthew MacDonald. Beginning ASP.NET 2.0 in C# 2005: From Novice to Professional, 2006, 1185 tr Jason Butler and Tony Caudill. ASP.NET Database Programming Weekend Crash Course™, 2001, 409 tr. Tom Fischer, John Slater,Pete Stromquist, Chaur G. Wu, Rowland Gosling, Andrew Krowczyk, Tim Rostad. Professional C# Design Patterns Applied, 2004, 176 tr. GS TS. Phan Huy Khánh Công nghệ phần mềm, Xuất bản nội bộ, 1999 TÓM TẮT LUẬN VĂN TỐT NGHIỆP Trong hệ thống các cơ quan ban ngành ở nước ta, việc trao đổi công văn và lưu trữ công văn luôn được xử lý băng các văn bản, giấy tờ, gây khó khăn trong việc lưu trữ cũng như tìm kiếm. Trên thực tế đã có rất nhiều phần mềm ra đời để giải quyết vấn đề đó. Nhưng tất cả chúng đều được xây dựng một cách độc lập, không có tính thống nhất chung. Gây khó khăn trong việc quản lý. Từ tình hình thực tế đó, em đã hình thành ý tưởng làm sao để xây dựng một hệ thống “quản lý công văn của cơ quan, ban ngành” chuẩn mực, có thể sử dụng ở bất kỳ một đơn vị, cơ quan, tổ chức. Ngoài ra hệ thống này có thể trao đổi dữ liệu với hệ thống khác một cách linh hoặt, tạo thành một thể thống trong việc trao đổi công văn từ trung ương cho đến địa phương. Với ý tưởng như thế, em đã bắt đầu tiến hành phân tích bài toán, đưa ra các vấn đề cần giải quyết. Nhưng ý tưởng chỉ là ý tưởng, khi đi vào xây dựng bài toán thực tế, nhiều vấn đề đã nảy sinh. Nên em vẫn chưa thể hiện được ý tưởng, mới giải quyết được một số yêu cầu của bài toán, như: tính linh động về dữ liệu, dễ sữa chữa và dễ phát triển, giao diện thân thiện, các tính năng đơn giản, dễ sử dụng. Hệ thống vẫn còn nhiều vấn đề cần phải giải quyết, như tính bảo mật của hệ thống, xử lý các lỗi biệt lệ,... vẫn chưa thể hiện hết được ý tưởng, còn gặp nhiều vướng mắt khi vào ứng dụng. Chính vì thế về mặt bằng chung thì chất lượng hoặt động của hệ thống vẫn chưa cao, vẫn còn kém rất nhiều so với các hệ thống hiện có trên thị trường. Hy vọng sau này em có thể xây dựng được một hệ thống giống như ý tưởng mà em đã đặt ra.
Tài liệu đính kèm: