Tải bản đầy đủ (.doc) (52 trang)

Tìm hiểu ngôn ngữ c và ứng dụng trong chương trình quản lí học viên tại trung tâm tin học ngoại ngữ đh vinh

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (622.17 KB, 52 trang )

Trờng đại học vinh
Khoa công nghệ thông tin
===== =====

Khóa luận tốt nghiệp
Đề tài:

tìm hiểu ngôn ngữ c# và ứng dụng
trong chơng trình quản lý học viên tại trung tâm
tin học ngoại ngữ ĐH vinh

Giáo viên hớng dẫn:

ThS. Vũ Văn Nam

Sinh viên thực hiện:

Lê Thùy Tâm

Lớp:

43E2 - CNTT


Kho¸ luËn tèt nghiÖp

Vinh - 5/2007

GV híng dÉn: Ths. Vò V¨n Nam

2



SV thùc hiÖn: Lª Thuú T©m


Mục lục
Trang
Lời nói đầu..........................................................................................1
Chơng I:tìm hiểu về ngôn ngữ c#.............................................3
I.1. Tổng quan về ngôn ngữ C#.................................................................3
I.2. Cơ bản về C#........................................................................................3
I.2.1. Biến.................................................................................................3
I.2.2. Hằng................................................................................................4
I.2.3. Câu lệnh điều kiện..........................................................................4
I.2.4. Vòng lặp..........................................................................................4
I.2.5. Cấu trúc chơng trình.......................................................................6
I.2.6. Phơng thức......................................................................................7
I.2.7. Toán tử............................................................................................8
I.2.8. An toàn kiểu....................................................................................9
I.2.9. Kiểu liệt kê......................................................................................9
I.2.10. Namespaces..................................................................................9
I.2.11. Phơng thức Main()........................................................................9
I.2.12. Console I/O...................................................................................9
I.2.13. Sử dụng các ghi chú....................................................................10
I.2.14. Từ định danh và từ khoá.............................................................10
I.3. Hớng đối tợng trong C#.....................................................................11
I.3.1. Lớp và thừa kế..............................................................................11
I.3.2. Gọi các phiên bản cơ sở của các chức năng................................12
I.3.3. Các lớp và hàm Astract.................................................................12
I.3.4. Sealed các lớp và phơng thức.......................................................13
I.3.5. Những bổ từ truy cập....................................................................13

I.3.6. Thuộc tính.....................................................................................13
I.3.7. Lớp đối tợng..................................................................................14


Kho¸ luËn tèt nghiÖp

I.3.8. Ph¬ng thøc Tostring()...................................................................15

GV híng dÉn: Ths. Vò V¨n Nam

4

SV thùc hiÖn: Lª Thuú T©m


chơng II: lập trình c# với cơ sở dữ liệu.............................16
...........................................................................................
II.1. Tổng quan về ADO.NET.................................................................16
II.1.1. Các Namespace...........................................................................16
II.1.2. Các lớp dùng chung.....................................................................17
II.1.3. Các lớp cơ sở chuyên biệt...........................................................17
II.2. Sử dụng các Database Connection...................................................18
II.3. Commands........................................................................................23
II.3.1. Executing Commands.................................................................24
II.3.2. Gọi các Stored Procedure............................................................25
II.4. Tạo một Dataset................................................................................25
II.5. Các cố gắng thay đổi Dataset...........................................................26
II.6. Nguồn dữ liệu...................................................................................27
II.7. Gắn kết CSDL...................................................................................27
chơng III: Phân tích và thiết kế hệ thống......................28

III.1. Lựa chọn hớng phân tích................................................................28
III.2. Phân tích hệ thống cũ .....................................................................28
III.3. Thiết kế hệ thống mới ....................................................................28
III.4. Sơ đồ phân cấp chức năng ..............................................................29
III.5. Biểu đồ luồng dữ liệu......................................................................30
III.6. Mô hình thực thể và các thuộc tính................................................35
III.7. Thiết kế các file dữ liệu..................................................................40
chơng IV: Thiết kế Giao diện và thiết kế modul.........44
kết luận..............................................................................................48
lời kết...................................................................................................49
Tài liệu tham khảo.......................................................................50


Khoá luận tốt nghiệp

lời nói đầu
Cùng với sự phát triển của các lĩnh vực kinh tế, xã hội, nhu cầu ứng
dụng công nghệ thông tin ngày càng cao và không ngừng biến đổi. Khi hệ
thống càng phát triển, càng phức tạp thì các phơng thức quản lý cổ điển
truyền thống sẽ trở nên cồng kềnh và khó có thể đáp ứng đợc yêu cầu ngày
càng cao của hệ thống. Để xử lý các thông tin một cách nhanh chóng, chính
xác và có hiệu quả, đòi hỏi phải có sự hỗ trợ của một công cụ hiện đại, đó
chính là công nghệ thông tin.
Sự phát triển nhảy vọt của công nghệ thông tin đã tác động mạnh mẽ
đến các hoạt động xã hội, làm thay đổi một cách sâu sắc đến phong cách
sống làm việc của một xã hội. Công nghệ thông tin đã trở thành trụ cột chính
của nền kinh tế tri thức. ứng dụng công nghệ thông tin vào việc quản lý các
hoạt động xã hội và nghiên cứu khoa học đợc nhiều ngời quan tâm. Phạm vi
ứng dụng của công nghệ thông tin ngày càng mở rộng trên nhiều lĩnh vực:
truyền thông, đo lờng, tự động hoá, quản lý các hoạt động của con ngời và xã

