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

📄 function.h

📁 软件的名称:学生信息管理系统 软件的功能:登录功能、主菜单功能、学生信息录入功能、学生记录的排序功能、查询和删除功能、学生信息打印功能、记录保存功能、记录读取功能、分数统计报表功能和退出功能等。
💻 H
字号:
//获得光标当前位置
void GetXY(int *x,int *y)
{
	HANDLE hOut;	// 获取标准输出设备句柄
	CONSOLE_SCREEN_BUFFER_INFO bInfo;
	COORD pos;
	hOut = GetStdHandle(STD_OUTPUT_HANDLE);
   	GetConsoleScreenBufferInfo( hOut, &bInfo );	
	pos = bInfo.dwCursorPosition;
	*x = pos.X;
	*y = pos.Y;
}

//将光标定位到控制台上的某个位置
void SetXY(int xcursor, int ycursor)
{
	COORD pos = {xcursor,ycursor};
	HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);	// 获取标准输出设备句柄
	SetConsoleCursorPosition(hOut, pos);
}

//显示当前时间
void GetTime()   
  {   
        time_t   tval;   
        struct   tm   *now;   
        /*   Get   current   date   and   time   */   
        tval = time(NULL);   
        now = localtime(&tval);   
        printf("CurrentTime: %4d-%d-%02d %d:%02d:%02d\n",
			now->tm_year+1900,now->tm_mon+1,now->tm_mday,   
            now->tm_hour,now->tm_min,now->tm_sec);   
  }

//设置文本颜色
void SetCorlor(short int color)
{
	HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
	SetConsoleTextAttribute(hOut,color);
}

//清屏函数,X代表列,Y代表行
void ClearScreen(int fromX,int fromY,int toX,int toY)
{
	void SetXY(int xcursor, int ycursor);
	int i,j;
    int row,line;//row代表行,line代表列
	row=toY-fromY+1;
	line=toX-fromX+1;
	//SetXY(fromX,fromY);
	for(i=0;i<row;i++)
	{
		
		for(j=0;j<line;j++)
		{
			SetXY(fromX+j,fromY+i);	
			printf(" ");
		}
	}
}

//框架头部
void FrameHead(int row,int line)
{
	int i,m,xcursor,ycursor;;	
	for(i=0;i<row;i++)
	{      
			if(i==0)
			{	
				SetXY(0,0);
				for(m=1;m<=29;m++)
				{ 
					printf("\325");
					SetXY(m,0);
					printf("\315");
				}	
				printf("Student Info System");
				for(m=49;m<line;m++)
				{
					SetXY(m,0);
					printf("\315");
				}
				SetXY(79,0);
				printf("\270");
			}
		else
		{
			SetXY(0,i);
			printf("\263");
			SetXY(line-1,i);
			printf("\263");	
		}
	}
	GetXY(&xcursor,&ycursor);
}

//信息提示框
void FrameInfo(int row,int line)
{
	int i,m,xcursor,ycursor;
	GetXY(&xcursor,&ycursor);
	for(i=0;i<row;i++)
	{      
			if(i==0)
			{	
				SetXY(0,ycursor);
				for(m=1;m<=35;m++)
				{ 
					printf("\303");
					SetXY(m,ycursor);
					printf("\304");
				}	
				printf("Message");
				for(m=43;m<line;m++)
				{
					SetXY(m,ycursor);
					printf("\304");
				}
				SetXY(79,ycursor);
				printf("\264");
			}
			else if(i==row-1)
			{
				SetXY(i-row-1,ycursor+row-1);
				printf("\324");
				for(m=0;m<line;m++)
				{
					if(m!=line-1)
					{
						SetXY(m+1,ycursor+row-1);
						printf("\315");
					}
					else
					{
						SetXY(line-1,ycursor+row-1);
						printf("\276");
					}
				}
			}
		   else
			{
				SetXY(0,ycursor+i);
				printf("\263");
				SetXY(line-1,ycursor+i);
				printf("\263");	
			}
	}
	GetXY(&xcursor,&ycursor);
	SetXY(3,ycursor);
	printf("Author:Zhilong Pan\tEditon:1.0.0\t");
    GetTime();
}

//控制定长输入
void input(char str[], int len)
{
	int i=0;
	int ch;
	while(1)
	{
		ch=getch();
		if(ch==0xe0)
		{
			ch=getch();//方向键不接收
		}
		else if(ch==8)
		{
			if(i>0)
			{
				printf("\b");//光标前移,然后用空格刷掉光标当前位置的字符
				printf(" ");
				printf("\b");
				i--;
				str[i]='\0';
			}
		}
		else if(ch==13)
		{
			str[i]='\0';
			return;
		}
		else if(i<len)
		{
			if(isprint(ch))//isprint(ch)判断ch是否是可打印字符,不包括Tab键
			{
				str[i++]=ch;
				putchar(ch);
			}
		}
	}
}


//密码输入转化为“*”,并控制定长输入
void inputpasswd(char str[], int len)
{
	int i=0;
	int ch;
	while(1)
	{
		ch=getch();
		if(ch==0xe0)
		{
			ch=getch();//方向键不接收
		}
		else if(ch==8)
		{
			if(i>0)
			{
				printf("\b");//光标前移,然后用空格刷掉光标当前位置的字符
				printf(" ");
				printf("\b");
				i--;
				str[i]='\0';
			}
		}
		else if(ch==13)
		{
			str[i]='\0';
			return;
		}
		else if(i<len)
		{
			if(isprint(ch))//isprint(ch)判断ch是否是可打印字符,不包括Tab键
			{
				str[i++]=ch;
				printf("*");
			}
		}
	}
}
//去除字符串两端的空格
void TrimSpace(char str[])
{
	int len,j,n=0,i=0;
	len=strlen(str);
	while(str[i]==32)
	{	
		i++;
    }
	if(i!=0)
	{
		 for(j=i;j<len;j++)    
			str[n++]=str[j];
		 str[n]='\0';
	}
	len=strlen(str);
	while(len>0)
	{
		if(str[len-1]==32)
		{
			str[len-1]='\0';
			len--;	
		}
		else
			break;		
	}
}

//主菜单验证
int MainMenuValidate(char str[],char menu)
{
	char ch;
	int value;
	ch=str[0];
	if(ch=='\0')
		value=0;
	else if((ch>=32 && ch<=47) || (ch>=58 && ch<=126))
		 value=1;
	else  if(ch<'0' || ch>menu)
		 value=2;
	else value=-1;
	return value;

}

/*打印空操作提示
  inputx,inputy决定输入光标位置
  fromx,fromy,tox,toy删除提示框信息
  len决定输入的长度
  menu决定可选菜单编号
*/
void PrintEmpty(int inputx,int inputy,int fromx,int fromy,int tox,int toy,int len,int menu)
{
	ClearScreen(fromx,fromy,tox,toy);//清楚信息框内容
	SetXY(fromx,fromy);
	printf("Your inputed cannot be empty!");
	SetXY(fromx+3,fromy+1);
	if(menu!=0)
		printf("please assure your choose between 0 and %d... ",menu);
	else
		printf("please assure your choose between 0 and %d... ",menu);
	ClearScreen(inputx,inputy,inputx+len,inputy);//清楚前一次输入的选择
	SetXY(inputx,inputy);
}

/*打印非法字符提示
  inputx,inputy决定输入光标位置
  fromx,fromy,tox,toy删除提示框信息
  len决定输入的长度
  menu决定可选菜单编号
*/
void PrintInvalidChar(int inputx,int inputy,int fromx,int fromy,int tox,int toy,int len,int menu)
{
	ClearScreen(fromx,fromy,tox,toy);//清楚信息框内容
	SetXY(fromx,fromy);
	printf("Your inputed contain invalid character!");
	SetXY(fromx+3,fromy+1);
	if(menu!=0)
		printf("please assure your choose between 0 and %d... ",menu);
	else
		printf("please assure your choose between 0 and %d... ",menu);
	ClearScreen(inputx,inputy,inputx+len,inputy);//清楚前一次输入的选择
	SetXY(inputx,inputy);
}

/*打印越界提示
  inputx,inputy决定输入光标位置
  fromx,fromy,tox,toy删除提示框信息
  len决定输入的长度
  menu决定可选菜单编号
  在验证添加信息时候,令menu等于len
*/
void PrintOver(int inputx,int inputy,int fromx,int fromy,int tox,int toy,int len,int menu)
{
	ClearScreen(fromx,fromy,tox,toy);//清楚信息框内容
	SetXY(fromx,fromy);
	printf("Your inputed is exceeds[0-%d]!",menu);
	SetXY(fromx+3,fromy+1);
	if(menu!=0)
		printf("please assure your choose between 0 and %d... ",menu);
	else
		printf("please assure your choose between 0 and %d... ",menu);
	ClearScreen(inputx,inputy,inputx+len,inputy);//清楚前一次输入的选择
	SetXY(inputx,inputy);
}

//去左空格
void RomoveLeftBlank(char str[])
{
	int len,j,n=0,i=0;
	len=strlen(str);
	if(len>0)
	{
		while(str[i]==32)
		{	
			i++;
		}
		if(i!=0)
		{
			for(j=i;j<len;j++)    
				str[n++]=str[j];
			str[n]='\0';
		}
	}
}

//去右边空格
void RomoveRightBlank( char str[])
{
	int len;
	len=strlen(str);
	while(len>0)
	{
		if(str[len-1]==32)
		{
			str[len-1]='\0';
            len--;
		}
		 else break;
	}
}

//去中间空格
void RomoveMidBlank(char str[])
{
	int len,n=0,i;
	len=strlen(str);
	if(len>0)
	{
		for(i=0;i<len;i++)
		{
			if(str[i]!=32)
				str[n++]=str[i];
		}
		str[n]='\0';
	}	
}

// 去除左边的零头
void RemoveLeftZero(char str[])
{
	int len,n=0,i=0,j;
	len=strlen(str);
	if(len>0)
	{
		while(str[i]==48)
		{	
			i++;
		}
		if(i!=0)
		{
			for(j=i;j<len;j++)    
				str[n++]=str[j];
			str[n]='\0';
		}
	}
}






⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -