汇编语言课程设计报告学生成绩管理.doc

上传人:laozhun 文档编号:2393004 上传时间:2023-02-17 格式:DOC 页数:25 大小:108KB
返回 下载 相关 举报
汇编语言课程设计报告学生成绩管理.doc_第1页
第1页 / 共25页
汇编语言课程设计报告学生成绩管理.doc_第2页
第2页 / 共25页
汇编语言课程设计报告学生成绩管理.doc_第3页
第3页 / 共25页
汇编语言课程设计报告学生成绩管理.doc_第4页
第4页 / 共25页
汇编语言课程设计报告学生成绩管理.doc_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《汇编语言课程设计报告学生成绩管理.doc》由会员分享,可在线阅读,更多相关《汇编语言课程设计报告学生成绩管理.doc(25页珍藏版)》请在三一办公上搜索。

1、课程设计报告课题名称:学生成绩管理程序学生姓名:学 号: 专 业:计算机科学与技术 指导教师:时 间:2010年6月12日至25日 目录课程设计报告11、题目及要求21.3 课题背景22、运行环境 (软、硬件环境)33、功能设计(功能模块及模块图)33.1各模块的主要功能34、详细设计44.1程序功能44.2各模块的程序流程图574.3本设计的重点、难点及解决方法85、总结86、源程序91、题目及要求1.1 题目:学生成绩管理程序1.2 要求设计一个学生管理程序,要求实现以下功能(1)各科成绩的录入、修改、和删除。(2)按姓名查询每个学生哥们成绩。(3)显示查询结果(4)统计各分数段的成绩的人

2、数个分数段的人数。1.3 课题背景 1.3.1汇编语言的优点 汇编语言由于采用了助记符号来编写程序,比用机器语言的二进制代码编程要方便些,在一定程度上简化了编程过程。汇编语言的特点是用符号代替了机器指令代码,而且助记符与指令代码一一对应,基本保留了机器语言的灵活性。使用汇编语言能面向机器并较好地发挥机器的特性,得到质量较高的程序。用汇编语言等非机器语言书写好的符号程序称为源程序,运行时汇编程序要将源程序翻译成目标程序。目标程序是机器语言程序,它一经被安置在内存的预定位置上,就能被计算机的CPU处理和执行。汇编语言像机器指令一样,是硬件操作的控制信息,因而仍然是面向机器的语言,使用起来还是比较繁

3、琐费时,通用性也差。但是,汇编语言用来编制系统软件和过程控制软件,其目标程序占用内存空间少,运行速度快,有着高级语言不可替代的用途。 1.3.2课题意义 当今社会是一个信息时代的社会,计算机的使用也是越来越普遍了,各行业在管理职员都采用了一些管理软件,不管是银行、学校,大大小小的各种企业,都是使用的相应的 管理软件管理企业的各种信息,我选择的这个汇编语言课程设计题就是一个简单学生信息管理程序,虽然只能处理一些简单操作,但是其意义却是非凡,同过此课程设计,让我了解了一些简单的管理软件的基本原理,更深刻的理解了汇编语言的特点,对汇编语言有了一个跟深层次的理解。1.3.3主要研究内容和功能 利用汇编

4、程序编写一个小型学生成绩管理程序,实现学生信息成绩的插入、修改、显示所有学生的各科成绩,并且可根据输入学生姓名插询该生的各科成绩,可统计所有成绩个各分数段的人数。2、运行环境 (软、硬件环境)硬件:8086以上CPU,内存256M以上。软件:WINDOWS操作系统,MASM,LINK汇编编译链接软件。 3、功能设计(功能模块及模块图)3.1各模块的主要功能3.1.1main主程序模块 用于对各种操作的调用,如插入、删除、显示所有学生的各科成绩等。3.1.2 Insert子程序插入模块用于实现对新增学生的插入,插入至学生文本中,使用时需要调用get_rec子程序实现从键盘输入一个学生的信息。3.

5、1.3get_rec子程序模块 主要被Insert子程序调用,用于从键盘输入一个学生的信息3.1.4 query子程序模块根据学生姓名查询学生的各科成绩,学生姓名由键盘输入,再从文件中一次比较找出要查询学生的信息。3.1.5 modify子程序模块 首先从键盘输入要修改的学生信息,在从学生文件中寻找要修改的学生姓名,并将要修改后的信息写入文件。3.1.6delete子程序模块由用户输入要修改学生的姓名,从学生文件中找出要删除的学生信息,将该学生的各项信息置为0,实现删除的操作。3.1.7 list子程序模块 用于显示学生文件中所有学生的各科成绩的信息,每次从文件读取一个学生的信息并显示。3.1

6、.8 coun子程序模块用于对学生各科成绩的各分数段的统计。4、详细设计4.1程序功能 程序运行时,在出现的主菜单中,按l键,将浏览学生的各科成绩;按i键后,将执行插入功能,可以插入新的学生成绩,按m键,键输入需要修改的学生成绩,也包括不修改的科目;按d键输入要删除的学生姓名,将使其成绩全部变成0;按q键输入 查询的学生的姓名,将其各科成绩显示出来;按下c键将按数学成绩分段结果。 以上功能单独运行可以实现,(即在进入菜单后 选择其中一项功能运行可以成功运行,在关闭后选择另一项功能可以 成功运行),但是在整体运行时得不到想要的结果。所以如果输入有误,按退格键后将会出错,但是此程序没有处理错误的功

7、能,因此再输入时要特别注意。注:此程序除了源程序外还需要一个学生文件,该程序命名为score.txt,该文件用于存放学生信息,在源程序中程序数据段中fname的值应与文件的存放位置一致。4.2各模块的程序流程图 N打开文件读一个记录读错?文件显示记录显示错误信息返回关闭文件打开文件置文件指针到文件末尾从终端接收用户输入记录记录写入文件关闭文件返回YN list 流程图 insert流程图 query流程图打开文件读一个记录是否为所寻找记录? 显示记录关闭文件返回NY Modify流程图打开文件读一个记录文件指针后退一个记录写入修改记录并关闭文件是否为修改的记录返回YN N coun流程图打开文

8、件读一个记录对所有成绩的分数段统计显示统计结果关闭文件指针到文件尾返回Y显示菜单输入一个字符call councall insertcall listcall querycall deletecall modify开始是l?是q?是d?是m?是C是i?结束是e?YYYYYYYNNNNNNN主程序流程图4.3本设计的重点、难点及解决方法4.3.1重点难点开始拿到课题感觉很简单,主要是因为以前C语言曾经做过类似的题,思路大概差不多,但是实际下笔写的时候,遇到的最大的困难对于一些系统调用存在很大的问题,对DOS和BIOS的系统调用还比较模糊,在使用时DOS和BIOS中的系统功能调用不是很熟悉,所以需

9、要先理解这些后,然后才正式开始写程序开始写好了程序的主干,实现了主要功能,在写插入、查询等功能时遇到了一些问题,但通过仔细琢磨和请教老师、同学,最终还是成功解决,完成程序后,就开始了程序的编译,找错、改错、链接等,但是程序有些地方还是不是很完善。4.3.2调试过程1)编译源文件,命名为 s.ASM。2)采用命令格式。MASM s.ASM将生成一个OBJ文件,检查源程序中的错误,并改正。3)键入连接命令:LINK cjgl.OBJ,回车,即可生成s.exe可执行文件。4)执行s.exe选择其一功能,能正常执行,在关闭后,在进入运行别的功能。5、总结通过对这学生成绩管理的的制作,使我对汇编语言的基

10、本知识的使用更加熟练,同时也增加了我对汇编语言的一些认识,在作业完成过程中通过和同学的交流,也增加了合作的技巧。通过查阅资料也学到了一些课本上没有的东西,拓宽了自己的知识面,增加了学好汇编语言的信心。 这不是第一次用汇编语言来设计一个小程序,平时做了很多实验,写了很多小程序。但这次是一个综合的程序,平时的很多程序都用到了。历时两周终于完成,其间有不少感触。这次课程设计中有很多源程序的子程序的源代码可以从资料中或获得,但有很多都需要我们仔细琢磨才能明白其中的原理,同时程序中需要调用大量的BIOS和DOS系统功能调用,如显示字符串的功能调用、光标设置的功能的调用、清屏的功能调用等,这些问题如不查询

11、资料就无法理解,因为上汇编语言基础时对这些DOS和BIOS的系统功能了解很少,所以我们需要查询DOS和BIOS功能的系统调用的基本信息。还有在一些循环结构设计上也有许多不能理解的地方,都需要加以深刻的理解才能将问题顺利的解决,多整个程序的理解也有了更进一步的了解。有时候遇到自己查资料和不能理解的地方时,自己不能解决时,先找同学讨论一下,会有意想不到的收获,有些问题就会迎刃而解,有时也会遇到比较顽固的问题,大家冥思苦想,也找不出一个令人满意的答案,但是通过询问老师,查阅更多的资料,问题也最终得到了解决。当这些问题得到解决时,心情是一种豁然开朗、柳暗花明又一村的旷达。这次课程设计的大部分程序,都可

12、以在书上找到,这对我们的程序设计很有帮助,从这些资料中,我们可以看出这个学生管理程序的基本主干,修改某些地方就可以实现改程序的基本功能,不可否认,本程序仍然存在不少缺点和不足,但通过这次的课程设计找出了自己在学习上的不足,有些地方仍然还存在许多问题,但是我相信通过努力,在以后的学习中会克服这些不足,达到熟练掌握汇编语言的目的!6、源程序data segmentmess1 db student grade management system,0ah,0dh,$mess2 db this is main menu,0ah,0dh,$mess3 db insert (i) name :,0ah,0d

13、h,$mess4 db modify (m) maths(a) :,0ah,0dh,$mess5 db delete (d) English(b) :,0ah,0dh,$mess6 db query (q) computer(c) :,0ah,0dh,$mess7 db count (c) Chinese(d) :,0ah,0dh,$mess8 db exit (e),0ah,0dh,$mess9 db *$mess10 db *$mess11 db name Ma En Co Ch,0ah,0dh,$mess13 db list (l) please input:,0ah,0dh,$ mes

14、s12 db maths 60 70 80 90 100,0ah,0dh,$err1 db there is not this student$err2 db file close wrong$fname db e:masm5score.txtbuffer1 db 23 dup(?)buffeer db 0ah,0dh,$buffer2 db 30 dup(?)buffer3 db 8 dup(0)count db 5handle dw ?del db 8 dup(0)x db ?data endsshow macro addrs ;显示字符串lea dx,addrs ;取得字符串的入口地址

15、mov ah,9 ;调用dos系统功能的9号功能 int 21hendmset_p1 macro a;设置光标位置(将光标设置在指定行第36列处)mov ah,2 ;调用BIOS系统功能2号功能mov dh,a mov dl,36mov bh,0 ;页号int 10hendmset_p2 macro ;设置光标位置(将光标位置设置在12行第2列处) mov ah,2 ;调用BIOS系统功能 mov dh,12 mov dl,2 mov bh,0 int 10hendmset_p3 macro ;设置光标位置(将光标位置设置在第一行第30列处) mov ah,2 mov dh,1 mov dl,

16、30 mov bh,0 int 10h ;调用BIOS系统功能号2号功能设置光标位置endmclear macro ;清除全屏 mov al,0 mov cl,0 mov ch,0 左上角坐标 mov dh,24 mov dl,79 mov bh,7 右下角坐标 mov ah,6 int 10h ;调用BIOS功能6号功能清除全屏endmclear1 macro ;清除定义靠左边的部分屏幕 mov al,0 mov bh,7 卷入行属性 mov ch,4 mov cl,36 mov dh,10 调用BIOS系统功能清楚定义靠左边的屏幕 mov dl,79 mov ah,6 int 10hend

17、mclear2 macro ;清除定义靠下边部分屏幕mov al,0 mov bh,7 卷入行属性 mov ch,12 mov cl,0 mov dh,24 mov dl,79 mov ah,7 int 10h; 调用BIOS系统功能7号功能endm newline macro ;输出换行符push ax push dx mov dl,0dh mov ah,2 调用DOS系统功能2号功能显示单字符输出 int 21h mov dl,0ah 输出换行符(其ACSII值为oah,odh) mov ah,2 int 21h pop dx pop axendm show_item macro addr

18、s ;定义显示学生信息的宏local iloop,w10 push bx push cx mov bx,0iloop: mov dl,addrsbx mov ah,2 调用DOS系统功能的2号功能显示字符 int 21h inc bx cmp bx,15 ;判断是否显示了15个字符 jl iloop mov cx,4w10: mov dl, mov ah,2 int 21h mov dl, mov ah,2 ;调用DOS系统功能的2号功能连续显示三个空格 int 21h mov dl, mov ah,2 int 21h mov dl,addrsbx mov ah,2 ;调用DOS系统功能的2号

19、功能显示一个字符 int 21h inc bx mov dl,addrsbx mov ah,2 ;调用DOS系统功能的2号功能显示一个字符 int 21h inc bx loop w10 newline pop cx pop bxendm getin macro addrs,count2 ;定义输入学生信息的宏local zeroit,lp,input_end,exit push bx push ax mov bx,0zeroit: mov addrsbx, inc bx cmp bx,15 jl zeroit mov bx,0lp: mov ah,1 ;调用DOS系统功能从键盘输入字符al中

20、并且显示字符 int 21h cmp al,0ah jz input_end cmp al,0dh ;判断字符是否为回车键 jz input_end mov addrsbx,al inc bx cmp bx,count2 ;判断是否输入够指定的字符 个数 jl lpinput_end: cmp al,0dh jz exit 判断是否为空格 cmp al,0ah jz exit mov ah,7 ;调用DOS系统功能的7号功能从键盘输入字符不显示字符 int 21h jmp input_endexit: pop ax pop bxendmcode segmentmain proc far ;主程

21、序段 assume cs:code,ds:data,es:datastart: mov ax,data mov ds,ax mov ah,0 ;调用BIOS系统功能的0号功能设置显示方式 mov al,3 ;以8025的彩色方式显示 int 10h clear ;清除全屏 show mess1 show mess2newline show mess13 show mess3 show mess4 show mess5 显示主菜单界面 show mess6 show mess7 show mess8 show mess9 show mess10 set_p3 ;调用宏设置光标位置w: mov a

22、h,7;调用DOS系统功能从键盘输入一个字符不显示 int 21h cmp al,i jnz n1 call insert ;若输入字符为i则调用insert子程序段 jmp wn1: cmp al,m jnz n2 call modify jmp wn2: cmp al,d jnz n3 call delete ;若输入字符为d则调用delete子程序段 jmp wn3: cmp al,q jnz n4 call query jmp wn4: cmp al,c jnz n6 call coun ;若输入字符为c则调用coun子程序段 jmp wn6: cmp al,l jnz n7 call

23、 list jmp wn7: cmp al,e ;输入字符为e则退出程序 jz exitf jmp wexitf: mov ah,4ch ;调用DOs系统功能的4Ch号功能输出结束码 int 21h ret main endpinsert proc near ;插入学生信息 push ax push bx push cx push dx mov dx,offset fname ;打开文件的路径的字符串入口地址给dx mov al,2 mov ah,3dh ;调用DOS系统功能的3dh号功能打开文件 int 21h mov bx,ax clear1 set_p1 4 call get_rec m

24、ov cx,0 ;调用DOS系统功能的42h号功能将文件指针移动到文件末尾 mov dx,0 mov al,2 mov ah,42h int 21h mov cx,23 ;调用DOS系统功能的40h号功能写文件 mov dx,offset buffer1 mov ah,40h int 21h mov ah,3eh ;调用DOS系统功能的3eh号功能关闭文件 int 21h set_p3 pop dx pop cx pop bx pop ax retinsert endpget_rec proc near ;从键盘输入获取学生信息段 push ax push bx getin buffer2,1

25、5 ;从键盘输入学生姓名 mov bx,0 mov cx,15continue: mov al,buffer2bx; mov buffer1bx,al ; 将从键盘输入的学生姓名写入buffer1中 inc bx ; loop continue set_p1 5 ;将光标设置在第五行36列处 getin buffer2,2 ;从键盘输入学生的数学成绩 mov al,buffer2 mov buffer1bx,al ;将从键盘输入的成绩写入buffer1中 inc bx mov al,buffer2+1 mov buffer1bx,al ;将从键盘输入的成绩写入buffer1中 inc bx s

26、et_p1 6 ;将光标设置在第6行36列处 getin buffer2,2 ;从键盘输入学生的英语成绩 mov al,buffer2 mov buffer1bx,al ;将从键盘输入的成绩写入buffer1中 inc bx mov al,buffer2+1 mov buffer1bx,al ;将从键盘输入的成绩写入buffer1中 inc bx set_p1 7 ;将光标设置在第7行36列处 getin buffer2,2 ;从键盘输入学生的计算机成绩 mov al,buffer2 mov buffer1bx,al ;将从键盘输入的成绩写入buffer1中 inc bx mov al,buf

