📄 成绩数据库管理系统.txt
字号:
;********************************************
date segment
jiben struc ;定义基本结构体
num db 8 dup(?)
ming db 16 dup(?)
huibian db 10 dup(?)
caozuo db 10 dup(?)
bianyi db 10 dup(?)
yingyu db 10 dup(?)
jiben ends
chengji jiben 100 dup(<>) ;开辟结构体类型空间
shurubiao dw 100 dup(?) ;建立输入表
many db 0
msg1 db '请输入学号 : ','$'
msg2 db '请输入姓名 : ','$'
msg3 db '请输入汇编语言成绩 : ','$'
msg4 db '请输入操作系统成绩 : ','$'
msg5 db '请输入编译原理成绩 : ','$'
msg6 db '请输入专业英语成绩 : ','$'
msg7 db '是否确定删除?(y/n) : ','$'
msg8 db '是否继续输入?(y/n) : ','$'
msg9 db '按班显示请按 1 ',13,10,'按人显示请按 2 ',13,10,'请选择 : ','$'
mss1 db '学号不存在!!',13,10,'$'
mss2 db '查询成绩请按 2 ','$'
mss3 db '插入成绩请按 3 ','$'
mss4 db '删除成绩请按 4 ','$'
mmad db '显示成绩请按 1 ',13,10,'插入成绩请按 2 ',13,10,'删除成绩请按 3 ',13,10,'修改成绩请按 4 ',13,10,'退出系统请按 Q ',13,10,'请选择 : ','$'
mmch db '修改汇编语言成绩请按 1 ',13,10,'修改操作系统成绩请按 2 ',13,10,'修改编译原理成绩请按 3 ',13,10,'修改专业英语成绩请按 4 ',13,10,'请选择 : ','$'
mmgu db '显示成绩请按 1 ',13,10,'退出系统请按 Q ',13,10,'请选择 : ','$'
labr db '班级学习成绩管理系统',13,10,'请输入管理密码 : ','$'
xian db ' 学号 姓名 汇编语言 操作系统 编译原理 专业英语 ',13,10,' -----------------------------------------------------------',13,10,'$'
spac db ' ','$'
password db '123',6 dup(0),'$'
chang db 10 DUP(?)
rete db 13,10,'$'
rate db 13,'$'
temp db 100 DUP(?)
nowdi dw 0
nowcx dw 0
ll dw 0
len dw 8
date ends
;********************************************
zonghe macro gongneng
local chazhao,retian,tianjieshule,refind,zhaodaoend,bucunzai,chazhaoend
chazhao:
xor cx,cx
lea dx,msg1
call output
lea bx,temp
push bx
call getchar
pop dx
push dx
mov cx,bx
sub cx,dx
retian:
cmp cx,len
jz tianjieshule
mov [bx],byte ptr 0
inc bx
inc cx
jmp retian
tianjieshule:
xor cx,cx
dec cx
dec cx
refind:
inc cx
inc cx
mov ax,cx
shr ax,1
mov nowcx,ax
cmp al,many
jz bucunzai
lea si,shurubiao
add si,cx
mov si,[si]
mov dx,len
push dx
lea dx,temp
push dx
push si
call search
or dx,dx
jz refind
call gongneng
jmp chazhaoend
bucunzai:
lea dx,mss1
call output
chazhaoend:
lea dx,msg8
call output
lea bx,temp
call getchar
dec bx
cmp [bx],byte ptr 'y'
jz chazhao
endm
;********************************************
stk segment
dw 100 DUP(?)
stk ends
;********************************************
code segment
assume cs:code,ds:date,es:date,ss:stk
start:
mov ax,date
mov ds,ax
mov es,ax
mov ax,stk
mov ss,ax
mov sp,100
;*********************************************
allstart:
lea dx,labr
call output
lea bx,temp
push bx
call getchar
pop bx
cmp [bx],byte ptr '1'
jnz guest
inc bx
cmp [bx],byte ptr '2'
jnz guest
inc bx
cmp [bx],byte ptr '3'
jnz guest
lea dx,mmad
call output
jmp realstart
guest:
lea dx,mmgu
call output
realstart:
lea bx,temp
push bx
call getchar
pop bx
cmp [bx],byte ptr '1'
jz xianshi
cmp [bx],byte ptr '2'
jz charu
cmp [bx],byte ptr '3'
jz shanchu
cmp [bx],byte ptr '4'
jz xiugai
jmp tuichu
xianshi:
mov cl,many
or cl,cl
jz allstart
lea dx,msg9
call output
lea bx,temp
push bx
call getchar
pop bx
cmp [bx],byte ptr '1'
jz xianshi1
cmp [bx],byte ptr '2'
jz xianshi2
jmp allstart
charu:
lea si,shurubiao
jmp charu1
shanchu:
jmp shanchu1
xiugai:
jmp xiugai1
tuichu:
jmp tuichu1
;*********************************************
xianshi1:
lea dx,xian
call output
lea bx,shurubiao
xianshi3:
lea dx,spac
call output
mov si,word ptr[bx]
push cx
call ddplay
pop cx
add bx,2
dec cl
or cl,cl
jnz xianshi3
jmp allstart
xianshi2:
zonghe xianshi4
jmp allstart
;*********************************************
charu1:
mov di,nowdi
mov [si],di
inc si
inc si
lea dx,msg1
call output
lea bx,[di].num
call getchar
lea dx,msg2
call output
lea bx,[di].ming
call getchar
lea dx,msg3
call output
lea bx,[di].huibian
call getchar
lea dx,msg4
call output
lea bx,[di].caozuo
call getchar
lea dx,msg5
call output
lea bx,[di].bianyi
call getchar
lea dx,msg6
call output
lea bx,[di].yingyu
call getchar
add nowdi,64
inc many
lea dx,msg8
call output
lea bx,temp
push bx
call getchar
pop bx
cmp [bx],byte ptr 'y'
jz charu1
call paixu
jmp allstart
;*********************************************
shanchu1:
zonghe shanchuchengji
jmp allstart
;*********************************************
xiugai1:
zonghe change
jmp allstart
;*********************************************
tuichu1:
;
jmp allend
;*********************************************
;*********************************************
allend:
mov ax,4c00h
int 21h
;*********************************************
output proc near ;DX传参,输出DX中的内容
mov ah,9
int 21h
ret
output endp
;*********************************************
getchar proc near ;BX传参,将键盘输入存放
reget: ;到[BX]中
mov ah,1
int 21h
cmp al,0dh
jz quit
cmp al,17h
jz regets
cmp al,08
jz regets
mov [bx],al
inc bx
jmp reget
regets:
dec bx
jmp reget
quit:
lea dx,rete
call output
ret
getchar endp
;*********************************************
shanchuchengji proc near
call xianshi4
lea dx,msg7
call output
lea bx,temp
call getchar
dec bx
cmp [bx],byte ptr 'y'
jnz shanchuchengjiend
xor cx,cx
mov cl,many
sub cx,nowcx
dec cx
lea di,shurubiao
add di,nowcx
add di,nowcx
mov si,di
inc si
inc si
rep movsw
dec many
shanchuchengjiend:
ret
shanchuchengji endp
;*********************************************
paixu proc near
xor si,si
xor cx,cx
mov cl,many
mov ch,cl
daxunhuan:
lea bx,shurubiao
mov cl,ch
dec ch
or ch,ch
jz xunhuanjieshu
xiaoxunhuan:
dec cl
or cl,cl
jz daxunhuan
mov di,[bx]
mov si,[bx+2]
call compare
or dl,dl
jz bubian
mov ax,[bx]
mov dx,[bx+2]
mov [bx],dx
mov [bx+2],ax
bubian:
add bx,2
jmp xiaoxunhuan
xunhuanjieshu:
ret
paixu endp
;*********************************************
compare proc near
xor dx,dx
recomp:
cmp dh,2
jz compjieshu
mov al,byte ptr [di]
cmp al,byte ptr [si]
ja dayu
jb compjieshu
inc di
inc si
inc dh
jmp recomp
dayu:
mov dl,1
compjieshu:
ret
compare endp
;********************************************
comp proc near
xor dx,dx
dec si
dec bx
recompe:
inc dh
inc si
inc bx
cmp dh,5
jz compjieshule
mov al,byte ptr [si]
cmp al,byte ptr [bx]
jz recompe
mov dl,1
compjieshule:
ret
comp endp
;********************************************
search proc near
push bp
mov bp,sp
push ax
push bx
push cx
push di
push si
mov cx,[bp+8]
mov di,[bp+4]
mov si,[bp+6]
rep cmpsb
jz findit
mov dx,0
jmp searchend
findit:
mov dx,1
searchend:
pop si
pop di
pop cx
pop bx
pop ax
pop bp
ret 6
search endp
;********************************************
ddplay proc near
push cx
lea di,temp
mov cx,63
cld
rep movsb
inc di
mov [di],byte ptr '$'
mov dx,di
sub dx,64
call output
lea dx,rete
call output
pop cx
ret
ddplay endp
;*********************************************
xianshi4 proc near
lea dx,xian
call output
lea dx,spac
call output
call ddplay
ret
xianshi4 endp
;*********************************************
change proc near
call xianshi4
lea dx,mmch
call output
lea si,shurubiao
add si,nowcx
add si,nowcx
mov si,[si]
push si
lea bx,temp
call getchar
dec bx
add si,14
mov bx,[bx]
xor bh,bh
sub bx,30h
jiajia:
add si,10
dec bx
or bx,bx
jnz jiajia
mov bx,si
push bx
call getchar
pop dx
mov cx,bx
sub cx,dx
retian1:
cmp cx,10
jz tianjieshule1
mov [bx],byte ptr 0
inc bx
inc cx
jmp retian1
tianjieshule1:
pop si
call xianshi4
changend:
ret
change endp
;*********************************************
code ends
end start
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -