1. Trang chủ
  2. » Luận Văn - Báo Cáo

Quản lý chương trình thu lệ phí trước bạ tại thái nguyên

69 452 1

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 69
Dung lượng 19,96 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Thư viện lớp, một thành phần chính khác của .NET Framework là một tập hợp hướng đối tượng của các kiểu dữ liệu được dùng lại, nó cho phép có thể phát triển những ứng dụng từ những ứng dụ

Trang 1

MỤC LỤC LỜI CẢM ƠN Error! Bookmark not defined.

LỜI MỞ ĐẦU 3

CHƯƠNG 1 5

CƠ SỞ LÝ THUYẾT 5

1.1 Giới thiệu NET và C# 5

1.2 Ứng dụng Windows với NET 6

1.3 Truy cập cơ sở dữ liệu với NET 9

1.3.1 Tổng quan về ADO.NET 9

1.3.2 Sử dụng các Database Connection 12

1.3.3 Sử dụng commands 16

1.3.4 Truy cập dữ liệu sử dụng Data Reader, DataSet, DataTable 17

1.4 Sử dụng thủ tục lưu trữ stored procedure trong SQL Server 24

1.5 Lập trình với mô hình 3 lớp 27

CHƯƠNG 2 30

KHẢO SÁT VÀ PHÂN TÍCH HỆ THỐNG 30

2.1 Quy định chung trong quản lý thu lệ phí trước bạ 30

2.1.1 Đối tượng chịu lệ phí trước bạ 30

2.1.2 Đối tượng nộp lệ phí trước bạ 31

2.1.3 Mẫu tờ khai 31

2.1.4 Hồ sơ kê khai 35

2.2 Hướng dẫn nộp lệ phí trước bạ 36

2.2.1 Trình tự, thủ tục kê khai nộp lệ phí trước bạ 36

2.2.2 Nguyên tắc áp giá tính lệ phí trước bạ 38

2.3 Bài toán quản lý thu lệ phí trước bạ 39

2.3.1 Kết quả khảo sát ban đầu 39

2.3.2 Công tác quản lý thu lệ phí trước bạ tại chi cục thuế 39

2.4 Yêu cầu và cách giải quyết bài toán 40

2.5 Phân tích hệ thống về chức năng 43

2.5.1 Sơ đồ chức năng nghiệp vụ - BFD 43

2.5.2 Sơ đồ luồng dữ liệu - DFD 44

2.6 Phân tích hệ thống về dữ liệu 47

2.6.1 Chuẩn hóa các lược đồ quan hệ 47

2.6.2 Mô hình cơ sở dữ liệu 51

Trang 2

CHƯƠNG 3 62

THIẾT KẾ VÀ CÀI ĐẶT CHƯƠNG TRÌNH 62

3.1 Thiết kế các form 62

3.2 Thiết kế cơ sở dữ liệu 67

3.3 Thiết kế các báo cáo 70

3.4 Một số đoạn mã trong chương trình 66

KẾT LUẬN 71

TÀI LIỆU THAM KHẢO 73

Trang 3

LỜI MỞ ĐẦU

Công nghệ thông tin được ứng dụng trong nhiều lĩnh vực khác nhau như trong quản lý, thương mại điện tử, nghiên cứu khoa học.v.v Từ đó yêu cầu đặt ra việc quản lý và lưu trữ thông tin trong các cơ quan hành chính nhà nước là vô cùng quan trọng, cùng với sự phát triển của chính phủ điện từ, công nghệ thông tin ngày càng được áp dụng rộng rãi hơn trong các cơ quan nhà nước như: cơ quan thuế, trường học, ngân hàng…

Ở nước ta trong các ban ngành các cơ quan nhà nước hiện nay hầu hết đã và đang đưa công nghệ thông tin vào công tác quản lý Từ tình hình cũng như nhu cầu thực tế thấy rằng, tại cơ quan thuế đặc biệt là tại các chi cục thuế quận, huyện thường xuyên phải tiếp nhận hồ sơ kê khai cũng như nộp thuế của người dân Từ đó đòi hỏi làm thế nào để quản lý việc thu thuế sao cho nhanh chóng và hiệu quả nhất? và có thể trợ giúp cho cán bộ thuế thực hiện việc thu thuế, tiếp nhận, giải quyết hồ sơ kê khai của người nộp thuế như thế nào? Từ những yêu cầu đó cho thấy cần thiết kế một chương trình quản lý để quản lý việc thu nộp thuế

Tại các chi cục thuế quận, huyện thường xuyên phải tiếp nhận và xử lý nhiều loại hồ sơ kê khai thuế khác nhau, trong các loại đó có việc thu lệ phí trước bạ áp dụng với các tài sản như: đất đai, nhà cửa, các tài sản (ô tô, xe máy, tàu thuyền,….) Từ những nhu cầu này cho thấy cần phải thiết kế chương trình

để quản lý việc thu lệ phí trước bạ

Trong đợt làm đồ án tốt nghiệp này với sự hướng dẫn của cô giáo ThS Đỗ Thị Bắc, em đã tìm hiểu khảo sát và thiết kế chương trình Quản Lý Thuế Trước

Bạ để quản lý việc thu lệ phí trước bạ tại các chi cục thuế quận, huyện

Đồ án được chia làm 3 chương:

Chương 1: Cơ sở lý thuyết

Chương 2: Phân tích và thiết kế hệ thống

Trang 4

Chương 3: Cài đặt chương trình

Mặc dù đã cố gắng hoàn thiện chương trình với mục đích triển khai trong thực tế, chương trình này còn phải hoàn thiện thêm một số tính năng cũng như nghiệp vụ xử lý khác khi được chạy thử nghiệm Do đó sẽ không tránh khỏi sai sót và một số lỗi về nghiệp vụ cũng như trong ứng dụng xử lý Rất mong nhận được những ý kiến đóng góp của các Thầy Cô giáo cũng như của các sinh viên

để đề tài này trở thành một dự án thực sự được triển khai trong thực tế

Trang 5

CHƯƠNG 1

CƠ SỞ LÝ THUYẾT 1.1 Giới thiệu NET và C#

C# là một ngôn ngữ lập trình mới đượ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 như Java, C++…

Đây là một ngôn ngữ độc lập đượ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# không hỗ trợ và ngược lại

.NET Framework có hai thành phần chính: Common Language Runtime (CLR) và thư viện lớp NET Framework CLR là nền tảng của NET Framework Runtime như là một agent quản lý mã nguồn khi nó được thực thi, cung cấp các dịch vụ cốt lõi như: quản lý bộ nhớ, quản lý tiểu trình, và quản lý từ xa Ngoài ra

nó còn thúc đẩy việc sử dụng kiểu an toàn và các hình thức khác của việc chính xác mã nguồn, đảm bảo cho việc thực hiện được bảo mật và mạnh mẽ Khái niệm quản lý mã nguồn là nguyên lý nền tảng của runtime Mã nguồn mà đích tới runtime thì được biết như là mã nguồn được quản lý (managed code) Trong khi

đó mã nguồn mà không có đích tới runtime thì được biết như mã nguồn không được quản lý (unmanaged code)

Thư viện lớp, một thành phần chính khác của NET Framework là một tập hợp hướng đối tượng của các kiểu dữ liệu được dùng lại, nó cho phép có thể phát triển những ứng dụng từ những ứng dụng truyền thống command-line hay những ứng dụng có giao diện đồ họa (GUI) đến những ứng dụng mới nhất được cung cấp bởi ASP.NET, như là Web Form và dịch vụ XML Web

Mặc dù C# và NET được thiết kế để phát triển web, nhưng chúng vẫn hỗ trợ mạnh mẽ cho cái gọi là ứng dụng "fat client", các ứng dụng có thể được cài đặt trên một máy người dùng cuối Hỗ trợ này gọi là Windows Forms

