汇编语言课程设计学生成绩管理系统
学生成绩管理系统-vs汇编
学习 -----好资料#include <stdio.h>#include <stdlib.h>#include<conio.h>#include <dos.h>#include<string.h>#define LEN sizeof ( struct student)#define FORMAT "%-8d%-15s%-12.1lf%-12.1lf%-12.1lf%-12.1lf\n"#define DATA stu[i].num,stu[i].name,stu[i].elec,stu[i].expe,stu[i].requ,stu[i].sum float Ielec,Iexpe,Irequ;float Felec,Fexpe,Frequ;struct student /* 定义学生成绩结构体*/{int num; /* 学号 */char name[15]; /* 姓名 */double elec; /* 选修课 */double expe; /* 实验课 */double requ; /* 必修课 */double sum; /* 总分 */};struct student stu[50];/* 定义结构体数组*/void input();/* 录入学生成绩信息*/void show(); /* 显示学生信息*/void sort();/* 按总分排序 */void del(); /* 删除学生成绩信息*/void modify();/* 修改学生成绩信息*/void menu(); /* 主菜单 */void insert();/* 插入学生信息*/void total();/* 计算总人数*/void search(); /* 查找学生信息*/main(){int n;menu();scanf( "%d" ,&n);while (n){switch (n){case 1: input();break ;case 2: search();break ;case 3: del();break ;case 4: modify();break ;case 5: insert();break ;case 6: sort();break ;case 7: total();break ;default : break ;}menu();scanf( "%d" ,&n);}}void show(){FILE *fp;int i,m=0;fp=fopen( "d:\\data.txt", "ab+" );while (!feof(fp)){if (fread(&stu[m] ,LEN,1,fp)==1)m++;}fclose(fp);printf( "number name elective experiment required sum\t\n" ); for (i=0;i<m;i++){printf(FORMAT,DATA); /* 将信息按指定格式打印*/}}void menu(){system("cls");printf("\n");printf("\n");printf("\t|--------------------Student management system--------------------|\n");printf("\t||\n");printf("\t|0. exit|\n");printf("\t||\n");printf("\t| 1. input record|\n");printf("\t||\n");printf("\t| 2. search record|\n");printf("\t||\n");printf("\t| 3. delete record|\n");printf("\t||\n");printf("\t| 4. modify record|\n");printf("\t||\n");printf("\t| 5. insert record|\n");printf("\t||\n");printf("\t| 6. order|\n");printf("\t||\n");printf("\t|7. number|\n");printf("\t||\n");printf("\t|-----------------------------------------------------------------|\n");printf("\n");printf("\n");printf("choose( 0 ~ 7 ):");}void input(){int i,m=0;char ch[2];FILE *fp;if((fp=fopen("d:\\data.txt", "ab+" ))==NULL)/* 打开指定文件 */{printf("can not open\n");return ;/* 返回主函数 */}while (!feof(fp))/*feof()函数是用来判断指针是否已经到达文件尾部的,若指针指向文件末尾,则返回值为“真”,返回。
汇编课程设计成绩管理系统+源代码
XXXXX课程设计说明书汇编语言课程设计班级: 网络B101 姓名: XXX学号XXX设计题目: 学生成绩管理设计时间: 2012.12.09 至2012.12.21指导教师: XXX评语:___________________________________________________________________________________________________________________________________________________________________________________________评阅成绩:___________评阅教师:____________ 一、课程设计的目的进行程序设计方法和技能的基本训练,巩固在课堂上学到的有关程序设计的基本知识和基本方法,通过实际动手能力的培养,进一步熟悉汇编语言的结构和使用方法,达到能独立阅读、编制和调试一定规模的汇编语言程序的水平。
二、设备与环境PC兼容机、Windows操作系统、汇编程序masm for windows 2010三、课程设计要求1.要求编写并调试通过一个小型软件,实现对软件或硬件的操作。
2.遵循模块化、结构化的程序设计方法。
3.要求程序必须正确。
4.程序简明易懂,多运用输入输出提示,出错信息及必要的注释。
5.要求程序结构合理,语句使用得当。
6.适当追求编程技巧和程序运行效率。
四、课程设计的课题和分析题目:学生成绩管理分析:建立学生成绩文档;输入学生各门功课成绩;(假设3门功课);修改指定学号的学生成绩;统计指定学号的学生的平均成绩、总成绩,并在屏幕上显示;统计指定学号课程的平均成绩,并在屏幕上显示;每门课程成绩分析在屏幕上显示3门课程的各个分数段的学生人数;(分数段为:>=90;80~89;70~79;60~69;<=59)此处可以以表格的形式给出数据,或者以坐标曲线的形式给出。
汇编语言课程设计学生成绩管理系统
汇编语言课程设计课题名称:学生成绩管理系统小组成员:班级:指导教师:日期:2014.06.18 一、选题目的:熟悉汇编语言程序设计的实验环境,主要是熟悉汇编程序的基本结构,编译、连接和调试等基本操作。
利用该题目进行汇编语言程序设计运用的综合性训练,综合运用汇编语言循环程序和子程序编程方法,巩固以及提高汇编语言程序设计能力运用水平,为后续的开发和实验工作打好基础。
二、功能设计:编制一个程序,要求接收从键盘收入的一个班的学生成绩,并存放于50字节的GRADE 数组中,其中GRADE+N保存学号N+1的学生成绩,然后根据GRADE得学生成绩,把学生名次填入50自己的RANK数组中,其中RANK+N的内容是学号N+1学生的名次,在按学号把学生顺序学生名次显示出来。
三、算法流程图:四、运行结果:从键盘输入三个学生的姓名和成绩,按学生成绩升序排序,并显示出排序结果五、程序源代码:data segmentinfor0 db 0ah,0dh,'sort=$'infor1 db 0ah,0dh,'input name:$'infor2 db 0ah,0dh,'input score:$'n equ 8 姓名长度m equ 4 成绩长度(3位+回车符)p equ 3 输入的人数q equ 3 成绩的位数buff1 db n,?,n dup(0),'$' 姓名缓冲区,加$字符以便输入时用 buff2 db m,?,m dup(0),'$' 成绩缓冲区sname db p dup(n+1 dup(0)) 保存姓名score1 dw p dup(m+1 dup(0)) 保存成绩score2 dw p dup(m+1 dup(0))mingci db p dup(0) 名次x dw ?sign1 dw 0sign2 dw 0cont db '1' 计数data endscode segmentassume cs:code, ds:datamain proc farstart:mov ax,datamov ds,axmov es,axmov bx,0mov cx,0call inputcall sortcall printmov ah,4chint 21hmain endpinput procinc bx 输入次数统计cmp bx,p 输入次数>p?ja exitlea dx,infor1 显示提示2mov ah,9int 21hlea dx,buff1 输入姓名mov ah,10int 21hmov al,buff1+1 实际输入个数——a1add al,2 +2.包含bufferl的0、1号单元mov ah,0mov si,ax 回车0d所在位置,跟在最后一个字符后 mov buff1[si],0 将0d换为0,便于输出显示lea dx,infor2 显示提示2mov ah,9int 21hlea dx,buff2 输入成绩mov ah,10int 21hmov al,buff2+1 实际输入个数add al,2 个数+2,包含0、1单元,为找到0dmov ah,0mov si,axmov buff2[si],0 将0d换为0,便于输出显示mov mingci[bx-1],bl bx为输入次数,保存输入的次序cmp bx,1 第一次输入转let1jz let1add sign1,n+1 姓名间隔为n+1add sign2,q 成绩间隔为qlet1: 子程序嵌套call copyjmp inputexit:retinput endpcopy procmov cx,n+1 姓名长度+3(包含$)lea si,buff1+2lea di,sname 姓名传递到snameadd di,sign1 加上间隔值cldrep movsbmov cx,nmov ax,'$' 用$覆盖姓名区,清除已输入的姓名 lea si,buff2+2lea di,score1 成绩传递到score1add di,sign2 加上间隔符cldrep movsblea si,buff2+2mov di,sign2call change 二进制成绩score2retcopy endpchange procmov x,0mov cx,[si-1] 成绩的位数cxmov cx,000fh 保留低四位rept2:mov al,[si] 按位取出成绩cmp al,30h 是否在0、9之间jl exit1cmp al,39hjg exit1and ax,000fhxchg ax,xmov dx,10 将ax中前一次形成的书扩大十倍mul dx 保存到xadd x,axinc siloop rept2mov ax,x 按十进制形成的成绩以二进制保存 mov score2[di],ax 二进制成绩送入score2mov x,0add sign2,2 下一个成绩单元exit1:retchange endpsort procmov cx,p 数组长度dec cxloop1:push cx 保存外循环次数mov bx,0mov si,0loop2: mov ax,score2[bx]cmp ax,score2[bx+m+1] m+1=5jge next 降序xchg ax,score2[bx+m+1] 交换成绩mov score2[bx],axmov al,mingci[si]xchg al,mingci[si+1] 交换名次mov mingci[si],alnext:add bx,m+1inc si 下一个成绩loop loop2pop cx 恢复外循环次数loop loop1retsort endpprint proclea dx,infor0 显示结果提示mov ah,9int 21hmov cx,pmov bx,0mov ax,0mov di,0rept3:mov dl,0ah 回车换行mov ah,2int 21hmov dl,0dhint 21hmov dl,cont 显示名次序号mov ah,2int 21hinc contmov dl,0ah 回车换行mov ah,2int 21hmov dl,0dhint 21hmov ax,0mov al,mingci[di] 取名次dec al 位置-1,因为地址从0开始 mov bl,9mul bllea dx,snameadd dx,ax 偏移地址+姓名位移量mov ah,9 显示姓名int 21hmov dl,0ah 回车换行mov ah,2int 21hmov dl,0dhint 21hmov ax,0mov bx,0mov al,mingci[di] 取名次dec al 地址从0开始mov bl,5mul bllea dx,score1add dx,axmov ah,9 显示成绩int 21hinc diloop rept3retprint endpcode endsend start六、自我评价:本次大作业做的是显示学生名次表,重要考察的是复杂程序设计中,采用模板块结构可以划分功能,分解程序,在各个程序之间存在参数传递问题,强调了传递方式和嵌套调用层次的运用。
汇编学生成绩程序设计报告
《汇编语言程序设计》综合程序设计实验报告题目:学生成绩管理系统一、项目简介此学生成绩管理系统实现了对学生成绩的基本管理功能,可以完成学生的显示,分数段人数统计,成绩排名以及插入查找等基本功能,并且成功实现了将学生信息写入文件以及从文件中读取的功能。
该项目运用了多个主程序的分支以及多个子程序,还有宏的定义和使用,基本涵盖了本学期所学知识,还应用了很多课外拓展的知识。
此项目是我们小组三人共同努力的结晶。
二、小组成员具体分工闫立新完成部分:主要完成程序的显示所有学生,文件的写入、读出和代码段定义部分。
王伟光完成部分:主要完成程序的所有学生排名,学生的查找、添加和代码段定义部分。
宋景超完成部分:主要完成程序的分数段统计,屏幕清屏、子程序和代码段定义部分。
三、需求分析与设计学生成绩管理系统,最基本的功能是实现最学生的显示和以及成绩的排名,和分数段的统计,以便分析教学效果。
我们的系统可以说完全达到了这个要求。
在这个系统的第一个功能就实现了所有学生的显示和他们对应的成绩。
此分支采用了内存存储单元中读取数据的方法,通过地址的不断增加来实现对学生姓名和成绩存储和输出。
统计学生分数段人数部分采用了多个跳转指令来实现,符合条件则使相应的分数段人数加1,不符合该分数段人数则跳转到相应的分数段并使该分数段人数加1。
对学生的排名,我们则选择了经典的冒泡排序来实现。
运用三条循环指令,lopi,lopj,lopk。
对学生的添加,我们设置了一个全局变量n来记录多少个数据,增加几个数据n就加几,然后输入姓名到新的内存中,输入成绩时因为成绩初始化时是以ASICC保存的,而输入的是字符,所以使用0FH现将其变成真正的数字然后通过*10等运算将其转化为ASICC即可对学生的查找,我们通过使用字符串比较来进行查找,使用bp来进行地址的改变,同时使用n5进行判断是否已经完成了查找已经是否找到了数据,找到数据则输出,找不到则输出错误文件的写入部分首先用dos指令3CH来创建一个文件,然后用dos指令40H 写入内容,在BX中装入文件代号,要写入的字节数放在CX中,输入缓冲区的地址放在DX中。
汇编语言学生成绩管理系统程序
;此版本解决输入分数时输入错不能更改的bug;解决了冒泡排序时用内存当变量问题;可以清屏;使用help宏,使程序看起来更简洁;若分数输错,仅保留前两位;实现了界面化;实现了delete、modify功能nextline macropush axmov ah,0ehmov al,0dhint 10h ;调用bios输出换行符mov al,0ahint 10h ;调用bios输出回车符pop axendmhelp macro address ;打印提示信息mov ah,09hlea dx,addressint 21hendmchoice macro ;界面help mess1help mess2help mess3help mess4help mess5help mess6help mess7help mess8help mess9nextlinehelp mess10nextlineendm;学生信息的结构man strucxnum db 10,?,10 dup(0) ;学生的学号xname db 20,?,20 dup(0) ;学生的名字xclass db 10,?,10 dup(0) ;学生的班级xscore dw 0 ;学生的成绩man endsdata segmentmess1 db ' ***************************************************',0ah,0dh,'$'mess2 db ' * Student Grade Magement System *',0ah,0dh,'$'mess3 db ' * Made By XXXXXXXXXXXXX *',0ah,0dh,'$'mess4 db ' * *',0ah,0dh,'$'mess5 db ' * List(l) Insert(i) *',0ah,0dh,'$'mess6 db ' * Statistic(s) Delete(d) *',0ah,0dh,'$'mess7 db ' * Order(o) Modify(m) *',0ah,0dh,'$'mess8 db ' * Exit(e) Continue(c) *',0ah,0dh,'$'mess9 db ' ***************************************************',0ah,0dh,'$'mess10 db 'Make a choice:$'mess11 db 'Faild$'mess12 db 'Succesfully$'welcome db ' Hello! Welcome$'p_info db ' The info of the students $'input1 db 'Input the num of student:$'input2 db 'Input the name of student:$'input3 db 'Input the class of student:$'input4 db 'Input the score of student:$'output1 db 'num =$'output2 db 'name =$'output3 db 'class=$'output4 db 'score=$'output5 db ' The statistics of the students $'s_num0 db 'The total num of students=$'s_num1 db 'score(0 -60)=$'s_num2 db 'score(60-70)=$'s_num3 db 'score(70-80)=$'s_num4 db 'score(80-90)=$'s_num5 db 'score(90-100)=$'s_num6 db 'The average score of students=$'is db 0temp1 db 5,?,5 dup(0) ;为了使输入的分数也能输入错误的情况下修改而用的temp2 db 10,?,10 dup(0) ;删除时存储学号用的sum_h dw 0 ;总分数的高位sum_l dw 0 ;总分数的低位total dw 0 ;学生的人数average dw 0 ;平均成绩s_59 dw 0 ;小于60s_60 dw 0 ;60到70s_70 dw 0 ;70到80s_80 dw 0 ;80到90s_90 dw 0 ;90到99con db 48 ;结构字段的大小,为常数stu man 100 dup(<>) ;学生信息data endscode segmentassume cs:code,ds:datastart:mov ax,datamov ds,axcall make_c;*************************************************make_c procfirst:call clearcall cursornextlinechoicemov ah,1 ;1号系统调用int 21hmov bh,alch_i: ;插入cmp bh,'i'jne ch_lcall clearcall cursorch_i_1:mov [temp1+2],0 ;消除上一次get输入数据的影响mov [temp1+3],0mov [temp1+4],0mov [temp1+5],0mov [temp1+6],0call getmov ah,1int 21hcmp al,'c'nextlineje ch_i_1jmp firstch_l: ;显示学生成绩cmp bh,'l' ;显示jne ch_ocall clearcall cursorch_l_1:call printmov ah,1int 21hcmp al,'c'nextlineje ch_l_1jmp firstch_o: ;进行排序cmp bh,'o'jne ch_scall clearcall cursorch_o_1:call sortcall printmov ah,1int 21hcmp al,'c'nextlineje ch_o_1jmp firstch_s: ;进行统计信息cmp bh,'s'jne ch_dcall clearcall cursorch_s_1:call statistic_print;打印统计信息mov ah,1int 21hcmp al,'c'nextlineje ch_s_1jmp firstch_d: ;进行删除cmp bh,'d'jne ch_mcall clearcall cursorch_d_1:call deletemov ah,1int 21hcmp al,'c'nextlineje ch_d_1jmp firstch_m: ;进行修改cmp bh,'m'jne ch_ecall clearcall cursorch_m_1:call deletenextlinecmp is,0je ch_m_2call getch_m_2:mov ah,1int 21hcmp al,'c'nextlineje ch_m_1jmp firstch_e: ;退出cmp bh,'e'je ch_jmp firstch_: mov ah,4chint 21hmake_c endp;*************************************************;清屏函数,使用10H中断的06功能将屏幕右下角位置18H行,4FH列(DX)移动到左上角00H,00H;BIOS中断类型10H;功能号06H 屏幕上卷;辅助调用寄存器AL=上卷行数BH=上卷行属性CH=左上Y CL=左上X DH=右下Y DL=右下X;如果AL=0,则整屏空白;普通文本模式下IBM PC屏幕被划分为80行25列(从00开始)clear proc ;清屏push cxmov ax,0600Hmov bh,07mov cx,0000mov dx,184fHint 10Hpop cxretclear endp;光标定位函数,使用10H中断的02功能将光标定位;BIOS中断类型10H;功能号02H 设置光标位置;辅助调用寄存器BH=页号DH=行DL=列cursor procmov ah,02mov bh,00mov dl,0mov dh,1int 10Hretcursor endp;*************************************************get proc ;得到学生的信息push axpush cxpush bxpush sipush dimov si,offset stu ;学生的入口地址mov al,con ;把一个数据块的大小放入almov ah,0 ;把al扩展到axmul total ;乘以人数add si,ax ;相对于人数的偏移位置;得到信息;input1help input1mov dx,simov ah,0ah ;输入学号字符串int 21hmov al,[si+1]add al,2mov ah,0add si,axmov [si],byte ptr '$'sub si,axnextline;input2help input2add si,12mov dx,simov ah,0ah ;输入姓名字符串int 21hmov al,[si+1]add al,2mov ah,0add si,axmov [si],byte ptr '$'sub si,axnextline;input3help input3add si,22mov dx,simov ah,0ah ;输入班级字符串int 21hmov al,[si+1]add al,2mov ah,0add si,axmov [si],byte ptr '$'sub si,axnextline;input4help input4call d_b ; 从键盘读入分数add si,12mov [si],bxnextlineinc total ;学生总人数加1nextline;求总分数add sum_l,bxadc sum_h,0;判断属于哪个分数段cmp bx,0258hjae con_60 ;大于等于60inc s_59jmp pp1con_60:cmp bx,02bch ;大于等于70jae con_70inc s_60jmp pp1con_70:cmp bx,0320h ;大于等于80jae con_80inc s_70jmp pp1con_80:cmp bx,0384h ;大于等于90jae con_90inc s_80jmp pp1con_90:inc s_90pp1:pop dipop sipop bxpop cxpop axget endp;*****************************************print procpush axpush cxpush bxpush sipush di;输出打印信息help p_infonextlinemov si,offset stu ;学生的入口地址mov cx,total ;学生总数作为打印的循环次数cmp cx,0je kkjmp L7kk:jmp kkkL7:;打印学号help output1add si,2mov dx,simov ah,9int 21hadd si,12 ;si内存的是姓名串的首地址nextline;打印姓名help output2mov dx,simov ah,9int 21hadd si,22 ;si内存的是班级串的首地址nextline;打印班级help output3mov dx,simov ah,9int 21hadd si,10nextlinehelp output4mov bx,[si]call near ptr b_dnextlineadd si,2nextlinedec cxcmp cx,0jz kkk ; 注意,开始时用loop L7会超过距离显示; jump out of by 8 bytes,所以此处改成这样了jmp L7kkk:pop dipop sipop bxpop cxpop axretprint endp;***********************************************delete proc ;删除模块push axpush cxpush bxpush sipush dimov cx,totalcmp cx,0jne delete_1help mess11mov is,0jmp delete_0delete_1:help input1mov dx,offset temp2mov ah,0ah ;输入学号字符串int 21hnextlineinc dxmov di,dxmov bl,[di]mov si,offset stu ;学生信息入口add si,1delete_2:cmp [si],bl ;比较字符串长度jne delete_6push cx ;字符串长度相等则一个一个比较字符mov di,dxadd di,1add si,1mov bh,0mov cx,bxdelete_4:mov bh,[di]cmp bh,[si]je delete_3 ;相等的情况delete_5:add si,cx ;不相等的情况下mov bh,0sub si,bxadd di,cxsub di,bxsub si,1pop cxdelete_6:dec cxcmp cx,0jne delete_8help mess11mov is,0jmp delete_0delete_8:add si,48jmp delete_2 ;delete_3:dec cxadd si,1add di,1cmp cx,0jne delete_4 ;继续把此串比较完pop cxmov bh,0sub si,bxadd si,44cmp [si],0258hjae dd_60 ;大于等于60dec s_59jmp delete_7dd_60:cmp [si],02bch ;大于等于70jae dd_70dec s_60jmp delete_7dd_70:cmp [si],0320h ;大于等于80jae dd_80dec s_70jmp delete_7dd_80:cmp [si],0384h ;大于等于90jae dd_90dec s_80jmp delete_7dd_90:dec s_90delete_7:mov dx,[si]sub sum_l,dxsbb sum_h,0mov dx,0mov [si],dx ;分数置为0再排序call sortdec totalhelp mess12mov is,1delete_0:pop dipop sipop bxpop cxpop axdelete endp;************************************************ statistic_print procpush axpush cxpush sipush dinextlinehelp output5nextlinehelp s_num0 ;学生的总人数mov bx,totalcall sta_childnextlinecmp bx,0je failhelp s_num6 ;平均分mov dx,sum_h ;总分的高字mov ax,sum_l ;总分的低字div totalmov average,axmov bx,axcall b_dnextlinefail:help s_num1 ;不及格的mov bx,s_59call sta_childnextlinehelp s_num2 ;60-70mov bx,s_60call sta_childnextlinehelp s_num3 ;70-80mov bx,s_70call sta_childnextlinehelp s_num4 ;80-90mov bx,s_80call sta_childnextlinehelp s_num5 ;90-100mov bx,s_90nextlinepop dipop sipop cxpop axretstatistic_print endp;****************************************sta_child procmov ax,bxcmp ax,0jbe p1mov bl,100 ;除以100div bltest al,0ffh ;人数小于100的jz p2mov ch,alcall print_dp2:mov al,ahmov ah,0mov bl,10div bltest al,0ffh ;人数小于10的jz p3mov ch,alcall print_dp3:mov ch,ahcall print_djmp p4p1:mov ch,0call print_dp4:retsta_child endp;********************************************* d_b proc ;10进制转化成2进制,返回参数为bx push cxpush axpush simov bx,0mov si,offset temp1 ;temp1的地址传到dx mov dx,simov ah,0ah ;输入分数int 21hmov cx,3add si,1nc:inc simov al,[si]cmp al,'.'je L1cmp cx,1je L1sub al,'0' ;减去0jb exit ;小于0跳到exitcmp al,09h ;和9比较ja exit ;大于9跳到exitcbw ;将al进行符号扩展到axadd ax,bx ;将ax和bx相加shl ax,1 ;(ax)×2mov bx,axshl ax,1 ;(ax)×4shl ax,1 ;(ax)×8add bx,ax ;(ax)的10倍loop ncL1:inc simov al,[si]sub al,'0' ;减去0jb exit ;小于0跳到exitcmp al,09h ;和9比较ja exit ;大于9跳到exitcbw ;将al进行符号扩展到axadd bx,ax ;将ax和bx相加exit:pop dipop sipop axpop cxretd_b endp;******************************************b_d proc ;把二进制转化成十进制的函数,入口参数为bx push axpush cxpush dxmov ax,bx ;2进制数传给axmov cl,alcmp ax,10 ;和10比较jb L2 ;跳到打印0的位置mov bl,10div bl ;除以10mov cl,ah ;余数放到cl中cbwcmp ax,10 ;和10比较jb L3 ;跳到分数小于10的情况mov bl,10 ;分数大于10的情况div blmov ch,alcall print_d ;打印百位mov ch,ahcall print_d ;打印十位jmp pointL2:mov ch,0call print_djmp pointL3: mov ch,alcall print_d ;分数小于10的情况point:call print_p ;打印小数点mov ch,clcall print_d ;打印第一位小数pop dxpop cxpop axretb_d endp;******************************************print_d proc ;显示一位数字的函数push axpush bxpush dxmov dl,chmov ah,02hadd dl,'0'int 21hpop dxpop bxpop axretprint_d endp;******************************************print_p proc ;显示小数点push axpush bxpush dxxor dx,dxmov ah,02hadd dl,'.'int 21hpop dxpop bxpop axretprint_p endp;*******************************************sort proc;冒泡算法排序push axpush cxpush dxpush sipush dimov ax,dsmov es,axmov ax,total ;外层循环的次数push ax ;解决了冒泡排序时用内存当变量问题sort1:pop axdec axcmp ax,0 ;外层循环若为0,则已比较完毕jbe sort3mov bx,ax ;bx存内层循环mov si,offset stuadd si,46 ;到分数的地址mov di,siadd di,48push axsort2:mov ax,[si]mov dx,[di]cmp ax,dxjae sort4sub si,46sub di,46mov cx,48 ;循环48次,交换两个数据块sort5:xchg al,[si] ;交换两个数据xchg al,[di]xchg al,[si]add si,1add di,1loop sort5sub si,2sub di,2sort4:dec bx ;内层循环减一cmp bx,0je sort1 ;若为0,跳到外层循环add si,48add di,48jmp sort2sort3:pop dipop sipop dxpop cxpop axretsort endp;****************************************** code endsend start。
c语言课程设计报告学生成绩管理系统
c语言课程设计报告学生成绩管理系统一、教学目标本课程旨在让学生掌握C语言的基本语法和编程技巧,通过实现一个学生成绩管理系统,培养学生运用C语言解决实际问题的能力。
具体目标如下:1.知识目标:–掌握C语言的数据类型、运算符、控制结构、函数等基本语法。
–理解结构体和文件操作等相关知识。
2.技能目标:–能够运用C语言编写简单的程序。
–学会使用C语言实现数据的输入、输出和处理。
–掌握使用结构体创建学生成绩数据结构,并实现对成绩的增删改查等操作。
3.情感态度价值观目标:–培养学生对编程的兴趣,增强自信心。
–培养学生的团队协作能力和解决问题的能力。
二、教学内容本课程的教学内容主要包括C语言的基本语法、数据结构、文件操作等。
具体安排如下:1.C语言基本语法:数据类型、变量、运算符、控制结构、函数等。
2.数据结构:结构体、数组、指针等。
3.文件操作:文件的打开、关闭、读写等。
4.学生成绩管理系统:实现一个学生成绩管理系统,包括学生的增删改查、成绩的排序、统计等功能。
三、教学方法本课程采用讲授法、案例分析法和实验法相结合的教学方法。
1.讲授法:用于讲解C语言的基本语法和概念。
2.案例分析法:通过分析实际案例,让学生学会运用C语言解决实际问题。
3.实验法:让学生动手实践,编写程序,培养实际编程能力。
四、教学资源1.教材:《C程序设计语言》或《C语言入门教程》。
2.参考书:《C Primer Plus》、《C语言编程思想》等。
3.多媒体资料:教学PPT、视频教程等。
4.实验设备:计算机、网络等。
五、教学评估本课程的评估方式包括平时表现、作业、考试等。
评估方式应客观、公正,能够全面反映学生的学习成果。
具体安排如下:1.平时表现:占课程总评的30%,包括课堂参与度、提问回答、小组讨论等。
2.作业:占课程总评的30%,包括课后练习、编程作业等。
3.考试:占课程总评的40%,包括期中考试和期末考试。
六、教学安排本课程的教学安排如下:1.教学进度:按照教材的章节进行教学,确保在有限的时间内完成教学任务。
最新-汇编语言程序设计课程设计报告-学生成绩管理系统程序设计 精品
学生成绩管理系统程序设1、需求说明用汇编语言编写一个学生成绩管理系统,实现基本学生成绩管理,功能包括添加学生信息、修改学生信息、删除学生信息、打印学生信息、浏览学生信息存储文件以及粗略的统计学生信息,程序界面友好,有输入界面提示,有菜单功能。
2、设计要求2.1设计说明该程序要求具备的功能:清晰且易于操作的用户界面,在文本编辑界面中输入学生成绩。
其中“I”表示插入,“L”表示浏览,“Q”表示查询,“E”表示退出,“D”表示删除,“M”表示修改,“c”表示统计各分数段人数,“P”表示打印.以上各功能应该能单独运行和连续运行。
2.2开发平台与开发工具该程序使用DOS操作系统32位实模式汇编语言编写,使用的编译器为微软的MASM5.0,调试工具为DOS下的debug.exe程序。
2.3数据结构程序采用静态链表的方式来存储学生信息,链表结点描述如下:Student strucm_sName db 6 dup(' ')m_sNum db 8 dup(' ')m_sScore db 3 dup(' ')Student ends3、设计思路3.1设计方案及基本流程3.11总体结构分析整个程序采用总程序调用子程序的方式。
主程序完成菜单的显示,子程序完成一个独立功能的方法实现。
各子程序的实现方法简要描述如下:1、设计Insert(录入)子程序时,先打开文件SCORE.TXT,并置文件指针到文件尾,然后调用GET_REC子程序接受用户的输入,再把用户的输入写入文件,最后关闭文件返回主程序。
2、设计Delete(删除)子程序时,先打开文件,再调用宏GETIN得到要删除的学生的姓名,然后读文件中的记录,直到其记录的名与所输入的名字相同为止,把文件指针后退8个字符(即4门课程所占的空间),写入8个“0”字符,关闭文件返回主程序。
3、设计List(浏览)子程序时,先打开文件,然后读一个记录,并通过调用宏SHOW_ITEM 将其显示到屏幕上,若文件指针没有到达文件尾,则继续读记录并显示,当文件指针到达文件尾时,则关闭文件返回主程序。
汇编课程设计成绩管理系统
汇编课程设计成绩管理系统一、课程目标知识目标:1. 理解汇编语言的基本概念,掌握汇编指令的使用方法。
2. 学会使用汇编语言进行程序设计,实现简单的成绩管理系统。
3. 了解计算机内存管理的基本原理,理解汇编语言在内存操作中的应用。
技能目标:1. 能够运用汇编语言编写简单的程序,实现数据的存储和查询功能。
2. 掌握使用汇编语言进行条件判断和循环操作的方法,实现成绩管理系统的逻辑功能。
3. 学会使用调试工具对汇编程序进行调试,解决程序中的错误。
情感态度价值观目标:1. 培养学生良好的编程习惯,注重代码的结构和可读性。
2. 增强学生的团队合作意识,学会在项目开发中分工与协作。
3. 激发学生对计算机硬件和底层编程的兴趣,提高学生的计算机素养。
分析课程性质、学生特点和教学要求:1. 课程性质:本课程属于计算机科学与技术领域,以汇编语言为核心,结合成绩管理系统实例,培养学生的编程能力和计算机硬件理解。
2. 学生特点:学生已具备一定的计算机基础知识和编程能力,对汇编语言有初步了解,但实际应用能力有待提高。
3. 教学要求:注重理论与实践相结合,以项目为导向,培养学生的实际操作能力和团队协作能力。
二、教学内容1. 汇编语言基础知识:- 汇编语言概述:了解汇编语言的发展历程,认识汇编语言与机器语言的关系。
- 汇编指令系统:掌握汇编指令的分类、格式及功能,学会使用常用汇编指令。
2. 程序设计方法:- 数据表示:学习数据在汇编语言中的表示方法,掌握各种数据类型的使用。
- 流程控制:了解汇编语言中的条件判断和循环结构,学会编写分支和循环程序。
- 子程序设计:掌握子程序的编写和调用方法,提高代码复用性。
3. 内存管理:- 内存分配与使用:了解内存空间分配方法,掌握汇编语言在内存操作中的应用。
- 数据存储:学习如何在内存中存储和访问数据,实现成绩管理系统中的数据结构。
4. 成绩管理系统项目实践:- 功能模块设计:明确成绩管理系统的需求,划分功能模块,进行模块化设计。
学生成绩管理系统设计实验(汇编语言)
实验六学生成绩管理系统设计实验一、实验目的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:\chengji\2009\”下建立一个指定名称的文件2009doc.dat;3、编写成绩录入子程序append,实现在指定文件尾部插入一个学生的成绩记录;4、编写显示子程序display,实现按指定学号显示一个学生的记录;5、编写修改子程序modify,实现按指定学号修改一个学生的记录字段(不需修改直接回车);6、编写删除子程序,实现按指定学号、姓名删除一个学生的记录;7、编译、链接、调试,产生可执行文件main.exe。
2、程序流程图3、程序代码程序代码如下:DATAS SEGMENTMSG1 DB '1. Append a record$'MSG2 DB '2. Display a record$'MSG3 DB '3. Modify a record$'MSG4 DB '4. Delete a record$'MSG5 DB '5. Create file$'MSG6 DB '6. Return DOS$'MSGC DB 'Please input 1--6:$'MSGE DB 'Error!$'MSGC1 DB 'Please input filename:$'MAXLEN DB 25ACTLEN DB ?STRING DB 25 DUP(?)MAXLEN1 DB 25ACTLEN1 DB ?STRING1 DB 25 DUP(?)PATHNM DB 'D:\chengji\2009\\',23 DUP(?)PATH DB 'D:\chengji\2009\2009doc.dat',00MSGA1 DB 'Please input XH:$'MSGA2 DB 'Please input XM:$'MSGA3 DB 'Please input SX:$'MSGA4 DB 'Please input YW:$'MSGA5 DB 'Please input WY:$'HANDLE DW ?MSGXH DB 'Xuehao: $'MSGXM DB 'Xingming: $'MSGSX DB 'Shuxue:$'MSGYW DB 'Yuwen: $'MSGWY DB 'Waiyu: $'BUFFER DB 2048 DUP(' ')MSGRT DB 'Press any key to return!$'DELSTR DB 33 DUP(' ') DATAS ENDSSTACKS SEGMENT STACKDB 256 DUP(?)STACKS ENDS CODES SEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKS START:MOV AX,DATASMOV DS,AX;******************************** ;主程序MAIN PROC FARS:;清屏CALL CLS ;逐行输出提示信息MOV AH,02HMOV DH,9MOV DL,30INT 10HMOV AH,9LEA DX,MSG1INT 21HMOV AH,02HMOV DH,10MOV DL,30INT 10HMOV AH,9LEA DX,MSG2INT 21HMOV AH,02HMOV DH,11MOV DL,30INT 10HMOV AH,9LEA DX,MSG3INT 21HMOV AH,02HMOV DH,12MOV DL,30INT 10HMOV AH,9LEA DX,MSG4INT 21HMOV AH,02HMOV DH,13MOV DL,30INT 10HMOV AH,9LEA DX,MSG5INT 21HMOV AH,02HMOV DH,14MOV DL,30INT 10HMOV AH,9LEA DX,MSG6INT 21H;提示输入MOV AH,02HMOV DH,15MOV DL,30INT 10HMOV AH,9LEA DX,MSGCINT 21H;从键盘读入一个数字MOV AH,02HMOV DH,15MOV DL,48INT 10HMOV AH,1INT 21H;按数字对应子程序CMP AL,31HJZ CAPPENDCMP AL,32HJZ CDISPLAYCMP AL,33HJZ CMODIFYCMP AL,34HJZ CDELETECMP AL,35HJZ CCREATECMP AL,36HJZ E;若输入不是1-6数字,则提示错误MOV AH,02HMOV DH,16MOV DL,30INT 10HMOV AH,9LEA DX,MSGEINT 21HCCREATE:CALL CREATEJMP SCDELETE:CALL DELETEJMP SCMODIFY:CALL MODIFYJMP SCDISPLAY:CALL DISPLAYJMP SCAPPEND:CALL APPENDJMP SE:MOV AH,4CHINT 21HMAIN ENDP;******************************** ;CREATE程序CREATE PROC NEARPUSH AXPUSH CXPUSH DXPUSH SIPUSH DI;清屏CALL CLS;提示输入文件名MOV AH,2MOV DH,12MOV DL,20INT 10HMOV AH,9LEA DX,MSGC1INT 21H;从键盘读入文件名字符串MOV AH,0AHLEA DX,MAXLENINT 21H;将文件名字符串加到ASCIZ字符串末尾MOV CX,0MOV CL,ACTLENLEA SI,STRINGLEA DI,PATHNMADD DI,16LCREATE:MOV AL,BYTE PTR [SI]MOV [DI],ALINC DIINC SILOOP LCREATE;在ASCIZ字符串末尾加00MOV BYTE PTR [DI],0;按ASCIZ字符串创建文件MOV AH,3CHLEA DX,PATHNMMOV CX,0INT 21HPOP DIPOP SIPOP DXPOP CXPOP AXRETCREATE ENDP;******************************** ;APPEND程序APPEND PROC NEARPUSH AXPUSH BXPUSH CXPUSH DXPUSH SIPUSH DI;清屏CALL CLS;打开文件(只写)MOV AH,3DHMOV AL,01HLEA DX,PATHINT 21HMOV HANDLE,AX;提示输入学号MOV AH,02HMOV DH,10MOV DL,30INT 10HMOV AH,9LEA DX,MSGA1INT 21H;从键盘读入字符串MOV AH,0AHLEA DX,MAXLENINT 21H;在字符串末尾补足空格MOV DX,4CALL FILL;将文件指针定位至文件末尾MOV AH,42HMOV AL,2MOV BX,HANDLEMOV CX,0MOV DX,0INT 21H;写入文件MOV AH,40HMOV BX,HANDLEMOV CX,0MOV CL,ACTLENLEA DX,STRINGINT 21H;提示输入姓名MOV AH,02HMOV DH,11MOV DL,30INT 10HMOV AH,9LEA DX,MSGA2INT 21H;从键盘读入字符串MOV AH,0AHLEA DX,MAXLENINT 21H;在字符串末尾补足空格MOV DX,15CALL FILL;将文件指针定位至文件末尾MOV AH,42HMOV AL,2MOV BX,HANDLEMOV CX,0MOV DX,0INT 21H;写入文件MOV AH,40HMOV BX,HANDLEMOV CX,0MOV CL,ACTLENLEA DX,STRINGINT 21H;提示输入语文成绩MOV AH,02HMOV DH,12MOV DL,30INT 10HMOV AH,9LEA DX,MSGA3INT 21H;从键盘读入字符串MOV AH,0AHLEA DX,MAXLENINT 21H;在字符串末尾补足空格MOV DX,3CALL FILL;将文件指针定位至文件末尾MOV AH,42HMOV AL,2MOV BX,HANDLEMOV CX,0MOV DX,0INT 21H;写入文件MOV AH,40HMOV BX,HANDLEMOV CX,0MOV CL,ACTLENLEA DX,STRINGINT 21H;提示输入数学成绩MOV AH,02HMOV DH,13MOV DL,30INT 10HMOV AH,9LEA DX,MSGA4INT 21H;从键盘读入字符串MOV AH,0AHLEA DX,MAXLENINT 21H;在字符串末尾补足空格MOV DX,3CALL FILL;将文件指针定位至文件末尾MOV AH,42HMOV AL,2MOV BX,HANDLEMOV CX,0MOV DX,0INT 21H;写入文件MOV AH,40HMOV BX,HANDLEMOV CX,0MOV CL,ACTLENLEA DX,STRINGINT 21H;提示输入外语成绩MOV AH,02HMOV DH,14MOV DL,30INT 10HMOV AH,9LEA DX,MSGA5INT 21H;从键盘读入字符串MOV AH,0AHLEA DX,MAXLENINT 21H;在字符串末尾补足空格MOV DX,3CALL FILL;在字符串末尾加回车、换行INC SIMOV BYTE PTR [BX+SI],0DHINC SIMOV BYTE PTR [BX+SI],0AHADD ACTLEN,2;将文件指针定位至文件末尾MOV AH,42HMOV AL,2MOV BX,HANDLEMOV CX,0MOV DX,0INT 21H;写入文件MOV AH,40HMOV BX,HANDLEMOV CX,0MOV CL,ACTLENLEA DX,STRINGINT 21H;关闭文件MOV AH,3EHMOV BX,HANDLEINT 21HPOP DIPOP SIPOP DXPOP CXPOP BXPOP AXRETAPPEND ENDP;******************************** DISPLAY PROC NEARPUSH AXPUSH DX;清屏CALL CLS;提示输入学号MOV AH,02HMOV DH,10MOV DL,28INT 10HMOV AH,9LEA DX,MSGXHINT 21H;从键盘读入学号字符串MOV AH,0AHLEA DX,MAXLENINT 21H;打开文件(只读)MOV AH,3DHMOV AL,00HLEA DX,PATHINT 21HMOV HANDLE,AX;将文件指针定位至文件开头MOV AH,42HMOV AL,0MOV BX,HANDLEMOV CX,0MOV DX,0INT 21H;将文件载入缓存MOV AH,3FHMOV BX,HANDLEMOV CX,2048LEA DX,BUFFERINT 21H;在缓存中找到对应记录LEA SI,BUFFERLEA DI,STRINGMOV CX,AXCALL SEARCHCMP DX,0JZ OUTPUT;若未找到,则提示错误MOV AH,9LEA DX,MSGEINT 21HJMP DEND;显示对应信息OUTPUT:MOV AH,02HMOV DH,11MOV DL,28INT 10HMOV AH,9LEA DX,MSGXMINT 21HADD SI,5MOV AH,9MOV DX,SIINT 21HMOV AH,02H MOV DH,12 MOV DL,28INT 10HMOV AH,9LEA DX,MSGYW INT 21HADD SI,16MOV AH,9MOV DX,SIINT 21HMOV AH,02H MOV DH,13 MOV DL,28INT 10HMOV AH,9LEA DX,MSGSX INT 21HADD SI,4MOV AH,9MOV DX,SIINT 21HMOV AH,02H MOV DH,14 MOV DL,28INT 10HMOV AH,9LEA DX,MSGWY INT 21HADD SI,4MOV AH,9MOV DX,SIINT 21HMOV AH,2MOV DH,15MOV DL,28INT 10HMOV AH,9LEA DX,MSGRTINT 21HMOV AH,1INT 21HDEND: ;关闭文件MOV AH,3EHMOV BX,HANDLEINT 21HPOP DXPOP AXRETDISPLAY ENDP;******************************** MODIFY PROC NEARPUSH AXPUSH DX;清屏CALL CLS;提示输入学号MOV AH,02HMOV DH,10MOV DL,28INT 10HMOV AH,9LEA DX,MSGXHINT 21H;从键盘读入学号字符串MOV AH,0AHLEA DX,MAXLENINT 21H;打开文件(读写)MOV AH,3DHMOV AL,10LEA DX,PATHINT 21HMOV HANDLE,AX;将文件指针定位至文件开头MOV AH,42HMOV AL,0MOV BX,HANDLEMOV CX,0MOV DX,0INT 21H;将文件载入缓存MOV AH,3FHMOV BX,HANDLEMOV CX,2048LEA DX,BUFFERINT 21H;在缓存中找到对应记录LEA SI,BUFFERLEA DI,STRINGMOV CX,AXCALL SEARCHCMP DX,0JZ REVISEXM;若未找到,则提示错误MOV AH,9LEA DX,MSGEINT 21HJMP MEND;修改姓名REVISEXM:MOV AH,02HMOV DH,11MOV DL,28INT 10HMOV AH,9LEA DX,MSGXMINT 21HMOV AH,0AHLEA DX,MAXLENINT 21HCMP BYTE PTR [STRING],0DH ;若为回车,则将指针指向下一字段JNZ XMCONTADD SI,5JMP REVISEYWXMCONT:PUSH SIMOV DX,15CALL FILLPOP SIADD SI,5LEA BX,BUFFERMOV DX,SISUB DX,BXMOV AH,42HMOV AL,00MOV BX,HANDLEMOV CX,00INT 21HMOV AH,40HMOV BX,HANDLEMOV CX,0MOV CL,ACTLENLEA DX,STRINGINT 21H;修改语文成绩REVISEYW:MOV AH,02HMOV DH,12MOV DL,28INT 10HMOV AH,9LEA DX,MSGYWINT 21HMOV AH,0AHLEA DX,MAXLENINT 21HCMP BYTE PTR [STRING],0DHJNZ YWCONTADD SI,16JMP REVISESXYWCONT:PUSH SIMOV DX,3CALL FILLPOP SIADD SI,16LEA BX,BUFFERMOV DX,SISUB DX,BXMOV AH,42HMOV AL,00MOV BX,HANDLEMOV CX,00INT 21HMOV AH,40HMOV BX,HANDLEMOV CX,0MOV CL,ACTLENLEA DX,STRINGINT 21H;修改数学成绩REVISESX:MOV AH,02HMOV DH,13MOV DL,28INT 10HMOV AH,9LEA DX,MSGSXINT 21HMOV AH,0AHLEA DX,MAXLENINT 21HCMP BYTE PTR [STRING],0DHJNZ SXCONTADD SI,4JMP REVISEWYSXCONT:PUSH SIMOV DX,3CALL FILLPOP SIADD SI,4LEA BX,BUFFERMOV DX,SISUB DX,BXMOV AH,42HMOV AL,00MOV BX,HANDLEMOV CX,00INT 21HMOV AH,40HMOV BX,HANDLEMOV CX,0MOV CL,ACTLENLEA DX,STRINGINT 21H;修改外语成绩REVISEWY:MOV AH,02HMOV DH,14MOV DL,28INT 10HMOV AH,9LEA DX,MSGWYINT 21HMOV AH,0AHLEA DX,MAXLENINT 21HCMP BYTE PTR [STRING],0DHJZ MENDPUSH SIMOV DX,3CALL FILLPOP SIADD SI,4LEA BX,BUFFERMOV DX,SISUB DX,BXMOV AH,42HMOV AL,00MOV BX,HANDLEMOV CX,00INT 21HMOV AH,40HMOV BX,HANDLEMOV CX,0MOV CL,ACTLENLEA DX,STRINGINT 21HMEND: ;关闭文件MOV AH,3EHMOV BX,HANDLEINT 21HPOP DXPOP AXRETMODIFY ENDP;******************************** ******************************** **************DELETE PROC NEARPUSH AXPUSH DX;清屏CALL CLS;提示输入姓名MOV AH,02HMOV DH,11MOV DL,28INT 10HMOV AH,9LEA DX,MSGA2INT 21H;读入姓名字符串MOV AH,0AHLEA DX,MAXLEN1INT 21H;提示输入学号MOV AH,02HMOV DH,12MOV DL,28INT 10HMOV AH,9LEA DX,MSGA1INT 21H;读入学号字符串MOV AH,0AHLEA DX,MAXLENINT 21H;打开文件(读写)MOV AH,3DHMOV AL,10LEA DX,PATHINT 21HMOV HANDLE,AX;将文件指针指向开头MOV AH,42HMOV AL,0MOV BX,HANDLEMOV CX,0MOV DX,0INT 21H;载入文件MOV AH,3FHMOV BX,HANDLEMOV CX,2048LEA DX,BUFFERINT 21H;在缓存中搜索学号对应记录LEA SI,BUFFERLEA DI,STRINGMOV CX,AXCALL SEARCHCMP DX,0JNZ DELEND;比较该记录对应姓名是否与输入的相同PUSH SIADD SI,5LEA DI,STRING1MOV CX,0MOV CL,ACTLEN1MOV DX,0LCHECK:MOV AL,[SI]MOV AH,[DI]CMP AL,AHJZ LCONTIMOV DX,1JMP DELERRLCONTI:INC SIINC DILOOP LCHECKPOP SICMP DX,0JZ DEL;姓名不对应则提示错误DELERR:MOV AH,9LEA DX,MSGEINT 21HJMP DELENDDEL:;将文件指针定位至该记录开始处LEA BX,BUFFERMOV DX,SISUB DX,BXMOV AH,42HMOV AL,00MOV BX,HANDLEMOV CX,00INT 21H;将该记录覆盖为空格MOV AH,40HMOV BX,HANDLEMOV CX,33LEA DX,DELSTRINT 21HDELEND: ;关闭文件MOV AH,3EHMOV BX,HANDLEINT 21HPOP DXPOP AXRETDELETE ENDP;******************************** ;清屏程序CLS PROC NEARPUSH AXPUSH BXPUSH CXPUSH DX;屏幕初始化MOV AH,6MOV AL,0MOV BH,7MOV CX,0MOV DX,2479HINT 10H;重定位光标MOV DX,0MOV AH,2INT 10HPOP DXPOP CXPOP BXPOP AXRETCLS ENDP;******************************** ;搜索程序;若找到对应记录,则将DX赋为0,并将SI指向该记录首地址;否则DX 赋为1。
高级语言程序设计-学生成绩管理系统汇编
高级语言程序设计II课程设计题目:学生成绩管理管理系统学院计算机与信息科学学院专业计算机科学与技术年级 2010学号 20100514686姓名 XXXXX学生成绩管理管理系统一、设计要求(功能设计,设计思想、总体设计、文件及函数的组成)1.功能设计:1)该系统主要实现的功能如下:学生成绩录入功能:能根据提示将学生的相关信息以及各科成绩进行输入;学生成绩查询功能:能根据提示将学生的姓名输入进行各科成绩的查询;学生成绩修改功能:可对输入的学生进行各科成绩的修改;添加新的学生功能:可以新增学生的信息及各科成绩;学生成绩注销功能:可以将学生的信息和成绩进行删除;学生成绩排名功能:可将学生的姓名输入查看总排名及各科排名;退出功能:退出该系统。
2)该系统能够实现学生成绩的录入、查询、修改、增加、注销、总成绩排明及各科分数排名基本信息。
3)本系统显示这样的菜单:1.学生成绩录入2.学生成绩查询3.学生成绩修改4.添加新的学生5.学生成绩注销6.学生成绩排名7.退出请选择数字键进行操作4)执行一个具体的功能之后,程序将重新显示菜单。
2.设计思想:这里提供一种综合解决方案,使其更加接近使用程序。
设计一个菜单,通过菜单选择功能实现相应的操作。
设计思想如下:(1)系统以菜单方式工作;(2)学生成绩录入功能;(3)学生成绩查询功能;(4)学生成绩修改功能;(5)添加新的学生功能;(6)学生成绩注销功能;(7)学生成绩排名功能;(8)分析系统中的各个实体之间的关系及其属性和行为; (9)根据功能描述,设计系统的类层次;(10)完成类层次中各个类的描述(包括属性和方法); (11)完成类中各个成员函数的定义; (12)完成系统的应用模块; (13)功能调试; 3.总体设计:本程序包涵了一个类program 和六个成员函数以及一个菜单函数,首先使用一个结构体student 记载学生的原始信息,即学生姓名,学生学号,学生成绩,其中学生成绩也用一个结构体score 来存放,再使用数组存储输入原始信息。
汇编语言学生成绩管理系统报告
0 ;修改时用的,判定是否找到相应学号 5,?,5 dup(0) ;为了使输入的分数也能输入错误的情况下回
退光标进行修改而用的 10,?,10 dup(0) ;删除时存储学号用的 0 ;总分数的高位 0 ;总分数的低位 0 ;学生的人数 0 ;平均成绩 0 ;小于 60 0 ;60 到 70 0 ;70 到 80 0 ;80 到 90 0 ;90 到 99
<7>
con
db 48 ;结构字段的大小,为常数
stu man 100 dup(<>) ;学生信息
(2) make_c proc 流程图:
<8>
make_c子程序
系统显示界面
1号系统调用 接收选择字符
是否为i
N
是否为l
N
是否为o
N
是否为s
N
是否为d
N
是否为m
Y
Y
Y 清屏,进入 插入界面
N 接收字符 并判断是否为c
<4>
3. 程序最终效果
主界面: 自己运行程序截图去吧
Insert(i)插入学生信息: 自己运行程序截图去吧
<5>
List(l)显示学生成绩: 自己运行程序截图去吧
Order(o)以分数进行从高到底排序: 自己运行程序截图去吧
Statistic(s)统计学生成绩分布: 自己运行程序截图去吧
Delete(d)删除学生信息(成功:Succesfully,失败:Failed): 自己运行程序截图去吧
输入姓名字符串并 保存
输入班级字符串 并保存
Call d_b 10转2进制子程序
返回到bx中
总分数低字加bx 高字加CF位
学生成绩管理系统-vs汇编
#include<stdio.h>#include<stdlib.h>#include<conio.h>#include<dos.h>#include<string.h>#define LEN sizeof(struct student)#define FORMAT "%-8d%-15s%-12.1lf%-12.1lf%-12.1lf%-12.1lf\n"#define DATA stu[i].num,stu[i].name,stu[i].elec,stu[i].expe,stu[i].requ,stu[i].sum float Ielec,Iexpe,Irequ;float Felec,Fexpe,Frequ;struct student/*定义学生成绩结构体*/{int num;/*学号*/char name[15];/*姓名*/double elec;/*选修课*/double expe;/*实验课*/double requ;/*必修课*/double sum;/*总分*/};struct student stu[50];/*定义结构体数组*/void input();/*录入学生成绩信息*/void show();/*显示学生信息*/void sort();/*按总分排序*/void del();/*删除学生成绩信息*/void modify();/*修改学生成绩信息*/void menu();/*主菜单*/void insert();/*插入学生信息*/void total();/*计算总人数*/void search();/*查找学生信息*/main(){int n;menu();scanf("%d",&n);while(n){switch(n){case 1: input();break;case 2: search();break;case 3: del(); break;case 4: modify();break;case 5: insert();break;case 6: sort();break;case 7: total();break;default: break;}menu();scanf("%d",&n);}}void show(){FILE *fp;int i,m=0;fp=fopen("d:\\data.txt","ab+");while(!feof(fp)){if(fread(&stu[m] ,LEN,1,fp)==1)m++;}fclose(fp);printf("number name elective experiment required sum\t\n");for(i=0;i<m;i++){printf(FORMAT,DATA);/*将信息按指定格式打印*/}}void menu(){system("cls");printf("\n");printf("\n");printf("\t|--------------------Student management system--------------------|\n");printf("\t| |\n");printf("\t| 0. exit |\n");printf("\t| |\n");printf("\t| 1. input record |\n");printf("\t| |\n");printf("\t| 2. search record |\n");printf("\t| |\n");printf("\t| 3. delete record |\n");printf("\t| |\n");printf("\t| 4. modify record |\n");printf("\t| |\n");printf("\t| 5. insert record |\n");printf("\t| |\n");printf("\t| 6. order |\n");printf("\t| |\n");printf("\t| 7. number |\n");printf("\t| |\n");printf("\t|-----------------------------------------------------------------|\n"); printf("\n");printf("\n");printf(" choose( 0 ~ 7 ):");}void input(){int i,m=0;char ch[2];FILE *fp;if((fp=fopen("d:\\data.txt","ab+"))==NULL) /*打开指定文件*/{printf("can not open\n");return; /*返回主函数*/}while(!feof(fp)) /*feof()函数是用来判断指针是否已经到达文件尾部的,若指针指向文件末尾,则返回值为“真”,返回。
汇编语言成绩统计系统的实现
一、软件背景介绍学生成绩管理系统设计与实现学生成绩管理系统设计与实现摘要学生成绩管理系统是学校不可或缺的一个组成部分,随着计算机技术的逐渐发展,计算机在教育系统中的应用得到了巨大的发展。
教务管理正在逐步迈向管理信息现代化。
但是我国的教务管理信息化水平还处在初级阶段,主要表现在对学生的成绩管理、学生的课程管理还是采用原有的人工管理方式。
学校的规模不断扩大,学生数量急剧增加,有关学生的各种数据也成倍增长。
面对庞大的信息量,这时的人工管理几乎无法实现,在这种情况下用数据库进行管理变的尤为必要,这可以发挥计算机的优势,就需要有教务管理系统来提高学生成绩管理工作的效率.通过这样的系统,可以做到信息的规范管理,科学统计和快速的查询,从而减少管理方面的工作量和减少人为的错误。
进行数据库设计首先必须准确了解也分析用户需求(包括数据和处理)。
目的是为学生成绩管理数据库系统的设计打下牢牢的基础,是数据库开发的重要文件依据,主要为数据库设计人员使用,是用户和系统分析员的项目依据文件。
作为“地基”的需求分析是否做得充分与准确,它决定了在其上构建数据库大厦的速度和质量。
需求分析做得不好,甚至会导致整个数据库设计返工重做。
成绩管理系统是针对高等院校的学生学籍管理,因此此系统的用户应包括系统管理员和学生。
主要涉及系部信息、班级信息、学生信息、课程信息和成绩等多种数据信息。
经走访调查得出教务员有以下要求:(1)管理员、教师和学生登录后可以改自己的密码;(2)管理员、教师和学生可以查询课程信息;(3)管理员可以删除学生信息、教师信息、登录用户信息,还可以查询和删除学生成绩,添加、删除课程信息;(4)管理员批量导入、导出数据;(5)教师可以录入、修改成绩,批量导出数据;(6)学生可以查询成绩。
不过此次我做的系统只针对学生成绩管理实现的对学生成绩的统计,主要运用汇编语言来完成各个模块的应用,先以内存存储单元中读取数据(假设的学生成绩数据),将成绩及姓名放在两个存储单元,然后通过循环,地址的的增加,实现姓名与成绩的对应输出,其中有冒泡排序的实现及十进制显示输出,还有ABCDE等级的统计及附加功能等级的判断。
汇编语言编写学生成绩管理系统.
hh MACRO ;回车换行宏定义 PUSH DX PUSH AX MOV DL,0AH MOV AH,2 INT 21H MOV DL,0DH MOV AH,2 INT 21H POP AX POP DX ENDM clear MACRO ;清屏宏定义 PUSH AX PUSH BX PUSH CX PUSH DX MOV AH,2 MOV DH,0 MOV DL,0 INT 10H MOV AH,6 MOV AL,0 MOV BH,7 MOV CH,0 MOV CL,0 MOV DH,24 MOV DL,79 INT 10H ENDM DATAS SEGMENT cj DB 100 DUP(-1 pm DB 100 DUP(0 mz DB 100 DUP(14 DUP(' ','$' strm1 DB '1.insert student score$' strm2 DB '2.delete student score$' strm3 DB '3.show student score and rank$' strm4 DB'ESC.exit$' stri1 DB 'input the student number:$' stri2 DB 'input this student score:$' stri3 DB 'insert success,press any key!$' stri4 DB 'input this student name:$' strd1 DB 'delete the student number:$' strd2 DB 'delete success,press any key!$' strr1 DB'===================score and rank===================$' strr2 DB 'number name score rank $' strr3 DB 'show success,press any key!$' stre DB 'error,please try again$' strq DB 'thanks for using$' DATAS ENDS STACKS SEGMENT STACKS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKS START: MOV AX,DATAS MOV DS,AX main: LEA DX,strm1 MOV AH,9 INT 21H hh LEA DX,strm2 ;获取STRM2的偏移地址 MOV AH,9 INT 21H hh LEA DX,strm3 ;获取STRM3的偏移地址 MOV AH,9 INT 21H hh LEA DX,strm4 MOV AH,9 INT 21H hh main1: MOV AH,1 INT 21H CMP AL,31H ;插入学生成绩 JE insert ;等于则转移INSERT CMP AL,32H ;删除 JE delete CMP AL,33H ;显示 JE rank CMP AL,1BH ;退出 JE quit JMP main1 ;跳转到MAIN1 insert: clear ;调用清屏宏 LEA DX,stri1 MOV AH,9 INT 21H hh CALL shuru MOV BX,AX hh LEA DX,stri4 MOV AH,9 INT 21H hh PUSH BX PUSH DX MOV AX,BX MOV CL,15 MUL CL MOV BX,AX LEADX,mz[BX] ;把名字存到mz中 MOV AH,10 INT 21H POP DX POP BX hh LEA DX,stri2 MOV AH,9 INT 21H hh CALL shuru MOV cj[BX],AL ;把成绩存到cj hh LEA DX,stri3 MOV AH,9 INT 21H MOV AH,1 INT 21H hh clear JMP main delete: clear LEA DX,strd1 MOV AH,9 INT 21H hh CALL shuru MOV BX,AX MOV cj[BX],-1 ;把输入学号的成绩删除 hh LEA DX,strd2 MOV AH,9 INT 21H hh MOV AH,1 INT 21H hh clear JMP main rank: MOV CX,100 MOV DH,1 rank0: MOV DL,DH DEC CXCMP CX,-1H JE rank5 MOV BX,1 rank1: CMP cj[BX],CL JE rank3 rank2: INC BX CMP BX,100 JE rank0 JMP rank1 rank3: MOV pm[BX],DL;把名次存到pm INC DH JMP rank2 rank5: clear LEA DX,strr1 MOV AH,9 INT 21H hh LEA DX,strr2 MOV AH,9 INT 21H hh MOV BX,0 MOV DH,1 rank10: INC BX CMP BX,100 JE rank11 CMP cj[BX],-1 JE rank10 INC DH MOV DL,10 MOV AH,2 INT 10H PUSH BX PUSH DX MOV AX,BX MOV CL,15 MUL CL MOVBX,AX ADD BX,2 LEA DX,mz[BX] MOV AH,9 INT 21H POP DX POP BX MOV DL,1 MOV AH,2 INT 10H MOV AX,BX CALL shuchu MOV DL,30 MOV AH,2 INT 10H MOV AL,cj[BX] CALL shuchu MOV DL,45 MOV AH,2 INT 10H MOV AH,0 MOV AL,pm[BX] CALL shuchu hh JMP rank10 rank11: LEA DX,strr3 MOV AH,9 INT 21H MOV AH,1 INT 21H clear JMP main quit: clear MOV BH,0 MOV AH,2 MOV DH,5 MOV DL,20 INT 10H LEA DX,strq MOV AH,9 INT 21H MOV AH,4CH INT21H shuru PROC NEAR PUSH BX return: MOV AH,1 INT 21H CMP AL,30H JL cuowu CMP AL,39H JG cuowu SUB AL,30H MOV AH,0 MOV BL,10 MUL BL MOV BX,AX MOV AH,1 INT 21H CMP AL,30H JL cuowu CMP AL,39H JG cuowu MOV AH,0 SUB AL,30H ADD AX,BX POP BX RET cuowu: hh LEA DX,stre MOV AH,9 INT 21H hh JMP return shuru ENDP shuchu PROC NEAR PUSH CX PUSH DX MOV CL,10 CBW ;字节扩展为字 IDIV CL MOV DH,AH MOV DL,AL ADD DL,30H MOV AH,2 INT 21H MOV DL,DH ADD DL,30H MOV AH,2 INT 21H POP DX POP CX RET shuchu ENDP CODES ENDS END START。
c设计学生成绩管理系统课程设计
c 设计学生成绩管理系统课程设计一、教学目标本课程旨在让学生掌握学生成绩管理系统的设计与实现方法,培养学生的编程能力、逻辑思维能力和问题解决能力。
具体目标如下:1.知识目标:使学生了解并掌握C语言的基本语法、数据结构、函数、文件操作等相关知识。
2.技能目标:培养学生能够运用C语言独立设计并实现一个学生成绩管理系统的能力。
3.情感态度价值观目标:培养学生对编程事业的热爱,增强其团队协作意识,提高其面对挑战的勇气和信心。
二、教学内容教学内容以教材《C程序设计》为主线,结合实际情况进行调整。
具体内容包括:1.C语言基本语法和数据类型。
2.控制结构:顺序结构、分支结构、循环结构。
3.函数:函数的定义、调用、参数传递、返回值。
4.数组和字符串:一维数组、多维数组、字符串的基本操作。
5.指针:指针的概念、指针的运算、指针与数组、指针与函数。
6.结构体和联合体:结构体的定义、使用、联合体的定义和使用。
7.文件操作:文件的打开、关闭、读写。
8.学生成绩管理系统的设计与实现:系统需求分析、系统设计、系统实现。
三、教学方法本课程采用讲授法、案例分析法、实验法等多种教学方法,以激发学生的学习兴趣和主动性。
1.讲授法:通过讲解C语言的基本语法、数据结构、函数等内容,使学生掌握相关知识。
2.案例分析法:分析典型的学生成绩管理系统的案例,使学生了解实际应用中的问题解决方法。
3.实验法:引导学生动手实践,设计和实现一个学生成绩管理系统,提高学生的实际操作能力。
四、教学资源为支持教学内容和教学方法的实施,丰富学生的学习体验,我们将提供以下教学资源:1.教材:《C程序设计》。
2.参考书:提供相关的编程实践书籍,以供学生课后自主学习。
3.多媒体资料:制作精美的PPT,以便于讲解和展示。
4.实验设备:提供计算机实验室,让学生能够进行实际的编程练习。
五、教学评估为全面、客观、公正地评估学生的学习成果,本课程采用以下评估方式:1.平时表现:考察学生在课堂上的参与程度、提问回答、小组讨论等,占总评的20%。
学生成绩管理系统c课程设计
学生成绩管理系统 c 课程设计一、课程目标知识目标:1. 学生能够理解学生成绩管理系统的基础知识,掌握系统的功能模块及其作用。
2. 学生能够掌握数据库的基本操作,如创建、查询、更新和删除数据。
3. 学生能够运用C语言编写简单的程序,实现学生成绩管理系统的基本功能。
技能目标:1. 学生能够运用结构体数组、文件操作等C语言知识,设计和实现一个简单的学生成绩管理系统。
2. 学生能够运用数据库知识,对系统中的数据进行有效管理。
3. 学生能够通过编程解决实际问题,提高分析问题和解决问题的能力。
情感态度价值观目标:1. 学生通过课程学习,培养对计算机编程的兴趣和热情,增强自信心。
2. 学生能够认识到团队合作的重要性,学会与他人协作共同完成任务。
3. 学生能够遵循编程规范,养成良好的编程习惯,培养认真负责的工作态度。
课程性质:本课程为实践性较强的课程,结合C语言和数据库知识,让学生在实际操作中掌握编程技巧。
学生特点:学生已具备一定的C语言基础和数据库知识,对编程有一定的了解,但实际操作能力有待提高。
教学要求:注重理论与实践相结合,强调动手实践,培养学生解决实际问题的能力。
在教学过程中,关注学生的个体差异,给予个性化指导,确保每位学生都能达到课程目标。
通过课程学习,使学生能够独立设计并实现一个简单的学生成绩管理系统。
二、教学内容1. C语言基础知识回顾:变量、数据类型、运算符、控制结构(条件语句、循环语句)。
教材章节:第1章至第4章2. 结构体和数组:结构体定义、结构体数组、结构体指针。
教材章节:第5章3. 文件操作:文件打开、读取、写入、关闭。
教材章节:第6章4. 数据库基础知识:数据库概念、数据表、SQL语句(增删改查)。
教材章节:第7章5. 学生成绩管理系统功能设计:需求分析、功能模块划分、界面设计。
教材章节:第8章6. 编程实现学生成绩管理系统:a. 数据结构设计(结构体数组、链表等)b. 功能模块实现(增加、删除、修改、查询等功能)c. 界面交互设计(命令行界面、菜单等)教材章节:第9章7. 测试与调试:编写测试用例、进行系统测试、调试程序。
基于汇编语言学生成绩管理系统方案
mess5 db ' delete (d) maths :',0ah,0dh,'$'
mess6 db ' query (q) english :',0ah,0dh,'$'
mess7 db ' count (c) computer:',0ah,0dh,'$'
设计要求
学习如何用汇编语言进行数据处理。
设计分析
1.总体结构
整个程序采用主程序调用子程序的方法。主程序完成菜单的显示,子程序完成一个独立功能方法的实现。各子程序的实现方法简要描述如下:
1)设计INSERT(录入)子程序,先打开文件SCORE.TXT,并置文件指针到文件尾,然后调用GET_REC子程序接受用户的输入,再把用户的输入写入文件,最后关闭文件返回主程序。
JNZ B ;不同则转B
INC SI
INC D
LOOP C
(5) MODIFY子程序
MODIFY子程序的功能是修改记录。
先保护现场,然后清除右上部分的记录输入区域,接着打开文件。
用GET_REC子程序获取输入的记录信息,并存入BUFFER1中。从打开的文件中读取一个记录的容(23个字节)放在BUFFER2中。
(7)LIST子程序
LIST子程序的作用是显示文件中的记录。
首先清除记录输入区和显示区域。然后显示记录字段的标题。打开文件,保留文件句柄。读取一条记录的容放在BUFFER1中,并判断是否到了文件末尾,如果不是,则显示这条记录。循环读取直到文件结束。最后关闭程序,恢复现场。
学生成绩管理系统汇编语言
摘要管理信息系统正在向着网络化、智能化和集成化等趋势发展。
学生成绩管理系统是为了更好的管理学生考试成绩而开发的数据管理软件。
它对于一个学校是不可缺少的重要部分,它的内容对于学校的决策者和管理者来说都至关重要。
学生成绩管理管理系统为用户提供充足的信息和快捷的查询手段,实现学生基本信息、成绩的录入,删除,查询,维护以及成绩的统计分析等几方面的功能,是现实问题的迫切要求。
本系统开发的总体任务是实现学生成绩管理的系统化、规范化、自动化。
达到提高学生成绩管理效率的目的。
与传统管理方法相比有明显的优点:查找方便,可靠性高,保密性好,成本低。
彻底改变了以前繁杂的管理模式,实现全面的、相对集中的、职能化的信息综合管理。
计算机被用到信息管理系统的环境正是适应了当今时代飞速发展的信息时代。
人们深刻的认识到了计算机功能的强大,对于复杂的信息管理,计算机充分发挥着它的优越性。
检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低,这些优点极大地减轻了学院教学人员的工作量,缩小开支,提高了学生档案管理的效率和准确性,能够合理的安排时间,学生能够尽快的知道自己的考试成绩。
同时,学生管理系统的应用也为今天的教育在未来市场的竞争力有所提高。
关键字:学生成绩管理,插入,查找,删除,退出,修改;目录1. 系统分析 (3)1.1系统开发背景 (3)1.2初步调查与可行性分析 (3)1.3系统目标 (3)1.4系统流程图 (4)2. 系统总体设计 (5)2.1总体结构图分析 (5)2.2总体结构图 (6)2.3总体数据结构 (6)3、详细设计 (7)3.1 程序功能设计 (7)3.2 设计思路 (7)4、系统测试 (9)4.1测试方案 (9)4.2测试用例及测试结果 (9)4.3软件可靠性 (11)5、软件使用说明书 (12)6、设计总结 (13)参考文献 (14)致谢 (15)附录(源代码) (16)1. 系统分析1.1系统开发背景学生成绩管理系统是为了更好的管理学生考试成绩而开发的数据管理软件。
学生成绩管理系统汇编语言.
摘要管理信息系统正在向着网络化、智能化和集成化等趋势发展。
学生成绩管理系统是为了更好的管理学生考试成绩而开发的数据管理软件。
它对于一个学校是不可缺少的重要部分,它的内容对于学校的决策者和管理者来说都至关重要。
学生成绩管理管理系统为用户提供充足的信息和快捷的查询手段,实现学生基本信息、成绩的录入,删除,查询,维护以及成绩的统计分析等几方面的功能,是现实问题的迫切要求。
本系统开发的总体任务是实现学生成绩管理的系统化、规范化、自动化。
达到提高学生成绩管理效率的目的。
与传统管理方法相比有明显的优点:查找方便,可靠性高,保密性好,成本低。
彻底改变了以前繁杂的管理模式,实现全面的、相对集中的、职能化的信息综合管理。
计算机被用到信息管理系统的环境正是适应了当今时代飞速发展的信息时代。
人们深刻的认识到了计算机功能的强大,对于复杂的信息管理,计算机充分发挥着它的优越性。
检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低,这些优点极大地减轻了学院教学人员的工作量,缩小开支,提高了学生档案管理的效率和准确性,能够合理的安排时间,学生能够尽快的知道自己的考试成绩。
同时,学生管理系统的应用也为今天的教育在未来市场的竞争力有所提高。
关键字:学生成绩管理,插入,查找,删除,退出,修改;目录1. 系统分析 (3)1.1系统开发背景 (3)1.2初步调查与可行性分析 (3)1.3系统目标 (3)1.4系统流程图 (4)2. 系统总体设计 (5)2.1总体结构图分析 (5)2.2总体结构图 (6)2.3总体数据结构 (6)3、详细设计 (7)3.1 程序功能设计 (7)3.2 设计思路 (7)4、系统测试 (9)4.1测试方案 (9)4.2测试用例及测试结果 (9)4.3软件可靠性 (11)5、软件使用说明书 (12)6、设计总结 (13)参考文献 (14)致谢 (15)附录(源代码) (16)1. 系统分析1.1系统开发背景学生成绩管理系统是为了更好的管理学生考试成绩而开发的数据管理软件。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、课程设计的目的、任务
《汇编语言》课程设计对于巩固汇编语言理论知识,加强学生的实际动手能力和提高学生综合素质十分必要。
课程设计的目的主要是通过程序设计方法和技能的基本训练,巩固在课堂上学到的有关程序设计的基本知识和基本方法,通过实际动手能力的培养,进一步熟悉汇编语言的结构和使用方法,达到能独立阅读、编制和调试一定规模的汇编语言程序的水平。
2、软件需求分析和设计
2.1学生成绩管理系统是对学生成绩的管理,其中包括以下几个模块:
(1).插入一个数据(插入学生学号以及语数外三个成绩)。
(2)修改一个数据。
(3)删除学生成绩数据。
(4)查找学生成绩。
(5)查看学生成绩的排名
(6)查看学生成绩分布
(7)按esc键退出系统
2.2学生成绩管理系统应该包含以下信息:学号,语文成绩,英语成绩,数学成绩。
因此,系统应该提供以下功能:
(1)输出显示菜单。
(2)输入学生的成绩
(3)修改学生成绩
(4)删除学生成绩
(5)查询学生成绩
(6)显示学生成绩排名
(7)显示成绩分布统计
(8)按esc键退出系统
2.3依据程序的功能需求,该系统的功能结构图如下
系统功能结构图
2.4 程序流程图:
主程序流程图查找学生成绩
插入学生学号及成绩修改学生的成绩
显示各个学科各分数段的人数
3、程序实现说明
3.1学生管理系统中各子程序如下:
(1).输入全部学生学号以及语文,英语,数学三科的成绩。
子程序名:insert
子程序描述:该子程序为输入字程序。
系统在开始的时候是没有数据的,通过该子程序可以初始化系统,将学生的学号及成绩输入系统。
代码:
insert proc near ;定义进程子程序:插入学生,学号及
成绩
call input ;调用input
add n,1
ret
insert endp
(2).修改输入的成绩。
子程序名:modify
子程序描述:通过子程序修改学生的成绩
代码:
modify proc near ;定义进程子程序:修改学生学号,成绩 md1:output mess1 ;输出mess1
shuru ;调用宏shuru:二位数据输入
mov bl,n
mov bh,0
mov al,dl
mov si,0
md: cmp al,xh[si] ;先查找输入的学生是否存在
je qq1_1 ;查到的话,就跳转到qq1_1输入修改的值,
也就是重新输入。
;结果相等则跳转到qq1_1 add si,1
cmp si,bx
jbe md ;小于等于则跳转到md
output mess ;输出mess
jmp md1 ;不相等继续输入学号
qq1_1: ;转入修改的值重新输入。
mov di,si
output mess2
output mess4
mov si,0
mov cx,3
qq3_1:shuruu ;分别输入语文,英语,数学成绩,并将其放
在缓冲区buf中
cmp dx,78h ;比较输入的成绩是否大于120,如果大于120的
话,那么重新输入成绩
jbe qq2_1 ;小于等于则转移到qq2_1
output ts3 ;输出ts3
jmp qq1_1 ;跳转到qq1_1
qq2_1:mov buf[si],dl
output bg ;输出空格
add si,1
loop qq3_1
mov al,buf[0] ;将存入buf中的成绩,分别赋值给存放对应科
目的成绩的数组
mov chi[di],al
mov al,buf[1]
mov eng[di],al
mov al,buf[2]
mov mat[di],al
ret
modify endp
(3).删除学生的成绩。
子程序名:delete
子程序描述:通过子程序删除学生的成绩
代码:
de proc near ;删除某个学生的记录
sc1:output mess1
shuru ;调用宏shuru,接受输入的学号
mov bl,n
mov bh,0
mov al,dl
mov si,0
sc: cmp al,xh[si] ;查询输入学号的学生信息是否存在,不存在的
话,重新输入学号
je sc2 ;相等则转移到sc2
add si,1
cmp si,bx
jbe sc ;小于等于则转移到sc
output mess ;输出mess
jmp sc1
sc2:
sub bx,si
cmp bx,0
je sc3 ;相等则转移到sc3
mov cx,bx
sc4:mov dl,chi[si+1]
mov chi[si],dl
mov dl,eng[si+1]
mov eng[si],dl
mov dl,mat[si+1]
mov mat[si],dl
mov dl,xh[si+1]
mov xh[si],dl
add si,1
loop sc4 ;loop循环指令,执行操作(cx)<--(cx)-1.若
cx!=0,跳转到标号sc处循环执行;cx=0,则推出
循环,执行loop的下一条指令
sub n,1
sc3: ret
de endp
(3).查询学生的成绩。
子程序名:find
子程序描述:通过子程序查询学生的成绩
代码:
find proc near ;定义进程子程序:查找学生成绩
call sum ;求学生的总成绩
call ping ;求学生的平均成绩
bj1:output mess1 ;输出mess1
shuru ;二位数数据输入
mov bl,n
mov bh,0
mov al,dl
mov si,0
bj: cmp al,xh[si] ;将输入的学号与输入的学号相比,
je i ;存在的话,将此学生的成绩输出。
je表示结果相
等则转移。
add si,1
cmp si,bx
jbe bj ;小于等于则转移到bj
output mess
jmp bj1
i: output strr2
shuzi xh[si] ;shuzi为二位数据输出
output bg ;输出空格
mov al,chi[si]
cbw ;将字节变为字
shuzii ax ;shuzii为三位数据输出。
output bg ;输出空格
mov al,eng[si]
cbw ;将字节变为字
shuzii ax ;shuzii为三位数据输出
output bg
mov al,mat[si]
cbw
shuzii ax
output bg ;输出空格的字符串,用于与标题栏对齐
mov al,pj[si]
cbw
shuzii ax
output bg
mov ax,si
mov bl,2
mul bl
mov bx,ax
shuzii zc[bx] ;shuzii为三位数据输出
output bg ;输出空格的字符串,用于与标题栏对齐 shuzi mc[si] ;shuzi为二位数据输出
ret
find endp
(4).显示学生的成绩排名。
子程序名:show
子程序描述:通过子程序显示学生的成绩排名
代码:
show proc near ;定义进程子程序:显示结果排名
call sum ;调用宏sum
call ping ;调用宏ping
call rank ;调用宏rank
call shuchu ;调用宏shuchu
ret
show endp
3.2程序运行抓图:
主菜单修改学生成绩
删除学生成绩显示各个学科各分数段的人数
4、程序总结
通过两个星期的学习,努力,终于完成了报告。
系统可以很好的运行。
这两个多星期的时间,几乎每天不是在敲代码,就是在看代码,查书,上网。
系统中用到了很多最近才学习的知识,比如宏,子程序。
这些都使得代码的运行效率提高了,代码行数减少了。
系统还用到了bios的清屏功能。
这些功能如果不是做课程设计,我想我很难会接触到这些知识。
由于自己对知识掌握的不是很牢固,其中也会碰到一些困难。
每当遇到问题的时候,我会先上网去查找,看看有没有人提过这方面的问题。
互联网是强大的,大部分的问题通过网络都可以解决。
部分找不到的问题,我就去请教班里学得好的同学。
他们对知识的掌握远超过我。
这样下来,很多问题都迎刃而解了。
课程设计是一个很好的掌握书本上知识的过程。
平时上课之后,自己都不会想着去敲一些代码联系联系。
通过做课程设计,将理论与实践结合了起来,对知识的理解更加深入了。