基于匯編語(yǔ)言學(xué)生成績(jī)管理系統(tǒng)_第1頁(yè)
基于匯編語(yǔ)言學(xué)生成績(jī)管理系統(tǒng)_第2頁(yè)
基于匯編語(yǔ)言學(xué)生成績(jī)管理系統(tǒng)_第3頁(yè)
基于匯編語(yǔ)言學(xué)生成績(jī)管理系統(tǒng)_第4頁(yè)
基于匯編語(yǔ)言學(xué)生成績(jī)管理系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩25頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、學(xué)生成績(jī)管理系統(tǒng)目錄設(shè)計(jì)內(nèi)容2設(shè)計(jì)目的2設(shè)計(jì)要求2設(shè)計(jì)分析2子程序分析7操作說(shuō)明10程序代碼11總結(jié)30參考文獻(xiàn)30設(shè)計(jì)內(nèi)容設(shè)計(jì)一個(gè)學(xué)生成績(jī)管理程序,要求能實(shí)現(xiàn)以下功能:1) 各科成績(jī)的錄入,修改和刪除。2) 按姓名查詢(xún)每個(gè)學(xué)生各門(mén)課的成績(jī)。3) 顯示查詢(xún)結(jié)果。4) 統(tǒng)計(jì)個(gè)分?jǐn)?shù)段的人數(shù)。5)打印學(xué)生成績(jī)。設(shè)計(jì)目的用匯編數(shù)據(jù)的錄入、修改和刪除操作。設(shè)計(jì)要求學(xué)習(xí)如何用匯編語(yǔ)言進(jìn)行數(shù)據(jù)處理。設(shè)計(jì)分析1.總體結(jié)構(gòu)整個(gè)程序采用主程序調(diào)用子程序的方法。主程序完成菜單的顯示,子程序完成一個(gè)獨(dú)立功能方法的實(shí)現(xiàn)。各子程序的實(shí)現(xiàn)方法簡(jiǎn)要描述如下:1)設(shè)計(jì)INSERT(錄入)子程序,先打開(kāi)文件SCORE.TXT,并

2、置文件指針到文件尾,然后調(diào)用REC子程序接受用戶(hù)的輸入,再把用戶(hù)的輸入寫(xiě)入文件,最后關(guān)閉文件返回主程序。2)設(shè)計(jì)Delete(刪除)子程序,先打開(kāi)文件,再調(diào)用宏GETIN得到要?jiǎng)h除的學(xué)生的姓名,然后讀文件中的記錄,直到其記錄的名字與所輸入的名字相同為止,把文件指針后退8個(gè)字符(即4門(mén)課成績(jī)所占的空間),寫(xiě)入8個(gè)“0”字符,關(guān)閉文件返回主程序。3)設(shè)計(jì)List(瀏覽)子程序時(shí),先打開(kāi)文件,然后讀一個(gè)記錄,并通過(guò)調(diào)用宏SHOW_ITEM將其顯示到屏幕上,入文件指針沒(méi)有到達(dá)文件尾,則繼續(xù)讀記錄并顯示,當(dāng)指針到達(dá)文件尾時(shí),則關(guān)閉文件返回主程序。4)設(shè)計(jì)Modify(修改)子程序時(shí),先打開(kāi)文件SCORE

3、.TXT,通用GER_REC得到要修改的記錄,然后讀文件中的記錄,并與用戶(hù)輸入的記錄做比較(只比較記錄中的名字部分),若不同則噸下一條記錄,若相同則將文件指針后退23個(gè)字符(一個(gè)記錄為23個(gè)字符的長(zhǎng)度),然后把用戶(hù)輸入的記錄寫(xiě)入文件,最后關(guān)閉文件返回主程序。5)設(shè)計(jì)Count(統(tǒng)計(jì))子程序時(shí),先打開(kāi)文件,然后讀記錄,比較記錄的第16個(gè)字符,數(shù)學(xué)成績(jī)的高位),并統(tǒng)計(jì),直到文件指針到達(dá)文件尾,最后關(guān)閉文件調(diào)用宏SHOW_ITEM顯示統(tǒng)計(jì)結(jié)果,返會(huì)主程序。6)設(shè)計(jì)Query(查詢(xún))子程序時(shí),先打開(kāi)文件,通過(guò)調(diào)用宏GETIN得到要查找學(xué)生的姓名,然后讀文件記錄,并同要查找的學(xué)生姓名比較,若相同則輸出,

4、若不同繼續(xù)讀文件記錄,最后顯示查詢(xún)結(jié)果,關(guān)閉文件返回程序。另外還有打印的分?jǐn)?shù)段人數(shù)統(tǒng)計(jì),這些結(jié)合后面的子程序功能分析做詳細(xì)介紹。圖1是本設(shè)計(jì)顯示記錄的界面圖1 學(xué)生成績(jī)管理系統(tǒng)界面程序流程圖如圖2所示入口入口打開(kāi)文件打開(kāi)文件置指針到文件尾讀一個(gè)記錄從終端接收用戶(hù)輸入的記錄讀錯(cuò)?Y記錄寫(xiě)入文件顯示錯(cuò)誤信息N文件尾?Y關(guān)閉文件關(guān)閉文件N顯示記錄返回返回A) List流程圖B) Insert流程圖打開(kāi)文件返回返回文件刪除記錄姓名相同?讀一條記錄接收被刪除記錄的學(xué)生姓名入口返回關(guān)閉文件顯示統(tǒng)計(jì)結(jié)果指針到達(dá)文件尾對(duì)數(shù)學(xué)成績(jī)分段并統(tǒng)計(jì)打開(kāi)文件讀一個(gè)記錄入口入口打開(kāi)文件讀一個(gè)記錄是否為要修改的記錄返回關(guān)閉文

5、件顯示記錄返回寫(xiě)入修改記錄并關(guān)閉文件文件指針后退一個(gè)記錄是否為所尋找的記錄讀一個(gè)記錄打開(kāi)文件入口 YYNNNYNY開(kāi)始調(diào)用Query子程序調(diào)用Delete子程序調(diào)用Insert子程序調(diào)用Count子程序調(diào)用Modify子程序調(diào)用Iist子程序顯示菜單輸入一個(gè)字符結(jié)束是E是I是C是M是D是Q是LYNYNY NY N YNYNNY在大型的程序中,為了使程序清晰、可讀性好,一般會(huì)大量使用宏和子程序,因此,充分了解這些宏和子程序,才能掌握程序的編制方法。2.宏的分析本題中使用了下列宏,其作用如下:SHOW :用來(lái)指定地址的顯示字符串,有一個(gè)地址參數(shù)SET_P1: 設(shè)定光標(biāo)位置,有一個(gè)可變參數(shù)a,作用是

6、講光標(biāo)置于坐標(biāo)(a,36)處,使用了BIOS中斷10H的2號(hào)功能。SET_P2 :將光標(biāo)置于(12,2)處。SET_P3 : 將光標(biāo)置于(1,30)處。CLEAR :清除整個(gè)屏幕,用BIOS中斷10H的7號(hào)功能實(shí)現(xiàn),范圍是從坐標(biāo)(0,0)到(24,79),將整個(gè)區(qū)域變?yōu)榭瞻住LEAR1 :清除有半部分屏幕,清除范圍從坐標(biāo)(4,36)到(10,79),結(jié)果是擦出此區(qū)域的顯示內(nèi)容。CLEAR2 : 清除下半部分屏幕,清除范圍是從坐標(biāo)(12,0)到(24,79),結(jié)果是擦除此區(qū)域的顯示內(nèi)容。NNWLINE : 回車(chē)換行。SHOE_ITEM :顯示記錄內(nèi)容,執(zhí)行后顯示名稱(chēng),然后依次顯示4項(xiàng)功課成績(jī),

7、各項(xiàng)成績(jī)間空3個(gè)空格,最后換行。這個(gè)宏包含的語(yǔ)句較多,如果每次都直接用語(yǔ)句實(shí)現(xiàn)非常冗長(zhǎng),使用宏后則主程序就很簡(jiǎn)潔,充分體現(xiàn)了使用宏的優(yōu)點(diǎn)。GETIN : 獲取學(xué)生的信息,這也是一個(gè)使用頻繁的宏,其中含有很多的指令,它帶有ADDRS和COUNT2兩個(gè)參數(shù),ADDRS是存放信息的數(shù)據(jù)段位置,CIUNT2是接受的字符數(shù)。子程序分析下面詳細(xì)分析程序中用的的主要的子程序。(1) INSERT 子程序INSERT 子程序的功能是錄入一條記錄。首先保留現(xiàn)場(chǎng)入棧,然后DOS中斷3D號(hào)功能打開(kāi)FNAME指定的文件,然后宏GETIN清除屏幕右半部分的記錄輸入?yún)^(qū)域。在記錄的第一項(xiàng)處置光標(biāo),用GET_REC獲取記錄內(nèi)

8、容,用DOS中斷42H號(hào)功能將指針移到文件末尾。再用DOS中斷40H號(hào)功能將放在BUFFER緩沖區(qū)的23個(gè)字節(jié)的內(nèi)容寫(xiě)到文件中,接著關(guān)閉文件,重新設(shè)置光標(biāo)位置在顯示記錄位置。最后彈棧恢復(fù)現(xiàn)場(chǎng)。(2) GET_REC 子程序GER_REC 子程序的功能是獲取新的記錄內(nèi)容。首先用宏GETIN獲取學(xué)生的姓名,放入BUFF2中,最多15個(gè)字符,如果遇到回車(chē)鍵則提前結(jié)束。再用循環(huán)方式將BUFFER2中的15個(gè)字符送到BUFFER1中。然后用宏SET_P1將光標(biāo)置于數(shù)學(xué)成績(jī)輸入項(xiàng)后,等待鍵盤(pán)輸入。輸入的成績(jī),先放在BUER2中,然后加到BUFFER1中的姓名后面。輸入為2個(gè)字符后遇到回車(chē)鍵提前結(jié)束。接著用

9、同樣的方法輸入英語(yǔ)成績(jī),計(jì)算機(jī)成績(jī)和中文成績(jī)。完成后,這個(gè)程序就得到了一個(gè)記錄的所有信息。(3)OPENF子程序OPENF是個(gè)一個(gè)非常簡(jiǎn)單的子程序。它的作用是打開(kāi)一個(gè)文件并把一個(gè)文件句柄保存在數(shù)據(jù)段的handle緩沖區(qū)中。(4)QUERY子程序QUERY是查詢(xún)一條記錄。首先保留現(xiàn)場(chǎng)。然后分別清除界面右上方和下邊的區(qū)域。打開(kāi)FAME指定的文件并保留文件句柄。將光標(biāo)至于界面的下半空白部分開(kāi)始處,用宏GETIN 獲取最多15個(gè)字符的輸入,然后將BUFFER1中的內(nèi)容與BUFFER2中進(jìn)行比較,看是否相同。如果不同,再繼續(xù)向下從文件中讀出23個(gè)字節(jié)比較,循環(huán)向下,直到相同或文件結(jié)束為止。如果不同,則顯

10、示該條記錄,然后關(guān)閉文件,恢復(fù)現(xiàn)場(chǎng)。B: MOV AH , 3FH ;讀文件MOV CX , 23 ;讀23個(gè)字節(jié)(記錄長(zhǎng)度)MOV DX, OFFSET BUFFER2 ;放在BUFFER2中INT 21HLEA SI , BUFFER2LEA DI .BUFFER1MOV CX,15 ;循環(huán)次數(shù)C: MOV AL , BYTE PTRSICMP AL , BYTE PTR DI ;比較BUFFER1和BUFFER2JNZ B ;不同則轉(zhuǎn)BINC SIINC DLOOP C(5) MODIFY子程序MODIFY子程序的功能是修改記錄。先保護(hù)現(xiàn)場(chǎng),然后清除右上部分的記錄輸入?yún)^(qū)域,接著打開(kāi)文件。