Một Windows Form là câu trả lời của NET cho VB 6 Form Dùng để thiết

Trang 6

kế một giao diên window sinh động, chỉ đơn giản kéo các control từ vào trên Windows Form Để xác định cách xử của window, cần viết các thủ tục quản lí sự kiện cho form controls Một đề án Windows Form được dịch thành một EXE phải được cài đặt trong một môi trường ở máy tính người dùng cuối Giống như các kiểu đề án NET khác, đề án Windows Form được hỗ trợ cho cả VB.NET và C#

Trong lúc những ứng dụng kinh doanh phát triển ngày nay được thiết kế bởi World Wide Web, những client cổ điển vẫn tồn tại và sẽ luôn luôn được yêu cầu

Nó là một ứng dụng Intranet sử dụng bên trong một tổ chức hay là mẫu phần mềm cài đặt trên máy để bàn Những chức năng mạnh và kinh nghiệm của người

sử dụng như một môi trường cung cấp sẽ luôn luôn được yêu cầu cho những kiểu ứng dụng Web form thì tuyệt vời nhưng chúng không thể so sánh kinh nghiệm của người sử dụng thông qua một client tốt

.NET cung cấp một khả năng để tạo những client mạnh thực thi bên trong Common Language Runtime Bất kỳ ngôn ngữ NET nào cũng có thể sử dụng Window Form để xây dựng Windows Applications Những ứng dụng này được truy cập đến NET FrameWork của các namespace và đối tượng

1.2 Ứng dụng Windows với NET

Để hiểu sự khác nhau giữa rich client và thin client, bởi vì nó là điểm cốt yếu để hiểu tại sao Windows applications được xem như rich clients Một thin client không yêu cầu quá nhiều cài đặt và hình thể trước khi sử dụng những ứng dụng của nó Rich clients đôi lúc gọi là fat clients, yêu cầu một vài mẫu cài đặt và hình thể trên máy client Các rich client khi chạy trên client, thì chúng có thể đạt được thuận lợi đầy đủ của môi trường và năng lượng xử lý của máy client Vấn

đề này cho phép các nhà phát triển tạo một sự tác động qua lại và thân thiện với người dùng hơn

Trước NET, các nhà phát triển có vài chọn lựa trong việc xây dựng một ứng dụng Window Họ có thể có nhiều cách đi xuống lớp API và xây dựng một ứng dụng C hay C++ sử dụng Win32 API Việc này là công việc rất khó và chi phối thời gian và không có nhiều cơ sở nào có thể bỏ ra nhiều thời gian để phát

Trang 7

triển ứng dụng tại tầng lớp này Bởi vì thế, Các môi trường mở ra để cung cấp một giao diện dễ dàng hơn cho Win32 API và cho phép các nhà phát triển có nhiều chọn lựa hơn Microsoft Foundation Classes (MFC) là một thư viện lớp sử dụng C++ được gói gọn trong Win32 API Visual Basic là một công cụ phát triển ứng dụng nhanh chóng, sử dụng một nguồn gốc của ngôn ngữ lập trình Basic cho phép mọi nhà phát triển tạo các ứng ụng Window tương đối nhanh chóng Tuy nhiên, các giải pháp này đều không sử dụng NET Framework hay CLR

.NET Framework chứa một tầng lớp năng xuất mới gói gọn trong Win32 API, và giống như MFC và Visual Basic, nó cho phép phát triển hiệu suất cao hơn và dễ dàng hơn của các ứng dụng Window Môi trường này được gọi là Windows Forms; nó cho phép các nhà phát triển tạo một tương tác cấp cao và các ứng dụng Window lớn sử dụng bất kỳ ngôn ngữ NET nào sẽ được xem xét môi trường Windows Forms trong chương này

Bằng cách sử dụng NET để tạo các ứng dụng Window, các nhà phát triển biết được nhiều tính năng mới và hay được cung cấp bởi NET Tất cả namespaces và classes trong NET Framework có thể sử dụng bên trong một NET rich client Thêm vào đó, ứng dụng có thể được phát triển trong bất kỳ ngôn ngữ NET nào; các thành phần khác nhau của ứng dụng có thể sử dụng các ngôn ngữ khác nhau

Hầu như tất cả chức năng đang xem xét trong chương này không được giải thích thông qua các lớp chứa bên trong System.Windows.Forms namespace Đây

là một namespaces lớn chứa nhiều lớp và các namespace phụ vào, tất cả chúng làm cho ta dễ dàng tạo các ứng dụng Window Biểu đồ bên dưới hiển thị vài lớp thừa hưởng từ System.Windows.Forms.Control Đối tượng này hành động như một lớp cơ sở cho đa số lớp trong namespace này, và chứa nhiều chức năng cơ bản của giao diện hiển thị và tương tác với người dùng

Hầu hết mọi ứng dụng Windows Form mở rộng chức năng của System.Windows.Forms Chức năng cơ bản của lớp Form không thể tạo một cửa

sổ có thể sống và tương tác trong môi trường Windows một cách đúng đắn Đây

là một thuận lợi như một điểm khởi đầu và bằng việc mở rộng lớp Form và thêm

Trang 8

các control tuỳ biến và các bộ điều khiển sự kiện tuỳ biến, một ứng dụng rất hữu ích được tạo để có thể tương tác với người dùng và dữ liệu hiện tại thông qua một giao diện người dùng tinh vi

.NET Framework lấy khái niệm thừa kế và cho phép một nhà phát triển sử dụng nó để phát triển các ứng dụng Windows Forms Một đối tượng Form có thể thừa kế từ một đối tượng Form khác, vì thế chiếm được sự truy cập đến tất cả Buttons, TextBoxes, và Menus Nó là một đặc trưng rất mạnh trong NET khi sử dụng để giảm số lượng mã yêu cầu cho việc tạo các cửa sổ và màn hình giống nhau Khái niệm này gọi visual inheritance

Một Form luôn luôn thừa kế từ System.Windows.Forms Có nghĩa là nó có thể truy cập đến tất cả thành phần dữ liệu và các phương thức của lớp Form cơ bản Việc thực thi sự thừa kế yêu cầu một nhà phát triển thừa hưởng đối tượng Form từ một lớp Form tuỳ biến thay cho System.Windows.Forms Đó là nguyên nhân tất cả control và thuộc tính trong lớp Form tuỳ biến truyền qua các lớp Form được tạo mới

Tuy nhiên, cấp truy cập của các control khác nhau phải được hiểu, giống như cấp truy cập của các thừa kế chuẩn Một thành phần dữ liệu private thì không thể được truy cập bởi bất kỳ đối tượng nào bên ngoài đối tượng ban đầu Vì thế, nếu một control không được đánh dấu là protected hay public, lớp thừa hưởng sẽ không tham khảo đến control hay override bất kỳ phương thức của control

Sử dụng thừa kế trực quan có thể rất có lợi khi thừa kế tạo ra một số lượng lớn màn hình mà phải có một thiết kế giống nhau và/hoặc làm các chức năng như nhau Một ví dụ điển hình là một màn hình thực thể dữ liệu Nếu ứng dụng của không cần nhập các mẫu tin cá nhân, mà còn thông tin automobie, sử dụng thừa

kế trực quan để định nghĩa một kiểu thông thường phải là một sự chọn lựa tốt Hiển nhiên, sẽ muốn một màn hình trông giống nhau, nhưng vài control sẽ thay đổi

Các ứng dụng Windows Forms bao gồm nhiều contrrol khác nhau Các control này có thể đơn giản như các control Button và TextBox, hay chúng có thể tinh vi và phức tạp hơn như các control Charting và TreeView .NET framework

Trang 9

có nhiều control sẳn sàng kết hợp với các ứng dụng Windows Forms, và có hàng trăm control được dùng trong các phát triển ứng dụng NET tuỳ biến Chính vì thế, sẽ xem xét cách tất cả control hoạt động và tương tác tại một cấp cao hơn Các control trong Windows Forms bao gồm những cái mà một nhà phát triển sẽ muốn tìm trong một thư viện lớp được thiết kế cho các giao diện người dùng đồ hoạ:

ADO (Microsoft's ActiveX Data Objects) là một thư viên của các thành phần COM đã từng được ca ngợi trong một vài năm trở lại đây Phiên bản hiện tại là 2.7, các thành phần chủ yếu của ADO là Connection, Command, Recordset,

và các Field object Một connection có thể mở cơ sở dữ liệu, một vài dữ liệu được chọn vào một recordset, bao gồm các trường, dữ liệu này sau đó có thể thao tác, cập nhập lên server, và connection cần phải được đóng lại ADO cũng giới thiệu một disconnected recordset, cái được dùng khi không muốn giữ kếp nối trong một thời gian dài

Trang 10

Có một vài vấn đề với ADO đó là sự không hài lòng về địa chỉ, sự cồng kềnh của một disconnected recordset Hỗ trợ này không cần thiết với sự tiến hoá của tin học "web-centric", vì vậy nó cần được loại bỏ Có một số giống nhau giữa lập trình ADO.NET và ADO (không phải ở cái tên), vì thế việc chuyển từ ADO không qua khó khăn Hơn thế nữa, nếu dùng SQL Server, có một bộ các quản mới cho viêc thao tác bên ngoài cơ sở dữ liệu

ADO.NET chứa hai không gian tên cơ sơ dữ liệu - một cho SQL Server, và một cái khác cho các cơ sở dữ liệu được trình bày thông qua một giao diện OLE

DB Nếu cơ sở dữ liệu được chọn là một bộ phận của OLE DB, có thể dễ dàng kết nối với nó từ NET - chỉ cần dùng các lớp OLE DB và kết nối thông qua các driver cơ sở dữ liêu hiện hành của

Các Namespace(không gian tên) Các không gian tên sau chỉ ra các lớp và các giao diện được dùng cho việc truy xuất dữ liệu trong NET:

 System.Data - Các lớp truy xuất dữ liệu chung

 System.Data.Common - Các lớp dùng chung bởi các data provider khác nhau

 System.Data.OleDb - Các lớp của OLE DB provider

 System.Data.SqlClient - Các lớp của SQL Server provider

 System.Data.SqlTypes - Cac kiểu của SQL Server

Các lớp dùng chung: ADO.NET chứa một số lớp được dùng không quan tâm là đang dùng các lớp của SQL Server hay là các lớp của OLE DB Các lớp trong không gian tên System.Data được liệt kê sau đây:

 DataSet - Đối tượng này chứa một bộ các DataTable, có thể bao gồm quan hệ giữa các bảng, và nó được thiết kế cho truy xuất dữ liệu không kết nối

 DataTable - Một kho chứa dữ liệu Một DataTable bao gồm một hoặc nhiều DataColumns, và khi được tạo ra nó sẽ có một hoặc nhiều DataRows chứa dữ liệu

 DataRow - Một bộ giá trị, có bà con với một dòng trong bảng cơ sở

dữ liệu, hoặc một dòng của bảng tính

Trang 11

 DataColumn - Chứa cá định nghĩa của một cột, chẳng hạn như tên và kiểu dữ liệu

 DataRelation - Một liên kết giữa hai DataTable trong một DataSet

Sử dụng cho khóa ngoại và các mối quan hệ chủ tớ

 Constraint - Định nghĩa một qui tắt cho một DataColumn (hoặc môt

bộ các cột dữ liệu), như các giá trị là độc nhất

 Sau đây là hai lớp được tìm thấy trong không gian tên System.Data.Common:

 DataColumnMapping - Ánh xạ tên của một cột từ cơ sở dữ liệu vào tên của một cột trong một DataTable

 DataTableMapping - Ánh xạ tên của một bảng từ cơ sở dữ liệu vào một bảng trong một DataSet

Các lớp cơ sở dữ liệu chuyên biệt: Bổ sung cho các lớp dùng chung ở trên, ADO.NET có một số các lớp dữ liệu chuyên biệt được đưa ra dưới đây Các lớp này thực thi một bộ các giao diện chuẩn được định nghĩa trong không gian tên System.Data, cho phép sử dụng các lớp có cùng kiểu giao diện Ví dụ cả hai lớp SqlConnection và OleDbConnection thực thi giao diện IDbConnection

 SqlCommand, OleDbCommand - Một vỏ bọc của các câu lệnh SQL hoặc các lời gọi stored procedure

 SqlCommandBuilder, OleDbCommandBuilder - Một lớp sử dụng các câu lệnh SQL (chẳng hạn như các câu lệnh INSERT, UPDATE, vàDELETE) từ một câu lệnh SELECT

 SqlConnection, OleDbConnection - Kết nối với cơ sở dữ liệu Giống như một ADO Connection

 SqlDataAdapter, OleDbDataAdapter - Một lớp giữ các câu lệnh select, insert, update, và delete, chúng được sử dụng để tạo một DataSet và cập nhật Database

 SqlDataReader, OleDbDataReader - Chỉ đọc, kết nối với data reader

 SqlParameter, OleDbParameter - Định nghĩa một tham số cho một stored procedure

Trang 12

 SqlTransaction, OleDbTransaction - Một giao tiếp cơ sở dữ liện, được bọc trong một đối tượng

Một đặc tính quan trọng của các lớp ADO.NET là chúng được thiết kế để làm việc trong môi trường không kết nối, đóng một vai trò quan trọng trong thế giới "web-centric" Nó hiện được dùng để kiến trúc một server (chẳng hạn như mua sách qua mạng) để kết nối một server, lấy một vài dữ liệu, và làm việc trên những dữ liệu này trên PC khách trước khi kết nối lại và truyền dữ liệu trở lại để

xử lí

ADO 2.1 giới thiệu recordset không kết nối, nó cho phép dữ liệu có thể được lấy từ một cơ sở dữ liệu, được truyền cho trình khách để xử lí Nó thường khó xử dụng do cách ứng xử không kết không được thiết kế từ đâu Các lớp ADO.NET thì khác - Sql/OleDb DataReader được thiết kết cho để dùng cho các

cơ sở dữ liệu offline

Trang 13

liệu Cũng có thể sử dụng User ID pwd=QSPassword - và đây là password cho người dùng đó .NET SDK là một bộ các cơ sở dữ liệu giống nhau, và user/password này được liên kết và được thêm vào trong quá trình cài đặt các ví

dụ NET Cũng có thể dùng Password database=Northwind - Cái này mô tả loại

dữ liệu để kết nối - mỗi tiến trình SQL Server có thể đưa ra một vài loại dữ liệu khác nhau

SQL Server có một chế độ bảo mật khác - nó có thể dùng chế độ bảo mật của Windows, vì thế các khả năng truy cập của Windows có thể truyền cho SQL Server Với lựa chọn này có thể bỏ đi các vị trí uid và pwd trong chuỗi kết nối,

và thêm vào Integrated Security=SSPI

Sử dụng hiệu quả các Connection : Một cách tổng quát, khi sử dụng các tài nguyên "hiếm" trong NET, chẳng hạn như các kết nối cơ sở dữ liệu, các cửa sổ,hoặc các đối tượng đồ họa, tốt hơn hết nên đảm bảo rằng các tài nguyên này luôn phải được đóng lại sau khi đã sử dụng xong Dù vậy các nhà thiết kết của NET có thể làm điều này nhờ trình thu gom rác, nó luôn làm sau bộ nhớ sau một khoảng thời gian nào đó, tuy nhiên nó nên được giải phóng càng sớm càng tốt

Rõ ràng là khi viết mã truy xuất một cơ sở dữ liệu, việc giữ một kết nối càng ít thời gian càng tốt để không làm ảnh hưởng đến các phần khác Trong nhiều tình huống tiêu cực, nếu không đóng một kết nối có thể khoá không cho các người dùng khác truy nhập vào các bảng dữ liệu đó, một tác hại to lớn đối với khả năng thực thi của ứng dụng Việc đóng một kết nối cơ sở dữ liệu có thể coi là bắt buộc,

vì thế ứng dụng này chỉ ra cách cấu trúc mã để giảm thiểu các rủi ro cho một mã nguồn mở Có hai cách để đảm bảo rằng các kết nối cơ sở dữ liệu được giải phóng sau khi dùng

Trang 14

 Tùy chọn thứ nhất để đảm bảo rằng các tài nguyên được dọn sạch là

sử dụng các khối lệnh try…catch…finally, và đảm bảo rằng đã đóng các kết nối trong khối lệnh finally

 Với khối kết nối có thể giải phóng bất kì tài nguyên nào đã dùng Vấn đề duy nhất trong phương thức này là phải bảo đảm rằng có đóng các kết nối - rất là dễ quên việc thêm vào khối finally, vì vậy một phong cách lập trình tốt rất quan trọng

 Ngoài ra, có thể mở một số tài nguyên (chẳng hạn hai kết nối cơ sở

dữ liệu và một file) trong một phương thức, vì vậy đôi khi các khối try…catch…finally trở nên khó đọc Có một cách khác để đảm bảo rằng các tài nguyên được dọn dẹp - sử dụng khối câu lệnh

Tùy chọn hai - Sử dụng khối câu lệnh

 Trong lúc phát triển C#, phương thức NET's dọn dẹp các đối tượng khi chúng không còn được tham chiếu nữa sử dụng các huỷ bất định trở thành một vấn đề nóng hổi Trong C++, ngay khi một đối tượng rời khỏi tầm vực, khối huỷ tử của nó sẽ tự động được gọi Nó là một điều rất mới cho các nhà thiết cớ các lớp sử dụng tài nguyên, khi một huỷ tử được sử dụng để đóng các tài nguyên nếu các người dùng quên làm điều đó Một huỷe tử C++ được gọi bất kì khi nào một đối tượng vượt quá tầm vực của nó - vì vậy khi một ngoại lệ được phát ra

Trang 15

mà không được chặn, tât cả các hủy tử cần phải được gọi

 Với C# và các ngôn ngữ có quản khác, tất cả đều tự động, các khối huỷ tử định trước được thay thế bởi trình thu gom rác, cái được dùng

để tháo các tài nguyên tại một thời điểm trong tương lai Chúng mang tính bất định, nghĩa là sẽ không biết trước được khi nào thì việc

đó sẽ xảy ra Nếu quên không đóng một kết nối cơ sở dữ liệu có thể

là nguyên nhân gây ra lỗi khi chạy trong NET Mã sau đây sẽ giải thích cách để sử dụng giao diện IDisposable để giải phóng tài nguyên khi thoát khỏi khối using

using ( SqlConnection conn = new SqlConnection ( source ) )

 Khi lập trình nên dùng cả hai tùy chọn trên.Ở nhưng chỗ cần các tài nguyên tốt nhất là sử dụng mệnh đề using(), dù vậy cũng có thể sử dụng câu lệnh Close(), nếu quên không sử dụng thì khối lệnh using

sẽ đóng lại Không gì có thể thay thế được một bẫy ngoại lệ tốt, vì thế tốt nhất dùng trộn lẫn hai phương thức như ví dụ sau:

Trang 16

 Thêm vào đó, nếu một ngoại lệ xảy ra bên trong khối using, thì phương thức IDisposable.Dispose sẽ được gọi để bảo đảm rằng tài nguyên được giải phóng, điều này đảm bảo rằng kết nối cơ sở dữ liệu luôn luôn được đóng lại Điều này làm cho mã dễ đọc và luôn đảm bảo rằng kết nối luôn được đóng khi một ngoại lệ xảy ra

 Cuối cùng, nếu ta viết các lớp bao bọc một tài nguyên có lẽ luôn thưc hiện giao diện IDisposable để đóng tài nguyên Bằng cách dùng câu lệnh using() nó luôn đảm bảo rằng tài nguyên đó sẽ được dọn dẹp

1.3.3 Sử dụng commands

Một command là một một kiểu đơn giản, một chuỗi lệnh SQL được dùng để truy xuất dữ liệu Một command có thể là một stored procedure, hoặc là tên của một bảng sẽ trả về

Các mệnh đề SqlCommand và OleDbCommand thường được gọi là CommandType, chúng được dùng để định nghĩa các mệnh đề SQL, một stored

Trang 17

procedure, hoặc một câu lệnh SQL

Khi thực thi một stored procedure, cần truyền các tham số cho procedure bắt đầu bằng @, dù vậy có nhiều cách để cài giá trị tham số

Đã định nghĩa các command, và muốn thực thi chúng Có một số cách để phát ra các statement, dựa vào kết quả mà muốn command đó muốn trả về Các mệnh đề SqlCommand và OleDbCommand cung cấp các phương thức thực thi sau:

- ExecuteNonQuery() – Thực thi các command không trả về kết quả gì cả

- ExecuteReader() – Thực thi các command và trả về kiểu IDataReader

- ExecuteScalar() – Thực thi các command và trả về một giá trị đơn

Lớp SqlCommand cung cấp thêm một số phương thức sau ExecuteXmlReader() Thực thi các command trả về một đối tượng XmlReader, các đối tượng được dùng đề xem xét các XML được trả về từ cơ sở dữ liệu

1.3.4 Truy cập dữ liệu sử dụng Data Reader, DataSet, DataTable

Một data reader là cách đơn giản nhất và nhanh nhất để chọn một vài dữ liệu từ một nguồn cơ sơ dữ liệu, nhưng cũng ít tính năng nhất Có thể truy xuất trực tiếp một đối tượng data reader – Một kết quả được trả về từ một đối tượng SqlCommand hoặc OleDbCommand từ việc gọi một phương thức ExecuteReader() – có thể là một đối tượng SqlCommand, một đối tượng SqlDataReader, từ một đối tượng OleDbCommand là một OleDbDataReader Lớp DataSet được thiết kế như là một thùng chứa các dữ liệu không kết nối

Nó không có khái niệm về các kết nối dữ liệu Thật vậy, dữ liệu được giữ trong một DataSet không quan tâm đến nguồn cơ sở dữ liệu – nó có thể chỉ là những mẫu tin chứa trong một file CSV, hoặc là những đầu đọc từ một thiết bị đo lường Một DataSet bao gồm một tập các bảng dữ liệu, mỗi bảng là một tập các cột

dữ liệu và dòng dữ liệu Thêm vào đó là các định nghĩa dữ liệu, có thể định nghĩa các link giữa các DataSet Mối quan hệ phổ biến giữa các DataSet là parent-child relationship Một mẫu tin trong một bảng (gọi là Order) có thể liên kết với nhiều mẫu tin trong bảng khác (Bảng Order_Details) Quan hệ này có thể được định nghĩa và đánh dấu trong DataSet

Trang 18

Một data table rất giống một bảng cơ sở dữ liệu vật lí – nó bao gồm một bộ các cột với các thuộc tính riêng, và có thể không chứa hoặc chứa nhiều dòng dữ liệu Một data table có thể định nghĩa một khóa chínhm, bao gồm một hoặc nhiều cột, và cũng có thể chứa các ràng buộc của các cột Tất cả các thông tin đó được thể hiện trong schema

Một đối tượng DataTable (cũng như một DataColumn) có thể có một số các

mở rộng riêng liên quan đến thuộc tính của nó Tập hợp này có thể nằm trong thông tin user-defined gắng liền với đối tượng Ví dụ, một cột có thể đưa ra một mặt nạ nhập liệu dùng để giới hạn các giá trị hợp lệ cho cột đó – một ví dụ về số phúc lợi xã hội Mĩ Các thuộc tính mở rộng đặc biệt quan trọng khi dữ liệu được cấu trúc ở một tầng giữa và trả về cho client trong một số tiến trình có thể lưu một chuẩn hợp lệ (như min và max) cho các số của các cột

Khi một bảng dữ liệu được tạo ra, có thể do việc chọn dữ liệu từ một cơ sở

dữ liệu, đọc dữ liệu từ một file, hoặc truy xuất thủ công trong mã, tập hợp Rows được dùng để chứa giá trị trả về

Tập hợp Columns chứa các thể hiện DataColumn có thể được thêm vào bảng này Những định nghĩa schema của dữ liệu, ví dụ như kiểu dữ liệu, tính khả rỗng, giá trị mặc định, vân vân Tập Constraints có thể được tạo ra bởi các ràng buộc khóa chính hoặc tính độc nhất

Thông tin về sơ đồ của một bảng dữ liệu có thể được sử dụng trong việc biểu diễn của một bảng dữ liệu bằng DataGrid Điều khiển DataGrid sử dụng các thuộc tính như kiểu dữ liệu của cột để quyết định điều khiển gì dùng cho cột đó Một trường bit trong cơ sở dữ liệu có thể được biểu diễn như một checkbox trong DataGrid Nếu một cột được định nghĩa trong cơ sở sơ đồ dữ liệu như là một NOT NULL, lựa chọn này được lưu trữ trong DataColumn vì vậy nó sẽ được kiểm tra khi người dùng cố gằng di chuyển khỏi một dòng

Data Columns

 Một đối tượng DataColumn định nghĩa các thuộc tính của một cột trong DataTable, chẳng hạn như kiểu dữ liệu của cột đó, chẳng hạn cột là chỉ đọc, và các sự kiện khác Một cột có thể được tạo bằng mã,

Trang 19

hoặc có thể được tạo tự động trong thời gian chạy

 Khi tạo một cột, tốt hơn hết là nên đặt cho nó một cái tên; nếu không thời gian chạy sẽ tự động sinh cho một cái tên theo định dạng Columnn, n là mố sô tự động tăng

 Kiểu dữ liệu của một cột có thể cài đặt bằng cách cung cấp trong cấu trúc của nó, hoặc bằng cách cài đặt thuộc tính DataType Một khi đã load dữ liệu vào một bảng dữ liệu không thể sửa lại kiểu dữ liệu của một cột – nếu không sẽ nhận một ngoại lệ

 Các cột dữ liệu có thể được tạo để giữ các kiểu dữ liệu của NET Framework sau:

 Các thuộc tính sau có thể được cài đặt trong một DataColumn:

ColumnMapping Cho biết cách một cột ánh xạ sang XML khi

một DataSet được lưu bằng cách gọi phương thức DataSet.WriteXml

ColumnName Tên của cột Nó tự động tạo ra trong thời gian

Trang 20

 Một trong những điều quan trọng nhất của một DataRow là phiên bản của nó Điều đó cho phép nhận được những giá trị khác nhau cho một dòng cụ thể Các phiên bản được mô tả trong bảng sau: DataRow

Version Value

Mô tả

Current Giá trị sẵn có của cột Nếu không xảy một hiệu

chỉnh nào, nó sẽ mang giá trị gốc Nếu có một hiệu chỉnh xảy ra, giá trị sẽ là giá trị hợp lệ cuối cùng được cập nhật

Default Giá trị mặc định (nói một cách khác, giá trị mặc

định được cài đặt cho cột)

Original Giá trị của cột trong cơ sở dữ liệu vào lúc chọn

Nếu phương thức AcceptChanges DataRow được gọi, thì giá trị này sẽ được cập nhật thành giá trị hiện tại

Proposed Khi các thay đổi diễn ra trên một dòng nó có thể

truy lục giá trị thay đổi này Nếu gọi BeginEdit() trên mộg dòng và tạo các thay đổi, mỗi một cột giữ một giá trị cho đến khi phương thức EndEdit() hoặc CancelEdit() được gọi

Trang 21

 Mỗi dòng có một cờ trạng thái gọi là RowState, nó có thể dùng để xác định thực thi nào là cần thiết cho dòng đó khi nó cập nhật cơ sở

dữ liệu Thuộc tính RowState có thể được cài đặt để theo dõi tất cả các trạng thái thay đổi trên DataTable, như thêm vào các dòng mới, xóa các dòng hiện tại, và thay đổi các cột bên trong bảng Khi dữ liệu được cập nhật vào cơ sở dữ liệu, cờ trạng thái được dùng để nhận biết thực thi SQL nào sẽ xảy ra Những cờ này được định nghĩa bởi bảng liệt kê DataRowState:

DataRowState

Value

Mô tả

Added Dòng được vừa mới được thêm vào tập hợp

DataTable's Rows Tất cả các dòng đựoc tạo trên máy khách đều được cài đặt giá trị này, và cuối cùng

là phát ra câu lệnh SQL INSERT khi cập nhật cho cơ

sở dữ liệu

Deleted Giá trị này cho biết dòng đó có thể được đánh dấu

xoá trong DataTable bởi phương thức DataRow.Delete() Dòng này vẫn tồn tại trong DataTable, nhưng không thể trông thấy từ màn hình (trừ khi một DataView được cài đặt rõ ràng) Các DataView sẽ được trình bày trong chương tiếp theo Các dòng được đánh dấu trong DataTable sẽ bị xoá khỏi cơ sở dữ liệu khi nó được cập nhật

Detached Một dòng sẽ có trạng thái này ngay sau khi nó đươc

tạo ra , và có thể cũng trả về trạng thái này bởi việc gọi phương thức DataRow.Remove() Một dòng detached không được coi là một thành phần của bảng dữ liệu

Modified Một dòng sẽ được Modified nếu giá trị trong cột bất

Trang 22

dữ liệu)

 Cách phổ biến nhất để thay đổi dữ liệu trong một DataRow là sử dụng chỉ số, tuy vậy nếu có một số thay đổi ccũgn cần gọi các phương thức BeginEdit() và EndEdit() methods

 Khi một cập nhật được tạo ra trên một cột trong một DataRow, sự kiện ColumnChanging sẽ được phát ra trên các dòng của DataTable

