学生成绩管理系统
- 格式:docx
- 大小:211.60 KB
- 文档页数:9
学生成绩管理系统 一、 实验题目 设计学生成绩管理程序 (3 门课程 >,实现以下功能: 1. 各科成绩的录入、修改和删除 <10 个学生,每人 3 门成绩,分别按学生 存
放。即学生编号 *,语文成绩 * ,语文成绩名次,数学成绩 *,数学成绩名次, 英语成绩 * ,英语成绩名次,后面的三个单元存放该生总成绩、名次、平均成 绩)带*号的为录入值 2.排序:
(1) 单科课程成绩排序 (分数从高到低 > :结果放到每门成绩之后的名次 单元
中 (2) 总成绩排序 (分数从高到低 >:结果放到每个学生后面的名次单元中
3 查找:
(1) 查询某位同学某课程成绩及名次。总成绩及名次 . (2) 查询单科课程不及格同学名单
4.统计:
(1) 单科平均分
(2) 总成绩平均分
(3) 单科各分数段人数 (60 以下, 60~70 ,70~80 ,80~90 ,90~100> 二、 设计思路 1. 数据定义。
每个学生记录由学生编号,语文成绩,语文成绩名次,数学成绩,数学成 绩名次,英语成绩,英语成绩名次,总成绩、名次、平均成绩组成 其它数据,单科平均成绩,总成绩平均分,单科各分数段人数。 学生编号二0 {数字字符串} 5 成绩二0 {数字字符串} 3 名次二1 {数字字符串} 2 分数段人数二5 {数字字符串}5 索引表元素二无符号双字节数 所有成绩数据,语文成绩、数字成绩、英语成绩、总成绩、平均成绩,均 采用上述成绩的定义;所有名次数据,均采用上述名次定义。 2. 数据存储。
所有数据存储于文件中。每条学生记录占用 70 个字节,实际有效字节为 24 字节,记录最后两个字节是回车换行符,其余字节为空字符,学生记录从第 0 个字节开始存储。第 1000 个字节开始用以存储索引表。单科平均成绩,总 成绩平均分,单科各分数段人数存储在所有学生记录之后的单元中。成绩数 据,占用三个字节,排名数据占用两个字节,学号数据占用五个字节,各科分 数段人数占用五个字节,有效字节不足时,在其后补上空字符,即0,如,成 绩 100 存储为 31 H, 30 H, 30 H; 90 存为 39 H, 30 H, 00 H。
3. 系统结构
系统分为四部分:插入记录、删除记录、数据处理和查询。结构图如下: 3.1. 插入模块,包括建立成绩表、插入一条学生记录两个子模块。插
入一条学生记录子模块,搜索可用单元,接收输入的记录,并写入文件。建立 成绩表子模块,控制输入界面,并多次调用插入记录子模块,完成成绩的建
删除模块,包括学号查询匹配、删除处理子模块。学号设计为定 2字节,搜索以完全匹配的方式进行。删除处理,完成对索引表的
数据处理模块,包括计算个人总分、平均分,计算单科平均分, 成绩排名处理,统计各科分数段人数子模块,各子模块完成相应的功能,并把 结果写入文件。 3.4. 查询模块,完成数据的显示功能,包括查询某个学生个人记录,
3 / 9
3.2. 长,长度为 修改。 3.3. 查询不及格名单,查询各科分数段人数及输出所有记录 三、算法设计。 1.所有数据在文件中的修改以覆盖的方式进行,因此将为每个数据分配固
定长度的存储空间。根据以上数据的定义,数据写入文件前必须“规格化”, 使其符合定义。从键盘输入学号、成绩数据到缓冲区,最后一个字符是 ODH, 且长度不等,需去掉回车符,补上空字符。 总分、平均分的计算。从文件中读出数据,需先转换成二进制数再进行计 从数字转换成字符串,算法程序图:
2.程序采用索引表的方式,完成记录的删除、插入与查询;由于不要求学
号有序,因而可以采用索引表,对记录和文件空间进行管理。其优点是管理较 为简单,可以进行随机访问,能够满足插入删除的需求;缺点是难以实现学号 有序
索引表设计如下:记录最大容量设计为 MAX,链表长度为2*MAX+2个字 节,即 MAX+1 个字长。最后一个字存放尾指针目前学生记录数目;空闲的位 置值为 0,否则为
1.
[STR+BX]J个位数字
开始 百位为0 否
否 十位为0
是 否 FLAG^
[STR+BX]・百位数字
BX J BX+1 学生的记录从第 0 个字节的位置开始存放,每 70 个字节为一条记录。程 序初始化时,将索引表读取到缓冲区 INDEX ;索引位置表 LP 与相应文件空间 的指针 FP 换算方式是: FP= (LP/2> * 70 例如, WORD PTR [INDEX+4] 值为 1, 它所表示文件中开始指针值为 140 ,长度为 70 字节的空间已经使用,即已经存有记录;否则表示空间可用。 遍历索引
表,搜索全部记录: 从索引表第一个字开始,顺序扫描索引表。找到非 0, 将索引表位置 LP 转 换成文件指针 FP ,读取数据,直到遇到 0 结束。转换成文件指针的宏定义 是:
LOCATE MACRO BXREG MUL BX PUSH AX MOV DX,AX PUSH BX POP BX MOV AX,BXREG POP AX MOV BX,2 ENDM DIV BL MOV BX,70
LOCATE 宏参数是目前索引表位置 BX, 结果得到对应记录的文件指针送 BX。
3. 插入模块
插入学生记录操作流程: < 1)比较目前记录数 NUM与设计最大容量 MAX,相等操作结束;< 2)接收数据< 3)搜索可用文件单元< 4)修改索引 表、写
入文件。搜索可用文件单元,顺序扫描 INDEX ,直到 [INDEX+BX] 为0, 根据 BX 可转换成可用的文件单元指针。
4. 删除模块:
删除学生记录操作流程:<1)接收搜索条件,程序设计学号长度为最大为 5<2 )根据索引表,搜索匹配学号。 <3 )修改索引表。数据处理模块。修改索 引表只需要将相应记录的在表中索引值改为 0. 5. 数据处理模块。
模块中排名处理、学科平均成绩计算、分数段人数统计操作,均需取出某 一学科的所有学生成绩,因而此操作作为公用子程序以供调用。个人总分及平 均分处理较为简单,根据索引逐条处理记录。 学科平均成绩计算、分数段人数计算,取出学科成绩到数据缓冲区,再进 行相应操作,并将结果写入文件相应位置。结果在文件中的位置相对固定,直 接写入文件。 排名处理。排名结果为一维数组,与学科成绩存在对应关系。排名结果写 入文件操作需多次进行,所以设计成子程序。程序段如下:
DATA_IN PROC PUSHREG MOV BX,NUMP MOV CX,[INDEX+BX] MOV BX,0 DATA_LP1: PUSH CX PUSH BX MOV DX,[INDEX+BX] CMP DX,0 JZ DIN_NEXT1 LOCATE BX ADD DX,DI MOVE DX MOV CX,CXTEM MOV DX,SI
WRITE DX,CX ADD SI,2 JMP DIN_NEXT2 DIN_NEXT1: INC CX DIN_NEXT2: POP BX POP CX ADD BX,2 LOOP DATA_LP1
DATA_EXIT: POPREG RET DATA_IN ENDP 排名处理算法流程图: NUM是数据个数,作为循环计数。每 次循环,找出最大的数,并将其改为1- CX。
除最后一次循环外,1 — CX将是负 数,由于成绩不存在负数,故不影响下一次 循环找出最大数。如 NUM为10,第一次找 到的最大数将改为 -9。最后一次将改成0. 循环结束后,所有数据由1— CX,到0 组成,加上NUM调整后,数据变成由1到 NUM组成,即排名数据。
6.查询模块。
模块由学生记录查询、学科分数段人数查询、学科不及格学号查询、显示 所有数据子模块组成。所有数据,除索引表外,均以定长字符的形式进行存 储,方便输出。查询学科分数段人数、所有记录操作,可以直接将数据输出; 查询学生记录,先进行学号匹配,再输出一条记录;查询学科不及格学号,根 据索引表,读取有效记录的某学科成绩,符合成绩不及格者输出其学号记录。 模块算法较为简单,界面处理较为复杂。界面总体背景在程序启动时进行 初始化,此模块中各子模块关键在于控制结果输出显示 四、实验结果 显示所有记录 create table insent OF delete a student show score sect ion search student search failed student show the table EXIT
五、实验分析: 程序在emu8086环境下进行编辑,采用 MASM5.0进行编译连接,并调试通 过。 程序采用文件进行数据存储,并且以字符的方式进行存储。这种方式存在 诸多不足:数据的读取、写入需要进行转换,使用不方便;文件的操作极容易 出错,容易造成数据错误,如指针移动出现问题,文件中空字符被替换成空格 字符;调试困难。为方便调试,文件中的数据在输入成功后,应有备份;不使 用字符进行存储,直接存储二进制数,或许更方便。 程序的调试,先分模块进行,最后组合各个模块进行调试。在多次调试过 程中,发现偶然出现程序无法运行的情况,目前找不出根源所在。 程序的功能较多,采用自顶向下的程序开发方法思想,逐步分解子功能, 细化程序结构,使程序结构更为清晰,模块耦合性低。本程序在功能划分上较 为清晰,模块间功能相对独立。
HUH Chinese reink math F«nk English 01 45 3 IB 68 R2 45 A 2 ?6 S3 12 9 7 96 04 59 2 6 25 BE 32 5 4 54 酣 75 1 1 93
M7 12 10 8 SG 98 23 7 5 51 09 1^ 8 3 23 IQ 24 & 9 B6 aue fc4
m66575353278 U3154-S5 14155 sizing lull n 0 a-824 6 519713 B5219 1487722- Your clhoice? a 0 F5129736814