版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
华北科技学院课程设计说明书课程名称:汇编语言班级:计算机B08-1姓名:__徐恒鹏_学号:__200807014103_设计题目:___学生成绩管理_设计时间:至_指导教师:_____李冬艳___________评语:_____________________________________________________________________________________________________________________________________________________________________________________________________评阅成绩:____评阅教师:_____一、课程设计目的进行程序设计方法和技能的根本训练,稳固在课堂上学到的有关程序设计的根本知识和根本方法,通过实际动手能力的培养,进一步熟悉汇编语言的结构和使用方法,到达能独立阅读、编制和调试一定规模的汇编语言程序的水平。二、课程设计要求1.要求编写并调试通过一个小型软件,实现对软件或硬件的操作。2.遵循模块化、结构化的程序设计方法。3.要求程序必须正确。4.程序简明易懂,多运用输入输出提示,出错信息及必要的注释。5.要求程序结构合理,语句使用得当。6.适当追求编程技巧和程序运行效率。三、课程设计题目:学生成绩管理四、课题分析学生成绩管理,顾名思义,就是管理学生的成绩,站在使用者的立场上来看,最根本需求的便是将学生成绩输入,求和并进行排名,当然还有其它更为人性化的需求,比方顺便得到学生的平均成绩,统计各科各个分数段的人数等等,甚至为了保存结果,可以将学生的所有成绩及排名保存在一个文件里面,以便以后调用。所以经过缜密思虑,确定学生成绩管理的一下几个功能:数据输入功能。这是必不缺少的功能,学号的输入,成绩的输入都离不了这个功能,在输入成绩时,特地加了一个判断功能,在输入不合理的成绩时,程序将提示出错,并要求重新输入。在输入学生学号的时候,程序首先会判断此学生的成绩是否存在,如果存在,那么程序提示需重新输入。修改功能。考虑到会存在在输入成绩时,容易输入错误,或者发生个别学生的试卷被误判需修改成绩等情况,所以加了此功能,在发生以上情况时可以调用此功能,修改指定学生的成绩。删除学生信息的功能。如果输入的学生信息根本不存在,或者发生其它情况需删除一个无意义的学生信息时,可以调用此功能。此功能将实现将指定学号学生的信息删除。信息查找功能。当需要查询某个学生的成绩或者检查输入是否有误时,可以调用此功能,此功能实现将指定学号学生的成绩显示出来。实际上在调用此功能的同时,程序会首先求的总成绩,平均成绩,然后产生排名结果,最后将数据信息显示。显示排名信息功能。此功能会将学生成绩自动相加,得到每位学生的总成绩及平均成绩,然后进行排名,得到每个学生的名词,最后按照输入顺序将所有学生的学号,语文成绩,英语成绩,数学成绩,平均成绩,总成绩,名次依次输出。课程成绩分析功能。此功能实现在屏幕上显示三门课程的各个分数段的学生人数,以表格的形式在屏幕上显示。〔分数段为:>=90;80~89;70~79;60~69;<=59〕文件写入及退出功能。此功能实现将学生的信息保存在一个文件里。此程序默认将文件放在C盘下,名称为:score,属性为txt格式的文本文档。写入文件完毕后,关闭文件,并退出程序。五、流程图:主程序流程图开始开始创立文件创立文件显示主菜单显示主菜单输入功能号Ni?输入功能号Ni?Nm?Nm?N提示输入有误
d?N提示输入有误
d?Yf?Yf?NYNYNs?Ns?Yc?Yc?e?NYe?NYYYYY调用子程序insert调用子程序modify调用子程序de调用子程序find调用子程序showw调用子程序insert调用子程序modify调用子程序de调用子程序find调用子程序showw调用子程序showYY结束结束返回主菜单大于120NY调用input子程序返回主菜单大于120NY调用input子程序输入学号学号是否存在提示重新输入学号输入成绩YN调用input子程序调用宏shuru调用input子程序调用宏shuru学号是否存在?学号是否存在?输入学号输入学号YNYN修改成绩学号是否存在提示输入有误重新输入修改成绩学号是否存在提示输入有误重新输入NN大于120Y大于120Y提示重新输入学号提示重新输入学号N输入成绩N输入成绩返回主菜单返回主菜单(a)子程序insert流程图〔b〕子程序modify流程图调用宏shuru,输入学号调用宏shuru,输入学号调用宏shuru,输入学号调用宏shuru,输入学号NN学号是否存在?学号是否存在?NN学号是否存在?学号是否存在?YYYY显示查询结果删除记录显示查询结果删除记录返回主菜单返回主菜单返回主菜单返回主菜单〔c〕子程序del流程图〔d〕子程序find流程图将计数数组清零将名次清零将计数数组清零将名次清零调用rank子程序调用rank子程序调用countt子程序调用countt子程序调用相关宏调用shuchu子程序调用相关宏调用shuchu子程序返回主菜单返回主菜单返回主菜单返回主菜单〔e〕子程序show流程图〔f〕子程序showw流程图设置读写指针设置读写指针写入文件写入文件关闭文件关闭文件结束结束〔g〕子程序exit流程图六、程序源代码zhuanssmacroj,t;将三位数的数据转换成为三个对应的字符,并将其存入缓冲区zs中pushbxmovsi,tmovax,jmovbl,100divbladdal,30hmovzs[si],aladdsi,1moval,ahcbwmovbl,10divbladdal,30haddah,30hmovzs[si],aladdsi,1movzs[si],ahaddsi,1popbxendmclearMACRO;清屏MOVAH,2MOVDH,0MOVDL,0 INT10HMOVAH,6MOVAL,0MOVBH,7MOVCH,0MOVCL,0MOVDH,24MOVDL,79 INT10HENDMkongmacro;回车换行movah,2movdl,0ahint21hmovah,2movdl,0dhint21hendmoutputmacrop;字符串输出movdx,offsetpmovah,9 int21hendmshurumacro;二位数数据输入movah,01 int21hsubal,30h cbwmovbl,10mulblmovdl,almovah,01h int21hsubal,30hadddl,alendmzhuanemacroe,b;将二位数转换成对应两个字符,并将其存入缓冲区zspushbxmovsi,bmoval,ecbwmovbl,10divbladdah,30haddal,30hmovzs[si],aladdsi,1movzs[si],ahaddsi,1popbxendmzhuansmacrof,s;将三位数成绩转换成为对应的三个字符,并存入缓冲区zs中pushbxmovsi,smoval,fcbwmovbl,100divbladdal,30hmovzs[si],aladdsi,1moval,ahcbwmovbl,10divbladdal,30haddah,30hmovzs[si],aladdsi,1movzs[si],ahaddsi,1popbxendmshuzimacror;二位数据输出moval,rcbwmovbl,10divblmovbl,ahmovdl,aladddl,30hmovah,2 int21hmovdl,bladddl,30hmovah,2 int21hendmshuruumacro;三位数数据输入shurumoval,dlmovdl,10muldlmovdx,axmovah,1int21hsubal,30hcbwadddx,axendmshuziimacrou;三位数数据输出movax,umovbl,100divblmovbl,ahmovdl,aladddl,30hmovah,2int21hshuziblendmDATASSEGMENT mdw0;移动文件指针时,选择绝对移动方式,那么m代表指针偏移量 zsdb18dup(?);缓冲区用来存放单个学生信息的字符 pathnamdb'C:\score.txt',00h;建立目录项 handledw?;文件句柄 bufdb3dup(?);输入缓冲区 zcdw100dup(?);存放总成绩的数组 pjdb100dup(?);存放平均成绩数组 ndb0;存放输入的学生信息的个数 gs0db5dup(0);记录所查询科目分数段的 gs1db5dup(0) gs2db5dup(0)mcdb100dup(1);存放学生的名次的数组chidb100dup(?);存放学生成绩的数组engdb100dup(?)matdb100dup(?)xhdb100dup(?);存放学生学好的数组cour0db'chinese','$'cour1db'english','$'cour2db'maths','$'tsdb13,10,'Youaresuccessful,pressanykeytocontinue!',13,10,'$'ts1db13,10,'Youarewrong,Tryagain!',13,10,'$'ts3db13,10,'Thescoreyouinputisbiggerthan127,inputagian!',13,10,'$'ts4db13,10,'Theschoolnumberyouinputisexist,pleasetryagain!',13,10,'$'caidb'***************Insertadata*******************<i>',13,10,'$'cai1db'***************Modifyadata*******************<m>',13,10,'$'cai2db'***************Deleteadata*******************<d>',13,10,'$'cai3db'***************Findadata*******************<f>',13,10,'$'cai4db'***************Showtherank*******************<s>',13,10,'$'cai6db'***************Showthecount******************<c>',13,10,'$'cai5db'***************ExitwiththekeyboardofESC***<ESC>',13,10,'$'ts2db'PleasechoosetheFunction',13,10,'$'messdb13,10,'Thedatayouinputisnotexist,inputagain',13,10,'$'mess1db13,10,'Pleaseinputtheschoolnumber',13,10,'$'mess2db13,10,'Pleaseinputthreescores(0-120)',13,10,'$'mess4db'chineseenglishmaths',13,10,'$'mess3db'AothorbyXuHengpeng',13,10,'$'strr1DB'*******************scoreandrank===================',13,10,'$' strr2DB13,10,'numberchiengmathaveragesumrank',13,10,'$' strr3db13,10,'course>=90>=80>=70>=60<60',13,10,'$' bgdb'','$'DATASENDSSTACKSSEGMENT;此处输入堆栈段代码STACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AXmoves,axmovah,3ch;请求创立文件movcx,00;默认属性leadx,pathnam;装入pathnam的地址int21hmovhandle,ax;保存文件句柄main:;主菜单显示outputcaioutputcai1outputcai2outputcai3outputcai4outputcai6outputcai5outputts2movah,1;输入字符,选择功能键int21hcmpal,'i'jnen1callinsert;调用insert子程序,输入学生学号,成绩jmprkn1:cmpal,'m'jnen2callmodify;调用modify子程序,修改指定学生的成绩jmprkn2:cmpal,'d';调用de子程序,删除制定学生的成绩jnen3calldejmprkn3:cmpal,'f';调用find子程序,显示指定学生的成绩及名次jnen4callfindjmprkn4:cmpal,'s';调用show子程序,显示所有学生的各科成绩,平均成绩,总成绩及名次jnen5callshowjmprkn5:cmpal,'c';调用showw子程序,显示各科各分数段的学生数量jnen6callshowwjmprkn6:cmpal,1bh;调用exit子程序,将数据保存到score.txt文件中,并退出程序jnen7callexitn7:clearoutputts1jmpmainrk:outputtsmovah,1int21hclearjmpmain;****************************************exitprocnear;退出movcl,n;写入文件的次数cbwmovbx,0movdi,0zh:pushdi;保存di,cx,bx中的内容pushbxpushcxmovsi,0zhuanexh[bx],si;调用宏zhuane将两位数的学号转换为对应的二个字符,并存放到zs缓冲区中zhuanschi[bx],si;调用宏zhuans将三位数的语文成绩转换为对应的三个字符,并存放到zs缓冲区中zhuanseng[bx],si;调用宏zhuans将三位数的英语成绩转换为对应的三个字符,并存放到zs缓冲区中zhuansmat[bx],si;调用宏zhuans将三位数的数学成绩转换为对应的三个字符,并存放到zs缓冲区中zhuanspj[bx],si;调用宏zhuans将三位数的平均成绩转换为对应的三个字符,并存放到zs缓冲区中zhuansszc[di],si;调用宏zhuanss将三位数的总成绩成绩转换为对应的三个字符,并存放到zs缓冲区中zhuanemc[bx],si;调用宏zhuane,将两位数的名词,转换为对应的二个字符,并存放到zs缓冲区中movah,42h;移动读写指针moval,00;移动方式为绝对移动方式movbx,handlemovcx,00movdx,mint21haddm,20movah,40h;调用40h功能,请求写文件movbx,handle;获取文件句柄movcx,19;写入长度为19个字节leadx,zs;将缓冲区zs中的内容写入文件score.txtint21hpopcxpopbxpopdiadddi,2addbx,1subcx,1cmpcx,0;判断写入是否完毕jgzhmovbx,handle;写入完毕,关闭文件movah,3ehint21hclearoutputmess3MOVAH,4CH;退出程序INT21Hretexitendp;****************************************sumprocnear;求学生的总成绩movcl,nmovch,0movsi,0movbx,0sss:moval,chi[si];将三科成绩相加,将总成绩传给数组zcmovah,0movdl,mat[si]movdh,0addax,dxmovdl,eng[si]movdh,0addax,dxmovzc[bx],axaddbx,2addsi,1loopsssretsumendp;***************************************pingprocnear;求学生的平均成绩movcl,ncbwmovsi,0movbx,0p_p:movax,zc[bx];将总成绩除以三,获取的数据传送给数组pjmovdl,3divdlmovpj[si],aladdsi,1addbx,2loopp_pretpingendp;******************************************modifyprocnear;修改学生学号,成绩md1:outputmess1shurumovbl,nmovbh,0moval,dlmovsi,0md:cmpal,xh[si];先查找输入的学生是否存在jeqq1_1;查到的话,就跳转到qq1_1输入修改的值,也就是重新输入addsi,1cmpsi,bxjbemdoutputmessjmpmd1;不相等继续输入学号qq1_1:movdi,sioutputmess2outputmess4movsi,0movcx,3qq3_1:shuruu;分别输入语文,英语,数学成绩,并将其放在缓冲区buf中cmpdx,78h;比拟输入的成绩是否大于120,如果大于120的话,那么重新输入成绩jbeqq2_1outputts3jmpqq1_1qq2_1:movbuf[si],dloutputbgaddsi,1loopqq3_1moval,buf[0];将存入buf中的成绩,分别赋值给存放对应科目的成绩的数组movchi[di],almoval,buf[1]moveng[di],almoval,buf[2]movmat[di],alretmodifyendp;****************************************************counttprocnear;统计各科各个分数段学生的个数movcx,5movsi,0zl:movgs0[si],0addsi,1loopzlmovcl,nmovch,0movsi,0c11:moval,chi[si]cmpal,90jlcc1addgs0[0],1jmpcc8cc1:cmpal,80jlcc2addgs0[1],1jmpcc8cc2:cmpal,70jlcc3addgs0[2],1jmpcc8cc3:cmpal,60jlcc4addgs0[3],1jmpcc8cc4:addgs0[4],1cc8:addsi,1loopc11leasi,gs0leadi,gs1movcx,5cldrepmovsbmovcx,5movsi,0cc9:movgs0[si],0addsi,1loopcc9movcl,nmovch,0movsi,0movcl,nmovch,0movsi,0c111:moval,eng[si]cmpal,90jlcc15addgs0[0],1jmpcc88cc15:cmpal,80jlcc22addgs0[1],1jmpcc88cc22:cmpal,70jlcc33addgs0[2],1jmpcc88cc33:cmpal,60jlcc44addgs0[3],1jmpcc88cc44:addgs0[4],1cc88:addsi,1loopc111leasi,gs0leadi,gs2movcx,5cldrepmovsbmovcx,5movsi,0ct:movgs0[si],0addsi,1loopctmovcl,nmovch,0movsi,0c13:moval,mat[si]cmpal,90jlcc1_2addgs0[0],1jmpcc8_2cc1_2:cmpal,80jlcc2_2addgs0[1],1jmpcc8_2cc2_2:cmpal,70jlcc3_2addgs0[2],1jmpcc8_2cc3_2:cmpal,60jlcc4_2addgs0[3],1jmpcc8_2cc4_2:addgs0[4],1cc8_2:addsi,1loopc13retcounttendp;******************************************findprocnear;查找学生成绩callsumcallpingbj1:outputmess1shurumovbl,nmovbh,0moval,dlmovsi,0bj:cmpal,xh[si];将输入的学号与输入的学号相比,jei;存在的话,将此学生的成绩输出addsi,1cmpsi,bxjbebjoutputmessjmpbj1i:outputstrr2shuzixh[si]outputbgmoval,chi[si]cbwshuziiaxoutputbgmoval,eng[si]cbwshuziiaxoutputbgmoval,mat[si]cbwshuziiaxoutputbg;输出空格的字符串,用于与标题栏对齐moval,pj[si]cbwshuziiaxoutputbgmovax,simovbl,2mulblmovbx,axshuziizc[bx]outputbgshuzimc[si]retfindendp;***********************************************insertprocnear;插入学生,学号及成绩callinputaddn,1retinsertendp;***********************************************showprocnear;显示结果排名callsumcallpingcallrankcallshuchuretshowendp;**********************************************showwprocnear;显示各个学科各分数段的人数callcounttoutputstrr3outputcour0outputbgshuzigs1[0]outputbgshuzigs1[1]outputbgshuzigs1[2]outputbgshuzigs1[3]outputbgshuzigs1[4]kongoutputcour1outputbgshuzigs2[0]outputbgshuzigs2[1]outputbgshuzigs2[2]outputbgshuzigs2[3]outputbgshuzigs2[4]kongoutputcour2outputbgshuzigs0[0]outputbgshuzigs0[1]outputbgshuzigs0[2]outputbgshuzigs0[3]outputbgshuzigs0[4]retshowwendp;***********************************************deprocnear;删除某个学生的记录sc1:outputmess1shuru;调用宏shuru,接受输入的学号movbl,nmovbh,0moval,dlmovsi,0sc:cmpal,xh[si];查询输入学号的学生信息是否存在,不存在的话,重新输入学号jesc2addsi,1cmpsi,bxjbescoutputmessjmpsc1sc2:subbx,sicmpbx,0jesc3movcx,bxsc4:movdl,chi[si+1]movchi[si],dlmovdl,eng[si+1]moveng[si],dlmovdl,mat[si+1]movmat[si],dlmovdl,xh[si+1]movxh[si],dladdsi,1loopsc4subn,1sc3:retdeendp;*********************************************inputprocnear;输入学生学号,成绩e6:outputmess1shurumovbl,nmovbh,0movxh[bx],dlcmpbx,0;判断是不是第一次输入,如果是,那么跳过比拟程序jeqq1;继续输入成绩movcl,n;如果不是第一次输入那么要将输入的学号与以前输入的比拟cbwmovsi,0moval,xh[bx]e7:cmpal,xh[si]jee5addsi,1loope7jmpqq1e5:outputts4jmpe6qq1:outputmess2outputmess4movsi,0movcx,3qq3:shuruucmpdx,78h;比拟输入的成绩是否大于120,如果大于120的话,那么重新输入成绩jbeqq2outputts3jmpqq1qq2:movbuf[si],dloutputbgaddsi,1loopqq3movbl,ncbwmoval,buf[0]movchi[bx],almoval,buf[1]moveng[bx],almoval,buf[2]movmat[bx],alretinputendp;**********************************************rankprocnear;排名movcl,nmovch,0movsi,0rrc:movmc[si],1addsi,1looprrcmoval,nmovbl,2mulblmovcl,nmovch,0movsi,0movbx,0movdi,0rrb:movdx,zc[di]rra:cmpdx,zc[bx]jgecontinueaddmc[si],1continue:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 屋里尖尖角课件
- 西京学院《影视鉴赏》2023-2024学年第一学期期末试卷
- 西京学院《数据采集与预处理》2022-2023学年期末试卷
- 孝亲敬老,从我做起
- 西京学院《机器学习》2023-2024学年期末试卷
- 2024-2025学年高二物理举一反三系列1.4质谱仪和回旋加速器((含答案))
- 爆米花课件背景
- Module 4单元备课(说课稿)-2024-2025学年外研版(一起)英语三年级上册
- 西昌学院《土地评价学》2022-2023学年第一学期期末试卷
- 天然气净化高级单选题复习试题有答案
- 城市轨道交通概论PPT完整全套教学课件
- 航空器系统与动力装置学习通课后章节答案期末考试题库2023年
- 呼吸机相关性肺炎诊断、预防和治疗指南(2023年)
- 2023年副主任医师(副高)-中医骨伤科学(副高)考试历年真题摘选带答案
- 《红星照耀中国》PPT只是分享
- 引水隧洞专项施工方案
- 初中英语-Unit5 What are the shirts made of教学设计学情分析教材分析课后反思
- 污水处理站安全培训课件
- 消毒供应中心质量管理课件
- 大型幕墙施工工程重点难点分析
- 六年级写自己典型事例300字范文(6篇)
评论
0/150
提交评论