《学生成绩管理系统-语言》由会员分享,可在线阅读,更多相关《学生成绩管理系统-语言(19页珍藏版)》请在金锄头文库上搜索。
1、;=学生成绩管理系统=;*;EQU STATEMENTS GO HEREStructNodeequ32 ;表达式赋值微操作equ page133Node_nameequ0;类似defineNode_numequ12Node_mathsequ18Node_englishequ20Node_chineseequ22Node_othersequ24Node_totalequ26Node_avgequ28Node_nextequ30max_recordequ100max_menu_indexequ9;*;*data_seg segment;define data segment;DATA GOES H
2、EREbuf1DB30buf1_slenDB?buf1_dataDB30 dup(?)bufnameDB20bufname_slenDB?bufname_dataDB20 dup(?)bufgetintDB32bufgetint_slenDB?bufgetint_dataDB32 dup(?)str_menuDB0dH, 0aH, =Student marks system=, 0dH, 0aH, 0dH, 0aHDB1)Add Record, 0dH, 0aH, 0dH, 0aHDB2)Print All, 0dH, 0aH, 0dH, 0aHDB3)Save, 0dH, 0aH, 0dH,
3、 0aHDB4)Open, 0dH, 0aH, 0dH, 0aH, 0dH, 0aHDB5)Find, 0dH, 0aH, 0dH, 0aH, 0dH, 0aHDB6)Delete, 0dH, 0aH, 0dH, 0aH, 0dH, 0aHDB0)Exit, 0dH, 0aHDBChoice:$;Error Stringsstr_error_1DBError input!, 0dH, 0aH, $jump_tbDWcase_0DWcase_1DWcase_2DWcase_3DWcase_4DWcase_5DWcase_6headDW?;表头指针info_0dbinput num:, $info
4、_1dbinput math:, $info_2dbinput english:, $info_3dbinput chinese:, $ info_4dbinput others:, $info_5dbinput name:, $str_tb_headdbNum, 9,Name, 9, Maths, 9, English, 9, Chinese, 9,Others, 9, Total, 9, Avg, 0dH, 0aHdb=, 0dH, 0aH,$str_tabdb9, $rdatadb(StructNode * (max_record+1) dup(?);全部结点*(100+1)rdata_
5、pdwrdata;下一个可用结点rcountdw00H;当前已分配的结点数newnodedw?pnodedw?file_namedbc:student.txt, 00Hfile_error1dbFailed create file., 0DH, 0AH, $file_error2dbFailed write file., 0DH, 0AH, $file_error3dbFailed open the file., 0DH, 0AH, $file_error4dbFailed read file., 0DH, 0AH, $file_info_1dbsaving the file., 0DH, 0
6、AH, $file_info_2dbWrite to file successfully!, 0DH, 0AH, $file_info_3dbopening the file., 0DH, 0AH, $file_info_4dbread the file successfully!, 0DH, 0AH, $fp1dw?;文件指针data_seg ends;*;*extdata_seg segment;define extra data segment;EXTRA DATA GOES HEREextdata_seg ends;*;*stack_seg segment stack;define e
7、xtra data segment;STACK DATA GOES HEREDB100H dup(?)stack_seg ends;*;*program segment;define code segment;*main proc far;main part of programassume cs:program, ds:data_seg, es:extdata_seg, ss:stack_segstart:;set up stack for returnpush dssub ax, axpush ax;set DS register to current data segmentmov ax
8、, data_seg;data_seg segment addrmov ds, ax;into DS registermov ax, extdata_seg;extdata_seg segment addrmov es, ax;into ES registermov ax, stack_seg;stack_seg segment addrmov ss, ax;into SS register;MAIN PART OF PROGRAM GOES HERE;分配链表头结点mov ax, rdata_pmov head, ax;当前头指针就是rdata_padd rdata_p, StructNod
9、emov bx, headmov word ptr bx+Node_next, 00Hlb_print_menu:;打印菜单lea dx, str_menumov ah, 09Hint 21Hcall far ptr getintcmp dx, max_menu_indexja lb_print_menumov di, dxshl di, 1jmp jump_tbdijmp lb_print_menucase_0:;Exitretcase_1:;添加记录call far ptr addrecordjmp lb_print_menucase_2:;打印所有记录call far ptr print
10、_recordjmp lb_print_menucase_3:;保存到文件call far ptr save_recordjmp lb_print_menucase_4:;从文件中读取call far ptr read_recordjmp lb_print_menucase_5:;查找call far ptr find_recordjmp lb_print_menucase_6:;删除call far ptr delete_recordjmp lb_print_menuret;return to DOSmain endp;end of main part of program;*;*sub1 proc near;define subprocedurepush axpush bxpush cx