11、用GET_REC子程序獲取輸入的記錄信息,并存入BUFFER1中。從打開(kāi)的文件中讀取一個(gè)記錄的內(nèi)容(23個(gè)字節(jié))放在BUFFER2中。比較記錄前面的15個(gè)字節(jié)(姓名),如果不同,則讀取下一個(gè)記錄;如果相同,則回移一個(gè)記錄的指針,回到剛才這條記錄的位置(因?yàn)樽x取一個(gè)記錄后,指針已移到下一條記錄上)。將放在BUFFER1中的輸入的記錄寫(xiě)到剛才這條記錄在文件中的位置上,從而實(shí)現(xiàn)此記錄的修改。最后關(guān)閉程序,恢復(fù)現(xiàn)場(chǎng)。 (6)DELETE子程序 DELETE子程序的功能是刪除一條記錄。 首先保留現(xiàn)場(chǎng),清除屏幕。然后打開(kāi)文件,保留文件句柄。用宏GETIN獲取15個(gè)字節(jié)的姓名字符,放在BUFFER1中。讀取

12、一條記錄(23個(gè)字節(jié)),放在BUFFER2中,然后和BUFFER1中內(nèi)容比較,如果不同,讀取下一條記錄。如果姓名相同,則把指針后移8個(gè)字符(4門(mén)功課所占空間),寫(xiě)入8個(gè)“0”字符。關(guān)閉文件,恢復(fù)現(xiàn)場(chǎng)并退出。 (7)LIST子程序 LIST子程序的作用是顯示文件中的記錄。 首先清除記錄輸入?yún)^(qū)和顯示區(qū)域。然后顯示記錄字段的標(biāo)題。打開(kāi)文件,保留文件句柄。讀取一條記錄的內(nèi)容放在BUFFER1中,并判斷是否到了文件末尾,如果不是,則顯示這條記錄。循環(huán)讀取直到文件結(jié)束。最后關(guān)閉程序,恢復(fù)現(xiàn)場(chǎng)。 (8)PRINT子程序 DELETE子程序的功能是打印文件中的記錄。 用OPENF子程序打開(kāi)文件。讀取一條記錄,

13、匯編語(yǔ)言提供了自定義數(shù)據(jù)結(jié)構(gòu)的結(jié)構(gòu)定義語(yǔ)句,可將不同的數(shù)據(jù)類(lèi)型放在一個(gè)數(shù)據(jù)結(jié)構(gòu)中,便于處理,在本程序中的記錄就采用了結(jié)構(gòu)定義語(yǔ)句。這里讀取記錄也用了結(jié)構(gòu)的方法。 接著用DOS中斷21H的5號(hào)功能,逐字打印存放在BUFFER1中的所以字符。 一條記錄打完后,打印回車(chē)符換行。然后用同樣方法繼續(xù)讀取下一條記錄并打印,直到文件結(jié)束為止。最后關(guān)閉文件退出。 (9)COT子程序 COT子程序的作用是統(tǒng)計(jì)各分?jǐn)?shù)段小說(shuō)人數(shù),并簡(jiǎn)化程序,作為示例,本程序只統(tǒng)計(jì)記錄數(shù)學(xué)各分?jǐn)?shù)段的人數(shù)。 首先顯示統(tǒng)計(jì)結(jié)果的標(biāo)題:maths<60<70<80<90<100。 然后打開(kāi)文件。讀取記錄,將記

14、錄的第16個(gè)字符(數(shù)學(xué)分?jǐn)?shù)的高位)取出比較。統(tǒng)計(jì)結(jié)果依次放在以BUFFER3開(kāi)頭的內(nèi)存單元中,如果小于60,則將小于60的記錄單元BUFFER3加一;若小于70,則將小于70的記錄單元BUFFER3加一,即BUFFER3下一個(gè)地址單元內(nèi)容加一,依次類(lèi)推。處理完后再讀取下個(gè)記錄,作同樣處理,直到文件結(jié)束為止。 接著顯示放在BUFFER3中的各分?jǐn)?shù)段的人數(shù)的統(tǒng)計(jì)結(jié)果,最后關(guān)閉文件結(jié)束。從程序中可以看出,統(tǒng)計(jì)時(shí)程序有個(gè)限制,本例每個(gè)分?jǐn)?shù)段最多不能超過(guò)9個(gè)人。操作說(shuō)明 改程序除源程序外,還需要另一個(gè)存放記錄的文件(此程序中使用的文件名為SCORE.TXT),但本程序并沒(méi)有創(chuàng)建這個(gè)文件的功能。要產(chǎn)生這個(gè)

15、文件,可用記事本先做以一個(gè)空的文件名為SCORE.TXT的文件。程序的運(yùn)行與該文件的存放位置有關(guān),位置是程序數(shù)據(jù)段的FNAME的值。二者要保持一致,否則會(huì)因?yàn)檎也坏綌?shù)據(jù)存放文件而出錯(cuò)。 程序運(yùn)行時(shí),在出現(xiàn)主菜單后,按1鍵,將顯示學(xué)生的各科成績(jī);按i鍵,將執(zhí)行錄入功能,可以錄入新的學(xué)生成績(jī);按M鍵,了修改學(xué)生成績(jī)。由于本程序時(shí)隔簡(jiǎn)單程序,所以在修改時(shí),要輸入學(xué)生的所有成績(jī),包括不要修改的成績(jī);按D鍵后,輸入要?jiǎng)h除的學(xué)生名,將使其成績(jī)?nèi)珵?;按Q鍵后,輸入要查詢(xún)的學(xué)生的姓名,鍵顯示其各科成績(jī);按C鍵將顯示數(shù)學(xué)成績(jī)的分段統(tǒng)計(jì)結(jié)果。 以上功能在運(yùn)行時(shí)可以單獨(dú)實(shí)現(xiàn)(即在進(jìn)入主菜單后,單擊功能鍵選中該功能

16、進(jìn)行操作后程序會(huì)關(guān)閉。但要運(yùn)行其他功能,則要重新進(jìn)入主菜單單擊別的功能鍵,即每次只能運(yùn)行一項(xiàng)功能)。要特別說(shuō)明的是,本程序住一套目的是驗(yàn)證匯編程序?qū)崿F(xiàn)的數(shù)據(jù)記錄操作功能,為使程序不至于郭長(zhǎng),減少篇幅,因此程序處理會(huì)很簡(jiǎn)單。程序中沒(méi)有錯(cuò)誤處理程序,如果輸入錯(cuò)誤,如按退格鍵將會(huì)出錯(cuò),因此輸入時(shí)要注意補(bǔ)要輸錯(cuò)。程序代碼data segmentmess1 db ' student grade management system',0ah,0dh,'$'mess2 db ' this is main menu',0ah,0dh,'$'mes

17、s3 db ' insert (i) please input:',0ah,0dh,'$' mess4 db ' modify (m) name :',0ah,0dh,'$' mess5 db ' delete (d) maths :',0ah,0dh,'$'mess6 db ' query (q) english :',0ah,0dh,'$'mess7 db ' count (c) computer:',0ah,0dh,'$'mess

18、8 db ' print (p) chinese :',0ah,0dh,'$'mess9 db ' exit (e)',0ah,0dh,'$'mess10 db '*$'mess11 db 'name Ma En Co Ch',0ah,0dh,'$'mess13 db ' list (l)',0ah,0dh,'$'mess12 db 'maths <60 <70 <80 <90 <100',0ah,0dh,

19、'$'err1 db ' there is not this student$'err2 db ' file close wrong$'fname db "d:masmscore.txt" ;記錄分?jǐn)?shù)文件的路徑和文件名。buffer1 db 23 dup(?)buffeer db 0ah,0dh,'$'buffer2 db 30 dup(?)buffer3 db 8 dup('0')count db 5handle dw ?del db 8 dup('0')x db ?data

20、endsscore struc ;定義記錄結(jié)構(gòu)names db 15 dup(' ')maths db 0,0english db 0,0computer db 0,0chinese db 0,0score endsshow macro addrs ;顯示字符串 lea dx,addrs mov ah,9 int 21h endmset_p1 macro a ;設(shè)光標(biāo)于(a,36) mov ah,2 mov dh,a mov dl,36 mov bh,0 int 10h endmset_p2 macro ;設(shè)光標(biāo)于(12,2) mov ah,2 mov dh,12 mov dl

21、,2 mov bh,0 int 10h endmset_p3 macro ;設(shè)光標(biāo)于(1,30) mov ah,2 mov dh,1 mov dl,30 mov bh,0 int 10h endmclear macro ;清整個(gè)屏幕 mov al,0 mov cl,0 mov ch,0 mov dh,24 mov dl,79 mov bh,7 mov ah,6 int 21h endmclear1 macro ;清右上記錄輸入?yún)^(qū) mov al,0 mov bh,7 mov ch,4 mov cl,36 mov dh,10 mov dl,79 mov ah,6 int 10h endmclear

22、2 macro ;清下半部分記錄顯示區(qū) mov al,0 mov bh,7 mov ch,12 mov cl,0 mov dh,24 mov dl,79 int 10h endmnewline macro ;回車(chē)換行 push ax push dx mov dl,0dh mov ah,2 int 21h mov dl,0ah mov ah,2 int 21h pop dx pop ax endmshow_item macro addrs ;在指定位置顯示記錄 local iloop,w10 push bx push cx mov bx,0iloop: mov dl,addrsbx ;顯字符串

23、mov ah,2 int 21h inc bx cmp bx,15 jl iloop mov cx,4w10: mov dl,' ' mov ah,2 int 21h mov dl,' ' mov ah,2 int 21h mov dl,' ' mov ah,2 int 21h mov dl,addrsbx mov ah,2 int 21h inc bx mov dl,addrsbx mov ah,2 int 21h inc bx loop w10 newline pop cx pop bx endmgetin macro addrs,count

24、2 ;從鍵盤(pán)獲取信息local zeroit,lp,input_end,exit push bx push ax mov bx,0zeroit: mov addrsbx,' ' inc bx cmp bx,15 jl zeroitmov bx,0lp: mov ah,1 int 21h cmp al,0ah jz input_end cmp al,0dh jz input_end mov addrsbx,al inc bx cmp bx,count2 jl lpinput_end: cmp al,0dh jz exit cmp al,0ah jz exit mov ah,7 i

25、nt 21h jmp input_endexit: pop ax pop bx endmcode segmentmain proc far assume cs:code,ds:data,es:datastart: mov ax,data mov ds,ax mov ah,0 ;設(shè)顯示模式80*25 mov al,3 int 10h clear show mess1 show mess2 show mess13 show mess3 show mess4 show mess5 show mess6 show mess7 show mess8 show mess9 newline show mes

26、s10 set_p3w: mov ah,7 int 21h cmp al,'i' jnz n1 call insert jmp wn1: cmp al,'m' jnz n2 call modify jmp wn2: cmp al,'d' jnz n3 call delete jmp wn3: cmp al,'q' jnz n4 call query jmp wn4: cmp al,'c' jnz n5 call cot jmp wn5: cmp al,'p' jnz n6 call print jm

27、p wn6: cmp al,'l' jnz n7 call list jmp wn7: cmp al,'e' jz exitf jmp wexitf: mov ah,4ch int 21h retmain endpinsert proc near push ax push bx push cx push dx mov dx,offset fname mov al,2 mov ah,3dh ;打開(kāi)文件 int 21h mov bx,ax clear1 set_p1 4 call get_rec mov cx,0 ;指針移到文件尾 mov dx,0 mov al,2

28、 mov ah,42h int 21h mov cx,23 ;寫(xiě)文件 mov dx,offset buffer1 mov ah,40h int 21h mov ah,3eh ;關(guān)閉文件 int 21h set_p3 pop dx pop cx pop bx pop ax retinsert endpget_rec proc near push ax push bx getin buffer2,15 ;輸入姓名 mov bx,0 mov cx,15continue: mov al,buffer2bx mov buffer1bx,al inc bx loop continue set_p1 5 g

29、etin buffer2,2 ;輸入數(shù)學(xué)成績(jī) mov al,buffer2 mov buffer1bx,al inc bx mov al,buffer2+1 mov buffer1bx,al inc bx set_p1 6 getin buffer2,2 ;輸入英語(yǔ)成績(jī) mov al,buffer2 mov buffer1bx,al inc bx mov al,buffer2+1 mov buffer1bx,al inc bx set_p1 7 getin buffer2,2 ;輸入計(jì)算機(jī)成績(jī) mov al,buffer2 mov buffer1bx,al inc bx mov al,buff

30、er2+1 mov buffer1bx,al inc bx set_p1 8 getin buffer2,2 ;輸入語(yǔ)文成績(jī) mov al,buffer2 mov buffer1bx,al inc bx mov al,buffer2+1 mov buffer1bx,al inc bx pop bx pop ax retget_rec endpopenf proc near ;打開(kāi)文件 mov dx,offset fname mov al,02 mov ah,3dh int 21h mov handle,ax retopenf endpquery proc near ;查詢(xún)記錄 push ax

31、push bx push cx push dx clear1 clear2 mov dx,offset fname mov al,2 mov ah,3dh ;打開(kāi)文件 int 21h mov bx,ax set_p2 getin buffer1,15 ;取姓名到buffr1中 lea dx,mess11 mov ah,9 int 21hb: mov ah,3fh ;讀文件 mov cx,23 ;讀23個(gè)字節(jié)(記錄長(zhǎng)度 mov dx,offset buffer2 ;放在buffer2中 int 21h lea si,buffer2 lea di,buffer1 mov cx,15 ;循環(huán)次數(shù)c:

32、 mov al,byte ptrsi cmp al,byte ptrdi ;比較buffer1和buffer2 jnz b ;不同則轉(zhuǎn)b inc si inc di loop c mov buffer2+23,'$' show_item buffer2 mov ah,3eh int 21h pop dx pop cx pop bx pop ax retquery endpmodify proc near ;修改記錄 push ax push bx push cx push dx clear1 set_p1 4 mov dx,offset fname mov al,2 mov a

33、h,3dh int 21h mov bx,ax mov handle,ax call get_rec ;讀取輸入內(nèi)容放在buffer1read: mov dx,offset buffer2 mov cx,23 mov ah,3fh ;讀文件,記錄內(nèi)容放在buffer2 int 21h lea si,buffer2 ;比較姓名是否相同 lea di,buffer1 mov cx,15c5: mov dl,byte ptrsi cmp dl,byte ptrdi jnz read inc si inc di loop c5 mov bx,handle mov ah,42h ;回移文件指針 mov

34、al,1 mov cx,0ffffh mov dx,-23 int 21h mov cx,23 mov dx,offset buffer1 mov ah,40h ;寫(xiě)入修改記錄 int 21h mov ah,3eh int 21h jmp exit2exit1: set_p2 show err1 exit2: set_p3 pop dx pop cx pop bx pop ax retmodify endpdelete proc near push ax push bx push cx push dx clear1 set_p1 4 mov dx,offset fname mov al,2 m

35、ov ah,3dh ;打開(kāi)文件 int 21h mov bx,ax mov handle,ax getin buffer1,15 ;讀取鍵盤(pán)輸入放在buffer1read5: mov dx,offset buffer2 mov cx,23 mov ah,3fh ;從文件讀記錄放在buffer2中 int 21h lea si,buffer2 lea di,buffer1 mov cx,15c6: mov dl,byte ptrsi cmp dl,byte ptrdi jnz read5 inc si inc di loop c6 mov bx,handle mov ah,42h ;移文件指針

36、mov al,1 mov cx,0ffffh mov dx,-8 int 21h mov cx,8 mov dx,offset del mov ah,40h ;寫(xiě)文件 int 21h mov ah,3eh ;關(guān)閉文件 int 21h jmp exit6exit5: set_p2 show err1 exit6: set_p3 pop dx pop cx pop bx pop ax retdelete endp list proc near ;列文件中記錄 push ax push bx push cx push dx clear1 clear2 set_p2 show mess11 mov d

37、x,offset fname mov al,2 mov ah,3dh ;打開(kāi)文件 int 21h mov bx,axagain: mov dx,offset buffer1 ;讀取記錄 mov cx,23 mov ah,3fh int 21h cmp ax,0 jz p show_item buffer1 jmp againp: mov ah,3eh ;關(guān)閉文件 int 21h set_p3 pop dx pop cx pop bx pop ax retlist endpprint proc near push ax call openf ;打開(kāi)文件 mov cl,count mov ch,0read2: mov dx,offset buffer1 mov cx,type score mov ah,3fh ;讀文件 int 21h mov cx,23h mov bx,0next: mov ah,5 mov dl,byte ptr buffer1bx int 21h inc bx loop next mov ah,5 mov dl,0dh int 21h dec x cmp x,0 jnz read2 mov bx,handle mov ah,3e

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論