Nó cho phép ghi đè lên thuộc tính ProposedValue của các lớp DataColumnChangeEventArgs, và thay đổi nó nếu muốn Cách này cho phép các giá tri trên cột có hiệu lực Nếu gọi BeginEdit() trước khi tạo thay đổi, sự kiện ColumnChanging vẫn xảy ra Chúng cho phép tạo một sự thay đổi kép khi cố gọi EndEdit() Nếu muốn phục hồi lại giá trị gốc, hãy gọi CancelEdit()

 Một DataRow có thể liên kết với một vài dòng khác của dữ liệu Điều này cho phép tạo các liên kết có thể điều khiển được giữa các dòng, đó là kiểu master/detail DataRow chứa một phương thức GetChildRows() dùng để thay đổi một mảng các dòng liên quan đến các cột từ một bản khác trong cùng DataSet như là dòng hiện tại

Trang 23

1.4 Sử dụng thủ tục lưu trữ stored procedure trong SQL Server

SQL Server dựa trên công nghệ Client/Server Một number của các client gửi các queries tới server Sau khi nhận các query, server phân tích cú pháp query (kiểm tra lỗi cú pháp) và sau đó thực hiện (process) các yêu cầu này Khi các query chuyển từ client tới các server thông qua network, Do đó khi số query tăng lên từ fía client dẫn tới mạng tắc nghẽn và tăng tải trên server Một Thủ tục lưu trữ là một solution tới các vấn đề này Một Thủ tục lưu trữ có thể được tạo bởi Enterprise Manager hoặc sử dụng Query Analyzer với các câu lệnh CREATE PROCEDURE

Một Thủ tục lưu trữ là một tập hợp hoặc là một batch của các câu lệnh SQL và ngôn ngữ điều khiển luồng (control-of-flow language), được lưu trữ dưới một tên gọi và được thực hiện như một đơn vị riêng lẻ Nó giúp thực hiện tốt hơn các truy vấn

T-Một Thủ tục lưu trữ là một đối tượng được biên dịch trước và lưu trong CSDL Nghĩa là một Procedure được compile trước và chuẩn bị cho nhiều ứng dụng thực hiện Không mất thời gian để gửi truy vấn này tới máy chủ, việc phân tích cú pháp và biên dịch lại thủ tục

Ưu điểm của stored procedure:

 Performance : Khi thực thi một câu lệnh SQL thì SQL Server phải kiểm tra permission xem user gởi câu lệnh đó có được phép thực hiện câu lệnh hay không đồng thời kiểm tra cú pháp rồi mới tạo ra một execute plan và thực thi Nếu có nhiều câu lệnh như vậy gởi qua network có thể làm giảm đi tốc độ làm việc của server SQL Server

sẽ làm việc hiệu quả hơn nếu dùng stored procedure vì người gởi chỉ gởi một câu lệnh đơn và SQL Server chỉ kiểm tra một lần sau đó tạo

ra một execute plan và thực thi Nếu stored procedure được gọi nhiều lần thì execute plan có thể được sử dụng lại nên sẽ làm việc nhanh hơn Ngoài ra cú pháp của các câu lệnh SQL đã được SQL Sever kiểm tra trước khi save nên nó không cần kiểm lại khi thực thi

 Programming Framework : Một khi stored procedure được tạo ra nó

Trang 24

có thể được sử dụng lại Ðiều này sẽ làm cho việc bảo trì (maintainability) dễ dàng hơn do việc tách rời giữa business rules (tức là những logic thể hiện bên trong stored procedure) và database

Ví dụ nếu có một sự thay đổi nào đó về mặt logic thì ta chỉ việc thay đổi code bên trong stored procedure mà thôi Những ứng dụng dùng stored procedure này có thể sẽ không cần phải thay đổi mà vẫn tương thích với business rule mới Cũng giống như các ngôn ngữ lập trình khác stored procedure cho phép ta đưa vào các input parameters (tham số) và trả về các output parameters đồng thời nó cũng có khả năng gọi các stored procedure khác

 Security : Giả sử muốn giới hạn việc truy xuất dữ liệu trực tiếp của một user nào đó vào một số tables, ta có thể viết một stored procedure để truy xuất dữ liệu và chỉ cho phép user đó được sử dụng stored procedure đã viết sẵn mà thôi chứ không thể "đụng" đến các tables đó một cách trực tiếp Ngoài ra stored procedure có thể được encrypt (mã hóa) để tăng cường tính bảo mật

Các loại stored procedure: Stored procedure có thể được chia thành 5 nhóm như sau:

 System Stored Prcedure : Là những stored procedure chứa trong Master database và thường bắt đầu bằng tiếp đầu ngữ sp_ Các stored procedure này thuộc loại built-in và chủ yếu dùng trong việc quản lý database (administration) và security Ví dụ có thể kiểm tra tất cả các processes đang được sử dụng bởi user DomainName\Administrators có thể dùng sp_who

@loginame='DomainName\Administrators' Có hàng trăm system stored procedure trong SQL Server có thể xem chi tiết trong SQL Server Books Online

 Local Stored Procedure : Ðây là loại thường dùng nhất Chúng được chứa trong user database và thường được viết để thực hiện một công việc nào đó Thông thường người ta nói đến stored procedure là nói

Trang 25

đến loại này Local stored procedure thường được viết bởi DBA hoặc programmer

 Temporary Stored Procedure : Là những stored procedure tương tự như local stored procedure nhưng chỉ tồn tại cho đến khi connection

đã tạo ra chúng bị đóng lại hoặc SQL Server shutdown Các stored procedure này được tạo ra trên TempDB của SQL Server nên chúng

sẽ bị delete khi connection tạo ra chúng bị cắt đứt hay khi SQL Server down Temporary stored procedure được chia làm 3 loại : local (bắt đầu bằng #), global (bắt đầu bằng ##) và stored procedure được tạo ra trực tiếp trên TempDB Loại local chỉ được sử dụng bởi connection đã tạo ra chúng và bị xóa khi disconnect, còn loại global

có thể được sử dụng bởi bất kỳ connection nào Permission cho loại global là dành cho mọi người (public) và không thể thay đổi Loại stored procedure được tạo trực tiếp trên TempDB khác với 2 loại trên

ở chỗ ta có thể set permission, chúng tồn tại kể cả sau khi connection tạo ra chúng bị cắt đứt và chỉ biến mất khi SQL Server shut down

 Extended Stored Procedure : Ðây là một loại stored procedure sử dụng một chương trình ngoại vi (external program) vốn được compiled thành một DLL để mở rộng chức năng hoạt động của SQL Server Loại này thường bắt đầu bằng tiếp đầu ngữ xp_ Ví dụ, xp_sendmail dùng đề gởi mail cho một người nào đó hay xp_cmdshell dùng để chạy một DOS command Ví dụ xp_cmdshell 'dir c:\' Nhiều loại extend stored procedure được xem như system stored procedure và ngược lại

 Remote Stored Procedure : Những stored procedure gọi stored procedure ở server khác

Viết stored procedure: Ðể tạo ra một stored procedure ta dùng lệnh CREATE PROCEDURE theo sau là tên của nó (nếu là temporary stored procedure thì thêm dấu # trước tên của procedure Nếu muốn encrypt thì dùng WITH ENCRYPTION trước chữ AS) và các input hoặc ouput parameters Nếu là

Trang 26

output thì thêm keyword OUTPUT đằng sau parameter Ta có thể cho giá trị default cùng lúc với khai báo data type của parameter Kể từ sau chữ AS là phần body của stored procedure

1.5 Lập trình với mô hình 3 lớp

Trong phát triển ứng dụng, để dễ quản lý các thành phần của hệ thống, cũng như không bị ảnh hưởng bởi các thay đổi, người ta hay nhóm các thành phần có cùng chức năng lại với nhau và phân chia trách nhiệm cho từng nhóm để công việc không bị chồng chéo và ảnh hưởng lẫn nhau Ví dụ trong một công ty sẽ có từng phòng ban, mỗi phòng ban sẽ chịu trách nhiệm một công việc cụ thể nào đó, phòng này không được can thiệp vào công việc nội bộ của phòng kia như Phòng tài chính thì chỉ phát lương, còn chuyện lấy tiền đâu phát cho các anh phòng Marketing thì các anh không cần biết Trong phát triển phần mềm, người ta cũng

áp dụng cách phân chia chức năng này sẽ nghe nói đến thuật ngữ kiến trúc đa tầng/nhiều lớp, mỗi lớp sẽ thực hiện một chức năng nào đó, trong đó mô hình 3 lớp là phổ biến nhất Đó là Presentation, Business Logic, và Data Access Các lớp này sẽ giao tiếp với nhau thông qua các dịch vụ (services) mà mỗi lớp cung cấp để tạo nên ứng dụng, lớp này cũng không cần biết bên trong lớp kia làm gì

mà chỉ cần biết lớp kia cung cấp dịch vụ gì cho mình và sử dụng nó mà thôi

Mô hình 3 lớp mà Microsoft đề nghị dùng cho các hệ thống phát triển trên nền NET như sau:

 Presentation Layer

 Lớp này làm nhiệm vụ giao tiếp với người dùng cuối để thu thập dữ liệu và hiển thị kết quả/dữ liệu thông qua các thành phần trong giao

Trang 27

diện người sử dụng Lớp này sẽ sử dụng các dịch vụ do lớp Business Logic cung cấp Trong NET thì có thể dùng Windows Forms, ASP.NET hay Mobile Forms để hiện thực lớp này

 Trong lớp này có 2 thành phần chính là User Interface Components

và User Interface Process Components

 UI Components là những phần tử chịu trách nhiệm thu thập và hiển thị thông tin cho người dùng cuối Trong ASP.NET thì những thành phần này có thể là các TextBox, các Button, DataGrid…

 UI Process Components: là thành phần chịu trách nhiệm quản lý các qui trình chuyển đổi giữa các UI Components Ví dụ chịu trách nhiệm quản lý các màn hình nhập dữ liệu trong một loạt các thao tác định trước như các bước trong một Wizard…

 Lưu ý là lớp này không nên sử dụng trực tiếp các dịch vụ của lớp Data Access mà nên sử dụng thông qua các dịch vụ của lớp Business Logic vì khi sử dụng trực tiếp như vậy, có thể bỏ qua các ràng buộc, các logic nghiệp vụ mà ứng dụng cần phải có

 Business Logic Layer

 Lớp này thực hiện các nghiệp vụ chính của hệ thống, sử dụng các dịch vụ do lớp Data Access cung cấp, và cung cấp các dịch vụ cho lớp Presentation Lớp này cũng có thể sử dụng các dịch vụ của các nhà cung cấp thứ 3 (3rd parties) để thực hiện công việc của mình(ví

dụ như sử dụng dịch vụ của các cổng thanh toán trực tuyến như VeriSign, Paypal…)

 Trong lớp này có các thành phần chính là Business Components, Business Entities và Service Interface Service Interface là giao diện lập trình mà lớp này cung cấp cho lớp Presentation sử dụng Lớp Presentation chỉ cần biết các dịch vụ thông qua giao diện này

mà không cần phải quan tâm đến bên trong lớp này được hiện thực như thế nào

 Business Entities là những thực thể mô tả những đối tượng thông

Trang 28

tin mà hệ thống xử lý Trong ứng dụng các đối tượng này là các chuyên mục(Category) và bản tin(News) Các business entities này cũng được dùng để trao đổi thông tin giữa lớp Presentation và lớp Data Access

 Business Components là những thành phần chính thực hiện các dịch vụ mà Service Interface cung cấp, chịu trách nhiệm kiểm tra các ràng buộc logic(constraints), các qui tắc nghiệp vụ(business rules), sử dụng các dịch vụ bên ngoài khác để thực hiện các yêu cầu của ứng dụng

 Trong ứng dụng của , lớp này sẽ chứa các thành phần là CategoryService và NewsService làm nhiệm vụ cung cấp các dịch

vụ quản lý chuyên mục và các bản tin (thêm, xóa, sửa, xem chi tiết, lấy danh sách…)

 Data Access Layer

 Lớp này thực hiện các nghiệp vụ liên quan đến lưu trữ và truy xuất

dữ liệu của ứng dụng Thường lớp này sẽ sử dụng các dịch vụ của các hệ quản trị cơ sở dữ liệu như SQL Server, Oracle,… để thực hiện nhiệm vụ của mình Trong lớp này có các thành phần chính là Data Access Logic, Data Sources, Servive Agents)

 Data Access Logic components (DALC) là thành phần chính chịu trách nhiệm lưu trữ vào và truy xuất dữ liệu từ các nguồn dữ liệu - Data Sources như RDMBS, XML, File systems… Trong NET Các DALC này thường được hiện thực bằng cách sử dụng thư viện ADO.NET để giao tiếp với các hệ cơ sở dữ liệu hoặc sử dụng các O/R Mapping Frameworks để thực hiện việc ánh xạ các đối tượng trong bộ nhớ thành dữ liệu lưu trữ trong CSDL

Trang 29

CHƯƠNG 2 KHẢO SÁT VÀ PHÂN TÍCH HỆ THỐNG 2.1 Quy định chung trong quản lý thu lệ phí trước bạ

Theo văn bản pháp luật hiện hành về luật Quản Lý thuế, nghị định của chính phủ về Lệ phí trước bạ Các thông tư của Bộ tài chính hướng dẫn thực hiện các quy định của pháp luật về lệ phí trước bạ

Các quy định chung đối với đối tượng chịu lệ phí trước bạ, đối tượng nộp lệ phí trước bạ, các mẫu tờ khai và hồ sơ kê khai đưa ra như sau:

2.1.1 Đối tượng chịu lệ phí trước bạ

Đối tượng đầu tiên được nêu là nhà gồm nhà ở, nhà làm việc, nhà xưởng, nhà kho, cửa hàng, cửa hiệu và các công trình kiến trúc khác

Thứ hai là đất là tất cả các loại đất quy định tại Khoản 1, 2 Điều 13 Luật Đất đai 2003 đã thuộc quyền quản lý sử dụng của tổ chức, hộ gia đình, cá nhân (không phân biệt đã xây dựng công trình hay chưa xây dựng công trình), bao gồm: đất nông nghiệp (đất sản xuất nông nghiệp, đất lâm nghiệp, đất nuôi trồng thuỷ sản, đất làm muối và đất nông nghiệp khác); đất phi nông nghiệp (đất ở, đất chuyên dùng, đất phi nông nghiệp khác)

Phương tiện vận tải, gồm: phương tiện vận tải cơ giới đường bộ, phương tiện vận tải cơ giới đường thuỷ (sông, biển, đầm, hồ ), phương tiện đánh bắt và vận chuyển thuỷ sản, cụ thể:

 Tàu thuỷ, kể cả sà lan, ca nô, tàu kéo, tàu đẩy, vỏ hoặc tổng thành máy tàu thuỷ

 Thuyền gắn máy (trừ thuyền không gắn máy loại không phải đăng ký quyền sở hữu, quyền sử dụng với cơ quan nhà nước có thẩm quyền theo quy định của pháp luật)

 Ô tô là tất cả các phương tiện vận tải cơ giới đường bộ có từ 4 bánh trở lên, kể cả: rơ moóc và sơ mi rơ moóc; xe tải chở cần cẩu; xe chở

bê tông; xe chở xăng dầu; xe gắn các thiết bị ra đa, máy đo tần số,

thiết bị truyền hình; khung hoặc tổng thành máy ô tô thay thế phải

Trang 30

đăng ký lại quyền sở hữu tài sản Trừ các máy, thiết bị không phải là phương tiện vận tải, như: xe lu, cần cẩu (kể cả xe cần cẩu tự hành chỉ chuyên dùng để cẩu), máy xúc, máy ủi, xe máy nông lâm nghiệp (máy cày, máy bừa, máy xới, máy làm cỏ, máy tuốt lúa, máy kéo ),

xe tăng, xe xích, xe bọc thép và các máy, các thiết bị khác không phải là phương tiện vận tải

 Xe máy, gồm: xe mô tô hai bánh, mô tô ba bánh, xe hai bánh gắn máy, xe ba bánh gắn máy (kể cả xe lam), khung hoặc tổng thành máy

xe máy Tổng thành máy thay thế có số khung, số máy khác với số khung, số máy của tài sản đã được cơ quan nhà nước có thẩm quyền cấp giấy chứng nhận sở hữu, sử dụng Trường hợp sửa chữa khung, máy hoặc chỉ thay blok máy thì không phải chịu lệ phí trước bạ

 Súng săn, sung thể thao

2.1.2 Đối tượng nộp lệ phí trước bạ

Tổ chức, cá nhân Việt Nam và tổ chức, cá nhân nước ngoài, kể cả các doanh nghiệp có vốn đầu tư nước ngoài hoạt động theo Luật đầu tư số 59/2005/QH11 ngày 29 tháng 11 năm 2005, có các tài sản thuộc đối tượng chịu lệ phí trước bạ nêu tại mục 1 phần này, phải nộp lệ phí trước bạ trước khi đăng ký quyền sở hữu, quyền sử dụng với cơ quan nhà nước có thẩm quyền (trừ các trường hợp không

phải nộp lệ phí trước bạ)

Trường hợp điều ước quốc tế mà Việt Nam ký kết, tham gia hoặc thoả thuận

có quy định khác thì thực hiện theo quy định của điều ước quốc tế đó

2.1.3 Mẫu tờ khai

Mẫu 01/LPTB; Mẫu 02/LPTB ban hành kèm theo Thông tư số 60/2007/ BTC ngày 14/6/2007 của Bộ Tài chính

Trang 31

TT-Mẫu 01/LPTB với đối tượng là nhà đất:

CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM

Độc lập - Tự do - Hạnh phúc

TỜ KHAI LỆ PHÍ TRƯỚC BẠ NHÀ, ĐẤT [01] Người nộp thuế: [02] Mã số thuế:

[03] Địa chỉ: [04] Quận/huyện: [05] Tỉnh/Thành phố: [06] Điện thoại: [06] Fax: [08] Email:

a) Tên tổ chức, cá nhân chuyển giao QSDĐ:

Địa chỉ người giao QSDĐ:

b) Thời điểm làm giấy tờ chuyển giao QSDĐ ngày tháng năm 1.6 Giá trị đất thực tế chuyển giao (nếu có):

- Năm hoàn công (hoặc năm bắt đầu sử dụng nhà):

b) Mua, thừa kế, cho, tặng:

- Thời điểm làm giấy tờ chuyển giao nhà ngày tháng

Trang 32

Mẫu 02/LPTB áp dụng: ô tô, xe máy, tàu, thuyền, súng săn, súng thể thao

CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM

Độc lập - Tự do - Hạnh phúc

TỜ KHAI LỆ PHÍ TRƯỚC BẠ

(Áp dụng đối với tài sản là ô tô, xe máy, tàu, thuyền, súng săn, súng thể thao)

A PHẦN NGƯỜI NỘP THUẾ TỰ KÊ KHAI:

1 Loại tài sản ( ô tô, xe máy, tàu thuyền ):

2 Tên hiệu tài sản:

4 Tài sản thuộc diện không phải nộp lệ phí trước bạ (lý do):

5 Giấy tờ có liên quan, gồm:

Tôi cam đoan số liệu khai trên là đúng và chịu trách nhiệm trước pháp luật về số liệu

Trang 33

7 Số chỗ ngồi, kể cả chỗ người lái ( đối với phương tiện chở khách):

1 Tổ chức, cá nhân giao tài sản:

2 Địa chỉ:

3 Thời điểm làm giấy tờ chuyển dịch tài sản:

III TÀI SẢN THUỘC DIỆN KHÔNG PHẢI NỘP LỆ PHÍ TRƯỚC BẠ (lý do):

IV GIẤY TỜ CÓ LIÊN QUAN, GỒM:

Ký tên, đóng dấu (ghi rõ họ tên và chức vụ)

B/ PHẦN KIỂM TRA XÁC ĐỊNH CỦA CƠ QUAN THUẾ:

1 Trị giá tài sản tính lệ phí trước bạ (đồng):

)

2 Số tiền lệ phí trước bạ phải nộp (đồng): Bằng trị giá tài sản tính LPTB nhân (x)

mức thu LPTB (%) Mức thu LPTB được quy định chi tiết cho từng loại tài sản (tàu thuyền, ô tô, xe máy các loại)

(Viết bằng chữ: ) Nộp theo chương loại khoản hạng mục tiểu mục

3 Địa điểm nộp:

4 Thời hạn nộp tiền chậm nhất đến ngày tháng năm 200

Trang 34

Quá thời hạn nêu trên mà chủ tài sản chưa nộp thì mỗi ngày chậm nộp bị chịu phạt 0.05% số tiền chậm nộp /ngày

5 Không thu lệ phí trước bạ (nếu có): Chủ tài sản thuộc đối tượng không phải nộp

lệ phí trước bạ theo quy định tại điểm khoản Điều 3 Nghị định số 176/1999/NĐ-CP ngày 21/12/1999 của Chính phủ thuộc trường hợp:

, ngày tháng năm

CÁN BỘ KIỂM TRA TÍNH LỆ PHÍ

TRƯỚC BẠ

THỦ TRƯỞNG CƠ QUAN THUẾ

2.1.4 Hồ sơ kê khai

Khai lệ phí trước bạ nhà đất:

 Tờ khai lệ phí trước bạ (Mẫu 01/LPTB)

 Giấy tờ chứng minh nhà, đất có nguồn gốc hợp pháp

 Giấy tờ chứng minh tài sản (hoặc chủ tài sản) thuộc đối tượng không phải nộp lệ phí trước bạ hoặc được miễn lệ phí trước bạ (nếu có) Khai lệ phí trước bạ tàu thuyền, ôtô, xe máy, súng săn, súng thể thao (trừ tàu thuyền đánh cá, tàu thuyền vận tải thủy nội địa có trọng tải dưới 50 tấn hoặc dưới 20 ghế hành khách thiếu hồ sơ gốc)

 Tờ khai lệ phí trước bạ (Mẫu 02/LPTB)

 Giấy tờ xác minh tài sản có nguồn gốc hợp pháp

 Hoá đơn mua tài sản hợp pháp; hoặc hoá đơn bán hàng tịch thu; hoặc quyết định chuyển giao, chuyển nhượng, thanh lý tài sản; hoặc giấy

tờ chuyển giao tài sản được ký kết giữa bên giao tài sản và bên nhận tài sản có xác nhận của Công chứng nhà nước hoặc cơ quan nhà nước

có thẩm quyền (đối với trường hợp chuyển giao tài sản giữa các cá nhân, thể nhân không hoạt động sản xuất, kinh doanh)

Ngày đăng: 05/08/2016, 20:41

HÌNH ẢNH LIÊN QUAN

Sơ đồ luồng dữ liệu  mức  khung cảnh:  Với  tác nhân  của hệ  thống  là  Nhân  viên thuế và người quản lý ta có sơ đồ DFD như sau: - Quản lý chương trình thu lệ phí trước bạ tại thái nguyên
Sơ đồ lu ồng dữ liệu mức khung cảnh: Với tác nhân của hệ thống là Nhân viên thuế và người quản lý ta có sơ đồ DFD như sau: (Trang 43)
Sơ đồ luồng dữ liệu mức đỉnh: - Quản lý chương trình thu lệ phí trước bạ tại thái nguyên
Sơ đồ lu ồng dữ liệu mức đỉnh: (Trang 44)
Bảng Tờ khai tài sản: - Quản lý chương trình thu lệ phí trước bạ tại thái nguyên
ng Tờ khai tài sản: (Trang 56)
Bảng Người khai: - Quản lý chương trình thu lệ phí trước bạ tại thái nguyên
ng Người khai: (Trang 57)
Bảng tờ khai nhà đất: - Quản lý chương trình thu lệ phí trước bạ tại thái nguyên
Bảng t ờ khai nhà đất: (Trang 58)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w