《組合語言程式設計》
綜合程式設計實驗報告
題目: 學生成績管理系統
1、專案簡介
此學生成績管理系統實現了對學生成績的基本管理功能,可以完成學生的顯示,分數段人數統計,成績排名以及插入查詢等基本功能,並且成功實現了將學生資訊寫入檔案以及從檔案中讀取的功能。該專案運用了多個主程式的分支以及多個子程式,還有巨集的定義和使用,基本涵蓋了本學期所學知識,還應用了很多課外拓展的知識。此專案是我們小組三人共同努力的結晶。
2、小組成員具體分工
閆立新完成部分:主要完成程式的顯示所有學生,檔案的寫入、讀出和**段定義部分。
王偉光完成部分:主要完成程式的所有學生排名,學生的查詢、新增和**段定義部分。
宋景超完成部分:主要完成程式的分數段統計,螢幕清屏、子程式和**段定義部分。
3、需求分析與設計
學生成績管理系統,最基本的功能是實現最學生的顯示和以及成績的排名,和分數段的統計,以便分析教學效果。我們的系統可以說完全達到了這個要求。
在這個系統的第乙個功能就實現了所有學生的顯示和他們對應的成績。此分支採用了記憶體儲存單元中讀取資料的方法,通過位址的不斷增加來實現對學生姓名和成績儲存和輸出。
統計學生分數段人數部分採用了多個跳轉指令來實現,符合條件則使相應的分數段人數加1,不符合該分數段人數則跳轉到相應的分數段並使該分數段人數加1。
對學生的排名,我們則選擇了經典的氣泡排序來實現。運用三條迴圈指令,lopi,lopj,lopk。
對學生的新增,我們設定了乙個全域性變數n來記錄多少個資料,增加幾個資料n就加幾,然後輸入姓名到新的記憶體中,輸入成績時因為成績初始化時是以asicc儲存的,而輸入的是字元,所以使用0fh現將其變成真正的數字然後通過*10等運算將其轉化為asicc即可
對學生的查詢,我們通過使用字串比較來進行查詢,使用bp來進行位址的改變,同時使用n5進行判斷是否已經完成了查詢已經是否找到了資料,找到資料則輸出,找不到則輸出錯誤
檔案的寫入部分首先用dos指令3ch來建立乙個檔案,然後用dos指令40h寫入內容,在bx中裝入檔案代號,要寫入的位元組數放在cx中,輸入緩衝區的位址放在dx中。當寫完成後,呼叫3eh來關閉檔案。
檔案的讀出部分呼叫dos指令3dh來進行開啟操作,將檔案位址裝入dx中,並在al中設定訪問**。
注:檔案這部分知識都是在課本第11章中自學得來。其餘巨集,子程式等都是根據自己所有的來完成的
流程圖如下:
4、**及分析
stack segment stack
db 250 dup (0)
stack ends
data segment
filename db 'hb.txt',0
buf db ?
handle dw ?
error1 db 'creating file error!',0dh,0ah,'$'
error2 db 'writing file error!',0dh,0ah,'$'
fname db 40,41 dup(?)
fcontents db 256 dup('$')
ask1 db 'input file name:$'
err db 0ah,0dh,'error$'
choose db0dh,0ah ;主選單列表
dbwelcome0dh,0ah
db1.show all of the score0dh,0ah;輸出所有學生的成績
db2.show the number of every rank0dh,0ah;顯示每個成績段的學生人數
db3.show the sort result0dh,0ah;學生成績的排序
db4.insert one people0dh,0ah;新增學生成績
db5.find the people0dh,0ah;查詢您想要查詢的學生
db6.clear the screen0dh,0ah;清屏
name and score to file0dh,0ah;開啟乙個檔案向其輸入想要新增的資訊
db8.output the record in file0dh,0ah;讀取新增的資訊
db9.exit0dh,0ah;退出
db0dh,0ah
please db'please choose from 1 to 90dh,'$' ;選擇1-7
wrong db'the data you input is wrong!$'
put db'please intput name and score',0dh,'$'
sya dbplease come again0dh
mes1 db 'the number in 0---59 is:$'; 顯示e等級的人數的介面,對應v1
mes2 db 'the number in 60--69 is:$';
mes3 db 'the number in 70--79 is:$';
mes4 db 'the number in 80--89 is:$';
mes5 db 'the number in 90-100 is:$';
mes6 db
mes7 db 'namescore:',0ah,0dh,'$'
mes8 db 'name:',0ah,0dh,'$';
mes9 db 'score:',0ah,0dh,'$'; 提示輸入分數
mes10 db 'input successfully!',0ah,0dh,'$'; 提示輸入分數
output db 'please input the people',13,10,'$'
output1 db 'plese one name',13,10,'$';
output2 db 'no the people',13,10,'$';
b1 db 'tips after clr:$'
b2 db 0ah,0dh,'1.show all of the score$'
b3 db 0ah,0dh,'2.show the number of every rank$'
b4 db 0ah,0dh,'3.show the sort result','$'
b5 db 0ah,0dh,'4.output the record in file$'
b6 db 0ah,0dh,' name and score to file$'
b7 db 0ah,0dh,'6.clear the screen$'
b8 db 0ah,0dh,'7.exit$' ;清屏後提示
v1 db ? ;0---59段人數計數器
v2 db ? ;
v3 db ? ;
v4 db ? ;
v5 db ? ;
nam1 db 'mr. yan$'; 學生姓名已存入;;;8個位元組
nam2 db 'mr.wang$'
nam3 db 'mr. su$'
nam4 db 'mr. cao$'
nam5 db 'mr.zang$'
nam6 db 'mr.yang$'
nam7 db 'mr. li$'
nam8 db 'mr. sun$'
nam9 db 'mr. wu$'
nam10 db 'mr.zhao$'
name123 db 3 dup( 8 dup('$'));;;因為姓名占用八個位元組
name234 db 8 dup('$')
nn dw ?
crlf db 0dh,0ah
n dw ?;
n2 dw ?;
n3 dw ?;
n4 dw ?
n5 dw ?
score dw 11,22,33,55,66,44,77,88,99,90
n1 =($-score)/2;
scorem dw ?
dw '$'
cz dw ?
score1 db 15 dup(0)
score123 dw ?
c12 dw ?
b db ?顯示
學生成績管理系統程式設計
要求 設計乙個學生成績管理資訊系統,編寫系統設計報告,內容包括 1 系統概述 系統目標 系統主要功能 輸入 輸出 編輯 列印 查詢 2 系統設計規範 系統名稱 檔案命名規範 資料庫 表 字段命名規範 3 總體結構設計 系統功能結構圖 子系統及模組功能說明 子系統流程圖 畫功能模組結構圖 計算機網路系...
彙編課程設計學生成績管理系統
這是乙個學生成績管理系統,其中 i 表示插入,l 表示瀏覽,q 表示查詢,e 表示退出,d 表示刪除,m 表示修改,c 表示統計各分數段人數,p 表示列印.本程式實現了 1 單獨執行以上各功能,即在進入主選單以後,點一功能鍵後關閉,再進入主選單 點別的功能鍵。如執行 cjgl 檔案後,在出現的主介面...
學生成績分析報告
2010 2012年課題研究實驗班級與非實驗班級及民族中學成績對比分析報告 首先分析第乙個 2010 2012四個學期實驗班級和非實驗班級的平均分和及格率的變化情況 1 七 1 班為重點班中的實驗班級,平均分依此為 55.9分 73.27分 74.02分 80.64分,每個學期比上乙個學期依次增加1...