人事檔案文件管理課程設(shè)計(jì)_第1頁
人事檔案文件管理課程設(shè)計(jì)_第2頁
人事檔案文件管理課程設(shè)計(jì)_第3頁
人事檔案文件管理課程設(shè)計(jì)_第4頁
人事檔案文件管理課程設(shè)計(jì)_第5頁
已閱讀5頁,還剩54頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、59/59匯編語言程序設(shè)計(jì)課程設(shè)計(jì) 題目:人事檔案文件管理 2013-11-26設(shè)計(jì)目的匯編語言課程設(shè)計(jì)是對所學(xué)課程內(nèi)容全面、系統(tǒng)的總結(jié)、鞏固和提高的一項(xiàng)課程實(shí)踐活動(dòng)。根據(jù)匯編語言的特點(diǎn),選擇相應(yīng)的題目,在老師的指導(dǎo)下,由學(xué)生獨(dú)立完成。課程設(shè)計(jì)要求同學(xué)們熟悉匯編語言的編程,BIOS中斷調(diào)用、系統(tǒng)功能調(diào)用、磁盤數(shù)據(jù)的查詢、存取、圖形顏色的顯示與調(diào)整等相關(guān)知識(shí)。通過課程設(shè)計(jì),一方面提高運(yùn)用匯編語言編程解決實(shí)際問題的能力,另一方面使同學(xué)們更深入的了解計(jì)算機(jī)系統(tǒng)內(nèi)部的有關(guān)知識(shí),為以后的學(xué)習(xí)和系統(tǒng)開發(fā)奠定良好的基礎(chǔ)。二設(shè)計(jì)內(nèi)容在文檔中創(chuàng)建一個(gè)person.txt的文本文件,它包含id號、姓名、年齡、性別

2、、電話、通信地址等六項(xiàng)內(nèi)容,先編寫一項(xiàng)如下圖界面的功能:實(shí)現(xiàn)如下功能:i命令,實(shí)現(xiàn)數(shù)據(jù)輸入,在末尾添加f命令,實(shí)現(xiàn)數(shù)據(jù)查找,按名字進(jìn)行查找d命令,實(shí)現(xiàn)數(shù)據(jù)的刪除,按名字進(jìn)行查找刪除。o命令,實(shí)現(xiàn)數(shù)據(jù)的排序,按名字進(jìn)行排序l命令,實(shí)現(xiàn)數(shù)據(jù)的顯示,q命令,實(shí)現(xiàn)退出,并將數(shù)據(jù)重新寫入三程序設(shè)計(jì)原理 (1)本次實(shí)驗(yàn)是模塊化程序設(shè)計(jì)思想,通過一個(gè)主程序,調(diào)用其他模塊的子程序, :文件打開,如果能打開文件便讀取其中的內(nèi)容,否則的話,便創(chuàng)建文件,接著執(zhí)行以后的代碼。 :宏的定義:實(shí)驗(yàn)中做了一個(gè)顯示字符串的宏,方便以后顯示各種字符串 :背景顏色的實(shí)現(xiàn):通過調(diào)用int 10h的功能,實(shí)現(xiàn)s草綠色的背景 :插入程

3、序:通過查尋是否存在當(dāng)前輸入的id,如果不存在,則繼續(xù)輸入,如果存在則停止輸入。輸入的時(shí)候計(jì)算輸入的字節(jié),不足的用空格補(bǔ)充,并將輸入的內(nèi)容保存到內(nèi)存里,當(dāng)關(guān)閉文件時(shí),保存到文件里,同時(shí)設(shè)置指針指向數(shù)據(jù)段的末尾。程序的框圖如下: cmp al,I jnz error call inputY/N輸入id輸入 Y/N輸入id輸入 輸入id進(jìn)行檢查,調(diào)用check函數(shù),設(shè)置flag=bp,初始值設(shè)置bp=0,如果存在bp=0,否則bp=1; 輸入id進(jìn)行檢查,調(diào)用check函數(shù),設(shè)置flag=bp,初始值設(shè)置bp=0,如果存在bp=0,否則bp=1; Check Check調(diào)用storid保存到stu

4、中,BP=0?N調(diào)用storid保存到stu中,BP=0?Y保存到數(shù)據(jù)段Y保存到數(shù)據(jù)段調(diào)用inputname輸入名字調(diào)用inputname輸入名字調(diào)用inputsex輸入性別調(diào)用inputsex輸入性別輸入年齡輸入年齡調(diào)用inputold調(diào)用inputold調(diào)用inputaddress輸入地址調(diào)用inputaddress輸入地址調(diào)用inputphone,如果輸入結(jié)束,通過回車鍵進(jìn)入主頁面。輸入電話調(diào)用inputphone,如果輸入結(jié)束,通過回車鍵進(jìn)入主頁面。輸入電話RRet結(jié)束 :顯示程序,首先判斷文件中是不是有內(nèi)容,通過設(shè)置是一個(gè)全局count記錄文件的個(gè)數(shù),如果記錄為零,則退出,返回主菜單

5、,否則每次從內(nèi)存中取60個(gè)字節(jié)。 到另一個(gè)緩存顯示,用count計(jì)數(shù),顯示一次,count-; :查找模塊 :首先提示用戶輸入想要查找的名字,調(diào)整指針,然后用字符串cmpsw比較名字,直到最后一個(gè)名字為止,若找到則顯示,不存在,則提示; 程序框圖:名字查找 名字查找關(guān)鍵代碼:lea關(guān)鍵代碼:lea si,stu add si,10 ;指向記錄第一個(gè)人的姓名 mov bx,sinase10: lea di,_name ;存放待查人的姓名地址 mov cx,5 repe cmpsw輸入要查找的名字輸入要查找的名字si-數(shù)據(jù)段第一個(gè)名字 di=輸入的名字bp=0si-數(shù)據(jù)段第一個(gè)名字 di=輸入的名

6、字bp=0名字比較 名字比較Si移到下一個(gè)名字 Si移到下一個(gè)名字找到名字找到名字Y si=指向?qū)W生信息頭 N si=指向?qū)W生信息頭 輸出學(xué)生信息輸出學(xué)生信息Count-1Count-1 COUNT=0? NCOUNT=0? RET結(jié)束 RET結(jié)束:刪除程序:通過名字進(jìn)行查找,如果不存在就報(bào)錯(cuò),如果存在多條記錄進(jìn)行提示,選擇刪除那條記錄:Bp作為一個(gè)標(biāo)志:Bp作為一個(gè)標(biāo)志:BpBp1;有一條記錄Bp3;有多調(diào)記錄名字刪除rep movswRET結(jié)束sub stu1,60 sub count1,1Si=di下一個(gè)di=delbpdi=delbx刪除第bx個(gè)記錄Bx=bx*2BP3?Bp1?名字刪

7、除rep movswRET結(jié)束sub stu1,60 sub count1,1Si=di下一個(gè)di=delbpdi=delbx刪除第bx個(gè)記錄Bx=bx*2BP3?Bp1?查找名字相同的記錄查找名字相同的記錄 N Y N YSiendaddr Siendaddrsi=endaddr Nsi=endaddr Y :排序程序:若只有一條記錄或者沒有直接跳出,否則按照Ascii碼排序,排序用冒泡排序算法:程序框圖: endaddr-倒數(shù)第二個(gè)名字si-endaddr-倒數(shù)第二個(gè)名字si-第一個(gè)名字swapped=0這里采用冒泡算法,從第一個(gè)數(shù)開始對相鄰的兩個(gè)數(shù)進(jìn)行比較,如果次序不對,進(jìn)行交換。從圖中

8、可以看出,為了提高效率,設(shè)置了一個(gè)標(biāo)志位,每次進(jìn)入外循環(huán),就將標(biāo)志位值零,在內(nèi)循環(huán)每做一次交換,就將該標(biāo)志位值1,在每次內(nèi)循環(huán)結(jié)束后,可測試標(biāo)志位是否是0,如果是0.則結(jié)束排序,否則在進(jìn)行一次外循環(huán)。這種算法效率較高一些。這里采用冒泡算法,從第一個(gè)數(shù)開始對相鄰的兩個(gè)數(shù)進(jìn)行比較,如果次序不對,進(jìn)行交換。從圖中可以看出,為了提高效率,設(shè)置了一個(gè)標(biāo)志位,每次進(jìn)入外循環(huán),就將標(biāo)志位值零,在內(nèi)循環(huán)每做一次交換,就將該標(biāo)志位值1,在每次內(nèi)循環(huán)結(jié)束后,可測試標(biāo)志位是否是0,如果是0.則結(jié)束排序,否則在進(jìn)行一次外循環(huán)。這種算法效率較高一些。di-si的下一個(gè)名字Ax=di bx=siAx=di bx=si r

9、epe cmpsb repe cmpsbSi=di? YSi=di?didisi NSwapped=1Swapped=1Si=ax Si=ax Si=endaddrSi=endaddrSwapped=0?NSwapped=0? N Y結(jié)束ret結(jié)束ret :退出程序:打開文件,把數(shù)據(jù)段的內(nèi)容讀入文件,否則創(chuàng)建文件,同是根據(jù)count,寫入最后一條記錄,在末尾 ,關(guān)閉文件。四程序分工蘇林東:模塊的整合與顏色的調(diào)配,還有文件的建立與相關(guān)模塊的制作吳威:輸入模塊和刪除模塊的制作,關(guān)閉文件的制作。曹錦峰:查詢模塊和排序模塊的制作。五源程序及運(yùn)行結(jié)果:(1)源程序: data segment HH DB

10、 0,0,: MM DB 0,0,: SS1 DB 0,0 mess1 db id:,$ mess2 db name:,$ mess3 db old:,$ mess4 db sex:,$ mess5 db address:,$ mess6 db phone number:,$ mess7 db enter error!,0dh,0ah,$ mess8 db id,8 dup( ),name,5 dup( ),old ,sex , address ,5 dup( ),telphone,13,10,$ mess9 db student information in the table is:,13

11、,10,$ mess10 db please enter the name:,13,10,$ mess11 db 13,10,OK,you are quit,welcome the next!,$ mess13 db sorry,create file is not success!,13,10,$ mess14 db No Records!,13,10,$ mess15 db sorry,the input is not found!,13,10,$ mess16 db Do you want to delete this messae(y/n)?,13,10,$ mess17 db ple

12、ase choose which one do you want to delete(1,2.):,$ mess18 db Delete success!,13,10,$ mess19 db sorry,the id is same ,please input again!,13,10,$ mess20 db please press to paste next page,13,10,$ mess21 db Very good,the sort is sucessful!,13,10,$idpar label bytemaxilen db 10actilen db ?id db 10 dup(

13、?) ;學(xué)號namepar label byte maxnlen db 10 actnlen db ? _name db 10 dup(?) ;姓名 oldpar label byte maxolen db 3 actolen db ? old db 3 dup(?) ;年齡sexpar label byte maxslen db 5 actslen db ? sex db 5 dup(?) ;性別 addresspar label byte maxalen db 15 actalen db ? ad db 15 dup(?) ;地址 phonepar label byte maxplen d

14、b 15 actplen db ? phone db 15 dup(?) ;電話號碼displ macro x ;顯示的宏 lea dx,x mov ah,09 int 21h endm stu db 50 dup(58 dup ( ),13,10) ;內(nèi)存空間 temp db 60 dup ( ),$ ;臨時(shí)存儲(chǔ)空間 crlf db 13,10,$ ;換行回車 menu db * welcom *,13,10 db * iinput *,13,10 db * ffind *,13,10 db * ddelete *,13,10 db * osort *,13,10 db * llist *,

15、13,10 db * qquit *,13,10 db *,13,10 db please input the choice:,$ stu1 dw ? ;作為存放末尾的指針 address db f:person.txt,0 ;路徑 count1 db 0 ;臨時(shí)統(tǒng)計(jì)輸入的個(gè)數(shù) count db 0;統(tǒng)計(jì)輸入的個(gè)數(shù) count2 db 0;檢查學(xué)號時(shí)候用的 fcode dw ? ;文件代號 endaddr dw ?;排序時(shí)用到,及存儲(chǔ)末尾指針 end1 db ; count3 db 0;顯示的時(shí)候用,分頁 del dw 20 dup(?) swapped db 0 ;交換標(biāo)志位 data en

16、ds;代碼段code segment assume cs:code,ds:data,es:data main proc far mov ax,data mov ds,ax mov es,ax start: mov ax,0600h call scren lea di,stu call open cld mov stu1,dimenu1: displ menu ;顯示菜單 mov ah,01 int 21h mov bl,al displ crlf mov al,bl and al,5fh ;把輸入的選擇都轉(zhuǎn)化為大寫 insert: cmp al,I jnz list call input jm

17、p menu1list: cmp al,L jnz dele call display displ crlf jmp menu1dele: cmp al,D jnz find call delet displ crlf jmp menu1find: cmp al,F jnz sort call search displ crlf jmp menu1 sort: cmp al,O jnz quit call namesort displ crlf displ mess21 jmp menu1quit: cmp al,Q jz overerror: displ mess7 jmp menu1ove

18、r: call close displ mess11 mov ah,4ch int 21h ret main endp ;插入模塊 input proc near mov di,stu1inputloop: cldagain: mov bp,0 displ mess1 call inputid ;輸入學(xué)號 cmp actilen,0 jz A10 cmp count1,50 je A10 call check ;檢查學(xué)號是否重復(fù) cmp bp,0 jnz again call storid ;保存到stu displ mess2 call inputname ;輸入名字 displ mess3

19、 call inputold ;輸入年齡 displ mess4 call inputsex ;輸入性別 displ mess5 call inputaddress ;輸入地址 displ mess6 call inputphone ;輸入電話 add di,2 jmp inputloop A10: mov ah,count1 ;記錄數(shù) mov count,ah mov stu1,di retinput endp;輸入學(xué)號模塊inputid proc near mov ah,0ah lea dx,idpar int 21h displ crlf mov bh,0 mov bl,actilen

20、mov cx,10 sub cx,bxloopn: mov idbx,20h inc bx loop loopn retinputid endp;相同學(xué)號檢查段check proc near mov bp,0 mov ah,count1 mov count2,ah mov si,stu1 sub si,60 mov endaddr,si;指向最后一條記錄的學(xué)號 lea si,stu mov bx,sinase1: lea di,id;存放學(xué)號的偏移地址 mov cx,5 repe cmpsw jcxz naseex jmp nase2naseex: displ mess19 mov bp,1

21、jmp mm1nase2: add bx,60 mov si,bx dec count2 jnz nase1mm1: retcheck endp;保存學(xué)號模塊storid proc near mov di,stu1 inc count1 cld lea si,id mov cx,5 rep movsw retstorid endp;輸入名字inputname proc near mov ah,0ah lea dx,namepar int 21h displ crlf mov bh,0 mov bl,actnlen mov cx,10 sub cx,bxin20: mov _namebx,20h

22、 ;剩余的充填空格 inc bx loop in20 cld lea si,_name mov cx,5 rep movsw retinputname endp;輸入年齡inputold proc near mov ah,0ah lea dx,oldpar int 21h displ crlf mov bh,0 mov bl,actolen mov cx,3 mov cx,bxlo20: mov oldbx,20h inc bx loop lo20 cld lea si,old mov cx,3 rep movsb ret inputold endp;輸入性別inputsex proc nea

23、r mov ah,0ah lea dx,sexpar int 21h displ crlf mov bh,0 mov bl,actslen mov cx,5 sub cx,bx is20: mov sexbx,20h inc bx loop is20 cld lea si,sex mov cx,5 rep movsb retinputsex endp;輸入地址inputaddress proc near mov ah,0ah lea dx,addresspar int 21h displ crlf mov bh,0 mov bl,actalen mov cx,15 sub cx,bxia20:

24、 mov adbx,20h inc bx loop ia20 cld lea si,ad mov cx,15 rep movsb retinputaddress endp;輸入電話inputphone proc near mov ah,0ah lea dx,phonepar int 21h displ crlf mov bh,0 mov bl,actplen mov cx,15 sub cx,bx ip20: mov phonebx,20h inc bx loop ip20 cld lea si,phone mov cx,15 rep movsb retinputphone endp;time

25、時(shí)間time proc near ; push ax ; ;push bx ; push cx ; push dx push dsmov ax,0push ax mov ax,data mov ds,axAGAIN1:mov ah,2ch ;讀取系統(tǒng)時(shí)間 CH:CL-時(shí):分 DH:DL-秒:百分秒int 21hMOV BX ,OFFSET HHMOV AL,CHCALL C16_10 ;轉(zhuǎn)換AL中16進(jìn)制為10進(jìn)制,并填入相應(yīng)位置MOV BX ,OFFSET MMMOV AL,CL ;分CALL C16_10MOV BX ,OFFSET SS1MOV AL,DH ;秒CALL C16_10MO

26、V AH,2 ;光標(biāo)定位MOV DH,0 ;首行MOV DL,70 ;70列 MOV BH,0INT 10HMOV CX,8MOV SI,OFFSET HHNN1:MOV AH,0EH ;電傳方式寫字符(一次1個(gè))MOV AL,SIMOV BL,0INT 10HINC SILOOP NN1MOV AH,1INT 16H;JNZ DOWN ;按任一鍵結(jié)束JMP AGAIN1;DOWN:;pop ds;pop dx;pop cx;pop bx;pop ax;RETrettime endp;進(jìn)制轉(zhuǎn)換C16_10 PROC NEAR PUSH CX ;將AL中的16進(jìn)制轉(zhuǎn)為10進(jìn)制 MOV AH,0

