📄 menu.asm
字号:
include macro.lib
extrn writepoint:far,drawline:far,horizontal:far,vertical:far,readpoint:far
extrn rectangle:far,setprepage:far,getimmage:far,putimmage:far
extrn read_line:far,write_line:far,read_col:far,write_col:far,fill:far
extrn showbmp:far
extrn draw_jiao:far,drawline_x:far,drawline_y:far,box:far,rectangle:far
extrn printf:far,printf1:far,putchar:far,printf2:far,printf3:far
extrn no_scroll:byte
extrn clearscreen_du:far,clearscreen_ud:far,clearscreen_rl:far,clearscreen_lr:far
extrn clearscreen_in:far,clearscreen_out:far
extrn clearscreen_rw:far,clearscreen_dw:far
extrn clearscreen_rdw:far,clearscreen_mlr:far,clearscreen_mud:far
extrn random:far,random_yu:far,random_clear:far,tonghua:far
extrn intr8mouse:far ,initmouse:far,store_m:far,restore_m:far
extrn mousex:word,mousey:word,busy:byte
extrn store_ax:word,store_bx:word,closeintr:byte
extrn modifypassword:far
extrn goout:far,pass:far,direct_exit:far
extrn output_records:far
extrn tonghua:far
extrn input_records:far
extrn try_form:far,save_exit:far,init_records:far,output_records:far,add_records:far
extrn search_studentnum:far,search_nopass:far,search_departmentnum:far
extrn tongji_nopass:far,tongji_renshu:far
extrn sound:far,beep:far,show_onepage:far,sort_records:far
extrn oldintr:word,stop_uppage:byte,stop_downpage:byte,page_position:word
extrn pageup:far,pagedown:far,reflesh:far,exchange_scroll:far,light_line:far
extrn modify_one_record:far
public menu,drawscreen
public BACKFLAG1,BACKFLAG2,BACKFLAG3
;==========================================================
data segment para public 'data'
setting db 'picture\setting.bmp',0,0
autumn_p db 'picture\autumn.bmp',0,0
spring_p db 'picture\spring.bmp',0,0
winter_p db 'picture\winter.bmp',0,0
string db '请选择:',0,0
menu01 db '录入',0,0
help01 db '输入原始数据',0,0
menu02 db '查询',0,0
help02 db '查询学生记录',0,0
menu03 db '统计',0,0
help03 db '按各种方式进行统计',0,0
menu04 db '排序',0,0
help04 db '进行各种排序操作',0,0
menu05 db '修改',0,0
help05 db '对输入数据进行相应的修改',0,0
menu06 db '系统',0,0
help06 db '进行密码修改,文件存盘,退出等操作',0,0
menu11 db '起始记录',0,0
help11 db '输入原始学生记录',0,0
menu12 db '添加记录',0,0
help12 db '在原来的基础上添加一些学生记录',0,0
menu21 db '学号查询',0,0
help21 db '根据学号查询该学生的记录',0,0
menu22 db '未过人数',0,0
help22 db '查找平均分数不及格的学生记录',0,0
menu23 db '系号查询',0,0
help23 db '根据系号查找该系的所有学生',0,0
menu31 db '单科未过',0,0
help31 db '单科未过人数统计',0,0
menu32 db '男女人数',0,0
help32 db '统计每个系男生人数,女生人数,总数',0,0
sort_string db '排序类型',0,0
menu41 db '语文',0,0
help41 db '按语文成绩排序',0,0
menu42 db '数学',0,0
help42 db '按数学成绩排序',0,0
menu43 db '总分',0,0
help43 db '按总分排序',0,0
menu44 db '名次',0,0
help44 db '按名次排序',0,0
menu45 db '返回',0,0
help45 db '返回主菜单',0,0
modifyhelp db '点右键进行修改',0,0
menu61 db '密码修改',0,0
help61 db '修改用户密码',0,0
menu62 db '帮助',0,0
help62 db '查看帮助文件和关于本软件的说明并能欣赏到一段音乐',0,0
menu63 db '换皮',0,0
help63 db '换封面',0,0
spring db '春天之约',0,0
springhelp db '适合于春季用',0,0
summer db '夏日炎炎',0,0
summerhelp db '适合于夏季用',0,0
autumn db '秋意萧瑟',0,0
autumnhelp db '适合于秋季用',0,0
winter db '冬日严寒',0,0
winterhelp db '适合于冬日用',0,0
nochange db '保持原样',0,0
nochangehelp db '不改变原来的封面',0,0
kong db 0,0
menu64 db '存盘退出',0,0
help64 db '保存记录文件后退出该系统',0,0
menu65 db '直接退出',0,0
help65 db '不保存记录文件退出该系统',0,0
back db '返回',0,0
helpback db '返回上一级菜单',0,0
uparrow db 1eh,0,0
uparrowhelp db '显示上一页',0,0
downarrow db 1fh,0,0
downarrowhelp db '显示下一页',0,0
reflesh_string db '刷新',0,0
refleshhelp db '重新显示排序结果',0,0
help1 db '关于本软件的介绍',0,0
help2 db '本软件可作为班级,年级,学校的学分管理系统',0,0
help3 db '为教师们减轻工作负担',0,0
help4 db '本软件需要鼠标的支持。以鼠标的操作为主。',0,0
help5 db '你可以在使用的过程中多留意提示和说明。',0,0
help6 db '软件作者:计算机学院九八四班程斌',0,0
help7 db '按任意键,返回主菜单。',0,0
BACKFLAG1 db 0
BACKFLAG2 db 0
BACKFLAG3 db 0
leave_sort db 0
first db 0
second db 0
third db 0
forth db 0
fifth db 0
sixth db 0
seventh db 0
nouse db 0
button1flag db 0
button2flag db 0
button3flag db 0
data ends
code segment public 'code'
assume ds:data,cs:code
.386
;====================================================================
;布置主界面
drawscreen proc far
pusha
push ds
mov ax, data
mov ds, ax
openpicture 0,599,setting,P_COPY
pop ds
popa
ret
drawscreen endp
;====================================================================
;让用户进行菜单选择
menu proc far
push ax
push bx
push cx
push si
push di
push ds
push es
mov ax, data
mov ds, ax
mov closeintr,1
call drawscreen
call store_m
mov closeintr,0
call init_records ;初始化数据文件
.WHILE 1
ishere 22,16,70,56
jnc next1
call tonghua
next1:
button 30, 90, 60,120,button2flag,<call goout>, next2
next2:
button 10,479,86,520, button3flag,<call selectmenu>,next3
next3:
.ENDW
pop es
pop ds
pop di
pop si
pop cx
pop bx
pop ax
ret
menu endp
;====================================================================
;主菜单
selectmenu proc near
.WHILE 1
;setxy 120 ,30,770,500
;call clearscreen_out
slow_zi 300, 120,string,<RGB 0,255,0>
box_jiao 300,150, 500,180,<RGB 125,0,32>
out_hz 380,155,menu01 , <RGB 32,50,180>
box_jiao 300,200,500,230,<RGB 125,0,32>
out_hz 380,205,menu02 , <RGB 32, 50,180>
box_jiao 300,250,500,280,<RGB 125,0,32>
out_hz 380,255,menu03, <RGB 32,50,180>
box_jiao 300,300,500,330,<RGB 125,0,32>
out_hz 380,305,menu04, <RGB 32,50,180>
box_jiao 300,350,500,380,<RGB 125,0,32>
out_hz 380,355,menu05, <RGB 32,50,180>
box_jiao 300,400,500,430,<RGB 125,0,32>
out_hz 380,405,menu06, <RGB 32,50,180>
.WHILE 1
submenu 300,150,500,180,first,menu01,help01,showsubmenu1,next1,BACKFLAG2
next1:
submenu 300,200,500,230,second,menu02,help02,showsubmenu2,next2,BACKFLAG2
next2:
submenu 300,250,500,280,third,menu03,help03,showsubmenu3,next3 ,BACKFLAG2
next3:
submenu 300,300,500,330,forth,menu04,help04,showsubmenu4,next4 ,BACKFLAG2
next4:
submenu 300,350,500,380,fifth,menu05,help05,showsubmenu5,next5, BACKFLAG2
next5:
submenu 300,400,500,430,sixth,menu06,help06,showsubmenu6,next6,BACKFLAG2
next6:
.ENDW
MOV BACKFLAG2,0
MOV BACKFLAG3,0
.BREAK .IF BACKFLAG1 == 1
.ENDW
ret
selectmenu endp
;====================================================================
;返回上一级菜单
goback proc near
setxy 300,100,500,500
call clearscreen_mlr
MOV BACKFLAG3,1
MOV BACKFLAG2,1
MOV BACKFLAG1,0
mov leave_sort , 1
ret
goback endp
;====================================================================
showsubmenu1 proc near
setxy 300,100,500,500
call clearscreen_in
mov busy, 1
slow_zi 300, 120,string,<RGB 0,255,0>
box_jiao 300,150, 500,180,<RGB 125,0,32>
out_hz 380,155,menu11 , <RGB 32,50,180>
box_jiao 300,200,500,230,<RGB 125,0,32>
out_hz 380,205,menu12 , <RGB 32, 50,180>
box_jiao 300,250,500,280,<RGB 125,0,32>
out_hz 380,255,back, <RGB 32,50,180>
mov busy,0
.WHILE 1
submenu 300,150,500,180,first,menu11,help11,input_records,next1,BACKFLAG3
next1:
submenu 300,200,500,230,second,menu12,help12,add_records,next2,BACKFLAG3
next2:
submenu 300,250,500,280,third,back,helpback,goback,next3,BACKFLAG3
next3:
.ENDW
exit:
ret
showsubmenu1 endp
;====================================================================
showsubmenu2 proc near
setxy 300,100,500,500
call clearscreen_out
mov busy, 1
slow_zi 300, 120,string,<RGB 0,255,0>
box_jiao 300,150, 500,180,<RGB 125,0,32>
out_hz 380,155,menu21 , <RGB 32,50,180>
box_jiao 300,200,500,230,<RGB 125,0,32>
out_hz 380,205,menu22 , <RGB 32, 50,180>
box_jiao 300,250,500,280,<RGB 125,0,32>
out_hz 380,255,menu23, <RGB 32,50,180>
box_jiao 300,300,500,330,<RGB 125,0,32>
out_hz 380,305,back, <RGB 32,50,180>
mov busy,0
.WHILE 1
submenu 300,150,500,180,first,menu21,help21,search_studentnum,next1,BACKFLAG3
next1:
submenu 300,200,500,230,second,menu22,help22,search_nopass,next2,BACKFLAG3
next2:
submenu 300,250,500,280,third,menu23,help23,search_departmentnum,next3,BACKFLAG3
next3:
submenu 300,300,500,330,fifth,back,helpback,goback,next5,BACKFLAG3
next5:
.ENDW
exit:
ret
showsubmenu2 endp
;====================================================================
showsubmenu3 proc near
setxy 300,100,500,500
call clearscreen_in
mov busy, 1
slow_zi 300, 120,string,<RGB 0,255,0>
box_jiao 300,150, 500,180,<RGB 125,0,32>
out_hz 380,155,menu31 , <RGB 32,50,180>
box_jiao 300,200,500,230,<RGB 125,0,32>
out_hz 380,205,menu32 , <RGB 32, 50,180>
box_jiao 300,250,500,280,<RGB 125,0,32>
out_hz 380,255,back, <RGB 32,50,180>
mov busy,0
.WHILE 1
submenu 300,150,500,180,first,menu31,help31,tongji_nopass,next1,BACKFLAG3
next1:
submenu 300,200,500,230,second,menu32,help32,tongji_renshu,next2,BACKFLAG3
next2:
submenu 300,250,500,280,third,back,helpback,goback,next3,BACKFLAG3
next3:
.ENDW
exit:
ret
showsubmenu3 endp
;============================================================================
;sort
showsubmenu4 proc
setxy 300,100,500,500
call clearscreen_in
mov stop_uppage, 1
mov stop_downpage,0
mov page_position, 0
mov busy, 1
slow_zi 120,44,sort_string,<RGB 0,255,0>
box_jiao 200,42,290,62,<RGB 125,0,32>
out_hz 220,44,menu41 , <RGB 32,50,180>
box_jiao 300,42,390,62,<RGB 125,0,32>
out_hz 320,44,menu42 , <RGB 32, 50,180>
box_jiao 400,42,490,62,<RGB 125,0,32>
out_hz 420,44, menu43, <RGB 32,50,180>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -