《汇编语言课程设计---学生成绩管理程序(共37页).docx》由会员分享,可在线阅读,更多相关《汇编语言课程设计---学生成绩管理程序(共37页).docx(37页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上郑重声明:本篇文档为从百度文库中下载的经过原文修改后的!目 录第一章 设计课题概述1.1 课程设计目的当今社会是一个信息时代的社会,计算机的使用也是越来越普遍了,各行业在管理职员都采用了一些管理软件,不管是银行、学校,大大小小的各种企业,都是使用的相应的 管理软件管理企业的各种信息,我选择的这个汇编语言课程设计题就是一个简单学生信息管理程序,虽然只能处理一些简单操作,但是其意义却是非凡,同过此课程设计,让我了解了一些简单的管理软件的基本原理,更深刻的理解了汇编语言的特点,对汇编语言有了一个跟深层次的理解。利用汇编程序编写一个小型学生成绩管理程序,实现学生信息成绩的插入
2、、修改、显示所有学生的各科成绩,并且可根据输入学生姓名插询该生的各科成绩,可统计所有成绩个各分数段的人数。1.2设计内容及要求设计一个学生管理程序,主要实现以下功能(1)各科成绩的录入、修改、和删除。(2)按姓名查询每个学生哥们成绩。(3)显示查询结果(4)统计各分数段的成绩的人数个分数段的人数。程序运行时,在出现的主菜单中,按l键,将浏览学生的各科成绩;按i键后,将执行插入功能,可以插入新的学生成绩,按m键,键输入需要修改的学生成绩,也包括不修改的科目;按d键输入要删除的学生姓名,将使其成绩全部变成0;按q键输入 查询的学生的姓名,将其各科成绩显示出来;按下c键将按数学成绩分段结果。第二章
3、总体设计2.1 总体设计思路(1)各科成绩的录入、修改、和删除。(2)按姓名查询每个学生各科成绩。(3)显示查询结果(4)统计各分数段的成绩的人数个分数段的人数。程序运行时,在出现的主菜单中,按l键,将浏览学生的各科成绩;按i键后将执行插入功能,可以插入新的学生成绩,按m键,键输入需要修改的学生成绩,也包括不修改的科目;按d键输入要删除的学生姓名,将使其成绩全部变成0;按q键输入 查询的学生的姓名,将其各科成绩显示出来;按下c键将按数学成绩分段结果。2.2 各版块功能描述main主程序模块用于对各种操作的调用,如插入、删除、显示所有学生的各科成绩等。Insert子程序插入模块用于实现对新增学生
4、的插入,插入至学生文本中,使用时需要调用get_rec子程序实现从键盘输入一个学生的信息。get_rec子程序模块 主要被Insert子程序调用,用于从键盘输入一个学生的信息query子程序模块根据学生姓名查询学生的各科成绩,学生姓名由键盘输入,再从文件中一次比较找出要查询学生的信息。modify子程序模块 首先从键盘输入要修改的学生信息,在从学生文件中寻找要修改的学生姓名,并将要修改后的信息写入文件。delete子程序模块由用户输入要修改学生的姓名,从学生文件中找出要删除的学生信息,将该学生的各项信息置为0,实现删除的操作。list子程序模块 用于显示学生文件中所有学生的各科成绩的信息,每次
5、从文件读取一个学生的信息并显示。count子程序模块用于对学生各科成绩的各分数段的统计。第三章 详细设计3.1 程序功能设计程序运行时,在出现的主菜单中,按l键,将浏览学生的各科成绩;按i键后,将执行插入功能,可以插入新的学生成绩,按m键,键输入需要修改的学生成绩,也包括不修改的科目;按d键输入要删除的学生姓名,将使其成绩全部变成0;按q键输入 查询的学生的姓名,将其各科成绩显示出来;按下c键将按数学成绩分段结果。 以上功能单独运行可以实现,(即在进入菜单后 选择其中一项功能运行可以成功运行,在关闭后选择另一项功能可以 成功运行),但是在整体运行时得不到想要的结果。所以如果输入有误,按退格键后
6、将会出错,但是此程序没有处理错误的功能,因此再输入时要特别注意。注:此程序除了源程序外还需要一个学生文件,该程序命名为score.txt,该文件用于存放学生信息,在源程序中程序数据段中fname的值应与文件的存放位置一致。3.2各模块程序详细流程显示错误信息显示记录文件读错?读一个记录打开文件NY返回关闭文件记录写入文件从终端接收用户输入记录置文件指针到文件末尾打开文件关闭文件返回 Query流程图Modify流程图Count流程图主程序流程图3.3 源代码及注释data segmentmess1 db student grade management system,0ah,0dh,$mess
7、2 db this is main menu,0ah,0dh,$mess3 db insert (i) name :,0ah,0dh,$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
8、 En Co Ch,0ah,0dh,$mess13 db list (l) please input:,0ah,0dh,$ mess12 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(
9、0)x db ?data endsshow macro addrs lea dx,addrs mov ah,9 int 21hendmset_p1 macro amov ah,2 mov dh,a mov dl,36mov bh,0 int 10hendmset_p2 macro mov ah,2 mov dh,12 mov dl,2 mov bh,0 int 10hendmset_p3 macro mov ah,2 mov dh,1 mov dl,30 mov bh,0 int 10h endmclear macro mov al,0 mov cl,0 mov ch,0 mov dh,24
10、mov dl,79 mov bh,7 mov ah,6 int 10h endmclear1 macro mov al,0 mov bh,7 mov ch,4 mov cl,36 mov dh,10 mov dl,79 mov ah,6 int 10hendmclear2 macro mov al,0 mov bh,7 mov ch,12 mov cl,0 mov dh,24 mov dl,79 mov ah,7 int 10h; endm newline macro push ax push dx mov dl,0dh mov ah,2 int 21h mov dl,0ah mov ah,2
11、 int 21h pop dx pop axendm show_item macro addrs local iloop,w10 push bx push cx mov bx,0iloop: mov dl,addrsbx mov ah,2 int 21h inc bx cmp bx,15 jl iloop mov cx,4w10: mov dl, mov ah,2 int 21h mov dl, mov ah,2 int 21h mov dl, mov ah,2 int 21h mov dl,addrsbx mov ah,2 int 21h inc bx mov dl,addrsbx mov
12、ah,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 int 21h cmp al,0ah jz input_end cmp al,0dh jz input_end mov addrsbx,al inc bx cmp bx,count2 jl l
13、pinput_end: cmp al,0dh jz exit cmp al,0ah jz exit mov ah,7 int 21h jmp input_endexit: pop ax pop bxendmcode segmentmain proc far assume cs:code,ds:data,es:datastart: mov ax,data mov ds,ax mov ah,0 mov al,3 int 10h clear show mess1 show mess2newline show mess13 show mess3 show mess4 show mess5 show m
14、ess6 show mess7 show mess8 show mess9 show mess10 set_p3 w: mov ah,7 int 21h cmp al,i jnz n1 call insert jmp wn1: cmp al,m jnz n2 call modify jmp wn2: cmp al,d jnz n3 call delete jmp wn3: cmp al,q jnz n4 call query jmp wn4: cmp al,c jnz n6 call coun jmp wn6: cmp al,l jnz n7 call list jmp wn7: cmp al
15、,e jz exitf jmp wexitf: mov ah,4ch int 21h ret main endpinsert proc near push ax push bx push cx push dx mov dx,offset fname mov al,2 mov ah,3dh int 21h mov bx,ax clear1 set_p1 4 call get_rec mov cx,0 mov dx,0 mov al,2 mov ah,42h int 21h mov cx,23 mov dx,offset buffer1 mov ah,40h int 21h mov ah,3eh
16、int 21h set_p3 pop dx pop cx pop bx pop ax retinsert endpget_rec proc near push ax push bx getin buffer2,15 mov bx,0 mov cx,15continue: mov al,buffer2bx; mov buffer1bx,al ; inc bx ; loop continue set_p1 5 getin buffer2,2 mov al,buffer2 mov buffer1bx,al inc bx mov al,buffer2+1 mov buffer1bx,al inc bx
17、 set_p1 6 getin buffer2,2 mov al,buffer2 mov buffer1bx,al inc bx mov al,buffer2+1 mov buffer1bx,al inc bx set_p1 7 getin buffer2,2 mov al,buffer2 mov buffer1bx,al inc bx mov al,buffer2+1 mov buffer1bx,al inc bx set_p1 8 getin buffer2,2 mov al,buffer2 mov buffer1bx,al inc bx mov al,buffer2+1 mov buff
18、er1bx,al inc bx pop bx pop ax retget_rec endpquery proc near push ax push bx push cx push dx clear1 clear2 mov dx,offset fname mov al,2 mov ah,3dh int 21h mov bx,ax set_p2 getin buffer1,15 b: mov ah,3fh mov cx,23 mov dx,offset buffer2 int 21h cmp ax,0 jz s1 lea si,buffer2 lea di,buffer1 mov cx,15 c:
19、 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 s2: mov ah,3eh int 21h set_p3 pop dx pop cx pop bx pop ax retquery endpmodify proc near push ax push bx pus
20、h cx push dx clear1 set_p1 4 mov dx,offset fname mov al,2 mov ah,3dh int 21h mov bx,ax mov handle,ax call get_rec read: mov dx,offset buffer2 mov cx,23 mov ah,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 inc si inc di loop c5 m
21、ov bx,handle mov ah,42h mov al,1 mov cx,0ffffh mov dx,-23 int 21h mov cx,23 mov dx,offset buffer1 mov ah,40h int 21h jmp exit2exit1: clear2 set_p2 show err1 exit2:mov ah,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
22、dx,offset fname mov al,2 mov ah,3dh int 21h mov bx,ax mov handle,ax getin buffer1,15 read5: mov dx,offset buffer2 mov cx,23 mov ah,3fh int 21h cmp ax,0 jz exit5 lea si,buffer2 lea di,buffer1 mov cx,15 c6: mov dl,byte ptrsi cmp dl,byte ptrdi jnz read5 inc si inc di loop c6 mov bx,handle mov ah,42h mo
23、v al,1 mov cx,0ffffh mov dx,-8 int 21h mov cx,8 mov dx,offset del mov ah,40h int 21h jmp exit6exit5: clear2 set_p2 show err1 exit6: mov ah,3eh int 21h set_p3 pop dx pop cx pop bx pop ax retdelete endplist proc near push ax push bx push cx push dx clear1 clear2 set_p2 show mess11 mov dx,offset fname
24、mov al,2 mov ah,3dh int 21h mov bx,axagain: mov dx,offset buffer1 mov cx,23 mov ah,3fh int 21h cmp ax,0 jz p show_item buffer1 jmp againp: mov ah,3eh int 21h set_p3 pop dx pop cx pop bx pop ax retlist endpcoun proc near push ax clear2 set_p2 show mess12 mov dx,offset fname mov ah,3dh int 21h mov bx,
25、ax mov handle,ax mov si,15 mov buffer3+6,a c3:call number mov cx,0 mov dx,0 mov al,0 mov ah,42h int 21h add si,2 cmp si,23 jl c3 mov bx,handle “ mov ah,3eh int 21h set_p3 pop ax retcoun endpnumber proc push bx push cx read0: mov dx,offset buffer2 mov cx,23 mov ah,3fh int 21h cmp ax,0 jz c1 mov dl,bu
26、ffer2+si cmp dl,6 jl five cmp dl,7 jl six cmp dl,8 jl seven cmp dl,9 jl eight inc buffer3+4 jmp read0eight: inc buffer3+3 jmp read0seven: inc buffer3+2 jmp read0six: inc buffer3+1 jmp read0five: inc buffer3 jmp read0 c1: mov cx,8 a: mov dl, mov ah,2 int 21h loop a mov dl,buffer3+6 mov ah,2 int 21h m
27、ov dl,: mov ah,2 int 21h mov bx,0 a0: mov dl,buffer3+bx mov ah,2 int 21h mov buffer3+bx,0 inc bx mov cx,4 c2: mov dl, mov ah,2 int 21h loop c2 cmp bx,5 jnz a0 newline pop cx pop bx ret number endpcode ends end start第四章 调试过程及结果4.1 显示所有成绩图 4-14.2 插入成绩图 4-2-1图 4-2-24.3 查询学生成绩图 4-34.4 删除学生成绩图 4-4-1图 4-4
28、-24.5 修改学生成绩图 4-5-1图 4-5-24.6输出数学成绩图 4-6第五章 总结通过对这学生成绩管理的的制作,使我对汇编语言的基本知识的使用更加熟练,同时也增加了我对汇编语言的一些认识,在作业完成过程中通过和同学的交流,也增加了合作的技巧。通过查阅资料也学到了一些课本上没有的东西,拓宽了自己的知识面,增加了学好汇编语言的信心。 这不是第一次用汇编语言来设计一个小程序,平时做了很多实验,写了很多小程序。但这次是一个综合的程序,平时的很多程序都用到了。历时两周终于完成,其间有不少感触。这次课程设计中有很多源程序的子程序的源代码可以从资料中或获得,但有很多都需要我们仔细琢磨才能明白其中的原理,同时程序中需要调用大量的BIOS和DOS系统功能调用,如显示字符串的功能调用、光标设置的功能的调用、清屏的功能调用等,这些问题如不查询资料就无法理解,因为上汇编语言基础时对这些DOS和BIOS的系统功能了解很少,所以我们需要查询DOS和BIOS功能的系统调用的基本信息。还有在一些循环结构设计上也有许多不能理解的地方,都需要加以深刻的理解才能将问题顺利的解决,多整个程序的理解也有了更进一步的了解。有时候遇到自己查资料和不能理解的地方时,自己不能解决时,先找同学讨论一下,会有意想不到的收获,有些问题就会迎刃而解,有时也会遇到比较顽固的问题,大家冥思苦想,也找不出一个