xây dựng phần mềm hỗ trợ môn học kỹ thuật lập trình c - Pdf 24

HUTECH
MC LC

LI NÓI U
CHNG 1 : TNG QUAN 1
1.1 GII THIU 2
1.2 THC T NHNG PHN MN ANG S DNG 2
1.3 MC TIÊU CA PHN MM 2
CHNG 2 : C S LÝ THUYT 4
2.1 NGÔN NG LP TRÌNH C 5
2.1.1 Lch s ngôn ng C 5
2.1.2.Tìm hiu tng quan v ngôn ng C 5
2.1.2.1 Các kiu d liu 4
2.1.2.2 Toán t 5
2.1.2.3 Con tr (Pointer) 5
2.1.2.4 Hàm (Function) 5
2.2 CÔNG NGH & CÔNG C C S DNG 6
2.2.1 B visual studio.net 6
2.2.2 Tng quan v C# 9
2.2.2.1 Các thành phn m rng C# 9
2.2.2.2 Các kiu d liu trong C# 10
2.2.2.3 Biu thc toán t 11
2.2.2.4 Phát biu điu kin và vòng lp 12
2.2.2.5 Lp và tha k 13
2.2.2.6 a hình 17
2.2.2.7 Giao din 19
2.2.3 S LC V UML 21
2.2.3.1 Gii thiu 21
2.2.3.2 Ngun gc ca UML 22
2.2.
3.3 Biu đ usecase 22

4.3.1 Ly danh sách bài hoc 61
4.3.2 Ly danh sách chng 62
4.3.3 Ly bài tp 63
4.3.4 Ly bài hoc 63
4.3.5 Ly mt chng 64
4.3.6 Thêm ngi dùng 65
4.3.7 Kim tra ngi dùng 66
4.3.8 Thêm th vin 67
4.3.9 Cp nht th vin 68
4.3.10 Ly d liu 68
4.4 DESIGN PATTERN 69
4.4.1 Singleton pattern 69
4.4.2 Adapter pattern 69
4.4.3 Factory Method pattern 71
4.4.4 Proxy pattern 72
4.5 THIT K C S D LIU, GIAO DIN PHN MM 73
4.5.1 Thit k c s d liu 73
4.5.1.1 Mô hình thc th ERD 73
4.5.1.2 Mô hình quan h trong SQL Server 79
4
.5.2 Giao din phn mn 79
4.5.2.1 Giao din chính 80
4.5.2.2 Khi chy debug 81
4.5.2.3 Bài tp 82
CHNG 5 : KT LUN VÀ HNG PHÁT TRIN 84
5.1 NHNG IU Ã LÀM C 84
5.2 NHNG IU CHA LÀM C 85
5.3 HNG PHÁT TRIN 85
TÀI LIU THAM KHO 86


đc đu t nhiu.
HUTECH
Lun vn tt nghip 2 GVHD:ThS. Trng Th Minh Châu SV thc hin: Nguyn Hoàng V

1.3 MC TIÊU CA PHN MM
1.3.1 Giúp đ ngi bt đu hc lp trình
Mt khóa hc s bao gm nhiu chng. Mi chng s có bài lý thuyt và
nhng bài tp nh nhm giúp ngi dùng quen vi lp trình.
Kt thúc mi chng s có bài kim tra kin thc di dng trc nghim.
Ngoài ra ngi dùng cng có th chn:
Làm mt bài kim tra tng hp v mt phn nào đó.
Chn mt bài hc hoc mt chng nào đó trong chng trình.
1.3.4 Thit k sao cho d dàng thay đi/nâng cp/bo trì
Thit k và cài đt bt buc phi theo mô hình lp.
Hng phát trin:
a lên website
Cho phép ngi dùng t son tho mt chng trình hc
(VD: Hc toán, …).
1.3.5 Gii pháp xây dng phn mm
S dng môi trng Visual Studio .NET 2003, ngôn ng lp trình C# mt
trong nhng ngôn ng lp trình cp cao mnh hin nay. Tn dng kh nng lp trình
hng đi tng và công c ADO ca Microsoft.
Phn mm s dng h qun tr c s d liu SQL Server 2000.
S dng ngôn ng UML thit k chng trình.
Phn mm đc thit k theo mô hình 3 lp.
ng dng Design Pattern vào thit k mô hình lp.
HUTECH


SV thc hin: Nguyn Hoàng V CHNG 2
C S LÝ THUYT

2.1 NGÔN NG LP TRÌNH C
2.1.1 Lch s ngôn ng C
Ngôn ng C đc phát trin t hai ngôn ng trc đó là BCPL và B. BCPL
đc phát trin bi Martin Richards nm 1967 và là ngôn ng dành đ vit các phn
mm h điu hành và các trình biên dch. Ken Thomspon phát trin ngôn ng B, có
nhiu đim bt chc BCPL. Và B đc dùng đ vit phiên bn đu tiên ca h điu
hành UNIX ti Bell Laboratories nm 1970.
Ngôn ng C đc Dennis Ritchie  Bell Laboratories đc phát trin t B vào
nm 1972. C đc ph b in ban đu do vic là ngôn ng phát trin cho h điu hành
UNIX. Ngày nay hu nh tt c h điu hành ch cht đu đc vit bng C hay C++.
2.1.2 Tìm hiu tng quan v ngôn ng C

2.1.2.1 Các kiu d liu

Chng trình C, cng ging nh nhng ngôn ng kh ác, chúng ta cung cp d
liu (s, ch, …) và mô t cách thc hin công vic. Và chúng ta trong đi kt qu t
nhng d liu trên. Do đó, điu cn thit trong chng trình C là phi phân loi tt c
các d liu bng cách chia chúng theo kiu d liu (data type). C có 4 kiu d liu cn
bn là : ký t (character), du chm đng (floating point number), tinh xác đôi (double
precision). Trong C dùng 7 t khóa đ phân bit kiu d liu khác nhau :
int, long,
short, unsigned, char, float và double.
HUTECH


HUTECH
Lun vn tt nghip 6 GVHD:ThS. Trng Th Minh Châu SV thc hin: Nguyn Hoàng V

có th s dng tt vi cùng mc đích  chng trình khác. Chng trình vit theo C
thng là mt phi hp s dng hai lai hàm:
Hàm do ngi s dng vit.
Hàm trong th vin chun ca C (ví d nh printf (), scanf ()).
2.2 CÔNG NGH & CÔNG C C S DNG
2.2.1 B VISUAL STUDIO.NET
.NET là gì?
.NET không ch là mt cái tên gi mà nó còn đi din cho tòan b các công
ngh và các khái nim cu thành mt nn tng đ ngi lp trình xây dng các dng
dng trên nó. Visual Basic .NET có mt s phiên bn thc s là 7.0 nhng s này ít
đc s dng.
Có th hiu .NET là mt lp tn ti bên di các ng dng và cung cp mt tp
các chc nng và các dch v c bn. Lp này cha mt tp các ng dng và các h
điu hành gi là các .NET server; mt tp các đi tng c s gi là .NET Framework,
và mt tp các dch v h tr cho tt c các ngôn ng .NET là Common Language
Runtime (CLR). Các phn này đc tách bit nh trong hình:


Lun vn tt nghip 8 GVHD:ThS. Trng Th Minh Châu SV thc hin: Nguyn Hoàng V

Mt đng c chuyn đi dng d liu (data-transformation engine) da trên
XML gi là Microsoft BizTalk Server

.NET Framework
Khi chuyn qua Visual Basic .NET, nhiu th đã đc thay đi mt cách trit
đ; mt trong chúng là s phát trin ca mt nn tng mi cho tt c các công c phát
trin ca .NET. Nn tng c s này, gi là .NET Framework, cung cp hai th chính:
môi trng thc thi c s (base runtime environment) và mt tp các lp nn tng
(foundation class). Base Environmet cung cp mt lp nm gia các chng trình và
phn còn li ca h thng, thc hin các dch v cho các ng dng ca ngi lp trình
và đn gin hóa vic x lý đn chc nng ca các lp thp hn. Các lp nn tng cung
cp mt tp ln các chc nng xây dng sn, nh x lý tp tin, thao tác vi XML, …
.NET Framework cng cung cp mt tp các hàm API ca riêng nó đ giúp cho
ngi lp trình tn dng đc ht các kh nng ca nó.
.NET Service
.NET có các khái nim mà vt xa hn các chi tit ca lp trình đ mô t cách
các h thng đc xây dng và cách chúng có th tng tác. Mt trong các khái nim
trên là ý tng Web Services, chc nng đc phân theo mt quy lut nht quán thông
qua Internet. Các dch v này cho phép mt công ty hay t chc cung cp chc nng
mà chc nng này đc thc hin hoàn toàn bên trong môi trng ca h. Mt ví d
ca các dch v này là dch v thanh tóan hóa đn, mt công ty có các sever và các ng
dng trong chính công ty ca h mà có th thc hin và qun lý đc vic thanh toán
hóa đn. Công ty này cung cp dch v đó cho các công ty khác thông qua dch v
Web. Dch v này khác vi vic cung cp mt trang Web thông thng; đây là mt
giao tip mà các ng dng hay các trang Web khác có th s dng chc nng đc

Ngoài ra, đ biên dch và s dng đc chng trình vit bng ngôn ng C# cn
phi có môi trng gi là FrameWork Software Development Kit (SDK), cng nh
chng trình vit bng ngôn ng Java cng cn phi có môi trng là Java
Development Kit (JDK).
HUTECH
Lun vn tt nghip 10 GVHD:ThS. Trng Th Minh Châu SV thc hin: Nguyn Hoàng V

T khóa using dùng tham chiu đn nhng th vin có sn trong .NET
Framework (tng t nh trong C là include<tên th vin>, hoc trong Java là import).
System là tên ca mt không gian tên (Namespace), có đn 90 không gian tên s dng
bt đu bng tên System trong .NET Framework, các không gian tên quan trng nh
System.Drawing, System.Windows.Forms,….

2.2.2.2.Các kiu d liu C#

Kiu Mô t
object Lp c s ca tt c các đi tng trong C#
string Dãy các ký t  dng Unicode
sbyte Nguyên có du 8-bit
short Nguyên có du 16-bit
Int Nguyên có du 32-bit
Long nguyên có du 62-bit
Byte Nguyên không du 8-bit
Ushort Nguyên không du 16-bit
Uint Nguyên không du 32-bit
Ulong Nguyên không du 64-bit
Float S chm đng có đ chính xác đn

Trong ngôn ng C, toán t && và || là hai toán t lun lý, nhng trong ngôn ng
C# thì hai toán t này ch đc đnh ngha cho kiu d liu lun lý và c trong phép
toán so sánh điu kin.
HUTECH
Lun vn tt nghip 12 GVHD:ThS. Trng Th Minh Châu SV thc hin: Nguyn Hoàng V 2.2.2.4 . Phát biu điu kin và vòng lp
Câu lnh lp foreach
Vòng lp foreach cho phép to vòng lp thông qua mt tp hp hay mt mng.
ây là mt câu lnh lp mi không có trong ngôn ng C/C++. Câu lnh foreach có
cú pháp chung nh sau:
foreach ( <kiu tp hp> <tên truy cp thành phn > in < tên tp hp>)
<Các câu lnh thc hin>
Do lp da trên mt mng hay tp hp nên toàn b vòng lp s duyt qua tt c các
thành phn ca tp hp theo th t đc sp. Khi duyt đn phn t cui cùng trong
tp hp thì chng trình s thoát ra khi vòng lp foreach.
Namespace
Nh chúng ta đã bit .NET cung cp mt th vin các lp đ s và th vin
này có tên là FCL (Framework Class Library). Trong đó Console ch là mt lp nh
trong hàng ngàn lp trong th vin. Mi lp có mt tên riêng, vì vy FCL có hàng
ngàn tên nh ArrayList, Dictionary, FileSelector,…
iu này làm ny sinh vn đ, ngi lp trình không th nào nh ht đc tên
ca các lp trong .NET Framework. T hn na là sau này có th ta to li mt lp
trùng vi lp đã có chng hn. Ví d trong quá trình phát trin mt ng dng ta cn
xây dng mt lp t đin và ly tên là Dictionary, và điu này dn đn s tranh chp
khi biên dch vì C# ch cho phép mt tên duy nht.

nhng lp ch đnh có th k tha nhng chc nng ca lp c s. C# ch h tr tha
k đn. C++ cho phép đa tha k và nu đc s dng đúng cách đây tht s là đim
rt mnh. Tuy nhiên, phi tha nhn là đa tha k rt khó qun lý và khó áp dng.
ây là mt trong nhng lý do C# ch phát trin đa tha k. HUTECH
Lun vn tt nghip 14 GVHD:ThS. Trng Th Minh Châu SV thc hin: Nguyn Hoàng V Thu
Cho
Meo

Lp c s Dog s cha thuc tính và phng thc chung cho tt c các ging
chó. Mi lp dn xut có th cài đt cá bit hóa thêm nu thy cn thit. iu rt quan
trng nên chú ý rng C# ch k tha dng public.
public class Thu
{
public void Keu();
}

public class Meo: Thu
{
}
public class Cho : Thu
{

s thit k này ging nh là internal hay protected.
Các lp cng nh nhng thành viên ca lp có th đc thit k vi bt c
mc đ truy xut nào. Mt lp thng có mc đ truy xut m rng hn cách thành
viên ca lp, còn các thành viên thì mc đ truy xut thng có nhiu hn ch. Do
đó, ta có th đnh ngha mt lp MyClass nh sau: HUTECH
Lun vn tt nghip 16 GVHD:ThS. Trng Th Minh Châu SV thc hin: Nguyn Hoàng V

public class MyClass
{
protected int myValue;
}
Nh trên bin thành viên myValue đc khai báo truy xut protected mc dù
bn thân lp đc khai báo là public. Mt lp public là mt lp sn sàng cho bt c
lp nào khác mun tng tác vi nó. ôi khi mt lp đc to ra ch đ tr giúp cho
nhng lp khác trong mt khi assemply, khi đó nhng lp này nên đc khai báo
khóa internal hn là khóa public.
Truyn tham s
Nh đã tho lun trong chng trc, tham s có kiu d liu là giá tr thì s
đc truyn giá tr vào cho phng thc. iu này có ngha rng khi mt đi tng
có kiu là giá tr đc truyn vào cho mt phng thc, thì có mt bn sao chép đi
tng đó đc to ra bên trong phng thc. Mt khi phng thc đc thc hin
xong thì đi tng sao chép này s đc hy. Tuy nhiên, đây ch là trng hp bình
thng, ngôn ng C# còn cung cp kh nng cho phép ta truyn các đi tng có kiu
giá tr di hình thc là tham chiu. Ngôn ng C# đa ra mt b sung tham s là ref

override.
class Thu
{
public virtual void Keu();
}
class Meo : Thu
{
public override void Keu();
}
HUTECH
Lun vn tt nghip 18 GVHD:ThS. Trng Th Minh Châu SV thc hin: Nguyn Hoàng V

T khóa override
Trong ngôn ng C#, ngi lp trình có th quyt đnh ph quyt mt phng
thc o bng cách khai báo tng minh t khóa override. iu này giúp cho ta đa
ra mt phiên bn mi ca chng trình và s thay đi ca lp c s s không làm nh
hng đn chng trình vit trong các lp dn xut. Vic yêu cu s dng t khóa
override s giúp ta ngn nga vn đ này.
Lp tru tng
 yêu cu các lp con (lp dn xut) phi thc thi mt phng thc ca lp
c s, chúng ta phi thit k mt phng thc mt cách tru tng.
Nhng lp tru tng đc thit lp nh là c s cho nhng lp dn xut,
nhng vic to các th hin hay các đi tng cho các lp tru tng đc xem là
không hp l. Mt khi chúng ta khai báo mt phng thc là tru tng, thì chúng ta
phi ngn cm bt c vic to th hin cho lp này.
Phng thc tru tng đc thit lp bng cách thêm t khóa abstract vào
đu ca phn đnh ngha phng thc, cú pháp thc hin nh sau:

Cú pháp đ đnh ngha mt giao din nh sau:
[thuc tính] [b sung truy cp] interface <tên giao din> [: danh sách c s]
{
<phn thân giao din>
}
Phn thuc tính chúng ta s đ cp sau. Thành phn b sung truy cp bao gm:
public, private, protected, internal, và protected internal đã đc đ cp.
Theo sau t khóa interface là tên ca giao din. Thông thng tên ca giao
din đc bt đu vi t I hoa (điu này không bt buc nhng vic đt tên nh vy
rt rõ ràng và d hiu, tránh nhm ln vi các thành phn khác).
HUTECH
Lun vn tt nghip 20 GVHD:ThS. Trng Th Minh Châu SV thc hin: Nguyn Hoàng V

Ví d:
interface Alarm
{
void SetTime ();
}
public class AlarmClock : Alarm
{
}
M rng giao din
C# cung cp chc nng cho chúng ta m rng mt giao din đã có bng cách
thêm các phng thc và các thành viên hay b sung cách làm vic cho các thành
viên.
Ví d
Interface Clock : Alarm

<biu thc> as <kiu d liu>
2.2.3 S LC V UML
2.2.3.1 Gii thiu
Ngôn ng hp nht UML (Unified Modeling Language) là mt ngôn ng trc
quan cung cp cho các nhà phân tích thit k hng đi tng mt cách hình dung ra
các h thng phn mm, mô hình hóa các t chc nghip v s dng các h thng
phn mm này; cng nh xây dng chúng và làm tài liu v chúng.
UML là ngôn ng trc quan đc dùng trong quy trình phát trin các h thng
phn mm, là ngôn ng đc t hình thc
HUTECH
Lun vn tt nghip 22 GVHD:ThS. Trng Th Minh Châu SV thc hin: Nguyn Hoàng V

2.2.3.2 Ngun gc UML

K thut phát trin phn mm hng đi tng đã tri qua 3 giai đon:
Các ngôn ng lp trình hng đi tng đc phát trin và bt đu đc s
dng.
Các k thut và phân tích thit k hng đi tng đc to ra nhm giúp đ
công vic mô hình hóa nghip v, phân tích yêu cu và thit k các h thng phn
mm.
UML đc thit k nhm kt hp các đc đim tt nht ca mt s k thut và
ký hiu trong phân tích thit k đ to ra mt tiêu chun công nghip.
2.2.3.3 Biu đ use case
Use case cung cp mt bc tranh tòan cnh v nhng gì đang xy r a trong h
thng hin ti hoc nhng gì s xy ra trong h thng mi, do đó có rt nhiu d án tin
hc đc bt đu t các use case.
Biu đ use case đa ra các use cae (tình hung s dng) và các actor (tác

phn ca mô hình. Nó ch cho ta thy các thuc tính và các thao tác ca lp, cng nh
lai quan h ca các lp.
Các tng tác và cng tác thc s xy ra đ h tr cho bt k mt yêu cu cha
nng nào, biu din mt tuyn nào đó nào đó trên s đ. Tuyn này s len li
(navigate) t lp này sang lp khác thông qua các mi quan h gia chúng. Lu ý là
ch có th thông thng gia hai đim bng cách xut phát t đim đu đi qua các
đim trung gian hp l và ti đim đích.
Tên use case

Trích đoạn Mô hình qua nh trong SQL Server
Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status