汇编语言版学生管理系统演示教学

合集下载

汇编语言-学生信息管理系统实验报告(含源代码)

汇编语言-学生信息管理系统实验报告(含源代码)

北京邮电大学计算机学院《微机原理与接口技术》学生信息管理系统实验报告姓 名: 许伟林学 号: 08211306指导教师: 倪晖日 期: 2010/12/22内容目录一、实验目的 (3)二、实验环境 (3)三、实验任务 (3)四、实验设计 (3)四.一、关键数据结构 (3)学生信息 (3)排序序列 (4)菜单跳转表 (4)四.二、关键子程序和宏定义 (4)部分宏定义 (4)部分子程序 (5)四.三、子程序调用关系图 (5)0、输入学生信息 (5)1、按学号排序输出 (6)2、按成绩排序输出 (6)3、统计并输出平均成绩 (6)4、统计并输出各分数段人数 (6)四.四、程序源代码 (6)五、程序运行效果 (25)六、实验总结 (28)一、实验目的掌握8086汇编程序设计的基本方法了解用汇编语言写程序的麻烦,坚定学好高级语言的信心二、实验环境Windows XPMASMPlus 1.2集成实验环境三、实验任务编写学生信息管理系统,详细要求见课本119页。

四、实验设计四.一、关键数据结构学生信息student struc;学生的数据结构,32字节,2^5,便于计算地址xname db14dup('$')class db14dup('$')num dw0score dw0;为保存1位小数,以10倍值保存student endsstu_size equ 32;32=2^5stu_db student100dup(<'x','y',6,500>);100名学生的空间stu_num db0;已保存的学生人数学生信息结构体长32字节,即2^5,便于计算地址。

姓名和班级以字符串保存,限长13字节;学号和成绩以16位整数保存。

为精确到1位小数,成绩域保存的是真实成绩的10倍值。

程序申请了保存100名学生信息的连续内存空间,并以stu_num变量记录已输入的学生人数。

基于汇编语言学生成绩管理系统之欧阳历创编

基于汇编语言学生成绩管理系统之欧阳历创编

学生成果管理系统目录设计内容1设计目的2设计要求2设计阐发2子法度阐发6操纵说明11法度代码12总结42参考文献42设计内容设计一个学生成果管理法度,要求能实现以下功能:1)各科成果的录入,修改和删除。

2)按姓名查询每个学生各门课的成果。

3)显示查询结果。

4)统计个分数段的人数。

5)打印学生成果。

设计目的用汇编数据的录入、修改和删除操纵。

设计要求学习如何用汇编语言进行数据处理。

设计阐发1.总体结构整个法度采取主法度调用子法度的办法。

主法度完成菜单的显示,子法度完成一个自力功能办法的实现。

各子法度的实现办法简要描述如下:1)设计INSERT(录入)子法度,先掀开文件SCORE.TXT,并置文件指针到文件尾,然后调用GET_REC子法度接受用户的输入,再把用户的输入写入文件,最后关闭文件前往主法度。

2)设计Delete(删除)子法度,先掀开文件,再调用宏GETIN获得要删除的学生的姓名,然后读文件中的记录,直到其记录的名字与所输入的名字相同为止,把文件指针后退8个字符(即4门课成果所占的空间),写入8个“0”字符,关闭文件前往主法度。

3)设计List(浏览)子法度时,先掀开文件,然后读一个记录,并通过调用宏SHOW_ITEM将其显示到屏幕上,入文件指针没有达到文件尾,则继续读记录并显示,当指针达到文件尾时,则关闭文件前往主法度。

4)设计Modify(修改)子法度时,先掀开文件SCORE.TXT,通用GER_REC获得要修改的记录,然后读文件中的记录,并与用户输入的记录做比较(只比较记录中的名字部分),若不合则吨下一条记录,若相同则将文件指针后退23个字符(一个记录为23个字符的长度),然后把用户输入的记录写入文件,最后关闭文件前往主法度。

5)设计Count(统计)子法度时,先掀开文件,然后读记录,比较记录的第16个字符,数学成果的高位),并统计,直到文件指针达到文件尾,最后关闭文件调用宏SHOW_ITEM 显示统计结果,返会主法度。

汇编语言课程设计学生成绩管理系统

汇编语言课程设计学生成绩管理系统

汇编语言课程设计课题名称:学生成绩管理系统小组成员:班级:指导教师:日期:2014.06.18 一、选题目的:熟悉汇编语言程序设计的实验环境,主要是熟悉汇编程序的基本结构,编译、连接和调试等基本操作。

利用该题目进行汇编语言程序设计运用的综合性训练,综合运用汇编语言循环程序和子程序编程方法,巩固以及提高汇编语言程序设计能力运用水平,为后续的开发和实验工作打好基础。

二、功能设计:编制一个程序,要求接收从键盘收入的一个班的学生成绩,并存放于50字节的GRADE 数组中,其中GRADE+N保存学号N+1的学生成绩,然后根据GRADE得学生成绩,把学生名次填入50自己的RANK数组中,其中RANK+N的内容是学号N+1学生的名次,在按学号把学生顺序学生名次显示出来。

三、算法流程图:四、运行结果:从键盘输入三个学生的姓名和成绩,按学生成绩升序排序,并显示出排序结果五、程序源代码:data segmentinfor0 db 0ah,0dh,'sort=$'infor1 db 0ah,0dh,'input name:$'infor2 db 0ah,0dh,'input score:$'n equ 8 姓名长度m equ 4 成绩长度(3位+回车符)p equ 3 输入的人数q equ 3 成绩的位数buff1 db n,?,n dup(0),'$' 姓名缓冲区,加$字符以便输入时用 buff2 db m,?,m dup(0),'$' 成绩缓冲区sname db p dup(n+1 dup(0)) 保存姓名score1 dw p dup(m+1 dup(0)) 保存成绩score2 dw p dup(m+1 dup(0))mingci db p dup(0) 名次x dw ?sign1 dw 0sign2 dw 0cont db '1' 计数data endscode segmentassume cs:code, ds:datamain proc farstart:mov ax,datamov ds,axmov es,axmov bx,0mov cx,0call inputcall sortcall printmov ah,4chint 21hmain endpinput procinc bx 输入次数统计cmp bx,p 输入次数>p?ja exitlea dx,infor1 显示提示2mov ah,9int 21hlea dx,buff1 输入姓名mov ah,10int 21hmov al,buff1+1 实际输入个数——a1add al,2 +2.包含bufferl的0、1号单元mov ah,0mov si,ax 回车0d所在位置,跟在最后一个字符后 mov buff1[si],0 将0d换为0,便于输出显示lea dx,infor2 显示提示2mov ah,9int 21hlea dx,buff2 输入成绩mov ah,10int 21hmov al,buff2+1 实际输入个数add al,2 个数+2,包含0、1单元,为找到0dmov ah,0mov si,axmov buff2[si],0 将0d换为0,便于输出显示mov mingci[bx-1],bl bx为输入次数,保存输入的次序cmp bx,1 第一次输入转let1jz let1add sign1,n+1 姓名间隔为n+1add sign2,q 成绩间隔为qlet1: 子程序嵌套call copyjmp inputexit:retinput endpcopy procmov cx,n+1 姓名长度+3(包含$)lea si,buff1+2lea di,sname 姓名传递到snameadd di,sign1 加上间隔值cldrep movsbmov cx,nmov ax,'$' 用$覆盖姓名区,清除已输入的姓名 lea si,buff2+2lea di,score1 成绩传递到score1add di,sign2 加上间隔符cldrep movsblea si,buff2+2mov di,sign2call change 二进制成绩score2retcopy endpchange procmov x,0mov cx,[si-1] 成绩的位数cxmov cx,000fh 保留低四位rept2:mov al,[si] 按位取出成绩cmp al,30h 是否在0、9之间jl exit1cmp al,39hjg exit1and ax,000fhxchg ax,xmov dx,10 将ax中前一次形成的书扩大十倍mul dx 保存到xadd x,axinc siloop rept2mov ax,x 按十进制形成的成绩以二进制保存 mov score2[di],ax 二进制成绩送入score2mov x,0add sign2,2 下一个成绩单元exit1:retchange endpsort procmov cx,p 数组长度dec cxloop1:push cx 保存外循环次数mov bx,0mov si,0loop2: mov ax,score2[bx]cmp ax,score2[bx+m+1] m+1=5jge next 降序xchg ax,score2[bx+m+1] 交换成绩mov score2[bx],axmov al,mingci[si]xchg al,mingci[si+1] 交换名次mov mingci[si],alnext:add bx,m+1inc si 下一个成绩loop loop2pop cx 恢复外循环次数loop loop1retsort endpprint proclea dx,infor0 显示结果提示mov ah,9int 21hmov cx,pmov bx,0mov ax,0mov di,0rept3:mov dl,0ah 回车换行mov ah,2int 21hmov dl,0dhint 21hmov dl,cont 显示名次序号mov ah,2int 21hinc contmov dl,0ah 回车换行mov ah,2int 21hmov dl,0dhint 21hmov ax,0mov al,mingci[di] 取名次dec al 位置-1,因为地址从0开始 mov bl,9mul bllea dx,snameadd dx,ax 偏移地址+姓名位移量mov ah,9 显示姓名int 21hmov dl,0ah 回车换行mov ah,2int 21hmov dl,0dhint 21hmov ax,0mov bx,0mov al,mingci[di] 取名次dec al 地址从0开始mov bl,5mul bllea dx,score1add dx,axmov ah,9 显示成绩int 21hinc diloop rept3retprint endpcode endsend start六、自我评价:本次大作业做的是显示学生名次表,重要考察的是复杂程序设计中,采用模板块结构可以划分功能,分解程序,在各个程序之间存在参数传递问题,强调了传递方式和嵌套调用层次的运用。

汇编语言课程设计---学生成绩管理程序

汇编语言课程设计---学生成绩管理程序

郑重声明:本篇文档为从百度文库中下载的经过原文修改后的!目录第一章设计课题概述 (2)1.1 课程设计目的 (2)1.2设计内容及要求 (2)第二章总体设计 (3)2.1总体设计思路 (3)2.2 各版块功能描述 (3)第三章详细设计 (5)3.1 程序功能设计 (5)3.2各模块程序详细流程 (5)3.3 源代码及注释 (8)第四章调试过程及结果 (32)4.1 显示所有成绩 (32)4.2 插入成绩 (32)4.3 查询学生成绩 (33)4.4 删除学生成绩 (34)4.5 修改学生成绩 (35)4.6输出数学成绩 (36)第五章总结 (37)参考资料 (38)第一章设计课题概述1.1 课程设计目的当今社会是一个信息时代的社会,计算机的使用也是越来越普遍了,各行业在管理职员都采用了一些管理软件,不管是银行、学校,大大小小的各种企业,都是使用的相应的管理软件管理企业的各种信息,我选择的这个汇编语言课程设计题就是一个简单学生信息管理程序,虽然只能处理一些简单操作,但是其意义却是非凡,同过此课程设计,让我了解了一些简单的管理软件的基本原理,更深刻的理解了汇编语言的特点,对汇编语言有了一个跟深层次的理解。

利用汇编程序编写一个小型学生成绩管理程序,实现学生信息成绩的插入、修改、显示所有学生的各科成绩,并且可根据输入学生姓名插询该生的各科成绩,可统计所有成绩个各分数段的人数。

1.2设计内容及要求设计一个学生管理程序,主要实现以下功能(1)各科成绩的录入、修改、和删除。

(2)按姓名查询每个学生哥们成绩。

(3)显示查询结果(4)统计各分数段的成绩的人数个分数段的人数。

程序运行时,在出现的主菜单中,按l键,将浏览学生的各科成绩;按i键后,将执行插入功能,可以插入新的学生成绩,按m键,键输入需要修改的学生成绩,也包括不修改的科目;按d键输入要删除的学生姓名,将使其成绩全部变成0;按q键输入查询的学生的姓名,将其各科成绩显示出来;按下c键将按数学成绩分段结果。

基于汇编语言学生成绩管理系统

基于汇编语言学生成绩管理系统

教死结果管造系统之阳早格格创做目录安排真质1安排手段2安排央供2安排分解2子步调分解6支配证明11步调代码12归纳40参照文献40安排真质安排一个教死结果管造步调,央供能真止以下功能:1)各科结果的录进,建改战简略.2)按姓名查询每个教死各门课的结果.3)隐现查询截止.4)统计个分数段的人数.5)挨印教死结果.安排手段用汇编数据的录进、建改战简略支配.安排央供教习怎么样用汇编谈话举止数据处理.安排分解所有步调采与主步调调用子步调的要领.主步调完毕菜单的隐现,子步调完毕一个独力功能要领的真止.各子步调的真止要领简要形貌如下:1)安排INSERT(录进)子步调,先挨启文献SCORE.TXT,并置文献指针到文献尾,而后调用GET_REC子步调交受用户的输进,再把用户的输进写进文献,开端关关文献返回主步调.2)安排Delete(简略)子步调,先挨启文献,再调用宏GETIN得到要简略的教死的姓名,而后读文献中的记录,曲到其记录的名字与所输进的名字相共为止,把文献指针退却8个字符(即4门课结果所占的空间),写进8个“0”字符,关关文献返回主步调.3)安排List(欣赏)子步调时,先挨启文献,而后读一个记录,并通过调用宏SHOW_ITEM将其隐现到屏幕上,进文献指针不到达文献尾,则继承读记录并隐现,当指针到达文献尾时,则关关文献返回主步调.4)安排Modify(建改)子步调时,先挨启文献SCORE.TXT,通用GER_REC得到要建改的记录,而后读文献中的记录,并与用户输进的记录搞比较(只比较记录中的名字部分),若分歧则吨下一条记录,若相共则将文献指针退却23个字符(一个记录为23个字符的少度),而后把用户输进的记录写进文献,开端关关文献返回主步调.5)安排Count(统计)子步调时,先挨启文献,而后读记录,比较记录的第16个字符,数教结果的下位),并统计,曲到文献指针到达文献尾,开端关关文献调用宏SHOW_ITEM隐现统计截止,返会主步调.6)安排Query(查询)子步调时,先挨启文献,通过调用宏GETIN得到要查找教死的姓名,而后读文献记录,并共要查找的教死姓名比较,若相共则输出,若分歧继承读文献记录,开端隐现查询截止,关关文献返回步调.其余另有挨印的分数段人数统计,那些分离后里的子步调功能分解搞仔细介绍.图1是原安排隐现记录的界里图1 教死结果管造系统界里步调过程图如图2所示YNYNYNYNNY正在庞大的步调中,为了使步调浑晰、可读性佳,普遍会洪量使用宏战子步调,果此,充分相识那些宏战子步调,才搞掌握步调的体例要领.原题中使用了下列宏,其效率如下:SHOW :用去指定天面的隐现字符串,有一个天面参数SET_P1:设定光标位子,有一个可变参数a,效率是道光标置于坐标(a,36)处,使用了BIOS中断10H的2号功能.SET_P2 :将光标置于(12,2)处.SET_P3 :将光标置于(1,30)处.CLEAR :扫除所有屏幕,用BIOS中断10H的7号功能真止,范畴是从坐标(0,0)到(24,79),将所有天区形成空黑.CLEAR1 :扫除有半部分屏幕,扫除范畴从坐标(4,36)到(10,79),截止是揩出此天区的隐现真质.CLEAR2 :扫除下半部分屏幕,扫除范畴是从坐标(12,0)到(24,79),截止是揩除此天区的隐现真质.NNWLINE :回车换止.SHOE_ITEM :隐现记录真质,真止后隐现称呼,而后依次隐现4项功课结果,各项结果间空3个空格,开端换止.那个宏包罗的语句较多,如果屡屡皆曲交用语句真止非常冗少,使用宏后则主步调便很简净,充分体现了使用宏的便宜.GETIN :获与教死的疑息,那也是一个使用一再的宏,其中含有很多的指令,它戴有ADDRS战COUNT2二个参数,ADDRS是存搁疑息的数据段位子,CIUNT2是交受的字符数.子步调分解底下仔细分解步调中用的的主要的子步调.(1)INSERT 子步调INSERT 子步调的功能是录进一条记录.最先死存现场进栈,而后DOS中断3D号功能挨启FNAME指定的文献,而后宏GETIN扫除屏幕左半部分的记录输进天区.正在记录的第一项处置光标,用GET_REC获与记录真质,用DOS中断42H号功能将指针移到文献开端.再用DOS中断40H号功能将搁正在BUFFER慢冲区的23个字节的真质写到文献中,交着关关文献,沉新树坐光标位子正在隐现记录位子.开端弹栈回复现场.(2)GET_REC 子步调GER_REC 子步调的功能是获与新的记录真质.最先用宏GETIN获与教死的姓名,搁进BUFF2中,最多15个字符,如果逢到回车键则提前中断.再用循环办法将BUFFER2中的15个字符支到BUFFER1中.而后用宏SET_P1将光标置于数教结果输进项后,等待键盘输进.输进的结果,先搁正在BUER2中,而后加到BUFFER1中的姓名后里.输进为2个字符后逢到回车键提前中断.交着用共样的要领输进英语结果,估计机结果战华文结果.完毕后,那个步调便得到了一个记录的所有疑息.(3)OPENF子步调OPENF是个一个非常简朴的子步调.它的效率是挨启一个文献并把一个文献句柄死存正在数据段的handle慢冲区中.(4)QUERY子步调QUERY是查询一条记录.最先死存现场.而后分别扫除界里左上圆战下边的天区.挨启FAME指定的文献并死存文献句柄.将光标至于界里的下半空黑部分启初处,用宏GETIN 获与最多15个字符的输进,而后将BUFFER1中的真质与BUFFER2中举止比较,瞅是可相共.如果分歧,再继承背下从文献中读出23个字节比较,循环背下,曲到相共或者文献中断为止.如果分歧,则隐现该条记录,而后关关文献,回复现场.B: MOV AH,3FH ;读文献MOV CX,23 ;读23个字节(记录少度)MOV DX, OFFSET BUFFER2 ;搁正在BUFFER2中INT 21HLEA SI,BUFFER2MOV CX,15 ;循环次数C: MOV AL , BYTE PTR[SI]CMP AL , BYTE PTR [DI] ;比较BUFFER1战BUFFER2JNZ B ;分歧则转BINC SIINC DLOOP C(5)MODIFY子步调MODIFY子步调的功能是建改记录.先呵护现场,而后扫除左上部分的记录输进天区,交着挨启文献.用GET_REC子步调获与输进的记录疑息,并存进BUFFER1中.从挨启的文献中读与一个记录的真质(23个字节)搁正在BUFFER2中.比较记录前里的15个字节(姓名),如果分歧,则读与下一个记录;如果相共,则回移一个记录的指针,回到刚刚才那条记录的位子(果为读与一个记录后,指针已移到下一条记录上).将搁正在BUFFER1中的输进的记录写到刚刚才那条记录正在文献中的位子上,进而真止此记录的建改.开端关关步调,回复现场.(6)DELETE子步调DELETE子步调的功能是简略一条记录.最先死存现场,扫除屏幕.而后挨启文献,死存文献句柄.用宏GETIN获与15个字节的姓名字符,搁正在BUFFER1中.读与一条记录(23个字节),搁正在BUFFER2中,而后战BUFFER1中真质比较,如果分歧,读与下一条记录.如果姓名相共,则把指针后移8个字符(4门功课所占空间),写进8个“0”字符.关关文献,回复现场并退出.(7)LIST子步调LIST子步调的效率是隐现文献中的记录.最先扫除记录输进区战隐现天区.而后隐现记录字段的题目.挨启文献,死存文献句柄.读与一条记录的真质搁正在BUFFER1中,并推断是可到了文献开端,如果不是,则隐现那条记录.循环读与曲到文献中断.开端关关步调,回复现场.(8)PRINT子步调DELETE子步调的功能是挨印文献中的记录.用OPENF子步调挨启文献.读与一条记录,汇编谈话提供了自定义数据结构的结构定义语句,可将分歧的数据典型搁正在一个数据结构中,便于处理,正在原步调中的记录便采与了结构定义语句.那里读与记录也用了结构的要领.交着用DOS中断21H的5号功能,逐字挨印存搁正在BUFFER1中的所以字符.一条记录挨完后,挨印回车符换止.而后用共样要领继承读与下一条记录并挨印,曲到文献中断为止.开端关关文献退出.(9)COT子步调COT子步调的效率是统计各分数段小道人数,并简化步调,动做示例,原步调只统计记录数教各分数段的人数.最先隐现统计截止的题目:maths<60<70<80<90<100.而后挨启文献.读与记录,将记录的第16个字符(数教分数的下位)与出比较.统计截止依次搁正在以BUFFER3启头的内存单元中,如果小于60,则将小于60的记录单元BUFFER3加一;若小于70,则将小于70的记录单元BUFFER3加一,即BUFFER3下一个天面单元真质加一,依次类推.处理完后再读与下个记录,做共样处理,曲到文献中断为止.交着隐现搁正在BUFFER3中的各分数段的人数的统计截止,开端关关文献中断.从步调中不妨瞅出,统计时步调有个节造,原例每个分数段最多不克不迭超出9部分.支配证明改步调除源步调中,还需要另一个存搁记录的文献(此步调中使用的文献名为SCORE.TXT),但是原步调并不创造那个文献的功能.要爆收那个文献,可用记事原先搞以一个空的文献名为SCORE.TXT的文献.步调的运止与该文献的存搁位子有关,位子是步调数据段的FNAME的值.二者要脆持普遍,可则会果为找不到数据存搁文献而堕落.步调运止时,正在出现主菜单后,按1键,将隐现教死的各科结果;按i键,将真止录进功能,不妨录进新的教死结果;按M键,了建改教死结果.由于原步调时隔简朴步调,所以正在建改时,要输进教死的所有结果,包罗不要建改的结果;按D键后,输进要简略的教死名,将使其结果齐为0;按Q键后,输进要查询的教死的姓名,键隐现其各科结果;按C键将隐现数教结果的分段统计截止.以上功能正在运止时不妨单独真止(即正在加进主菜单后,单打功能键选中该功能举止支配后步调会关关.但是要运止其余功能,则要沉新加进主菜单单打别的功能键,即屡屡只可运止一项功能).要特天证明的是,原步调住一套手段是考证汇编步调真止的数据记录支配功能,为使步调不至于郭少,缩小篇幅,果此步调处剖析很简朴.步调中不过失处理步调,如果输进过失,如按退格键将会堕落,果此输进时要注意补要输错.步调代码data segmentmess1 db ' student grade managementsystem',0ah,0dh,'$'mess2 db ' this is main menu',0ah,0dh,'$'mess3 db ' insert (i) please input:',0ah,0dh,'$' mess4 db ' modify (m) name :',0ah,0dh,'$' mess5 db ' delete (d) maths :',0ah,0dh,'$'mess6 db ' query (q) english :',0ah,0dh,'$' mess7 db ' count (c) computer:',0ah,0dh,'$' mess8 db ' print (p) chinese :',0ah,0dh,'$' mess9 db ' exit (e)',0ah,0dh,'$'mess10 db'*************************************************** *******$'mess11 db 'name Ma En CoCh',0ah,0dh,'$'mess13 db ' list (l)',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 "d:\masm\score.txt" ;记录分数文献的路径战文献名.buffer1 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 endsscore struc ;定义记录结构names db 15 dup(' ')maths db 0,0english db 0,0computer db 0,0chinese db 0,0score endsshow macro addrs ;隐现字符串lea dx,addrsmov ah,9int 21hendmset_p1 macro a ;设光标于(a,36)mov ah,2mov dh,amov dl,36mov bh,0int 10hendmset_p2 macro ;设光标于(12,2)mov ah,2mov dh,12mov dl,2mov bh,0int 10hendmset_p3 macro ;设光标于(1,30)mov ah,2mov dh,1mov dl,30mov bh,0int 10hendmclear macro ;浑所有屏幕mov al,0mov cl,0mov ch,0mov dh,24mov dl,79mov bh,7mov ah,6int 21hendmclear1 macro ;浑左上记录输进区mov al,0mov bh,7mov ch,4mov cl,36mov dh,10mov dl,79mov ah,6int 10hendmclear2 macro ;浑下半部分记录隐现区mov al,0mov bh,7mov ch,12mov cl,0mov dh,24mov dl,79int 10hendmnewline macro ;回车换止push dxmov dl,0dhmov ah,2int 21hmov dl,0ahmov ah,2int 21hpop dxpop axendmshow_item macro addrs ;正在指定位子隐现记录local iloop,w10push bxpush cxmov bx,0iloop: mov dl,addrs[bx] ;隐字符串mov ah,2int 21hinc bxcmp bx,15mov cx,4w10: mov dl,' 'mov ah,2int 21hmov dl,' 'mov ah,2int 21hmov dl,' 'mov ah,2int 21hmov dl,addrs[bx]mov ah,2int 21hinc bxmov dl,addrs[bx]mov ah,2int 21hinc bxloop w10newlinepop cxendmgetin macro addrs,count2 ;从键盘获与疑息local zeroit,lp,input_end,exitpush bxpush axmov bx,0zeroit: mov addrs[bx],' 'inc bxcmp bx,15jl zeroitmov bx,0lp: mov ah,1int 21hcmp al,0ahjz input_endcmp al,0dhjz input_endmov addrs[bx],alinc bxcmp bx,count2jl lpinput_end: cmp al,0dhjz exitcmp al,0ahjz exitmov ah,7int 21hjmp input_endexit: pop axpop bxendmcode segmentmain proc farassume cs:code,ds:data,es:datastart: mov ax,datamov ds,axmov ah,0 ;设隐现模式80*25mov al,3int 10hclearshow mess1show mess2show mess13show mess3show mess4show mess5show mess6show mess7show mess8show mess9newlineshow mess10set_p3w: mov ah,7int 21hcmp al,'i'jnz n1call insertjmp wn1: cmp al,'m'jnz n2call modifyjmp wn2: cmp al,'d'jnz n3call deletejmp wn3: cmp al,'q'jnz n4call queryjmp wn4: cmp al,'c'jnz n5call cotjmp wn5: cmp al,'p'jnz n6call printjmp wn6: cmp al,'l'jnz n7call listjmp wn7: cmp al,'e'jz exitfjmp wexitf: mov ah,4chint 21hretmain endpinsert proc nearpush axpush bxpush cxpush dxmov dx,offset fnamemov al,2mov ah,3dh ;挨启文献int 21hmov bx,axclear1set_p1 4call get_recmov cx,0 ;指针移到文献尾mov dx,0mov al,2mov ah,42hint 21hmov cx,23 ;写文献mov dx,offset buffer1mov ah,40hint 21hmov ah,3eh ;关关文献int 21hset_p3pop dxpop cxpop bxpop axretinsert endpget_rec proc nearpush axpush bxgetin buffer2,15 ;输进姓名mov bx,0mov cx,15continue: mov al,buffer2[bx]mov buffer1[bx],alinc bxloop continueset_p1 5getin buffer2,2 ;输进数教结果mov al,buffer2mov buffer1[bx],alinc bxmov al,buffer2+1mov buffer1[bx],alinc bxset_p1 6getin buffer2,2 ;输进英语结果mov al,buffer2mov buffer1[bx],alinc bxmov al,buffer2+1mov buffer1[bx],alinc bxset_p1 7getin buffer2,2 ;输进估计机结果mov al,buffer2mov buffer1[bx],alinc bxmov al,buffer2+1mov buffer1[bx],alinc bxset_p1 8getin buffer2,2 ;输进语文结果mov al,buffer2mov buffer1[bx],alinc bxmov al,buffer2+1mov buffer1[bx],alinc bxpop bxpop axretget_rec endpopenf proc near ;挨启文献mov dx,offset fnamemov al,02mov ah,3dhint 21hmov handle,axretopenf endpquery proc near ;查询记录push axpush bxpush cxpush dxclear1clear2mov dx,offset fnamemov al,2mov ah,3dh ;挨启文献int 21hmov bx,axset_p2getin buffer1,15 ;与姓名到buffr1中lea dx,mess11mov ah,9int 21hb: mov ah,3fh ;读文献mov cx,23 ;读23个字节(记录少度mov dx,offset buffer2 ;搁正在buffer2中int 21hlea si,buffer2lea di,buffer1mov cx,15 ;循环次数c: mov al,byte ptr[si]cmp al,byte ptr[di] ;比较buffer1战buffer2jnz b ;分歧则转binc siinc dimov [buffer2+23],'$'show_item buffer2mov ah,3ehint 21hpop dxpop cxpop bxpop axretquery endpmodify proc near ;建改记录push axpush bxpush cxpush dxclear1set_p1 4mov dx,offset fnamemov al,2mov ah,3dhmov bx,axmov handle,axcall get_rec ;读与输进真质搁正在buffer1read: mov dx,offset buffer2mov cx,23mov ah,3fh ;读文献,记录真质搁正在buffer2int 21hlea si,buffer2 ;比较姓名是可相共lea di,buffer1mov cx,15c5: mov dl,byte ptr[si]cmp dl,byte ptr[di]jnz readinc siinc diloop c5mov bx,handlemov ah,42h ;回移文献指针mov al,1mov cx,0ffffhmov dx,-23int 21hmov cx,23mov dx,offset buffer1mov ah,40h ;写进建改记录int 21hmov ah,3ehint 21hjmp exit2exit1: set_p2show err1exit2: set_p3pop dxpop cxpop bxpop axretmodify endpdelete proc nearpush axpush bxpush cxpush dxclear1set_p1 4mov dx,offset fnamemov al,2mov ah,3dh ;挨启文献int 21hmov bx,axmov handle,axgetin buffer1,15 ;读与键盘输进搁正在buffer1read5: mov dx,offset buffer2mov cx,23mov ah,3fh ;从文献读记录搁正在buffer2中int 21hlea si,buffer2lea di,buffer1c6: mov dl,byte ptr[si]cmp dl,byte ptr[di]jnz read5inc siinc diloop c6mov bx,handlemov ah,42h ;移文献指针mov al,1mov cx,0ffffhmov dx,-8int 21hmov cx,8mov dx,offset delmov ah,40h ;写文献int 21hmov ah,3eh ;关关文献int 21hjmp exit6exit5: set_p2exit6:set_p3pop dxpop cxpop bxpop axretdelete endplist proc near ;列文献中记录push axpush bxpush cxpush dxclear1clear2set_p2show mess11mov dx,offset fnamemov al,2mov ah,3dh ;挨启文献int 21hagain: mov dx,offset buffer1 ;读与记录mov cx,23mov ah,3fhint 21hcmp ax,0jz pshow_item buffer1jmp againp: mov ah,3eh ;关关文献int 21hset_p3pop dxpop cxpop bxpop axretlist endpprint proc nearpush axcall openf ;挨启文献mov cl,countmov ch,0read2: mov dx,offset buffer1mov cx,type scoremov ah,3fh ;读文献int 21hmov cx,23hmov bx,0next: mov ah,5mov dl,byte ptr buffer1[bx]int 21hinc bxloop nextmov ah,5mov dl,0dhint 21hdec xcmp x,0jnz read2mov bx,handleint 21hpop axretprint endpcot proc ;统计结果push axclear2set_p2show mess12mov dx,offset fnamemov ah,3dh ;挨启文献int 21hmov bx,axmov handle,axread0: mov dx,offset buffer2mov cx,23mov ah,3fh ;读记录int 21hmov dl,[buffer2+15]cmp dl,'6'jl fivejl sixcmp dl,'8'jl sevencmp dl,'9'jl eightinc [buffer3+4]jmp quit eight:inc [buffer3+3]jmp quit seven: inc [buffer3+2]jmp quitsix: inc [buffer3+1]jmp quit five: inc [buffer3] quit: cmp ax,0jnz read0mov cx,10a: mov dl,' 'mov ah,2int 21hloop amov bx,0a0: mov dl,[buffer3+bx] ;隐现统计截止mov ah,2int 21hinc bxmov dl,' 'mov ah,2int 21hmov dl,' 'mov ah,2int 21hcmp bx,5jnz a0mov bx,handlemov ah,3eh ;关关文献int 21hset_p3pop axretcot endpcode endsend start归纳此次课程安排需要思量的功能很多,果此需要分模块去完毕.每个组员控造一个模块,拔出(insert)由火健控造,建改(modify)由弛翔控造,简略(delete)由胡玉杰控造,查询(query)由肖大庆控造,统计(count)由王瀚控造,并不是是每部分只管一齐,而是互相协共,主要控造一部分,至于别的部分,那些不怎么太易便不人博门控造了,而且人也出那么多.从那次课程安排中相识到单干合做的要害性,以去处事中逢到步调只大概比那个搀纯,一部分很易独自完毕,那便要需要到合做了.其余便是正在课堂上教到的知识根原便不敷,要搞佳一个步调必须多掌握一些书籍原中的相关知识.参照文献1、沈好明,温冬婵. IBM PC 汇编谈话步调安排[M] 2版北京:浑华大教出版社,20022、孙德文. 微型估计机技能[M] 北京:下等培养出版社,20023、赵雁北,温冬婵. 微型估计机系统与交心[M] 北京:浑华大教出版社,20054、王成瑞等.汇编谈话步调安排[M] 北京:下等培养出版社,2003。

汇编语言学生成绩管理系统程序

汇编语言学生成绩管理系统程序

;此版本解决输入分数时输入错不能更改的bug;解决了冒泡排序时用内存当变量问题;可以清屏;使用help宏,使程序看起来更简洁;若分数输错,仅保留前两位;实现了界面化;实现了delete、modify功能nextline macropush axmov ah,0ehmov al,0dhint 10h ;调用bios输出换行符mov al,0ahint 10h ;调用bios输出回车符pop axendmhelp macro address ;打印提示信息mov ah,09hlea dx,addressint 21hendmchoice macro ;界面help mess1help mess2help mess3help mess4help mess5help mess6help mess7help mess8help mess9nextlinehelp mess10nextlineendm;学生信息的结构man strucxnum db 10,?,10 dup(0) ;学生的学号xname db 20,?,20 dup(0) ;学生的名字xclass db 10,?,10 dup(0) ;学生的班级xscore dw 0 ;学生的成绩man endsdata segmentmess1 db ' ***************************************************',0ah,0dh,'$'mess2 db ' * Student Grade Magement System *',0ah,0dh,'$'mess3 db ' * Made By XXXXXXXXXXXXX *',0ah,0dh,'$'mess4 db ' * *',0ah,0dh,'$'mess5 db ' * List(l) Insert(i) *',0ah,0dh,'$'mess6 db ' * Statistic(s) Delete(d) *',0ah,0dh,'$'mess7 db ' * Order(o) Modify(m) *',0ah,0dh,'$'mess8 db ' * Exit(e) Continue(c) *',0ah,0dh,'$'mess9 db ' ***************************************************',0ah,0dh,'$'mess10 db 'Make a choice:$'mess11 db 'Faild$'mess12 db 'Succesfully$'welcome db ' Hello! Welcome$'p_info db ' The info of the students $'input1 db 'Input the num of student:$'input2 db 'Input the name of student:$'input3 db 'Input the class of student:$'input4 db 'Input the score of student:$'output1 db 'num =$'output2 db 'name =$'output3 db 'class=$'output4 db 'score=$'output5 db ' The statistics of the students $'s_num0 db 'The total num of students=$'s_num1 db 'score(0 -60)=$'s_num2 db 'score(60-70)=$'s_num3 db 'score(70-80)=$'s_num4 db 'score(80-90)=$'s_num5 db 'score(90-100)=$'s_num6 db 'The average score of students=$'is db 0temp1 db 5,?,5 dup(0) ;为了使输入的分数也能输入错误的情况下修改而用的temp2 db 10,?,10 dup(0) ;删除时存储学号用的sum_h dw 0 ;总分数的高位sum_l dw 0 ;总分数的低位total dw 0 ;学生的人数average dw 0 ;平均成绩s_59 dw 0 ;小于60s_60 dw 0 ;60到70s_70 dw 0 ;70到80s_80 dw 0 ;80到90s_90 dw 0 ;90到99con db 48 ;结构字段的大小,为常数stu man 100 dup(<>) ;学生信息data endscode segmentassume cs:code,ds:datastart:mov ax,datamov ds,axcall make_c;*************************************************make_c procfirst:call clearcall cursornextlinechoicemov ah,1 ;1号系统调用int 21hmov bh,alch_i: ;插入cmp bh,'i'jne ch_lcall clearcall cursorch_i_1:mov [temp1+2],0 ;消除上一次get输入数据的影响mov [temp1+3],0mov [temp1+4],0mov [temp1+5],0mov [temp1+6],0call getmov ah,1int 21hcmp al,'c'nextlineje ch_i_1jmp firstch_l: ;显示学生成绩cmp bh,'l' ;显示jne ch_ocall clearcall cursorch_l_1:call printmov ah,1int 21hcmp al,'c'nextlineje ch_l_1jmp firstch_o: ;进行排序cmp bh,'o'jne ch_scall clearcall cursorch_o_1:call sortcall printmov ah,1int 21hcmp al,'c'nextlineje ch_o_1jmp firstch_s: ;进行统计信息cmp bh,'s'jne ch_dcall clearcall cursorch_s_1:call statistic_print;打印统计信息mov ah,1int 21hcmp al,'c'nextlineje ch_s_1jmp firstch_d: ;进行删除cmp bh,'d'jne ch_mcall clearcall cursorch_d_1:call deletemov ah,1int 21hcmp al,'c'nextlineje ch_d_1jmp firstch_m: ;进行修改cmp bh,'m'jne ch_ecall clearcall cursorch_m_1:call deletenextlinecmp is,0je ch_m_2call getch_m_2:mov ah,1int 21hcmp al,'c'nextlineje ch_m_1jmp firstch_e: ;退出cmp bh,'e'je ch_jmp firstch_: mov ah,4chint 21hmake_c endp;*************************************************;清屏函数,使用10H中断的06功能将屏幕右下角位置18H行,4FH列(DX)移动到左上角00H,00H;BIOS中断类型10H;功能号06H 屏幕上卷;辅助调用寄存器AL=上卷行数BH=上卷行属性CH=左上Y CL=左上X DH=右下Y DL=右下X;如果AL=0,则整屏空白;普通文本模式下IBM PC屏幕被划分为80行25列(从00开始)clear proc ;清屏push cxmov ax,0600Hmov bh,07mov cx,0000mov dx,184fHint 10Hpop cxretclear endp;光标定位函数,使用10H中断的02功能将光标定位;BIOS中断类型10H;功能号02H 设置光标位置;辅助调用寄存器BH=页号DH=行DL=列cursor procmov ah,02mov bh,00mov dl,0mov dh,1int 10Hretcursor endp;*************************************************get proc ;得到学生的信息push axpush cxpush bxpush sipush dimov si,offset stu ;学生的入口地址mov al,con ;把一个数据块的大小放入almov ah,0 ;把al扩展到axmul total ;乘以人数add si,ax ;相对于人数的偏移位置;得到信息;input1help input1mov dx,simov ah,0ah ;输入学号字符串int 21hmov al,[si+1]add al,2mov ah,0add si,axmov [si],byte ptr '$'sub si,axnextline;input2help input2add si,12mov dx,simov ah,0ah ;输入姓名字符串int 21hmov al,[si+1]add al,2mov ah,0add si,axmov [si],byte ptr '$'sub si,axnextline;input3help input3add si,22mov dx,simov ah,0ah ;输入班级字符串int 21hmov al,[si+1]add al,2mov ah,0add si,axmov [si],byte ptr '$'sub si,axnextline;input4help input4call d_b ; 从键盘读入分数add si,12mov [si],bxnextlineinc total ;学生总人数加1nextline;求总分数add sum_l,bxadc sum_h,0;判断属于哪个分数段cmp bx,0258hjae con_60 ;大于等于60inc s_59jmp pp1con_60:cmp bx,02bch ;大于等于70jae con_70inc s_60jmp pp1con_70:cmp bx,0320h ;大于等于80jae con_80inc s_70jmp pp1con_80:cmp bx,0384h ;大于等于90jae con_90inc s_80jmp pp1con_90:inc s_90pp1:pop dipop sipop bxpop cxpop axget endp;*****************************************print procpush axpush cxpush bxpush sipush di;输出打印信息help p_infonextlinemov si,offset stu ;学生的入口地址mov cx,total ;学生总数作为打印的循环次数cmp cx,0je kkjmp L7kk:jmp kkkL7:;打印学号help output1add si,2mov dx,simov ah,9int 21hadd si,12 ;si内存的是姓名串的首地址nextline;打印姓名help output2mov dx,simov ah,9int 21hadd si,22 ;si内存的是班级串的首地址nextline;打印班级help output3mov dx,simov ah,9int 21hadd si,10nextlinehelp output4mov bx,[si]call near ptr b_dnextlineadd si,2nextlinedec cxcmp cx,0jz kkk ; 注意,开始时用loop L7会超过距离显示; jump out of by 8 bytes,所以此处改成这样了jmp L7kkk:pop dipop sipop bxpop cxpop axretprint endp;***********************************************delete proc ;删除模块push axpush cxpush bxpush sipush dimov cx,totalcmp cx,0jne delete_1help mess11mov is,0jmp delete_0delete_1:help input1mov dx,offset temp2mov ah,0ah ;输入学号字符串int 21hnextlineinc dxmov di,dxmov bl,[di]mov si,offset stu ;学生信息入口add si,1delete_2:cmp [si],bl ;比较字符串长度jne delete_6push cx ;字符串长度相等则一个一个比较字符mov di,dxadd di,1add si,1mov bh,0mov cx,bxdelete_4:mov bh,[di]cmp bh,[si]je delete_3 ;相等的情况delete_5:add si,cx ;不相等的情况下mov bh,0sub si,bxadd di,cxsub di,bxsub si,1pop cxdelete_6:dec cxcmp cx,0jne delete_8help mess11mov is,0jmp delete_0delete_8:add si,48jmp delete_2 ;delete_3:dec cxadd si,1add di,1cmp cx,0jne delete_4 ;继续把此串比较完pop cxmov bh,0sub si,bxadd si,44cmp [si],0258hjae dd_60 ;大于等于60dec s_59jmp delete_7dd_60:cmp [si],02bch ;大于等于70jae dd_70dec s_60jmp delete_7dd_70:cmp [si],0320h ;大于等于80jae dd_80dec s_70jmp delete_7dd_80:cmp [si],0384h ;大于等于90jae dd_90dec s_80jmp delete_7dd_90:dec s_90delete_7:mov dx,[si]sub sum_l,dxsbb sum_h,0mov dx,0mov [si],dx ;分数置为0再排序call sortdec totalhelp mess12mov is,1delete_0:pop dipop sipop bxpop cxpop axdelete endp;************************************************ statistic_print procpush axpush cxpush sipush dinextlinehelp output5nextlinehelp s_num0 ;学生的总人数mov bx,totalcall sta_childnextlinecmp bx,0je failhelp s_num6 ;平均分mov dx,sum_h ;总分的高字mov ax,sum_l ;总分的低字div totalmov average,axmov bx,axcall b_dnextlinefail:help s_num1 ;不及格的mov bx,s_59call sta_childnextlinehelp s_num2 ;60-70mov bx,s_60call sta_childnextlinehelp s_num3 ;70-80mov bx,s_70call sta_childnextlinehelp s_num4 ;80-90mov bx,s_80call sta_childnextlinehelp s_num5 ;90-100mov bx,s_90nextlinepop dipop sipop cxpop axretstatistic_print endp;****************************************sta_child procmov ax,bxcmp ax,0jbe p1mov bl,100 ;除以100div bltest al,0ffh ;人数小于100的jz p2mov ch,alcall print_dp2:mov al,ahmov ah,0mov bl,10div bltest al,0ffh ;人数小于10的jz p3mov ch,alcall print_dp3:mov ch,ahcall print_djmp p4p1:mov ch,0call print_dp4:retsta_child endp;********************************************* d_b proc ;10进制转化成2进制,返回参数为bx push cxpush axpush simov bx,0mov si,offset temp1 ;temp1的地址传到dx mov dx,simov ah,0ah ;输入分数int 21hmov cx,3add si,1nc:inc simov al,[si]cmp al,'.'je L1cmp cx,1je L1sub al,'0' ;减去0jb exit ;小于0跳到exitcmp al,09h ;和9比较ja exit ;大于9跳到exitcbw ;将al进行符号扩展到axadd ax,bx ;将ax和bx相加shl ax,1 ;(ax)×2mov bx,axshl ax,1 ;(ax)×4shl ax,1 ;(ax)×8add bx,ax ;(ax)的10倍loop ncL1:inc simov al,[si]sub al,'0' ;减去0jb exit ;小于0跳到exitcmp al,09h ;和9比较ja exit ;大于9跳到exitcbw ;将al进行符号扩展到axadd bx,ax ;将ax和bx相加exit:pop dipop sipop axpop cxretd_b endp;******************************************b_d proc ;把二进制转化成十进制的函数,入口参数为bx push axpush cxpush dxmov ax,bx ;2进制数传给axmov cl,alcmp ax,10 ;和10比较jb L2 ;跳到打印0的位置mov bl,10div bl ;除以10mov cl,ah ;余数放到cl中cbwcmp ax,10 ;和10比较jb L3 ;跳到分数小于10的情况mov bl,10 ;分数大于10的情况div blmov ch,alcall print_d ;打印百位mov ch,ahcall print_d ;打印十位jmp pointL2:mov ch,0call print_djmp pointL3: mov ch,alcall print_d ;分数小于10的情况point:call print_p ;打印小数点mov ch,clcall print_d ;打印第一位小数pop dxpop cxpop axretb_d endp;******************************************print_d proc ;显示一位数字的函数push axpush bxpush dxmov dl,chmov ah,02hadd dl,'0'int 21hpop dxpop bxpop axretprint_d endp;******************************************print_p proc ;显示小数点push axpush bxpush dxxor dx,dxmov ah,02hadd dl,'.'int 21hpop dxpop bxpop axretprint_p endp;*******************************************sort proc;冒泡算法排序push axpush cxpush dxpush sipush dimov ax,dsmov es,axmov ax,total ;外层循环的次数push ax ;解决了冒泡排序时用内存当变量问题sort1:pop axdec axcmp ax,0 ;外层循环若为0,则已比较完毕jbe sort3mov bx,ax ;bx存内层循环mov si,offset stuadd si,46 ;到分数的地址mov di,siadd di,48push axsort2:mov ax,[si]mov dx,[di]cmp ax,dxjae sort4sub si,46sub di,46mov cx,48 ;循环48次,交换两个数据块sort5:xchg al,[si] ;交换两个数据xchg al,[di]xchg al,[si]add si,1add di,1loop sort5sub si,2sub di,2sort4:dec bx ;内层循环减一cmp bx,0je sort1 ;若为0,跳到外层循环add si,48add di,48jmp sort2sort3:pop dipop sipop dxpop cxpop axretsort endp;****************************************** code endsend start。

基于汇编语言学生成绩管理系统之欧阳理创编

基于汇编语言学生成绩管理系统之欧阳理创编

学生成果管理系统目录设计内容1设计目的2设计要求2设计阐发2子法度阐发7操纵说明12法度代码13总结43参考文献44设计内容设计一个学生成果管理法度,要求能实现以下功能:1)各科成果的录入,修改和删除。

