#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
#include<wincon.h>
#include<conio.h>
#include<string.h>
#include<io.h>
#include<fcntl.h>
#include<sys\stat.h>
#include<ctype.h>
#include<time.h>

#ifndef TYPE_H_INCLUDED
#define TYPE_H_INCLUDED

#define SCR_ROW 25		/*屏幕行数*/
#define SCR_COL 80		/*屏幕列数*/

/*缴费信息链结点结构*/
typedef struct charge_node {
	char stu_id[12];		/*学号*/
	char name[10];			/*姓名*/ 
	char date[12];			/*缴费日期*/ 
	float sum;				/*缴费金额*/ 
	char payee[10];			/*收费人*/ 
	char notes[5];			/*备注*/ 
	struct charge_node * next;/*指向下一结点的指针*/ 
} CHARGE_NODE; 

/*屏幕窗口信息链结点结构*/
typeded struct layer_node {
	char LayerNo;				/*弹出窗口层数*/
	SMALL_RECT rcArea;			/*弹出窗口区域坐标*/ 
	CHAR_INFO* pContent;		/*弹出窗口区域字符单元信息存储缓冲区*/ 
	char * pScrAtt;				/*弹出窗口区域字符单元属性值存储缓冲区*/ 
	struct layer_node* next;	/*指向下一结点的指针*/ 
} LAYER_NODE;

/*标签束结构*/
typedef struct label_bundle {
	char * * ppLabel;			/*标签字符串数组首地址*/ 
	COORD * pLoc;				/*标签定位数组首地址*/ 
	int num;					/*标签个数*/ 
} LABEL_BUNDLE; 

/*热区结构*/
typedef struct hot_area{
	SMALL_RECT * pArea;			/*热区定位数组首地址*/
	char *pSort;				/*热区类别（按键、文本框、选项框）数组首地址*/ 
	char *pTag;					/*热区序号数组首地址*/ 
	int num;					/*热区个数*/ 
} HOT_AREA; 

LAYER_NODE * gp_top_layer=NULL;	/*弹出窗口信息链链头*/
DORM_NODE * gp_head=NULL;		/*主链头指针*/

char *ga_main_menu[]={"文件(F)",		/*系统主菜单名*/
					 "数据维护(M)",
					 "数据查询(Q)",
					 "数据统计(S)",
					 "帮助(H)"
					 };
					 
char *ga_sub_menu[]={"[S]数据保存",		/*系统子菜单名*/
					 "[B]数据备份",
					 "[R]数据恢复",
					 "[X]退出 Alt+X",
					 "",
					 "[D]",
					 "[P]",
					 "[C]",
					 "[S]",
					 "[T]",
					 "",
					 "[D]",
					 "[P]",
					 "[C]",
					 "[I]",
					 "[T]",
					 "[C]",
					 "[U]",
					 "[T]",
					 "",
					 "[A]关于…",} 
					 
int ga_sub_menu_count[]={4,6,6,4,3};	/*各主菜单下子菜单的个数*/
int gi_sel_menu=1;						/*被选中的主菜单项号，初始为1*/ 
int gi_sel_sub_menu=0; 					/*被选中的子菜单项号，初始为0，表示未选中*/

CHAR_INFO * gp_buff_menubar_info=NULL;		/*存放菜单条屏幕区字符信息的缓冲区*/
CHAR_INFO * gp_buff_stateBar_info=NULL; 	/*存放状态条屏幕区字符信息的缓冲区*/ 

char * gp_scr_att=NULL;		/*存放屏幕上字符单元属性值得缓冲区*/
char * gp_sex_code=NULL;	/*存放性别代码表的数据缓冲区*/ 
char gc_sys_state='\0'; 	/*用来保存系统状态的字符*/ 

HANDLE gh_std_out;			/*标准输出设备句柄*/
HANDLE gh_std_in; 			/*标准输入设备句柄*/

  int LoadCode(char * filename,char * * ppbuffer);			/*代码表加载*/
  int CreatList(DORM_NODE ** pphead);						/*数据链表初始化*/ 
  void InitInterface(void);									/*系统界面初始化*/ 
  void ClearScreen(void);									/*清屏*/ 
  void ShowMenu(void);										/*显示菜单栏*/ 
  void PopMenu(int num);									/*显示下拉菜单*/ 
  void PopPrompt(int num);									/*显示弹出窗口*/ 
  void PopUp(SMALL_RECT* ,WORD,LABEL_BUNDLE*,HOT_AREA*);	/*弹出窗口屏幕信息维护*/ 
   




















