学生成绩管理汇编语言课程设计报告_第1页
学生成绩管理汇编语言课程设计报告_第2页
学生成绩管理汇编语言课程设计报告_第3页
学生成绩管理汇编语言课程设计报告_第4页
学生成绩管理汇编语言课程设计报告_第5页
免费预览已结束,剩余21页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

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

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

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

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

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

7、能,因此再输 AM要特珈主意。注:此程/亨除了源程序外还需要一个学生文件,该程序命名为score, txt,该文件用 于存放学生信息,在源程序中程序数据段中fname的值应与文件的存放位置一致。4.2各模决的程序流程图query流程图是否为所寻找记Modify流程图coun流程图对所有成绩的介初段统计主程序流程图4. 3本设计的重点、难点及解决方法4.3.1开始拿到课题感觉很简单,主要是因为以前c语言曾经做过类似的题,思、路大概差 不多,但是实际下笔写的时候,遇到的最大的困难对于一些系统调用存在很大的问题, 对DOS和BIOS的系统调用还比较模糊,在使用时DOS和BIOS中的系统功能调用不是很

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

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

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

11、暗花明又一村的旷达。show macro addrs;显示字符串这次课程设计的大部分程序,都可以在书上找到,这对我们的程序设计很有帮助, 从这些资料中,我们可以看出这个学生管理程序的基本主干,修改某些地方就可以实现 改程序的基本功能,不可否认,本程序仍然存在不少缺点和不足,但通过这次的课程设 计找出了自己在学习上的不足,有些地方仍然还存在许多问题,但是我相信通过努力, 在以后的学习中会克月睡些不足,达到熟练掌握汇编语言的目的!6、源程序data segmentmessldbstudent grade management system,, Oah, Odh,' S'mess2d

12、b' this is main menu', Oah, Odh,' $mess3db' insert (i)name:', Oah, Odh,' S'mess4db' modify (m)maths (a):, Oah, Odh,' $'mess5db' delete (d)English(b) :, Oah, Odh,' $'mess6dbquery (q)computer(c) :, Oah, Odh, $mess7db' count (c)Chinese(d) :, Oah,

13、Odh,' $mess8db' exit (e)', Oah, Odh, $'mess9dbmesslOdbmesslldb'nameMa En Co Ch', Oah, Odh,' $'messl3db' list (1)please input:', Oah, Odh,'messl2db'maths <60 <70 <80 <90<100', Oah, Odh,'errldb'there is not this student$,err2db

14、'file close wrong$'fnamedb“e:rnasm5score. txtbufferl db 23 dup(?) buffeer db Oah, Odh,' $' buffer2 db 30 dup(?) buffer3 db 8 dup('O') count db 5 handle dw ?deldb 8 dup (' 0,)xdb ?data endslea dx, addrs;取得字符串的入口地址mov ah, 9;调用dos系统功能的9号功能int 21h endmset_pl macro a;设置光标位置(将光

15、标设置在指定行第36列处)mov ah, 2 ;调用BIOS系统功能2号功能 mov dh, a mov dl, 36 mov bh, 0 ;页号 int lOh endmset_p2 macro ;设置光标位置(将光标位置设置在12行第2列处)mov ah, 2 ;调用BIOS系统功能mov dh, 12mov dl, 2mov bh, 0 int lOh endmset_p3 macro ;设置光标位置(将光标位置设置在第一行第30列处) mov ah, 2 mov dh, 1 mov dl, 30 mov bh, 0int lOh;调用BIOS系统功能号2号功能设置光标位置endmcle

16、ar macro ;清除全屏mov al, 0mov cl, 0 mov ch, 0 r左上角坐标mov dh, 2Tmov dl, 791mov bh, 7 J 右下角坐标mov ah, 6int lOh;调用BIOS功能6号功能清除全屏endm clearl macro ;清除定义靠左边的部分屏幕mov al, 0mov bh, 7卷入行属性mov ch, 4 、mov cl, 36mov dh, 10 l 调用BIOS系统功能清楚定义靠左边的屏幕mov dl, 79mov ah, 6int lOh Jendm clear2 macro ;清除定义靠下边部分屏幕mov al, 0 Amov

17、 bh, 7卷入行属性mov ch, 12mov cl, 0 Imov dh, 24 'mov dl, 79mov ah, 7int lOh; J 调用BIOS系统功能7号功能 endmnewline macro;输出换行符push axpush dxmov dl, Odlmov ah, 2调用DOS系统功能2号功能显示单字符输出int 21hmov dl, Oal输出换行符(其ACSH值为oah, odh)mov ah, 2int 21h Jpop dxpop axendm show_item macro addrs ;定义显示学生信息的宏local iloop, wlOpush b

18、xpush ex mov bx, 0 Hoop: mov dl,addrsEbxmov ah, 2 1 调用DOS系统功能的2号功能显示字符int 21h|inc bxJemp bx, 15;判断是否显示了 15个字符jl Hoop mov ex, 4 wlO: mov dlj、 mov ah, 2 int 21h mov dl, ,mov ah, 2;;调用DOS系统功能的2号功能连续显示三个空格int 21hmov dl,''mov ah, 2int 21h Jmov dl, addrs b:Cmov ah, 2_;调用DOS系统功能的2号功能显示一个字符int 21h i