2)按姓名查询每个学生各门课的成果。

3)显示查询结果。

4)统计个分数段的人数。

5)打印学生成果。

设计目的用汇编数据的录入、修改和删除操纵。

设计要求学习如何用汇编语言进行数据处理。

设计阐发1.总体结构整个法度采取主法度调用子法度的办法。

主法度完成菜单的显示,子法度完成一个自力功能办法的实现。

各子法度的实现办法简要描述如下:1)设计INSERT(录入)子法度,先掀开文件SCORE.TXT,并置文件指针到文件尾,然后调用GET_REC子法度接受用户的输入,再把用户的输入写入文件,最后关闭文件前往主法度。

2)设计Delete(删除)子法度,先掀开文件,再调用宏GETIN获得要删除的学生的姓名,然后读文件中的记录,直到其记录的名字与所输入的名字相同为止,把文件指针后退8个字符(即4门课成果所占的空间),写入8个“0”字符,关闭文件前往主法度。

3)设计List(浏览)子法度时,先掀开文件,然后读一个记录,并通过调用宏SHOW_ITEM将其显示到屏幕上,入文件指针没有达到文件尾,则继续读记录并显示,当指针达到文件尾时,则关闭文件前往主法度。

4)设计Modify(修改)子法度时,先掀开文件SCORE.TXT,通用GER_REC获得要修改的记录,然后读文件中的记录,并与用户输入的记录做比较(只比较记录中的名字部分),若不合则吨下一条记录,若相同则将文件指针后退23个字符(一个记录为23个字符的长度),然后把用户输入的记录写入文件,最后关闭文件前往主法度。

