⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 version1.05.asm

📁 学生成绩管理系统
💻 ASM
字号:
INCLUDE VERSION1.05.txt

STACK SEGMENT 
	DB  50 DUP(?)
STACK ENDS
DATA      SEGMENT
STR1      DB ' -----------SIMPLE GRADE MANAGEMENT SYSTEM---------------',0AH,0DH,'$'
STR2      DB '         INSERT  (I)                STUDENT INFORMATION',0ah,0dh,'$'
STR3      DB '         UPDATE  (U)                 NUMBER:',0AH,0DH,'$'
STR4      DB '         DELETE  (D)                   NAME:',0AH,0DH,'$'
STR5      DB '         QUERY   (Q)                 SCORE1:',0AH,0DH,'$'
STR6      DB '         SORT    (S)                 SCORE2:',0AH,0DH,'$'
STR7      DB '       LIST ALL  (L)                 SCORE3:',0AH,0DH,'$'
STR8      DB '         EXIT    (E)',0AH,0DH,'$'
STR9      DB '--------------INPUT YOUR SELECT:       INFO:',0AH,0DH,'$'
STR10     DB 'NUMBER  NAME        S1    S2    S3    SUM',0AH,0DH,'$'
TIP       DB 'IS THERE ANYONE ELSE?(Y/N)','$'
_TIP      DB 'NOTICE THE CAPS LOCK KEY AND INPUT UPPER CHARACTORS?$'
W_ERR     DB 'WRITE FILE ERROR$'
O_ERR     DB 'OPEN FILE ERROR$'
C_ERR     DB 'CLOSE FILE ERROR$'
R_ERR     DB 'READ FILE ERROR$'
_QUERY    DB 'QUERY BY NAME OR NUMBER? (INPUT 1,2 TO CHOSE)$'
_CREATEFILE DB 'CREATE NEW FILE (C)$'
_OPENFILE  DB 'OPEN EXIST FILE (O)$'
_EXIT      DB  '     EXIT (E)$'
MSG       DB 'PRESS ANY KEY TO MAIN MENU. $'
SORTMSG   DB 'SORRY, THIS FUNCTION IS NOT REALIZED BEACAUSE OF THE LIMITED TIME$'
FNAME     DB "E:\masm5-3\score.txt"
BUFFER1   DB 28 DUP(?)
BUFFER2   DB 30 DUP(?)
FILEHANDLE  DW ?
TEMP0     DB ?
TEMP1     DB ?
TEMP2     DW ?
TEMP3     DW ?
SUM1      DW ?
SUM2      DW ? 
SUM3      DW ?
COUNT     DB 0
DEL       DB 27 DUP(' ')
DATA      ENDS

SCORE      STRUC
NUMBER     DB 10 DUP(' ')
NAME       DB 6  DUP(' ')
SCORE1     DB 0,0,0
SCORE2     DB 0,0,0
SCORE3     DB 0,0,0
SUM        DW ?
SCORE      ENDS

CODE      SEGMENT
MAIN      PROC FAR
          ASSUME  CS:CODE,DS:DATA,ES:DATA,SS:STACK
          LOADDS DATA
          CLRSCRN
          PUTS 4,20,_CREATEFILE,1EH
          PUTS 7,20,_OPENFILE,1EH
          PUTS 9,25,_EXIT,1EH
          SET_P3
          MOV AH,7
          INT 21H
          CMP AL,'O'
          JZ MENU_SORT
          CMP AL,'E'
          JZ  MENU_EXITF
          ;JMP MANAGE 
          ;NEWFILE FNAME,FILEHANDLE,N_ERROR
          ;MOV AH,7
          ;INT 21H
          ;
          ;MOV BEFFER1[BX],AL
MANAGE:          
          SET_P0
          CLRSCRN         
          SHOW STR1
          NEWLINE
          SHOW  STR2
          SHOW  STR3
          SHOW  STR4
          SHOW  STR5
          SHOW  STR6
          SHOW  STR7
          SHOW  STR8
          NEWLINE 
          SHOW  STR9          
;--------------CHOSE MENU--------------------------------         
MENU:     
          CLEAR1
          CLEAR2
          SET_P3
          MOV AH,7
          INT 21H         
          CMP AL,'I'
          JZ  MENU_INSERT
          CMP AL,'L'
          JZ  MENU_LIST
          CMP AL,'U'
          JZ  MENU_UPDATE
          CMP AL,'D'
          JZ  MENU_DELETE
          CMP AL,'Q'
          JZ  MENU_QUERY
          CMP AL,'S'
          JZ  MENU_SORT
          CMP AL,'E'
          JZ  MENU_EXITF  
          PUTS 15,10,_TIP,1EH
          MOV AH,7
          INT 21H
          JMP MENU       
;----------------INSERT---------------------------------         
MENU_INSERT:
          PUSHREG
          MOV FILEHANDLE,0
          OPENFILE FNAME,FILEHANDLE,O_ERR
          CMP AL,0
          JZ  O_ERROR                   
INSERTING: 
          CLEAR1
          CLEAR2  
          SET_P1 3
          CALL GET_REC                
          TOFILEEND FILEHANDLE
          WRITEFILE 27,BUFFER1,FILEHANDLE,W_ERR
          CMP AL,0
          JZ W_ERROR
          PUTS 15,3,TIP,1EH
          MOV AH,7
          INT 21H
          CMP AL,'Y'
          JZ  INSERTING
          CLOSEFILE FILEHANDLE,C_ERR
          CMP AL,0
          JNZ C_ERROR 
O_ERROR:    
              PUTS 16,3,O_ERR,1EH
              JMP QUIT_INSERT         
W_ERROR:    
              PUTS 16,3,W_ERR,1EH
              JMP QUIT_INSERT
C_ERROR:    
              PUTS 16,3,C_ERR,1EH
              JMP QUIT_INSERT
R_ERROR:    
              PUTS 16,3,R_ERR,1EH                                     
QUIT_INSERT:  
              POPREG
              JMP MENU              
;-------------------LIST---------------------------------         
MENU_LIST:
          PUSHREG
          MOV FILEHANDLE,0
          OPENFILE FNAME,FILEHANDLE,O_ERR
          CMP AL,0
          JZ  O_ERROR
          CLEAR1
          CLEAR2
          SET_P2
          SHOW STR10
LISTING:  READFILE 27,BUFFER1,FILEHANDLE,R_ERR
          CMP AL,0
          JZ  QUIT_LIST
          SHOW_ITEM BUFFER1
          JMP LISTING         
QUIT_LIST:    
          CLOSEFILE FILEHANDLE,C_ERR
          CMP AL,0
          JZ C_ERROR 
          PUTS  19,50,MSG,1EH
          MOV AH,7
          INT 21H
          POPREG                     
          JMP MENU                           
;--------------QUERY-BY NUMBER----------------------------------
MENU_QUERY:
          PUTS 16,10,_QUERY,1EH
          MOV AH,7
          INT 21H
          CMP AL,'1'
          JZ MENU_QUERY_BYNAME
          CMP AL,'2'
          JZ MENU_QUERY_BYNUMBER
          JMP MENU
MENU_QUERY_BYNUMBER:
          PUSHREG
          CLEAR1
          CLEAR2
          SET_P1 10
          GETIN BUFFER1,10
          OPENFILE FNAME,FILEHANDLE,O_ERR
          CMP AL,0
          JZ  Q_O_ERROR
          MOV BX,FILEHANDLE
SEARCH:        
          READFILE 27,buffer2,FILEHANDLE,R_ERR         
          LEA SI,buffer2
          LEA DI,BUFFER1
          MOV CX,10
MATCH:        
          MOV AL,BYTE PTR[SI]
          CMP AL,BYTE PTR[DI]
          JNZ SEARCH
          INC SI
          INC DI
          LOOP MATCH
          MOV [BUFFER2+27],'$'
          NEWLINE
          NEWLINE
          SHOW_ITEM BUFFER2
          PUTS 17,3,MSG,1EH
          MOV AH,7
          INT 21H
          JMP Q_QUIT
Q_O_ERROR: 
          PUTS 17,3,O_ERR,1EH
Q_QUIT:          
          CLOSEFILE FILEHANDLE,C_ERR
          POPREG
          JMP MENU
;--------------QUERY-BY NAME----------------------------------
MENU_QUERY_BYNAME:
          PUSHREG
          CLEAR1
          CLEAR2
          SET_P1 10
          GETIN BUFFER1,10
          OPENFILE FNAME,FILEHANDLE,O_ERR
          CMP AL,0
          JZ  QN_O_ERROR
          MOV BX,FILEHANDLE
SEARCHNAME:        
          READFILE 27,buffer2,FILEHANDLE,R_ERR         
          LEA SI,buffer2+10
          LEA DI,BUFFER1
          MOV CX,6
