资源描述
摘 要
管理信息系统正在向着网络化、智能化和集成化等趋势发展。学生成绩管理系统是为了更好的管理学生考试成绩而开发的数据管理软件。它对于一个学校是不可缺少的重要部分,它的内容对于学校的决策者和管理者来说都至关重要。学生成绩管理管理系统为用户提供充足的信息和快捷的查询手段,实现学生基本信息、成绩的录入,删除,查询,维护以及成绩的统计分析等几方面的功能,是现实问题的迫切要求。
本系统开发的总体任务是实现学生成绩管理的系统化、规范化、自动化。达到提高学生成绩管理效率的目的。与传统管理方法相比有明显的优点:查找方便,可靠性高,保密性好,成本低。彻底改变了以前繁杂的管理模式,实现全面的、相对集中的、职能化的信息综合管理。
计算机被用到信息管理系统的环境正是适应了当今时代飞速发展的信息时代。人们深刻的认识到了计算机功能的强大,对于复杂的信息管理,计算机充分发挥着它的优越性。检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低,这些优点极大地减轻了学院教学人员的工作量,缩小开支,提高了学生档案管理的效率和准确性,能够合理的安排时间,学生能够尽快的知道自己的考试成绩。同时,学生管理系统的应用也为今天的教育在未来市场的竞争力有所提高。
关键字:学生成绩管理,插入,查找,删除,退出,修改;目 录
1. 系统分析 4
1.1系统开发背景 4
1.2初步调查与可行性分析 4
1.3系统目标 4
1.4系统流程图 5
2. 系统总体设计 6
2.1总体结构图分析 6
2.2总体结构图 7
2.3总体数据结构 7
3、详细设计 8
3.1 程序功能设计 8
3.2 设计思路 8
4、系统测试 9
4.1测试方案 9
4.2测试用例及测试结果 9
4.3软件可靠性 11
5、软件使用说明书 12
6、设计总结 13
参考文献 14
致谢 15
附录(源代码) 16
1. 系统分析
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总体结构图分析
本系统有插入、删除、查询、修改、显示、统计退出五大模块,各模块的主要功能有:
(1) 插入:使用者可在打开程序主界面之后,按“i”键实施插入功能,添加信息主要有4项:ID(要求输入四位数字)、NAME(姓名)、SEX(性别,男生输入1,女生输入0),每项输入完成按回车输入下一项,输入完成之后有提示r/c,r表示退出正在进行的操作回到主界面,c表示继续添加。此处可实现程序数据的存储,存储位置“c:/score.txt”;
(2) 删除:打开程序主界面之后,按“d”键实施删除功能,只需输入ID即可删除该生在系统中的所有信息,此处可实现程序数据的删除;
(3) 查询:打开程序主界面之后,按“q”键实施查询功能,此时提示输入信息同删除,此处可实现程序数据的查询;
(4) 显示:打开程序主界面之后,按“l”键实施显示功能,即可显示出所有的学生信息,此处可实现程序数据的显示;
(5) 修改:打开程序主界面之后,按“m”键实施修改功能,即可显示出所有的学生信息,此处可实现程序数据的显示;
(6) 打印:在系统有打印功能的前提下,在主界面中输入“p”,就可对已有的成绩打印;
(7) 退出:在使用完成之后,按“e”即可退出程序,也可以直接点关闭按钮。
2.2总体结构图
图 2.2.1总体结构图
2.3总体数据结构
(1)main主程序模块
用于对各种操作的调用,如插入、删除、显示所有学生的成绩、信息等;
(2)Insert子程序插入模块
用于实现对新增学生的插入,插入至学生文本中;
(3)query子程序模块
根据学生ID查询学生的所有信息,学生ID由键盘输入,再从文件中一次比较找出要查询学生的信息;
(4)delete子程序模块
由用户输入要删除学生的ID,从学生文件中找出要删除的学生信息,实现删除的操作。
(5)list子程序模块
用于显示学生文件中所有学生的成绩信息,每次从文件读取一个学生的信息并显示。
3、详细设计
3.1 程序功能设计
程序运行时,在出现的主菜单中,按l键,将浏览学生的各科成绩;按i键后,将执行插入功能,可以插入新的学生信息;按d键输入要删除的学生姓名;按q键输入ID查询的学生的信息;按下e键将退出程序;途中会出现r/c提示,r表示退出正在进行的操作回到主界面,c表示继续操作;程序中输入性别(sex),须输入0或者1。
以上功能单独运行可以实现,(即在进入菜单后 选择其中一项功能运行可以成功运行,在关闭后选择另一项功能可以 成功运行),但是在整体运行时得不到想要的结果。
注:此程序除了源程序外还需要一个学生文件,该程序命名为score.txt,该文件用于存放学生信息。
3.2 设计思路
(1)数据定义
一个数据元素(一个学生的数据项)应该为一个结构类型,定义如下:
ID_LENGTH EQU 4
NAM_LENGTH EQU 20
SEX_LENGTH EQU 1
SCORE_LENGTH EQU 5
配置信息: ID4位数;名字20个字符;性别,1位数(0或者1);分数5位,范围为0-100
(2)方法和步骤
这个程序主要分为插入、删除、查询、显示、修改、退出,定义如下:
mess3 DB ' * insert (i) *',0ah,0dh,'$'
mess4 DB ' * modify (m) *',0ah,0dh,'$'
mess5 DB ' * delete (d) *',0ah,0dh,'$'
mess6 DB ' * query (q) *',0ah,0dh,'$'
mess7 DB ' * count (c) *',0ah,0dh,'$'
mess8 DB ' * print (p) *',0ah,0dh,'$'
mess9 DB ' * exit (e) *',0ah,0dh,'$'
1) 进去之后首先创建一个“.txt”数据库文本,用来储存输入信息,控制文件的打开、关闭、读写、移动等。
2) 用空格初始化缓冲区子程序,定义出要在主界面所要显示的内容,显示提示信息,打开文件,按提示进入操作。
3) 插入:insert子程序;删除:delete子程序;查询:query子程序;全部显示:list子程序;修改:modify;打印:print;退出:exit子程序。
4、系统测试
4.1测试方案
(1).asm的源程序文件建立.exe的可在电脑上直接运行的文件;
(2)打开.exe文件,按照提示输入,分别测试插入、删除、查询、显示、修改、退出等功能。
4.2测试用例及测试结果
(1)主程序截图
图 4.2.1主程序
(2)显示所有成绩
图 4.2.2显示全部
(3)插入成绩
图 4.2.3插入成绩
(4)修改成绩
图 4.2.4修改成绩
(5)删除成绩
图 4.2.5删除成绩
(6)查找成绩
图 4.2.6查找成绩
(8) 统计成绩
图 4.2.7统计成绩
4.3软件可靠性
(1)分析测试集中的所有测试用例,测试可以通过测试准则。
(2)测试代码可以达到相应的测试覆盖率,每一个状态和路径都可以达到相应效果。
(3)对测试结果进行分析,所有的安全性需求可得到了满足。
5、软件使用说明书
程序运行时,在出现的主菜单中,按l键,将浏览学生的各科成绩;按i键后,将执行插入功能,可以插入新的学生信息;按d键输入要删除的学生姓名;按q键输入ID查询的学生的信息;按下e键将退出程序;途中会出现r/c提示,r表示退出正在进行的操作回到主界面,c表示继续操作;程序中输入性别(sex),须输入0或者1。
以上功能单独运行可以实现,(即在进入菜单后 选择其中一项功能运行可以成功运行,在关闭后选择另一项功能可以 成功运行),但是在整体运行时得不到想要的结果。
注:此程序除了源程序外还需要一个学生文件,该程序命名为score.txt,该文件用于存放学生信息。
6、设计总结
通过对这学生成绩管理的的制作,使我对汇编语言的基本知识的使用更加熟练,同时也增加了我对汇编语言的一些认识,在作业完成过程中通过和同学的交流,也增加了合作的技巧。通过查阅资料也学到了一些课本上没有的东西,拓宽了自己的知识面,增加了学好汇编语言的信心。 这不是第一次用汇编语言来设计一个小程序,平时做了很多实验,写了很多小程序。但这次是一个综合的程序,平时的很多程序都用到了。历时两周终于完成,其间有不少感触。
在本次的课程设计过程中,我最大的收获就是学到了不少新的知识,同时可以自己学到的汇编语言的知识和以前学的程序设计的知识应用到实践中, 熟悉了开发环境,提高了自己的动手能力, 并顺利地完成了此次的任务.课程设计让我从中得到莫大的信心,鼓励,快乐和成就感.编程过程中,我遇到了一些困难.这我通过上网查询和去图书馆查找资料解决问题,有效地利用网络资源和学校图书资源,同时也了解了更多的知识获取的途径,扩大了自己的知识面. 遇到问题时,多数情况下我是自己独立解决的,这锻炼我独立思考问题和独立解决问题的能力;如果自己通过查找资料无法解决,我就向老师和同学寻求帮助,不但学到了新的,更完善解决问题的方法,还学会了与人沟通,与人交流.我认识到有时候,其他人的一点提示,就会令自己茅塞顿开,得到灵感.因此,在作课程设计时,不要吝惜自己的思路和想法,尽可能多的与大家的交流.许多时,我们都能从中得到进步,得到提示,甚至得到更好的方案.同时我也发现了自己的一些问题.本次课程设计,对我帮助很大.它提高了我的理论知识和和实践动手能力;提高了我独立思考问题和解决问题的能力;同时,增强了我与人探讨问题,交流思路的意识;此外,它还让我发现了自己在编程习惯上的许多不足,对以后的编写程序和设计解题思路有很大的启发. 在以后的学习和实践中,我会不断督促自己,不断提高,不断进步
参考文献
[1]范立南,刘天慧 编著《SQL Server 2000实用教程》 清华大学出版社
[2]丁宝康 编著 《数据库实用教程》 清华大学出版社
[3]陈禹,方美琪 编著 《软件开发工具》 经济科学出版社
[4]黄梯云, 主编《管理信息系统》高等教育出版社
[5]朱耀庭,《汇编语言程序设计》清华大学出版社
致谢
在此次课程设计中,我们衷心感谢刘树群老师对我们的细心指导。刘老师指引我们的课程设计的写作的方向和架构,并指正出其中误谬之处,使我们一起努力完成, 刘老师要指导很多同学的论文,加上本来就有的教学任务,工作量之大可想而知,老师的用心良苦。在此,谨向刘老师衷心的感谢! 谢谢刘老师在我们的课程设计过程中给与我们的极大地帮助。
同时,课程设计的顺利完成,离不开小组内部成员的互相努力,团结协作。在整个的课程设计写作中,大家互相支持,努力需找问题答案所在。最终顺利完成了这个课程设计。在论文的写作过程中也学到了做任何事情所要有的态度和心态,首先做学问要一丝不苟,对于发展过程中出现的任何问题和偏差都不要轻视,要通过正确的途径去解决,在做事情的过程中要有耐心和毅力,不要一遇到困难就达退堂鼓,只要坚持下去就可以找到思路去解决问题的。而且要学会与人合作,这样做起事情来就可以事半功倍。
附录(源代码)
DATA SEGMENT
TIPS0 DB 'Tips:',0DH,0AH,'$' ;插入提示信息
TIPS1 DB ' SEX: 1:male 0:female',0DH,0AH,'$'
TIPS3 DB 'Please input ID:$' ;查询提示信息
TIPS4 DB ' Please enter "r" to return$'
TIPS5 DB ' Please enter "r" to return,"c" to continue$'
ID DB ' ID: $'
NAM DB ' NAME: $'
SEX DB ' SEX: $'
SCORE DB 'SCORE: $'
FID DW ? ;文件号
SEXM DB 'male $'
SEXF DB 'female $'
COUNT_A DB ' 9 0 ~ 100: $' ;统计提示信息
COUNT_B DB ' 8 0 ~ 8 9: $'
COUNT_C DB ' 7 0 ~ 7 9: $'
COUNT_D DB ' 6 0 ~ 6 9: $'
COUNT_E DB ' 0 0 ~ 5 9: $'
AB DB 5 DUP('0') ;统计结果
mess1 DB ' * The Student Grade Management System *',0ah,0dh,'$'
mess2 DB ' * this is main menu *', 0ah,0dh,'$'
mess3 DB ' * insert (i) *',0ah,0dh,'$'
mess4 DB ' * modify (m) *',0ah,0dh,'$'
mess5 DB ' * delete (d) *',0ah,0dh,'$'
mess6 DB ' * query (q) *',0ah,0dh,'$'
mess7 DB ' * count (c) *',0ah,0dh,'$'
mess8 DB ' * print (p) *',0ah,0dh,'$'
mess9 DB ' * exit (e) *',0ah,0dh,'$'
mess10 DB ' * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * $'
mess13 DB ' * list (l) *',0ah,0dh,'$'
mess14 DB ' * please chose(l/i/m/d/q/c/p/e): *',0ah,0dh,'$'
ID_LENGTH EQU 4 ;配置信息
NAM_LENGTH EQU 20
SEX_LENGTH EQU 1 ;性别请勿更改位数
SCORE_LENGTH EQU 5
STU_LENGTH DW ? ;每条学生信息总长度
STU_LENGTH_ADD1 DW ?
NAM_SEX_SCORE_LENGTH DW ?
DEL DB 30 DUP (' ') ;清空信息用
DEL_DONE DB ' Delete success !$'
ERR DB ' Data error,Please input again!$' ;错误提示信息
NOSTU DB ' Sorry,there is no this studnet!$'
ERR_NO DB ' No student information!$'
ERR_SAME DB ' There is the same ID,please input again!$'
NEWF DB 0DH,0AH,0DH,0AH,' Warning: this operation will empty all your data!',0DH,0AH,0DH,0AH,' Will you continue? (y:empty,other key:return):$'
FPATH DB 'c:\score.txt',0 ;数据库文本
STR DB 50 ;缓冲区str
DB ?
DB 50 DUP (?)
STR0 DB 50 DUP (?) ;缓冲区str0
ENTER DB ' $' ;空格
TMP DW 0 ;是否为空标志信息
SC DB 0 ;分数保护处用
BYE DB ' Thanks for use our program!',0DH,0AH,0DH,0AH,' Bye~ Bye~$'
BY0 DB ' Writer:$'
BY1 DB ' 07212151206 (Gao Tian)$'
BY2 DB ' 07212151207 (Yu Chang Ming)$'
BY3 DB ' 07212151208 (Yi Bao Fa)$'
BY4 DB ' 07212151209 (Dong Jun Zai)$'
BY5 DB ' 07212151210 (Luo Chun)$'
DATA ENDS
SET_P1 MACRO ;设定光标位置A
MOV AH,02H
MOV DH,02
MOV DL,03
MOV BH,0
INT 10H
ENDM
SET_P3 MACRO
MOV AH,02H ;设定光标的位置B
MOV DH,15
MOV DL,44
MOV BH,0 ;当前这页
INT 10H
ENDM
TAB MACRO ;换行
MOV AH,2
MOV DL,0DH
INT 21H
MOV DL,0AH
INT 21H
ENDM
CREATEF MACRO FILE_ID,FILE_PATH ;创建文件([传入]文件号、[传入]文件路径)
MOV AH,3CH
MOV CX,00H ;普通文件
LEA DX,FILE_PATH
INT 21H
MOV FILE_ID,AX
ENDM
OPENF MACRO FILE_ID,FILE_PATH ;打开文件([传入]文件号、[传入]文件路径)
MOV AL,2 ;读写文式打开
MOV AH,3DH
LEA DX,FILE_PATH
INT 21H
MOV FILE_ID,AX
ENDM
CLOSEF MACRO FILE_ID ;关闭文件([传入]文件号)
MOV BX,FILE_ID
MOV AH,3EH
INT 21H
ENDM
READF MACRO FILE_ID,TEMP,NUM ;读文件([传入]文件号、[传入]缓冲区、[传入]字节数)
MOV BX,FILE_ID
LEA DX,TEMP
MOV AX,NUM
MOV CX,AX
MOV AH,3FH
INT 21H
ENDM
WRITEF MACRO FILE_ID,TEMP,NUM ;写文件([传入]文件号、[传入]缓冲区、[传入]字节数)
MOV BX,FILE_ID
MOV CX,NUM
LEA DX,TEMP[2]
MOV AH,40H
INT 21H
ENDM
MOVEF MACRO FILE_ID,STYPE,HIGEC,LOWD ;移动文件指针([传入]文件号、[传入]移动方式、[传入]偏移字节(高位)[传入]偏移字节(低位))
MOV BX,FILE_ID
MOV AH,42H
MOV AL,STYPE ;尾+偏移量方式
MOV CX,HIGEC ;偏移字节(高位)
MOV DX,LOWD ;偏移字节(低位)
INT 21H
ENDM
INPUT MACRO BUFFER,LENGTH ;输入字符串([传入]字符串名、[返回]字符串长度)
MOV AH,10
LEA DX,BUFFER
INT 21H
MOV LENGTH,BUFFER[1]
ENDM
SHOW MACRO BUFFER ;显示字符串([传入]字符串名)
MOV AH,9
LEA DX,BUFFER
INT 21H
ENDM
STAK SEGMENT STACK
DB 200 DUP (?)
STAK ENDS
;=========================================
; 代码段
;=========================================
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
SHOW_EXIT PROC NEAR ;提示按r退出
PUSH AX
PUSH BX
PUSH CX
PUSH DX
TAB
TAB
SHOW TIPS4
EXIT_1: MOV AH,7
INT 21H
CMP AL,'r'
JNZ EXIT_1
POP DX
POP CX
POP BX
POP AX
RET
SHOW_EXIT ENDP
SHOW_EC PROC NEAR ;询问退出还是继续
PUSH AX
PUSH BX
PUSH CX
PUSH DX
TAB
TAB
SHOW TIPS5
EXIT_2: MOV AH,7
INT 21H
CMP AL,'r'
JZ EXIT_4
CMP AL,'c'
JNZ EXIT_2
CALL INSERT
EXIT_4: POP DX
POP CX
POP BX
POP AX
RET
SHOW_EC ENDP
SHOW_ERR PROC NEAR ;显示出错信息子程序
PUSH AX
PUSH BX
PUSH CX
PUSH DX
TAB
TAB
SHOW ERR
TAB
TAB
POP DX
POP CX
POP BX
POP AX
RET
SHOW_ERR ENDP
RE_TMP PROC NEAR ;用空格初始化缓冲区子程序
PUSH AX
PUSH BX
PUSH CX
PUSH DX
MOV CX,50
MOV BX,1
RE: INC BX
MOV STR[BX],' '
LOOP RE
POP DX
POP CX
POP BX
POP AX
RET
RE_TMP ENDP
CLEAR PROC NEAR ;清屏
PUSH AX
PUSH BX
PUSH CX
PUSH DX
MOV AL,0 ;上滚行数
MOV CL,0 ;上滚窗口左上角的列号为0
MOV CH,0 ;上滚窗口左上角的行号为0
MOV DH,24 ;上滚窗口右上角的行号为24
MOV DL,79 ;上滚窗口右上角的列号为79
MOV BH,14 ;空白行的属性
MOV AH,6 ;入口参数
INT 10H
SET_P1
POP DX
POP CX
POP BX
POP AX
RET
CLEAR ENDP
SHOW_STU PROC NEAR ;显示学生信息子程序
PUSH AX
PUSH BX
PUSH CX
PUSH DX
SHOW ID ;ID
MOV CX,ID_LENGTH
MOV BX,-1
SH_ID: INC BX
MOV DL,STR0[BX]
MOV AH,2
INT 21H
LOOP SH_ID
SHOW ENTER
SHOW NAM ;NAME
MOV CX,NAM_LENGTH
MOV BX,ID_LENGTH
DEC BX
SH_NAME:INC BX
MOV DL,STR0[BX]
MOV AH,2
INT 21H
LOOP SH_NAME
SHOW ENTER
SHOW SEX ;SEX
MOV BX,ID_LENGTH
ADD BX,NAM_LENGTH
MOV DL,STR0[BX]
CMP DL,'1' ; 1显示male, 0显示female
JNZ SEX_F
SHOW SEXM
JMP NN
SEX_F: SHOW SEXF
NN: SHOW ENTER
SHOW SCORE ;SCORE
MOV CX,SCORE_LENGTH
MOV BX,ID_LENGTH
ADD BX,NAM_LENGTH
SH_SCORE:INC BX
MOV DL,STR0[BX]
MOV AH,2
INT 21H
LOOP SH_SCORE
POP DX
POP CX
POP BX
POP AX
RET
SHOW_STU ENDP
PRINT_STU PROC NEAR ;打印学生信息子程序
PUSH AX
PUSH BX
PUSH CX
PUSH DX
TAB
SHOW ID ;ID
MOV CX,ID_LENGTH
MOV BX,-1
P_ID: INC BX
MOV DL,STR0[BX]
MOV AH,5
INT 21H
LOOP P_ID
SHOW ENTER
SHOW NAM ;NAME
MOV CX,NAM_LENGTH
MOV BX,ID_LENGTH
DEC BX
P_NAME: INC BX
MOV DL,STR0[BX]
MOV AH,5
INT 21H
LOOP P_NAME
SHOW ENTER
SHOW SEX ;SEX
MOV BX,ID_LENGTH
ADD BX,NAM_LENGTH
MOV DL,STR0[BX]
MOV AH,5
INT 21H
PNN: SHOW ENTER
SHOW SCORE ;SCORE
MOV CX,SCORE_LENGTH
MOV BX,ID_LENGTH
ADD BX,NAM_LENGTH
P_SCORE:INC BX
MOV DL,STR0[BX]
MOV AH,5
INT 21H
LOOP P_SCORE
POP DX
POP CX
POP BX
POP AX
RET
PRINT_STU ENDP
;====================以下插入(insert)子程序================
INSERT PROC NEAR
PUSH AX
PUSH BX
PUSH CX
PUSH DX
TAB
CALL CLEAR ;清屏
SHOW TIPS0 ;显示提示信息
SHOW TIPS1
TAB
TAB
OPENF FID,FPATH ;打开文件
IN_ID: SHOW ID ; 学号
INPUT STR,BL ;向缓冲区输入ID
CMP BL,ID_LENGTH ;看ID是否合法
JZ L1
JNZ ERR_ID
ERR_SA: ;错误处理
TAB
TAB
SHOW ERR_SAME
TAB
TAB
JMP IN_ID
ERR_ID:
TAB
TAB
CALL SHOW_ERR
TAB
TAB
JMP IN_ID
L1: ;ID判断只能为数字
MOV CX,ID_LENGTH
LEA SI,STR+2
LN: MOV AL,BYTE PTR[SI]
CMP AL,'0'
JB ERR_ID
CMP AL,'9'
JA ERR_ID
INC SI
LOOP LN
MOVEF FID,0,0,0 ;指针移到文件首
IA:
MOVEF FID,1,0,5
IB: READF FID,STR0,STU_LENGTH ;读取学生信息
CMP AX,0 ;文件是否结束
JNZ IL1
JMP IC ;没有重复学号,可以插入
IL1: LEA SI,STR0
LEA DI,STR
INC DI
DEC SI
MOV CX,ID_LENGTH
IL2: INC SI
INC DI
MOV AL,BYTE PTR [DI]
CMP AL,BYTE PTR [SI]
JNZ IA ;不符合条件读取下一个同学信息
LOOPZ IL2
JMP ERR_SA ;有重复学号
IC: MOVEF FID,2,0,5
WRITEF FID,STR,ID_LENGTH;数据合法则写入数据
TAB
IN_NAM: SHOW NAM ;姓名
CALL RE_TMP ;初始化缓冲区
INPUT STR,BL
ADD BL,2 ;去掉回车
MOV BH,0
MOV SI,BX
MOV STR[SI],' '
展开阅读全文