5)设计Count(统计)子法度时,先掀开文件,然后读记录,比较记录的第16个字符,数学成果的高位),并统计,直到文件指针达到文件尾,最后关闭文件调用宏SHOW_ITEM显示统计结果,返会主法度。

汇编个人信息管理系统

汇编个人信息管理系统

汇编实验实验名称:简单个人信息管理系统,要求有添加、列出、查找、删除、退出等基本功能实验目的:使学生能够很好的掌握汇编语言,对汇编语言有更深入的了解实验代码:DATA SEGMENTA DB 5 DUP (10 DUP(20H),5 DUP(20H),8 DUP(20H),5DUP(20H),1 DUP(20H),5 DUP(20H),3 DUP(20H),2 DUP(20H),'$')B DB 39 DUP(20H),'$'CAIDAN DB'**********************************************************',10,13 DB ' please choose this following choices ',10,13DB ' (1) L:list record (2) S:seacher record ',10,13DB ' (3) A:add record (4) D:delete record ',10,13DB ' (5) Q:quit ',10,13DB'**********************************************************',10,13,'$' ID DB 10 DUP(?)NAME1 DB 8 DUP(?)SEX DB ?AGE DB 3 DUP(?)ID1 DB 'please input the id:$'NAME2 DB 'please input the name:$'SEX1 DB 'please input the sex:$'AGE1 DB 'please input the age:$'EXIST DB 'the id is existing:$'CHOICE DB 'the choice is:$'HID DB 'search success!$'ADDS DB 'add success!$'NEX DB 'the ID not exists!$'DELETE DB 'please input the delete ID:$'SUD DB 'ARE YOU SURE TO DELETE IT?(Y/N)$'C DB 'press any key to continue...$'DELETES DB 'delete success!$'LISTS DB 'list success!$'SEARCH DB 'please input the search id:$'FLIST DB 'the list is full!$'NLIST DB 'the list is null!$'ROW DW 0NUMBER DW 0XIANSHI1 DB ' ID NAME SEX AGE',10,13,24H DATA ENDSCRLF MACROPUSH DXPUSH AXMOV AH,2MOV DL,10INT 21HMOV DL,13INT 21HPOP AXPOP DXENDMXIANSHI MACROPUSH DXPUSH AXMOV DL,ALMOV AH,2INT 21HPOP AXPOP DXENDMCRLF1 MACRO PPPUSH DXPUSH AXLEA DX,PPMOV AH,9INT 21HPOP AXPOP DXENDMCRLF2 MACRO XX: MOV AH,7INT 21HCMP AL,30HJB XCMP AL,39HJA XMOV DL,ALMOV AH,2INT 21HMOV ID[SI],ALINC SILOOP XENDMCODE SEGMENTASSUME DS:DATA,CS:CODE,ES:DATASTART: MOV AX,DATAMOV DS,AXMOV ES,AX;开始;**************************************************** BEGIN: CRLFCRLF1 CAIDANCRLFCRLF1 CHOICEBEGIN1: MOV AH,7INT 21HCMP AL,'A'JE ADDIDJMP NEXTFULL1: CRLF1 FLISTCRLFJMP CONTINUE1;输入IDADDID: XIANSHIB2: MOV AH,7INT 21HCMP AL,13JE C1JMP B2C1: CRLFMOV CX,10MOV SI,0CMP ROW,4JA FULL1CRLF1 ID1CRLF2 IN2;ID是否重复MOV DX,0 ;比较次数 MOV BX,-40COMPARE: ADD BX,40CMP DX,ROWJE STOREINC DXMOV CX,10LEA SI,IDLEA DI,A[BX]CLDREPZ CMPSBJNZ COMPARECRLFCRLF1 EXISTCRLFJMP CONTINUE1CONTINUE1: CRLF1 CMOV AH,7INT 21HCRLFJMP BEGIN;存入ID;******************************************************************* STORE: MOV NUMBER,BXLEA SI,IDLEA DI,A[BX]MOV CX,10CLDREP MOVSBB1: MOV AH,7INT 21HCMP AL,13JE NJMP B1; 存入姓名;******************************************************************** N: CRLFCRLF1 NAME2NA: MOV AH,7INT 21HCMP AL,'A'JB NACMP AL,'Z'JA NAXIANSHIMOV A[BX+15],ALMOV CX,7MOV SI,0NA1: MOV AH,7INT 21HCMP AL,13JE SE1JB NACMP AL,'Z'JA NAMOV A[BX+SI+16],ALINC SIXIANSHILOOP NA1;存入性别;************************************************SE1: CRLFCRLF1 SEX1SE2: MOV AH,7INT 21HCMP AL,'F'JE SE3CMP AL,'M'JE SE3JMP SE2SE3: XIANSHICRLFMOV A[BX+28],AL;存入年龄;****************************************************** CRLF1 AGE1AG1: MOV AH,7INT 21HCMP AL,'0'JBE AG1CMP AL,'9'JA AG1XIANSHIMOV A[BX+34],ALMOV CX,2MOV SI,0AG2: MOV AH,7INT 21HJE ADDS1CMP AL,'0'JB AG2CMP AL,'9'JA AG2MOV A[BX+SI+35],ALINC SIXIANSHILOOP AG2ADDS1: CRLFCRLF1 ADDSCRLFINC ROWJMP CONTINUE1;********************************************************************* NEXT: CMP AL,'Q'JE EXITCMP AL,'L'JE LIST2JMP NEXT1NLIST1: CRLF1 NLISTCRLFJMP CONTINUE1EXIT: XIANSHIMOV AX,4C00HINT 21H;显示;******************************************************************* LIST2: XIANSHIB3: MOV AH,7INT 21HCMP AL,13JE C2JMP B3C2: CRLFJB NLIST1CRLF1 XIANSHI1MOV BX,-40MOV CX,0BACK: CMP CX,ROWJE ACT2ADD BX,40CRLF1 A[BX]CRLFINC CXJMP BACKLISTS1: CRLF1 LISTSCRLFJMP CONTINUE1NEXT1: CMP AL,'S'JE SEARCH1JMP NEXT2ACT2: JMP CONTINUE1NLIST2: JMP NLIST1;查找ID这个是我负责的模块;*************************************************************** SEARCH1: XIANSHI ;调用7号功能,如果输入是S是则调用宏XIANSHI显示SB4: MOV AH,7 ;显示完S后回车INT 21HCMP AL,13JE C3JMP B4C3: CRLF ;调用宏CRLF显示回车换行CMP ROW,0 ;row是记录人数的即表的行数,当人数等于零就为空表跳到NLIST2,显示表空JE NLIST2CRLF1 SEARCH ;显示表头MOV CX,10MOV SI,0CRLF2 IN3 ;输入IDB8: MOV AH,7 ;输入回车INT 21HCMP AL,13JE C7JMP B8C7: CRLF比较思路:dx记录比较次数,比较完一次就加一,然后进行字符串匹配,如果匹配,剧显示查找功能,如果不比配就继续比较,当比较的次数等于行数时,就比较完所有的ID,此时,要查找的ID不存在MOV DX,0 ;比较次数MOV BX,-40COMPARE1: ADD BX,40CMP DX,ROWJE OUTPUT1INC DXMOV CX,10LEA SI,IDLEA DI,A[BX]CLDREPZ CMPSBJNZ COMPARE1CRLF1 HIDCRLFCRLF1 XIANSHI1CRLF1 A[BX]CRLFJMP CONTINUE1OUTPUT1: CRLF1 NEXCRLFJMP CONTINUE1NEXT2: CMP AL,'D'JE DELETE1JMP BEGIN1JMP ACTNLIST3: JMP NLIST2OUTPUT2: JMP OUTPUT1;****************************************************************** ;删除IDDELETE1: XIANSHIB5: MOV AH,7INT 21HCMP AL,13JE C4JMP B5C4: CRLFCMP ROW,1JB NLIST3CRLF1 DELETEMOV CX,10MOV SI,0CRLF2 IN4B7: MOV AH,7INT 21HCMP AL,13JE C6JMP B7C6: CRLFMOV DX,0 ;比较次数MOV BX,-40COMPARE2: ADD BX,40CMP DX,ROWJE OUTPUT2INC DXMOV CX,10LEA SI,IDLEA DI,A[BX]CLDREPZ CMPSBJNZ COMPARE2CRLF1 SUDCRLFMOV AH,7INT 21HCMP AL,'Y'JE DELETE2CMP AL,'N'JE ACTDELETE2: LEA DI,A[BX]MOV BX,NUMBERLEA SI,A[BX]MOV CX,40CLDREP MOVSBLEA DI,A[BX]LEA SI,BMOV CX,40CLDREP MOVSBSUB NUMBER,40DEC ROWCRLF1 DELETESCRLFACT: JMP CONTINUE1;******************************************************* CODE ENDSEND START实验运行结果:。

基于汇编语言学生成绩管理系统之欧阳治创编

基于汇编语言学生成绩管理系统之欧阳治创编

学生成果管理系统目录设计内容1设计目的2设计要求2设计阐发2子法度阐发7操纵说明13法度代码15总结48参考文献49设计内容设计一个学生成果管理法度,要求能实现以下功能:1)各科成果的录入,修改和删除。

欧阳治创编2021.03.102)按姓名查询每个学生各门课的成果。

3)显示查询结果。

4)统计个分数段的人数。

5)打印学生成果。

设计目的用汇编数据的录入、修改和删除操纵。

设计要求学习如何用汇编语言进行数据处理。

设计阐发1.总体结构整个法度采取主法度调用子法度的办法。

主法度完成菜单的显示,子法度完成一个自力功能办法的实现。

各子法度的实现办法简要描述如下:1)设计INSERT(录入)子法度,先掀开文件SCORE.TXT,并置文件指针到文件尾,然后调用GET_REC子法度接受用户的输入,再把用户的输入欧阳治创编2021.03.10写入文件,最后关闭文件前往主法度。

2)设计Delete(删除)子法度,先掀开文件,再调用宏GETIN获得要删除的学生的姓名,然后读文件中的记录,直到其记录的名字与所输入的名字相同为止,把文件指针后退8个字符(即4门课成果所占的空间),写入8个“0”字符,关闭文件前往主法度。

3)设计List(浏览)子法度时,先掀开文件,然后读一个记录,并通过调用宏SHOW_ITEM将其显示到屏幕上,入文件指针没有达到文件尾,则继续读记录并显示,当指针达到文件尾时,则关闭文件前往主法度。

4)设计Modify(修改)子法度时,先掀开文件SCORE.TXT,通用GER_REC获得要修改的记录,然后读文件中的记录,并与用户输入的记录做比较(只比较记录中的名字部分),若不合则吨下一条记录,若相同则将文件指针后退23个字符(一个记录为23个字符的长度),然后把用户输入的记录写入文件,最后关闭文件前往主法度。

5)设计Count(统计)子法度时,先掀开文件,然后读记录,比较记录的第16个字符,数学成果的欧阳治创编2021.03.102021.03.10高位),并统计,直到文件指针达到文件尾,最后关闭文件调用宏SHOW_ITEM 显示统计结果,返会主法度。

学生成绩管理系统设计实验(汇编语言)

学生成绩管理系统设计实验(汇编语言)

实验六学生成绩管理系统设计实验一、实验目的1、熟悉汇编语言程序结构;2、熟悉INT 21H的文件操作功能调用;3、熟悉INT 21H的1、9号功能和INT 10H常用功能的使用方法;4、掌握多子程序复杂问题程序设计方法;5、掌握利用汇编语言实现字符串的输入输出程序设计方法;6、了解多模块程序设计方法。

二、实验原理我们把可以多次调用、具有通用性、能完成特定功能的程序段编写成的独立程序模块称为子程序。

子程序是把一个程序划分成若干模块所用的主要手段,它便于独立设计、测试程序和编制程序文件。

三、实验内容1、实验要求设计一个学生成绩管理系统,要求完成文件建立、学生成绩录入、显示指定学号的学生记录、删除一个学生的记录、修改学生记录、返回等工作。

学生成绩包括学号(XH)、姓名(XM)、数学(SX)、语文(YW)、外语(WY)字段。

至少包括30名学生信息,每名学生学号字段为4个字符,姓名字段为15个字符(最大),每门成绩字段为3个字符(最大)。

程序设计步骤如下:1、编写主程序main.asm;2、编写文件创建子程序create,实现在指定盘指定文件夹“d:\chengji\2009\”下建立一个指定名称的文件2009doc.dat;3、编写成绩录入子程序append,实现在指定文件尾部插入一个学生的成绩记录;4、编写显示子程序display,实现按指定学号显示一个学生的记录;5、编写修改子程序modify,实现按指定学号修改一个学生的记录字段(不需修改直接回车);6、编写删除子程序,实现按指定学号、姓名删除一个学生的记录;7、编译、链接、调试,产生可执行文件main.exe。

2、程序流程图3、程序代码程序代码如下:DATAS SEGMENTMSG1 DB '1. Append a record$'MSG2 DB '2. Display a record$'MSG3 DB '3. Modify a record$'MSG4 DB '4. Delete a record$'MSG5 DB '5. Create file$'MSG6 DB '6. Return DOS$'MSGC DB 'Please input 1--6:$'MSGE DB 'Error!$'MSGC1 DB 'Please input filename:$'MAXLEN DB 25ACTLEN DB ?STRING DB 25 DUP(?)MAXLEN1 DB 25ACTLEN1 DB ?STRING1 DB 25 DUP(?)PATHNM DB 'D:\chengji\2009\\',23 DUP(?)PATH DB 'D:\chengji\2009\2009doc.dat',00MSGA1 DB 'Please input XH:$'MSGA2 DB 'Please input XM:$'MSGA3 DB 'Please input SX:$'MSGA4 DB 'Please input YW:$'MSGA5 DB 'Please input WY:$'HANDLE DW ?MSGXH DB 'Xuehao: $'MSGXM DB 'Xingming: $'MSGSX DB 'Shuxue:$'MSGYW DB 'Yuwen: $'MSGWY DB 'Waiyu: $'BUFFER DB 2048 DUP(' ')MSGRT DB 'Press any key to return!$'DELSTR DB 33 DUP(' ') DATAS ENDSSTACKS SEGMENT STACKDB 256 DUP(?)STACKS ENDS CODES SEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKS START:MOV AX,DATASMOV DS,AX;******************************** ;主程序MAIN PROC FARS:;清屏CALL CLS ;逐行输出提示信息MOV AH,02HMOV DH,9MOV DL,30INT 10HMOV AH,9LEA DX,MSG1INT 21HMOV AH,02HMOV DH,10MOV DL,30INT 10HMOV AH,9LEA DX,MSG2INT 21HMOV AH,02HMOV DH,11MOV DL,30INT 10HMOV AH,9LEA DX,MSG3INT 21HMOV AH,02HMOV DH,12MOV DL,30INT 10HMOV AH,9LEA DX,MSG4INT 21HMOV AH,02HMOV DH,13MOV DL,30INT 10HMOV AH,9LEA DX,MSG5INT 21HMOV AH,02HMOV DH,14MOV DL,30INT 10HMOV AH,9LEA DX,MSG6INT 21H;提示输入MOV AH,02HMOV DH,15MOV DL,30INT 10HMOV AH,9LEA DX,MSGCINT 21H;从键盘读入一个数字MOV AH,02HMOV DH,15MOV DL,48INT 10HMOV AH,1INT 21H;按数字对应子程序CMP AL,31HJZ CAPPENDCMP AL,32HJZ CDISPLAYCMP AL,33HJZ CMODIFYCMP AL,34HJZ CDELETECMP AL,35HJZ CCREATECMP AL,36HJZ E;若输入不是1-6数字,则提示错误MOV AH,02HMOV DH,16MOV DL,30INT 10HMOV AH,9LEA DX,MSGEINT 21HCCREATE:CALL CREATEJMP SCDELETE:CALL DELETEJMP SCMODIFY:CALL MODIFYJMP SCDISPLAY:CALL DISPLAYJMP SCAPPEND:CALL APPENDJMP SE:MOV AH,4CHINT 21HMAIN ENDP;******************************** ;CREATE程序CREATE PROC NEARPUSH AXPUSH CXPUSH DXPUSH SIPUSH DI;清屏CALL CLS;提示输入文件名MOV AH,2MOV DH,12MOV DL,20INT 10HMOV AH,9LEA DX,MSGC1INT 21H;从键盘读入文件名字符串MOV AH,0AHLEA DX,MAXLENINT 21H;将文件名字符串加到ASCIZ字符串末尾MOV CX,0MOV CL,ACTLENLEA SI,STRINGLEA DI,PATHNMADD DI,16LCREATE:MOV AL,BYTE PTR [SI]MOV [DI],ALINC DIINC SILOOP LCREATE;在ASCIZ字符串末尾加00MOV BYTE PTR [DI],0;按ASCIZ字符串创建文件MOV AH,3CHLEA DX,PATHNMMOV CX,0INT 21HPOP DIPOP SIPOP DXPOP CXPOP AXRETCREATE ENDP;******************************** ;APPEND程序APPEND PROC NEARPUSH AXPUSH BXPUSH CXPUSH DXPUSH SIPUSH DI;清屏CALL CLS;打开文件(只写)MOV AH,3DHMOV AL,01HLEA DX,PATHINT 21HMOV HANDLE,AX;提示输入学号MOV AH,02HMOV DH,10MOV DL,30INT 10HMOV AH,9LEA DX,MSGA1INT 21H;从键盘读入字符串MOV AH,0AHLEA DX,MAXLENINT 21H;在字符串末尾补足空格MOV DX,4CALL FILL;将文件指针定位至文件末尾MOV AH,42HMOV AL,2MOV BX,HANDLEMOV CX,0MOV DX,0INT 21H;写入文件MOV AH,40HMOV BX,HANDLEMOV CX,0MOV CL,ACTLENLEA DX,STRINGINT 21H;提示输入姓名MOV AH,02HMOV DH,11MOV DL,30INT 10HMOV AH,9LEA DX,MSGA2INT 21H;从键盘读入字符串MOV AH,0AHLEA DX,MAXLENINT 21H;在字符串末尾补足空格MOV DX,15CALL FILL;将文件指针定位至文件末尾MOV AH,42HMOV AL,2MOV BX,HANDLEMOV CX,0MOV DX,0INT 21H;写入文件MOV AH,40HMOV BX,HANDLEMOV CX,0MOV CL,ACTLENLEA DX,STRINGINT 21H;提示输入语文成绩MOV AH,02HMOV DH,12MOV DL,30INT 10HMOV AH,9LEA DX,MSGA3INT 21H;从键盘读入字符串MOV AH,0AHLEA DX,MAXLENINT 21H;在字符串末尾补足空格MOV DX,3CALL FILL;将文件指针定位至文件末尾MOV AH,42HMOV AL,2MOV BX,HANDLEMOV CX,0MOV DX,0INT 21H;写入文件MOV AH,40HMOV BX,HANDLEMOV CX,0MOV CL,ACTLENLEA DX,STRINGINT 21H;提示输入数学成绩MOV AH,02HMOV DH,13MOV DL,30INT 10HMOV AH,9LEA DX,MSGA4INT 21H;从键盘读入字符串MOV AH,0AHLEA DX,MAXLENINT 21H;在字符串末尾补足空格MOV DX,3CALL FILL;将文件指针定位至文件末尾MOV AH,42HMOV AL,2MOV BX,HANDLEMOV CX,0MOV DX,0INT 21H;写入文件MOV AH,40HMOV BX,HANDLEMOV CX,0MOV CL,ACTLENLEA DX,STRINGINT 21H;提示输入外语成绩MOV AH,02HMOV DH,14MOV DL,30INT 10HMOV AH,9LEA DX,MSGA5INT 21H;从键盘读入字符串MOV AH,0AHLEA DX,MAXLENINT 21H;在字符串末尾补足空格MOV DX,3CALL FILL;在字符串末尾加回车、换行INC SIMOV BYTE PTR [BX+SI],0DHINC SIMOV BYTE PTR [BX+SI],0AHADD ACTLEN,2;将文件指针定位至文件末尾MOV AH,42HMOV AL,2MOV BX,HANDLEMOV CX,0MOV DX,0INT 21H;写入文件MOV AH,40HMOV BX,HANDLEMOV CX,0MOV CL,ACTLENLEA DX,STRINGINT 21H;关闭文件MOV AH,3EHMOV BX,HANDLEINT 21HPOP DIPOP SIPOP DXPOP CXPOP BXPOP AXRETAPPEND ENDP;******************************** DISPLAY PROC NEARPUSH AXPUSH DX;清屏CALL CLS;提示输入学号MOV AH,02HMOV DH,10MOV DL,28INT 10HMOV AH,9LEA DX,MSGXHINT 21H;从键盘读入学号字符串MOV AH,0AHLEA DX,MAXLENINT 21H;打开文件(只读)MOV AH,3DHMOV AL,00HLEA DX,PATHINT 21HMOV HANDLE,AX;将文件指针定位至文件开头MOV AH,42HMOV AL,0MOV BX,HANDLEMOV CX,0MOV DX,0INT 21H;将文件载入缓存MOV AH,3FHMOV BX,HANDLEMOV CX,2048LEA DX,BUFFERINT 21H;在缓存中找到对应记录LEA SI,BUFFERLEA DI,STRINGMOV CX,AXCALL SEARCHCMP DX,0JZ OUTPUT;若未找到,则提示错误MOV AH,9LEA DX,MSGEINT 21HJMP DEND;显示对应信息OUTPUT:MOV AH,02HMOV DH,11MOV DL,28INT 10HMOV AH,9LEA DX,MSGXMINT 21HADD SI,5MOV AH,9MOV DX,SIINT 21HMOV AH,02H MOV DH,12 MOV DL,28INT 10HMOV AH,9LEA DX,MSGYW INT 21HADD SI,16MOV AH,9MOV DX,SIINT 21HMOV AH,02H MOV DH,13 MOV DL,28INT 10HMOV AH,9LEA DX,MSGSX INT 21HADD SI,4MOV AH,9MOV DX,SIINT 21HMOV AH,02H MOV DH,14 MOV DL,28INT 10HMOV AH,9LEA DX,MSGWY INT 21HADD SI,4MOV AH,9MOV DX,SIINT 21HMOV AH,2MOV DH,15MOV DL,28INT 10HMOV AH,9LEA DX,MSGRTINT 21HMOV AH,1INT 21HDEND: ;关闭文件MOV AH,3EHMOV BX,HANDLEINT 21HPOP DXPOP AXRETDISPLAY ENDP;******************************** MODIFY PROC NEARPUSH AXPUSH DX;清屏CALL CLS;提示输入学号MOV AH,02HMOV DH,10MOV DL,28INT 10HMOV AH,9LEA DX,MSGXHINT 21H;从键盘读入学号字符串MOV AH,0AHLEA DX,MAXLENINT 21H;打开文件(读写)MOV AH,3DHMOV AL,10LEA DX,PATHINT 21HMOV HANDLE,AX;将文件指针定位至文件开头MOV AH,42HMOV AL,0MOV BX,HANDLEMOV CX,0MOV DX,0INT 21H;将文件载入缓存MOV AH,3FHMOV BX,HANDLEMOV CX,2048LEA DX,BUFFERINT 21H;在缓存中找到对应记录LEA SI,BUFFERLEA DI,STRINGMOV CX,AXCALL SEARCHCMP DX,0JZ REVISEXM;若未找到,则提示错误MOV AH,9LEA DX,MSGEINT 21HJMP MEND;修改姓名REVISEXM:MOV AH,02HMOV DH,11MOV DL,28INT 10HMOV AH,9LEA DX,MSGXMINT 21HMOV AH,0AHLEA DX,MAXLENINT 21HCMP BYTE PTR [STRING],0DH ;若为回车,则将指针指向下一字段JNZ XMCONTADD SI,5JMP REVISEYWXMCONT:PUSH SIMOV DX,15CALL FILLPOP SIADD SI,5LEA BX,BUFFERMOV DX,SISUB DX,BXMOV AH,42HMOV AL,00MOV BX,HANDLEMOV CX,00INT 21HMOV AH,40HMOV BX,HANDLEMOV CX,0MOV CL,ACTLENLEA DX,STRINGINT 21H;修改语文成绩REVISEYW:MOV AH,02HMOV DH,12MOV DL,28INT 10HMOV AH,9LEA DX,MSGYWINT 21HMOV AH,0AHLEA DX,MAXLENINT 21HCMP BYTE PTR [STRING],0DHJNZ YWCONTADD SI,16JMP REVISESXYWCONT:PUSH SIMOV DX,3CALL FILLPOP SIADD SI,16LEA BX,BUFFERMOV DX,SISUB DX,BXMOV AH,42HMOV AL,00MOV BX,HANDLEMOV CX,00INT 21HMOV AH,40HMOV BX,HANDLEMOV CX,0MOV CL,ACTLENLEA DX,STRINGINT 21H;修改数学成绩REVISESX:MOV AH,02HMOV DH,13MOV DL,28INT 10HMOV AH,9LEA DX,MSGSXINT 21HMOV AH,0AHLEA DX,MAXLENINT 21HCMP BYTE PTR [STRING],0DHJNZ SXCONTADD SI,4JMP REVISEWYSXCONT:PUSH SIMOV DX,3CALL FILLPOP SIADD SI,4LEA BX,BUFFERMOV DX,SISUB DX,BXMOV AH,42HMOV AL,00MOV BX,HANDLEMOV CX,00INT 21HMOV AH,40HMOV BX,HANDLEMOV CX,0MOV CL,ACTLENLEA DX,STRINGINT 21H;修改外语成绩REVISEWY:MOV AH,02HMOV DH,14MOV DL,28INT 10HMOV AH,9LEA DX,MSGWYINT 21HMOV AH,0AHLEA DX,MAXLENINT 21HCMP BYTE PTR [STRING],0DHJZ MENDPUSH SIMOV DX,3CALL FILLPOP SIADD SI,4LEA BX,BUFFERMOV DX,SISUB DX,BXMOV AH,42HMOV AL,00MOV BX,HANDLEMOV CX,00INT 21HMOV AH,40HMOV BX,HANDLEMOV CX,0MOV CL,ACTLENLEA DX,STRINGINT 21HMEND: ;关闭文件MOV AH,3EHMOV BX,HANDLEINT 21HPOP DXPOP AXRETMODIFY ENDP;******************************** ******************************** **************DELETE PROC NEARPUSH AXPUSH DX;清屏CALL CLS;提示输入姓名MOV AH,02HMOV DH,11MOV DL,28INT 10HMOV AH,9LEA DX,MSGA2INT 21H;读入姓名字符串MOV AH,0AHLEA DX,MAXLEN1INT 21H;提示输入学号MOV AH,02HMOV DH,12MOV DL,28INT 10HMOV AH,9LEA DX,MSGA1INT 21H;读入学号字符串MOV AH,0AHLEA DX,MAXLENINT 21H;打开文件(读写)MOV AH,3DHMOV AL,10LEA DX,PATHINT 21HMOV HANDLE,AX;将文件指针指向开头MOV AH,42HMOV AL,0MOV BX,HANDLEMOV CX,0MOV DX,0INT 21H;载入文件MOV AH,3FHMOV BX,HANDLEMOV CX,2048LEA DX,BUFFERINT 21H;在缓存中搜索学号对应记录LEA SI,BUFFERLEA DI,STRINGMOV CX,AXCALL SEARCHCMP DX,0JNZ DELEND;比较该记录对应姓名是否与输入的相同PUSH SIADD SI,5LEA DI,STRING1MOV CX,0MOV CL,ACTLEN1MOV DX,0LCHECK:MOV AL,[SI]MOV AH,[DI]CMP AL,AHJZ LCONTIMOV DX,1JMP DELERRLCONTI:INC SIINC DILOOP LCHECKPOP SICMP DX,0JZ DEL;姓名不对应则提示错误DELERR:MOV AH,9LEA DX,MSGEINT 21HJMP DELENDDEL:;将文件指针定位至该记录开始处LEA BX,BUFFERMOV DX,SISUB DX,BXMOV AH,42HMOV AL,00MOV BX,HANDLEMOV CX,00INT 21H;将该记录覆盖为空格MOV AH,40HMOV BX,HANDLEMOV CX,33LEA DX,DELSTRINT 21HDELEND: ;关闭文件MOV AH,3EHMOV BX,HANDLEINT 21HPOP DXPOP AXRETDELETE ENDP;******************************** ;清屏程序CLS PROC NEARPUSH AXPUSH BXPUSH CXPUSH DX;屏幕初始化MOV AH,6MOV AL,0MOV BH,7MOV CX,0MOV DX,2479HINT 10H;重定位光标MOV DX,0MOV AH,2INT 10HPOP DXPOP CXPOP BXPOP AXRETCLS ENDP;******************************** ;搜索程序;若找到对应记录,则将DX赋为0,并将SI指向该记录首地址;否则DX 赋为1。

汇编语言编写学生成绩管理系统.

汇编语言编写学生成绩管理系统.

hh MACRO ;回车换行宏定义 PUSH DX PUSH AX MOV DL,0AH MOV AH,2 INT 21H MOV DL,0DH MOV AH,2 INT 21H POP AX POP DX ENDM clear MACRO ;清屏宏定义 PUSH AX PUSH BX PUSH CX PUSH DX MOV AH,2 MOV DH,0 MOV DL,0 INT 10H MOV AH,6 MOV AL,0 MOV BH,7 MOV CH,0 MOV CL,0 MOV DH,24 MOV DL,79 INT 10H ENDM DATAS SEGMENT cj DB 100 DUP(-1 pm DB 100 DUP(0 mz DB 100 DUP(14 DUP(' ','$' strm1 DB '1.insert student score$' strm2 DB '2.delete student score$' strm3 DB '3.show student score and rank$' strm4 DB'ESC.exit$' stri1 DB 'input the student number:$' stri2 DB 'input this student score:$' stri3 DB 'insert success,press any key!$' stri4 DB 'input this student name:$' strd1 DB 'delete the student number:$' strd2 DB 'delete success,press any key!$' strr1 DB'===================score and rank===================$' strr2 DB 'number name score rank $' strr3 DB 'show success,press any key!$' stre DB 'error,please try again$' strq DB 'thanks for using$' DATAS ENDS STACKS SEGMENT STACKS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKS START: MOV AX,DATAS MOV DS,AX main: LEA DX,strm1 MOV AH,9 INT 21H hh LEA DX,strm2 ;获取STRM2的偏移地址 MOV AH,9 INT 21H hh LEA DX,strm3 ;获取STRM3的偏移地址 MOV AH,9 INT 21H hh LEA DX,strm4 MOV AH,9 INT 21H hh main1: MOV AH,1 INT 21H CMP AL,31H ;插入学生成绩 JE insert ;等于则转移INSERT CMP AL,32H ;删除 JE delete CMP AL,33H ;显示 JE rank CMP AL,1BH ;退出 JE quit JMP main1 ;跳转到MAIN1 insert: clear ;调用清屏宏 LEA DX,stri1 MOV AH,9 INT 21H hh CALL shuru MOV BX,AX hh LEA DX,stri4 MOV AH,9 INT 21H hh PUSH BX PUSH DX MOV AX,BX MOV CL,15 MUL CL MOV BX,AX LEADX,mz[BX] ;把名字存到mz中 MOV AH,10 INT 21H POP DX POP BX hh LEA DX,stri2 MOV AH,9 INT 21H hh CALL shuru MOV cj[BX],AL ;把成绩存到cj hh LEA DX,stri3 MOV AH,9 INT 21H MOV AH,1 INT 21H hh clear JMP main delete: clear LEA DX,strd1 MOV AH,9 INT 21H hh CALL shuru MOV BX,AX MOV cj[BX],-1 ;把输入学号的成绩删除 hh LEA DX,strd2 MOV AH,9 INT 21H hh MOV AH,1 INT 21H hh clear JMP main rank: MOV CX,100 MOV DH,1 rank0: MOV DL,DH DEC CXCMP CX,-1H JE rank5 MOV BX,1 rank1: CMP cj[BX],CL JE rank3 rank2: INC BX CMP BX,100 JE rank0 JMP rank1 rank3: MOV pm[BX],DL;把名次存到pm INC DH JMP rank2 rank5: clear LEA DX,strr1 MOV AH,9 INT 21H hh LEA DX,strr2 MOV AH,9 INT 21H hh MOV BX,0 MOV DH,1 rank10: INC BX CMP BX,100 JE rank11 CMP cj[BX],-1 JE rank10 INC DH MOV DL,10 MOV AH,2 INT 10H PUSH BX PUSH DX MOV AX,BX MOV CL,15 MUL CL MOVBX,AX ADD BX,2 LEA DX,mz[BX] MOV AH,9 INT 21H POP DX POP BX MOV DL,1 MOV AH,2 INT 10H MOV AX,BX CALL shuchu MOV DL,30 MOV AH,2 INT 10H MOV AL,cj[BX] CALL shuchu MOV DL,45 MOV AH,2 INT 10H MOV AH,0 MOV AL,pm[BX] CALL shuchu hh JMP rank10 rank11: LEA DX,strr3 MOV AH,9 INT 21H MOV AH,1 INT 21H clear JMP main quit: clear MOV BH,0 MOV AH,2 MOV DH,5 MOV DL,20 INT 10H LEA DX,strq MOV AH,9 INT 21H MOV AH,4CH INT21H shuru PROC NEAR PUSH BX return: MOV AH,1 INT 21H CMP AL,30H JL cuowu CMP AL,39H JG cuowu SUB AL,30H MOV AH,0 MOV BL,10 MUL BL MOV BX,AX MOV AH,1 INT 21H CMP AL,30H JL cuowu CMP AL,39H JG cuowu MOV AH,0 SUB AL,30H ADD AX,BX POP BX RET cuowu: hh LEA DX,stre MOV AH,9 INT 21H hh JMP return shuru ENDP shuchu PROC NEAR PUSH CX PUSH DX MOV CL,10 CBW ;字节扩展为字 IDIV CL MOV DH,AH MOV DL,AL ADD DL,30H MOV AH,2 INT 21H MOV DL,DH ADD DL,30H MOV AH,2 INT 21H POP DX POP CX RET shuchu ENDP CODES ENDS END START。

汇编试验报告-学生信息管理系统

汇编试验报告-学生信息管理系统

学生信息管理系统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 DB99 DUP(20 DUP(0)); 用 7字节单元来存分数, 0-6 中, 0-4 对应输入字符, 5对应输入整数部分的二进制数, 6 对应于小数部分的二进制数GRADE DB99 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 ;显示平均成绩和分段人数关键算法的流程图:关于分段人数与总成绩的计算冒泡排序算法:处理计算计算总成绩Y< 60?A++NY< 70?B++NY< 80?C++NY< 90?D++NY 处理排序冒泡i=0Ki<=Ki+1Y N交换i++N i=counte rY返回<=100E++N错误返回5.效果图输入三人信息,班级学好姓名,然后输入此人成绩。

基于汇编语言学生成绩管理系统方案

基于汇编语言学生成绩管理系统方案
mess4 db ' modify (m) name :',0ah,0dh,'$'
mess5 db ' delete (d) maths :',0ah,0dh,'$'
mess6 db ' query (q) english :',0ah,0dh,'$'
mess7 db ' count (c) computer:',0ah,0dh,'$'
设计要求
学习如何用汇编语言进行数据处理。
设计分析
1.总体结构
整个程序采用主程序调用子程序的方法。主程序完成菜单的显示,子程序完成一个独立功能方法的实现。各子程序的实现方法简要描述如下:
1)设计INSERT(录入)子程序,先打开文件SCORE.TXT,并置文件指针到文件尾,然后调用GET_REC子程序接受用户的输入,再把用户的输入写入文件,最后关闭文件返回主程序。
JNZ B ;不同则转B
INC SI
INC D
LOOP C
(5) MODIFY子程序
MODIFY子程序的功能是修改记录。
先保护现场,然后清除右上部分的记录输入区域,接着打开文件。
用GET_REC子程序获取输入的记录信息,并存入BUFFER1中。从打开的文件中读取一个记录的容(23个字节)放在BUFFER2中。
(7)LIST子程序
LIST子程序的作用是显示文件中的记录。
首先清除记录输入区和显示区域。然后显示记录字段的标题。打开文件,保留文件句柄。读取一条记录的容放在BUFFER1中,并判断是否到了文件末尾,如果不是,则显示这条记录。循环读取直到文件结束。最后关闭程序,恢复现场。

学生成绩管理系统汇编语言

学生成绩管理系统汇编语言

摘要管理信息系统正在向着网络化、智能化和集成化等趋势发展。

学生成绩管理系统是为了更好的管理学生考试成绩而开发的数据管理软件。

它对于一个学校是不可缺少的重要部分,它的内容对于学校的决策者和管理者来说都至关重要。

学生成绩管理管理系统为用户提供充足的信息和快捷的查询手段,实现学生基本信息、成绩的录入,删除,查询,维护以及成绩的统计分析等几方面的功能,是现实问题的迫切要求。

本系统开发的总体任务是实现学生成绩管理的系统化、规范化、自动化。

达到提高学生成绩管理效率的目的。

与传统管理方法相比有明显的优点:查找方便,可靠性高,保密性好,成本低。

彻底改变了以前繁杂的管理模式,实现全面的、相对集中的、职能化的信息综合管理。

计算机被用到信息管理系统的环境正是适应了当今时代飞速发展的信息时代。

人们深刻的认识到了计算机功能的强大,对于复杂的信息管理,计算机充分发挥着它的优越性。

检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低,这些优点极大地减轻了学院教学人员的工作量,缩小开支,提高了学生档案管理的效率和准确性,能够合理的安排时间,学生能够尽快的知道自己的考试成绩。

同时,学生管理系统的应用也为今天的教育在未来市场的竞争力有所提高。

关键字:学生成绩管理,插入,查找,删除,退出,修改;目录1. 系统分析 (3)1.1系统开发背景 (3)1.2初步调查与可行性分析 (3)1.3系统目标 (3)1.4系统流程图 (4)2. 系统总体设计 (5)2.1总体结构图分析 (5)2.2总体结构图 (6)2.3总体数据结构 (6)3、详细设计 (7)3.1 程序功能设计 (7)3.2 设计思路 (7)4、系统测试 (9)4.1测试方案 (9)4.2测试用例及测试结果 (9)4.3软件可靠性 (11)5、软件使用说明书 (12)6、设计总结 (13)参考文献 (14)致谢 (15)附录(源代码) (16)1. 系统分析1.1系统开发背景学生成绩管理系统是为了更好的管理学生考试成绩而开发的数据管理软件。

学生管理系统(界面+源代码)培训讲学

学生管理系统(界面+源代码)培训讲学

内蒙古信息工程系学实训报告系部:信息技术系课程名称:网站网页制作专业班级:14计算机网络技术一班姓名:xxx任课老师:xxx实验实训项目名称网站制作实验类型验证型实验室思科网络实验室实验时间[实验方案设计(步骤)]实验目的:1.熟练掌握SQL语句的编写。

2.掌握使用VS2010对网页的设计。

实验步骤:1.登录页面主要代码:protected void Button1_Click(object sender, EventArgs e){string username = TextBox1.Text;string password = TextBox2.Text;string connStr = "server=(local);uid=sa;pwd=123456;database=StudentManager";SqlConnection conn = new SqlConnection(connStr);SqlCommand cmd = new SqlCommand("select * from UserInfo where username='" + username + "' and password='" + password + "'", conn);conn.Open();SqlDataReader reader = cmd.ExecuteReader();//记?录?集ˉif (reader.Read()){Response.Redirect("main.aspx");}else{Label1.Text = "用?户§名?或ò者?密ü码?错洙?误ó!?!?";}conn.Close();}2.主页面+用户信息管理页面左侧主要运用了TreeView控件,然后用户信息运用了GridView控件,链接数据源,在页面中展示用户信息,主要代码:<asp:GridView ID="GridView1"runat="server"AllowPaging="True"AllowSorting="True"AutoGenerateColumns="False"DataKeyNames="Userid"DataSourceID="SqlDataSource1"style="font-family: 楷?体?; font-size: medium"Width="550px"BackColor="#DEBA84"BorderColor="#DEBA84"BorderStyle="None" BorderWidth="1px"CellPadding="3"CellSpacing="2"><Columns><asp:BoundField DataField="Userid"HeaderText="序ò号?"ReadOnly="True"SortExpression="Userid"/><asp:BoundField DataField="UserName"HeaderText="用?户§名?"SortExpression="UserName"/><asp:BoundField DataField="Password"HeaderText="密ü码?"SortExpression="Password"/><asp:BoundField DataField="Email"HeaderText="电?子哩?邮?件t" SortExpression="Email"/><asp:CommandField ShowDeleteButton="True"ShowEditButton="True"/></Columns><FooterStyle BackColor="#F7DFB5"ForeColor="#8C4510"/><HeaderStyle BackColor="#A55129"Font-Bold="True"ForeColor="White"/><PagerStyle ForeColor="#8C4510"HorizontalAlign="Center"/><RowStyle BackColor="#FFF7E7"ForeColor="#8C4510"/><SelectedRowStyle BackColor="#738A9C"Font-Bold="True"ForeColor="White"/><SortedAscendingCellStyle BackColor="#FFF1D4"/><SortedAscendingHeaderStyle BackColor="#B95C30"/><SortedDescendingCellStyle BackColor="#F1E5CE"/><SortedDescendingHeaderStyle BackColor="#93451F"/></asp:GridView><br/><asp:SqlDataSource ID="SqlDataSource1"runat="server"ConnectionString="<%$ ConnectionStrings:StudentManagerConnectionString %>"DeleteCommand="DELETE FROM [UserInfo] WHERE [Userid] = @Userid"InsertCommand="INSERT INTO [UserInfo] ([Userid], [UserName], [Password], [Email]) VALUES (@Userid, @UserName, @Password, @Email)"SelectCommand="SELECT * FROM [UserInfo]"UpdateCommand="UPDATE [UserInfo] SET [UserName] = @UserName, [Password] = @Password, [Email] = @Email WHERE [Userid] = @Userid">3.学籍信息添加页面主要代码:protected void Button1_Click(object sender, EventArgs e){string connStr = "server=(local);uid=sa;pwd=123456;database=StudentManager";SqlConnection conn = new SqlConnection(connStr);SqlCommand cmd = new SqlCommand("insert intoStudentXj(Sno,Sname,Ssex,Sbrithday,DepartNo,ClassNo,Tel,Srxtime,xuezhi,xueli,address,youbian ,zzmm,pingjia)values('" + this.TextBox1.Text + "','" + this.TextBox2.Text + "','" + RadioButtonList1.Text + "','" + this.TextBox3.Text + "','" + this.TextBox12.Text + "','" + this.TextBox4.Text + "','" + this.TextBox5.Text + "','" + this.TextBox6.Text + "','" +this.TextBox7.Text + "','" + this.TextBox8.Text + "','" + this.TextBox9.Text + "','" +this.TextBox10.Text + "','" + DropDownList1.Text + "','" + this.TextBox11.Text + "')", conn); conn.Open();cmd.ExecuteNonQuery();conn.Close();}4.学籍信息修改本页面也是用GridView控件,与数据库连接,展示出学籍信息,然后生成“修改”,单击“修改”方可进行修改,主要代码:<asp:GridView ID="GridView1"runat="server"AllowPaging="True"AllowSorting="True"AutoGenerateColumns="False"BackColor="#DEBA84"BorderColor="#DEBA84"BorderStyle="None"BorderWidth="1px"CellPadding="3"CellSpacing="2"DataKeyNames="Sno"DataSourceID="SqlDataSource1"style="text-align: center; font-family: 楷?体?; font-size: large; margin-top: 0px;"Width="1471px"><Columns><asp:BoundField DataField="Sno"HeaderText="Sno"ReadOnly="True"SortExpression="Sno"/><asp:BoundField DataField="Sname"HeaderText="Sname"SortExpression="Sname"/><asp:BoundField DataField="Ssex"HeaderText="Ssex"SortExpression="Ssex"/><asp:BoundField DataField="Sbrithday"HeaderText="Sbrithday"本页面运用GridView控件展示出学生信息,设置三种条件查询,按学号、姓名、系别方可查询出学生信息,主要代码:protected void Page_Load(object sender, EventArgs e){string connStr = "server=(local);uid=sa;pwd=123456;database=StudentManager";SqlConnection conn = new SqlConnection(connStr);SqlDataAdapter da = new SqlDataAdapter("select * from StudentXj", conn);DataSet ds = new DataSet();da.Fill(ds);GridView1.DataSource = ds;GridView1.DataBind();}protected void Button1_Click(object sender, EventArgs e){string connStr = "server=(local);uid=sa;pwd=123456;database=StudentManager";SqlConnection conn = new SqlConnection(connStr);SqlDataAdapter da = new SqlDataAdapter("select * from StudentXj where Sno='" +this.TextBox1.Text + "' or Sname='"+ this.TextBox2.Text + "' or DepartNo='"+ this.TextBox3.Text + "'", conn);DataSet ds = new DataSet();da.Fill(ds);GridView1.DataSource = ds;GridView1.DataBind();}6.课程信息添加主要代码:protected void Button1_Click(object sender, EventArgs e){string connStr = "server=(local);uid=sa;pwd=123456;database=StudentManager";SqlConnection conn = new SqlConnection(connStr);SqlCommand cmd = new SqlCommand("insert intoCourse(Courseid,CourseName,Credit,Datetime)values('" + this.TextBox1.Text + "','" +this.TextBox2.Text + "','" + this.TextBox3.Text + "','" + this.TextBox4.Text + "')", conn); conn.Open();cmd.ExecuteNonQuery();conn.Close();Label1.Text = "添?加ó成é功|!?!?!?";}7.课程信息修改添加了GridView控件,使它与数据源连接,查询课程信息分三个条件,按课程编号、课程名称、日期方可查询,主要代码:protected void Page_Load(object sender, EventArgs e){string connStr = "server=(local);uid=sa;pwd=123456;database=StudentManager";SqlConnection conn = new SqlConnection(connStr);SqlDataAdapter da = new SqlDataAdapter("select * from Course", conn);DataSet ds = new DataSet();da.Fill(ds);GridView1.DataSource = ds;GridView1.DataBind();}protected void Button1_Click(object sender, EventArgs e){string connStr = "server=(local);uid=sa;pwd=123456;database=StudentManager";SqlConnection conn = new SqlConnection(connStr);SqlDataAdapter da = new SqlDataAdapter("select * from Course where Courseid='" + this.TextBox1.Text + "' or CourseName='" + this.TextBox2.Text + "' or Datetime='" +this.TextBox3.Text + "'", conn);DataSet ds = new DataSet();da.Fill(ds);GridView1.DataSource = ds;GridView1.DataBind();}9.课程信息删除主要代码:<asp:GridView ID="GridView1"runat="server"AllowPaging="True"AutoGenerateColumns="False"BackColor="#DEBA84"BorderColor="#DEBA84"BorderStyle="None"BorderWidth="1px"CellPadding="3"CellSpacing="2"DataKeyNames="Courseid"DataSourceID="SqlDataSource1"style="text-align: center; font-family: 楷?体?; font-size: large;"><Columns><asp:BoundField DataField="Courseid"HeaderText="Courseid"ReadOnly="True"SortExpression="Courseid"/><asp:BoundField DataField="CourseName"HeaderText="CourseName"SortExpression="CourseName"/><asp:BoundField DataField="Credit"HeaderText="Credit"SortExpression="Credit"/><asp:BoundField DataField="Datetime"HeaderText="Datetime"SortExpression="Datetime"/><asp:CommandField ShowDeleteButton="True"/></Columns><FooterStyle BackColor="#F7DFB5"ForeColor="#8C4510"/><HeaderStyle BackColor="#A55129"Font-Bold="True"ForeColor="White"/><PagerStyle ForeColor="#8C4510"HorizontalAlign="Center"/><RowStyle BackColor="#FFF7E7"ForeColor="#8C4510"/><SelectedRowStyle BackColor="#738A9C"Font-Bold="True"ForeColor="White"/><SortedAscendingCellStyle BackColor="#FFF1D4"/><SortedAscendingHeaderStyle BackColor="#B95C30"/><SortedDescendingCellStyle BackColor="#F1E5CE"/><SortedDescendingHeaderStyle BackColor="#93451F"/></asp:GridView></center><asp:SqlDataSource ID="SqlDataSource1"runat="server"ConnectionString="<%$ ConnectionStrings:StudentManagerConnectionString3 %>"DeleteCommand="DELETE FROM [Course] WHERE [Courseid] = @Courseid"InsertCommand="INSERT INTO [Course] ([Courseid], [CourseName], [Credit],[Datetime]) VALUES (@Courseid, @CourseName, @Credit, @Datetime)"SelectCommand="SELECT * FROM [Course]"UpdateCommand="UPDATE [Course] SET [CourseName] = @CourseName, [Credit] = @Credit, [Datetime] = @Datetime WHERE [Courseid] = @Courseid"><DeleteParameters><asp:Parameter Name="Courseid"Type="Int32"/></DeleteParameters>10.学生成绩添加主要代码:protected void Button1_Click(object sender, EventArgs e){string connStr = "server=(local);uid=sa;pwd=123456;database=StudentManager";SqlConnection conn = new SqlConnection(connStr);SqlCommand cmd = new SqlCommand("insert intoStudentCJ(Sno,Sname,CourseName,Score)values('" + this.TextBox1.Text + "','" +this.TextBox2.Text + "','" + this.TextBox3.Text + "','" + this.TextBox4.Text + "')", conn); conn.Open();cmd.ExecuteNonQuery();conn.Close();Label1.Text = "添?加ó成é功|!?!?!?";}11.学生成绩修改主要代码:<asp:GridView ID="GridView1"runat="server"添加了GridView控件,使它与数据源连接,查询课程信息分三个条件,按课程名称、学号、姓名方可查询,主要代码:protected void Page_Load(object sender, EventArgs e){string connStr = "server=(local);uid=sa;pwd=123456;database=StudentManager";SqlConnection conn = new SqlConnection(connStr);SqlDataAdapter da = new SqlDataAdapter("select * from StudentCJ", conn);DataSet ds = new DataSet();da.Fill(ds);GridView1.DataSource = ds;GridView1.DataBind();}protected void Button2_Click(object sender, EventArgs e){string connStr = "server=(local);uid=sa;pwd=123456;database=StudentManager";SqlConnection conn = new SqlConnection(connStr);SqlDataAdapter da = new SqlDataAdapter("select * from StudentCJ where CourseName='" + this.TextBox1.Text + "' or Sno='" + this.TextBox2.Text + "' or Sname='" + this.TextBox3.Text + "'", conn);DataSet ds = new DataSet();da.Fill(ds);GridView1.DataSource = ds;GridView1.DataBind();}13.学生成绩删除主要代码:<asp:GridView ID="GridView1"runat="server"AllowPaging="True"AutoGenerateColumns="False"BackColor="#DEBA84"BorderColor="#DEBA84"BorderStyle="None"BorderWidth="1px"CellPadding="3"CellSpacing="2"DataKeyNames="Sno"DataSourceID="SqlDataSource1"style="font-family: 楷?体?; font-size: large; text-align: center"Width="561px"><Columns><asp:BoundField DataField="Sno"HeaderText="Sno"ReadOnly="True"SortExpression="Sno"/><asp:BoundField DataField="Sname"HeaderText="Sname"SortExpression="Sname"/><asp:BoundField DataField="CourseName"HeaderText="CourseName"SortExpression="CourseName"/><asp:BoundField DataField="Score"HeaderText="Score"SortExpression="Score"/><asp:CommandField ShowDeleteButton="True"/></Columns><FooterStyle BackColor="#F7DFB5"ForeColor="#8C4510"/><HeaderStyle BackColor="#A55129"Font-Bold="True"ForeColor="White"/><PagerStyle ForeColor="#8C4510"HorizontalAlign="Center"/><RowStyle BackColor="#FFF7E7"ForeColor="#8C4510"/><SelectedRowStyle BackColor="#738A9C"Font-Bold="True"ForeColor="White"/><SortedAscendingCellStyle BackColor="#FFF1D4"/><SortedAscendingHeaderStyle BackColor="#B95C30"/><SortedDescendingCellStyle BackColor="#F1E5CE"/><SortedDescendingHeaderStyle BackColor="#93451F"/></asp:GridView><asp:SqlDataSource ID="SqlDataSource1"runat="server"ConnectionString="<%$ ConnectionStrings:StudentManagerConnectionString6 %>"DeleteCommand="DELETE FROM [StudentCJ] WHERE [Sno] = @Sno"InsertCommand="INSERT INTO [StudentCJ] ([Sno], [Sname], [CourseName], [Score]) VALUES (@Sno, @Sname, @CourseName, @Score)"SelectCommand="SELECT * FROM [StudentCJ]"UpdateCommand="UPDATE [StudentCJ] SET [Sname] = @Sname, [CourseName] = @CourseName, [Score] = @Score WHERE [Sno] = @Sno"><DeleteParameters><asp:Parameter Name="Sno"Type="String"/></DeleteParameters>。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

汇编语言版学生管理系统汇编语言课程实习报告实习题目学生成绩管理系统学生姓名班级(学号)院系指导老师提交时间成绩目录题目一:学生成绩管理系统 (4)二、总体设计 (5)程序主界面: (8)主程序流程图 (13)详细设计 (15)菜单模块 (15)输入模块 (16)主程序代码 (18)调试过程 (29)总结: (32)参考文献: (33)题目一:学生成绩管理系统基本功能:1、输入学生各门功课成绩;(假设3门功课,每门功课有唯一编号)2、对学生成绩记录进行查询检索(按学号、姓名)3、能修改指定学号的学生成绩;4、对学生成绩排序(按总成绩降序排列);5、、统计指定学号的学生的平均成绩在屏幕上显示;6、统计指定编号课程的平均成绩在屏幕上显示;7、每门课程成绩分析:在屏幕上显示3门课程的各个分数段的学生人数;(分数段为:>=90;80~89;70~79;60~69;<=59)8、退出系统功能二、总体设计功能结构图设计依据程序的功能需求,描述该系统功能的结构图如下:图1 系统功能结构图student strucnames db 18 dup ('$')maths dw?english dw?chinese dw?total dw 0avg dw 0student endsDATAS SEGMENTstu_array student 10 dup(<>)构建了student结构体,在存储方面使得结构变得简单。

insert proc nearinc numscur1 0altert mes7scur 1altert mes4sub bh,bhmov bl,numbindec bxcrlfmov ah,09lea dx,mesint 21hsub ah,ahmov al,28dmul nummov si,axscur 2mov ah,0ahlea dx,stu_array[si].namessub bh,bhmov bl,stu_array[si+1].namesmov stu_array[si+bx+2].names,'$'int 21hscur 3call decibinmov stu_array[si].maths,bxadd stu_array[si].total,bxscur 4call decibinmov stu_array[si].english,bxadd stu_array[si].total,bxscur 5call decibinmov stu_array[si].chinese,bxadd stu_array[si].total,bxmov bl,3mov ax, stu_array[si].totaldiv blsub ah,ahmov stu_array[si].avg,axretinsert endp用num做全局变量为学生的编号,在学生查询方面比较便利。

程序主界面:Insert子程序界面:Modify子程序界面:Query子程序界面:学生平均成绩分析界面:学科成绩界面:分数段界面:依据程序的功能的划分,各功能定义如下:(1)插入学生成绩功能名:insert功能描述:通过此功能可以插入一名学生的成绩信息,学号、姓名、语文成绩、数学成绩、英语成绩。

(2)学生平均成绩功能名: Printit功能描述:通过此功能指定学号的学生平均成绩(3)学科平均成绩功能名:Academic功能描述:通过此功能可以显示指定编号的学科平均成绩。

(4)查询学生成绩功能名:query功能描述:通过此功能可以查询一名学生的成绩信息,学号、姓名、语文成绩、数学成绩、英语成绩。

(5)修改学生成绩功能名:modify功能描述:通过此功能可以修改一名学生的成绩信息,学号、姓名、语文成绩、数学成绩、英语成绩。

(6)学生成绩排名功能名:rank功能描述:通过此功能可以查看学生成绩总分排名。

(7)各科分数段人数功能名:Analysiss功能描述:通过此功能可以查看每科分数段人数。

(8)退出学生成绩管理系统功能名:esc功能描述:退出成绩管理系统主程序流程图NYNYNY详细设计菜单模块student strucnames db 18 dup ('$')maths dw?english dw?chinese dw?total dw 0avg dw 0student endsDATAS SEGMENTstu_array student 10 dup(<>)recname db 18 dup('$')num db0num1 dw0num2 dw0num3 dw0num4 dw0num5 dw 0num6 dw 0rec dw 0mes db' Name:',13,10db' Maths:',13,10db' English:',13,10db' Chinese:',13,10,'$'mes1 db' Can`t find the student!$'mes2 db'-------------------Main Menu------------------',13,10,13,10db'I.Insert the information',13,10,13,10db'M.Modify the information',13,10,13,10db'Q.Query the student',13,10,13,10db'C.Char for query the student',13,10,13,10db'P.Printit the student average scores',13,10,13,10db'S.Student performance analysiss',13,10,13,10db'R.Rank of sum grade',13,10,13,10db'G.Academic average',13,10,13,10db'E.ESC',13,10,13,10db'-------Student Grade Management System--------',13,10,'$' mes3 db'Please input num of the student:$'mes4 db'Num of the student is:$'mes5 db'-------Query the student-----------$'mes6 db'-------Modify the information------$'mes7 db'-------Insert the information------$'mes8 db'-------Student average scores------',13,10db' Name:',13,10db'Avgscore:',13,10,'$'mes9 db'-------Maths Analysiss-------------',13,10db' >=90:',13,10db' 80~80:',13,10db' 70~79:',13,10db' 60~69:',13,10db' <=59:',13,10,'$'mes10 db'-------English Analysiss-----------',13,10db' >=90:',13,10db' 80~80:',13,10db' 70~79:',13,10db' 60~69:',13,10db' <=59:',13,10,'$'mes11 db'-------Chinese Analysiss-----------',13,10db' >=90:',13,10db' 80~80:',13,10db' 70~79:',13,10db' 60~69:',13,10db' <=59:',13,10,'$'mes12 db'There is no data!$'mes13 db'---------M->Avg of maths------------',13,10,13,10db'---------N->Avg of english----------',13,10,13,10db'---------C->Avg of chinese----------',13,10db'Please input the char:$'mes14 db' Maths:$'mes15 db' English:$'mes16 db' Chinese:$'sum dw 30 dup(' ')输入模块menu:call clear_screenscur1 1push axpush bxpush cxpush dxpush simov ah,2mov bh,0mov dh,1mov dl,0int 10hmov ah,09lea dx,mes2int 21hmov ah,1int 21hcmp al,'i'jz iicmp al,'q'jz qqcmp al,'m'jz mmcmp al,'p'jz PPcmp al,'s'jz ss2cmp al,'c'jz cccmp al,'r'jz rrcmp al,'g'jz ggcmp al,'e'jz eejmp menugg:call clear_screencall Academic_averagejmp menurr:call clear_screencall rankjmp menuii:call clear_screencall insertjmp menuqq:call clear_screencall queryjmp menumm:call clear_screencall modifyjmp menupp:call clear_screencall student_pjmp menuss2:call clear_screencall score_analysisjmp menucc:call clear_screencall query_charjmp menu;此处输入代码段代码ee:MOV AH,4CHINT 21H主程序代码START:MOV AX,DATASMOV DS,AXmenu:call clear_screenscur1 1push axpush bxpush cxpush dxpush simov ah,2mov bh,0mov dh,1mov dl,0int 10hmov ah,09lea dx,mes2int 21hmov ah,1int 21hcmp al,'i'jz iicmp al,'q'jz qqcmp al,'m'jz mmcmp al,'p'jz PPcmp al,'s'jz ss2cmp al,'c'jz cccmp al,'r'jz rrcmp al,'g'jz ggcmp al,'e'jz eejmp menugg:call clear_screencall Academic_averagejmp menurr:call clear_screencall rankjmp menuii:call clear_screencall insertjmp menuqq:call clear_screencall queryjmp menumm:call clear_screencall modifyjmp menupp:call clear_screencall student_pjmp menuss2:call clear_screencall score_analysisjmp menucc:call clear_screencall query_charjmp menu;此处输入代码段代码ee:MOV AH,4CHINT 21H;********************子程序代码query_char proc nearcmp num,0jz qc_exitmov ah,0ahlea dx,recnameint 21hsub bh,bhmov bl,recname+1mov recname[bx+2],'$'scur 1sub ah,ahmov al,28dmul nummov bx,axmov ah,09lea dx,stu_array[bx].namesadd dx,2int 21hcrlflea dx,recnameadd dx,2mov ah,09int 21hlea di,recnameadd di,2lea si,stu_array[bx].namesadd si,1sub ch,chmov cl,recname+1cldrepz cmpsbjz qc_exit1crlfsub dh,dhmov dl,numqc_loop:sub ah,ahmov al,28dmul nummov si,axlea di,stu_array[si].namesadd di,2lea si,recnameadd si,1sub ch,chmov cl,recname+1cldrepz cmpsbjz qc_exit1dec dlcmp dl,0jz qc_exitjmp qc_loopqc_exit:scur 6altert mes1crlfqc_exit1:mov ah,01mov dl,0ahint 21hret;**********************insert proc nearinc numscur1 0altert mes7scur 1altert mes4sub bh,bhmov bl,numbindec bxcrlfmov ah,09lea dx,mesint 21hsub ah,ahmov al,28dmul nummov si,axscur 2mov ah,0ahlea dx,stu_array[si].namessub bh,bhmov bl,stu_array[si+1].namesmov stu_array[si+bx+2].names,'$' int 21hscur 3call decibinmov stu_array[si].maths,bxadd stu_array[si].total,bxscur 4call decibinmov stu_array[si].english,bxadd stu_array[si].total,bxscur 5call decibinmov stu_array[si].chinese,bxadd stu_array[si].total,bxmov bl,3mov ax, stu_array[si].totaldiv blsub ah,ahmov stu_array[si].avg,axretinsert endp;****************************scur1 0altert mes5crlfmov ah,09lea dx,mesint 21hsno:sub dh,dhmov dl,numaltert mes3call decibinq:cmp dx,0jz errorcmp bx,dxjz idec dxcmp dx,0jz errorjmp qi:sub ah,ahmov al,28dmul dlmov si,axscur 1mov ah,09lea dx,stu_array[si].namesadd dx,2int 21hcrlfscur 2bindec stu_array[si].mathscrlfscur 3bindec stu_array[si].englishcrlfscur 4bindec stu_array[si].chinesemov ah,1mov dl,0ahint 21hjmp q_exiterror:crlfmov ah,09lea dx,mes1int 21hcrlfmov ah,1mov dl,0ahint 21hq_exit:retquery endp;********************************** modify proc nearscur1 0altert mes6crlfmov ah,09lea dx,mesint 21hsno1:sub dh,dhmov dl,numaltert mes3call decibinq1:cmp dx,0jz error1cmp bx,dxjz i1dec dxcmp dx,0jz error1jmp q1i1:sub ah,ahmov al,28dmul dlmov si,axscur 1mov ah,0ahlea dx,stu_array[si].namesint 21hsub bh,bhmov bl,stu_array[si+1].namesmov stu_array[si+bx+2].names,'$'scur 2call decibinmov stu_array[si].maths,bxadd stu_array[si].total,bxscur 3call decibinmov stu_array[si].english,bxadd stu_array[si].total,bxscur 4call decibinmov stu_array[si].chinese,bxadd stu_array[si].total,bxmov bl,3mov ax, stu_array[si].totaldiv blsub ah,ahmov stu_array[si].avg,axjmp m_exiterror1:crlfmov ah,09lea dx,mes1int 21hcrlfmov ah,1mov dl,0ahint 21hm_exit:retmodify endp;*********************************** score_analysis proc nearsub ch,chmov cl,nummov dx,cxcmp cx,0jz s_aexitloop1: ;mathscall loop2loop loop1scur1 0altert mes9scur 1bindec num1crlfscur 2bindec num2crlfscur 3bindec num3crlfscur 4bindec num4crlfscur 5bindec num5crlfmov num1,0mov num2,0mov num3,0mov num4,0mov num5,0;**************************sub ch,chmov cl,nummov dx,cxcmp cx,0jz s_aexitloop5: ;englishcall loop3loop loop5scur1 6altert mes10scur 7bindec num1crlfscur 8bindec num2crlfscur 9bindec num3crlfscur 10bindec num4crlfscur 11bindec num5crlfmov num1,0mov num2,0mov num3,0mov num4,0mov num5,0;******************************sub ch,chmov cl,nummov dx,cxcmp cx,0jz s_aexitloop6: ;chinesecall loop4loop loop6scur1 12altert mes11scur 13bindec num1crlfrank proc nearscur1 0altert mes17cmp num,0jz r_exit1mov bx,0sub ch,chmov cl,nummov si,0xch:add si,28dadd bx,2mov ax,stu_array[si].totalmov sum[bx],axloop xchsub bh,bhmov bl,numfmax1:inc scuinc ranknumcall fmaxdec bxjnz fmax1jmp r_exitr_exit1:scur 2altert mes12jmp r_exit0r_exit:mov bx,0sub ch,chmov cl,numxch1:add bx,2mov ax,0mov sum[bx],axloop xch1mov scu,1mov ranknum,0r_exit0:mov ah,01mov dl,0ahint 21hretrank endp;*****************************fmax proc nearpush bxsub ah,ahmov cl,nummov ax,summov bx,2mov si,0 ;偏移地址初始为0,放在si s:cmp ax,sum[bx]jb ajmp ba:mov ax,sum[bx];mov si,bx ;记录值大的偏移地址b:add bx,2loop smov ax,sum[si]mov max,axsub bh,bhmov bl,2mov ax,sidiv blmov maxnum2,axmov bx,siscur1 scubindec maxnum2scur2 scubindec maxsub ah,ahmov al,14dmul blmov bx,axscur sculea dx,stu_array[bx].namesadd dx,2mov ah,09int 21hscur3 scubindec ranknumcrlfmov sum[si],0pop bxretfmax endp调试过程使用说明:根据界面输入字母即可调用全部功能总结:这学期通过学习汇编程序设计,使我认识到它是计算机语言里的第一个语言。

相关文档
最新文档