您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 微机原理课程设计学生成绩系统
二○一四~二○一五学年第一学期信息科学与工程学院自动化系课程设计报告书姓名:学号:班级:课程名称:指导教师:目录(一)课程设计内容及要求(二)课程设计所应用的基本知识点(三)实验原理(四)程序流程图(五)程序详细执行过程(六)程序清单(七)程序运行结果(八)收获与体会(九)参考文献一、课程设计内容及要求题目二学生成绩管理设计要求:建立学生成绩文档,实现学籍简单管理。设计内容:(1)建立学生成绩文档;(2)输入学生各门功课成绩;(假设3门功课);(3)修改指定学号的学生成绩;(4)统计指定学号的学生的平均成绩、总成绩,并在屏幕上显示;(5)统计指定学号课程的平均成绩,并在屏幕上显示;每门课程成绩分析在屏幕上显示3门课程的各个分数段的学生人数(分数段为:=90;80~89;70~79;60~69;=59),此处可以以表格的形式给出数据,或者以坐标曲线的形式给出。对学生成绩记录进行检索(按学号、姓名)成绩排序(按总成绩降序排列)(6)退出;报告要求:(1)方案选择和分析;(2)主要设计思路及工作原理(流程图);(3)调试出现的问题及解决方法;(4)运行效果及改良措施;提交程序清单。二、课程设计所应用的基本知识点本系统的设计是按照主程序调用子程序的方法来实现的。其中主程序完成菜单的实现,子程序完成一个独立功能的实现。本程序使用了DOS系统功能调用(INT21H),程序中用到的系统功能调用如下。AH功能调用参数返回参数02显示输出DL=输出字符09显示字符串DS:DX=串地址字符串以‘$’符结束3C建立文件DS:DX=ASCIZ串地址CX=文件属性成功:AX=文件代号失败:AX=错误代码3D打开文件DS:DX=ASCIZ串地址AL=访问文件和共享方式0=读,1=写,2=读/写成功:AX=文件代号失败:AX=错误代码3E关闭文件BX=文件代号失败:AX=错误代码3F读文件或设备DS:DX=缓冲区首地址BX=文件代号CX=读取的字节数成功:AX=实际读取的字节数AX=0已到文件尾失败:AX=错误代码40写文件或设备DS:DX=缓冲区首地址BX=文件代号CX=写入的字节数成功:AX=实际写入的字节数失败:AX=错误代码三、实验原理该程序按照要实现的功能一共分为七大模块:分别完成学生成绩的浏览、学生成绩的插入、学生成绩的查询、学生成绩的修改、学生成绩的删除、学生成绩各分数段的人数统计以及管理系统的退出。浏览模块设计List(浏览)子程序时,先打开文件,然后读一个记录,并通过过程化语言调用SHOW_STU将其显示到屏幕上,若文件指针没有到达文件尾,则继续读记录并显示,当文件指针到达文件尾时,若没有学生信息,在屏幕上进行提示并关闭文件返回主程序。插入模块设计Insert(插入)子程序时,先打开文件SCORE.TXT,并置文件指针到文件尾,然后过程化语言调用子程序接受用户的输入,再把学生的输入写入文件,最后关闭文件返回主程序。查询模块子程序时,先打开文件,通过过程化调用,先判断学号是否合法,合法后再查找学生的学号,然后读文件记录,并同要查找的学生学号比较,若相同则输出,若不同则继续读文件记录,最后显示查询结果,关闭文件返回程序。修改模块设计Modify(修改)子程序时,先打开文件SCORE.TXT,通过过程化定义语言调用子程序得到要修改的记录,然后读文件中的记录,并与用户输入的记录作比较(只比较记录中的名字部分),若不同则读下一个记录,若相同则将文件指针后退20个字符(一个记录为20个字符的长度),然后把用户输入的记录写入文件,最后关闭文件返回主程序。删除模块设计Delete(删除)子程序时,先打开文件,再过程化定义语言得到要删除的学生的学号,然后读文件中的记录,直到其记录的学号与所输入的学号相同为止,把文件指针后退5个字符,关闭文件返回主程序。分数段统计模块设计Count(统计)子程序,先打开文件,然后读记录,比较记录的第16个字符(数学成绩的高位)并统计,直到文件指针到达文件尾,最后关闭文件调用宏SHOW_EXIT显示统计结果,返回主程序。退出模块设计Exit(退出)子程序,先清屏,然后通过过程化定义语言调出初始源代码段中编写的人性化退出界面,借助DOS操作系统系统下的退出功能关闭成绩管系统。程序功能示意图开始界面菜单新建一个学生档案修改一个学生档案删除一个学生档案查询一个学生档案统计学生分数区间查看学生档案列表四、程序流程图输入一个字符开始显示菜单是i退出是l是q是c是m是d是e调用insert程序调用list子程序调用query子程序调用count子程序调用modify子程序调用delete子程序五、程序详细执行过程显示列表功能list程序段,首先,为以防有前操作在下屏幕显示,所以要清下屏,设置光标位置后,输出提示语句,主要用下段程序实现浏览功能。查询功能查询功能实现是通过检验输入字符是否为“Q”,当输入正确时要在利用宏set_p2设置的光标处显示提示信息后,清下屏,以防有前操作占用界面空间。等待用户输入要查询学生的姓名,只有在输入正确后,才能显示其成绩,若输入姓名与文件中各姓名不符,则输出“错误”提示语句,不输出成绩。无论是在查询功能实现后,还是查询失败,光标返回到输入处,则此时可重新选择菜单中的功能。清下屏输出内容标题读取文件中的一个记录ax=0?输出记录返回主程序开始调用list开始调用query清下屏,打开文件设置光标位置并输出提示“输入”语句读取输入的信息(15byte)到buff1,输出标题语句从文件中读记录(23byte)到buff2ax=0?提示“输入错误,查询失败”返回主程序,等待重新输入,选择功能将buff2与buff1中15byte比较是否相同?显示记录关闭文件并返回退出功能当在显示菜单中输入“E”时,选择退出程序功能,此时调用屏幕全清,宏clear,并输出友好语句bye退出。开始调用exitf屏幕全清输出语句关闭应用程序六、程序清单DATASEGMENTTIPS0DB'Tips:',0DH,0AH,'$';插入提示信息TIPS1DB'SEX:1:male0:female',0DH,0AH,'$'TIPS3DB'PleaseinputID:$';查询提示信息TIPS4DB'Pleaseenterrtoreturn$'TIPS5DB'Pleaseenterrtoreturn,ctocontinue$'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'*WustStudentGradeManagementSystem*',0AH,0DH,'$'MESS2DB'*1201zhengliming2014.12.24*',0AH,0DH,'$'MESS3DB'*shuruinsert(i)*',0AH,0DH,'$'MESS4DB'*xiugaimodify(m)*',0AH,0DH,'$'MESS5DB'*shanchudelete(d)*',0AH,0DH,'$'MESS6DB'*chaxunquery(q)*',0AH,0DH,'$'MESS7DB'*tongjicount(c)*',0AH,0DH,'$'MESS8DB'*tuichuexit(e)*',0AH,0DH,'$'MESS9DB'*********************************$'MESS10DB'*list(l)*',0AH,0DH,'$'MESS11DB'*pleasechose(l/i/m/d/q/c/e):*',0AH,0DH,'$'ID_LENGTHEQU4;配置信息NAM_LENGTHEQU20SEX_LENGTHEQU1;性别请勿更改位数SCORE_LENGTHEQU5STU_LENGTHDW?;每条学生信息总长度STU_LENGTH_ADD1DW?NAM_SEX_SCORE_LENGTHDW?DELDB30DUP('');清空信息用DEL_DONEDB'Deletesuccess!$'ERR1DB'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;数据库文本STR1DB50DUP('?');缓冲区strSTR0DB50DUP('?');缓冲区str0ENTER1DB'$';空格TMPDW0;是否为空标志信息SCDB0;分数保护处用BYEDB'Thanksforuseourprogram!',0DH,0AH,0DH,0AH,'Bye~Bye~$'BY0DB'WUST$'BY1DB'zhengliming$'BY2DB'201204134022$'BY3DB'2012.12.24$'DATAENDSSET_P1MACRO;设定光标位置AMOVAH,02HMOVDH,02MOVDL,03MOVBH,0INT10HENDMSET_P3MACROMOVAH,02H;设定光标的位置BMOVDH,14MOVDL,43MOVBH,0;当前这页INT10HENDMTABMACRO;换行MOVAH,2MOVDL,0DHINT21HMOVDL,0AHINT21HENDMCREATEFMACROFILE_ID,FILE_PATH;创建文件([传入]文件号、[传入]文件路径)MOVAH,3CHMOVCX,00H;普通文件LEADX,FILE_PATHINT21HMOVFILE_ID,AXENDMOPENFMACROFILE_ID,FILE_PATH;打开文件([传入]文件号、[传入]文件路径)MOVAL,2;读写文式打开MOVAH,3DHLEADX,FILE_PATHINT21HMOVFILE_ID,AXENDMCLOSEFMACROFILE_ID;关闭文件([传入]文件号)MOVBX,FILE_IDMOVAH,3EHINT21HENDMREADFMACROFILE_ID,TEMP,NUM;读文件([传入]文件号、[传入]缓冲区、[传入]字节数)MOVBX,FILE_IDLEADX,TEMPMOVAX,NUMMOVCX,AXMOVAH,3FHINT21HENDMWRITEFMACROFILE_ID,TEMP,NUM;写文件([传入]文件号、[传入]缓冲区、[传入]字节数)MOVBX,FILE_IDMOVCX,NUMLEADX,TEMP[2]MOVAH,40HINT21HENDMMOVEFMACROFILE_ID,STYPE,HIGEC,LOWD;移动文件指针([传入]文件号、[传入]移动方式、[传入]偏移字节(高位)[传入]偏移字节(低位))MOVBX,FILE_IDMOVAH,42HMOVAL,STYPE;尾+偏移量方式MOVCX,HIGEC;偏移字节(高位)MOVDX,LOWD;偏移字节(低位)INT21HENDMINPUTMACROBUFFER,LENGTH;输入字符串([传入]字符串名、[返回]字符串长度)MOVAH,10LEADX,BUFFERINT21HMOVAL,BUFFER[1]MOVLENGTH,A
本文标题:微机原理课程设计学生成绩系统
链接地址:https://www.777doc.com/doc-2406184 .html