Thiết kế chương trình kiểm tra đánh máy mô phỏng các kỹ năng đánh máy của một người bình thường

25 290 0
  • Loading ...
1/25 trang

Thông tin tài liệu

Ngày đăng: 27/04/2013, 23:07

Thiết kế chương trình kiểm tra đánh máy mô phỏng các kỹ năng đánh máy của một người bình thường Kiểm tra Đánh máy Nguyễn Trần Tuấn Anh Lời nói đầu Hiện nay cùng với sự phát triển của Công nghệ tin học trên thế giới nói chung và Việt Nam nói riêng, những năm gần đây tin học đang chiếm một vai trò quan trọng không thể thiếu đợc trong tất cả các lĩnh vực, và luôn đợc làm mục tiêu hàng đầu để con ngời nghiên cứu, tìm tòi và áp dụng những thành tựu to lớn của tin học vào trong thực tế, trong những lĩnh vực nh Khoa học, Kinh tế, Kỹ thuật, Trong công cuộc đổi mới quản lý kinh tế xã hội hiện nay, việc nghiên cứu phát triển hệ thống thông tin về kinh tế xã hội và khoa học kỹ thuật có vị trí đặc biệt quan trọng bởi hệ thống thông tin kinh tế xã hội có chuẩn xác nhanh nhạy, đáp ứng đợc mọi yêu cầu điều hành thì công tác quản lý mới đạt hiệu quả thiết thực. Ngợc lại, thông tin thiếu, thông tin chậm trễ và không chuẩn xác sẽ không chỉ làm ảnh h- ởng đến công cuộc phát triển kinh tế xã hội trớc mắt mà đôi khi còn gây tác hại cho cả một thời kỳ rất dài. Vì vậy, nhu cầu cấp thiết đặt ra cho những ngời làm công tác về công nghệ thông tin là phải tổ chức một hệ thống thông tin điều hành sắc bén, phục vụ kịp thời mọi yêu cầu của ngời sử dụng. Do nhu cầu thực tế đòi hỏi, việc nghiên cứu hệ thống thông tin kinh tế xã hội phục vụ điều hành phải đợc sớm hoàn thành và đa vào thực tiễn áp dụng. Nó sẽ khắc phục đợc nhiều khó khăn trong việc quản lý và xử lý thông tin. Với việc tin học hóa trong mọi hệ thống, các ngôn ngữ lập trình ra đời ngày càng nhiều và hoàn thiện. Ngôn ngữ Pascal là 1 ngôn ngữ thuật giải ,có tính cấu trúc chặt chẽ ,sáng sủa. Hiện nay Pascal đã trở thành một trong các ngôn ngữ phổ biến nhất ,thích hợp với nhiều ứng dụng khoa học, kỹ thuật, quản và đợc coi là ngôn ngữ thích hợp nhất cho tất cả mọi đối tợng Xây dựng một chơng trình kiểm tra đánh máy phỏng các kỹ năng đánh máy của một ngời bình thờng cho phép thực hiện các chức năng về tốc độ đánh máy của ngời đó với các mức độ khó khác nhau và máy tính sẽ đa ra các thông tin về số tự đánh đợc trong một khoảng thời gian nhất định. Đây là một bài tập về lập trình nhằm nâng cao kỹ năng về lập trình Turbo Pascal và kỹ năng đồ hoạ. Để hoàn thành bài tập này, tôi đã tham khảo rất nhiều các tài liệu, cũng nh đợc sự hớng dẫn tận tình của các thầy cô giáo trong khoa CNTH, đặc biệt là thầy ThS.Thái Thanh Tùng là ngời chịu trách nhiệm hớng dẫn chính bài tập tực hành tốt nghiệp cho tôi.Tuy nhiên trong quá trình lập trình cũng nh thiết kế đồ hoạ còn có những sai sót nên tôi rất mong đợc sự góp ý của các thầy cô và các bạn. Em xin chân thành cảm ơn ! 1 Kiểm tra Đánh máy Nguyễn Trần Tuấn Anh Chơng I : các khái niệm cơ bản đợc sử dụng trong chơng trình Trong chơng trình này chỉ dùng các hàm và thủ tục về đồ hoạ nên tôi chỉ trình bày một số khái niệm liên quan. I. Màn hình đồ hoạ Màn hình văn bản (Text) đợc thiết lập để hiển thị 25 dòng và mỗi dòng có thể chứa đợc 80 tự. Màn hình đồ hoạ đợc cấu thành từ một ma trận các chấm ảnh nhỏ (Pixel). Sự bố trí các Pixel trên màn hình nh thế nào và bao nhiêu đợc gọi là độ phân giải của màn hình (Resolution). Do mỗi kiểu màn hình có cách xử lý riêng nên ta thiết lập tập tin điều khiển đồ hoạ ( *.bgi ở trong th mục \BGI) và kiểu chữ (Font) ( *.chr ở trong th mục \BGI ). Đối với màn hình VGA (hiện nay phổ biến ) thì hệ toạ độ là 640 x 480. Có nghĩa là chiều ngang có 640 Pixel, chiều dọc có 480 Pixel. II. Các hàm đồ hoạ Trong chơng trình sử dụng rất nhiều hàm , các hàm này đợc định nghĩa trong graphics.h ở trong th mục \INCLUDE : Setcolor( .) Setbkcolor( .) Setfillstyle( .) 2 KiÓm tra §¸nh m¸y NguyÔn TrÇn TuÊn Anh Settextstyle( .) Setviewport( .) . getcolor() getbkcolor() . line( .) rectangle( .) bar( .) bar3d( .) circle( .) elippse( .) . 3 Kiểm tra Đánh máy Nguyễn Trần Tuấn Anh chơng II : Thiết kế chơng trình phần I : Các modul chính trong chơng trình. Cỏc module chớnh trong chng trỡnh bao gm: + Function tg_phut:Word; + Ve_Banphim : th tc v bn phớm + VephimNhan(phim:char;kieuve:integer): th tc vố phớm c nhn + SinhMa(level:integer):Char: th tc sinh mt phớm tu theo mc nht chn trong chng trỡnh + GoPhim : th tc thc hin thao tỏc gừ mt phớm v cỏc tớnh toỏn bờn trong + Ketqua : th tc hin kt qu ca ths sinh ng nhp kiờm tra gừ bn phớm. Cỏc kt qu tớnh toỏn nh sau: S t /phỳt=S t ỏnh c trong mt phỳt chớnh xỏc ca vic gừ phớm: chớnh xỏc= S t chớnh xỏc/S t sinh ra*100 4 Kiểm tra Đánh máy Nguyễn Trần Tuấn Anh Phần II : hai thủ tục quan trọng trong chơng trình I-Thủ tục Vephimnhan(phim :char,kieuve:integer) Thủ tục này dùng để thực hiện vẽ một phím trên bàn phím khi phím này đợc nhấn.Nêú các phím tự đặc biệt trên bàn phím đợc nhấn .Ví dụ: < , > ,? ,+, \ , ( , ) thì ngoài phím tự ,phím Shift cũng đợc nhấn theo. Thủ tục này đợc thực hiện nh sau : Khi ngời sử dụng nhấn một phím trên bàn phím sẽ sinh ra một tự của phím vừa nhấn .Thủ tục Vephimnhan sẽ quét qua toàn bộ các tự trên bàn phím và kiểm tra xem đó có phải là các phím vừa đợc nhấn không .Nừu không phải là phím đợc nhấn thì sẽ không vẽ lại phím đó.Nừu phím đợc kiểm tra là phím nhấn thì ta sẽ vẽ lại phím đó theo kiểu vẽ mà ta đa vào . Kiểu vẽ phím ở đây đợc sử dụng gồm có 2 chế độ: - Chế độ phím đang đợc nhấn :phím đó sẽ bị lún xuống với màu khác tất cả các phím khác trên bàn phím . - Chế độ phím không đợc nhấn :phím đó sẽ đợc vẽ nổi và cùng màu với các phím còn lại trên bàn phím *Ta có thể đa ra đoạn mã Code của chơng trình nh sau : Procedure VephimNhan(phim:char;kieuve:integer); Var i,j,k,x,y:integer; xhien,yhien:integer; Begin xhp2:=xhp1+3*dr div 2+kc; yhp2:=yhp1+ds+kc; xhp3:=xhp1+2*dr+kc; yhp3:=yhp2+ds+kc; xhp4:=xhp1+2*dr+2*kc; yhp4:=yhp3+ds+kc; xhp5:=xhp1+10*(dr+kc); 5 KiÓm tra §¸nh m¸y NguyÔn TrÇn TuÊn Anh yhp5:=yhp1+4*(ds+kc); xhien:=0;yhien:=0; {Hang 1} for k:=1 to 15 do if (chr(hp1[k])=phim) then begin xhien:=xhp1+(k-1)*(dr+kc); yhien:=yhp1; end; {Hang 2} for k:=1 to 13 do if(chr(hp2[k])=phim) then begin xhien:=xhp2+(k-1)*(dr+kc); yhien:=yhp2; end; {Hang 3} for k:=1 to 12 do if(chr(hp3[k])=phim) then begin xhien:=xhp3+(k-1)*(dr+kc); yhien:=yhp3; end; {Hang 4} for k:=1 to 13 do if(chr(hp4[k])=phim) then begin xhien:=xhp4+(k-1)*(dr+kc); yhien:=yhp4; end; {Hang 5} for k:=1 to 5 do if(chr(hp5[k])=phim) then begin xhien:=xhp5+(k-1)*(dr+kc); yhien:=yhp5; end; if ((phim=#60) or (phim=#62) or (phim=#63) or (phim=#34) or (phim=#58)) then if kieuve=1 then ve_shift(kieuve+1) else ve_shift(1); if(phim=#32) then if kieuve=1 then ve_space(kieuve+1) else ve_space(1) else if ((ord(phim) in [27,49,50,51,52,53,54,55,56,57,48,45,43,61,8]) or (ord(phim) in [81,87,69,82,84,89,85,73,79,80,91,93]) or (ord(phim) in [65,83,68,70,71,72,74,75,76,59,58]) or (ord(phim) in [90,88,67,86,66,78,77,44,46,39,92,42,47]) 6 Kiểm tra Đánh máy Nguyễn Trần Tuấn Anh or (ord(phim) in [63,60,62,40,41])) then ve_o(kieuve,xhien,yhien,ds,dr,1); End; II Thủ tục GoPhim : Đây là thủ tục chính trong chơng trình gõ bàn phím .Thủ tục này sẽ thực hiện chức năng gõ phím ,tính toán số tự mà chơng trình sinh ra,số tự mà ngời sử dụng gõ chính xác để từ đó đa ra đợc tốc độ gõ phím cũng nh độ chính xác trong quá trình gõ phím của ngời sử dụng Thủ tục GoPhim đợc thực hiện nh sau : Lấy mã phím đợc sinh ra thông qua thủ tục sinh mã phím SinhMa(Muc) Kiểm tra xem đó có phải là phím ESC không ,nếu đúng là phím ESC thì sẽ dừng việc gõ phím .Ngợc lại thủ tục sẽ chờ ngời sử dụng gõ một phím trong một khoảng thời gian .Nếu quá thời gian đó thì thủ tục sẽ bỏ qua và sinh một mã khác .Nếu ngời sử dụng gõ phím thì thủ tục sẽ gọi lại thủ tục Vephimnhan để vẽ lại phím vừa đợc nhấn và kiểm tra xem phím nhấn đã chính xác với phím vừa đợc sinh ra cha . Quá trình này sẽ tiếp tục cho đến khi ngời sử dụng nhấn ESC để kết thúc quá trình gõ phím. *Ta có thể đa ra đoạn mã Code của chơng trình nh sau: Procedure GoPhim ; Var ch:char; MaDuocSinh:char; bd,kt:Word; Begin Sokytu:=0;SoKyTuSinh:=0; xchu:=30;ychu:=110; bd:=tg_phut; While true do Begin MaDuocSinh:=SinhMa(Muc); VietChu(xchu,ychu,MaDuocSinh); xchu:=xchu+textwidth('H')+1; if xchu>=getmaxx-20 then begin xchu:=30; ychu:=ychu+textheight('H')+10; end; if ychu>=180 then begin xchu:=30; ychu:=110; bar(10,80,80+getmaxx- 90,170); Ve_O(1,10,80,100,getmaxx- 20,1); end; Delay(1000);{Doi go phim va sinh ma} 7 KiÓm tra §¸nh m¸y NguyÔn TrÇn TuÊn Anh VephimNhan(Upcase(ch),1); if keypressed then begin ch:=readkey; if ch=#27 then break; if ch=#0 then ch:=readkey; SoKyTuSinh:=SoKyTuSinh+1; VephimNhan(Upcase(ch),2); if upcase(ch)=upcase(MaDuocSinh) then Sokytu:=Sokytu+1 else begin Sokytu:=Sokytu-1; sound(1000);delay(100);nosound; end; end; End; kt:=tg_phut; if (kt-bd)<>0 then TS.tocdo:=Sokytu/(kt-bd) else TS.tocdo:=0; if SokytuSinh=0 then TS.chinhxac:=0 else TS.chinhxac:=Sokytu/(SokytuSinh*100); End; 8 Kiểm tra Đánh máy Nguyễn Trần Tuấn Anh Chơng III : Phần thể hiện chơng trình PROGRAM GOBANPHIM; Uses Crt,Dos,Graph; Const yhp1 :integer=230; Const xhp1 :integer=30; Const ds :integer=32; {do sau cua phim} Const dr :integer=34; {do rong cua phim} Const kc :integer=5; {khoang cach giu cac phim} Const xmenu:integer=60; {toa do x cua menu} Const ymenu:integer=10; {toa do y cua menu} Const drm :integer=120; {do rong cua 1 o menu} Const dsm :integer=40; {do sau cua 1 o menu} Const h1:array[1 15]of string=('ESC','1','2','3','4','5','6','7','8','9','0','-','+' ,'=','<-'); Const hp1:array[1 15] of integer=(27,49,50,51,52,53,54,55,56,57,48,45,43,61,8); Const h2:array[1 12] of string=('Q','W','E','R','T','Y','U','I','O','P','[',']'); Const hp2:array[1 12] of integer=(81,87,69,82,84,89,85,73,79,80,91,93); Const h3:array[1 11]of string=('A','S','D','F','G','H','J','K','L',';',':'); Const hp3:array[1 11]of integer=(65,83,68,70,71,72,74,75,76,59,58); Const h4:array[1 13] of string=('Z','X','C','V','B','N','M',',','.','`','\','*','/'); Const hp4:array[1 13] of integer=(90,88,67,86,66,78,77,44,46,39,92,42,47); Const h5:array[1 5]of string=('?','<','>','(',')'); Const hp5:array[1 5]of integer=(63,60,62,40,41); Const mnu:array[1 4]of string=('CHU CAI','CHU CAI & SO','TOAN BO','THOAT'); Type Thisinh=Record HoTen :string[25]; Tocdo :real; Chinhxac:real; End; Var mh,mode:integer; tg_doi :integer; {thoi gian doi go mot phim} chu :array[1 154] of string; {xau in ra de go phim} machu :array[1 100] of integer; xchu,ychu:integer; {xchu=30,ychu=160;//vi tri in ra hang chu ngau nhien} xhp4,yhp4,xhp2,yhp2,xhp3,yhp3,xhp5,yhp5:integer; Muc :integer;{Muc go phim} SoKytu :integer;{So ky tu go duoc} SoKyTuSinh :integer;{So ky tu sinh cua chuong trinh} TenFile :String; TS :ThiSinh; 9 KiÓm tra §¸nh m¸y NguyÔn TrÇn TuÊn Anh F :text; {------------------------------------------------------------ -} Function tg_phut:Word; Var Hour, Minute,Second,Sec100,Timer: Word; Begin GetTime(Hour,Minute,Second,Sec100); Timer:=Hour*60+Minute; tg_phut:=Timer; End; {------------------------------------------------------------ -} Procedure GioiThieu(mau:integer); Begin setcolor(15); settextstyle(1,0,1); settextjustify(1,1); outtextxy(getmaxx div 2,25,'VIEN DAI HOC MO HA NOI'); outtextxy(getmaxx div 2,45,'KHOA CNTH'); setcolor(mau); settextstyle(1,0,4); outtextxy(getmaxx div 2,150,'BAI TAP TOT NGHIEP'); settextstyle(1,0,1); outtextxy(getmaxx div 2 -165,190,'NOI DUNG:'); line(getmaxx div 2-210,202,getmaxx div 2- 120,202); settextstyle(1,0,1); outtextxy(getmaxx div 2,210,'lap chuong trinh tap go ban phim don gian'); outtextxy(getmaxx div 2,280,'Ngon ngu lap trinh: Turbo Pascal'); outtextxy(getmaxx div 2,getmaxy-120,'Giao vien huong dan: thay ThS.Thai Thanh Tung'); outtextxy(getmaxx div 2,getmaxy-100,'Sinh vien: Nguyen Tran Tuan Anh '); outtextxy(getmaxx div 2-30,getmaxy-80,'Lop: 00B3'); if(mau=7) then setcolor(mau) else setcolor(4); outtextxy(getmaxx div 2,getmaxy-10,'Nhan phim Enter de tiep tuc .'); {tra ve kieu chu default} settextstyle(0,0,0); settextjustify(0,0); End; {------------------------------------------------------------ -} Procedure Ve_O(i,x1,y1,ds1,dr1,dam:integer); Begin If(dam=0) then setlinestyle(0,1,1) Else setlinestyle(0,1,3); 10 [...]... tập Nhà xuất bản Giáo dục> 24 Kiểm tra Đánh máy Nguyễn Trần Tuấn Anh Mục lục Lời nói đầu 1 Chơng I : các khái niệm cơ bản đợc sử dụng trong chơng trình .2 I Màn hình đồ hoạ .2 II Các hàm đồ hoạ 2 chơng II : Thiết kế chơng trình 4 phần I : Các modul chính trong chơng trình .4 Phần II : hai thủ tục quan trọng trong chơng trình 5 I-Thủ tục Vephimnhan(phim... -Do hoa -} 21 Kiểm tra Đánh máy Nguyễn Trần Tuấn Anh Procedure KhoiTaoDH; Begin { Khoi dong do hoa } initgraph(mh,mode,'d:\tp\bgi'); Setbkcolor(1); End; { - bat dau ct chinh -} Begin KhoiTaoDH; GioiThieu(3); Readln; ClearDevice; CloseGraph; DangNhap; KhoiTaoDH; Ve_Banphim; Chon_muc; Closegraph; Ketqua; End 22 Kiểm tra Đánh máy Nguyễn Trần Tuấn Anh Kết luận Sau một thời gian tập trung... tiện ích của ngôn ngữ bậc cao này trong việc viết các chơng trình Tuy nhiên, trong một khoảng thời gian có hạn và trình độ còn nhiều hạn chế, bài tập thựcc hành tốt nghiệp này cũng không tránh khỏi những sai sót mắc phải nhng nó cũng đã thể hiện đợc phần nào những cố gắng và tìm tòi của tôi Tôi mong và hy vọng rằng, sau khi xem xong phần bài tập của tôi, các thầy cô giáo sẽ có những ý kiến đóng góp để... thầy cô giáo sẽ có những ý kiến đóng góp để bài tập đợc hoàn thiện hơn Xin chân thành cảm ơn các thầy cô ! 23 Kiểm tra Đánh máy Nguyễn Trần Tuấn Anh Tài liệu tham khảo: 1 - Ngôn ngữ lập trình Pascal 2- Cơ sở lý thuyết đồ hoạ 3- Lập trình hớng đối tợng với Turbo Pascal 4- Object oriented Programming... tham khảo các tài liệu về ngôn ngữ lập trình Turbo Pascal, cùng với sự tận tình hớng dẫn của thầy ThS.Thái Thanh Tùng cũng nh các thầy cô giáo trong Khoa Công nghệ Tin học-Viện Đại học Mở Hà nội, tôi đã hoàn thành đợc bài tập thực hành tốt nghiệp của mình Trong quá trình làm bài tập, tôi cũng đã tìm hiều thêm đựoc nhiều vấn đề liên quan đến ngôn ngữ Pascal và càng thấy đợc những tiện ích của ngôn ngữ... begin 20 Kiểm tra Đánh máy Nguyễn Trần Tuấn Anh bar(10,80,80+getmaxx- 90,170); Ve_O(1,10,80,100,getmaxx20,1); if(k=0) then begin Muc:=1; GoPhim; end else if(k=1) then begin Muc:=2; GoPhim; end else if(k=2) then begin Muc:=3; GoPhim; end else if (k=3) then Break; end; if(c=#0) then begin c1:=readkey; kt:=k; if(c1=#77) then {mui ten phai} if(k>=3) then k:=0 else k:=k+1 else if(c1=#75)then {mui ten trai}... } Procedure Ketqua; Var ch:char; Begin Textbackground(Blue); Clrscr; Writeln('Ket qua kiem tra' ); Writeln('Thi sinh dang nhap: ',TS.Hoten); Writeln('So ky tu/phut: ',TS.Tocdo:8:3); Writeln('Do chinh xac: ',TS.Chinhxac:8:3); Write('Ban co ghi ket qua khong(C/K)?'); Writeln; 19 Kiểm tra Đánh máy Nguyễn Trần Tuấn Anh ch:=Readkey; if upcase(ch)='C' then Begin Repeat Write('Hay nhap ten file ghi... setfillstyle(1,15); floodfill(x+10,y+10,1); End; { Thu tuc sinh phim go -} Function SinhMa(level:integer):Char; Var i:integer; Ch:Char; Begin Randomize; While true do Begin if level=1 then 17 Kiểm tra Đánh máy Nguyễn Trần Tuấn Anh begin ch:=chr(Random(101)+65); if ((ch in ['a' 'z']) or (ch in ['A' 'Z'])) then break; end; if level=2 then begin ch:=chr(Random(101)+43); if ((ch in ['a' 'z']) or (ch in... Sokytu:=0;SoKyTuSinh:=0; xchu:=30;ychu:=110; bd:=tg_phut; While true do Begin MaDuocSinh:=SinhMa(Muc); VietChu(xchu,ychu,MaDuocSinh); xchu:=xchu+textwidth('H')+1; if xchu>=getmaxx-20 then begin xchu:=30; 18 Kiểm tra Đánh máy Nguyễn Trần Tuấn Anh ychu:=ychu+textheight('H')+10; end; if ychu>=180 then begin xchu:=30; ychu:=110; bar(10,80,80+getmaxx90,170); Ve_O(1,10,80,100,getmaxx20,1); end; Delay(1000);{Doi go phim.. .Kiểm tra Đánh máy Nguyễn Trần Tuấn Anh If (i=1) then Begin {to mau cho phim} setlinestyle(0,1,3); setcolor(1); rectangle(x1,y1,x1+dr1,y1+ds1); setfillstyle(1,7); floodfill(x1+10,y1+8,1); setcolor(15); line(x1,y1,x1+dr1,y1);
- Xem thêm -

Xem thêm: Thiết kế chương trình kiểm tra đánh máy mô phỏng các kỹ năng đánh máy của một người bình thường, Thiết kế chương trình kiểm tra đánh máy mô phỏng các kỹ năng đánh máy của một người bình thường, Thiết kế chương trình kiểm tra đánh máy mô phỏng các kỹ năng đánh máy của một người bình thường

Gợi ý tài liệu liên quan cho bạn

Nhận lời giải ngay chưa đến 10 phút Đăng bài tập ngay