MATCHNAME:        
          MOV AL,BYTE PTR[SI]
          CMP AL,BYTE PTR[DI]
          JNZ SEARCHNAME
          INC SI
          INC DI
          LOOP MATCHNAME
          MOV [BUFFER2+27],'$'
          NEWLINE
          NEWLINE
          SHOW_ITEM BUFFER2
          PUTS 17,3,MSG,1EH
          MOV AH,7
          INT 21H
          JMP QN_QUIT
QN_O_ERROR: 
          PUTS 17,3,O_ERR,1EH
QN_QUIT:          
          CLOSEFILE FILEHANDLE,C_ERR
          POPREG
          JMP MENU          
;-----------------MODIFY-----------------------------------          
MENU_UPDATE:      
          PUSHREG     
          OPENFILE FNAME,FILEHANDLE,O_ERR
          CLEAR1
          CLEAR2
          SET_P1 3
          CALL GET_REC       ;STORED IN  BUFFER1
          MOV BX,FILEHANDLE          
READM:        
          READFILE 27,BUFFER2,FILEHANDLE,R_ERR         
          LEA SI,BUFFER2
          LEA DI,BUFFER1
          MOV CX,10
MATCHM:        
          MOV AL,BYTE PTR[SI]
          CMP AL,BYTE PTR[DI]
          JNZ READM
          INC SI
          INC DI
          LOOP MATCHM
          MOV BX,FILEHANDLE
          MOV AH,42H
          MOV AL,1
          MOV CX,0FFFFH
          MOV DX,-27
          INT 21H
          WRITEFILE 27,BUFFER1,FILEHANDLE,W_ERR
          CLOSEFILE FILEHANDLE,C_ERR         
          PUTS 18,3,MSG,1EH
          MOV AH,7
          INT 21H
          SET_P3
          POPREG
          JMP MENU
;-------------------DELETE-------------------------------------
MENU_DELETE:
          PUSHREG
          clear1
          set_p1 10
          GETIN BUFFER1,10
          OPENFILE FNAME,FILEHANDLE,O_ERR
READD:
          READFILE 27,BUFFER2,FILEHANDLE,R_ERR
          LEA SI,BUFFER2
          LEA DI,BUFFER1
          MOV CX,10
MECH:
          MOV AL,BYTE PTR[SI]
          CMP AL,BYTE PTR[DI]
          JNZ READD
          INC SI
          INC DI
          LOOP MECH
          MOV BX,FILEHANDLE
          MOV AH,42H
          MOV AL,1
          MOV CX,0FFFFH
          MOV DX,-27
          INT 21H
          WRITEFILE 27,DEL,FILEHANDLE,W_ERR
          CLOSEFILE FILEHANDLE,C_ERR
          PUTS 17,3,MSG,1EH
          MOV AH,7
          INT 21H 
          set_p3
          POPREG
          JMP MENU
;------------------SORT---------------------------------------------- 
MENU_SORT:
         PUSHREG 
         PUTS 15,4,SORTMSG,1EH
         PUTS 17,24,MSG,1EH
         MOV AH,7
         INT 21H
         POPREG
         JMP MENU
;------------------EXITF----------------------------------------------          
MENU_EXITF:
          clear2
          RETURN
          RET
MAIN      ENDP 
;---------------------------------------------------

GET_REC   PROC NEAR
          PUSHREG
          GETIN BUFFER2,10          
          MOV BX,0
          MOV CX,10
COUTINUE: MOV AL,BUFFER2[BX]
          MOV BUFFER1[BX],AL
          INC BX
          LOOP COUTINUE
          SET_P1 4
          GETIN BUFFER2,6
           MOV SI,0
COUTINUE1: MOV AL,BUFFER2[SI]
          MOV BUFFER1[BX],AL
          INC BX
          INC SI
          CMP SI,6
          JNZ COUTINUE1
          SET_P1 5
          GETIN BUFFER2,3
          MOV SI,0
COUTINUE2: MOV AL,BUFFER2[SI]
          MOV BUFFER1[BX],AL
          INC BX
          INC SI
          CMP SI,3
          JNZ COUTINUE2
          SET_P1 6
          GETIN BUFFER2,3
          MOV SI,0
COUTINUE3: MOV AL,BUFFER2[SI]
          MOV BUFFER1[BX],AL
          INC BX
          INC SI
          CMP SI,3
          JNZ COUTINUE3
          SET_P1 7
          GETIN BUFFER2,3
          MOV SI,0
