微机原理课程设计学生成绩系统.docx
- 文档编号:23771197
- 上传时间:2023-05-20
- 格式:DOCX
- 页数:59
- 大小:173.57KB
微机原理课程设计学生成绩系统.docx
《微机原理课程设计学生成绩系统.docx》由会员分享,可在线阅读,更多相关《微机原理课程设计学生成绩系统.docx(59页珍藏版)》请在冰豆网上搜索。
微机原理课程设计学生成绩系统
二○一四~二○一五学年第一学期
信息科学与工程学院
自动化系
课程设计报告书
姓名:
学号:
班级:
课程名称:
指导教师:
(一)课程设计内容及要求
(二)课程设计所应用的基本知识点
(三)实验原理
(四)程序流程图
(五)程序详细执行过程
(六)程序清单
(七)程序运行结果
(八)收获与体会
(九)参考文献
一、课程设计内容及要求
题目二学生成绩管理
设计要求:
建立学生成绩文档,实现学籍简单管理。
设计内容:
(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操作系统系统下的退出功能关闭成绩管系统。
程序功能示意图
四、程序流程图
五、程序详细执行过程
显示列表功能
list程序段,首先,为以防有前操作在下屏幕显示,所以要清下屏,设置光标位置后,输出提示语句,主要用下段程序实现浏览功能。
查询功能
查询功能实现是通过检验输入字符是否为“Q”,当输入正确时要在利用宏set_p2设置的光标处显示提示信息后,清下屏,以防有前操作占用界面空间。
等待用户输入要查询学生的姓名,只有在输入正确后,才能显示其成绩,若输入姓名与文件中各姓名不符,则输出“错误”提示语句,不输出成绩。
无论是在查询功能实现后,还是查询失败,光标返回到输入处,则此时可重新选择菜单中的功能。
退出功能
当在显示菜单中输入“E”时,选择退出程序功能,此时调用屏幕全清,宏clear,并输出友好语句bye退出。
六、程序清单
DATASEGMENT
TIPS0DB'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'*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_LENGTHEQU20
SEX_LENGTHEQU1;性别请勿更改位数
SCORE_LENGTHEQU5
STU_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('?
');缓冲区str
STR0DB50DUP('?
');缓冲区str0
ENTER1DB'$';空格
TMPDW0;是否为空标志信息
SCDB0;分数保护处用
BYEDB'Thanksforuseourprogram!
',0DH,0AH,0DH,0AH,'Bye~Bye~$'
BY0DB'WUST$'
BY1DB'zhengliming$'
BY2DB'201204134022$'
BY3DB'2012.12.24$'
DATAENDS
SET_P1MACRO;设定光标位置A
MOVAH,02H
MOVDH,02
MOVDL,03
MOVBH,0
INT10H
ENDM
SET_P3MACRO
MOVAH,02H;设定光标的位置B
MOVDH,14
MOVDL,43
MOVBH,0;当前这页
INT10H
ENDM
TABMACRO;换行
MOVAH,2
MOVDL,0DH
INT21H
MOVDL,0AH
INT21H
ENDM
CREATEFMACROFILE_ID,FILE_PATH;创建文件([传入]文件号、[传入]文件路径)
MOVAH,3CH
MOVCX,00H;普通文件
LEADX,FILE_PATH
INT21H
MOVFILE_ID,AX
ENDM
OPENFMACROFILE_ID,FILE_PATH;打开文件([传入]文件号、[传入]文件路径)
MOVAL,2;读写文式打开
MOVAH,3DH
LEADX,FILE_PATH
INT21H
MOVFILE_ID,AX
ENDM
CLOSEFMACROFILE_ID;关闭文件([传入]文件号)
MOVBX,FILE_ID
MOVAH,3EH
INT21H
ENDM
READFMACROFILE_ID,TEMP,NUM;读文件([传入]文件号、[传入]缓冲区、[传入]字节数)
MOVBX,FILE_ID
LEADX,TEMP
MOVAX,NUM
MOVCX,AX
MOVAH,3FH
INT21H
ENDM
WRITEFMACROFILE_ID,TEMP,NUM;写文件([传入]文件号、[传入]缓冲区、[传入]字节数)
MOVBX,FILE_ID
MOVCX,NUM
LEADX,TEMP[2]
MOVAH,40H
INT21H
ENDM
MOVEFMACROFILE_ID,STYPE,HIGEC,LOWD;移动文件指针([传入]文件号、[传入]移动方式、[传入]偏移字节(高位)[传入]偏移字节(低位))
MOVBX,FILE_ID
MOVAH,42H
MOVAL,STYPE;尾+偏移量方式
MOVCX,HIGEC;偏移字节(高位)
MOVDX,LOWD;偏移字节(低位)
INT21H
ENDM
INPUTMACROBUFFER,LENGTH;输入字符串([传入]字符串名、[返回]字符串长度)
MOVAH,10
LEADX,BUFFER
INT21H
MOVAL,BUFFER[1]
MOVLENGTH,AL
ENDM
SHOWMACROBUFFER;显示字符串([传入]字符串名)
MOVAH,9
LEADX,BUFFER
INT21H
ENDM
STAKSEGMENTSTACK
DB200DUP('?
')
STAKENDS
;=========================================
;代码段
;=========================================
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
SHOW_EXITPROCNEAR;提示按r退出
PUSHAX
PUSHBX
PUSHCX
PUSHDX
TAB
TAB
SHOWTIPS4
EXIT_1:
MOVAH,7
INT21H
CMPAL,'r'
JNZEXIT_1
POPDX
POPCX
POPBX
POPAX
RET
SHOW_EXITENDP
SHOW_ECPROCNEAR;询问退出还是继续
PUSHAX
PUSHBX
PUSHCX
PUSHDX
TAB
TAB
SHOWTIPS5
EXIT_2:
MOVAH,7
INT21H
CMPAL,'r'
JZEXIT_4
CMPAL,'c'
JNZEXIT_2
CALLINSERT
EXIT_4:
POPDX
POPCX
POPBX
POPAX
RET
SHOW_ECENDP
SHOW_ERRPROCNEAR;显示出错信息子程序
PUSHAX
PUSHBX
PUSHCX
PUSHDX
TAB
TAB
SHOWERR1
TAB
TAB
POPDX
POPCX
POPBX
POPAX
RET
SHOW_ERRENDP
RE_TMPPROCNEAR;用空格初始化缓冲区子程序
PUSHAX
PUSHBX
PUSHCX
PUSHDX
MOVCX,50
MOVBX,1
RE:
INCBX
MOVSTR1[BX],''
LOOPRE
POPDX
POPCX
POPBX
POPAX
RET
RE_TMPENDP
CLEARPROCNEAR;清屏
PUSHAX
PUSHBX
PUSHCX
PUSHDX
MOVAL,0;上滚行数
MOVCL,0;上滚窗口左上角的列号为0
MOVCH,0;上滚窗口左上角的行号为0
MOVDH,24;上滚窗口右上角的行号为24
MOVDL,79;上滚窗口右上角的列号为79
MOVBH,14;空白行的属性
MOVAH,6;入口参数
INT10H
SET_P1
POPDX
POPCX
POPBX
POPAX
RET
CLEARENDP
SHOW_STUPROCNEAR;显示学生信息子程序
PUSHAX
PUSHBX
PUSHCX
PUSHDX
SHOWID;ID
MOVCX,ID_LENGTH
MOVBX,-1
SH_ID:
INCBX
MOVDL,STR0[BX]
MOVAH,2
INT21H
LOOPSH_ID
SHOWENTER1
SHOWNAM;NAME
MOVCX,NAM_LENGTH
MOVBX,ID_LENGTH
DECBX
SH_NAME:
INCBX
MOVDL,STR0[BX]
MOVAH,2
INT21H
LOOPSH_NAME
SHOWENTER1
SHOWSEX;SEX
MOVBX,ID_LENGTH
ADDBX,NAM_LENGTH
MOVDL,STR0[BX]
CMPDL,'1';1显示male,0显示female
JNZSEX_F
SHOWSEXM
JMPNN
SEX_F:
SHOWSEXF
NN:
SHOWENTER1
SHOWSCORE;SCORE
MOVCX,SCORE_LENGTH
MOVBX,ID_LENGTH
ADDBX,NAM_LENGTH
SH_SCORE:
INCBX
MOVDL,STR0[BX]
MOVAH,2
INT21H
LOOPSH_SCORE
POPDX
POPCX
POPBX
POPAX
RET
SHOW_STUENDP
;====================以下插入(insert)子程序================
INSERTPROCNEAR
PUSHAX
PUSHBX
PUSHCX
PUSHDX
TAB
CALLCLEAR;清屏
SHOWTIPS0;显示提示信息
SHOWTIPS1
TAB
TAB
OPENFFID,FPATH;打开文件
IN_ID:
SHOWID;学号
INPUTSTR1,BL;向缓冲区输入ID
CMPBL,ID_LENGTH;看ID是否合法
JZL1
JNZERR_ID
ERR_SA:
;错误处理
TAB
TAB
SHOWERR_SAME
TAB
TAB
JMPIN_ID
ERR_ID:
TAB
TAB
CALLSHOW_ERR
TAB
TAB
JMPIN_ID
L1:
;ID判断只能为数字
MOVCX,ID_LENGTH
LEASI,STR1+2
LN:
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,STR1
INCDI
DECSI
MOVCX,ID_LENGTH
IL2:
INCSI
INCDI
MOVAL,BYTEPTR[DI]
CMPAL,BYTEPTR[SI]
JNZIA;不符合条件读取下一个同学信息
LOOPZIL2
JMPERR_SA;有重复学号
IC:
MOVEFFID,2,0,5
WRITEFFID,STR1,ID_LENGTH;数据合法则写入数据
TAB
IN_NAM:
SHOWNAM;姓名
CALLRE_TMP;初始化缓冲区
INPUTSTR1,BL
ADDBL,2;去掉回车
MOVBH,0
MOVSI,BX
MOVSTR1[SI],''
SUBBL,2
CMPBL,NAM_LENGTH
JNAL2
ERR_NAM:
CALLSHOW_ERR
JMPIN_NAM
L2:
CMPSTR1[2],'';姓名第一个字符不为空
JZERR_NAM
CMPSTR1[2],'z'
JAERR_NAM
CMPSTR1[2],'A'
JBERR_NAM
CMPSTR1[2],'a'
JNBIII
CMPSTR1[2],'Z'
JAERR_NAM
CMPSTR1[2],'A'
JBERR_NAM
III:
MOVCX,NAM_LENGTH
MOVBX,2
II0:
INCBX
DECCX
CMPSTR1[BX],'z'
JAERR_NAM
CMPSTR1[BX],''
JBERR_NAM
CMPSTR1[BX],'a'
JNBII0
CMPSTR1[BX],'Z'
JAERR_NAM
CMPSTR1[BX],'A'
JNBII0
CMPSTR1[BX],''
JNZERR_NAM
CMPCX,0
JNZII0
WRITEFFID,STR1,NAM_LENGTH
TAB
IN_SEX:
SHOWSEX;性别
CALLRE_TMP
INPUTSTR1,BL
ADDBL,2;去掉回车
MOVBH,0
MOVSI,BX
MOVSTR1[SI],''
SUBBL,2
CMPBL,SEX_LENGTH
JNZERR_SEX
MOVBL,STR1[2]
CMPBL,'1'
JZL4
CMPBL,'0'
JZL4
ERR_SEX:
CALLSHOW_ERR
JMPIN_SEX
L4:
WRITEFFID,STR1,SEX_LENGTH
TAB
IN_SCORE:
SHOWSCORE
CALLRE_TMP
INPUTSTR1,BL
MOVSC,BL;BL保护
ADDBL,2;去掉回车
MOVBH,0
MOVSI,BX
MOVS
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 课程设计 学生 成绩 系统