📄 function.c
字号:
{
flag=1;
break;
}
i++;
}
if(flag==1)
{
if(str[i+2]!='\0')
value=1;//超过一个小数点
else
{
if(!(str[i+1]==ch1 || str[i+1]==ch2 ))
value=2;//判断个位数不是0或者5
}
}
return value;//为0正常
}
/*成绩最终验证
*/
int Score(char str[],int scorelen)
{
int value=0;//0为正确
int len;
int i,j;//i接收输入是否非法,越界;j接收输入是否超出两位小数
RomoveLeftBlank(str);//去左空格
RomoveMidBlank(str);//去中间空格
RomoveRightBlank(str);//去右边空格
len=strlen(str);
if(len<=0)
value=1;//成绩为空
else if(len>scorelen)
value=2;//位数超过5位
else
{
i=CheckScore(str,0,100);
if(i==1)
value=3;//非法字符
else if(i==2)
value=4;//超出范围
else if(i==0)
{
j=Ismoretwo(str,'0','5');
if(j==1)
value=5;//超过一个小数点
else if(j==2)
value=6;//个位数不为0或者5
else if(j==0)
value=0;//正确
}
}
return value;
}
/*姓名验证
namelen设置姓名的最长长度
*/
int CheckName(char str[],int namelen)
{
int len,i=0;
int value=0;//0为正确
RomoveLeftBlank(str);//去左空格
RomoveRightBlank(str);//去右空格
len=strlen(str);
if(len<=0)
{
value=1;//为空
}
else if(len>namelen)
{
value=2;//长度超多20位
}
else
{
while(i<len)
{
if(!(str[i]==32 || (str[i]>=65 && str[i]<=90) || (str[i]>=97 && str[i]<=122)))
{
value=3;//有非法字符
break;
}
i++;
}
}
return value;
}
/*年龄验证
from,to设置年龄的范围
*/
int CheckAge(char str[],int from,int to)
{
int len,i=0;
int value=0;//0为正确
int number;//存放转为整型后的年龄
RomoveLeftBlank(str);//去左空格
RomoveMidBlank(str);//去中间空格
RomoveRightBlank(str);//去右空格
RemoveLeftZero(str);//去除左边零
len=strlen(str);
if(len<=0)
value=1;//为空
else if(len>3)
value=2;//长度超过3位
else
{
while(i<len)
{
if(!(str[i]==32 || str[i]>=48 && str[i]<=57))
{
value=3;//有非法字符
break;
}
i++;
}
}
if(value==0)
{
number=atoi(str);
if(number<from || number>to)
{
value=4;//超出范围
}
}
return value;
}
//学号自动生成
void MakeSno(char sno[],int xcursor,int ycursor)
{
int i=1;
int flag;
student *temp=head;
while(1)
{
temp=head;
while(temp)
{
if(atoi(temp->sno)==i)
{
flag=1;
break;
}
flag=0;
temp=temp->next;
}
if(flag==1)
i++;
if(flag==0 || i>=Sno_count)
break;
}
if(i==Sno_count)
sprintf(sno,"%03d",i+1);
else
sprintf(sno,"%03d",i);
SetXY(xcursor,ycursor);
printf("%-3s\n",sno);
}
//学号自动生成,根据标置数组回收学号
int Make_Sno(char sno[])
{
int i;
for(i=0;i<100;i++)
{
if(sign[i][1]==0)
break;
}
sprintf(sno,"%03d",i+1);
sign[i][1]=1;
return 0;
}
//判断是否合法
int CheckSno(char sno[])
{
int len;
int i=0;
int value=0;//返回0正确
RomoveLeftBlank(sno);//去左空格
RomoveRightBlank(sno);//去右空格
len=strlen(sno);
if(len<=0)
value=1;//为空
else
{
while(i<len)
{
if(!(sno[i]>=48 && sno[i]<=57))
{
value=2;//有非法字符
break;
}
i++;
}
}
return value;
}
//学号错误信息提示
int SnoErrorTip(char sno[],int xcursor,int ycursor)
{
int value;
int i=0;
value=CheckSno(sno);
if(value==1)
{
ClearScreen(1,19,78,20);//清楚信息框内容
SetXY(1,19);
printf("Sno cannot be empty!...");
ClearScreen(xcursor,ycursor,78,ycursor);//清除前一次输入
//SetXY(xcursor,ycursor);
i=1;
}
if(value==2)
{
ClearScreen(1,19,78,20);//清楚信息框内容
SetXY(1,19);
printf("Sno contains invalid character!");
ClearScreen(xcursor,ycursor,78,ycursor);//清除前一次输入
//SetXY(xcursor,ycursor);
i=1;
}
else if(value==0)
{
ClearScreen(1,19,78,20);//清楚信息框内容
ClearScreen(xcursor,ycursor,78,ycursor);//清除前一次输入
i=0;
}
return i;
}
//姓名输入错误信息提示
int NameErrorTip(char name[],int xcursor,int ycursor,int flag)
{
int namevalue;
int i=0;
namevalue=CheckName(name,20);
if(namevalue==1)
{
ClearScreen(1,19,78,20);//清楚信息框内容
SetXY(1,19);
printf("Name cannot be empty!");
SetXY(2,20);
printf("and what your input must be digit or blank...");
if(flag==1)
{
ClearScreen(xcursor+10,ycursor+1,78,ycursor+1);//清除输入的
SetXY(xcursor+10,ycursor+2);
}
else
{
ClearScreen(42,9,78,9);//清除输入的
SetXY(42,9);
}
i=1;
}
else if(namevalue==2)
{
ClearScreen(1,19,78,20);//清楚信息框内容
SetXY(1,19);
printf("the digit fo Name is more than 20!");
SetXY(2,20);
printf("and what your input must be digit or blank...");
if(flag==1)
{
ClearScreen(xcursor+10,ycursor+1,78,ycursor+1);//清除输入的
SetXY(xcursor+10,ycursor+1);
}
else
{
ClearScreen(42,9,78,9);//清除输入的
SetXY(42,9);
}
i=1;
}
else if(namevalue==3)
{
ClearScreen(1,19,78,20);//清楚信息框内容
SetXY(1,19);
printf("Name contains invalid character!");
SetXY(2,20);
printf("and what your input must be digit or blank...");
if(flag==1)
{
ClearScreen(xcursor+10,ycursor+1,78,ycursor+1);//清除输入的
SetXY(xcursor+10,ycursor+1);
}
else
{
ClearScreen(42,9,78,9);//清除输入的
SetXY(42,9);
}
i=1;
}
else
{
ClearScreen(1,19,78,20);//清楚信息框内容
if(flag==1)
{
ClearScreen(xcursor+10,ycursor+1,78,ycursor+1);//清除输入的
}
else
{
ClearScreen(42,9,78,9);//清除输入的
SetXY(42,9);
}
i=0;
}
return i;
}
//年龄输入错误信息提示
int AgeErrorTip(char age[],int xcursor,int ycursor)
{
int i=0;
int agevalue;
agevalue=CheckAge(age,7,50);
if(agevalue==1)
{
ClearScreen(1,19,78,20);//清楚信息框内容
SetXY(1,19);
printf("Age cannot be empty!...");
ClearScreen(xcursor+10,ycursor+2,78,ycursor+2);//清除输入的
SetXY(xcursor+10,ycursor+2);
i=1;
}
else if(agevalue==2)
{
ClearScreen(1,19,78,20);//清楚信息框内容
SetXY(1,19);
printf("the digit fo Name is more than 2...!");
ClearScreen(xcursor+10,ycursor+2,78,ycursor+2);//清除输入的
SetXY(xcursor+10,ycursor+2);
i=1;
}
else if(agevalue==3)
{
ClearScreen(1,19,78,20);//清楚信息框内容
SetXY(1,19);
printf("Age contains invalid character!...");
ClearScreen(xcursor+10,ycursor+2,78,ycursor+2);//清除输入的
SetXY(xcursor+10,ycursor+2);
i=1;
}
else if(agevalue==4)
{
ClearScreen(1,19,78,20);//清楚信息框内容
SetXY(1,19);
printf("Age is not in (7-50)!");
ClearScreen(xcursor+10,ycursor+2,78,ycursor+2);//清除输入的
SetXY(xcursor+10,ycursor+2);
i=1;
}
else
{
ClearScreen(1,19,78,20);//清楚信息框内容
ClearScreen(xcursor+10,ycursor+2,78,ycursor+2);//清除输入的
i=0;
}
return i;
}
/*成绩输入错误提示
distange与学号的行偏移
scorename学科的名称
*/
int ScoreErrorTip(char scorename [],char score[],int xcursor,int ycursor,int len)
{
int i=0;
int scorevalue;
scorevalue=Score(score,5);
if(scorevalue==1)
{
ClearScreen(1,19,78,20);//清楚信息框内容
SetXY(1,19);
printf("%s cannot be empty!...input[0-100]",scorename);
ClearScreen(xcursor,ycursor,xcursor+len,ycursor);//清除输入的
SetXY(xcursor,ycursor);
i=1;
}
else if(scorevalue==2)
{
ClearScreen(1,19,78,20);//清楚信息框内容
SetXY(1,19);
printf("the digit fo %s is more than 5!...input[0-100]",scorename);
ClearScreen(xcursor,ycursor,xcursor+len,ycursor);//清除输入的
SetXY(xcursor,ycursor);
i=1;
}
else if(scorevalue==3)
{
ClearScreen(1,19,78,20);//清楚信息框内容
SetXY(1,19);
printf("%s contains invalid character!...input[0-100]",scorename);
ClearScreen(xcursor,ycursor,xcursor+len,ycursor);//清除输入的
SetXY(xcursor,ycursor);
i=1;
}
else if(scorevalue==4)
{
ClearScreen(1,19,78,20);//清楚信息框内容
SetXY(1,19);
printf("%s is not in (0-100)!",scorename);
ClearScreen(xcursor,ycursor,xcursor+len,ycursor);//清除输入的
SetXY(xcursor,ycursor);
i=1;
}
else if(scorevalue==5)
{
ClearScreen(1,19,78,20);//清楚信息框内容
SetXY(1,19);
printf("Decimal number is more than 1!...input[0-100]");
ClearScreen(xcursor,ycursor,xcursor+len,ycursor);//清除输入的
SetXY(xcursor,ycursor);
i=1;
}
else if(scorevalue==6)
{
ClearScreen(1,19,78,20);//清楚信息框内容
SetXY(1,19);
printf("Decimal is not 0 or 5!...input[0-100]");
ClearScreen(xcursor,ycursor,xcursor+len,ycursor);//清除输入的
SetXY(xcursor,ycursor);
i=1;
}
else if(scorevalue==0)
{
ClearScreen(1,19,78,20);//清楚信息框内容
ClearScreen(xcursor,ycursor,xcursor+len,ycursor);//清除输入的
i=0;
}
return i;
}
//退出或者继续添加选择时候验证
int ChooseCheck(char str[])
{
int i=0;
int len;
int value=0;
RomoveLeftBlank(str);//去左空格
RomoveRightBlank(str);//去右空格
len=strlen(str);
if(len<=0)
value=1;//为空
else
{
for(i=0;i<len;i++)
{
if(!(str[i]=='y' || str[i]=='Y' || str[i]=='n' || str[i] =='N'))
value=2;//非法字符
}
}
return value;
}
/*用于学生信息保存处理
*/
int IsAdd(char choose[],int xcursor,int ycursor)
{
int choosevalue;//接收ChooseCheck()返回值
int i=0;
choosevalue=ChooseCheck(choose);
if(choosevalue==1)
{
ClearScreen(1,19,78,20);//清楚信息框内容
SetXY(1,19);
printf("Your inputed is empty!...Please enter Y or N");
ClearScreen(xcursor+37,ycursor+12,78,ycursor+12);//清除输入的
SetXY(xcursor+37,ycursor+12);
i=1;
}
else if(choosevalue==2)
{
ClearScreen(1,19,78,20);//清楚信息框内容
SetXY(1,19);
printf("Your inputed contains invalid character!...Please enter Y or N");
ClearScreen(xcursor+37,ycursor+12,78,ycursor+12);//清除输入的
SetXY(xcursor+37,ycursor+12);
i=1;
}
else if(choosevalue==0)
{
ClearScreen(1,19,78,20);//清楚信息框内容
i=0;
}
return i;
}
//提示是否退出系统处理
int IsExit(char choose[],int xcursor,int ycursor)
{
int choosevalue;//接收ChooseCheck()返回值
int i=0;
choosevalue=ChooseCheck(choose);
if(choosevalue==1)
{
ClearScreen(1,19,78,20);//清楚信息框内容
SetXY(1,19);
printf("Your inputed is empty!... Please enter Y or N");
ClearScreen(xcursor,ycursor,78,ycursor);//清除输入的
SetXY(xcursor,ycursor);
i=1;
}
else if(choosevalue==2)
{
ClearScreen(1,19,78,20);//清楚信息框内容
SetXY(1,19);
printf("Your inputed contains invalid character!...Please enter Y or N");
ClearScreen(xcursor,ycursor,78,ycursor);//清除输入的
SetXY(xcursor,ycursor);
i=1;
}
else if(choosevalue==0)
{
ClearScreen(1,19,78,20);//清楚信息框内容
i=0;
}
return i;
}
//通用错误信息提示
void ShowMessge(char str[])
{
SetXY(1,19);
printf("%s",str);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -