学生成绩管理系统设计实验

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验六学生成绩管理系统设计实验

一、实验目的

1、熟悉汇编语言程序结构;

2、熟悉 INT 21H 的文件操作功能调用;

3、熟悉 INT 21H 的 1、9 号功能和 INT 10H 常用功能的使用方法;

4、掌握多子程序复杂问题程序设计方法;

5、掌握利用汇编语言实现字符串的输入输出程序设计方法;

6、了解多模块程序设计方法。

二、实验原理

我们把可以多次调用、具有通用性、能完成特定功能的程序段编写成的独立程序模块称为子程序。子程序是把一个程序划分成若干模块所用的主要手段,它便于独立设计、测试程序和编制程序文件。

三、实验内容

1、实验要求

设计一个学生成绩管理系统,要求完成文件建立、学生成绩录入、显示指定学号的学生记录、删除一个学生的记录、修改学生记录、返回等工作。学生成绩包括学号(XH)、姓名(XM)、数学(SX)、语文(YW)、外语(WY)字段。至少包括30 名学生信息,每名学生学号字段为 4个字符,姓名字段为 15 个字符(最大),每门成绩字段为 3 个字符(最大)。

程序设计步骤如下:

1、编写主程序 main.asm;

2、编写文件创建子程序create实现在指定盘指定文件夹“ d: ”下建立一个指定名称的文件 2009doc.dat;

3、编写成绩录入子程序append,实现在指定文件尾部插入一个学生的成绩记录;

4、编写显示子程序display,实现按指定学号显示一个学生的记录;

5、编写修改子程序modify,实现按指定学号修改一个学生的记录字段(不需修改直接回车);

6、编写删除子程序,实现按指定学号、姓名删除一个学生的记录;

7、编译、链接、调试,产生可执行文件main.exe。

2、程序流程图

2 / 16

3、程序代码

程序代码如下:

DATAS SEGMENT

MSG1 DB '1. Appe nd a record$'

MSG2 DB 2 Display a record$' MSG3

DB '3. Modify a record$' MSG4 DB

4 Delete a record$' MSG

5 DB '5.

Create file$' MSG6 DB '6. Retur

n DOS$' MSGC DB 'Please in put

1--6:$' MSGE DB 'Error!$'

MSGC1 DB 'Please input :$'

MAXLEN DB 25

ACTLEN DB ?

STRING DB 25 DUP(?)

MAXLEN1 DB 25

ACTLEN1 DB ?

STRING1 DB 25 DUP⑺

PATHNM DB 'D:\che ngji\2009\\',23 DUP(?)

PATH DB 'D:\che ngji\2009\2009doc.dat',00 MSGA1 DB 'Please in put XH:$'

MSGA2 DB 'Please in put XM:$'

MSGA3 DB 'Please input SX:$'

MSGA4 DB 'Please in put YW:$'

MSGA5 DB 'Please input WY:$'

HANDLE DW ?

MSGXH DB 'Xuehao: $'

MSGXM DB 'Xi ngmi ng: $'

MSGSX DB 'Shuxue:$'

MSGYW DB 'Yuwe n: $'

MSGWY DB 'Waiyu: $'

BUFFER DB 2048 DUP('')

MSGRT DB 'Press any key to return!$'

DELSTR DB 33 DUP('')

DATAS ENDS

STACKS SEGMENT STACK

DB 256 DUP(?)

STACKS ENDS

CODES SEGMENT

ASSUME

CS:CODES,DS:DATAS,SS:STACKS START:

MOV AX,DATAS

MOV DS,AX

.******************************** J

;主程序

MAIN PROC FAR

S:;清屏

CALL CLS ;逐行输出提示信息

MOV AH,02H

MOV DH,9

MOV DL,30

INT 10H

MOV AH,9

LEA DX,MSG1

INT 21H

MOV AH,02H

MOV DH,10

MOV DL,30

INT 10H

MOV AH,9

LEA DX,MSG2

INT 21H

MOV AH,02H

MOV DH,11

MOV DL,30

INT 10H

MOV AH,9

LEA DX,MSG3

INT 21H

MOV AH,02H

MOV DH,12

MOV DL,30

INT 10H

MOV AH,9

LEA DX,MSG4

INT 21H

MOV AH,02H

MOV DH,13

MOV DL,30

INT 10H

MOV AH,9

LEA DX,MSG5

INT 21H

MOV AH,02H

MOV DH,14

MOV DL,30

INT 10H

MOV AH,9

LEA DX,MSG6

INT 21H;提示输入

MOV AH,02H

MOV DH,15

MOV DL,30

INT 10H

MOV AH,9

LEA DX,MSGC

INT 21H;从键盘读入一个数字MOV AH,02H

MOV DH,15

MOV DL,48

INT 10H

MOV AH,1

INT 21H;按数字对应子程序CMP AL,31H

JZ CAPPEND

CMP AL,32H

JZ CDISPLAY

CMP AL,33H

JZ CMODIFY

CMP AL,34H

JZ CDELETE

CMP AL,35H

JZ CCREATE

CMP AL,36H

JZ E

;若输入不是1-6数字,则提示错误MOV AH,02H

MOV DH,16

MOV DL,30

INT 10H

MOV AH,9

LEA DX,MSGE

INT 21H

CCREATE:

CALL CREATE

JMP S

CDELETE:

CALL DELETE

JMP S

CMODIFY:

CALL MODIFY

JMP S

CDISPLAY:

CALL DISPLAY

JMP S

CAPPEND:

CALL APPEND

JMP S

E:

MOV AH,4CH

INT 21H

MAIN ENDP

.********************************

J

;CREATE 程序

CREATE PROC NEAR

PUSH AX

PUSH CX

PUSH DX

相关文档
最新文档