III. Mét sè giao diơn chÝnh cĐa chŨng trÈnh 1 Form giao diơn chÝnh cĐa chŨng trÈnh.
5. Form tÝnh hảc băng sinh viởn
Chng IV : CÌi ợật vÌ hắng phĨt triốn
1. CÌi ợật Visual Foxpro Ỉ Yởu cđu vồ hơ ợiồu hÌnh:
Hơ ợiồu hÌnh Windows 95 hoậc phiởn bộn mắi hŨn. Ỉ Yởu cđu vồ mĨy
- MĨy 486 vắi tèc ợé cĐa bé xö lý 66Mhz hoậc lắn hŨn.
- Chuét
- Bé nhắ 16 MB RAM.
- ớưa cụng cã dung lîng cßn lÓi 85 Mb(nỏu cÌi ợật Typical), 90 MB nỏu cÌi ợđy ợĐ.
- MÌn hÈnh VGA hoậc cao hŨn, cã ợé phờn giội tèt. Ỉ Tiỏn hÌnh cÌi ợật
CÌi ợật Visual Foxpro bững ợưa CD, hay ợưa mồm. Trắc khi cÌi ợật Visual Foxpro, phội t¾t chỏ ợé bộo vơ chèng Virus. CĨc bắc cÌi ợật nh sau:
- ớa ợưa CD vÌo ă CD. - Chản lơnh Run.
- Gâ lơnh X:\SETUP, trong ợã X chừ tởn ă ợưa Cd, sau ợã nhÊn phÝm Enter hoậc chản Ok.
- Chản nhƠng cĨch cÌi ợật sau:
- CÌi tèi thiốu (15MB): chừ cÌi mét sè File thiỏt yỏu cĐa Visual Foxpro. - CÌi ợđy ợĐ : yởu cđu 192 MB ợưa trèng.
2. ớĨnh giĨ kỏt qu thùc hiơn vÌ phng hắng phĨt triốn.
Sau mét thêi gian thùc hiơn, chŨng trÈnh ợîc hoÌn thÌnh vÌ ợỈ ợÓt ợîc nhƠng kỏt qĐa nhÊt ợẺnh. Cã thố cẹp nhẹt hạ sŨ sinh viởn, nhẹp ợiốm cho sinh viởn sau mçi kÈ thi, in bộng ợiốm cho mçi sinh viởn sau khi tèt nghiơp vÌ cã thố tÈm kiỏm thỡng tin vồ sinh viởn....Tuy nhiởn do thêi gian hÓn chỏ nởn chng trÈnh khỡng thố trĨnh ợîc nhƠng sai sãt trong quĨ trÈnh thùc hiơn.
PhŨng hắng trong tŨng lai tiỏp tôc phĨt triốn ợố chŨng trÈnh ngÌy cÌng phĨt triốn hŨn ợố cã thố trẽ thÌnh mét phđn mồm hoÌn chừnh
3. Cộm Ũn
Trong quĨ trÈnh thùc hiơn vắi sù gióp ợì rÊt tẹn tÈnh cĐa thđy Th. ChŨng trÈnh ợîc hoÌn thÌnh mét cĨch tèt ợỦp, nhê trong quĨ trÈnh thùc hiơn thđy rÊt tẹn tÈnh chừ bộo, kố cộ nhƠng lóc bẹn rén nhÊt thđy còng luỡn sỎn sÌng bắt chót thêi gian giội ợĨp th¾c m¾c. VÈ vẹy gióp cho em thÊy ợîc nhƠng lçi mÌ mÈnh khỡng phĨt hiơn ra vÌ nhê ợã mÌ em rót ra ợîc nhiồu kinh nghiơm quý bĨu. Em rÊt cộm Ũn sù hắng dÉn tẹn tÈnh cĐa thđy.
Mét sè Code cĐa chng trÈnh: 1. Chng trÈnh chÝnh: clear all
clear set talk off set date french SET STATUS OFF
SET COLOR TO b+/GB+ set cent on
set noti off set safe off
set exclusive off && De nhieu nguoi cung mo duoc du lieu(Chay tren mang)
set dele on
Public _Curpath, _Datapath, _Temppath,_AppTitle, _CurUser, _CurPass _Curpath = SYS(5)+CURD()
_Temppath = "C:\TEMP\"
_AppTitle = "Qun lý sinh viởn Version 1.0" _Datapath = SYS(5)+CURD()+"DATA\" _CurUser = []
_CurPass = [] _CodeLogin= []
*DO GetDataPath && Bien doi gia tri dung cua _Datapath *If !File(_Datapath+ "QLSV.DBC")
* =MessageBox("Cha cã file c sẽ dƠ liơu...",0,_AppTitle) * Return .f.
*Endif
Do form Manhinh\Login
Open database (_Datapath+ "QLSV") do HideWindow
_screen.picture="bitmap\qlsv.bmp" _screen.picture="bitmap\Bandoc.jpg" _Screen.Icon = "bitmap\Qlsv.ico"
_screen.Caption = "Chng trÈnh qun lý sinh viởn -Lở Thanh tuÊn- Tin 41B" _screen.Closable = .f. _screen.Maxbutton=.f. _screen.MinButton=.t. _Screen.Height=600 _screen.Width=800 do qlsvmenu.mpr keyboard "{ALT+D}"
read event clear all clear *---* Procedure Getdatapath If !File("Bitmap\QLSV.INI") DO Form Manhinh\DataPath Endif mHandle = FOPEN("Bitmap\QLSV.INI") S=FGets(mHandle) _Datapath = Allt(Substr(s,AT("=",S)+1)) =Fclose(mHandle) Return *--- Procedure HideWindow =HideWind("Color Palette") =HideWind("Database Designer") =HideWind("Form Controls") =HideWind("Form Designer") =HideWind("Layout") =HideWind("Print Preview") =HideWind("Query Designer") =HideWind("Report Constrols") =HideWind("Report Designer") =HideWind("Standard") =HideWind("View Designer") Return *---* Procedure HideWind para p_WinddowName If wexist(p_WinddowName)
Hide window (p_WinddowName) Endif Return *---* Procedure ShowWind para p_WinddowName If wexist(p_WinddowName)
Show window (p_WinddowName) Endif
*---* Function MoDBF
para p_file, p_alias, p_Co_mo_Exclusive Private p_para p_para = PARA() If used(p_alias) If p_para=3 =DongDBF(p_alias) select 0
use (p_file) alias (p_alias) Exclusive Else Select (p_alias) Endif Else select 0 If p_para=3
use (p_file) alias (p_alias) Exclusive Else
use (p_file) alias (p_alias) Endif Endif return *---* Function DongDBF para p_alias If used(p_alias) use in (p_alias) Endif return *---* Function GetLopSv
Para p_maso, p_namhoc
Private p_malop, p_FileLopsv, p_da_mo, p_Tag, p_curr, p_nam1, p_nam2 p_malop= "" p_nam1 = Val(Left(p_namhoc,4)) p_nam2 = Val(Right(p_namhoc,4)) p_curr = SELE() p_FileLopsv = _Datapath+"LOPSV" If Used('LOPSV')
Select LOPSV p_Tag = Tag()
Set order to i_LopSV p_da_mo = .T.
ELse
=MoDbf(p_FileLopsv,[LOPSV]) Set order to i_LopSV
p_da_mo = .F. Endif
*--- set near on seek p_maso set near off If Found()
scan while maso=p_maso
if year(tungay)<=p_nam1 if empty(denngay) p_malop = malop exit else if year(denngay)>=p_nam2 p_malop = malop exit endif endif endif ends Endif
IF p_da_mo And !Empty(p_Tag) Set order to (p_Tag)
Endif If !p_da_mo =Dongdbf('LOPSV') Endif Select (p_curr) Return p_malop
* CHUONG TRINH CHUAN HOA DU LIEU TRONG FOXPRO set talk off
clea
defi wind w from 0,0 to 21,106 font '.VnTime' defi wind w1 from 0,0 to 18,106 font '.VnTime' acti wind w
***
dgd=spac(30)
@1,5 say 'Tởn ợêng dÉn tắi tơp dƠ liơu cđn s¾p xỏp ' font '.VnTime',12 styl 'BI' get dgd font 'system'
read
dng=allt(dgd) set defa to &dng clea
@3,5 say ' NhƠng tơp dƠ liơu cã ẽ trong th môc hiơn thêi ' font '.vntime',12 colo w+/bg+
dir hh='C'
@1,5 say ' Tơp dƠ liơu cđn chuẻn hoĨ cã ẽ ợờy kh"ng ? (C/K) ' font '.vntime',12 styl 'BI' colo w+/br+ get hh pict '!@'
read if hh<>'C'
deac wind all set defa to &dng retu
endi *** clea
@1,10 say ' CĨc tơp c sẽ dƠ liơu cã ẽ th môc hiơn thêi ' font '.VnTime',12 style 'BI' colo w+/bg+
dir
wait ' NhƠng tơp CH*.DBF lÌ nhƠng tơp ợỈ chuẻn hoĨ. NhÊn phÝm Enter ợố tiỏp tôc ... '
htc=space(8)
@20,10 say ' Muèn chuẻn hoĨ dƠ liơu cĐa tơp : ' font '.VnTime',12 style 'IB' get htc colo w+/br+ read ttc=allt(htc) use &ttc ttt='ch'+ttc copy to &ttt
@20,5 say 'Xem dƠ liơu trắc khi chuẻn hoĨ ... NhÊn phÝm Esc ợố tiỏp tôc ... '+space(41) ;
font '.VnTime',11 style 'BI' colo w+/br+ acti wind w1 use &ttt brow deac wind w1 ***** do whil !eof()
repl hoten with strt(allt(hoten),' ',' ') repl hoten with strt(allt(hoten),' ',' ') repl hoten with strt(allt(hoten),' ',' ') repl hoten with strt(allt(hoten),' ',' ') repl hoten with strt(allt(hoten),' ',' ') repl hoten with strt(allt(hoten),' ',' ') skip endd *-- go top dt=fsize('hoten') dime c(dt) for j=1 to dt c(j)=' ' endf do whil !eof() dd=len(allt(hoten)) i=1 ct=' ' ****** do whil i<=dd ht=allt(hoten) if asc(ht)>=97.and.asc(ht)<=122 c(1)=chr(asc(subs(ht,1,1))-32) endi if ((asc(subs(hoten,i,1))>=65.and.asc(subs(hoten,i,1))<=90).or. (asc(subs(hoten,i,1))>=161; .and.asc(subs(hoten,i,1))<=167)).and.asc(subs(hoten,i-1,1))<>32 c(i)=' '+chr(asc(subs(hoten,i,1))) else c(i)=subs(hoten,i,1) endi i=i+1 endd
i=1
do whil i<=dd ct=ct+c(i) i=i+1 endd
repl hoten with allt(ct) skip endd go top do whil !eof() dd=len(allt(hoten)) ht=allt(hoten) if asc(ht)>=97.and.asc(ht)<=122 c(1)=chr(asc(subs(ht,1,1))-32) else if asc(ht)=174 c(1)=chr(167) else c(1)=subs(ht,1,1) endi endi bt=' ' i=2 do whil i<=dd do case case asc(subs(ht,i,1))=32.and.asc(subs(ht,i+1,1))>=97.and.asc(subs(ht,i+1,1))<=12 2 c(i)=' ' c(i+1)=chr(asc(subs(ht,i+1,1))-32) i=i+1 case asc(subs(ht,i,1))=32.and.asc(subs(ht,i+1,1))>=167.and.asc(subs(ht,i+1,1))<=1 74 c(i)=' ' c(i+1)=chr(asc(subs(ht,i+1,1))-7) i=i+1 othe c(i)=subs(ht,i,1) endc i=i+1
endd i=1 do whil i<=dd bt=bt+c(i) i=i+1 endd
repl hoten with allt(bt) skip
endd ***
@20,5 say 'Xem dƠ liơu sau khi chuẻn hoĨ ... NhÊn phÝm Esc ợố tiỏp tôc ...' + space(41);
font '.VnTime',11 style 'BI' colo w+/br+ go top
acti wind w1 brow
deac wind w1 deac wind w set defa to &dng *retu
quit
** CHUONG TRINH SAP XEP TRUONG HOTEN TRONG FOXPRO set talk off
set safe off clea
defi wind w from 0,0 to 21,106 font '.VnTime',10
defi wind w1 from 0,0 to 18,106 font '.VnTime',10 colo w+/bg acti wind w
dgd=spac(30)
@1,5 say 'Tởn ợêng dÉn tắi tơp dƠ liơu cđn s¾p xỏp ' font '.VnTime',11 styl 'BI' get dgd font 'system'
read
dng=allt(dgd) set defa to &dng clea
@1,5 say ' NhƠng tơp dƠ liơu cã ẽ trong th môc hiơn thêi ' font '.vntime',11 colo w+/bg+
dir hh='C'
@18,5 say ' Tơp dƠ liơu cđn s¾p xỏp cã ẽ ợờy kh"ng ? (C/K) ' font '.vntime',11 styl 'BI' colo w+/br+ get hh pict '!@'
read if hh<>'C'
deac wind all set defa to &dng retu
endi
tp=spac(20)
@18,5 say ' Tởn tơp dƠ liơu cđn s¾p xỏp ' font '.VnTime',11 styl 'BI' get tp font 'system'
read tt=allt(tp) clea
@20,5 say ' Xin mêi xem dƠ liơu trắc khi s¾p xỏp. NhÊn Esc ợố tiỏp tôc ... ' ; font '.VnTime',11 styl 'BI' colo w+/rg+
acti wind w1 use &tt
copy to t1 fiel exce htnguoc,mhtnguoc use t1
brow
deacti wind w1 use &tt
clea
@18,10 say ' Nỏu cha cã trêng htnguoc,mhtnguoc thÈ thởm trêng ợã vắi htnguoc (C30), ;
mhtnguoc (C60) ' colo w+/br+
@19,10 say ' b"ng cĨch nhÊn phÝm mòi tởn xuèng rại thởm vÌo. Nỏu cã rại thÈ nhÊn Enter ;
ợố tiỏp tôc . . . '+spac(6) colo w+/br+
modi stru &&Thởm cĨc trêng htnguoc (C30) clea
**Chng trÈnh ợo ngîc b¾t ợđu tõ ợờy go top
dime m(10) do whil !eof()
* Chó ý: Trong cĨc cờu lơnh dắi ợờy, giƠa hai dÊu nhĨy ợn lÌ mét ký tù trèng for i=1 to 10 m(i)=' ' endf c=allt(hoten) sktt=occu(' ',c) xx=at(' ',c)
yy=rat(' ',c) zz=at(' ',c,2) do case case sktt=1 m(1)=subs(c,1,xx) m(2)=subs(c,yy) case sktt=2 m(1)=subs(c,1,xx) m(2)=subs(c,xx,zz-xx) m(3)=subs(c,yy) othe m(1)=subs(c,1,xx) m(2)=subs(c,xx,zz-xx) m(sktt+1)=subs(c,yy) for i=3 to sktt
m(i)=subs(c,at(' ',c,i-1),at(' ',c,i)-at(' ',c,i-1)) endf
endc tht=' '
for i=sktt+1 to 1 step -1 tht=tht+' '+allt(m(i)) endf
repl htnguoc with allt(tht) skip endd ** Chng trÈnh ợo ngîc kỏt thóc ẽ ợờy ch1='AaÌỈĨÓ¡Ù"ÒỎ¾ậằờđẻÉÊẹBbCcDdớợ' ch2='EeỉịỹƯỦẳởồốÔỏơGgHhIiÈừưÝẺKkLlMmNn' ch3='Ooßáâãảẵ"ạăçèéặêẽìắîPpQqRrSs' ch4='TtUuĩĐòóôỠõöƠụùVvXxYyúủüýẼ' Vs=allt(ch1)+allt(ch2)+allt(ch3)+allt(ch4) ASt=' ' for i=1 to 118 ASt=ASt+chr(i) endf AS=Allt(ASt)
Repl all mhtnguoc with chrt(htnguoc,VS,AS) kq='Sx'+tt
sort to &kq on mhtnguoc fiel exce htnguoc,mhtnguoc
@10,2 say 'Chó ý: Trong th môc hiơn thêi nhƠng tơp b¾t ợđu b"ng Sx lÌ nhƠng tơp ợỈ s¾p xỏp';
font '.VnTime',11 styl 'BI'
@11,8 say 'vÝ dô, tơp SxDsach.dbf lÌ tơp s¾p xỏp cĐa tơp Dsach.dbf' font '.VnTime',11 styl 'BI'
@13,10 say ' NhÊn Enter ợố tiỏp tôc...' styl 'BI' colo w+/br+ wait ' '
clea
@20,5 say ' Xin mêi xem dƠ liơu sau khi s¾p xỏp. NhÊn Esc ợố tiỏp tôc ... ' ; font '.VnTime',11 styl 'BI' colo w+/rb+
acti wind w1 use &kq brow
deac wind all set defa to &dng close all
*quit retu
Code cĐa nót ghi:
Private m_makhoa, m_tenkhoa
m_makhoa = Thisform.txtMakhoa.Value m_tenkhoa = Thisform.txtTenkhoa.Value If Empty(m_Makhoa)
=messagebox("MỈ khoa kh"ng ợîc ợố tr¾ng...",0,_AppTitle) Thisform.txtMakhoa.SetFocus && _CurObj=ObjNum(Bien) Return .f.
Endif
If Empty(m_Tenkhoa)
=messagebox("Tởn khoa kh"ng ợîc ợố tr¾ng...",0,_AppTitle) Thisform.txtTenkhoa.SetFocus && _CurObj=ObjNum(Bien) Return .f.
Endif
SELECT dskhoa Seek m_makhoa If Found()
=messagebox("ớỈ cã mỈ khoa nay...",0,_AppTitle)
Thisform.txtMakhoa.SetFocus && _CurObj=ObjNum(Bien) Return .f.
Endif
Insert into Dskhoa(makhoa, tenkhoa) values(m_makhoa, m_tenkhoa) release thisform
Private p_makhoa, p_manv, p_password, p_Tenkhoa p_makhoa =DSKHOA.makhoa p_Tenkhoa = thisform.CboTenkhoa.value p_manv = thisform.txtmanv.value p_password=thisform.txtpassword.value sele user seek p_makhoa+p_manv if !found()
=messagebox("Kh"ng cã nhờn viởn "+p_manv+" trong khoa "+p_tenkhoa+"...",64,_Apptitle) thisform.txtmanv.setfocus return .f. else if upper(allt(password))<>upper(allt(p_password)) =messagebox("Sai mẹt khẻu...",64,_Apptitle) thisform.txtpassword.setfocus return .f. else _CurUser = p_manv *Role = ROLE _CurPass = p_password _CodeLogin = p_makhoa *NameLogin = Allt(thisform.txttendv.value) * Close Data * =DongDBF("USER") * =DongDBF("DSKHOA") Release thisform Endif Code nót tÈm kiỏm set safe off
Masv=alltrim(upper(Thisform.text1.value)) Tensv=alltrim(upper(Thisform.text2.value)) Lop=alltrim(upper(Thisform.text3.value)) dk="" if len(masv)>0 dk=dk+"Alltrim(upper(masinhvien))='"+masv+"'" endif if len(tensv)>0 dk=dk+" and alltrim(upper(tensinhvien))='"+tensv+"'" endif if Len(lop)>0
dk=dk+" and alltrim(upper(lop))='"+lop+"'" endif
if len(masv)=0
dk=substr(dk,5,len(dk)-4) endif
defi wind hien at 1,1 size 35,150 color rgb(,,125,125,125) font ".vntime" 14
sele sinhvien
Join with sinhvien for sinhvien.masv=lop.masv to Dssv sele 0
use dssv loca for &dk if found() acti wind Hien
brow Field Hovaten,diachi,masv,lop,ngaysinh for &dk wind hien noedit rele wind Hien
else
Wait wind "Khong thay" endif
use
Môc lôc:
CHỠặNG I: PhŨng phĨp luẹn phờn tÝch thiỏt kỏ hơ thèng thỡng tin quộn lý sinh viởn
I.KhĨi quĨt vồ hơ thèng qun lý sinh viởn
II.CĨc giai ợoÓn phờn tÝch thiỏt kỏ hơ thèng thỡng tin Chng iI : Giắi thiơu vồ VisualFoxPro
CHỠặNG III : Phờn tÝch ,thiỏt kỏ vÌ xờy dùng hơ thèng quộn lý sinh viởn I.Phờn tÝch hơ thèng quộn lý sinh viởn
II.Thiỏt kỏ hơ thèng quộn lý sinh viởn
III.Thiỏt kỏ giao diơn vÌ xờy dùng chng trÈnh ChŨng IV : CÌi ợật ợĨnh giĨ vÌ hắng phĨt triốn 1. CÌi ợật
2. ớĨnh giĨ kỏt quộ thùc hiơn 3. PhŨng hắng phĨt triốn 4. Lêi cộm Ũn.
TÌi liơu tham khộo
1. GiĨo trÈnh hơ thèng thỡng tin quộn lý.
TS TrŨng VÙn Tó - TS Trđn ThẺ Song Minh. 2. Sö dông & khai thĨc Microsoft VISUAL FOXPRO.
NguyÔn Ngảc Minh. 3. NhƠng bÌi thùc hÌnh VISUAL FOXPRO.
Vn-Gide. 4. BÌi giộng cĐa thđy.