课设学生成绩管理系统.docx
- 文档编号:10558583
- 上传时间:2023-05-26
- 格式:DOCX
- 页数:44
- 大小:179.97KB
课设学生成绩管理系统.docx
《课设学生成绩管理系统.docx》由会员分享,可在线阅读,更多相关《课设学生成绩管理系统.docx(44页珍藏版)》请在冰点文库上搜索。
课设学生成绩管理系统
目录
1.需求说明3
2.设计说明(简要的分析与概要设计)3
2.1开发平台与开发工具3
2.2基本原理3
2.3数据结构4
2.4模块说明5
2.4.1数据的了录入5
2.4.2打印以及记录的学生信息5
2.4.3数据存档6
2.4.4从文件中读取数据6
2.4.5查找并修改学生记录信息6
2.4.6删除已经记录学生的信息7
3.详细的算法描述7
4源程序与执行结果(含测试方法和测试结果)7
4.1数据的录入8
4.2数据和显示8
4.3数据存档9
4.4从文件中读取9
4.5查询并修改同学记录信息10
4.6删除记录10
5.使用说明11
5.1自我评价与总结11
5.2本次课程设计的缺点和不足12
6.参考教材12
7.附源程序12
课程设计任务书
学生姓名:
娄俊凯专业班级:
计算机0809
指导教师:
姚寒冰工作单位:
计算机科学与技术学院
题目:
学生成绩管理
初始条件:
理论:
完成了《汇编语言程序设计》课程,对微机系统结构和80系列指令系统有了较深入的理解,已掌握了汇编语言程序设计的基本方法和技巧。
实践:
完成了《汇编语言程序设计》的4个实验,熟悉了汇编语言程序的设计环境并掌握了汇编语言程序的调试方法。
要求完成的主要任务:
(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)
进一步理解和掌握较复杂程序的设计方法,掌握子程序结构的设计和友好用户界面的设计。
具体的设计任务及要求:
1)编写学生成绩信息管理程序,学生信息采用文件存储;
2)要求能实现学生成绩信息的增、删、改、查;
3)程序采用子程序结构,结构清晰;
4)友好清晰的用户界面,能识别输入错误并控制错误的修改。
在完成设计任务后,按要求撰写课程设计说明书;对课程设计说明书的具体要求请见课程设计指导书。
阅读资料:
1)《IBM—PC汇编语言程序设计实验教程》实验2.4
2)《IBM—PC汇编语言程序设计(第2版)》例6.11
时间安排:
设计安排一周:
周1、周2:
完成系统分析及设计。
周3、周4:
完成程序调试,和验收。
周5:
撰写课程设计报告。
指导教师签名:
年月日
系主任(或责任教师)签名:
年月日
学生成绩管理系统的设计
1.需求说明
用汇编语言编写一个学生成绩管理系统,实现基本的学生成绩管理,功能包括建立成绩档案,添加学生成绩记录(包括学号、姓名、语文、数学、英语、综合),每条记录能自动计算并显示总分、平均分。
能按学号或姓名进行查询学生各科成绩,能修改学生的单科成绩,能删除某个学生的成绩记录,每条学生成绩记录包含学号、姓名、语文、数学、英语、综合、总分、平均分等信息,所有信息最终用文件保存。
要求程序界面友好,有输入界输出提示,有菜单等。
2.设计说明(简要的分析与概要设计)
2.1开发平台与开发工具
该程序使用基于DOS操作系统的16位实模式汇编语言编写,使用的编译器为微软的MASM5.0,调试工具为DOS下的debug.exe程序。
2.2基本原理
本程序使用了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=错误代码
2.3数据结构
程序采用静态链表的方式来存储学生成绩信息,链表结点描述如下:
StructNodeequ32;表达式赋值微操作equ
{
Node_nameequ0;类似define
Node_numequ12
Node_mathsequ18
Node_englishequ20
Node_chineseequ22
Node_othersequ24
Node_totalequ26
Node_avgequ28
Node_nextequ30
max_recordequ100
max_menu_indexequ9
}
说明:
结点大小为32字节,其中name占20字节,剩下的六个字段,每一个都是一个字,占两个字节。
2.4模块说明
该程序一共分为七大模块:
分别完成数据的录入,打印录入的学生记录信息,存档,文件读取数据,查找同时进行修改(包括名字和各科成绩的修改,如果不需要修改,则按原来的相应输入),删除记录以及退出。
各模块分别介绍如下:
2.4.1数据的了录入
数据的录入项目包括学生的学号、姓名,各科成绩(分别为数学、英语、语文、综合4科成绩)。
数据录入后,程序自动计算出每位学生的平均成绩和总成绩。
(1)姓名的输入方式
首先利用09号系统调用,将字符串输入到内存缓冲区,然后用字符串传送指令将缓冲区中的字符串传送到记录结点。
程序自动在输入的字符串后加上美元符号“$”,目的是方便使用系统调用将其输出。
(2)成绩的输入方式
为了方便输入,首先利用09号系统调用,让用户以10进制的形式输入成绩到内存缓冲区,然后调用子程序将字符串转换成二进制数值,并保存到记录中相应的字段里。
2.4.2打印以及记录的学生信息
打印出学生的信息包括学生的学号、姓名,各科成绩(分别为数学、英语、语文、综合4科成绩),以及总分和平均分。
2.4.3数据存档
文件格式采用二进制格式,即直接将内存中的数据复制到文件中而不经过任何转换。
文件开头的两个字节表示文件中记录的总数,之后的每32个字节存储一条记录。
文件的结构如下图所示:
记录总数:
2个字节
记录1:
20个字节
记录2:
20个字节
……
记录n:
20个字节
2.4.4从文件中读取数据
由于该程序生成的文件为二进制格式,因此读取过程十分简单,是写入过程的逆过程:
首先读取文件开头的两个字节,便知道了文件中记录的总数,然后循环读取之后的每一条记录。
2.4.5查找并修改学生记录信息
通过输入要查找学生的学号,并接着输入要修改学号为多少,因为一般情况下不会修改学生的姓名,所以接着并没有提示学生姓名的修改,直接提示各科成绩的修改,程序然后自动算出该生的总分和平均分。
2.4.6删除已经记录学生的信息
通过学号找到欲删除的学生记录,输入学号,成功删除该学生的成绩记录信息
3.详细的算法描述
添加记录:
4源程序与执行结果(含测试方法和测试结果)
程序共一个可执行文件,可以在DOS系统或者直接在Windows下运行,程序运行后在屏幕上显示主菜单,如下图所示:
图1.主菜单
选择相应的菜单项可使用对应的功能,以下为各个功能模块的详细说明:
4.1数据的录入
在主菜单下选择“1”,进入记录输入模块,按照提示输入各字段的值,如下图所示:
图2.输入数据
4.2数据和显示
在主菜单下选择“2”,进入记录输出模块。
下图为添加了5条记录后打印的效果:
图3.打印全部记录
4.3数据存档
在主菜单下选择“3”,将当前在内中的全部记录保存到文件中(c:
\student.txt),如下图所示:
图4.保存文件
图5.C盘中保存的文件
4.4从文件中读取
在主菜单下选择“4”,将当前在内中的全部记录保存到文件中(c:
\student.txt),如下图所示:
图6:
从文件中读取
4.5查询并修改同学记录信息
在主菜单下选择5,按相应提示输入正确信息,将学号为3的同学改为学号为5,并对其的成绩做修改,如下图所示:
图7.查询修改
图8.修改后学生成绩
4.6删除记录
在主菜单下选择6,输入学号2,将学号为2的学生成绩记录删去,如下图所示:
图9.删除后的学生成绩记录
5.使用说明
程序的使用方法可参见上一节中介绍的测试方法,在此不再重复。
5.1自我评价与总结
通过为期一周的令人兴奋的课程设计实践活动,感觉很有收获。
在此之前,大多数时候都在用高级语言编写程序,已经习惯了高级语言的方便灵活的语法形式。
一下子突然转为用汇编语言进行程序设计,总是要经过一个很不习惯的适应过程。
不过,这些是很有必要的。
通过使用汇编语言,可以让我们更好地理解程序设计的本质和原理。
对以后的学习和工作都带好很多好处。
而且,这门语言也有它自己特点——高效。
在特定场合,高级语言无法完成的任务,还是得靠它。
这次在编写和调式汇编程序过程中体会最深的就是,没有好的工具,汇编程序的调式工作太困难了!
这次使用的是微软的masm5.0编译工具,是DOS底下的编译工具,这倒还可以,但是没有其它可视化的调式工具,只能利用DOS底下的debug命令进行调式。
程序稍微长一点的时候,调试起来就不是那么方便了,主要问题是在debug中虽然可以反汇编,但是反汇编后的源程序与自己写的不太一样了(符号常量和标号都变成了数字地址),不方便辨认当前调式程序对应于源代码中的哪一行。
通过列表文件中的地址与源代码对应关系可以确认,只是不方便。
5.2本次课程设计的缺点和不足
(1)程序中不足的地方是:
成绩都是用整数表示的,没有实现浮点运算;
(2)查询和修改结合到一个功能上去了,使用起来不是较方便;
(3)查询只能通过学号查询,没有实现学号或者通过姓名查询的选择;
(4)打印所有已经录入学生的记录时界面不够完美,有待改正;
(5)主菜单界面设计不够人性化,不够简单明了,缺少美观
6.参考教材
[1]沈美明、温冬婵等编著,IBM-PC汇编语言程序设计(第2版)。
清华大出
版社。
2001年12月
[2]《IBM—PC汇编语言程序设计实验教程》实验2.4
[3]《IBM—PC汇编语言程序设计(第2版)》例6.11
7.附源程序
;==学生成绩管理系统==
;*******************************************************************************
;EQUSTATEMENTSGOHERE
StructNodeequ32;表达式赋值微操作equpage133
Node_nameequ0;类似define
Node_numequ12
Node_mathsequ18
Node_englishequ20
Node_chineseequ22
Node_othersequ24
Node_totalequ26
Node_avgequ28
Node_nextequ30
max_recordequ100
max_menu_indexequ9
;*******************************************************************************
;*******************************************************************************
data_segsegment;definedatasegment
;DATAGOESHERE
buf1DB30
buf1_slenDB?
buf1_dataDB30dup(?
)
bufnameDB20
bufname_slenDB?
bufname_dataDB20dup(?
)
bufgetintDB32
bufgetint_slenDB?
bufgetint_dataDB32dup(?
)
str_menuDB0dH,0aH,'=====Studentmarkssystem=====',0dH,0aH,0dH,0aH
DB'1)AddRecord',0dH,0aH,0dH,0aH
DB'2)PrintAll',0dH,0aH,0dH,0aH
DB'3)Save',0dH,0aH,0dH,0aH
DB'4)Open',0dH,0aH,0dH,0aH,0dH,0aH
DB'5)Find',0dH,0aH,0dH,0aH,0dH,0aH
DB'6)Delete',0dH,0aH,0dH,0aH,0dH,0aH
DB'0)Exit',0dH,0aH
DB'Choice:
$'
;ErrorStrings
str_error_1DB'Errorinput!
',0dH,0aH,'$'
jump_tbDWcase_0
DWcase_1
DWcase_2
DWcase_3
DWcase_4
DWcase_5
DWcase_6
headDW?
;表头指针
info_0db'inputnum:
','$'
info_1db'inputmath:
','$'
info_2db'inputenglish:
','$'
info_3db'inputchinese:
','$'
info_4db'inputothers:
','$'
info_5db'inputname:
','$'
str_tb_headdb'Num',9,'Name',9,'Maths',9,'English',9,'Chinese',9,'Others',9,'Total',9,'Avg',0dH,0aH
db'=================================================================',0dH,0aH,'$'
str_tabdb9,'$
rdatadb(StructNode*(max_record+1))dup(?
);全部结点32*(100+1)
rdata_pdwrdata;下一个可用结点
rcountdw00H;当前已分配的结点数
newnodedw?
pnodedw?
file_namedb'c:
\student.txt',00H
file_error1db'Failedcreatefile...',0DH,0AH,'$'
file_error2db'Failedwritefile...',0DH,0AH,'$'
file_error3db'Failedopenthefile...',0DH,0AH,'$'
file_error4db'Failedreadfile...',0DH,0AH,'$'
file_info_1db'savingthefile...',0DH,0AH,'$'
file_info_2db'Writetofilesuccessfully!
',0DH,0AH,'$'
file_info_3db'openingthefile...',0DH,0AH,'$'
file_info_4db'readthefilesuccessfully!
',0DH,0AH,'$'
fp1dw?
;文件指针
data_segends
;******************************************************************************
;*******************************************************************************
extdata_segsegment;defineextradatasegment
;EXTRADATAGOESHERE
extdata_segends
;*******************************************************************************
;*******************************************************************************
stack_segsegmentstack;defineextradatasegment
;STACKDATAGOESHERE
DB100Hdup(?
)
stack_segends
;*******************************************************************************
;*******************************************************************************
programsegment;definecodesegment
;*******************************************************************************
mainprocfar;mainpartofprogram
assumecs:
program,ds:
data_seg,es:
extdata_seg,ss:
stack_seg
start:
;setupstackforreturn
pushds
subax,ax
pushax
;setDSregistertocurrentdatasegment
movax,data_seg;data_segsegmentaddr
movds,ax;intoDSregister
movax,extdata_seg;extdata_segsegmentaddr
moves,ax;intoESregister
movax,stack_seg;stack_segsegmentaddr
movss,ax;intoSSregister
;MAINPARTOFPROGRAMGOESHERE
;分配链表头结点
movax,rdata_p
movhead,ax;当前头指针就是rdata_p
addrdata_p,StructNode
movbx,head
movwordptr[bx+Node_next],00H
lb_print_menu:
;打印菜单
leadx,str_menu
movah,09H
int21H
callfarptrgetint
cmpdx,max_menu_index
jalb_print_menu
movdi,dx
shldi,1
jmpjump_tb[di]
jmplb_print_menu
case_0:
;Exit
ret
case_1:
;添加记录
callfarptraddrecord
jmplb_print_menu
case_2:
;打印所有记录
callfarptrprint_record
jmplb_print_menu
case_3:
;保存到文件
callfarptrsave_record
jmplb_print_menu
case_4:
;从文件中读取
callfarptrread_record
jmplb_print_menu
case_5:
;查找
callfarptrfind_record
jmplb_print_menu
case_6:
;删除
callfarptrdelete_record
jmplb_print_menu
ret;returntoDOS
mainendp;endofmainpartofprogram
;*******************************************************************************
;*******************************************************************************
sub1procnear;definesubprocedure
pushax
pushbx
pushcx
pushdx
;mainportofsubprocedure
;exitsubprocedure
popdx
popcx
popbx
popax
ret
sub1endp;endofsubprocedure
;*******************************************************************************
;*******************************************************************************
;printCRLF
crlfprocfar
pushdx
pushax
movdl,0dH
movah,02H
int21H
movdl,0aH
movah,02H
int21h
popax
popdx
ret
crlfendp
;*******************************************************************************
;**********************************************************************
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 成绩管理系统