hội Những lợi ích mà các phần mềm ứng dụng mang lại là đáng kể: xử lý
thông tin nhanh chóng, chính xác, khoa học, giảm bớt nhân lực và công sức,
phí tổn thấp và hiệu quả công việc nâng cao một cách rõ rệt.
Trong lĩnh vực công nghệ thông tin, các ngôn ngữ lập trình, các hệ
quản trị cơ sở dữ liệu không ngừng phát triển và đổi mới, cho phép chúng ta
xây dựng các phần mềm ứng dụng hỗ trợ việc quản lý các hoạt động xã hội
một cách tốt nhất.
Trong đề tài này tôi đề cập đến Tìm hiểu ngôn ngữ lập C# và ứng
dụng trong chơng trình quản lý Học viên ở Trung tâm tin học ngoại ngữ
Đại học Vinh.
Với tầm quan trọng của ứng dụng công nghệ thông tin trong quản lý
nên tôi muốn tìm hiểu ngôn ngữ lập trình C# và hệ quản trị cơ sở dữ liệu

GV hớng dẫn: Ths. Vũ Văn Nam

6

SV thực hiện: Lê Thuỳ Tâm


Khoá luận tốt nghiệp

Microsoft Access để xây dựng phần mềm quản lý Học viên ở Trung tâm Tin
học Ngoại ngữ Đại học Vinh.
Khoá luận bao gồm:
Chơng I.

Tìm hiểu về ngôn ngữ lập trình C#

Chơng II.


Lập trình C# với CSDL

Chơng III.

Phân tích và thiết kế hệ thống

Chơng IV.

Thiết kế giao diện và thiết kế Modul

Kết luận
Lời kết
Tài liệu tham khảo
Khoá luận đợc hoàn thành vào tháng 5 năm 2007 tại trờng Đại Học
Vinh, với sự hớng dẫn của thầy giáo Thạc sĩ Vũ Văn Nam. Nhân dịp này
tôi xin bày tỏ lòng biết ơn sâu sắc đến thầy, ngời đã định hớng và tận tình
giúp đỡ tôi trong quá trình học tập nghiên cứu. Cảm ơn các thầy cô giáo khoa
Công nghệ thông tin trờng Đại Học Vinh đã giảng dạy và chỉ bảo những vấn
đề liên quan đến đề tài. Xin cảm ơn các thầy cô ở Trung Tâm Tin học Ngoại ngữ trờng Đại Học Vinh đã tạo điều kiện cho tôi trong quá trình khảo
sát hệ thống và hoàn thành chơng trình ứng dụng này. Xin cảm ơn ngời thân
và bạn bè đã giúp đỡ tạo điều kiện cho tôi suốt quá trình học tập và hoàn
thành khoá luận.
Vinh, tháng 5 năm 2007.
Sinh viên

Lê Thùy Tâm

GV hớng dẫn: Ths. Vũ Văn Nam


7

SV thực hiện: Lê Thuỳ Tâm


Khoá luận tốt nghiệp

Chơng I

tìm hiểu về ngôn ngữ lập trình c#
I.1. Tổng quan về ngôn ngữ C#
C# là một ngôn ngữ lập trình hớng đối tợng đợc phát triển bởi
Microsoft, là phần khởi đầu cho kế hoạch .NET của họ.
C# đợc nghiên cứu và thiết kế trong hơn 3 năm bởi một đội ngũ chuyên
gia lập trình xuất sắc nhất của Microsoft. C# đợc phát triển dựa trên hai ngôn
ngữ, hay nói một cách khác là nó đợc bắt nguồn từ hai ngôn ngữ C++ và Java.
C# đợc miêu tả là ngôn ngữ có đợc sự cân bằng giữa C++, Visual Basic,
Delphi và Java. Công cụ hỗ trợ lập trình C# là Visual C#.NET.
C# là một ngôn ngữ lập trình mạnh, mới lập trình làm việc trên các đối
tợng. Nó hỗ trợ ngời lập trình trên mọi phơng diện, có thể nói nó cung cấp các
phơng tiện để lập trình tự động. C# có thể lập trình mọi thứ nếu cần.
Ngoài những u việt trên C# còn kết nối đợc với các hệ quản trị CSDL
khác nh Access, SQL,Nó tạo thuận lợi vô cùng cho ng ời lập trình khi lập
trình về quản lý hay lập trình liên quan đến web.
I.2. Cơ bản C#
C# là một ngôn ngữ lập trình hớng đối tợng do đó chúng ta phải nắm
vững thế nào là class, objects, interface v inheritance.
I.2.1. Biến
Một biến dùng để lu trữ giá trị mang một kiểu dữ liệu nào đó. Cú pháp
C# sau đây dùng để khai báo một biến: [ modifier ] datatype identifer. Với

Modifier là một trong những từ khoá: public, private, protected, còn
Datatype là kiểu dữ liệu (int, long, float) và identifier là tên biến.
Phạm vi hoạt động của biến là vùng đoạn mã mà từ đó biến có thể truy
xuất đợc. Trong một phạm vi hoạt động, không thể có hai biến cùng mang một
tên trùng nhau.

GV hớng dẫn: Ths. Vũ Văn Nam

8

SV thực hiện: Lê Thuỳ Tâm


Khoá luận tốt nghiệp

I.2.2. Hằng
Một hằng là một biến nhng trị của nó không thể thay đổi trong suốt thời
gian thi hành chơng trình. Đôi lúc ta cũng cần có những giá trị bao giờ cũng
bất biến. Những thuận lợi khi dùng hằng trong chơng trình của bạn:
+ Hằng làm cho chơng trình đọc dễ dàng hơn, bằng cách thay thế những
con số vô cảm bởi những tên mang đầy ý nghĩa hơn.
+ Hằng làm cho dễ sửa chơng trình hơn
+ Hằng làm cho việc tránh lỗi dễ dàng hơn.
I.2.3. Câu lệnh điều kiện
+ Câu lệnh điều kiện if
Cú pháp nh sau:
if (condition)
statement(s)
[else
statement(s)]


+ Câu lệnh Switch
Các câu lệnh if nằm lồng rất khó đọc, khó gỡ rối. Khi bạn có một loạt
lựa chọn phức tạp thì nên sử dụng câu lệnh switch
Cú pháp nh sau:
switch (biu thc)
{

casce biu thc rng buc:
cõu lnh
cõu lnh nhy
[default: cõu lnh mc nh]

}

I.2.4. Vòng lặp (Loops)
C# cung cấp cho chúng ta 4 vòng lặp khác nhau (for, while, do...while,
và foreach) cho phép chúng ta thực hiện một đoạn mã lặp lại cho đến khi đúng
điều kiện lặp
+ Vòng lặp for
Cỳ phỏp:
for (initializer; condition; iterator)
statement(s)

GV hớng dẫn: Ths. Vũ Văn Nam

9

SV thực hiện: Lê Thuỳ Tâm



Khoá luận tốt nghiệp

+ Vòng lặp while (The while Loop)
Cú pháp:
while(condition)
statement(s);

+ Vòng lặp do... while (The dowhile Loop)
bool condition;
do
{
// Vũng lp ny s thc hin ớt nht mt ln thm
chớ nu cõu iu kin sai
MustBeCalledAtLeastOnce();
condition = CheckCondition();
} while (condition);

+ Vòng lặp foreach (The foreach Loop)
Cho phép bạn duyệt qua tất cả các phần tử bản dãy hoặc các tập hợp
khác, và tuần tự xem xét từng phần tử một.
Cú pháp:
foreach (type identifier in expression) statement

+ Câu lệnh goto
goto Label1;
Console.WriteLine("This won't be executed");
Label1:
Console.WriteLine("Continuing execution from here");


+ Câu lệnh Break
Ta dùng câu lệnh break khi muốn ngng việc thi hành và thoát khỏi vòng
lặp
+ Câu lệnh Continue
Câu lệnh Contiue đợc dùng trong vòng lặp khi bạn muốn khởi động lại
một vòng lặp nhng lại không muốn thi hành một phần lệnh còn lại trong vòng
lăp, ở một điểm nào đó trong thân vòng lặp
+ Câu lệnh Return
Câu lệnh Return dùng thoát khỏi một hàm hành sự của một lớp, trả
quyền điều khiển về phía triệu gọi hàm (caller). Nếu hàm có một kiểu dữ liệu
GV hớng dẫn: Ths. Vũ Văn Nam

10

SV thực hiện: Lê Thuỳ Tâm


Khoá luận tốt nghiệp

trả về thì return phải trả về kiễu dữ liệu này, bằng không thì câu lệnh đợc dùng
không có biểu thức
I.2.5. Cấu trúc chơng trình
+ Lớp
Nh bạn đã biết, các class tạo nên một chơng trình lớn trong C#. Tuy
nhiên nó thực sự có khả năng viết 1chơng trình mà không sử dụng đến lớp, ở
đây chúng ta chỉ cần một ít về lớp. Lớp là một khuôn mẫu thiết yếu mà chúng
ta cần tạo ra đối tợng. Mỗi đối tợng chứa dữ liệu và các phơng thức chế tác
truy cập dữ liệu. Lớp định nghĩa cái mà dữ liệu và hàm của mỗi đối tợng riêng
biệt (đợc gọi là thể hiện) của lớp có thể chứa.
+ Các lớp thành viên

