版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
華北科技學院課程設計說明書課程名稱:匯編語言班級:計算機B08-1姓名:__徐恒鵬_學號:__200807014103_設計題目:___學生成績管理_設計時間:至_指導教師:_____李冬艷___________評語:_____________________________________________________________________________________________________________________________________________________________________________________________________評閱成績:____評閱教師:_____一、課程設計目的進行程序設計方法和技能的根本訓練,穩(wěn)固在課堂上學到的有關程序設計的根本知識和根本方法,通過實際動手能力的培養(yǎng),進一步熟悉匯編語言的結構和使用方法,到達能獨立閱讀、編制和調試一定規(guī)模的匯編語言程序的水平。二、課程設計要求1.要求編寫并調試通過一個小型軟件,實現對軟件或硬件的操作。2.遵循模塊化、結構化的程序設計方法。3.要求程序必須正確。4.程序簡明易懂,多運用輸入輸出提示,出錯信息及必要的注釋。5.要求程序結構合理,語句使用得當。6.適當追求編程技巧和程序運行效率。三、課程設計題目:學生成績管理四、課題分析學生成績管理,顧名思義,就是管理學生的成績,站在使用者的立場上來看,最根本需求的便是將學生成績輸入,求和并進行排名,當然還有其它更為人性化的需求,比方順便得到學生的平均成績,統計各科各個分數段的人數等等,甚至為了保存結果,可以將學生的所有成績及排名保存在一個文件里面,以便以后調用。所以經過縝密思慮,確定學生成績管理的一下幾個功能:數據輸入功能。這是必不缺少的功能,學號的輸入,成績的輸入都離不了這個功能,在輸入成績時,特地加了一個判斷功能,在輸入不合理的成績時,程序將提示出錯,并要求重新輸入。在輸入學生學號的時候,程序首先會判斷此學生的成績是否存在,如果存在,那么程序提示需重新輸入。修改功能??紤]到會存在在輸入成績時,容易輸入錯誤,或者發(fā)生個別學生的試卷被誤判需修改成績等情況,所以加了此功能,在發(fā)生以上情況時可以調用此功能,修改指定學生的成績。刪除學生信息的功能。如果輸入的學生信息根本不存在,或者發(fā)生其它情況需刪除一個無意義的學生信息時,可以調用此功能。此功能將實現將指定學號學生的信息刪除。信息查找功能。當需要查詢某個學生的成績或者檢查輸入是否有誤時,可以調用此功能,此功能實現將指定學號學生的成績顯示出來。實際上在調用此功能的同時,程序會首先求的總成績,平均成績,然后產生排名結果,最后將數據信息顯示。顯示排名信息功能。此功能會將學生成績自動相加,得到每位學生的總成績及平均成績,然后進行排名,得到每個學生的名詞,最后按照輸入順序將所有學生的學號,語文成績,英語成績,數學成績,平均成績,總成績,名次依次輸出。課程成績分析功能。此功能實現在屏幕上顯示三門課程的各個分數段的學生人數,以表格的形式在屏幕上顯示?!卜謹刀螢椋?gt;=90;80~89;70~79;60~69;<=59〕文件寫入及退出功能。此功能實現將學生的信息保存在一個文件里。此程序默認將文件放在C盤下,名稱為:score,屬性為txt格式的文本文檔。寫入文件完畢后,關閉文件,并退出程序。五、流程圖:主程序流程圖開始開始創(chuàng)立文件創(chuàng)立文件顯示主菜單顯示主菜單輸入功能號Ni?輸入功能號Ni?Nm?Nm?N提示輸入有誤
d?N提示輸入有誤
d?Yf?Yf?NYNYNs?Ns?Yc?Yc?e?NYe?NYYYYY調用子程序insert調用子程序modify調用子程序de調用子程序find調用子程序showw調用子程序insert調用子程序modify調用子程序de調用子程序find調用子程序showw調用子程序showYY結束結束返回主菜單大于120NY調用input子程序返回主菜單大于120NY調用input子程序輸入學號學號是否存在提示重新輸入學號輸入成績YN調用input子程序調用宏shuru調用input子程序調用宏shuru學號是否存在?學號是否存在?輸入學號輸入學號YNYN修改成績學號是否存在提示輸入有誤重新輸入修改成績學號是否存在提示輸入有誤重新輸入NN大于120Y大于120Y提示重新輸入學號提示重新輸入學號N輸入成績N輸入成績返回主菜單返回主菜單(a)子程序insert流程圖〔b〕子程序modify流程圖調用宏shuru,輸入學號調用宏shuru,輸入學號調用宏shuru,輸入學號調用宏shuru,輸入學號NN學號是否存在?學號是否存在?NN學號是否存在?學號是否存在?YYYY顯示查詢結果刪除記錄顯示查詢結果刪除記錄返回主菜單返回主菜單返回主菜單返回主菜單〔c〕子程序del流程圖〔d〕子程序find流程圖將計數數組清零將名次清零將計數數組清零將名次清零調用rank子程序調用rank子程序調用countt子程序調用countt子程序調用相關宏調用shuchu子程序調用相關宏調用shuchu子程序返回主菜單返回主菜單返回主菜單返回主菜單〔e〕子程序show流程圖〔f〕子程序showw流程圖設置讀寫指針設置讀寫指針寫入文件寫入文件關閉文件關閉文件結束結束〔g〕子程序exit流程圖六、程序源代碼zhuanssmacroj,t;將三位數的數據轉換成為三個對應的字符,并將其存入緩沖區(qū)zs中pushbxmovsi,tmovax,jmovbl,100divbladdal,30hmovzs[si],aladdsi,1moval,ahcbwmovbl,10divbladdal,30haddah,30hmovzs[si],aladdsi,1movzs[si],ahaddsi,1popbxendmclearMACRO;清屏MOVAH,2MOVDH,0MOVDL,0 INT10HMOVAH,6MOVAL,0MOVBH,7MOVCH,0MOVCL,0MOVDH,24MOVDL,79 INT10HENDMkongmacro;回車換行movah,2movdl,0ahint21hmovah,2movdl,0dhint21hendmoutputmacrop;字符串輸出movdx,offsetpmovah,9 int21hendmshurumacro;二位數數據輸入movah,01 int21hsubal,30h cbwmovbl,10mulblmovdl,almovah,01h int21hsubal,30hadddl,alendmzhuanemacroe,b;將二位數轉換成對應兩個字符,并將其存入緩沖區(qū)zspushbxmovsi,bmoval,ecbwmovbl,10divbladdah,30haddal,30hmovzs[si],aladdsi,1movzs[si],ahaddsi,1popbxendmzhuansmacrof,s;將三位數成績轉換成為對應的三個字符,并存入緩沖區(qū)zs中pushbxmovsi,smoval,fcbwmovbl,100divbladdal,30hmovzs[si],aladdsi,1moval,ahcbwmovbl,10divbladdal,30haddah,30hmovzs[si],aladdsi,1movzs[si],ahaddsi,1popbxendmshuzimacror;二位數據輸出moval,rcbwmovbl,10divblmovbl,ahmovdl,aladddl,30hmovah,2 int21hmovdl,bladddl,30hmovah,2 int21hendmshuruumacro;三位數數據輸入shurumoval,dlmovdl,10muldlmovdx,axmovah,1int21hsubal,30hcbwadddx,axendmshuziimacrou;三位數數據輸出movax,umovbl,100divblmovbl,ahmovdl,aladddl,30hmovah,2int21hshuziblendmDATASSEGMENT mdw0;移動文件指針時,選擇絕對移動方式,那么m代表指針偏移量 zsdb18dup(?);緩沖區(qū)用來存放單個學生信息的字符 pathnamdb'C:\score.txt',00h;建立目錄項 handledw?;文件句柄 bufdb3dup(?);輸入緩沖區(qū) zcdw100dup(?);存放總成績的數組 pjdb100dup(?);存放平均成績數組 ndb0;存放輸入的學生信息的個數 gs0db5dup(0);記錄所查詢科目分數段的 gs1db5dup(0) gs2db5dup(0)mcdb100dup(1);存放學生的名次的數組chidb100dup(?);存放學生成績的數組engdb100dup(?)matdb100dup(?)xhdb100dup(?);存放學生學好的數組cour0db'chinese','$'cour1db'english','$'cour2db'maths','$'tsdb13,10,'Youaresuccessful,pressanykeytocontinue!',13,10,'$'ts1db13,10,'Youarewrong,Tryagain!',13,10,'$'ts3db13,10,'Thescoreyouinputisbiggerthan127,inputagian!',13,10,'$'ts4db13,10,'Theschoolnumberyouinputisexist,pleasetryagain!',13,10,'$'caidb'***************Insertadata*******************<i>',13,10,'$'cai1db'***************Modifyadata*******************<m>',13,10,'$'cai2db'***************Deleteadata*******************<d>',13,10,'$'cai3db'***************Findadata*******************<f>',13,10,'$'cai4db'***************Showtherank*******************<s>',13,10,'$'cai6db'***************Showthecount******************<c>',13,10,'$'cai5db'***************ExitwiththekeyboardofESC***<ESC>',13,10,'$'ts2db'PleasechoosetheFunction',13,10,'$'messdb13,10,'Thedatayouinputisnotexist,inputagain',13,10,'$'mess1db13,10,'Pleaseinputtheschoolnumber',13,10,'$'mess2db13,10,'Pleaseinputthreescores(0-120)',13,10,'$'mess4db'chineseenglishmaths',13,10,'$'mess3db'AothorbyXuHengpeng',13,10,'$'strr1DB'*******************scoreandrank===================',13,10,'$' strr2DB13,10,'numberchiengmathaveragesumrank',13,10,'$' strr3db13,10,'course>=90>=80>=70>=60<60',13,10,'$' bgdb'','$'DATASENDSSTACKSSEGMENT;此處輸入堆棧段代碼STACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AXmoves,axmovah,3ch;請求創(chuàng)立文件movcx,00;默認屬性leadx,pathnam;裝入pathnam的地址int21hmovhandle,ax;保存文件句柄main:;主菜單顯示outputcaioutputcai1outputcai2outputcai3outputcai4outputcai6outputcai5outputts2movah,1;輸入字符,選擇功能鍵int21hcmpal,'i'jnen1callinsert;調用insert子程序,輸入學生學號,成績jmprkn1:cmpal,'m'jnen2callmodify;調用modify子程序,修改指定學生的成績jmprkn2:cmpal,'d';調用de子程序,刪除制定學生的成績jnen3calldejmprkn3:cmpal,'f';調用find子程序,顯示指定學生的成績及名次jnen4callfindjmprkn4:cmpal,'s';調用show子程序,顯示所有學生的各科成績,平均成績,總成績及名次jnen5callshowjmprkn5:cmpal,'c';調用showw子程序,顯示各科各分數段的學生數量jnen6callshowwjmprkn6:cmpal,1bh;調用exit子程序,將數據保存到score.txt文件中,并退出程序jnen7callexitn7:clearoutputts1jmpmainrk:outputtsmovah,1int21hclearjmpmain;****************************************exitprocnear;退出movcl,n;寫入文件的次數cbwmovbx,0movdi,0zh:pushdi;保存di,cx,bx中的內容pushbxpushcxmovsi,0zhuanexh[bx],si;調用宏zhuane將兩位數的學號轉換為對應的二個字符,并存放到zs緩沖區(qū)中zhuanschi[bx],si;調用宏zhuans將三位數的語文成績轉換為對應的三個字符,并存放到zs緩沖區(qū)中zhuanseng[bx],si;調用宏zhuans將三位數的英語成績轉換為對應的三個字符,并存放到zs緩沖區(qū)中zhuansmat[bx],si;調用宏zhuans將三位數的數學成績轉換為對應的三個字符,并存放到zs緩沖區(qū)中zhuanspj[bx],si;調用宏zhuans將三位數的平均成績轉換為對應的三個字符,并存放到zs緩沖區(qū)中zhuansszc[di],si;調用宏zhuanss將三位數的總成績成績轉換為對應的三個字符,并存放到zs緩沖區(qū)中zhuanemc[bx],si;調用宏zhuane,將兩位數的名詞,轉換為對應的二個字符,并存放到zs緩沖區(qū)中movah,42h;移動讀寫指針moval,00;移動方式為絕對移動方式movbx,handlemovcx,00movdx,mint21haddm,20movah,40h;調用40h功能,請求寫文件movbx,handle;獲取文件句柄movcx,19;寫入長度為19個字節(jié)leadx,zs;將緩沖區(qū)zs中的內容寫入文件score.txtint21hpopcxpopbxpopdiadddi,2addbx,1subcx,1cmpcx,0;判斷寫入是否完畢jgzhmovbx,handle;寫入完畢,關閉文件movah,3ehint21hclearoutputmess3MOVAH,4CH;退出程序INT21Hretexitendp;****************************************sumprocnear;求學生的總成績movcl,nmovch,0movsi,0movbx,0sss:moval,chi[si];將三科成績相加,將總成績傳給數組zcmovah,0movdl,mat[si]movdh,0addax,dxmovdl,eng[si]movdh,0addax,dxmovzc[bx],axaddbx,2addsi,1loopsssretsumendp;***************************************pingprocnear;求學生的平均成績movcl,ncbwmovsi,0movbx,0p_p:movax,zc[bx];將總成績除以三,獲取的數據傳送給數組pjmovdl,3divdlmovpj[si],aladdsi,1addbx,2loopp_pretpingendp;******************************************modifyprocnear;修改學生學號,成績md1:outputmess1shurumovbl,nmovbh,0moval,dlmovsi,0md:cmpal,xh[si];先查找輸入的學生是否存在jeqq1_1;查到的話,就跳轉到qq1_1輸入修改的值,也就是重新輸入addsi,1cmpsi,bxjbemdoutputmessjmpmd1;不相等繼續(xù)輸入學號qq1_1:movdi,sioutputmess2outputmess4movsi,0movcx,3qq3_1:shuruu;分別輸入語文,英語,數學成績,并將其放在緩沖區(qū)buf中cmpdx,78h;比擬輸入的成績是否大于120,如果大于120的話,那么重新輸入成績jbeqq2_1outputts3jmpqq1_1qq2_1:movbuf[si],dloutputbgaddsi,1loopqq3_1moval,buf[0];將存入buf中的成績,分別賦值給存放對應科目的成績的數組movchi[di],almoval,buf[1]moveng[di],almoval,buf[2]movmat[di],alretmodifyendp;****************************************************counttprocnear;統計各科各個分數段學生的個數movcx,5movsi,0zl:movgs0[si],0addsi,1loopzlmovcl,nmovch,0movsi,0c11:moval,chi[si]cmpal,90jlcc1addgs0[0],1jmpcc8cc1:cmpal,80jlcc2addgs0[1],1jmpcc8cc2:cmpal,70jlcc3addgs0[2],1jmpcc8cc3:cmpal,60jlcc4addgs0[3],1jmpcc8cc4:addgs0[4],1cc8:addsi,1loopc11leasi,gs0leadi,gs1movcx,5cldrepmovsbmovcx,5movsi,0cc9:movgs0[si],0addsi,1loopcc9movcl,nmovch,0movsi,0movcl,nmovch,0movsi,0c111:moval,eng[si]cmpal,90jlcc15addgs0[0],1jmpcc88cc15:cmpal,80jlcc22addgs0[1],1jmpcc88cc22:cmpal,70jlcc33addgs0[2],1jmpcc88cc33:cmpal,60jlcc44addgs0[3],1jmpcc88cc44:addgs0[4],1cc88:addsi,1loopc111leasi,gs0leadi,gs2movcx,5cldrepmovsbmovcx,5movsi,0ct:movgs0[si],0addsi,1loopctmovcl,nmovch,0movsi,0c13:moval,mat[si]cmpal,90jlcc1_2addgs0[0],1jmpcc8_2cc1_2:cmpal,80jlcc2_2addgs0[1],1jmpcc8_2cc2_2:cmpal,70jlcc3_2addgs0[2],1jmpcc8_2cc3_2:cmpal,60jlcc4_2addgs0[3],1jmpcc8_2cc4_2:addgs0[4],1cc8_2:addsi,1loopc13retcounttendp;******************************************findprocnear;查找學生成績callsumcallpingbj1:outputmess1shurumovbl,nmovbh,0moval,dlmovsi,0bj:cmpal,xh[si];將輸入的學號與輸入的學號相比,jei;存在的話,將此學生的成績輸出addsi,1cmpsi,bxjbebjoutputmessjmpbj1i:outputstrr2shuzixh[si]outputbgmoval,chi[si]cbwshuziiaxoutputbgmoval,eng[si]cbwshuziiaxoutputbgmoval,mat[si]cbwshuziiaxoutputbg;輸出空格的字符串,用于與標題欄對齊moval,pj[si]cbwshuziiaxoutputbgmovax,simovbl,2mulblmovbx,axshuziizc[bx]outputbgshuzimc[si]retfindendp;***********************************************insertprocnear;插入學生,學號及成績callinputaddn,1retinsertendp;***********************************************showprocnear;顯示結果排名callsumcallpingcallrankcallshuchuretshowendp;**********************************************showwprocnear;顯示各個學科各分數段的人數callcounttoutputstrr3outputcour0outputbgshuzigs1[0]outputbgshuzigs1[1]outputbgshuzigs1[2]outputbgshuzigs1[3]outputbgshuzigs1[4]kongoutputcour1outputbgshuzigs2[0]outputbgshuzigs2[1]outputbgshuzigs2[2]outputbgshuzigs2[3]outputbgshuzigs2[4]kongoutputcour2outputbgshuzigs0[0]outputbgshuzigs0[1]outputbgshuzigs0[2]outputbgshuzigs0[3]outputbgshuzigs0[4]retshowwendp;***********************************************deprocnear;刪除某個學生的記錄sc1:outputmess1shuru;調用宏shuru,接受輸入的學號movbl,nmovbh,0moval,dlmovsi,0sc:cmpal,xh[si];查詢輸入學號的學生信息是否存在,不存在的話,重新輸入學號jesc2addsi,1cmpsi,bxjbescoutputmessjmpsc1sc2:subbx,sicmpbx,0jesc3movcx,bxsc4:movdl,chi[si+1]movchi[si],dlmovdl,eng[si+1]moveng[si],dlmovdl,mat[si+1]movmat[si],dlmovdl,xh[si+1]movxh[si],dladdsi,1loopsc4subn,1sc3:retdeendp;*********************************************inputprocnear;輸入學生學號,成績e6:outputmess1shurumovbl,nmovbh,0movxh[bx],dlcmpbx,0;判斷是不是第一次輸入,如果是,那么跳過比擬程序jeqq1;繼續(xù)輸入成績movcl,n;如果不是第一次輸入那么要將輸入的學號與以前輸入的比擬cbwmovsi,0moval,xh[bx]e7:cmpal,xh[si]jee5addsi,1loope7jmpqq1e5:outputts4jmpe6qq1:outputmess2outputmess4movsi,0movcx,3qq3:shuruucmpdx,78h;比擬輸入的成績是否大于120,如果大于120的話,那么重新輸入成績jbeqq2outputts3jmpqq1qq2:movbuf[si],dloutputbgaddsi,1loopqq3movbl,ncbwmoval,buf[0]movchi[bx],almoval,buf[1]moveng[bx],almoval,buf[2]movmat[bx],alretinputendp;**********************************************rankprocnear;排名movcl,nmovch,0movsi,0rrc:movmc[si],1addsi,1looprrcmoval,nmovbl,2mulblmovcl,nmovch,0movsi,0movbx,0movdi,0rrb:movdx,zc[di]rra:cmpdx,zc[bx]jgecontinueaddmc[si],1continue:
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 設備備品、備件、配件出入庫領用審批制度
- 工程質量、安全生產、文明施工、工程進度技術組織措施
- 人工挖孔抗滑樁施工安全危險源分析及預防措施
- 影片廣告植入合同
- 施工現場成品保護措施
- 房室建筑承包合同
- 汽車制造防爆電氣安裝方案
- 企業(yè)園區(qū)綠化提升實施方案
- 2025年班級管理工作計劃范文(2篇)
- 2025年康復科工作制度模版(2篇)
- 2024-2025學年冀人版五年級第一學期期末科學試題(含答案)
- 部編版五年級語文上冊快樂讀書吧測試題及答案
- 2023-2024年6月廣東省普通高中學業(yè)水平考試化學試題及答案
- 黑龍江省哈爾濱市香坊區(qū)2023-2024學年八年級上學期期末數學試題
- 《S7-1500PLC應用技術》 課件 第1、2章 PLC概述、S7-1500 PLC硬件系統
- 促銷費用管理辦法15
- 《三國演義》整本書閱讀任務單
- GB 13296-2013 鍋爐、熱交換器用不銹鋼無縫鋼管(高清版)
- 企業(yè)信用管理制度
- 中醫(yī)院中藥的飲片處方用名與調劑給付規(guī)定
- 鉆孔灌注樁及后注漿施工方案施工方案
評論
0/150
提交評論