Part1 常量定义

1.常值定义

MAX_NAME_LEN 最大姓名长度

MAX_CLASS_LEN 最大班级编号长度

MAX_ID_LEN 最大学号长度

MAX_SCORE_LEN 最大成绩长度

MAX_STACK_SIZE 最大栈空间

MAX_BUFFER_SIZE 缓冲区最大空间

MAX_STU_BUFFER_SIZE 学生实例缓冲区最大空间

2.常字符串定义

FUNC1_WORD 功能1:输入学生姓名的提示

FUNC2_WORD 功能2:列出全部学生信息的提示

FUNC3_WORD 功能3:按成绩排名

FUNC4_WORD 功能4:按学号排名

FUNC5_WORD 功能5:计算平均分

FUNC6_WORD 功能6:统计成绩区间内人数

FUNC7_WORD 功能7:退出系统

INPUT1_WORD 功能1输入提示信息

INPUT11_WORD 功能1第一项提示信息

INPUT12_WORD 功能1第二项提示信息

INPUT13_WORD 功能1第三项提示信息

INPUT14_WORD 功能1第四项提示信息

CHOICE_ERROR_MSG 输入选项不合法的提示信息

3.地址表定义

TABLE_HINT_STRING 用于将提示信息传递到显示函数中

TABLE_POINTERS 用于向子程序中传递指针寄存器

TABLE_CMP_STRING 用于比较两字符串时传递参数

4.系统调用定义

CR 定义回车

LF 定义换行

IN_AND_OUT 接收输入并回显

DISP_CHAR 显示一个字符

DISP_STR 显示一个字符串

RETURN 返回操作系统

STR_TO_BUF 从键盘读取字符串并写入缓冲区

Part2 数据结构及定义

1. Student

类型:Struc

作用:描述一个学生的结构体,包含学生姓名,班级,学号,成绩

Part3 变量及其定义

1.OPTION1:

用户在第一个菜单界面下输入的选项

2.BUFFER

输入字符串的缓冲区

包含缓冲区最大长度、缓冲区实际容量及缓冲区存放的字符串

3.STU_NAME_TMP

临时存放输入的学生姓名

4.STU_ID_TMP

临时存放输入的学生学号

5.STU_SCORE_TMP

临时存放输入的学生成绩

6.STU_CLASS_TMP

临时存放输入的学生班级

Part4 函数定义

1.PUTS

作用:在屏幕上显示一行字符串并换行

参数:

TABLE_HINT_STRING

返回值:无

2.DISPLAY_MENU

作用:在屏幕上显示菜单 参数:

TABLE_HINT_STRING

返回值:无

3.CHOICE_INPUT

作用:接受用户输入的选项,并判断是否是合法选项

参数:无

返回值:无

4.INPUT

作用:供用户输入学生信息

参数:无

返回值:无

5.ADD_INTO_BUF

作用:将临时存储学生信息的结构体加入到全局的学生缓冲区中

参数:Student

返回值:无

6.PUTS

作用:在屏幕上显示一行字符串

参数:

TABLE_HINT_STRING

返回值:无

运行截图

输入学生信息

image

列出所有学生

image

按成绩排名

image

按学号排名

image

计算平均分

image

划分成绩区间

image

编写过程中的问题

1.跳转表

跳转表没有跳到case,跳到了cs:0000,输入选项之后不断重新显示菜单

image

image

跟踪发现跳转表地址应该是DS:0146,但最后跳转表的地址变为DS:9146,发现是BX寄存器(BH)的值造成了影响,于是将BH置为0,问题解决