19、nc bx _ mov dl, addrsbxmov ah, 2 H ;调用DOS系统功能的2号功能显示一个字符 int 21h-inc bx 一 loop wlO newline pop ex pop bx endmget in macro addrs, count2;定义输入学生信息的宏local zeroit, Ip, input_end, exit push bxpush ax mov bx, 0zeroit: mov addrsbx,' inc bx cmp bx, 15 jl zeroit mov bx, 0Ip: mov ah,l;调用DOS系统功能从键盘输入字符al中并

20、且显示字符int 21h cmp al, Oah jz input_endcmp al, Odh |;判断字符是否为回车键jz input_end| mov addrsbx, alinc bx cn5) bx, count 2;判断是否输入够指定的字符个数jl 1Pinput_end: cmp al, Oqhjz exit L判断是否为空格cmp al, Oah jz exit 一mov ah, 7;调用DOS系统功能的7号功能从键盘输入字符不显示字符int 21h jmp input_endexit: pop ax pop bxendm code segmentmain proc far ;

21、主程序段assume cs:code, ds:data, es:datastart: mov ax, datamov ds, axmov ah, 0 ;调用BIOS系统功能的0号功能设置显示方式mov al, 3>以80 X 25的彩色方式显示int lOhclear;清除全屏show messlshow mess2newlineshow messl3show mess3show mess4显示主菜单界面show mess5show mess6w:show mess7 show mess8 show mess9 J show messlO set_p3 mov ah, 7 int 21h

22、 cmp al,' i jnz nl call insert;调用宏设置光标位置;调用DOS系统功能从键盘输入一个字符不显示;若输入字符为i则调用insert子程序段jmp w nl: cw al,'m' jnz n2 call modify jmp w n2: cmp al,'d' jnz n3call delete;若输入字符为d则调用delete子程序段jmp w n3: cw al,' q'jnz n4 call query jmp w n4: cmp al,J c jnz n6 call coun;若输入字符为c则调用coun子

23、程序段jmp wn6: cmp al,? T jnz n7 call list jmp w;输入字符:为e则退出程序;调用DOs系统功能的4Ch号功能输出结束码n7: cmp al,' e' jz exitf jmp wexitf:mov ah, 4ch int 21h retmain endpinsert proc near;插入学生信息push axpush bxpush expush dxmov dx, offset fname;打开文件的路径的字符串入口地址合dxmov al, 2mov ah, 3dh;调用DOS系统功能的3dh号功能打开文件int 21h mov b

24、x, ax clearl set_pl 4 call get_recmov ex, 0;调用DOS系统功能的42h号功能将文件指针移动到文件末尾mov dx, 0 mov al, 2 mov ah, 42h int 21hmov ex, 23;调用DOS系统功能的40h号功能写文件mov dx, offset bufferlmov ah, 40hint 21h;调用DOS系统功能的3eh号功能关闭文件mov ah, 3eh int 21h set_p3 pop dx pop ex pop bx pop axinsert endpget_rec proc nearpush axpush bxge

25、tin buffer2,15;从键盘输入获取学生信息段;从键盘输入学生姓名mov bx, 0mov ex, 15continue: mov al, buffer?Ek mov bufferlbx, al > inc bxJloop continue set_pl 5将从键盘输入的学生姓名写入bufferl中;将光标设置在第五行36列处get in buffer2, 2;从键盘输入学生的数学成绩mov al, buffer2mov bufferlbx, al inc bxmov al, buffer2+lmov bufferlbx, al;将从键盘输入的成绩写入bufferl中;将从键盘输

26、入的成绩写入bufferl中inc bxset_pl 6;将光标设置在第6行36列处get in buffer2, 2;从键盘输入学生的英语成绩mov al, buffer2mov bufferl bx, al;将从键盘输入的成绩写入buffer 1中inc bxmov al, buffer2+lmov bufferl bx, al;将从键盘输入的成绩写入bufferl中inc bxset_pl 7getin buffer2, 2;将光标设置在第7行36列处;从键盘输入学生的计彝机成绩mov al, buffer2mov bufferl bx, al;将从键盘输入的成绩写入buffer 1中i

27、nc bx;将从键盘输入的鹿责写入bufferl中;将光标设置在第8行36列处;从键盘输入学生的语文成绩mov al, buffer2+l mov bufferlbx, al inc bx set_pl 8 getin buffer2, 2 mov al, buffer2mov bufferl bx, al;将从键盘输入的成绩写入bufferl中inc bxmov al, buffer2+l;将从键盘输入的成绩写入bufferl中mov bufferlbxj, alinc bxpop bxpop axretget_rec endpquery proc near ;根据学生姓名查询学生信息pus

28、h axpush bx保护个寄存器的值push ex |push dxclearlclear2mov dx, offset fname、mov al, 2mov ah, 3dh»调用DOS系统功能打开文件int 21hmov bx, axJset_p2get in bufferl, 15 ;从键盘输入学生姓名b: mov ah, 3fh ;周用DOS系统功能的3fh号功能读取一个学生(23个字节)的信息 mov ex, 23>mov dx, offset bu: ?fer2int 21hcw ax,0;判断文件是否读取完(ax=O则文件读取完毕)jz si;读取完毕则退出lea

29、 si, buffer2lea di, buffer1mov ex, 15mov al, byte ptrEsiJemp al, byte ptrdi;判断输入的字符与文件中的姓名是否一致找出要查询的学生姓 名jnz b;不匹配则继续从文件读取inc si;当前字符一致则继续比较下一个字符inc di loop c mov buffer2+23,' $'lea dx, messll mov ah, 9int 21h;调用DOS的9号功能显示字符串show_item buff er 2 ;显示查询到的学生信息jnp s251: set_p2show errl52: mov ah,

30、 3ehint 21hset_p3 pop dx pop ex pop bx pop ax retquery endp显示学生信息后转至关闭文件处;显示错误信息(没有找到查询的学生);调用DOS系统功能的3eh号功能关闭文件;设置光标位置恢复个寄存器的值modify proc near ;修改学生信息push ax 、push bxpush ex r保护各寄存器的值push dxclearlset_pl 4;将光标设置在第四行mov dx, offset fname ;将要打开文件的的路径的字符串的入口地址送入dx中 mov al, 2mov ah, 3dh;调用DOs系统功能的3dh号功能打

31、开文件int 21hmov bx, axmov handle, axcall get_rec;从键盘输入要修改学生的信息read:mov dx, offset buffer2mov ex, 23;读取的长度mov ah, 3fh;调用DOs系统功能的3fh号功能读取文件int 21hemp ax, 0;判断文件是否读完jz exitl;若读完表示没有找到要修改的学生,则退出lea si, buffer2lea di, bufferlmov ex, 15c5:mov dl, byte ptrsi_emp dl, byte ptrEdiZ ;判断是否为要修改的学生的姓名 jnz readinc s

32、i;若当前字符匹配则继续比较下一字符inc diloop c5mov bx, handlemov ah,42h 、;调用DOS系统功能移动文件指针是指针指向要修改的学生 信息的位置mov al, 1 Imov ex, Offffhmov dx, -23)int 21hmov ex, 23mov dx, offset bufferlmov ah, 40h1;调用DOS系统功能40h号功能写文件,将要修改后的学生信息写入int 21hJjnp exit2 exitl: clear2 set_p2 show errl;没有找到要修改的学生则显示错误信息exit2:mov ah, 3eh;调用DOS的

33、3eh号功能关闭文件int 21h set_p3 pop dx pop ex pop bx pop ax ret modify endpdelete proc near ;删除学生信息push axpush bx push ex push dx clearl set_pl 4 mov dx, offset fname mov al, 2mov ah, 3dh >调用DOS系统功能打开文件int 21h mov bx, ax mov handle, ax ;将文件代号赋值给handle get in bufferl, 15;输入要删除学生的姓名read5:mov dx, offset bu

34、ffer2 ;mov ex, 23” ; 调用DOS的3fh号功能读取文件mov ah, 3fh;int 21h;cmp ax, 0;判断文件是否读完jz exito;若文件读取完毕则推出该子程序lea si, buffer2lea di, bufferlmov ex, 15c6:mov dl, byte ptrsi.enp dl, byte ptrdi;判断字符是否匹配(找到要删除学生在文件中的位置) jnz reado inc si inc di loop c6 mov bx, handlemov ah, 42h)调用DOS系统功能移动文件指针,是指针移动到要删除学生的位置处mov al,

35、 1>mov ex, Offffhmov dx, -8)int 21hmov ex, 8mov dx, offset delmov ah, 40h;调用DOS系统功能写文件(将要删除的学生记录处全部置为0)int 21h jnp exit6 exit5: clear2set_p2show errl;没有找到输入的学生姓名则输出错误信息exit6:mov ah, 3eh;关闭文件int 21hset_p3 pop dxpop ex pop bxpop axdelete endplist proc near;显示文件中所有学生信息push axpush bxpush ex push dxcl

36、earl ;清屏clear2set_p2show mess 11mov dx, offset fname、mov al, 2mov ah, 3dh> ;打开文件int 21hmov bx, ax)again:mov dx, offset bufferl ;调用DOS系统功自缄取一个学生的信息(读取23个字 节)mov ex, 23mov ah,3fh I ;调用DOS系统功能读取文件int 21hJc呻ax, 0;判断文件是否读完jz pshow_item bufferl;显示读取到的一个学生的信息jmp again P:mov ah, 3eh ;调用DOS系统功能关闭文件int 21hset_p3 pop dx pop ex pop bx pop ax ret list endpcoun proc near;统计各科成绩各分数段的人数push ax clear2 set_p2 show mess 12mov dx, offset fname ;调用DOS系统功能打开文件mov ah, 3dhint 21hmov bx, axmov handle, axmov si, 15mov buffer3+6, * a' c3:call numbermov ex,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论