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.常字符串定义
BANNER_WORD 欢迎使用的提示
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
返回值:无
运行截图
输入学生信息
列出所有学生
按成绩排名
按学号排名
计算平均分
划分成绩区间
编写过程中的问题
1.跳转表
跳转表没有跳到case,跳到了cs:0000,输入选项之后不断重新显示菜单
跟踪发现跳转表地址应该是DS:0146,但最后跳转表的地址变为DS:9146,发现是BX寄存器(BH)的值造成了影响,于是将BH置为0,问题解决