Dữ liệu và các hàm không có lớp đợc biết nh là lớp thành viên
+ Thành phần dữ liệu (Datamembers) là những thành phần chứa dữ liệu
cho lớp Trờng (fields), Hằng số (Constants) và sự kiện (events).
Fields là các biến kết hợp với lớp
Các hằng số có thể kết hợp với các lớp nh là biến. Chúng ta khai báo
một hằng số sử dụng từ khoá const. Nếu nó khai báo public thì có thể truy cập
ở ngoài lớp.
+ Hàm thành phần (Function Members):
Bao gồm các thuộc tính và các phơng thức. Chúng ta sử dụng các từ
khoá sau để bổ nghĩa cho một phơng thức:
Modifier
Description
new
Phng thc n mt phng thc k tha vi cựng kớ hiu
public Phng thc cú th c truy cp bt k
protected Phng thc cú th b truy xut khụng t lp nú thuc hoc t lp
dn xut;
internal Phng thc cú th c truy cp khụng cựng assembly
private Phng thc cú th c truy cp t bờn trong lp nú ph thuc
static Phng thc cú th khụng c tớnh trờn trờn mt lp th hin c
th
virtual Phng thc b ghi ố bi mt lp dn xỳõt
abstract Phng thc tru tng
override Phng thc ghi ố mt phng thc o k tha hoc tru tng.
GV hớng dẫn: Ths. Vũ Văn Nam

11

SV thực hiện: Lê Thuỳ Tâm



Khoá luận tốt nghiệp

Modifier
Description
sealed Phng thc ghi ố mt phng thc o k tha, nhng khụng th
b ghi ố t lp k tha ny
extern Phng thc c thc thi theo bờn ngoi t mt ngụn ng khỏc
+ Cấu trúc (Structs)
Ngoài các lớp nó cũng có thể để khai báo các cấu trúc, cấu trúc về cơ
bản bạn biết ngoại trừ chúng ta dùng từ khoá structs thay cho class.
I.2.6. Phơng thức
+ Khai báo phơng thức (Declaring Metholds)
Cú pháp khai báo trong C# gần nh giống với cách khai báo C, C++ và
Java. Chỉ khác là mỗi phơng thức đợc khai báo tách biệt public và private.
Không thể dùng public để nhóm các phơng thức định nghĩa. Ngoài ra tất cả
các phơng thức trong C# đợc định nghĩa trong lớp định nghĩa.
Trong C#, các phơng thức kèm theo các từ khoá dùng bổ nghĩa cho phơng thức, kiểu giá trị trả về, các tham số nhập vào và phần thân trong dấu
ngoặc kép.
[modifiers] return_type MethodName([parameters])
{
// Thõn phng thc
}

Mỗi tham số có tên của kiểu của tham số và tên mà nó đợc tham khảo
trong thân phơng thức, và cả giá trị trả về nếu có.
+ Gọi phơng thức (Invoking Methods)
+ Truyền tham số cho phơng thức (Passing Paramemter to Methods)
- Mảng (Arrays): là một cấu trúc dữ liệu cấu tạo bởi một số biến đợc gọi
là những phần tử mảng. Tất cả các phần tử này đều thuộc một kiểu dữ liệu.

Bạn có thể truy xuất phần tử thông qua chỉ số (Index).
Có nhiều loại mảng: mảng 1 chiều, mảng nhiều chiều
Cú pháp:
type[ ] array-name;

I.2.7. Toán tử
GV hớng dẫn: Ths. Vũ Văn Nam

12

SV thực hiện: Lê Thuỳ Tâm


Kho¸ luËn tèt nghiÖp

Bảng dưới đây trình bày một danh sách đầy đủ của shortcut operators
có giá trị trong C#:
Shortcut Operator

Tương đương

x++, ++x

x=x+1

x--, --x

x=x-1

x += y


x=x+y

x -= y

x=x–y

x *= y

x=x*y

x /= y

x=x/y

x %= y

x=x%y

x >>= y

x = x >> y

x <<= y

x = x << y

x &= y

x=x&y


x |= y

x=x|y

x ^= y

x=x^y

I.2.8. An toµn kiÓu (Type Safety)
+ Qu¸ tr×nh chuyÓn ®æi kiÓu (Type Conversions)
Chúng ta thường chuyển đổi dữ liệu từ một kiểu sang kiểu khác
+ Implicit Conversions
Bảng sau hiển thị cách chuyển đổi kiểu implicit được hỗ trợ trong C#.
From

To

sbyte

short, int, long, float, double, decimal

byte

short, ushort, int, uint, long, ulong, float, double, decimal

short

int, long, float, double, decimal


ushort

int, uint, long, ulong, float, double, decimal

int

long, float, double, decimal

uint

long, ulong, float, double, decimal

GV híng dÉn: Ths. Vò V¨n Nam

13

SV thùc hiÖn: Lª Thuú T©m


Khoá luận tốt nghiệp

From

To

long, ulong float, double, decimal
float

double


char

ushort, int, uint, long, ulong, float, double, decimal

I.2.9. Kiểu liệt kê
Phng ỏn thay th hng l enumeration (lit kờ), gm mt tp hp
nhng hng uc t tờn.
I.2.10. Namespaces
Namespace cung cp cho ta cỏch m chỳng ta t chc quan h gia cỏc
lp v cỏc kiu khỏc. Namespace (a bn hot ng ca cỏc tờn) l cỏch
m.NET trỏnh nộ vic cỏc tờn lp, tờn bin, tờn hm.... ng vỡ trựng tờn
gia cỏc lp.
Câu lệnh using
T khoỏ using giỳp bn gim thiu vic phi gừ nhng namespace
trc cỏc hm hnh s hoc thuc tớnh.
I.2.11. Phơng thức Main()
Đa phơng thức Main()
Khi mt C# console hoc ng dng Windows c biờn dch, theo mc
nh trỡnh biờn dch nhỡn vo phng thc Main() tho ỳng nh danh sỏch
di õy, v to ra phng thc lp tr ton b chng trỡnh, nu cú nhiu
hn mt phng thc Main(), trỡnh biờn dch s tr v thụng bỏo li do ú mt
chng trỡnh C# phi cha mt hm main(), c xem l im t nhp vo
chng trỡnh.
I.2.12. Console I/O
c mt ký t vn bn t ca s console, chỳng ta dựng phng
thc Console.Read(), giỏ tr tr v s l kiu int hoc kiu string tu ý. V
chỳng ta cng cú hai phng thc dựng vit ra chui ký t nh sau
. Console.Write() - Vit mt giỏ tr ra ca s window

GV hớng dẫn: Ths. Vũ Văn Nam


14

SV thực hiện: Lê Thuỳ Tâm


Khoá luận tốt nghiệp

. Console.WriteLine() - tng t trờn nhng s t ng xung hng
khi kt thỳc lnh
I.2.13. Sử dụng các ghi chú
ch ny chỳng ta xem phn n gin ca chng ny ú l thờm
cỏc ghi chỳ vo on mó. C# s dng kiu truyn thng ca C hng n (//...)
v nhiu hng (/*... */)
I.2.14. Từ định danh và từ khoá
Trong phn này chỳng ta kho sỏt cỏc quy tc t tờn cho cỏc bin,
lp, cỏc phng thc.. .
T nh danh l tờn chỳng ta t cho bin, nh ngha kiu s dng
nh cỏc lp, cu trỳc, v cỏc thnh phn ca kiu ny. C# cú mt s quy tc
nh rừ cỏc t nh danh nh sau:
. Chỳng phi bt u bng ký t khụng b gch di
. Chỳng ta khụng c s dng t khoỏ lm t nh danh
Trong C# cú sn mt s t khoỏ (keyword).
abstract

do

implicit

params


switch

as

double

in

private

this

base

else

int

protected

throw

bool

enum

interface

public


true

break

event

internal

readonly

try

byte

explicit

is

ref

typeof

case

extern

lock

return


uint

catch

false

long

sbyte

ulong

char

finally

namespace

sealed

unchecked

checked

fixed

new

short


unsafe

class

float

null

sizeof

ushort

const

for

object

stackalloc

using

continue

foreach

operator

static


virtual

decimal

goto

out

string

volatile

GV hớng dẫn: Ths. Vũ Văn Nam

15

SV thực hiện: Lê Thuỳ Tâm


Khoá luận tốt nghiệp

default

if

override

struct


delegate

void
while

I.3. Hớng đối tợng trong C#
I.3.1. Lớp và thừa kế
Lp trong C# c nh ngha vi cỳ phỏp sau:
class MyClass
{
private int someField;
public string SomeMethod(bool parameter)
{
}
}

Cỏc lp bao gm nhiu thnh viờn, mi thnh viờn l thut ng(term)
dựng ch n mt d liu hay mt chc nng no ú c nh ngha trong
lp ú. Vớ d chỳng ta dựng thut ng Function ch nhng thnh viờn cha
mó nh cỏc phng thc(methods), cỏc thuc tớnh(properties), constructor,
hay cỏc np chng toỏn hng(Operator Overloads). Tt c cỏc lp trong C# l
nhng kiu tham kho. Tc l khi bn khai bỏo mt kiu lp thỡ cú mt bin
lu tr s tham kho n mt th hin (instance) ca lp ú. V s dng lnh
new to ra mt i tng.
Đơn thừa kế:
C# h tr n tha k gia cỏc lp. Mt lp cú th tha hng nhng
thuc tớnh v phng thc t mt lp khỏc. Cỳ phỏp:
class MyDerivedClass: MyBaseClass
{
// functions and data members here

}

Cỳ phỏp ny khỏc vi C++ v phm vi, khụng cú b t truy cp(access
modifier). Tc l C# khụng h tr nh C++ v cỏc khỏi nim tha k public

GV hớng dẫn: Ths. Vũ Văn Nam

16

SV thực hiện: Lê Thuỳ Tâm


Khoá luận tốt nghiệp

hay private vỡ nú lm ngụn ng thờm phc tp. Trong thc t thỡ tha k
private rt ớt c s dng.
Trong C# mt lp bt but phi tha k t mt lp no ú. C# h tr
mt lp c s ton din gi l System.Object.
Phơng thức nạp chồng (Overloading)
C# h tr phng thc np chng vi mt vi dng phng thc khỏc
nhau v nhng c tớnh sau: tờn, s lng thụng s, v kiu thụng s. Nhng
nú khụng h tr nhng thụng s mc nh nh C++ v VB.
Trong C# cú mt vi im khỏc nh v thụng s trong cỏc phng thc
np chng cn bit nh sau:
. Nú khụng chp nhn hai phng thc ch khỏc nhau v kiu tr v.
. Nú khụng chp nhn hai phng thc ch khỏc nhau v c tớnh ca
mt thụng s ang c khai bỏo nh ref hay out.
Phơng thức Overriden và Hide:
Bng cỏch khai bỏo virtual trong mt hm lp c s thỡ cho phộp
hm ú c overriden trong bt k mt lp tha hng no. V khi gi

phng thc trong mt th hin ca lp tha hng thỡ phng thc ca lp
tha hng s c thi hnh m khụng quan tõm n phng thc ú lp c
s. Khỏc vi C++ v Java, trong C# nhng hm khụng c khai bỏo virtual
mc nh m bn phi khai bỏo virtual mt cỏch rừ rng v khi mt hm
mun override mt hm khỏc thỡ phi s dng t khoỏ override.
I.3.2. Gọi các phiên bản cơ sở của các chức năng (base versions of
functions)
Trong C# cú mt cỳ phỏp c bit gi nhng phiờn bn c s ca
mt phng thc t mt lp tha hng. Cỳ phỏp: base.<methodname>().
I.3.3. Các lớp và hàm Astract
C# cho phộp c lp v phng thc cú th khai bỏo abstract. Mt lp
abstract khụng c th hin v mt phng thc abstract khụng c thc
thi m phi c overriden trong bt k lp tha hng khụng abstract no.
Mt phng thc abstract s t ng c khai bỏo virtual.
GV hớng dẫn: Ths. Vũ Văn Nam

17

SV thực hiện: Lê Thuỳ Tâm


Khoá luận tốt nghiệp

I.3.4. Sealed các lớp và phơng thức
C# cho phộp cỏc lp v phng thc c khai bỏo sealed. Nu l lp
cú ngha l bn khụng c quyn tha k lp ú, nu l phng thc tc l
bn khụng c phộp override nú.
I.3.5. Những bổ từ truy cập (Aceess Modifiers)
Trong C# cung cp mt s lng nhng b t cho bit s tn ti ca
mt thnh viờn ca mt lp. C# cú 5 b t nh sau:

Accessibility

Mụ t

public

Bin v phng thc cú th c truy cp t bt k ni õu.

internal

Bin v phng thc ch cú th c truy cp trong cựng mt
gúi.

protected

Bin hay phng thc ch cú th c truy cp t kiu ca nú
hay t nhng kiu tha k kiu ú.

protected
internal

Bin hay phng thc cú th c truy cp t gúi hin ti, hay
t nhng kiu tha k kiu hin ti.

private

Bin hay phng thc ch cú th truy cp t trong kiu ca nú.

I.3.6. Thuộc tính (Properties)
nh ngha thuc tớnh trong C# bn dựng cỳ phỏp sau:

public string SomeProperty
{
get
{
return "This is the property value";
}
set
{
// do whatever needs to be done to set the property
}
}

Khỏc vi VB cỏc th tc get v set c nh ngha nh l nhng hm
riờng bit, trong C# chỳng c khai bỏo cựng nhau trong mt khai bỏo thuc

GV hớng dẫn: Ths. Vũ Văn Nam

18

SV thực hiện: Lê Thuỳ Tâm


Khoá luận tốt nghiệp

tớnh n.Trong VB bn khai bỏo tng minh tham s cho th tc set v cú th
chn tờn ca nú, nhng ngc li trong C# tham s ny hon ton gi lp v
luụn mang tờn l value.
+ Thuộc tính chỉ đọc và chỉ viết
Bn cú th to ra thuc tớnh ch c bng cỏch b th tc set trong khai
bỏo v to ra thuc tớnh ch ghi bng cỏch b th tc get trong khai báo thuc

tớnh ú.
+ Bổ từ truy cập
C# khụng cho phộp ci t nhng b t khỏc nhau cho th tc set v
get. Nu bn mun to ra mt thuc tớnh cú public c nhng li mun hn
ch protected trong gỏn thỡ u tiờn bn phi to thuc tớnh ch c vi b t
public sau ú to mt hm set() vi b t protected bờn ngoi thuc tớnh ú.
+ Thuộc tính Virtual và Abstract
C# cho phộp bn to mt thuc tớnh virtual hay abstract. khai bỏo
mt thuc tớnh virtual, overriden hay abstract bn ch cn thờm t khoỏ ú
trong lỳc nh ngha thuc tớnh.
I.3.7. Lớp đối tợng
Trong C#, nu bn khụng ch rừ rng mt lp thỡ tha k t mt lp
khỏc thỡ trỡnh biờn dch s t ng hiu rng lp ca bn tha k t lp
Object. u ny cú ngha l ngoi nhng thuc tớnh v phng thc m bn
nh ngha thỡ bn cú th truy cp n nhng phng thc protected v public
ca lp Object. V nhng phng thc ny cng cú trong tt c lp m bn
nh ngha.
Mt s phng thc c nh ngha trong lp Object l:
Phng thc

B t truy cp

string ToString()

public virtual

Tr v mt chui mụ t ca
i tng

int GetHashTable()


public virtual

c s dng nu thi hnh
t in

bool Equals(object obj)
GV hớng dẫn: Ths. Vũ Văn Nam

Chc nng

public virtual So sỏnh cỏc thc th ca i
19

SV thực hiện: Lê Thuỳ Tâm


Kho¸ luËn tèt nghiÖp

Phương thức

Bổ từ truy cập

Chức năng
tượng

bool Equals(object objA,
object objB)

public static


So sánh các thực thể của đối
tượng

bool ReferenceEquals(object
objA, object objB)

public static

So sánh hai sự tham khảo
đến một đối tượng

Type GetType()

public

Trả về chi tiết kiểu của một
đối tượng.

object MemberwiseClone()

protected

Tạo ra một bản copy của đối
tượng

void Finalize()

protected virtual


Đây là một dạng Destructor
của.Net

I.3.8. Ph¬ng thøc Tostring()
Tostring() là một cách tiện lợi để lấy một chuỗi mô tả đối tượng
Object.Tostring() được khai báo như virtual. Trong C#, các kiểu dữ liệu
có sẵn đã được override cho chúng ta để trả chuỗi đúng với sự mô tả của các
kiểu đó. Nếu bạn không override phương thức ToString() trong lớp bạn định
nghĩa, thì lớp bạn sẽ thừa kế sự thực thi phương thức ToString() của
system.Object và xuất ra tên lớp của bạn. Nếu bạn muốn phương thức
ToString() trả về một chuỗi chứa nội dung thông tin về giá trị của đối tượng
của lớp bạn tạo ra thì bạn phải override phương thức ToString().

GV híng dÉn: Ths. Vò V¨n Nam

20

SV thùc hiÖn: Lª Thuú T©m


Khoá luận tốt nghiệp

Chơng II

Lập trình C# với CSDL
II.1. Tổng quan về ADO.NET
Ging nh hu ht cỏc thnh phn ca.NET Framework, ADO.NET
khụng ch l v bc ca mt vi API sn cú. Nú ch ging ADO cỏi tờn - cỏc
lp v phng thc truy xut d liu u khỏc hon ton.
ADO (Microsoft's ActiveX Data Objects) l mt th viện ca cỏc thnh

phn COM ó tng c ca ngi trong mt vi nm tr li õy. Phiờn bn
hin ti l 2.7, cỏc thnh phn ch yu ca ADO l Connection, Command,
Recordset, v cỏc Field object. Mt connection cú th m c s d liu, mt
vi d liu c chn vo mt recordset, bao gm cỏc trng, d liu ny sau
ú cú th thao tỏc, cp nhp lờn server, v connection cn phi c úng li.
ADO cng gii thiu mt disconnected recordset, cỏi c dựng khi khụng
mun gi kt ni trong mt thi gian di.
ADO.NET cha hai khụng gian tờn c sở d liu - mt cho SQL
Server, v mt cỏi khỏc cho cỏc c s d liu c trỡnh by thụng qua mt
giao din OLE DB. Nu c s d liu ca bn chn l mt b phn ca OLE
DB, bn cú th d dng kt ni vi nú t.NET - ch cn dựng cỏc lp OLE DB
v kt ni thụng qua cỏc driver c s d liệu hin hnh ca bn.
II.1.1. Cỏc Namespace
Cỏc khụng gian tờn sau ch ra cỏc lp v cỏc giao din c dựng cho
vic truy xut d liu trong.NET:


System.Data - Cỏc lp truy xut d liu chung



System.Data.Common - Cỏc lp dựng chung bi cỏc data provider
khỏc nhau



System.Data.OleDb - Cỏc lp ca OLE DB provider




System.Data.SqlClient - Cỏc lp ca SQL Server provider



System.Data.SqlTypes Các kiu ca SQL Server

Cỏc lp chớnh trong ADO.NET c lit kờ di õy
GV hớng dẫn: Ths. Vũ Văn Nam

21

SV thực hiện: Lê Thuỳ Tâm


Khoá luận tốt nghiệp

II.1.2. Các lớp dùng chung
ADO.NET cha mt s lp c dựng khụng quan tõm l bn ang
dựng cỏc lp ca SQL Server hay l cỏc lp ca OLE DB.
Cỏc lp trong khụng gian tờn System.Data c lit kờ sau õy:


DataSet - i tng ny cha mt b cỏc DataTable, cú th bao
gm quan h gia cỏc bng, v nú c thit k cho truy xut d
liu khụng kt ni.



DataTable - Mt kho cha d liu. Mt DataTable bao gm mt
hoc nhiu DataColumns, v khi c to ra nú s cú mt hoc

nhiu DataRows cha d liu.



DataRow - Mt b giỏ tr, cú b con vi mt dũng trong bng c s
d liu, hoc mt dũng ca bng tớnh.



DataColumn - Cha cỏc nh ngha ca mt ct, chng hn nh tờn
v kiu d liu.



DataRelation - Mt liờn kt gia hai DataTable trong mt DataSet.
S dng cho khúa ngoi v cỏc mi quan h ch t.



Constraint - nh ngha mt qui tc cho mt DataColumn (hoc một
b cỏc ct d liu), nh cỏc giỏ tr l c nht.

Sau õy l hai lp c tỡm thy trong khụng gian tờn
System.Data.Common:


DataColumnMapping - nh x tờn ca mt ct t c s d liu vo
tờn ca mt ct trong mt DataTable.




DataTableMapping - nh x tờn ca mt bng t c s d liu vo
mt bng trong mt DataSet.

II.1.3. Các lớp cơ sở chuyên biệt
B sung cho cỏc lp dựng chung trờn, ADO.NET cú mt s cỏc lp
d liu chuyờn bit c a ra di õy. Cỏc lp ny thc thi mt b cỏc
giao din chun c nh ngha trong khụng gian tờn System.Data, cho phộp
s dng cỏc lp cú cựng kiu giao din. Vớ d c hai lp SqlConnection v
OleDbConnection thc thi giao din IDbConnection.
GV hớng dẫn: Ths. Vũ Văn Nam

22

SV thực hiện: Lê Thuỳ Tâm


Kho¸ luËn tèt nghiÖp


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.



SqlTransaction, OleDbTransaction - Một giao tiếp cơ sở dữ liệu,
đượ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í.

II.2. Sö dông c¸c Database Connection
Trong trình tự truy xuất cơ sở dữ liệu, bạn cần cung cấp các thông số
kết nối, chẳng hạn như thiết bị mà cơ sở dữ liệu đang chạy, và khả năng đăng
nhập của bạn. Bất kì ai đã từng làm việc với ADO sẽ dễ dàng quen với các lớp
kết nối của.NET, OleDbConnection và SqlConnection:

GV híng dÉn: Ths. Vò V¨n Nam

23

SV thùc hiÖn: Lª Thuú T©m


Kho¸ luËn tèt nghiÖp

Đoạn mã sau đây mô tả cách để tạo, mở và đóng một kết nối đến cơ sở
dữ liệu Northwind. Các ví dụ trong chương này chúng ta dùng cơ sở dữ liệu
Northwind, được cài đặt chung với các ví dụ của.NET Framework SDK:
using System.Data.SqlClient;
string source = "server=(local)\\NetSDK;" +
"uid=QSUser;pwd=QSPassword;" +
"database=Northwind";
SqlConnection conn = new SqlConnection(source);
conn.Open();
// Do something useful
conn.Close();

Chuỗi kết nối sẽ trở nên thân thiện nếu bạn đã từng dùng ADO hay
OLE DB trước đây - thật vậy, bạn có thể cắt và dán từ mã cũ của bạn, nếu bạn
dùng OleDb provider.



server=(local)\\NetSDK - Nó biểu diễn database server được kết nối.
SQL Server cho phép một số các tiến trình database server processes
khác nhau chạy trên cùng một máy, vì vậy ở đây chúng ta thực hiện
kết nối với tiến trình NetSDK trên máy cụ bộ.



uid=QSUser - Tham số này mô tả người dùng cơ sở dữ liệu. Bạn
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. Bạn 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.

Vì trên mở một kết nối cơ sở dữ liệu dùng chuỗi kết nối đã được
định nghĩa, sau đó đóng kết nối lại. Khi kết nối đã được mở, bạn có thể
phát các lệnh để thao tác trên cơ sở dữ liệu, và khi hoàn tất, kết nối có thể
được đóng lại.
GV híng dÉn: Ths. Vò V¨n Nam


24

SV thùc hiÖn: Lª Thuú T©m


Kho¸ luËn tèt nghiÖp

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 bạn 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 bạn 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ế 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ã của bạn để
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.
C¸ch 1: Tùy chọn một - try/catch/finally
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 bạn đã đóng các kết

nối trong khối lệnh finally. Đây là một ví dụ nhỏ:
try
{
// Open the connection
conn.Open();
// Do something useful
}
catch (Exception ex)
{

GV híng dÉn: Ths. Vò V¨n Nam

25

SV thùc hiÖn: Lª Thuú T©m


×