Mô hình vật lý dữ liệu là mô hình của dữ liệu được cài đặt trên máy tính dướI một hệ thống quản trị dữ liệu, trong bài toán quản lý công chức - tiền lương của UBDS-GĐ&TE tôi đã trình bày mô hình vật lý dữ liệu dướI hệ quản trị dữ liệu bằng ACCESS.
Ứng vớI mỗI lược đồ quan hệ trong mô hình tổ chức dữ liệu được cài đặt thành một bảng dữ liệu cơ sở (Table). Ở đây ta chỉ trình bày các yếu tố chính của các table bao gồm các cột: Tên trường, kiểu dữ liệu, kích thước và rang buộc tính toàn vẹn dữ liệu.
68 trang |
Chia sẻ: netpro | Lượt xem: 1619 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Đồ án Phân tích hệ thống chương trình quản lý công chức - Tiền lương của ỦY ban dân số –Gia Đình & Trẻ em Thành Phố, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
uỗI chẳng qua là một nhóm ký tự được bao trong các dấu nháy kép.Khi có ngườI nhập thông tin vào hộp văn bản, Visual Basic luôn lưu trữ chúng dướI dạng một chuỗi. Do đó, cho dù ta có một hộp văn bản chủ yếu là để lưu trữ một khốI lượng, thì nộI dung đó vẫn được xem là một chuỗi.
Phép toán phổ dụng nhất đốI vớI các chuỗI là gom hai chuỗI lạI vớI nhau ( thuật toán gọI phép nốI [concatenate]). Để ghép nốI hai chuỗI, ta dùng dấu “&” day dấu “+”.
Dấu và nốI các chuỗI theo thứ rtự mà ta nêu chúng. Do đó, giống như việc cộng các con số, thứ tự quan trọng khi dùng dấu & để nghép hai chuỗI vớI nhau. Cũng có thể dùng dấu & để nghép số lượng tuỳ ý trước khi Visual Basic thực hiện điều lệnh gán .
Tuy trong Visual Basic vẫn có thể dùng dấu + để nghép các số vớI nhau, song không nên làm thế. Nó có thể dẫn đến các mốI rất khó tìm vì Visual Basic có thói quen là chuyển đỏI các chuỗI thành con số khi nó cho là đúng nghĩa.
CÁC HÀM CHUỖI
Phần lớn cái ta cần trong lập trình là phân tích dữ liệu. Tiến trình này có thể đơn giản chỉ là việc tách nhỏ một tên đầy đủ thành tên thường gọI và tên họ, song cũng có thể phức tạp như viết mã cần thiết để chuyển đổI một tập tin từ dạng này sang dạng thức khác. MọI kiểu điều tác như vậy buộc ta phảI nắm dữ các hàm điều quản chuỗI Visual Basic. Trong Visual Basic, các hàm này cho phép ta xét từng ký tự trong chuỗI tách riêng các chuỗI thay một phần trong chuỗI bằng nộI dung khác, v.v..
1. Phân tích chuỗI bằng hàm Mid, Left và Right
Để tiến hành phân tích một chuỗi hiện có, ta phảI đặt một hàm trong thân vòng lặp cho phép kéo từng mẫu tự riêng lẻ ra khỏI một chuỗi.
For I = I To Len ( The String )
‘ mã hàm làm việc vớI các ký ự riêng lẻ
Next I
1.1. Hàm Mid
Trong các hàm trên, quan trọng nhất, ta có hàm Mid, trả về một chuỗI lưu trữ trong một variant, và hàm Mi$, hàm trả về chuỗI thực tế. Có thể dùng hoán đổI hai phiên bản này.
Cú pháp của hàm Mid là:
Mid(String, start [length].
Khoản nhập đầu tiên lưu trữ chuỗI ( hoặc biểu thức chuỗI) mà ta muốn cắt bỏ. Tiếp theo là vị trí khởI đầu của kí tự mà ta muốn ra khỏI chuỗi. Vị trí chót tuỳ chọn sẽ chỉ định số lượng kí tự mà ta muốn kéo ra. Hai tuỳ chọn chót này có thể là những số nguyên dài hoặc một biểu thức mà Visual Basic có thể làm tròn để làm trong miền này.
Mid là một hàm có ba ( hoặc thỉnh thoảng là hai) tham số, hay đốI số. Cả hai thuật ngữ này đều vay mượn từ toán học. Trong một hàm, từng đói số được tách biệt vớI nhau bằng dấu phẩy. Hàm Mid thườg dùng ba mẩu tin: Một chuỗI tạI vị trí đầu tiên và các số nguyên hay các số nguyên dài tạI hai vị trí còn lại.
Mid còn một tính năng hữu ích khác. Ta có thể dùng nó như một điều lệnh để tiến hành các thay đổI bên trong một chuỗI
*Hàm Left và Right
Hàm Mid có hai hàm bà con (Left và Right) đôi lúc cũng rất hữu ích cũng như mọI hàm chuỗI khác, chúng cũng có hai hiên bản: một bình thường và một có kèm dấu $.
Như tên gọI gợI ý, Left (Left$) tạo một bản sao các ký tự từ đầu một từ và Right (Right$) chọn từ cuốI trở lên. Right thường được dùng hơn. Nó tránh được phép trừ bên trong hàm Mid và có thể làm việc nhanh hơn. Left cũng làm việc tương tự nhưng chỉ giúp ta đỡ mất công đưa một 1vị trí thứ hai trong hàm Mid.
Hàm InStr
Cũng như hàm Mid, Hàm InStr cũng làm việc vớI ba (và đôi lúc là hai) mẩu tin. Nghĩa là, nó là một hàm có ba ( và đôi lúc có hai) đốI số.
Gỉa sử, ta muốn tìm tất cả mọI chữ số đứng trước dấu chấm thập phân trong một con số, tất nhiên, có thể dùng hàm Mid để dà qua biên bản chuỗI của con số đó, theo từng ký tự một, cho đến khi tìm thấy dấu chấm thập phân. Tuy nhiên, làm như vậy sẽ nhọc công và chạy chậm hơn nhiều so vớI hàm InStr.
Hàm InStr báo cho biết chuỗI có thuộc thành phần của một chuỗI khác hay không ( chuyên ngữ gọI là “ chuỗI con của “). Nếu có, InStr sẽ báo cho biết vị trí bắt đầu chuỗI con.
Hàm InStr cũng cho phép chỉ định bắt đầu tìm kiếm tạI một ký tự nhất định.
Ví dụ: InStr ([nowi bắt đầu]) chuỗI tìm kiếm, chuỗI tìm thấy ) định nơi bắt đầu tìm kiếm. Nếu để trống mục này, cuộc tìm kiếm sẽ bắt đầu từ vị trí thứ nhất .
Do hàm InStr trả về giá trị zêzo ( nghĩa là False) khi Visual Basic không tìm thấy một ký tự, hoặc một giá trị phi zêzo (True) khi tìm thấy, nên thông thường ta phảI tự mình viết các vòng lặp If _ Then hoặc Do dùng hàm InStr để tiến hành kiểm tra.
Nếu dùng giá trị mà hàm InStr đạt được trước đó, ta có thể tìm kiếm các lần xuất hiện lặp lạI của một chuỗi.
Hàm Val
Visual Basic có một hàm tên Val. Đây là một dạng hàm chuyển đổI tất thảy, vì thế trong Visual Basic ngườI ta vẫn thường dùng Val để chuyển đổI một chuỗI số thành một con số. Mặt khác Val lạI tỏ ra dễ dãi vớI các chuỗI nhập dữ liệu hơn. Val đơn giản đọc qua chuỗI cho đến khi gặp một ký tự phi số ( hoặc một dấu chấm thứ hai ). Con số mà ta có được tự nó sẽ được xác dịnh bởi nơi nó ngưng tìm.
Hàm Str (Str$)
Visual Basic cho phép chuyển được một con số thành một chuỗi. Có nhiều cách để thực hiện, song hàm Str vẫn là cách đơn giản nhất. Hàm Str trả về một Variant lưu trữ một chuỗI còn hàm Str$ lạI trả về một chuỗI thuần tuý. Các hàm Str và Str$ chuyển đổI các con số thành chuỗI, song không xoá sạch chúng hoàn toàn.
Hàm Format
Để trau chuốt việc hiện thị, hàm Str được thay bằng hàm Format. Khác vớI hàm Str, hàm Format không chừa chỗ cho dấu + mặc định. Hàm format rất linh hoạt. Trong số nhiều tính năng của nó, hàm nàycho phép ta cắt cụt các chữ số dư và hiện thị một con số ( lớn) có dấu phẩy hoặc một dấu đồng đo la $ dẫn đầu.
Visual Basic giúp ta dễ dàng đốI phó vớI các tình huống định dạng phổ biến nhất, bằng cách bổ sung cái gọI là các dạng thức hữu danh vào hàm Format
Hàm Trim
Hàm này được sử dụng để loạI bỏ các khoảng trắng ở hai đầu một chuỗi.Ngoài ra, còn có hàm Ltrim và Rtrim dùng để cắt bỏ các khoảng trắng ở bên trái, bên phảI chuỗi.
VII. Mảng và truy cập tuần tự
1.Mảng
Trước khi dùng bảng ta cần khai báo mảng bao gồm: Tên mảng, số phần tử. Tương tự như khai báo biến, nếu mảng được khai báo trong phần khai báo chung của Form, mảng được dùng chung cho mọI thủ tục trong Form. Nếu mảng được khai báo trong tập tin module vớI các khoá Gobal, mảng được dùng chung cho mọI thủ tục có mặt trong Project. Có khi phảI lưu trữ một mảng trong một variant, ta dùng chỉ mục bình thường để tìm đến nó.
Mảng biến [variant array] ( gọI tắt là mảng ) là cấu trúc căn bản để tổ chức thông tin trong Visual Basic. Có thể dễ dàng lưu trữ và tìm nhiều mục trong mảng. Để phân biệt giữa các mục lưu trữ trong mảng, ta dùng kiểu tham số đặc biệt có tên chỉ mục [index].
Tất nhiên, một khi bắt tay xây dựng các mảng lớn, ta cần có các phương cách nhanh chóng, hiệu quả để tìm và sắp xếp nộI dung.
Để thực hiện ta dùng hàm Array vớI cú pháp là:
Array (arglist)
Ở đó, đốI số arglist bao gồm một danh sách các mục, được tách biệt bởI các dấu phẩy, ví dụ
Dim A As Variant
A = Array (1, 2, 3, 4, 5)
2. Các danh sách mảng môt chiều
Chủ chương của mảng một chiều ( gọI là danh sách [list] đó là cung cấp một phương thức có hệ thống để đặt tên các nhóm biến có liên quan, thuộc thành phần của một mảng. VớI Visual Basic, mảng một chiều [ one_dimensional array] chẳng qua là một tập hợp [collection] các biến, mà từng biến được định dang bởI hai nộI dung:
- Tên mảng
- Vị trí của mục trên mảng.
Mảng Fonts mà Visual Basic dùng để lưu trữ tên các phông chữ và các phông chữ được lưu chữ trong Fonts (0), Fonts(1), v . v…
Lưu ý: dấu đồn đo la “$” cho biết các biến trên mảng một chiều này sẽ lưu giữ các chuỗi.
* Cách làm việc vớI mảng một chiều
Các giá rị bên trong mảng một chiều thường được gán bằng một vòng lặp For_Next hoặc dùng một vòng lặp Do kèm vớI một đợt kiểm tra, bởI thông thường ta muốn ngưng trước khi nhập toàn bộ dữ liệu. Có thể ta thấy an tâm khi luôn biết chắc số lượng các mục trong một mảng một chiều. Nó giúp cho tiến trình gỡ rốI dễ dàng hơn, cũng như hầu hết các lập trình viên, có thể thấy các vòng lặp For_Next dễ dàng hơn so vớI vòng lặp Do.
Các hộp liệt kê cũng là một cách để lưu trữ thông tin ( kiểu mảng) trong vài tình huống, việc dùng hộp liệt kê có thể là một phương cách lưu trữ dữ liệu tốt hơn so vớI mảng một chiều
3. Mảng đa chiều
Có thể dùng các mảng có nhiều chiều; thường được gọI là mảng đa chiều [multidimensional array]. Cũng như các danh sách dữ liệu dẫn đến một chỉ số dướI đơn ( các mảng một chiều), các bảng dữ liệu dẫn đến các chỉ số dướI kép ( mảng hai chiều).
Ta có qui ước: tham chiếu khoản nhập đầu tiên cho số lượng hàng và khoản nhập thứ hai để cho số lượng cột. Theo qui ước này, ta có thể mô tả đoạn mã của bảng cửu chương dướI dạng điền trọn một hàng, theo từng cột nhập thứ hai để cho số lượng cột. Theo qui ước này, ta có thể mô tả đoạn mã của bảng cửu chương dướI dạng điền trọn một hàng, theo từng cột, trước khi dờI đến hàng kế tiếp.
Mảng được sử dụng trong chương trình ARRAYS là mảng một chiều. Visual basic cho phép khai báo mảng nhiều chiều. ví dụ sau khi khai báo mảng hai chiều :
Static MyArray (0 to 3,1 to 4)
Các phần tử mảng được liệt kê như sau:
MyArray (0,1) My Array (0,2) MyArray (0,3) MyArray (0,4)
MyArray(1,1) MyArray (1,2) MyArray (1,3) MyArray (1,4)
MyArray(2,1) MyArray (2,2) MyArray (2,3) MyArray (2,4)
MyArray(3,1) MyArray (3,2) MyArray (3,3) MyArray (3,4)
Tương tự khai báo mảng ba chiều
Dim MyArray (1 to 3, 1 to 7, 1 to 5).
Visual Basic cho phép mảng khai báo mảng tốI đa có 60 chiều! Sau đây là mã lệnh cho phép gán giá trị 3 vào các phần tử mảng hai chiều
Static MyArray (1 to 10, 1 to 10)
Dim Counter 1, Counter 2
For Counter 1 = 1 to 10
For Counter 2 = 1 to 10
MyArray (Counter 1, Counter 3) =3
Next
Next
4.Mảng động và mảng cố định
Trong Visual Basic, các mảng không thể kết thúc mở. Mặc dù, các giới hạn khá lớn, tuỳ thuộc khá nhiều vào lượng bộ nhớ đang có, ta phảI báo cho Visual Basic biết phảI chừa riêng một lượng bộ nhớ là bao nhiêu cho mảng trước khi dùng nó.
Có hai kiểu mảng trong Visual Basic: mảng cố định [fixed array], ở đó việc phân bổ bộ nhớ không bao giờ thay đổI trong khi đang chạy chương trình, và mảng động [dynamic arrays], ở đó có thể thay đổI kích cỡ ngay khi chạy chương trình.
y Ưu điểm của mảng cố định là: do bộ nhớ được chừa riêng ngay tạI đầu chương trình, ta hiếm khi gặp sự cố cạn kiệt bộ nhớ trong khi chương trình đang chạy.
yƯu điểm của mảng động là: Khả năng linh hoạt của chúng; có thể thay đổI kích cớ để đáp ứng những gì mà chương trình thường gặp.
Có thể cả mảng động và mảng cố định sẵn dùng cho toàn bộ ứng dụng, cho một Form hay một module cụ thể, hoặc chỉ trong phạm vi của một thủ tục hay hàm. Khi dùng mảng bao giờ cũng phảI khai báo sao cho số lượng cần phảI vừa đủ theo yêu cầu ứng dụng cần xây dựng chương trình, không nên lãng phí bộ nhớ. Tuy nhiên có nhiều trường hợp kích thước mảng phụ thuộc lúc chương trình thực hiện (run – time), chúng ta không thể xác định trước được. Visual Basic cung cấp một khả năng đáp ứng trường hợp này: khai báo mảng kích thước thay đổI - mảng động. Ví dụ sau khi khai báo mảng động:
Sub cmdArray 1_Click()
Dim Counter
‘ khai báo mảng Array 1 là mảng động
Static Array 1() As Integer
‘ Thay đổI kích thước mảng Array 1
ReDim Array 1( 1 to 15) As Integer
For Counter = 1 to 15
Array 1( Counter) = Counter
Next.
Thay đổI lạI kích thước mảng Array 1
ReDim Array 1( 1 to 5) As Integer
End Sub
Đầu tiên khi khai báo
Static Array 1() As Integer.
Kích thước mảng Array 1 chưa xác định. Lệnh sau sẽ cố định mảng Array 1 có 15 phần tử:
ReDim Array 1( 1 to 15) As Integer
Sau một số xử lý ( ví dụ gán giá trị cho 15 phần tử ), mảng Array 1 được cố địng lạI chỉ còn 5 phần tử
ReDim Array 1(1 to 5) As Integer
Một lưu ý khi thay đổI kích thước mảng, các nộI dung cũ sẽ bị mất,nếu ta muốn giữu lạI giá trị cũ của 5 phần tử còn lạI sau khi thay đổI, ta cần viết lạI như sau:
ReDim Preserve Array 1( 1 to 5) As Integer.
5. Dùng danh sách và mảng vớI các thủ tục và hàm
Visual Basic có một đặc phận tuyệt vờI để dùng các danh sách và các mảng trong các thủ tục và các hàm. Không như nhiều ngôn ngữ khác, Visual Basic dễ dàng gởI cho thủ tục các danh sách hay mảng có kích cỡ bất kỳ. Các mảng luôn được chuyển theo tham chiếu. Điều này có nghĩa là mọI thay đổI đã tạo cho mảng hay cho các khoản nhập trong mảng vẫn trường tồn cả khi Visual Basic rờI hàm thủ tục đó.
Tất nhiên để mảng chuyển theo tham chiếu có nghĩa là ta chẳng cần dùng các mảng cấp Form trừ khi muốn mảng sẵn dùng khắp nơi. Để gửi một tham số mảng cho một thủ tục hay hàm, ta chỉ việc dùng tên mảng theo sau là các dấu ngoặ đơn mở và đóng (), trong danh sách các tham số
TẬP TIN TRUY CẬP TUẦN TỰ
Khi truy xuất tập tin từ đầu theo từng dòng văn bản, tập tin như thế được gọI là tập tin truy xuất tuần tự .
Ta có thể mở tập tin theo kiểu truy xuất tuần tự theo ba cách.
- Cách1: Output
- Cách 2: Append
- Cách 3: Input.
6.Mở tập tin theo kiểu truy xuất tuần tự bằng Output
Dùng kiểu Output tạo tập tin truy cập tuần tự. Sau khi tạo tập tin, ta có thể dùng các lệnh xuất để viết tên tập tin này. Ví dụ sau tạo tập tin TRY.TXT:
FileNum = FreeFile
Open “TRY.TXT” For Output As FileNum.
Nếu tập tin TRY.TXT đã tồn tạI, nộI dung cũ bị xóa đi! Tập tin TRY.TXT không có đường dẫn nên có được tạo trong thư mục hiện hành. Muốn tạo ở thư mục xác định nào đó ( ví dụ C:\ PROG), ta cần chỉ rõ như sau:
Open “ C:\PROG\TRY.TXT” For Output As FileNum.
Tập tin mở bằng kiểu Output chỉ cho phép ta viết lên mà thôi. Ta có thể viết bằng phát biểu Print#.
FileNum = FreeFile
Open “ TRY.TXT” For Output As FileNum
‘ Viết nộI dung thuộc tính Text cuat MyText ra
‘ TRY.TXT
Print # FileNum, txtMyText.Text
‘Đóng tập tin TRY.TXT
Close FileNum.
Phát biểu Print cần hai tham số. Tham số thứ nhất là thẻ File cần nghi ra và tham số thứ hai là chuỗI cần nghi.
7. Mở tập tin theo kiểu truy xuất tuần tự bằng Append:
Kiểu Append tương tự như Output nhưng điểm khác chính là khi tập tin được mở đã tồn tạI, nộI dung cũ không bị xoá. Gỉa sử tập tin TRY.TXT đang có sẵn hai dòng:
THIS IS LINE NUMBER 1
THIS IS LINE NUMBER 2
Mở TRY.TXT theo kiểu Append:
FileNum = FreeFile
Open “ TRY.TXT” For Append As FileNum
Print # FileNum, “THIS IS A NEW LINE”
Close FileNum.
Bây giờ TRY.TXT chứa:
THIS IS LINE NUMBER 1
THIS IS LINE NUMBER 2
THIS IS A NEW LINE
Nếu đoạn lệnh trên thực hiện một lần nữa, TRY.TXT chứa
THIS IS LINE NUMBER I
THIS IS LINE NUMBER 2
THIS IS A NEW LINE
THIS IS A NEW LINE
8. Mở tập tin theo kiểu truy xuất tuần tự bằng Output
Khi cần đọc tập tin truy xuất tuần từ, ta cần mở tập tin theo kiểu Input. Sau đó, dùng hàm Input$ ()để đọc. Ví dụ, sau khi mở TRY.TXT theo kiểu Input và đọc vào txtMytext:
FileNum = FreeFile
Open “ TRY. TXT” For Input As FileNum
Open “ TRY.TXT “ For Input As FileNum.
‘Đọc vào toàn bộ TRY.TXT thuộc tính Text của
‘ txtMytext
txtMytext.Text = Input$ (LÒ (FileNum), FileNum)
‘Đóng tập tin TRY.TXT
Close FileNum.
Hàm Input$ () cần hai tham số. Tham số thứ nhất xác định số Byte cần đọc, tham số thứ hai là thẻ file
9. Phát biểu Write # và Input #
Cách khác thay cho Print # và Input$ () trong viẹc ghi/đọc là Write# và Input#.
Phát biểu Write# cho phép ghi một loạt các biến ( dạng chuỗI hay số ). Ví dụ sau viết hai biến MyString và MyNumber ra tập tin TRY.TXT:
FileNum = FreeFile
Open “ TRY.TXT” For OUTPUT As FileNum
Write#FilenNum MyString, MyNumBer
Close FileNumber.
Phát biểu Input# dùng đọc tập tin nộI dung trở vào các biến. Ví dụ đọc lạI giá trị ghi trở lạI các biến MyString và MyNumber:
FileNum = FreeFile
Open “ TRY.TXT” For Input As FileNum
Input# FileNum MyString, MyNumBer
Close FileNum
VIII. Hàm và thủ tục do ngườI dùng định nghĩa
Trong visual Basic, thực tế có hai kiểu thủ tục chung: các thủ tục Function và thủ tục Sub.
Thủ tục Function, còn gọI là hàm do ngườI dùng định nghĩa, là phương cách để xây dựng các hàm riêng ngoài các hàm do Visual Basic định sẵn. Dẫu đó là hàm do ta viết hay của các lập trình viên Visual Basic cung cấp, nói chung ta xem nó như một đoạn mã tự chưa, được thiết kế để xử lý dữ liệu và trả về giá trị.
Trong khi đó, các thủ tục Sub là những : chương trình trợ lực nhỏ, được dùng khi cần. Như vậy các thủ tục Sub là những phần tổng quát hoá của các thủ tục sự kiện mà ta đã quen thuộc. Khác vớI hàm, thường trả về một giá trị, các thủ tục đơn giản thực hiện các việc.
Tóm lạI, dẫu chọn thủ tục Function hay thủ tục Sub, điểm chủ yếu vẫn là: các thủ tục Function và Sub thực hiện một hay nhiều nộI dung dướI đây:
- Giúp tách nhỏ các công việc lớn thành các phần việc nhỏ.
- Tự động hoá các tác vụ lặp lại.
- Làm rõ nộI dung mà ta đang gắng hoàn tất bằng cách “ Nêu tên” một đoạn mã.
Các tính năng này giúp giảm bớt đáng kể thờI gian gỡ rốI chương trình.
1 .Hàm ( FUNCTION)
Khi phảI dùng một biểu thức phức hợp nhiều lần trong một đề án thì cũng là lúc ta nên nghĩ đến phương án định nghĩa các hàm riêng. Ta có thểvận dụng một cách nào đó để tựu động hoá tiến trình, nghĩa là để Visual Basic thực hiện một phần nào đó để tự động hoá tiến trình, nghĩa là để Visual Basic thực hiện một phần công việc. Đây là vai trò của chương trình con, muốn trả về một giá trị, ta phảI tạo một thủ tục Function, tức là hàm do ngườI dùng định nghĩa. Như thường lệ, Cửa sổ Code vẫn là nơi để tạo mã cho các thủ tục Function.
Tên hàm cũng linh hoạt như tên biến, do đó ta nên chọn các tên có ý nghĩa. Nhờ vậy, chương trình sẽ minh bạch hơn và cũng dễ gỡ rốI hơn. Lưu ý, trừ khi gán cho nó một dấu định danh kiểu rõ rệt ở cuốI tên hoặc thông qua mệnh đề As, kiểu của hàm sẽ ngầm định theo kiểu dữ liệu Variant. DướI đây là một dạng định nghĩa hàm, tuy đơn giản nhất nhưng khá phổ biến.
Pulic Function FunctionName (parameter 1, paratemeter 2, …)
Staterments
FunctionName = expression
Staterments
FunctionName = expression
Staterments
Vân vân
END FUNCTION
Ở đó, parameter 1, paratemeter 2, vân vân …, đều là biến. Các biến này được xem như những tham số hay đốI số của hàm. Kiểu của tham số có thể được chỉ định bởI các thẻ gán khai báo kiểu hoặc bằng các cụm từ As.
Khi một điều lệnh Visual Basic sử dụng một hàm, thường có: gọI hàm và chuyển các biểu thức cho các tham số. Hàm được xem là trả về giá trị của nó.
Kiểu giá trị mà hàm trả về sẽ được chỉ định bằng một thẻ gán khai báo biến (%, !, &, # hoặc $) được chắp vào tên hàm, hoặc tên dùng trong mệnh đề As ở cuốI dòng Function, hoặc một điều lệnh DefType xuất hiện bên trên phần định nghĩa Function. Ngoài ra, vớI một ngoạI lệ ta chỉ có thể gọI một hàm khi dùng cùng vớI số lượng đốI số như các tham số trong phần định nghĩa hàm. Từng biến muốn gởI cho tham số phảI thuộc cùng kiểu ( số nguyên, số nguyên dài, v.v..) vớI tham số tương ứng. Ngoài ra, có thể dùng bất kỳ biến nào nếu như tham số thuộc kiểu Variant.
Có nghĩa là, chỉ có thể chuyển một đốI số biến số nguyên cho một tham số số nguyên. Ta không thể trực tiếp chuyển nó cho một tham số số nguyên dài của một hàm.
Như ta đã biết Visual Basic từ chốI chuyển một biến có kiểu số nguyên cho một tham số kiểu long, cho dù trong hầu hết các trường hợp một số nguyên sẽ làm việc tạI mọI nơi số nguyên dài làm việc.
CuốI cùng, đừng quên rằng trong tất cả các hàm, chúng ta chưa thay đổI các biến bằng cách đưa biến tham số vào bên trái của một điều lệnh gán bên trong thân hàm. Nghĩa là, ta chưa thực hiện phép gán nào cho các tham số trong thân hàm. Tuy nhiên, trong thực tế, hiếm khi phảI thay đổI giá trị của một tham số trong thủ tục Function. Nói chung, một hàm sẽ đơn giản điều tác các giá trị hiện có và trả về một giá trị mới .
2. Thủ tuc ( SUB)
Các thủ tục Function được thành lập để thực hiện hầu như mọI thứ, chỉ cần nộI dung muốn thực hiện chính là để có một đáp số - một giá trị - rút ra từ các hàm đó. Như đã nêu trên đây, tuy các hàm có thể thay đổI các tính chất của một Form, ảnh hưởng đến giá trị của các biến chuyển dướI dạng tham số, hoặc ảnh hưởng đến các biến cấp Form, song không thể làm thế trừ khi sự thay đổI đó có liên quan đến nộI dung thực hiện của hàm được thiết kế. Trong mọI trường hợp, một hàm sẽ nhận dữ liệu thô, điều tác nó, rồI trả về một giá rị.
Để tránh gõ lặp các điều lệnh gán vô bổ và làm rốI tung vấn đề, ta có một cấu trúc mớI: thủ tục Sub. Thủ tục Sub là công cụ chọn lựa trong trường hợp chỉ muốn viết một khốI mã thực hiện một nộI dung nào đó, cũng tương tự như thủ tục Event.
Giống như trong thủ tục Function, ta thường dùng Tools/ Add Procedure báo cho Visual Basic biết muốn định nghĩa một thủ tục Sub. Nhưng có trường hợp, ta nhắp nút tuỳ chọn Sub. DướI đây là cấu trúc đơn giản nhất của thủ tục Sub – song vẫn đủ mạnh để phiên dịch đề cương:
Puclic Sub Chorus ()
‘ Nhiều điều lệnh in
End Sub.
Cũng như các hàm khác, dòng đầu tiên của thủ tục Sub có tên là phần đầu. Cũng như các hàm do ngườI dùng định nghĩa, phần đầu này có thể có các từ chỉ định truy cập ( chẳng hạn là Pulic ). Sau đó là từ khoá Sub rồI đến thủ tục. Tên thủ tục Sub cũng phảI theo các qui tắc như trong biến. Kế tiếp là danh sách tham số, được bao trong các dấu ngoặc đơn, dành cho các thông tin mà hàm sẽ dùng. Chẳng hạn, thủ tục sự kiện Click () và thủ tục Chorus Sub không dùng tham số nào cả. Lưu ý, cho dù thủ tục không dùng tham số, song vẫn phảI có dấu ngoặc đơn trống trong Sub. Sau Sub là các dòng chứa các điều lệnh tạo thành thủ tục. Các điều lệnh này còn gọI là thân ( của thủ tục ). CuốI cùng, Ta có các từ khoá End Sub nằm ở tên các dòng riêng biệt. Cũng như trong các thủ tục sự kiện, các từ khoá này được dùng để nêu rõ điểm cuốI của một thủ tục chung. Ngoài ra, ta cần một phương cách để chuyển giao thông tin giữa chương trình chính và thủ tục Sub. Để thực hiện, ta theo cùng cách thức như các hàm: dùng danh sách tham số. Danh sách tham số được dùng để liên lạc giữa chương trình chính và thủ tục, khi gọI thủ tục Sub ta dùng tên của nó theo sau là các đốI số (tham số), được tách biệt bởI các dấu phẩy.
Các giá trị (mà thực tế là các vị trí bộ nhớ) của các đốI số sẽ được chuyển cho các tham số tương ứng trong thủ tục, và các điều lệnh bên trong thủ tục Sub được thi hành. Khi đạt đến điều lệnh End_ Sub, việc thi hành sẽ tiếp tục vớI các dòng theo sau lệnh gọI đến thủ tục Sub. Cũng như các thủ tục Function, ta phảI dùng cùng số lượng tham số như số lượng tham số đã định nghĩa trong thủ tục Sub, và chúng phảI có cùng kiểu tương thích.
IX. Mục đích yêu cầu ngườI sử dụng
Å Nhu cầu thực tế
Trên thực tế nhu cầu xem xét thông tin về một vấn đề nào đó tạI một thờI điểm đốI vớI ngườI quản lý, lãnh đạo rất cần thiết. Các thông tin này là một trong nhiều phần nhỏ trong hệ thống dữ liệu đầy đủ. Các dữ liệu cần xem xét chỉ được quan tâm theo một số khía cạnh nào đó mà thôi.
Å Bài toán đặt ra
* Cho phép ngườI dùng lựa chọn và tra cứu thông tin công chức - tiền lương trong cơ quan mình một cách thuận tiện và nhanh chóng nhất.
* Cho phép ngườI dùng có thể bổ sung hoặc thêm bớt công chức - tiền lương trong cơ quan một cách nhanh chóng nế được nhận quyền tương ứng như vậy .
CHƯƠNG III
PHÂN TÍCH HỆ THỐNG CHƯƠNG TRÌNH QUẢN LÝ
CÔNG CHỨC - TIỀN LƯƠNG CỦA UBDS-GĐ&TE TỈNH KHÁNH HOÀ
Phân tích là công việc đầu tiên củaquá trình xây dựng hệ quản lý trên máy tính. Nó giúp chúng ta cài đặt chường trình một cách nhanh chóng và kiểm tra dữ liệu một cách tốI ưu hơn. Hiệu quả đem lạI cho một chương trình ứng dụng là hoàn toàn phụ thuộc vào độ nông sâu trong quá trình phân tích.
I. Mô hình hoá dữ liệu
1. Mô hình quan niệm dữ liệu
Mô hình quan niệm dữ liệu là cơ sở để trao đổI giữa ngườI phân tích và ngườI yêu cầu thiết kế hệ thống. Hệ thống ở đây được phân tích gồm một số thực thể. Một số các thực thể bao gồm một số các thuộc tính có đặc tính chung và giữa các thực thể sẽ có các mốI kết hợp tương ứng vớI nhau. Mặt khác còn tuỳ thuộc vào lần xuất hiện của mỗI thực thể vào mốI kết hợp, mà các mốI kết hợp còn có thể có các thuộc tính riêng.
- Thực thể CẤP BẬC chứa các thuộc tính Mã CB, Tên CB. Trong đó thuộc tính Mã CB là thuộc tính chỉ danh, thuộc tính này nhằm lưu trữ thông tin về cấp bậc của từng công chức trong cơ quan
- Thực thể BINH CHỦNG chứa các thuộc tính Mã BC, Tên BC. Trong đó thuộc tính Mã BC là chỉ danh, thuộc tính này nhằm lưu trữ thông tin về binh chủng của công chức trong cơ quan ( những ngườI là bộ đpộI xuất ngũ trở về ).
- Thực thể CCBINH chứa các thuộc tính Mã CC, Ngày nhập ngũ, Ngày xuất ngũ, Mã BC, Mã CB.Trong đó Mã CC, Mã BC, Mã CB là thuộc tính chỉ danh, thuộc tính này nhằm lưu trữ thông tin về cựu chiến binh trong cơ quan
- Thực thể ĐẢNG VIÊN chứa các thuộc tính Mã CC, Ngày VĐ, Ngày CT, Mã Tỉnh.Trong đó Mã CC là thuộc tính chỉ danh, thuộc tính này nhằm lưu trữ thông tin về đảng viên của công chức trong cơ quan.
- Thực thể GIA THUỘC chứa các thuộc tính Mã GT, Họ tên GT, Ngày sinh GT. Trong đó Mã GT là thuộc tính chỉ danh, thuộc tính này nhằm lưu trữ thông tin về gia thuộc trong gia đình của mỗI công chức trong cơ quan
- Thực thể CHỨC VỤ chứa các thuộc tính Mã CV, Tên CV. Trong đó Mã CV là thuộc tính chỉ danh, thuộc tính này nhằm lưu trữ thông tin về chức vụ của từng công chức trong cơ quan.
- Thực thể CƠ QUAN chứa các thuộc tính sau Mã CQ, Tên CQ. T