汇编语言成绩统计系统的实现
- 格式:doc
- 大小:145.00 KB
- 文档页数:17
一、软件背景介绍
学生成绩管理系统设计与实现学生成绩管理系统设计与实现摘要学生成绩管理系统是学校不可或缺的一个组成部分,随着计算机技术的逐渐发展,计算机在教育系统中的应用得到了巨大的发展。教务管理正在逐步迈向管理信息现代化。但是我国的教务管理信息化水平还处在初级阶段,主要表现在对学生的成绩管理、学生的课程管理还是采用原有的人工管理方式。学校的规模不断扩大,学生数量急剧增加,有关学生的各种数据也成倍增长。面对庞大的信息量,这时的人工管理几乎无法实现,在这种情况下用数据库进行管理变的尤为必要,这可以发挥计算机的优势,就需要有教务管理系统来提高学生成绩管理工作的效率.通过这样的系统,可以做到信息的规范管理,科学统计和快速的查询,从而减少管理方面的工作量和减少人为的错误。
进行数据库设计首先必须准确了解也分析用户需求(包括数据和处理)。目的是为学生成绩管理数据库系统的设计打下牢牢的基础,是数据库开发的重要文件依据,主要为数据库设计人员使用,是用户和系统分析员的项目依据文件。作为“地基”的需求分析是否做得充分与准确,它决定了在其上构建数据库大厦的速度和质量。需求分析做得不好,甚至会导致整个数据库设计返工重做。
成绩管理系统是针对高等院校的学生学籍管理,因此此系统的用户应包括系统管理员和学生。主要涉及系部信息、班级信息、学生信息、课程信息和成绩等多种数据信息。经走访调查得出教务员有以下要求:
(1)管理员、教师和学生登录后可以改自己的密码;
(2)管理员、教师和学生可以查询课程信息;
(3)管理员可以删除学生信息、教师信息、登录用户信息,还可以查询和删除学生成绩,添加、删除课程信息;
(4)管理员批量导入、导出数据;
(5)教师可以录入、修改成绩,批量导出数据;
(6)学生可以查询成绩。
不过此次我做的系统只针对学生成绩管理实现的对学生成绩的统计,主要运用汇编语言来完成各个模块的应用,先以内存存储单元中读取数据(假设的学生成绩数据),将成绩及姓名放在两个存储单元,然后通过循环,地址的的增加,实现姓名与成绩的对应输出,其中有冒泡排序的实现及十进制显示输出,还有ABCDE等级的统计及附加功能等级的判断。实现的功能略显逊色,但应用了很多技术,主要实现的功能如下:
(1)显示学生成绩;
(2)对成绩的等级划分;
(3)对学生成绩进行排序;
(4)输入新的学生姓名及成绩,并将其入库;
(5)输入新的成绩显示出此成绩的等级;
(6)清屏;
(7)退出系统。
1、成绩统计管理系统运行的功能主菜单如下:
图1主菜单功能图
2、一号显示预存姓名及分数功能,运行时功能图如下:
图2一号功能运行显示图
二、核心算法思想
先以内存存储单元中读取数据(假设的学生成绩数据),将成绩及姓名放在两个存储单元,然后通过循环,地址的的增加,实现姓名与成绩的对应输出。统计可以设计个子程序SORT,直接调用统计出ABCDE等级的人数。然后用冒泡法对成绩排序,再调用2-10进制显示转换的子程序显示结果。
增强功能输入数据存在内存中后,其显示及统计的实现和基本功能的方法是一样的。在输入数据的时候,要符合自己定义的类型。要体现统计和10进制输出的实现采用预存多组数据在内存单元中,这样一方面在运行时避免输入大量数据,而可以直接输出,检验结果;另一方面,可以防止写入的类型不对而卡住,而影响实现其他后续功能。
其次是考虑到程序的可行性问题。当进入提示用户输入错误信息时如(当输入非1-7),系统不会必需要有报错及异常中断情况,否则进入死循环。所以在程序设计时必须加对用户输入选项数据进行判断的分支或子程序。
在冒泡排序的实现上要注意是字还是字节,否则会无法达到每个都参与排序的目的。
在增强功能的实现中要特别主义审题, 即学生姓名及成绩根据屏幕提示由键盘录入再
存入数据存储单元,要在程序代码功能中显示出来,开始对题审的不够清楚,所以才会有由键盘录入存入数据存储单元后显示及判断成绩等级的分支程序.而后申请题后加了4号选项功能,输入几组数后输出,输出对应的姓名及分数,如果还要实现对其统计,只需调用前面的2号选项的子程序即可。
三、核心算法流程图
图3 程序主流程图
2、在成绩统计管理程序中,三号功能运用冒泡法实现了对已输入的学生成绩的排序,其流程图如下:
图4 三号功能流程图
3、排序后十进制显示和顺序十进制显示调用的子程序,其流程图如下:
图5 十进制显示算法流程图
四、下面是成绩统计成绩系统的源代码:
stack segment stack
db 200 dup (0)
stack ends
DATA SEGMENT PARA 'DA TA'
menu DB ' ******************************* ',0dh,0ah ;主菜单列表DB ' * main menu * ',0dh,0ah
DB ' * * ',0dh,0ah
DB ' * 1.output all student score * ',0dh,0ah;输出所有学生的成绩
DB ' * 2.statistics score(ABCED) * ',0dh,0ah;显示每个成绩段的学生人数
DB ' * 3.sort score * ',0dh,0ah;学生成绩的排序
DB ' * 4.intput five names and scores * ',0dh,0ah;任意添加五个学生的姓名与成绩
DB ' * 5.intput one name and score * ',0dh,0ah;任意输入一个学生的姓名与成绩,会显示出其成绩的等级
DB ' * 6.clear screen * ',0dh,0ah;清屏
DB ' * 7.exit * ',0dh,0ah;退出
DB ' ************************ ',0dh,0ah
Plase DB'plasechoose:(1-7): ',0dh,'$' ;选择1-7
err db ' the data error$'
put0 db 'plase intput one name and score',0dh,'$'
put db 'plase intput five names and scores',0dh,'$'
bye db '***************thank you to use*********************',0dh,'$'
score dw 64,71,66,61,78,80,83,89,79,96
n1 =($-score)/2;score的长度
scoreadd DB 3; 增加的分数存入指定单元
DB ?
DB 3 DUP(0)
db '$'
scoreadd2 DB 3; 增加的分数存入指定单元
DB ?
DB 3 DUP(0)
db '$'
scoreadd3 DB 3; 增加的分数存入指定单元
DB ?
DB 3 DUP(0)
db '$'
scoreadd4 DB 3; 增加的分数存入指定单元
DB ?
DB 3 DUP(0)
db '$'
scoreadd5 DB 3; 增加的分数存入指定单元
DB ?
DB 3 DUP(0)
db '$'
score1 db 15 dup(0)