COUTINUE4: MOV AL,BUFFER2[SI]
          MOV BUFFER1[BX],AL
          INC BX
          INC SI
          CMP SI,3
          JNZ COUTINUE4
          INC BX
          PUSH BX
;-------------ADD SUM SCORE-------------------
          MOV TEMP1,0
          MOV TEMP2,0
          MOV TEMP3,0
          MOV TEMP0,0          
          CMP BUFFER1[16],30H
          JB  NEXT1
          MOV AL,BUFFER1[16]
          SUB AL,30H
          MOV TEMP1,AL                ;TEMP1 1
          CMP BUFFER1[17],39H
          JA  GOON1
          CMP BUFFER1[17],30H
          JB  GOON1
          MOV AL,BUFFER1[17]
          SUB AL,30H
          CBW 
          MOV TEMP3,AX
         
          MOV AL,TEMP1
          MOV BL,10
          MUL BL
          ADD AX,TEMP3
          MOV TEMP1,AL                ;TEMP1 2
          
          CMP BUFFER1[18],39H
          JA GOON1
          CMP BUFFER1[18],30H
          JB GOON1
          MOV AL,BUFFER1[18]
          SUB AL,30H
          CBW
          MOV TEMP3,AX
          MOV AL,TEMP1
          MOV BL,10
          MUL BL
          ;ADD AX,TEMP3
          MOV SUM1,AX
          ADD TEMP2,AX
          JMP NEXT1
GOON1:    MOV AL,TEMP1
          CBW
          MOV SUM1,AX
          ;ADD TEMP2,AX
                
NEXT1:    
          CMP BUFFER1[19],30H
          JB  NEXT2
          MOV AL,BUFFER1[19]
          SUB AL,30H
          MOV TEMP1,AL                ;TEMP1 1
          CMP BUFFER1[20],39H
          JA  GOON2
          CMP BUFFER1[20],30H
          JB  GOON2
          MOV AL,BUFFER1[20]
          SUB AL,30H
          CBW 
          MOV TEMP3,AX
         
          MOV AL,TEMP1
          MOV BL,10
          MUL BL
          ADD AX,TEMP3
          MOV TEMP1,AL                ;TEMP1 2
          
          CMP BUFFER1[21],39H
          JA GOON2
          CMP BUFFER1[21],30H
          JB GOON2
          MOV AL,BUFFER1[21]
          SUB AL,30H
          CBW
          MOV TEMP3,AX
          MOV AL,TEMP1
          MOV BL,10
          MUL BL
          ;ADD AX,TEMP3
          MOV SUM2,AX
          ADD TEMP2,AX
          JMP NEXT2
GOON2:    MOV AL,TEMP1
          CBW
          MOV SUM2,AX
          ;ADD TEMP2,AX                
          
NEXT2:                  
          CMP BUFFER1[22],30H
          JB  NEXT3
          MOV AL,BUFFER1[22]
          SUB AL,30H
          MOV TEMP1,AL                 ;TEMP1 1
          CMP BUFFER1[23],39H
          JA  GOON3
          CMP BUFFER1[23],30H
          JB  GOON3
          MOV AL,BUFFER1[23]
          SUB AL,30H
          CBW 
          MOV TEMP3,AX
          MOV AL,TEMP1
          MOV BL,10
          MUL BL
          ADD AX,TEMP3
          MOV TEMP1,AL                   ;TEMP1 2
          
          CMP BUFFER1[24],30H
          JB GOON3
          CMP BUFFER1[24],39H
          JA GOON3
          MOV AL,BUFFER1[24]
          SUB AL,30H
          CBW
          MOV TEMP3,AX
          MOV AL,TEMP1
          MOV BL,10
          MUL BL
          ADD AX,TEMP3
          MOV SUM3,AX
          ;ADD TEMP2,AX
          JMP NEXT3
GOON3:    MOV AL,TEMP1
          CBW
          MOV SUM3,AX
          ;ADD TEMP2,AX
NEXT3:     
          MOV AX,SUM1
          MOV DX,SUM2
          ADD AX,DX
          MOV DX,SUM3
          ADD AX,DX 
          POP BX         
          MOV BUFFER1[25],AL
          INC BX
          MOV BUFFER1[26],AH
          POPREG
          RET
GET_REC   ENDP

CODE      ENDS
          END  MAIN

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -