汇编试验报告-学生信息管理系统(互联网+)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
学生信息管理系统
1. 实验类别
使用汇编语言编程
2. 实验内容和实验目的
学生的信息包括姓名、班级、学号和成绩,其中成绩精确到1位小数。编写程序实现以下功能:
(1) 可以录入学生的信息,成绩以十进制形式录入,并显示; (2) 可以按成绩进行排序显示; (3) 可以统计平均成绩;
(4) 可以统计不及格、60~70、70~80、80~90、90~100各分数段的人数。
3. 实验设备环境
Windows 7 操作系统的pc 机 ,使用QASM270编译器环境下编写。
4. 实验实现过程及方法
首先数据采用二维数组的形式进行存储,分为学生信息部分与成绩部分。 然后将输入学生数也保存在一个一维数组中。
然后再信息的存储过程中,对于字符串输入进行转换,以二进制的形式存储在数据段中。 然后采用冒泡排序,对于数据段中的人员信息进行排序。以成绩为参数。
然后再对每个人员成绩进行遍历,统计各个数据层次中人员数,然后再成绩遍历的同时,将平均成绩也同时求出,在求平时成绩的时候,首先先将整数部分乘10 然后再加上小数部分,以便于后续的输出。
将排序后的人员信息及成绩显示出来,然后将平均成绩也同时打印出来,还有各个分数层次中的人员数也都一并显示出来。
下面是一些主要代码来实现上述过程: ;数据部分
NUMBER DB 3 DUP(0) ;第一个存个/十位(ASCII 码),第二个存个位(ASCII 码),第三个存学生数(二进制)
;用20字节单元表示学生信息,0-19中:0对应最大字符,1对应实际输入,2-18对应输入信息,19对应'$'
INFORMATION DB 99 DUP(20 DUP(0))
;用7字节单元来存分数,0-6中,0-4对应输入字符,5对应输入整数部分的二进制数,6对应于小数部分的二进制数
GRADE DB 99 DUP(7 DUP(0))
AVERAGE_GRADE_BUFFER DB 2 DUP(0) ;第一个存整数部分(二进制形式),
STORE_STUDENT_NUM ;存储学生总数,结果送cx中
STORE_STUDENT_INFORMATION ;存储学生信息
STORE_STUDENT_GRADE ;存储每个学生成绩
SORT ;采用冒泡排序
_DISPLAY ;显示结果
FIND_RESULT ;显示平均成绩和分段人数
关键算法的流程图:
关于分段人数与总成绩的计算冒泡排序算法:
5.效果图
输入三人信息,班级 学好 姓名,然后输入此人成绩。
可以看到三人的按成绩排序,然后将平均值输出,而且统计了各个分数区间的人数。
处理计算
计算总成绩
<60? <70? <80? <90?
<=100 错误
返回
N
N
N
N
N A++
B++ C++ D++ E++
Y
Y
Y
Y
Y
处理排序冒泡
i=0
交换
i++
Ki<=Ki+1 i=counte r
返回
Y N
Y
N
输入5人信息,并将其打印出来。
6. 实验心得
通过编写学生管理系统的汇编实验,让我对汇编语言有了很深的了解,对于语言的熟悉度也
提高了很多。在编写的过程中遇到了很多的问题,由于汇编语言使用起来比较繁琐(个人感觉),很多内部运行的数据不能很好的呈现出来,所以对数据的保存,处理等方面出现了很大的错误,主要是在字符的输入与二进制的转换,还有就是在数据处理的时候会出现很多标志位,这些标准为对于处理后数据的保存有很大的影响,但是通过课本上的实验例子,对于这些问题基本上都能得到一定的解决。还有就是在需要跳转的时候,由于跳转指令使用对标志位或者条件使用比较灵活,有很多种的跳转指令,这些指令在使用起来是很方便但是由于判断条件很多,可能不小心就出现了跳转出错。还有就是,跳转不到想要跳转的地方。这些问题需要在编写的过程中非常的小心,同时也能将这些指令得使用规则得到一个很好的理解与记忆。总之,在此次的汇编实验的编写过程中,理解了很多在课堂上学习到的知识,也同时记忆了这些指令的使用规则与方法。对于汇编语言有了一定程度的理解与掌握。
源程序:
DATAS SEGMENT ;此处输入数据段代码
; 输入输出提示字符
STUDENT_NUM DB 'Please input the number of students(1-99):','$' STUDENT_INFORMATION DB 0DH,0AH,'Please input the student
information(class id name):',0DH,0AH,'$'
STUDENT_GRADE DB 0DH,0AH,'Please input the student
grade(0.0-100.0):',0DH,0AH,'$'
AVERAGE_GRADE DB 0DH,0AH,'The average grade is:','$'
RESULT1 DB 0DH,0AH,'The number of student in [> =90] is:','$' ;各分数段人数
RESULT2 DB 0DH,0AH,'The number of student in [80-90] is:','$'
RESULT3 DB 0DH,0AH,'The number of student in [70-80] is:','$'
RESULT4 DB 0DH,0AH,'The number of student in [60-70] is:','$'
RESULT5 DB 0DH,0AH,'The number of student in [< =60] is:','$'
GRADE_RANK DB 0DH,0AH,'The grade list(high to low)is:',0DH,0AH,'$' ;打印排名
BLANK DB ' ','$'
HUANHANG DB 0DH,0AH,'$'
KAISHISHUCHU DB
0DH,0AH,'***********************************',0DH,0AH,'$'
;数据
NUMBER DB 3 DUP(0) ;第一个存个/十位(ASCII码),第二个存个位(ASCII码),第三个存学生数(二进制)
;用20字节单元表示学生信息,0-19中:0对应最大字符,1对应实际输入,2-18对应输入信息,19对应'$'
INFORMATION DB 99 DUP(20 DUP(0))