📄 function.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 + -