汇编语言版学生管理系统演示教学.docx
《汇编语言版学生管理系统演示教学.docx》由会员分享,可在线阅读,更多相关《汇编语言版学生管理系统演示教学.docx(39页珍藏版)》请在冰豆网上搜索。
汇编语言版学生管理系统演示教学
汇编语言版学生管理系统
汇编语言课程实习报告
实习题目学生成绩管理系统
学生姓名
班级(学号)
院系
指导老师
提交时间
成绩
题目一:
学生成绩管理系统
基本功能:
1、输入学生各门功课成绩;(假设3门功课,每门功课有唯一编号)
2、对学生成绩记录进行查询检索(按学号、姓名)
3、能修改指定学号的学生成绩;
4、对学生成绩排序(按总成绩降序排列);
5、、统计指定学号的学生的平均成绩在屏幕上显示;
6、统计指定编号课程的平均成绩在屏幕上显示;
7、每门课程成绩分析:
在屏幕上显示3门课程的各个分数段的学生人数;
(分数段为:
>=90;80~89;70~79;60~69;<=59)
8、退出系统功能
二、总体设计
功能结构图设计
依据程序的功能需求,描述该系统功能的结构图如下:
学生成绩管理系统
Insert
插入学生成绩
Analysiss
分数段人数
Printit
显示学生评价成绩
Query
查询学生
成绩
modify
修改学生
成绩
Rank
学生成绩
排名
Academic
学科平均成绩
Esc
退出学生
成绩管理
I
S
P
Q
M
R
G
E
图1系统功能结构图
studentstruc
namesdb18dup('$')
mathsdw?
englishdw?
chinesedw?
totaldw0
avgdw0
studentends
DATASSEGMENT
stu_arraystudent10dup(<>)
构建了student结构体,在存储方面使得结构变得简单。
insertprocnear
incnum
scur10
altertmes7
scur1
altertmes4
subbh,bh
movbl,num
bindecbx
crlf
movah,09
leadx,mes
int21h
subah,ah
moval,28d
mulnum
movsi,ax
scur2
movah,0ah
leadx,stu_array[si].names
subbh,bh
movbl,stu_array[si+1].names
movstu_array[si+bx+2].names,'$'
int21h
scur3
calldecibin
movstu_array[si].maths,bx
addstu_array[si].total,bx
scur4
calldecibin
movstu_array[si].english,bx
addstu_array[si].total,bx
scur5
calldecibin
movstu_array[si].chinese,bx
addstu_array[si].total,bx
movbl,3
movax,stu_array[si].total
divbl
subah,ah
movstu_array[si].avg,ax
ret
insertendp
用num做全局变量为学生的编号,在学生查询方面比较便利。
程序主界面:
Insert子程序界面:
Modify子程序界面:
Query子程序界面:
学生平均成绩分析界面:
学科成绩界面:
分数段界面:
依据程序的功能的划分,各功能定义如下:
(1)插入学生成绩
功能名:
insert
功能描述:
通过此功能可以插入一名学生的成绩信息,学号、姓名、语文成绩、数学成绩、英语成绩。
(2)学生平均成绩
功能名:
Printit
功能描述:
通过此功能指定学号的学生平均成绩
(3)学科平均成绩
功能名:
Academic
功能描述:
通过此功能可以显示指定编号的学科平均成绩。
(4)查询学生成绩
功能名:
query
功能描述:
通过此功能可以查询一名学生的成绩信息,学号、姓名、语文成绩、数学成绩、英语成绩。
(5)修改学生成绩
功能名:
modify
功能描述:
通过此功能可以修改一名学生的成绩信息,学号、姓名、语文成绩、数学成绩、英语成绩。
(6)学生成绩排名
功能名:
rank
功能描述:
通过此功能可以查看学生成绩总分排名。
(7)各科分数段人数
功能名:
Analysiss
功能描述:
通过此功能可以查看每科分数段人数。
(8)退出学生成绩管理系统
功能名:
esc
功能描述:
退出成绩管理系统
主程序流程图
Inputchar
Esc
退出学生
成绩管理
Printit
显示学生评价成绩
Academic
学科平均成绩
Analysiss
分数段人数
Rank
学生成绩
排名
modify
修改学生
成绩
Query
查询学生
成绩
Insert
插入学生成绩
cmpal,’e’
cmpal,’g’
cmpal,’s’
cmpal,’r’
cmpal,’m’
cmpal,’q’
cmpal,’i’
cmpal,’c’
N
Y
N
Y
N
Y
N
Y
N
Y
N
Y
N
Y
N
Y
详细设计
菜单模块
studentstruc
namesdb18dup('$')
mathsdw?
englishdw?
chinesedw?
totaldw0
avgdw0
studentends
DATASSEGMENT
stu_arraystudent10dup(<>)
recnamedb18dup('$')
numdb0
num1dw0
num2dw0
num3dw0
num4dw0
num5dw0
num6dw0
recdw0
mesdb'Name:
',13,10
db'Maths:
',13,10
db'English:
',13,10
db'Chinese:
',13,10,'$'
mes1db'Can`tfindthestudent!
$'
mes2db'-------------------MainMenu------------------',13,10,13,10
db'I.Inserttheinformation',13,10,13,10
db'M.Modifytheinformation',13,10,13,10
db'Q.Querythestudent',13,10,13,10
db'C.Charforquerythestudent',13,10,13,10
db'P.Printitthestudentaveragescores',13,10,13,10
db'S.Studentperformanceanalysiss',13,10,13,10
db'R.Rankofsumgrade',13,10,13,10
db'G.Academicaverage',13,10,13,10
db'E.ESC',13,10,13,10
db'-------StudentGradeManagementSystem--------',13,10,'$'
mes3db'Pleaseinputnumofthestudent:
$'
mes4db'Numofthestudentis:
$'
mes5db'-------Querythestudent-----------$'
mes6db'-------Modifytheinformation------$'
mes7db'-------Inserttheinformation------$'
mes8db'-------Studentaveragescores------',13,10
db'Name:
',13,10
db'Avgscore:
',13,10,'$'
mes9db'-------MathsAnalysiss-------------',13,10
db'>=90:
',13,10
db'80~80:
',13,10
db'70~79:
',13,10
db'60~69:
',13,10
db'<=59:
',13,10,'$'
mes10db'-------EnglishAnalysiss-----------',13,10
db'>=90:
',13,10
db'80~80:
',13,10
db'70~79:
',13,10
db'60~69:
',13,10
db'<=59:
',13,10,'$'
mes11db'-------ChineseAnalysiss-----------',13,10
db'>=90:
',13,10
db'80~80:
',13,10
db'70~79:
',13,10
db'60~69:
',13,10
db'<=59:
',13,10,'$'
mes12db'Thereisnodata!
$'
mes13db'---------M->Avgofmaths------------',13,10,13,10
db'---------N->Avgofenglish----------',13,10,13,10
db'---------C->Avgofchinese----------',13,10
db'Pleaseinputthechar:
$'
mes14db'Maths:
$'
mes15db'English:
$'
mes16db'Chinese:
$'
sumdw30dup('')
输入模块
menu:
callclear_screen
scur11
pushax
pushbx
pushcx
pushdx
pushsi
movah,2
movbh,0
movdh,1
movdl,0
int10h
movah,09
leadx,mes2
int21h
movah,1
int21h
cmpal,'i'
jzii
cmpal,'q'
jzqq
cmpal,'m'
jzmm
cmpal,'p'
jzPP
cmpal,'s'
jzss2
cmpal,'c'
jzcc
cmpal,'r'
jzrr
cmpal,'g'
jzgg
cmpal,'e'
jzee
jmpmenu
gg:
callclear_screen
callAcademic_average
jmpmenu
rr:
callclear_screen
callrank
jmpmenu
ii:
callclear_screen
callinsert
jmpmenu
qq:
callclear_screen
callquery
jmpmenu
mm:
callclear_screen
callmodify
jmpmenu
pp:
callclear_screen
callstudent_p
jmpmenu
ss2:
callclear_screen
callscore_analysis
jmpmenu
cc:
callclear_screen
callquery_char
jmpmenu
;此处输入代码段代码
ee:
MOVAH,4CH
INT21H
主程序代码
START:
MOVAX,DATAS
MOVDS,AX
menu:
callclear_screen
scur11
pushax
pushbx
pushcx
pushdx
pushsi
movah,2
movbh,0
movdh,1
movdl,0
int10h
movah,09
leadx,mes2
int21h
movah,1
int21h
cmpal,'i'
jzii
cmpal,'q'
jzqq
cmpal,'m'
jzmm
cmpal,'p'
jzPP
cmpal,'s'
jzss2
cmpal,'c'
jzcc
cmpal,'r'
jzrr
cmpal,'g'
jzgg
cmpal,'e'
jzee
jmpmenu
gg:
callclear_screen
callAcademic_average
jmpmenu
rr:
callclear_screen
callrank
jmpmenu
ii:
callclear_screen
callinsert
jmpmenu
qq:
callclear_screen
callquery
jmpmenu
mm:
callclear_screen
callmodify
jmpmenu
pp:
callclear_screen
callstudent_p
jmpmenu
ss2:
callclear_screen
callscore_analysis
jmpmenu
cc:
callclear_screen
callquery_char
jmpmenu
;此处输入代码段代码
ee:
MOVAH,4CH
INT21H
;********************
子程序代码
query_charprocnear
cmpnum,0
jzqc_exit
movah,0ah
leadx,recname
int21h
subbh,bh
movbl,recname+1
movrecname[bx+2],'$'
scur1
subah,ah
moval,28d
mulnum
movbx,ax
movah,09
leadx,stu_array[bx].names
adddx,2
int21h
crlf
leadx,recname
adddx,2
movah,09
int21h
leadi,recname
adddi,2
leasi,stu_array[bx].names
addsi,1
subch,ch
movcl,recname+1
cld
repzcmpsb
jzqc_exit1
crlf
subdh,dh
movdl,num
qc_loop:
subah,ah
moval,28d
mulnum
movsi,ax
leadi,stu_array[si].names
adddi,2
leasi,recname
addsi,1
subch,ch
movcl,recname+1
cld
repzcmpsb
jzqc_exit1
decdl
cmpdl,0
jzqc_exit
jmpqc_loop
qc_exit:
scur6
altertmes1
crlf
qc_exit1:
movah,01
movdl,0ah
int21h
ret
query_charendp
;**********************
insertprocnear
incnum
scur10
altertmes7
scur1
altertmes4
subbh,bh
movbl,num
bindecbx
crlf
movah,09
leadx,mes
int21h
subah,ah
moval,28d
mulnum
movsi,ax
scur2
movah,0ah
leadx,stu_array[si].names
subbh,bh
movbl,stu_array[si+1].names
movstu_array[si+bx+2].names,'$'
int21h
scur3
calldecibin
movstu_array[si].maths,bx
addstu_array[si].total,bx
scur4
calldecibin
movstu_array[si].english,bx
addstu_array[si].total,bx
scur5
calldecibin
movstu_array[si].chinese,bx
addstu_array[si].total,bx
movbl,3
movax,stu_array[si].total
divbl
subah,ah
movstu_array[si].avg,ax
ret
insertendp
;****************************
queryprocnear
scur10
altertmes5
crlf
movah,09
leadx,mes
int21h
sno:
subdh,dh
movdl,num
altertmes3
calldecibin
q:
cmpdx,0
jzerror
cmpbx,dx
jzi
decdx
cmpdx,0
jzerror
jmpq
i:
subah,ah
moval,28d
muldl
movsi,ax
scur1
movah,09
leadx,stu_array[si].names
adddx,2
int21h
crlf
scur2
bindecstu_array[si].maths
crlf
scur3
bindecstu_array[si].english
crlf
scur4
bindecstu_array[si].chinese
movah,1
movdl,0ah
int21h
jmpq_exit
error:
crlf
movah,09
leadx,mes1
int21h
crlf
movah,1
movdl,0ah
int21h
q_exit:
ret
queryendp
;**********************************
modifyprocnear
scur10
altertmes6
crlf
movah,09
leadx,mes
int21h
sno1:
subdh,dh
movdl,num
altertmes3
calldecibin
q1:
cmpdx,0
jzerror1
cmpbx,dx
jzi1
decdx
cmpdx,0
jzerror1
jmpq1
i1:
subah,ah
moval,28d
muldl
movsi,ax
scur1
movah,0ah
leadx,stu_array[si].names
int21h
subbh,bh
movbl,stu_array[si+1].names
movstu_array[si+bx+2].names,'$'
scur2
calldecibin
movstu_array[si].maths,bx
addstu_array[si].total,bx
scur3
calldecibin
movstu_array[si].english,bx
addstu_array[si].total,bx
scur4
calldecibin
movstu_array[si].chinese,bx
addstu_array[si].total,bx
movbl,3
movax,stu_array[si].total
divbl
subah,ah
movstu_array[si].avg,ax
jmpm_exit
error1:
crlf
movah,09
leadx,mes1
int21h
crlf
movah,1
movdl,0ah
int21h
m_exit:
ret
modifyendp
;***********************************
score_analysisprocnear
subch,ch
movcl,num
movdx,cx
cmpcx,0
jzs_aexit
loop1:
;maths
callloop2
looploop1
scur10
altertmes9
scur1
bindecn