学生成绩管理系统汇编语言_第1页
学生成绩管理系统汇编语言_第2页
学生成绩管理系统汇编语言_第3页
学生成绩管理系统汇编语言_第4页
学生成绩管理系统汇编语言_第5页
已阅读5页,还剩33页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

./摘要管理信息系统正在向着网络化、智能化和集成化等趋势发展。学生成绩管理系统是为了更好的管理学生考试成绩而开发的数据管理软件。它对于一个学校是不可缺少的重要部分,它的内容对于学校的决策者和管理者来说都至关重要。学生成绩管理管理系统为用户提供充足的信息和快捷的查询手段,实现学生基本信息、成绩的录入,删除,查询,维护以及成绩的统计分析等几方面的功能,是现实问题的迫切要求。本系统开发的总体任务是实现学生成绩管理的系统化、规范化、自动化。达到提高学生成绩管理效率的目的。与传统管理方法相比有明显的优点:查找方便,可靠性高,保密性好,成本低。彻底改变了以前繁杂的管理模式,实现全面的、相对集中的、职能化的信息综合管理。计算机被用到信息管理系统的环境正是适应了当今时代飞速发展的信息时代。人们深刻的认识到了计算机功能的强大,对于复杂的信息管理,计算机充分发挥着它的优越性。检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低,这些优点极大地减轻了学院教学人员的工作量,缩小开支,提高了学生档案管理的效率和准确性,能够合理的安排时间,学生能够尽快的知道自己的考试成绩。同时,学生管理系统的应用也为今天的教育在未来市场的竞争力有所提高。关键字:学生成绩管理,插入,查找,删除,退出,修改;目录TOC\o"1-2"\h\z\u1.系统分析41.1系统开发背景41.2初步调查与可行性分析41.3系统目标41.4系统流程图52.系统总体设计62.1总体结构图分析62.2总体结构图72.3总体数据结构73、详细设计83.1程序功能设计83.2设计思路84、系统测试94.1测试方案94.2测试用例及测试结果94.3软件可靠性115、软件使用说明书126、设计总结13参考文献14致谢15附录〔源代码161.系统分析1.1系统开发背景学生成绩管理系统是为了更好的管理学生考试成绩而开发的数据管理软件。它对于一个学校是不可缺少的重要部分,它的内容对于学校的决策者和管理者来说都至关重要。所以,学生成绩管理管理系统为用户提供充足的信息和快捷的查询手段,实现学生基本信息、成绩的录入,删除,查询,修改,维护以及成绩的统计分析等几方面的功能,是现实问题的迫切要求。1.2初步调查与可行性分析可行性分析就是用最小的代价在尽可能短的时间内确定问题是否能够解决。这步工作的主要是要进行一次大大压缩简化了的系统分析和设计的过程,也就是在较高层次上以比较抽象的方式进行系统分析和设计的过程。可行性研究的最根本任务是对以后的行动方针提出建议,从而节省人力、时间,按照一个较好的解决方案来完成设计,并且为工程制定一个初步的计划。〔1技术可行性本系统采用汇编DOS窗口进行数据的管理、操作和维护,进行数据的录入、删除、查询、浏览、修改、统计等功能。由其的数据存储功能、方便快捷的验证功能、使用的灵活、良好的可扩展性、以及广泛实际应用,充分说明本系统在技术方面的可行性。〔2操作可行性本系统设计清晰,操作简洁,并达到操作过程中的直观、方便、实用、安全等要求。1.3系统目标设计一个学生管理程序,主要实现以下功能〔1各个学生的姓名、性别、ID、成绩的录入、修改、和删除;〔2按ID查询每个学生的成绩和信息;〔3显示查询结果;〔4显示所有学生的个人信息和成绩。程序运行时,在出现的主菜单中,按i键后,将执行插入功能,可以插入新的学生信息;按d键输入要删除的学生姓名;按q键输入ID查询的学生的信息;按下e键将退出程序;按m键,键输入需要修改的学生成绩;按下c键将按成绩分段结果;按下p键在电脑有打印的情况下打印程序,途中会出现r/c提示,r表示退出正在进行的操作回到主界面,c表示继续操作;程序中输入性别〔sex,须输入0或者1.1.4系统流程图图1.4.1主程序流程图2.系统总体设计2.1总体结构图分析本系统有插入、删除、查询、修改、显示、统计退出五大模块,各模块的主要功能有:插入:使用者可在打开程序主界面之后,按"i"键实施插入功能,添加信息主要有4项:ID〔要求输入四位数字、NAME〔姓名、SEX〔性别,男生输入1,女生输入0,每项输入完成按回车输入下一项,输入完成之后有提示r/c,r表示退出正在进行的操作回到主界面,c表示继续添加。此处可实现程序数据的存储,存储位置"c:/score.txt";删除:打开程序主界面之后,按"d"键实施删除功能,只需输入ID即可删除该生在系统中的所有信息,此处可实现程序数据的删除;查询:打开程序主界面之后,按"q"键实施查询功能,此时提示输入信息同删除,此处可实现程序数据的查询;显示:打开程序主界面之后,按"l"键实施显示功能,即可显示出所有的学生信息,此处可实现程序数据的显示;修改:打开程序主界面之后,按"m"键实施修改功能,即可显示出所有的学生信息,此处可实现程序数据的显示;打印:在系统有打印功能的前提下,在主界面中输入"p",就可对已有的成绩打印;退出:在使用完成之后,按"e"即可退出程序,也可以直接点关闭按钮。2.2总体结构图图2.2.1总体结构图2.3总体数据结构〔1main主程序模块用于对各种操作的调用,如插入、删除、显示所有学生的成绩、信息等;〔2Insert子程序插入模块用于实现对新增学生的插入,插入至学生文本中;〔3query子程序模块根据学生ID查询学生的所有信息,学生ID由键盘输入,再从文件中一次比较找出要查询学生的信息;〔4delete子程序模块由用户输入要删除学生的ID,从学生文件中找出要删除的学生信息,实现删除的操作。〔5list子程序模块用于显示学生文件中所有学生的成绩信息,每次从文件读取一个学生的信息并显示。3、详细设计3.1程序功能设计程序运行时,在出现的主菜单中,按l键,将浏览学生的各科成绩;按i键后,将执行插入功能,可以插入新的学生信息;按d键输入要删除的学生姓名;按q键输入ID查询的学生的信息;按下e键将退出程序;途中会出现r/c提示,r表示退出正在进行的操作回到主界面,c表示继续操作;程序中输入性别〔sex,须输入0或者1。以上功能单独运行可以实现,〔即在进入菜单后选择其中一项功能运行可以成功运行,在关闭后选择另一项功能可以成功运行,但是在整体运行时得不到想要的结果。注:此程序除了源程序外还需要一个学生文件,该程序命名为score.txt,该文件用于存放学生信息。3.2设计思路〔1数据定义一个数据元素〔一个学生的数据项应该为一个结构类型,定义如下:ID_LENGTHEQU4 NAM_LENGTHEQU20SEX_LENGTHEQU1SCORE_LENGTHEQU5 配置信息:ID4位数;名字20个字符;性别,1位数〔0或者1;分数5位,范围为0-100〔2方法和步骤这个程序主要分为插入、删除、查询、显示、修改、退出,定义如下:mess3DB'*insert<i>*',0ah,0dh,'$'mess4DB'*modify<m>*',0ah,0dh,'$'mess5DB'*delete<d>*',0ah,0dh,'$'mess6DB'*query<q>*',0ah,0dh,'$'mess7DB'*count<c>*',0ah,0dh,'$'mess8DB'*print<p>*',0ah,0dh,'$'mess9DB'*exit<e>*',0ah,0dh,'$'进去之后首先创建一个".txt"数据库文本,用来储存输入信息,控制文件的打开、关闭、读写、移动等。用空格初始化缓冲区子程序,定义出要在主界面所要显示的内容,显示提示信息,打开文件,按提示进入操作。插入:insert子程序;删除:delete子程序;查询:query子程序;全部显示:list子程序;修改:modify;打印:print;退出:exit子程序。4、系统测试4.1测试方案〔1.asm的源程序文件建立.exe的可在电脑上直接运行的文件;〔2打开.exe文件,按照提示输入,分别测试插入、删除、查询、显示、修改、退出等功能。4.2测试用例及测试结果〔1主程序截图主程序〔2显示所有成绩显示全部〔3插入成绩插入成绩〔4修改成绩修改成绩〔5删除成绩删除成绩〔6查找成绩查找成绩统计成绩图统计成绩4.3软件可靠性〔1分析测试集中的所有测试用例,测试可以通过测试准则。

〔2测试代码可以达到相应的测试覆盖率,每一个状态和路径都可以达到相应效果。

〔3对测试结果进行分析,所有的安全性需求可得到了满足。

5、软件使用说明书程序运行时,在出现的主菜单中,按l键,将浏览学生的各科成绩;按i键后,将执行插入功能,可以插入新的学生信息;按d键输入要删除的学生姓名;按q键输入ID查询的学生的信息;按下e键将退出程序;途中会出现r/c提示,r表示退出正在进行的操作回到主界面,c表示继续操作;程序中输入性别〔sex,须输入0或者1。以上功能单独运行可以实现,〔即在进入菜单后选择其中一项功能运行可以成功运行,在关闭后选择另一项功能可以成功运行,但是在整体运行时得不到想要的结果。注:此程序除了源程序外还需要一个学生文件,该程序命名为score.txt,该文件用于存放学生信息。6、设计总结通过对这学生成绩管理的的制作,使我对汇编语言的基本知识的使用更加熟练,同时也增加了我对汇编语言的一些认识,在作业完成过程中通过和同学的交流,也增加了合作的技巧。通过查阅资料也学到了一些课本上没有的东西,拓宽了自己的知识面,增加了学好汇编语言的信心。这不是第一次用汇编语言来设计一个小程序,平时做了很多实验,写了很多小程序。但这次是一个综合的程序,平时的很多程序都用到了。历时两周终于完成,其间有不少感触。在本次的课程设计过程中,我最大的收获就是学到了不少新的知识,同时可以自己学到的汇编语言的知识和以前学的程序设计的知识应用到实践中,熟悉了开发环境,提高了自己的动手能力,并顺利地完成了此次的任务.课程设计让我从中得到莫大的信心,鼓励,快乐和成就感.编程过程中,我遇到了一些困难.这我通过上网查询和去图书馆查找资料解决问题,有效地利用网络资源和学校图书资源,同时也了解了更多的知识获取的途径,扩大了自己的知识面.遇到问题时,多数情况下我是自己独立解决的,这锻炼我独立思考问题和独立解决问题的能力;如果自己通过查找资料无法解决,我就向老师和同学寻求帮助,不但学到了新的,更完善解决问题的方法,还学会了与人沟通,与人交流.我认识到有时候,其他人的一点提示,就会令自己茅塞顿开,得到灵感.因此,在作课程设计时,不要吝惜自己的思路和想法,尽可能多的与大家的交流.许多时,我们都能从中得到进步,得到提示,甚至得到更好的方案.同时我也发现了自己的一些问题.本次课程设计,对我帮助很大.它提高了我的理论知识和和实践动手能力;提高了我独立思考问题和解决问题的能力;同时,增强了我与人探讨问题,交流思路的意识;此外,它还让我发现了自己在编程习惯上的许多不足,对以后的编写程序和设计解题思路有很大的启发.在以后的学习和实践中,我会不断督促自己,不断提高,不断进步参考文献[1]范立南,刘天慧编著《SQLServer2000实用教程》清华大学出版社[2]丁宝康编著《数据库实用教程》清华大学出版社[3]陈禹,方美琪编著《软件开发工具》经济科学出版社[4]黄梯云,主编《管理信息系统》高等教育出版社[5]朱耀庭,《汇编语言程序设计》清华大学出版社致谢在此次课程设计中,我们衷心感谢刘树群老师对我们的细心指导。刘老师指引我们的课程设计的写作的方向和架构,并指正出其中误谬之处,使我们一起努力完成,刘老师要指导很多同学的论文,加上本来就有的教学任务,工作量之大可想而知,老师的用心良苦。在此,谨向刘老师衷心的感谢!谢谢刘老师在我们的课程设计过程中给与我们的极大地帮助。同时,课程设计的顺利完成,离不开小组内部成员的互相努力,团结协作。在整个的课程设计写作中,大家互相支持,努力需找问题答案所在。最终顺利完成了这个课程设计。在论文的写作过程中也学到了做任何事情所要有的态度和心态,首先做学问要一丝不苟,对于发展过程中出现的任何问题和偏差都不要轻视,要通过正确的途径去解决,在做事情的过程中要有耐心和毅力,不要一遇到困难就达退堂鼓,只要坚持下去就可以找到思路去解决问题的。而且要学会与人合作,这样做起事情来就可以事半功倍。附录〔源代码DATASEGMENTTIPS0DB'Tips:',0DH,0AH,'$' ;插入提示信息TIPS1DB'SEX:1:male0:female',0DH,0AH,'$'TIPS3DB'PleaseinputID:$' ;查询提示信息TIPS4DB'Pleaseenter"r"toreturn$'TIPS5DB'Pleaseenter"r"toreturn,"c"tocontinue$'IDDB'ID:$'NAMDB'NAME:$'SEXDB'SEX:$'SCOREDB'SCORE:$'FIDDW? ;文件号SEXMDB'male$'SEXFDB'female$'COUNT_ADB'90~100:$' ;统计提示信息COUNT_BDB'80~89:$'COUNT_CDB'70~79:$'COUNT_DDB'60~69:$'COUNT_EDB'00~59:$'ABDB5DUP<'0'> ;统计结果mess1DB'*TheStudentGradeManagementSystem*',0ah,0dh,'$'mess2DB'*thisismainmenu*',0ah,0dh,'$'mess3DB'*insert<i>*',0ah,0dh,'$'mess4DB'*modify<m>*',0ah,0dh,'$'mess5DB'*delete<d>*',0ah,0dh,'$'mess6DB'*query<q>*',0ah,0dh,'$'mess7DB'*count<c>*',0ah,0dh,'$'mess8DB'*print<p>*',0ah,0dh,'$'mess9DB'*exit<e>*',0ah,0dh,'$'mess10DB'*********************************$'mess13DB'*list<l>*',0ah,0dh,'$'mess14DB'*pleasechose<l/i/m/d/q/c/p/e>:*',0ah,0dh,'$'ID_LENGTHEQU4 ;配置信息NAM_LENGTHEQU20SEX_LENGTHEQU1 ;性别请勿更改位数SCORE_LENGTHEQU5STU_LENGTHDW? ;每条学生信息总长度STU_LENGTH_ADD1DW?NAM_SEX_SCORE_LENGTHDW?DELDB30DUP<''> ;清空信息用DEL_DONEDB'Deletesuccess!$'ERRDB'Dataerror,Pleaseinputagain!$' ;错误提示信息NOSTUDB'Sorry,thereisnothisstudnet!$'ERR_NODB'Nostudentinformation!$'ERR_SAMEDB'ThereisthesameID,pleaseinputagain!$'NEWFDB0DH,0AH,0DH,0AH,'Warning:thisoperationwillemptyallyourdata!',0DH,0AH,0DH,0AH,'Willyoucontinue?<y:empty,otherkey:return>:$'FPATHDB'c:\score.txt',0 ;数据库文本STRDB50 ;缓冲区strDB?DB50DUP<?>STR0DB50DUP<?> ;缓冲区str0ENTERDB'$' ;空格TMPDW0 ;是否为空标志信息SCDB0 ;分数保护处用BYEDB'Thanksforuseourprogram!',0DH,0AH,0DH,0AH,'Bye~Bye~$'BY0DB'Writer:$'BY1DB'07212151206<GaoTian>$'BY2DB'07212151207<YuChangMing>$'BY3DB'07212151208<YiBaoFa>$'BY4DB'07212151209<DongJunZai>$'BY5DB'07212151210<LuoChun>$'DATAENDSSET_P1MACRO ;设定光标位置AMOVAH,02HMOVDH,02MOVDL,03MOVBH,0INT10HENDMSET_P3MACROMOVAH,02H ;设定光标的位置BMOVDH,15 MOVDL,44MOVBH,0;当前这页INT10HENDMTABMACRO ;换行 MOVAH,2 MOVDL,0DH INT21H MOVDL,0AH INT21HENDMCREATEFMACROFILE_ID,FILE_PATH ;创建文件〔[传入]文件号、[传入]文件路径 MOVAH,3CH MOVCX,00H ;普通文件 LEADX,FILE_PATH INT21H MOVFILE_ID,AXENDMOPENFMACROFILE_ID,FILE_PATH ;打开文件〔[传入]文件号、[传入]文件路径 MOVAL,2 ;读写文式打开 MOVAH,3DH LEADX,FILE_PATH INT21H MOVFILE_ID,AXENDMCLOSEFMACROFILE_ID ;关闭文件〔[传入]文件号 MOVBX,FILE_ID MOVAH,3EH INT21H ENDMREADFMACROFILE_ID,TEMP,NUM ;读文件〔[传入]文件号、[传入]缓冲区、[传入]字节数 MOVBX,FILE_ID LEADX,TEMP MOVAX,NUM MOVCX,AX MOVAH,3FH INT21HENDMWRITEFMACROFILE_ID,TEMP,NUM ;写文件〔[传入]文件号、[传入]缓冲区、[传入]字节数 MOVBX,FILE_ID MOVCX,NUM LEADX,TEMP[2] MOVAH,40H INT21HENDMMOVEFMACROFILE_ID,STYPE,HIGEC,LOWD ;移动文件指针〔[传入]文件号、[传入]移动方式、[传入]偏移字节〔高位[传入]偏移字节〔低位 MOVBX,FILE_ID MOVAH,42H MOVAL,STYPE ;尾+偏移量方式 MOVCX,HIGEC ;偏移字节〔高位 MOVDX,LOWD ;偏移字节〔低位 INT21HENDMINPUTMACROBUFFER,LENGTH ;输入字符串〔[传入]字符串名、[返回]字符串长度 MOVAH,10 LEADX,BUFFER INT21H MOVLENGTH,BUFFER[1]ENDMSHOWMACROBUFFER ;显示字符串〔[传入]字符串名 MOVAH,9 LEADX,BUFFER INT21HENDMSTAKSEGMENTSTACKDB200DUP<?>STAKENDS;=========================================;代码段;=========================================CODESEGMENTASSUMECS:CODE,DS:DATASHOW_EXITPROCNEAR ;提示按r退出 PUSHAX PUSHBX PUSHCX PUSHDX TAB TAB SHOWTIPS4EXIT_1: MOVAH,7 INT21H CMPAL,'r' JNZEXIT_1 POPDX POPCX POPBX POPAX RETSHOW_EXITENDPSHOW_ECPROCNEAR ;询问退出还是继续 PUSHAX PUSHBX PUSHCX PUSHDX TAB TAB SHOWTIPS5EXIT_2: MOVAH,7 INT21H CMPAL,'r' JZEXIT_4 CMPAL,'c' JNZEXIT_2 CALLINSERTEXIT_4: POPDX POPCX POPBX POPAX RETSHOW_ECENDPSHOW_ERRPROCNEAR ;显示出错信息子程序 PUSHAX PUSHBX PUSHCX PUSHDX TAB TAB SHOWERR TAB TAB POPDX POPCX POPBX POPAX RETSHOW_ERRENDPRE_TMPPROCNEAR ;用空格初始化缓冲区子程序 PUSHAX PUSHBX PUSHCX PUSHDX MOVCX,50 MOVBX,1RE: INCBX MOVSTR[BX],'' LOOPRE POPDX POPCX POPBX POPAX RETRE_TMPENDPCLEARPROCNEAR ;清屏PUSHAXPUSHBXPUSHCXPUSHDXMOVAL,0;上滚行数MOVCL,0;上滚窗口左上角的列号为0MOVCH,0;上滚窗口左上角的行号为0MOVDH,24;上滚窗口右上角的行号为24MOVDL,79;上滚窗口右上角的列号为79MOVBH,14;空白行的属性MOVAH,6;入口参数INT10HSET_P1POPDXPOPCXPOPBXPOPAXRETCLEARENDPSHOW_STUPROCNEAR ;显示学生信息子程序 PUSHAX PUSHBX PUSHCX PUSHDX SHOWID ;ID MOVCX,ID_LENGTH MOVBX,-1SH_ID: INCBX MOVDL,STR0[BX] MOVAH,2 INT21H LOOPSH_ID SHOWENTER SHOWNAM ;NAME MOVCX,NAM_LENGTH MOVBX,ID_LENGTH DECBXSH_NAME:INCBX MOVDL,STR0[BX] MOVAH,2 INT21H LOOPSH_NAME SHOWENTER SHOWSEX ;SEX MOVBX,ID_LENGTH ADDBX,NAM_LENGTH MOVDL,STR0[BX] CMPDL,'1' ;1显示male,0显示female JNZSEX_F SHOWSEXM JMPNNSEX_F: SHOWSEXFNN: SHOWENTER SHOWSCORE ;SCORE MOVCX,SCORE_LENGTH MOVBX,ID_LENGTH ADDBX,NAM_LENGTHSH_SCORE:INCBX MOVDL,STR0[BX] MOVAH,2 INT21H LOOPSH_SCORE POPDX POPCX POPBX POPAX RETSHOW_STUENDPPRINT_STUPROCNEAR ;打印学生信息子程序 PUSHAX PUSHBX PUSHCX PUSHDX TAB SHOWID ;ID MOVCX,ID_LENGTH MOVBX,-1P_ID: INCBX MOVDL,STR0[BX] MOVAH,5 INT21H LOOPP_ID SHOWENTER SHOWNAM ;NAME MOVCX,NAM_LENGTH MOVBX,ID_LENGTH DECBXP_NAME: INCBX MOVDL,STR0[BX] MOVAH,5 INT21H LOOPP_NAME SHOWENTER SHOWSEX ;SEX MOVBX,ID_LENGTH ADDBX,NAM_LENGTH MOVDL,STR0[BX] MOVAH,5 INT21HPNN: SHOWENTER SHOWSCORE ;SCORE MOVCX,SCORE_LENGTH MOVBX,ID_LENGTH ADDBX,NAM_LENGTHP_SCORE:INCBX MOVDL,STR0[BX] MOVAH,5 INT21H LOOPP_SCORE POPDX POPCX POPBX POPAX RETPRINT_STUENDP;====================以下插入<insert>子程序================INSERTPROCNEAR PUSHAX PUSHBX PUSHCX PUSHDX TABCALLCLEAR;清屏 SHOWTIPS0 ;显示提示信息 SHOWTIPS1 TAB TAB OPENFFID,FPATH ;打开文件IN_ID: SHOWID ;学号 INPUTSTR,BL ;向缓冲区输入ID CMPBL,ID_LENGTH ;看ID是否合法 JZL1 JNZERR_IDERR_SA: ;错误处理 TAB TAB SHOWERR_SAME TAB TAB JMPIN_IDERR_ID: TAB TAB CALLSHOW_ERR TAB TAB JMPIN_IDL1: ;ID判断只能为数字 MOVCX,ID_LENGTH LEASI,STR+2LN: MOVAL,BYTEPTR[SI] CMPAL,'0' JBERR_ID CMPAL,'9' JAERR_ID INCSI LOOPLN MOVEFFID,0,0,0 ;指针移到文件首IA: MOVEFFID,1,0,5 IB: READFFID,STR0,STU_LENGTH ;读取学生信息 CMPAX,0 ;文件是否结束 JNZIL1 JMPIC ;没有重复学号,可以插入IL1: LEASI,STR0 LEADI,STR INCDI DECSI MOVCX,ID_LENGTH IL2: INCSI INCDI MOVAL,BYTEPTR[DI] CMPAL,BYTEPTR[SI] JNZIA ;不符合条件读取下一个同学信息 LOOPZIL2 JMPERR_SA ;有重复学号IC: MOVEFFID,2,0,5 WRITEFFID,STR,ID_LENGTH;数据合法则写入数据 TABIN_NAM: SHOWNAM ;姓名 CALLRE_TMP ;初始化缓冲区 INPUTSTR,BL ADDBL,2 ;去掉回车 MOVBH,0 MOVSI,BX MOVSTR[SI],'' SUBBL,2 CMPBL,NAM_LENGTH JNAL2ERR_NAM: CALLSHOW_ERR JMPIN_NAML2: CMPSTR[2],'' ;姓名第一个字符不为空 JZERR_NAM CMPSTR[2],'z' JAERR_NAM CMPSTR[2],'A' JBERR_NAM CMPSTR[2],'a' JNBIII CMPSTR[2],'Z' JAERR_NAM CMPSTR[2],'A' JBERR_NAMIII: MOVCX,NAM_LENGTH MOVBX,2 II0: INCBX DECCX CMPSTR[BX],'z' JAERR_NAM CMPSTR[BX],'' JBERR_NAM CMPSTR[BX],'a' JNBII0 CMPSTR[BX],'Z' JAERR_NAM CMPSTR[BX],'A' JNBII0 CMPSTR[BX],'' JNZERR_NAM CMPCX,0 JNZII0 WRITEFFID,STR,NAM_LENGTH TABIN_SEX: SHOWSEX ;性别 CALLRE_TMP INPUTSTR,BL ADDBL,2 ;去掉回车 MOVBH,0 MOVSI,BX MOVSTR[SI],'' SUBBL,2 CMPBL,SEX_LENGTH JNZERR_SEX MOVBL,STR[2] CMPBL,'1' JZL4CMPBL,'0' JZL4ERR_SEX: CALLSHOW_ERR JMPIN_SEXL4: WRITEFFID,STR,SEX_LENGTH TABIN_SCORE: SHOWSCORE CALLRE_TMP INPUTSTR,BL MOVSC,BL ;BL保护 ADDBL,2 ;去掉回车 MOVBH,0 MOVSI,BX MOVSTR[SI],'' SUBBL,2 CMPBL,SCORE_LENGTH ;分数最多4位 JBL5ERR_SCORE: CALLSHOW_ERR JMPIN_SCOREL5: MOVCX,BX ;分数只能是数字和. MOVBX,2L6: CMPSTR[BX],'0' JNBL7 ;>=0 CMPSTR[BX],'.' JNZERR_SCORE JZL8L7: CMPSTR[BX],'9' ;<=9 JAERR_SCORE INCBX LOOPL6L8: MOVBL,SC CMPBL,4 ;分数<0~100>,支持一位小数 JNZL9 CMPSTR[4],'.' JNZERR_SCORE JMPLWL9: CMPBL,3 JNZL10 CMPSTR[3],'.' JZLW CMPSTR[2],'1' JNZERR_SCORE CMPSTR[3],'0' JNZERR_SCORE CMPSTR[4],'0' JNZERR_SCORE JMPLWL10: CMPBL,2 JNZL11 CMPSTR[2],'.' JZERR_SCORE JMPLWL11: CMPSTR[2],'.' JZERR_SCORELW: WRITEFFID,STR,SCORE_LENGTH TAB CLOSEFFID ;关闭文件 CALLSHOW_EC POPDX POPCX POPBX POPAX RETINSERTENDP;================以下是查询<query>子程序================QUERYPROCNEAR PUSHAX PUSHBX PUSHCX PUSHDXCALLCLEAR OPENFFID,FPATH ;打开文件IN_ID1: SHOWTIPS3 ;显示提示信息 INPUTSTR,BL ;向缓冲区STR输入ID CMPBL,ID_LENGTH ;看ID是否合法 JZQL1QERR_ID: ;错误处理 CALLSHOW_ERR JMPIN_ID1A: MOVEFFID,1,0,5B: READFFID,STR0,STU_LENGTH ;读取学生信息 CMPAX,0 ;文件是否结束 JNZQL1 QL3: TAB TAB ;文件结束,没有该学生信息 SHOWNOSTU JMPCQL1: LEASI,STR0 LEADI,STR INCDI DECSI MOVCX,ID_LENGTH QL2: INCSI INCDI MOVAL,BYTEPTR[DI] CMPAL,BYTEPTR[SI] JNZA ;不符合条件读取下一个同学信息 LOOPZQL2 TAB TAB ;符合条件显示 CALLSHOW_STU JMPCC: CLOSEFFID TAB TAB SHOWTIPS5 ;询问退出还是继续Q_2: MOVAH,7 INT21H CMPAL,'r' JZQ_4 CMPAL,'c' JNZQ_2 CALLQUERYQ_4: POPDX POPCX POPBX POPAX RETQUERYENDP;==============以下是浏览<list>子程序==================LISTPROCNEAR PUSHAX PUSHBX PUSHCX PUSHDX CALLCLEAR MOVAX,0 MOVTMP,AX ;是否为空标志清0 OPENFFID,FPATH ;打开文件 TABD: MOVEFFID,1,0,5E: READFFID,STR0,STU_LENGTH ;读取学生信息 CMPAX,0 ;是否到文件尾 JNZG CMPTMP,0 ;判断有没有信息 JNZF TAB TAB TAB SHOWERR_NO JMPFG: MOVCX,ID_LENGTH ;ID为空不显示 MOVBX,0 DECBXNULL: INCBX CMPSTR0[BX],'' JZD LOOPNULL CALLSHOW_STU INCTMP ;有信息为空标志自加 TAB JMPDF: CLOSEFFID CALLSHOW_EXIT POPDX POPCX POPBX POPAX RETLISTENDP ;===============以下是删除<delete>子程序=====================DELETEPROCNEAR PUSHAX PUSHBX PUSHCX PUSHDX CALLCLEAR OPENFFID,FPATH ;打开文件D0: SHOWTIPS3 ;显示提示信息 INPUTSTR,BL ;向缓冲区STR输入ID CMPBL,ID_LENGTH ;看ID是否合法 JZD2 CALLSHOW_ERR JMPD0D2: MOVEFFID,1,0,5 READFFID,STR0,STU_LENGTH ;读取学生信息 CMPAX,0 ;文件是否结束 JNZD5 TAB TAB SHOWNOSTU ;文件结束,没有该学生信息 JMPD15D5: LEASI,STR0 LEADI,STR INCDI DECSI MOVCX,ID_LENGTH D6: INCSI INCDI MOVAL,BYTEPTR[DI] CMPAL,BYTEPTR[SI] JNZD2 ;不符合条件读取下一个同学信息 LOOPZD6 TAB ;显示修改前信息 TAB CALLSHOW_STU TAB TAB TAB SHOWDEL_DONE MOVEFFID,1,0FFFFH,STU_LENGTH_ADD1 WRITEFFID,DEL,STU_LENGTH TABD15: TAB TAB TAB CLOSEFFID SHOWTIPS5 ;询问退出还是继续D_2: MOVAH,7 INT21H CMPAL,'r' JZD_4 CMPAL,'c' JNZD_2 CALLDELETED_4: POPDX POPCX POPBX POPAX RETDELETEENDP;===============以下是修改<modify>子程序=====================MODIFYPROCNEAR PUSHAX PUSHBX PUSHCX PUSHDX CALLCLEAR OPENFFID,FPATH ;打开文件M0: SHOWTIPS3 ;显示提示信息 INPUTSTR,BL ;向缓冲区STR输入ID CMPBL,ID_LENGTH ;看ID是否合法 JZM2 CALLSHOW_ERR JMPM0M2: MOVEFFID,1,0,5 READFFID,STR0,STU_LENGTH ;读取学生信息 CMPAX,0 ;文件是否结束 JNZM5 TAB TAB SHOWNOSTU ;文件结束,没有该学生信息 JMPM_2M5: LEASI,STR0 LEADI,STR INCDI DECSI MOVCX,ID_LENGTH M6: INCSI INCDI MOVAL,BYTEPTR[DI] CMPAL,BYTEPTR[SI] JNZM2 ;不符合条件读取下一个同学信息 LOOPZM6 TAB ;显示修改前信息 TAB CALLSHOW_STU TAB TABM7: SHOWNAM ;开始修改信息 CALLRE_TMP ;初始化缓冲区 INPUTSTR,BL ADDBL,2 ;去掉回车 MOVBH,0 MOVSI,BX MOVSTR[SI],'' SUBBL,2 CMPBL,NAM_LENGTH JNAML2 ;开始修改信息ERR_N0: CALLSHOW_ERR ;溢出提示 JMPM7ML2: CMPSTR[2],'' ;姓名第一个字符不为空 JZERR_N0 CMPSTR[2],'z' JAERR_N0 CMPSTR[2],'A' JBERR_N0 CMPSTR[2],'a' JNBMM0 CMPSTR[2],'Z' JAERR_N0 CMPSTR[2],'A' JBERR_N0MM0: MOVCX,NAM_LENGTH ;名字只能是字母或空格 MOVBX,2 MM1: INCBX DECCX CMPSTR[BX],'z' JAERR_N0 CMPSTR[BX],'' JBERR_N0 CMPSTR[BX],'a' JNBMM1 CMPSTR[BX],'Z' JAERR_N0 CMPSTR[BX],'A' JNBMM1 CMPSTR[BX],'' JNZERR_N0 CMPCX,0 JNZMM1 MOVEFFID,1,0FFFFH,NAM_SEX_SCORE_LENGTH ;指针移到姓名处 WRITEFFID,STR,NAM_LENGTH TABM10: SHOWSEX CALLRE_TMP INPUTSTR,BL ADDBL,2 ;去掉回车 MOVBH,0 MOVSI,BX MOVSTR[SI],'' SUBBL,2 CMPBL,SEX_LENGTH JNZM11 MOVBL,STR[2] CMPBL,'1' JZM12CMPBL,'0' JZM12M11: CALLSHOW_ERR ;错误提示 JMPM10M12: WRITEFFID,STR,SEX_LENGTH TABM13: SHOWSCORE CALLRE_TMP INPUTSTR,BL MOVSC,BL ADDBL,2 ;去掉回车 MOVBH,0 MOVSI,BX MOVSTR[SI],'' SUBBL,2 CMPBL,SCORE_LENGTH ;分数错误判断 JBM14MEC: CALLSHOW_ERR JMPM13M14: MOVBL,SC MOVBH,0 MOVCX,BX ;分数只能是数字和. MOVBX,2M15: CMPSTR[BX],'0' JNBM16 ;>=0 CMPSTR[BX],'.' JNZMEC JZM17M16: CMPSTR[BX],'9' ;<=9 JAMEC INCBX LOOPM15 JMPM17M21: JMPMEC ;中转M17: MOVBL,SC CMPBL,4 ;分数<0~100>,支持一位小数 JNZM18 CMPSTR[4],'.' JNZM21 JMPMWM18: CMPBL,3 JNZM19 CMPSTR[3],'.' JZMW CMPSTR[2],'1' JNZM21 CMPSTR[3],'0' JNZM21 CMPSTR[4],'0' JNZM21 JMPMWM19: CMPBL,2 JNZM20 CMPSTR[2],'.' JZM21 JMPMWM20: CMPSTR[2],'.' JZM21MW: WRITEFFID,STR,SCORE_LENGTHM_2: TAB TAB TAB TAB CLOSEFFID SHOWTIPS5 ;询问退出还是继续 MOVAH,7 INT21H CMPAL,'r' JZM_4 CMPAL,'c' JNZM_2 CALLMODIFYM_4: POPDX POPCX POPBX POPAX RETMODIFYENDP;===========以下是统计各分数段人数<count>子程序==============COUNTPROCNEAR PUSHAX PUSHBX PUSHCX PUSHDX CALLCLEAR TAB TAB TAB OPENFFID,FPATH ;打开文件C_0: MOVBX,FID MOVAH,42H MOVAL,1 ;当前+偏移量方式 MOVCX,0 ;偏移字节〔高位 MOVDX,5 ;偏移字节〔低位 INT21HC_1: READFFID,STR0,STU_LENGTH ;读取学生信息 CMPAX,0 JZC_8 ;到文件尾则结束 MOVBX,ID_LENGTH ADDBX,NAM_LENGTH INCBX MOVAX,BX MOVDL,STR0[BX] ;DL里放分数第一位 CMPDL,'1' ;如果是100分直接显示A JZC_2C_2: INCBX MOVDL,STR0[BX] CMPDL,'0' JZC_3C_3: INCBX MOVDL,STR0[BX] CMPDL,'0' JZC_A MOVBX,AX MOVDL,STR0[BX] MOVCL,'9' CMPDL,CL JGEC_A MOVCL,'8' CMPDL,CL JGEC_B MOVCL,'7' CMPDL,CL JGEC_C MOVCL,'6' CMPDL,CL JGEC_D CMPDL,'' JZC_0 INC[AB] JMPC_0C_A: INC[AB+4] JMPC_0C_B: INC[AB+3] JMPC_0C_C: INC[AB+2] JMPC_0C_D: INC[AB+1] JMPC_0C_8: CLOSEFFID SHOWCOUNT_A;显示每个阶段分数的人数MOVDL,[AB+4]CMPDL,'9'JALA1MOVAH,02HINT21HMOV[AB+4],'0'TABJMPNEXTLA1:SUBDL,30HMOVAL,DLMOVBL,10MOVAH,0DIVBLMOVDL,ALMOVBL,AHADDDL,30HMOVAH,02HINT21HADDBL,30HMOVDL,BLMOVAH,02HINT21HMOV[AB+4],'0'TABNEXT:SHOWCOUNT_BMOVDL,[AB+3]CMPDL,'9'JALB1MOVAH,02HINT21HMOV[AB+3],'0'TABJMPNEXT1LB1:SUBDL,30HMOVAL,DLMOVBL,10MOVAH,0DIVBLMOVDL,ALMOVBL,AHADDDL,30HMOVAH,02HINT21HADDBL,30HMOVDL,BLMOVAH,02HINT21HMOV[AB+3],'0'TABNEXT1:SHOWCOUNT_CMOVDL,[AB+2]CMPDL,'9'JALC1MOVAH,02HINT21HMOV[AB+2],'0'TABJMPNEXT2LC1:SUBDL,30HMOVAL,DLMOVBL,10MOVAH,0DIVBLMOVDL,ALMOVBL,AHADDDL,30HMOVAH,02HINT21HADDBL,30HMOVDL,BLMOVAH,02HINT21HMOV[AB+2],'0'TABNEXT2:SHOWCOUNT_DMOVDL,[AB+1]CMPDL,'9'JALD1MOVAH,02HINT21HMOV[AB+1],'0'TABJMPNEXT3LD1:SUBDL,30HMOVAL,DLMOVBL,10MOVAH,0DIVBLMOVDL,ALMOVBL,AHADDDL,30HMOVAH,02HINT21HADDBL,30HMOVDL,BLMOVAH,02HINT21HMOV[AB+1],'0'TABNEXT3:SHOWCOUNT_EMOVDL,[AB]CMPDL,'9'JALE1MOVAH,02HINT21HMOV[AB],'0'

温馨提示

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

评论

0/150

提交评论