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

📄 function.c

📁 软件的名称:学生信息管理系统 软件的功能:登录功能、主菜单功能、学生信息录入功能、学生记录的排序功能、查询和删除功能、学生信息打印功能、记录保存功能、记录读取功能、分数统计报表功能和退出功能等。
💻 C
📖 第 1 页 / 共 3 页
字号:
		{
			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 + -