微机原理课程设计学生成绩系统_第1页
微机原理课程设计学生成绩系统_第2页
微机原理课程设计学生成绩系统_第3页
微机原理课程设计学生成绩系统_第4页
微机原理课程设计学生成绩系统_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选优质文档-倾情为你奉上二一四二一五学年 第一学期信息科学与工程学院自动化系课程设计报告书姓 名: 学 号: 班 级: 课程名称: 指导教师: 目录(一) 课程设计内容及要求(二) 课程设计所应用的基本知识点(三) 实验原理(四) 程序流程图(五) 程序详细执行过程(六) 程序清单(七) 程序运行结果(八) 收获与体会(九) 参考文献一、课程设计内容及要求题目二 学生成绩管理 设计要求:建立学生成绩文档,实现学籍简单管理。设计内容:(1) 建立学生成绩文档;(2) 输入学生各门功课成绩;(假设3门功课);(3) 修改指定学号的学生成绩;(4) 统计指定学号的学生的平均成绩、总成绩,并在屏幕上

2、显示;(5) 统计指定学号课程的平均成绩,并在屏幕上显示;每门课程成绩分析在屏幕上显示3门课程的各个分数段的学生人数(分数段为:>=90;8089;7079;6069;<=59),此处可以以表格的形式给出数据,或者以坐标曲线的形式给出。对学生成绩记录进行检索(按学号、姓名)  成绩排序(按总成绩降序排列)  (6) 退出;报告要求:(1) 方案选择和分析;(2) 主要设计思路及工作原理(流程图);(3) 调试出现的问题及解决方法;(4) 运行效果及改良措施;提交程序清单。二、课程设计所应用的基本知识点本系统的设计是按照主程序调用子程序的方法来实现的。其中主程序完

3、成菜单的实现,子程序完成一个独立功能的实现。本程序使用了DOS系统功能调用(INT 21H),程序中用到的系统功能调用如下。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

4、已到文件尾失败:AX=错误代码40写文件或设备DS:DX=缓冲区首地址BX=文件代号CX=写入的字节数成功:AX=实际写入的字节数失败:AX=错误代码三、实验原理该程序按照要实现的功能一共分为七大模块:分别完成学生成绩的浏览、学生成绩的插入、学生成绩的查询、学生成绩的修改、学生成绩的删除、学生成绩各分数段的人数统计以及管理系统的退出。浏览模块设计List(浏览)子程序时,先打开文件,然后读一个记录,并通过过程化语言调用SHOW_STU将其显示到屏幕上,若文件指针没有到达文件尾,则继续读记录并显示,当文件指针到达文件尾时,若没有学生信息,在屏幕上进行提示并关闭文件返回主程序。插入模块设计Inse

5、rt(插入)子程序时,先打开文件SCORE.TXT,并置文件指针到文件尾,然后过程化语言调用子程序接受用户的输入,再把学生的输入写入文件,最后关闭文件返回主程序。查询模块子程序时,先打开文件,通过过程化调用,先判断学号是否合法,合法后再查找学生的学号,然后读文件记录,并同要查找的学生学号比较,若相同则输出,若不同则继续读文件记录,最后显示查询结果,关闭文件返回程序。修改模块设计Modify(修改)子程序时,先打开文件SCORE.TXT,通过过程化定义语言调用子程序得到要修改的记录,然后读文件中的记录,并与用户输入的记录作比较(只比较记录中的名字部分),若不同则读下一个记录,若相同则将文件指针后

6、退20个字符(一个记录为20个字符的长度),然后把用户输入的记录写入文件,最后关闭文件返回主程序。删除模块 设计Delete(删除)子程序时,先打开文件,再过程化定义语言得到要删除的学生的学号,然后读文件中的记录,直到其记录的学号与所输入的学号相同为止,把文件指针后退5个字符,关闭文件返回主程序。 分数段统计模块设计Count(统计)子程序,先打开文件,然后读记录,比较记录的第16个字符(数学成绩的高位)并统计,直到文件指针到达文件尾,最后关闭文件调用宏SHOW_EXIT显示统计结果,返回主程序。退出模块设计Exit(退出)子程序,先清屏,然后通过过程化定义语言调出初始源代码段中编写的人性化退

7、出界面,借助DOS操作系统系统下的退出功能关闭成绩管系统。程序功能示意图四、程序流程图输入一个字符开始显示菜单是i退出是l是q是c是m是d是e调用insert程序调用list子程序调用query子程序调用count子程序调用modify子程序调用delete子程序五、程序详细执行过程显示列表功能清下屏输出内容标题读取文件中的一个记录ax=0?输出记录返回主程序开始调用listlist程序段,首先,为以防有前操作在下屏幕显示,所以要清下屏,设置光标位置后,输出提示语句,主要用下段程序实现浏览功能。查询功能查询功能实现是通过检验输入字符是否为“Q”,当输入正确时要在利用宏set_p2设置的光标处显

8、示提示信息后,清下屏,以防有前操作占用界面空间。等待用户输入要查询学生的姓名,只有在输入正确后,才能显示其成绩,若输入姓名与文件中各姓名不符,则输出“错误”提示语句,不输出成绩。无论是在查询功能实现后,还是查询失败,光标返回到输入处,则此时可重新选择菜单中的功能。开始调用query清下屏,打开文件设置光标位置并输出提示“输入”语句读取输入的信息(15byte)到buff1,输出标题语句从文件中读记录(23byte)到buff2ax=0?提示“输入错误,查询失败”返回主程序,等待重新输入,选择功能将buff2与buff1中15byte比较是否相同?显示记录关闭文件并返回退出功能当在显示菜单中输入

9、“E”时,选择退出程序功能,此时调用屏幕全清,宏clear,并输出友好语句bye退出。开始调用exitf屏幕全清输出语句关闭应用程序六、程序清单 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$

10、9; 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: $' ;统计提示信息 COUN

11、T_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 ' * Wust Student Grade Management System *',0AH,0DH,'$' MESS2 DB ' * 1201 zhengliming 2014.12.24 *', 0AH,0DH

12、,'$' MESS3 DB ' * shuru insert (i) *',0AH,0DH,'$' MESS4 DB ' * xiugai modify (m) *',0AH,0DH,'$' MESS5 DB ' * shanchu delete (d) *',0AH,0DH,'$' MESS6 DB ' * chaxun query (q) *',0AH,0DH,'$' MESS7 DB ' * tongji count (c) *'

13、,0AH,0DH,'$' MESS8 DB ' * tuichu exit (e) *',0AH,0DH,'$' MESS9 DB ' * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * $' MESS10 DB ' * list (l) *',0AH,0DH,'$' MESS11 DB ' * please chose(l/i/m/d/q/c/e): *',0AH,0DH,'$' ID_

14、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 !$' ERR1 DB ' Data error,Please input again!$' ;错误提示信息 NOSTU DB

15、 ' 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

16、:return):$' FPATH DB 'c:score.txt',0 ;数据库文本 STR1 DB 50DUP ('?') ;缓冲区str STR0 DB 50 DUP ('?') ;缓冲区str0 ENTER1 DB ' $' ;空格 TMP DW 0 ;是否为空标志信息 SC DB 0 ;分数保护处用 BYE DB ' Thanks for use our program!',0DH,0AH,0DH,0AH,' Bye Bye$' BY0 DB ' WUST$' BY

17、1 DB ' zhengliming $' BY2 DB ' 2 $' BY3 DB ' 2012.12.24 $' 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,14 MOV DL,43 MOV BH,0 ;当前这页 INT 10H ENDM TAB MACRO ;换行 MOV AH,2 MOV DL,0DH INT 21H MOV DL,0

18、AH 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 ;关闭文件(传入文件号) MO

19、V 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,TEMP2 MOV AH,40H INT 21H ENDM MOVEF MACRO FILE_ID,S

20、TYPE,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 AL,BUFFER1 MOV LENGTH,AL ENDM SHOW MACRO BUFFER ;显示

21、字符串(传入字符串名) 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 B

22、X 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 B

23、X PUSH CX PUSH DX TAB TAB SHOW ERR1 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 STR1BX,' ' LOOP RE POP DX POP CX POP BX POP AX RET RE_TMP ENDP CLEAR PROC NEAR ;清屏 PUSH AX PUSH BX PUSH C

24、X 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_LENG

25、TH MOV BX,-1 SH_ID: INC BX MOV DL,STR0BX MOV AH,2 INT 21H LOOP SH_ID SHOW ENTER1 SHOW NAM ;NAME MOV CX,NAM_LENGTH MOV BX,ID_LENGTH DEC BX SH_NAME: INC BX MOV DL,STR0BX MOV AH,2 INT 21H LOOP SH_NAME SHOW ENTER1 SHOW SEX ;SEX MOV BX,ID_LENGTH ADD BX,NAM_LENGTH MOV DL,STR0BX CMP DL,'1' ; 1显示mal

26、e, 0显示female JNZ SEX_F SHOW SEXM JMP NN SEX_F: SHOW SEXF NN: SHOW ENTER1 SHOW SCORE ;SCORE MOV CX,SCORE_LENGTH MOV BX,ID_LENGTH ADD BX,NAM_LENGTH SH_SCORE: INC BX MOV DL,STR0BX MOV AH,2 INT 21H LOOP SH_SCORE POP DX POP CX POP BX POP AX RET SHOW_STU ENDP;=以下插入(insert)子程序= INSERT PROC NEAR PUSH AX PUS

27、H BX PUSH CX PUSH DX TAB CALL CLEAR ;清屏 SHOW TIPS0 ;显示提示信息 SHOW TIPS1 TAB TAB OPENF FID,FPATH ;打开文件 IN_ID: SHOW ID ; 学号 INPUT STR1,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判断只能

28、为数字 MOV CX,ID_LENGTH LEA SI,STR1+2 LN: MOV AL,BYTE PTRSI 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,STR1 INC DI DEC SI

29、 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,STR1,ID_LENGTH ;数据合法则写入数据 TAB IN_NAM: SHOW NAM ;姓名 CALL RE_TMP ;初始化缓冲区 INPUT STR1,BL ADD BL,2 ;去掉回车 MOV BH,0 MOV SI,BX MOV STR1SI,' ' S

30、UB BL,2 CMP BL,NAM_LENGTH JNA L2 ERR_NAM: CALL SHOW_ERR JMP IN_NAM L2: CMP STR12,' ' ;姓名第一个字符不为空 JZ ERR_NAM CMP STR12,'z' JA ERR_NAM CMP STR12,'A' JB ERR_NAM CMP STR12,'a' JNB III CMP STR12,'Z' JA ERR_NAM CMP STR12,'A' JB ERR_NAM III: MOV CX,NAM_LENGTH MOV BX,2 II0: INC BX DEC CX CMP STR1BX,'z' JA ERR_NAM CMP STR1BX,' ' JB ERR_NAM C

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论