⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 menu.asm

📁 学分管理系统的分析
💻 ASM
📖 第 1 页 / 共 2 页
字号:
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 + -