個人檔案管理匯編._第1頁
個人檔案管理匯編._第2頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、課程設計說明書匯編語言課程設計班級:姓名學號:設計題目:個人檔案文件管理設計時間:至指導教師評語:_ 評閱成績:_ 閱教 師:1、課程設計的目的、任務進行程序設計方法和技能的基本訓練,鞏固在課堂上學到的有關程序設計的基 本知識和方法。通過實際動手能力的培養(yǎng),進一步熟悉匯編語言程序的結構和使用方 法,達到能 獨立閱讀、編制和調(diào)試一定規(guī)模的匯編語言程序的水平。2、軟件需求分析和設計題目:個人檔案管理功能描述:創(chuàng)建一個人檔案文件(若已存在則直接使用該文件,它包含學號,姓名、年 齡、性別、電話,通信地址六項內(nèi)容。試編寫管理程序,要求系統(tǒng)顯示如 下菜單,按鍵 后執(zhí)行相應的操作。(1 L 命令:列出文件中

2、的所有人的記錄,每人一行(2 I 命令:在文件末尾插入一個人的記錄(3 D 命令:根據(jù)姓名刪除指定的紀錄,若出現(xiàn)多條記錄,應再提供刪除哪 條記錄 的選擇。(4 F 命令:按學號字段的值進行查詢,并將查詢結果顯示在屏幕上(5 0 命令:根據(jù)姓名對記錄進行排序(6 Q 命令:退出管理系統(tǒng)(7 P 命令:建立或打開文件總流程圖:在主程序中,不能實現(xiàn)在程序進行中選擇打開文件,新建文件的操作。對于文 件的操作,只可以在最初的時候進行。同時,要在程序最后關閉程序,否則之前建立的 文件內(nèi)容是空的。查詢子程序中,由于學號是唯一的,所以不會出現(xiàn)有多個結果的輸出,控制學號 的語句是在輸入中實現(xiàn)的。 同時,如果沒有

3、找到相應的學號,程序會輸出相 關的提 示信息。特 z 蚌底鑒片CX .) Ii.MfUST.文件讀取流程圖讀取文件中,可能會出現(xiàn),文件已經(jīng)建立好了。但是內(nèi)容是空的,或者我們之前對 文件進行的相關操作,如插入一條記錄,刪除插入的記錄,導致文件最終的內(nèi)容是空 的。刪除流程圖:程序主要實現(xiàn)了對學生的學號、姓名、年齡、性別、電話號碼、家庭住址的錄入、 增加數(shù)據(jù),查找,刪除,生成文件等功能。 程序主要運用了 結構體定義,以及 DOS中斷,子程序等來實現(xiàn)。主程序:程序從輸入文件路徑開始,文件可以是存在的,也可以是新建的。完 成之后用CALL 語句進行子程序的調(diào)用。 在這個調(diào)用的處理上,比較巧妙 的是,在數(shù)

4、據(jù)定義的 時候,定義了一個字符串,前面是實現(xiàn)功能所對應的 標號,后面是子程序名。當我們輸 入信息之后,程序?qū)⑤斎氲膬?nèi)容與標號進行比較,找到之后,指針后移調(diào)用子程序。如 果沒有找到,則提示輸入的標號錯誤。it in3、程序?qū)崿F(xiàn)說明1Mill 4斤卉暮審_ou浮帛G J Li拾業(yè)刪除數(shù)據(jù)子程序:清空記錄數(shù),保存按名字查找到的待刪除的記錄條數(shù),取地址,之后有串的比較,存儲記錄條數(shù),調(diào)整存儲的位置,待刪除記錄首地址,總是指向?qū)嶋H待處理的記錄!提 示輸入學號,要刪除記錄多于兩條時!找到的記錄的地址,用相同的處理去實現(xiàn)刪除 數(shù)據(jù)的功能,最后要調(diào)整指針,以及記錄的內(nèi)容。在刪除的子程序中,最大的亮點是查 詢出

5、的結果是多條記 錄的時候,會有進一步的判斷來實現(xiàn)較為精確的刪除。在代碼 中,有記錄條數(shù)乘 2 的語句,這是為了找到待刪除語句做準備的。而刪除則是用 XOR 功能,將內(nèi)容清空來實現(xiàn)其操作。輸入子程序:輸入中,是在學號的輸入上做了判斷,即不允許有重復的學號出現(xiàn),當輸入的是相 同的時候,會出現(xiàn)提示信息,并且要求重新輸入。在輸入一 個學生的信息之后,會有信 息提示,詢問是否要繼續(xù)輸入。如不繼續(xù),則顯示菜單,進行其他操作。由于用了結構 體,就可以將輸入的信息直接存 儲到相應的位置。關閉文件:在關閉文件操作中,對文件的操作只在開始和結束時進行,中間不進行任何操作! 如果有效記錄是 0 就不寫文件!程序主要

6、是對文件中內(nèi)容的 寫操作,同時要判斷文件 中的記錄條數(shù)是不是 0,如果是就不寫如文件,即空文件。關閉文件是操作中最后一 步,如果在操作的過程中,沒有選擇 關閉文件,那么,運行程序后,之后生成空的文件,用 戶的操作將沒有任何意義。所以,在做完其他的操作之后,一定要選擇關閉文件,起到 保存數(shù)據(jù)的作用。讀文件:讀文件操作中,首先是將指針移到文件首,將記錄清零,開始讀數(shù)據(jù),讀取的數(shù)據(jù) 長度就是結構體變量總字節(jié)數(shù),之后記錄數(shù)加 1,指向下一個記錄。保存末尾地址,INST 有用到,指針應該弄成指向下一條待存入內(nèi) 存的地址,為其他子程序使用提供 方便。在讀文件的過程中會出現(xiàn),文件內(nèi)容是空的,即文件讀取成功,

7、但是讀取的字 符是 0,對此作了相應的處 理,提示文件為空。4、程序中定義了 3 個宏:GET 用于輸入信息,同時對 DX,AX 做相應的處理,在之后的程序中,直接調(diào)用就 可以了,避免在寄存器的使用上出錯。OUTPUT 用于輸出提示信息。Clear 是實現(xiàn)清屏的功能,只在程序最后關閉的時候?qū)崿F(xiàn)。List 子程序:顯示提示信息的程序,內(nèi)容很簡單。有記錄時顯示,沒有的時候提示 文件為空。Fnd 子程序:按照學號進行查找,因為學號唯一,所以查詢的時候,不需要做其他的判斷,只要確認學號是否存在就可以。Ord 子程序:采用冒泡排序法,按姓名進行排序。由小到大排序。Inst 子程序:輸出提示信息,然后調(diào)用

8、輸入子程序來實現(xiàn)。4、調(diào)試與測試建立文件,文件可以是已經(jīng)存在的,也可以是新建的。輸入信息。輸入的時候,可以輸入空的信息,即直接回車選擇菜單中的選項,實現(xiàn)相應的功能。圖中是實現(xiàn)了顯示信息的功能,并且體現(xiàn) 出可以輸入空信息上圖實現(xiàn)的是,數(shù)據(jù)的按姓名排序以及按學號查找相關信息圖中實現(xiàn)的是刪除功能,信息提示輸入姓名,如果出現(xiàn)多條記錄,會提示輸入學號, 進一步確認刪除的信息。5、程序總結這次的課程設計,我選的是個人檔案管理。主要實現(xiàn)對部分信息的處理,插入、 刪除、查找、排序的功能。程序基本完成了這些功能,可以實現(xiàn) 10 個學生的信息記 錄。同時在刪除的功能中,先進行姓名查找,遇到多條記錄時,要求用戶輸入

9、學號,達 到刪除自己想要刪除的信息。在本次課程設計中,程序最大的難度就在于結構體的 使用,以及文件的相關處理。結構體定義好之 后,在使用的時候就可以直接取我們想 要的地址,而不是之前想要取出數(shù)據(jù) 就要計算數(shù)據(jù)的具體位置,由于數(shù)據(jù)的長短的不 一樣,給我們計算帶來的很大的難度。使用結構體,很好的解決了這些問題。文件的處理中,不太理解,系統(tǒng) 是怎樣將文件生成的,同時,生成文件的內(nèi)容的為什么會有一些特殊的 符號。對于文 件的相關信息查閱的一些資料,明白代碼中哪些是新建文件,建文件時,又分為可讀,可寫,與可讀寫。但是不清楚什么是文件標號,是指文件是哪一種類型?文件句柄是 指文件的內(nèi)容?對這些還是沒能很透

10、徹的理解,這點感到很遺憾。程序不足的是,文 件的打開只可以在最開始進行,中間如果選擇菜單項的文件命令時,程序會做輸入命 令錯誤來處理,沒能夠 將這部分很好的修改,還是因為對文件的理解不夠深入。而且 程序操作完成 后必須選擇關閉程序,否則生成的文件里沒有用戶輸入的信息。關閉 程序就是起到保存的作用。關于這一點不是很滿意,我想要的結果是系統(tǒng)可以提示 用戶要不要保存,或者自動保存。同時,在輸入中,沒有做判斷,也就是說 可以輸入空 的內(nèi)容。但是文件關閉之后,下次打開時,不會提示文件是空的,因為內(nèi)容雖然沒有 輸入,但是回車也在文件中生成了。同時,在外部直接寫 文件的時候,要嚴格按照文件 中每個數(shù)據(jù)定義的

11、長度來寫數(shù)據(jù),否則,程序調(diào)用文件時,一些數(shù)據(jù)會被覆蓋,沒法顯 示。希望在之后的學習中,可以繼續(xù)深入了解匯編語言,把自己遇到的問題 都能夠獨 立解決,并且可以自己獨立的完成想要實現(xiàn)的軟件。提高動手能力,以及思維深度。6 參考文獻匯編語言鄭曉薇 著機械工業(yè)出版社匯編語言 王爽著清華大學出版社7、附錄1用戶手冊程序首先要輸入路徑,然后依次填寫信息。輸入一個人的信息之后,會提示是否 繼續(xù)。輸入完畢后,可以進行其他操作,刪除時,先提供姓名,出現(xiàn)多條記錄時,再輸入學號來確定刪除內(nèi)容。 文件的打開只可以在開始使用,完成操作后,必須關閉文件,否則之前的內(nèi)容不保存。2源程序清單刪除子程序:DEL PROC NE

12、AR ;刪除記錄MOV MEM2,0 ;清空,保存按名字查找到的待刪除的記錄條數(shù)OUTPUT STRH ;提示輸入待刪除記錄的名字GET RECNAMLEA BP,RECNAM ;SI ,進行查找LEA BX,DAT ;DIMOV CX,RECSD1: PUSH CXMOV SI,BP ;保持不變MOV DI,BXLEA DI,DI. NAM ;調(diào)整為姓名XOR CX,CXMOV CL,RECNAM+1 ;RECNAM DB 16,?,16 DUP(?,以實際輸入個數(shù)為標準ADD CX,2CLDREPZ CMPSBJNZ D2INC MEM2 ;存儲查找到的條數(shù)MOV AX,MEM2 ;乘上

13、2MOV SI,MEM2ADD SI,AXMOV MEM3+SI-2,BX;調(diào)整存儲的位置,待刪除記錄首地址MOV DI,BXMOV CX,1CALL LT1D2: ADD BX,LEN ;總是指向?qū)嶋H待處理的記錄!POP CXLOOP D1CMP MEM2,0 ;未找至 U 記錄JZ D3CMP MEM2,1 ;找到一條記錄JZ D4OUTPUT STRJ ;提示輸入學號,要刪除記錄多于兩條時!GET RECNAMLEA BP,RECNAM+1 ;SILEA BX,MEM3 ;DI ,找到的記錄的地址,MOV CX,MEM2 ;找到的記錄條數(shù)H1: PUSH CXMOV SI,BP ;保持不

14、變MOV DI,BX;尋址,內(nèi)存里面存的還是地址,別人的LEA DI,DI. NUM+1; 調(diào)整為學號XOR CX,CXMOV CL,RECNAM+1 ;RECNAM DB 16,?,16 DUP(?,以實際輸入個數(shù)為標準ADD CX,1 ;1 個?號+10 個學號CLDREPZ CMPSBJNZ H2MOV DI,BXMOV MEM3,DI ;還是存儲到 MEM3 里,不管之前 MEM3 里面是什么!MOV CX,1CALL LT1 ;顯示最終確定的記錄!POP CXJMP D5H2: ADD BX,2 ;指向 BX 尋址的下一個字POP CXLOOP H1JMP D4D3: OUTPUT

15、STRIJMP D9D4: MOV DI,MEM3 ;轉(zhuǎn)存地址,根據(jù) DI 進行刪除D5: MOV SI,DI ;DI,SI 指向同一個地址ADD SI, LEN ;指向要往前移的記錄DEC RECS ;有效記錄減 1XOR DX,DX ;計算剩余組數(shù),MOV BX,DID6: CMP BX,0 ;看 BX 是否已經(jīng)指向首地址 0JZ D7SUB BX,L ENINC DXJMP D6D7: MOV CX,RECSSUB CX,DX ;應往前移動的組數(shù)CMP CX,0 ;如果已經(jīng)是最后一組就不用動了,有效記錄已經(jīng)減了D8: MOV BP,CX ;保存 整體前移MOV CX,L ENCLDREP

16、 MOVSB ;不用管 DI,SI ,會自動調(diào)整MOV CX,BPLOOP D8MOV MEM1,DI ;保存末尾地址,此時 DI 即為下一結構體首址D9: RET1! JZ D9DEL ENDP輸入子程序:INPUT PROC NEAR11: OUTPUT STR5 ;學號GET DI. NUMPUSH DI ;保存 DICMP RECS,0JZ S4 ;第一次不用比較MOV BP,DI ;SILEA BX,DAT ;DIMOV CX,RECSS1: PUSH CXMOV SI,BP ;保持不變MOV DI,BXLEA DI,DI. NUM ;調(diào)整為學號MOV CX,13 ;11,?,11

17、DUP(?CLDREPZ CMPSBJNZ S2OUTPUT STRE ;提示學號重復POP CX ;這個 CX 并無太大意義,只是為了保持堆棧平衡 JMP S3S2: ADD BX,L ENPOP CXLOOP S1JMP S4 ;無學號相同記錄則跳至順序執(zhí)行S3: POP DIJMP 11S4: POP DIOUTPUT STR6 ;姓名GET DI. NAMOUTPUT STR7 ;年齡GET DI. AGE ;入口參數(shù) DI 控制好就行OUTPUT STR8 ;性別GET DI. SEXOUTPUT STR9 ;電話號GET DI. TELOUTPUT STRA ;通信地址GET DI

18、. MALINC RECSADD DI,LEN ;指向下一個結構OUTPUT STRB ;提示是否繼續(xù)輸入MOV AH,01HINT 21HCMP AL,YJZ I2CMP AL,yJNZ I3CMP RECS,NJZ I3I2: OUTPUT CRLFJMP I1I3: MOV MEM1,DI ;保存末尾地址,INST 可以用!OUTPUT CRLFRETINPUT ENDP關閉文件子程序:QUT PROC NEAR ;退出對文件的操作只在開始和結束時進行,中間不進行任何操作! !LEA DX,FNAMEBUF+2 ;新建同名文件,覆蓋,不需要先關閉之前的!MOV AH,3CHXOR CX,CXINT 21HJC Q2 ;提示失敗信息MOV FCODE,AXMOV CX,RECS ;寫文件開始CMP CX,0JZ Q3 ;如果有效記錄是 0 就不寫文件MOV BX,FCODELEA DX,DATQ1: MOV BP,CXMOV AH,40H ;寫文件實際代碼MOV CX,LEN ;寫入的字節(jié)數(shù)INT 21HJC Q2 ;提示寫入出錯ADD DX,L ENMOV CX,BPLOOP Q1JMP Q3 ;跳過錯誤信息Q2: OUTPUT ERRQ3: M

溫馨提示

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

評論

0/150

提交評論