学生成绩管理系统.docx

上传人:b****5 文档编号:11761219 上传时间:2023-03-31 格式:DOCX 页数:60 大小:92.17KB
下载 相关 举报
学生成绩管理系统.docx_第1页
第1页 / 共60页
学生成绩管理系统.docx_第2页
第2页 / 共60页
学生成绩管理系统.docx_第3页
第3页 / 共60页
学生成绩管理系统.docx_第4页
第4页 / 共60页
学生成绩管理系统.docx_第5页
第5页 / 共60页
点击查看更多>>
下载资源
资源描述

学生成绩管理系统.docx

《学生成绩管理系统.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统.docx(60页珍藏版)》请在冰豆网上搜索。

学生成绩管理系统.docx

学生成绩管理系统

学号:

课程设计

 

题目

学生成绩管理系统设计

学院

自动化学院

专业

电气工程及其自动化

班级

姓名

指导教师

 

2014

1

9

课程设计任务书

学生姓名:

专业班级:

指导教师:

工作单位:

自动化学院

题目:

学生成绩管理系统设计

初始条件:

掌握8086汇编语言程序设计方法,设计一个学生成绩管理系统,程序运行后通过键盘控制实现各种功能。

要求完成的主要任务:

(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)

1.程序运行后,键盘输入不同进行不同处理:

(1)‘E’表示退出,‘L’表示浏览;

(2)‘I’表示插入,‘Q’表示查询,‘D’表示删除,‘M’表示修改,‘C’表示统计各分数段人数。

2.撰写课程设计说明书。

内容包括:

摘要、目录、正文、参考文献、附录(程序清单)。

正文部分包括:

设计任务及要求、方案比较及论证、软件设计说明(软件思想,流程,源程序设计及说明等)、程序调试说明和结果分析、课程设计收获及心得体会。

时间安排:

12月26日-----12月28日查阅资料及方案设计

12月29日-----1月2日编程

1月3日-----1月7日调试程序

1月8日-----1月9日撰写课程设计报告

 

指导教师签名:

年月日

系主任(或责任教师)签名:

年月日

目录

摘要1

1需求说明2

2设计说明2

2.1开发平台与开发工具2

2.2基本原理2

2.3模块说明3

2.3.1浏览模块3

2.3.2插入模块4

2.3.3查询模块4

2.3.4修改模块4

2.3.5删除模块4

2.3.6分数段统计模块4

2.3.7退出模块4

3算法设计5

4程序编译与运行6

5收获、体会与总结8

附录完整程序10

本科生课程设计成绩评定表40

摘要

学生成绩管理系统是一个教育单位不可缺少的部分,它的内容对学校的决策者和管理者来说都是至关重要的。

学生管理系统由于具有查询迅速、方便、存储量大、保密性好的功能,因此被广泛采用。

此次学生成绩管理系统通过汇编语言进行编写,利用一些基本的语句和过程化的定义语言完成主程序对子程序的调用,从而实现管理系统的浏览、退出、查询、插入、修改、删除、退出等7个基本功能,并利用emu8086完成系统的仿真设计。

关键词:

学生成绩管理系统汇编功能仿真

 

 

学生成绩管理系统设计

需求说明

为了方便查找学生成绩信息,突破传统的手工处理方式,跟上现代化教学的要求,所以特开发一套对学生成绩进行管理的系统,做到信息的即时化,准确化。

本次课设以此为基础,利用课堂所学微机原理知识,用汇编语言编写一个学生成绩管理系统,实现基本的学生成绩管理。

功能主要包括建立成绩档案,添加学生成绩记录(包括学号、姓名、性别、成绩)。

本成绩管理系统应该具有最基本的退出和浏览功能,并在此基础上能按学号进行插入、查询、删除和修改等部分功能。

同时本系统运行的所有信息最终用文件保存。

本系统在完成上述功能的基础上,对管理系统的输入和输出界面进行友好型设计,界面尽量美观,同时进行一些必要的提示。

设计说明

开发平台与开发工具

该程序使用基于DOS、BIOS操作系统的16位实模式汇编语言编写,使用的编译器为emu8086,调试工具为DOS下的debug.exe程序。

基本原理

本系统的设计是按照主程序调用子程序的方法来实现的。

其中主程序完成菜单的实现,子程序完成一个独立功能的实现。

本程序使用了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=错误代码

表1-1系统的功能调用

模块说明

该程序按照要实现的功能一共分为七大模块:

分别完成学生成绩的浏览、学生成绩的插入、学生成绩的查询、学生成绩的修改、学生成绩的删除、学生成绩各分数段的人数统计以及管理系统的退出。

浏览模块

设计List(浏览)子程序时,先打开文件,然后读一个记录,并通过过程化语言调用SHOW_STU将其显示到屏幕上,若文件指针没有到达文件尾,则继续读记录并显示,当文件指针到达文件尾时,若没有学生信息,在屏幕上进行提示并关闭文件返回主程序。

插入模块

设计Insert(插入)子程序时,先打开文件SCORE.TXT,并置文件指针到文件尾,然后过程化语言调用子程序接受用户的输入,再把学生的输入写入文件,最后关闭文件返回主程序。

查询模块

子程序时,先打开文件,通过过程化调用,先判断学号是否合法,合法后再查找学生的学号,然后读文件记录,并同要查找的学生学号比较,若相同则输出,若不同则继续读文件记录,最后显示查询结果,关闭文件返回程序。

修改模块

设计Modify(修改)子程序时,先打开文件SCORE.TXT,通过过程化定义语言调用子程序得到要修改的记录,然后读文件中的记录,并与用户输入的记录作比较(只比较记录中的名字部分),若不同则读下一个记录,若相同则将文件指针后退20个字符(一个记录为20个字符的长度),然后把用户输入的记录写入文件,最后关闭文件返回主程序。

删除模块

设计Delete(删除)子程序时,先打开文件,再过程化定义语言得到要删除的学生的学号,然后读文件中的记录,直到其记录的学号与所输入的学号相同为止,把文件指针后退5个字符,关闭文件返回主程序。

分数段统计模块

设计Count(统计)子程序,先打开文件,然后读记录,比较记录的第16个字符(数学成绩的高位)并统计,直到文件指针到达文件尾,最后关闭文件调用宏SHOW_EXIT显示统计结果,返回主程序。

退出模块

设计Exit(退出)子程序,先清屏,然后通过过程化定义语言调出初始源代码段中编写的人性化退出界面,借助DOS操作系统系统下的退出功能关闭成绩管系统。

算法设计

主程序运行时的汇编程序:

START:

MOVAH,7

INT21H

CMPAL,'i'

JNZML

CALLINSERT

RETU:

JMPMAIN

ML:

CMPAL,'l'

JNZMQ

CALLLIST

JMPMAIN

MQ:

CMPAL,'q'

JNZME

CALLQUERY

JMPMAIN

MC:

CMPAL,'c'

JNZMM

CALLCOUNT

JMPMAIN

MM:

CMPAL,'m'

JNEMD

CALLMODIFY

JMPMAIN

MD:

CMPAL,'d'

JNZME

CALLDELETE

JMPMAIN

ME:

CMPAL,'e'

CALLEXIT

JMPMAIN

程序编译与运行

程序共一个可执行文件,通过emu8086编译运行后在屏幕上显示主菜单,输入不同按键程序执行的结果如下图所示。

图4.1系统主菜单

图4.2系统浏览功能

图4.3系统分数统计功能

图4.4系统插入功能

图4.5系统修改功能

图4.6系统删除功能

图4.7系统退出功能

收获、体会与总结

通过这段时间的编程,我增加了对汇编知识的了解,能更加熟练得编写汇编程序了。

通过查阅资料和与同学的交流,更加深了我对汇编知识的兴趣,尤其是美化界面那部分编程,让人不自觉的就产生一种自己是伟大的系统开发者,我做的是一个很伟大的任务,尽管我知道自己编出的程序在那些“大牛”看来不值一提,但当数据如我所愿的在屏幕上显示出来时,那种喜悦之情很难用言语表达。

如果有时间的话这个程序还可以增加很多功能,比如记录学生更多科目的分数并将平均分显示出来,单科成绩的查询和排序,复制粘贴功能,加入网格及声音等,虽然基本功能都实现了但还有许多值得改进地方。

在这次的课程设计中,除了使我对所学知识的了解更加巩固和深入外,我收获更多的是对我思维的考验和动手能力的锻炼。

像这种实践性比较强的设计过程都比较复杂,需要时刻保持清晰的思路,否则出错了还得从头找起。

与此同时,也是对我动手编程能力的一大考验和提高,我不再停留在死记硬背的阶段,开始通过编写编译程序发现问题来进一步掌握汇编语言,通过debug来了解汇编语言与高级语言的联系、寄存器与操作数的联系等问题。

这次设计我受益匪浅,它让我从传统的被动授学转变为主动求学,使我在与同学老师的交流中、书本网络资源的学习中渐渐积累了终身受益的不菲的收获。

参考文献

[1]彭虎,周佩玲.微机原理与接口技术.北京:

电子工业出版社,2008

[2]周明德.微机原理与接口技术.北京:

人民邮电出版社,2007

[3]杨立.微机原理与接口技术.天津:

天津大学出版社,2010

[4]张坤.汇编语言实验教程.北京:

清华大学出版社,2008

[5]佘朝坤.IBM-PC汇编语言程序设计.北京:

机械工业出版社,2008

[6]陈慈发.微型计算机技术.北京:

科学出版社,2010

[7]孙德文.微型计算机技术.北京:

高等教育出版社,2010

 

附录完整程序

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'*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'*exit(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!

$'

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;数据库文本

STRDB50DUP('?

');缓冲区str

STR0DB50DUP('?

');缓冲区str0

ENTERDB'$';空格

TMPDW0;是否为空标志信息

SCDB0;分数保护处用

BYEDB'Thanksforuseourprogram!

',0DH,0AH,0DH,0AH,'Bye~Bye~$'

BY0DB'Writer:

$'

BY1DB'38(liFeiXing)$'

BY2DB'31(Chengkang)$'

BY3DB'15(ChenChuMing)$'

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

SHOWERR

TAB

TAB

POPDX

POPCX

POPBX

POPAX

RET

SHOW_ERRENDP

RE_TMPPROCNEAR;用空格初始化缓冲区子程序

PUSHAX

PUSHBX

PUSHCX

PUSHDX

MOVCX,50

MOVBX,1

RE:

INCBX

MOVSTR[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

SHOWENTER

SHOWNAM;NAME

MOVCX,NAM_LENGTH

MOVBX,ID_LENGTH

DECBX

SH_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

JMPNN

SEX_F:

SHOWSEXF

NN:

SHOWENTER

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

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1