《汇编语言课程设计-学生成绩管理系统(9页).doc》由会员分享,可在线阅读,更多相关《汇编语言课程设计-学生成绩管理系统(9页).doc(8页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-1、2、3、4、 汇编语言课程设计-学生成绩管理系统-第 8 页5、 课程设计的目的、任务 汇编语言课程设计对于巩固汇编语言理论知识,加强学生的实际动手能力和提高学生综合素质十分必要。课程设计的目的主要是通过程序设计方法和技能的基本训练,巩固在课堂上学到的有关程序设计的基本知识和基本方法,通过实际动手能力的培养,进一步熟悉汇编语言的结构和使用方法,达到能独立阅读、编制和调试一定规模的汇编语言程序的水平。6、 软件需求分析和设计2.1学生成绩管理系统是对学生成绩的管理,其中包括以下几个模块:(1) .插入一个数据(插入学生学号以及语数外三个成绩)。(2) 修改一个数据。(3) 删除学生成绩数据
2、。(4) 查找学生成绩。(5) 查看学生成绩的排名(6) 查看学生成绩分布(7) 按esc键退出系统 2.2学生成绩管理系统应该包含以下信息:学号,语文成绩,英语成绩,数学成绩。因此,系统应该提供以下功能: (1)输出显示菜单。 (2)输入学生的成绩 (3)修改学生成绩 (4)删除学生成绩 (5)查询学生成绩 (6)显示学生成绩排名 (7)显示成绩分布统计 (8)按esc键退出系统2.3依据程序的功能需求,该系统的功能结构图如下 系统功能结构图 2.4 程序流程图: 主程序流程图 查找学生成绩 插入学生学号及成绩 修改学生的成绩 显示各个学科各分数段的人数7、 程序实现说明3.1学生管理系统中
3、各子程序如下:(1).输入全部学生学号以及语文,英语,数学三科的成绩。子程序名:insert子程序描述:该子程序为输入字程序。系统在开始的时候是没有数据的,通过该子程序可以初始化系统,将学生的学号及成绩输入系统。 代码: insert proc near ;定义进程子程序:插入学生,学号及 成绩 call input ;调用input add n,1 ret insert endp(2).修改输入的成绩。子程序名:modify子程序描述:通过子程序修改学生的成绩代码: modify proc near ;定义进程子程序:修改学生学号,成绩 md1:output mess1 ;输出mess1 s
4、huru ;调用宏shuru:二位数据输入 mov bl,n mov bh,0 mov al,dl mov si,0 md: cmp al,xhsi ;先查找输入的学生是否存在 je qq1_1 ;查到的话,就跳转到qq1_1输入修改的值, 也就是重新输入。;结果相等则跳转到qq1_1 add si,1 cmp si,bx jbe md ;小于等于则跳转到md output mess ;输出mess jmp md1 ;不相等继续输入学号qq1_1: ;转入修改的值重新输入。 mov di,si output mess2 output mess4 mov si,0 mov cx,3 qq3_1:
5、shuruu ;分别输入语文,英语,数学成绩,并将其放 在缓冲区buf中 cmp dx,78h ;比较输入的成绩是否大于120,如果大于120的 话,那么重 新输入成绩 jbe qq2_1 ;小于等于则转移到qq2_1 output ts3 ;输出ts3 jmp qq1_1 ;跳转到qq1_1qq2_1:mov bufsi,dl output bg ;输出空格 add si,1 loop qq3_1 mov al,buf0 ;将存入buf中的成绩,分别赋值给存放对应科 目的成绩的数组 mov chidi,al mov al,buf1 mov engdi,al mov al,buf2 mov m
6、atdi,al ret modify endp(3).删除学生的成绩。子程序名:delete子程序描述:通过子程序删除学生的成绩代码: de proc near ;删除某个学生的记录sc1:output mess1 shuru ;调用宏shuru,接受输入的学号 mov bl,n mov bh,0 mov al,dl mov si,0sc: cmp al,xhsi ;查询输入学号的学生信息是否存在,不存在的 话,重新输入学号 je sc2 ;相等则转移到sc2 add si,1 cmp si,bx jbe sc ;小于等于则转移到sc output mess ;输出mess jmp sc1 s
7、c2: sub bx,si cmp bx,0 je sc3 ;相等则转移到sc3 mov cx,bxsc4:mov dl,chisi+1 mov chisi,dl mov dl,engsi+1 mov engsi,dl mov dl,matsi+1 mov matsi,dl mov dl,xhsi+1 mov xhsi,dl add si,1 loop sc4 ;loop循环指令,执行操作(cx)-(cx)-1.若 cx!=0,跳转到标号sc处循环执行;cx=0,则推出 循环,执行loop的下一条指令 sub n,1sc3: retde endp(3).查询学生的成绩。子程序名:find子程序
8、描述:通过子程序查询学生的成绩代码: find proc near ;定义进程子程序:查找学生成绩 call sum ;求学生的总成绩 call ping ;求学生的平均成绩bj1:output mess1 ;输出mess1 shuru ;二位数数据输入 mov bl,n mov bh,0 mov al,dl mov si,0bj: cmp al,xhsi ;将输入的学号与输入的学号相比, je i ;存在的话,将此学生的成绩输出。je表示结果相 等则转移。 add si,1 cmp si,bx jbe bj ;小于等于则转移到bj output mess jmp bj1 i: output
9、strr2 shuzi xhsi ;shuzi为二位数据输出 output bg ;输出空格 mov al,chisi cbw ;将字节变为字 shuzii ax ;shuzii为三位数据输出。 output bg ;输出空格 mov al,engsi cbw ;将字节变为字 shuzii ax ;shuzii为三位数据输出 output bg mov al,matsi cbw shuzii ax output bg ;输出空格的字符串,用于与标题栏对齐 mov al,pjsi cbw shuzii ax output bg mov ax,si mov bl,2 mul bl mov bx,a
10、x shuzii zcbx ;shuzii为三位数据输出 output bg ;输出空格的字符串,用于与标题栏对齐 shuzi mcsi ;shuzi为二位数据输出 retfind endp(4).显示学生的成绩排名。子程序名:show子程序描述:通过子程序显示学生的成绩排名代码: show proc near ;定义进程子程序:显示结果排名 call sum ;调用宏sum call ping ;调用宏ping call rank ;调用宏rank call shuchu ;调用宏shuchu ret show endp3.2程序运行抓图:主菜单 修改学生成绩删除学生成绩 显示各个学科各分数
11、段的人数8、 程序总结通过两个星期的学习,努力,终于完成了报告。系统可以很好的运行。这两个多星期的时间,几乎每天不是在敲代码,就是在看代码,查书,上网。系统中用到了很多最近才学习的知识,比如宏,子程序。这些都使得代码的运行效率提高了,代码行数减少了。系统还用到了bios的清屏功能。这些功能如果不是做课程设计,我想我很难会接触到这些知识。由于自己对知识掌握的不是很牢固,其中也会碰到一些困难。每当遇到问题的时候,我会先上网去查找,看看有没有人提过这方面的问题。互联网是强大的,大部分的问题通过网络都可以解决。部分找不到的问题,我就去请教班里学得好的同学。他们对知识的掌握远超过我。这样下来,很多问题都迎刃而解了。课程设计是一个很好的掌握书本上知识的过程。平时上课之后,自己都不会想着去敲一些代码联系联系。通过做课程设计,将理论与实践结合了起来,对知识的理解更加深入了。