27、MOV CX,10D DIV CL ADD AX,3030H MOV BX,AL INC BX MOV BX,AH POP CX RETC16_10 ENDP;關(guān)閉文件close proc near mov ah,count1 mov count,ah cmp count,0 jbe exit10 mov ah,3dh mov al,2 lea dx,address int 21h jnc y2 mov ah,3ch mov cx,00 lea dx,address int 21h jc exit10 y2: mov fcode,ax mov bx,fcode lea si,stuy1: le

28、a di,temp mov cx,30 rep movsw lea dx,temp mov cx,60 mov ah,40h int 21h sub count,1 jnz y1 lea dx,end1 mov cx,2 mov ah,40h int 21h mov bx,fcode mov ah,3eh int 21hexit10: retclose endp;打開文件open proc near lea dx,address mov ah,3dh mov al,02 int 21h jc p9 ;不存在則創(chuàng)建文件 mov fcode,ax ;保存文件代號 p1: mov ah,3fh mo

29、v bx,fcode mov cx,60 ;讀取文件的記錄數(shù)(一條記錄) lea dx,temp int 21h jc p9 mov bl,temp cmp bl, jz p6 ;讀取結(jié)束 ; lea si,temp mov cx,30 rep movsw inc count1 jmp p1 p9: displ mess13 p6: mov bx,fcode mov ah,3eh int 21h retopen endp ;刪除模塊delet proc near mov si,stu1 mov endaddr,si call search cmp bp,1 jae p3 retp3: cmp

30、bp,3 jae p4 mov di,delbp jmp l1p4: displ mess17 call inputnum cmp bx,bp jbe p5 displ crlf displ mess7 jmp p4p5: mov di,delbxl1: displ crlf displ mess16 mov ah,01h int 21h cmp al,y jz d1 cmp al,Y jz d1 cmp al,n jz exit7 cmp al,N jz exit7 displ mess7 jmp l1d1: mov si,di add si,60d2: mov cx,30 rep movs

31、w cmp si,endaddr jnbe p01 jmp d2p01: sub stu1,60 sub count1,1 displ crlf displ mess18 displ crlfexit7: ret delet endp;查找模塊search proc near mov ah,count1 mov count,ah mov bp,0 cld displ mess10 call inputname1 ;輸入要查找的人名 call namesearch cmp bp,0 jbe s2 jmp exit6s2: displ mess15exit6: ret search endp;計(jì)算

32、要?jiǎng)h除的是哪一個(gè)inputnum proc near mov bx,0 it1: mov ah,1 int 21h mov dl,al sub al,30h jl exit1 ;輸入為零 cmp al,9D jg exit1 cbw xchg ax,bx mov cx,10d mul cx xchg ax,bx add bx,ax jmp it1exit1: mov ax,bx mov bl,2 mul bl mov bx,ax retinputnum endp;查找姓名的函數(shù)模塊輸入inputname1 proc near mov ah,0ah lea dx,namepar int 21h

33、displ crlf mov bh,0 mov bl,actnlen mov cx,10 sub cx,bxin21: mov _namebx,20h inc bx loop in21 retinputname1 endp;姓名搜索namesearch proc near lea si,stu add si,10 ;指向記錄第一個(gè)人的姓名 mov bx,si nase10: lea di,_name ;存放待查人的姓名地址 mov cx,5 repe cmpsw jcxz naseexit jmp nase20naseexit: mov si,bx sub si,10 add bp,2 mov

34、 delbp,si lea di,temp mov cx,30 rep movsw displ tempnase20: add bx,60 mov si,bx dec count jnz nase10 retnamesearch endp;排序模塊namesort proc near cmp count1,1 jbe exit5 mov di,stu1 sub di,110 ;調(diào)整指針 mov endaddr,di ;調(diào)整指針指向倒數(shù)第二個(gè)名字NS10: mov swapped,0 lea si,stu add si,10NS20: mov cx,10 mov di,si add di,60 ;下一個(gè)被比較的名字 mov ax,di mov bx,si repe cmpsb jbe NS30 call NPXCHG ;小于等于就不用交換 NS30: mov si,ax cmp si,endaddr JBE NS20 cmp swapped,0 jnz NS10exit5: ret namesort endp;交換信息NPXCHG proc near mov si,bx sub si,10 mov cx,30 le

溫馨提示

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

最新文檔

評論

0/150

提交評論