27、fer2+1 mov buffer1bx,al ;将从键盘输入的成绩写入buffer1中 inc bx set_p1 8 ;将光标设置在第8行36列处 getin buffer2,2 ;从键盘输入学生的语文成绩 mov al,buffer2 mov buffer1bx,al ;将从键盘输入的成绩写入buffer1中 inc bx mov al,buffer2+1 mov buffer1bx,al ;将从键盘输入的成绩写入buffer1中 inc bx pop bx pop ax retget_rec endpquery proc near ;根据学生姓名查询学生信息 push ax push

28、bx 保护个寄存器的值 push cx push dx clear1 clear2 mov dx,offset fname mov al,2 mov ah,3dh ;调用DOS系统功能打开文件 int 21h mov bx,ax set_p2 getin buffer1,15 ;从键盘输入学生姓名 b: mov ah,3fh ;调用DOS系统功能的3fh号功能读取一个学生(23个字节)的信息 mov cx,23 mov dx,offset buffer2 int 21h cmp ax,0 ;判断文件是否读取完(ax=0则文件读取完毕) jz s1 ;读取完毕则退出 lea si,buffer2

29、 lea di,buffer1 mov cx,15 c: mov al,byte ptrsi cmp al,byte ptrdi ;判断输入的字符与文件中的姓名是否一致找出要查询的学生姓名 jnz b ;不匹配则继续从文件读取 inc si ;当前字符一致则继续比较下一个字符 inc di loop c mov buffer2+23,$ lea dx,mess11 mov ah,9 ;调用DOS的9号功能显示字符串 int 21h show_item buffer2 ;显示查询到的学生信息 jmp s2 ;显示学生信息后转至关闭文件处s1: set_p2 show err1 ;显示错误信息(没

30、有找到查询的学生)s2: mov ah,3eh ;调用DOS系统功能的3eh号功能关闭文件 int 21h set_p3 ;设置光标位置 pop dx pop cx pop bx 恢复个寄存器的值 pop ax retquery endpmodify proc near ;修改学生信息 push ax push bx push cx 保护各寄存器的值 push dx clear1 set_p1 4 ;将光标设置在第四行 mov dx,offset fname ;将要打开文件的的路径的字符串的入口地址送入dx中 mov al,2 mov ah,3dh ;调用DOs系统功能的3dh号功能打开文件

31、int 21h mov bx,ax mov handle,ax call get_rec ; 从键盘输入要修改学生的信息read: mov dx,offset buffer2 mov cx,23 ;读取的长度 mov ah,3fh ;调用DOs系统功能的3fh号功能读取文件 int 21h cmp ax,0 ; 判断文件是否读完 jz exit1 ;若读完表示没有找到要修改的学生,则退出 lea si,buffer2 lea di,buffer1 mov cx,15c5: mov dl,byte ptrsi cmp dl,byte ptrdi ;判断是否为要修改的学生的姓名 jnz read

32、inc si ;若当前字符匹配则继续比较下一字符 inc di loop c5 mov bx,handle mov ah,42h ;调用DOS系统功能移动文件指针是指针指向要修改的学生信息的位置 mov al,1 mov cx,0ffffh mov dx,-23 int 21h mov cx,23 mov dx,offset buffer1 mov ah,40h ;调用DOS系统功能40h号功能写文件,将要修改后的学生信息写入 int 21h jmp exit2exit1: clear2 set_p2 show err1 ;没有找到要修改的学生则显示错误信息exit2:mov ah,3eh ;

33、调用DOS的3eh号功能关闭文件 int 21h set_p3 pop dx pop cx pop bx pop ax retmodify endpdelete proc near ;删除学生信息 push ax push bx push cx push dx clear1 set_p1 4 mov dx,offset fname mov al,2 mov ah,3dh ; 调用DOS系统功能打开文件 int 21h mov bx,ax mov handle,ax ; 将文件代号赋值给handle getin buffer1,15 ;输入要删除学生的姓名read5: mov dx,offset buffer2 ; mov cx,23 ; 调用DOS的3fh号功能读取文件 mov ah,3fh ; int 21h ; cmp ax,0 ;判断文件是否读完 jz exit5 ;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号