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

📄 menu2.cpp

📁 连接到数据库(sql和access)
💻 CPP
📖 第 1 页 / 共 3 页
字号:
#include "menu.h"

/*包含IsDate、Force、Input、delete_sys四个函数*/

/*-----------------------------------------------------------------*
 *函数:  IsDate()                                                  *
 *参数:  字符串,整型 flag为1时判断显示日期的完整模式(1990-01-01)   *
 *作用:  判断日期格式是否标准                                      *
 *返回: 整型                                                      *
 *-----------------------------------------------------------------*/
int IsDate(char temp[15],int flag)
{
	int i;
	int days[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
	char year[10]="";
	char month[10]="";
	char day[10]="";
	for(i=0;i<10;i++)
	{
		if(i<4)
			year[i]=temp[i];
		
		if(4<i&&i<7)
			month[i-5]=temp[i];
		
		if(7<i&&i<10)
			day[i-8]=temp[i];
		

	}
	year[5]='\0';
	month[3]='\0';	
	day[3]='\0';
	if('-'==temp[4]!=1)
	{
		return 0;
	}
	//年月的判断
	if(1900>atoi(year)||atoi(year)>2007||atoi(month)<1||atoi(month)>12)
	{

		return 0;
	}
	//flag控制天的判断
	if(flag==1&&('-'==temp[7]!=1||atoi(day)<1))
	{
		return 0;
	}
	if(flag==1)
	{
		//闰年天数的判断
		if((atoi(year)%400==0||(atoi(year)%4==0&&atoi(year)%100!=0))&&atoi(day)>29)
		{
			return 0;
		}
		//非闰年天数的判断
		if(!(atoi(year)%400==0||(atoi(year)%4==0&&atoi(year)%100!=0))&&atoi(day)>days[atoi(month)])
		{	
			return 0;
		}
	}
	return 1;

}
/*-----------------------------------------------------------------*
 *函数:  Force()                                                   *
 *参数:  无                                                        *
 *作用:  通过isdigit(),atoi()函数强制用户输入整型数                *
 *返回: 整型                                                      *
 *-----------------------------------------------------------------*/

int Force(void)
{
     unsigned int i=1;
	 int num;
     char ch[11];
	 while(1)
	 {
		 scanf("%s",ch);
		 if(ch[0]=='-'||isdigit(ch[0])!=0)
		 {
			for(;i<strlen(ch);i++)
				if(isdigit(ch[i])==0) /*判断是否为数字0-9 头文件ctype.h*/
					break;
			if(i+1>strlen(ch)&&!(ch[0]=='-'&&i==1))
			{
				num=atoi(ch);/*atoi()函数将字符转化为整型*/
				return num;
			}
			else
				printf("\n\n请输入数字:");
		 }
		 else
			 printf("\n\n请输入数字:");
	 }
}

/*------------------------------------------------------------------*
 *函数:  Input()                                                    *
 *参数:  整型,n[1]为表名的下标,i为表中列名号,表结构指针             *
 *作用:  对输入进行判断和处理                                       *
 *返回: 无                                                         *
 *------------------------------------------------------------------*/
sys Input(int n[3],int i,sys *all)
{
	int flag=0,table=n[1];//flag提示错误
	int grade,Find[3]={0,table,0};
	char temp[3][31];//最多有两个属性作为主键输入
    sys tmp;
	extern char row_txt[15][13][15];
	//学生表
	if(table==1)
	{
		//限制学号
		if(i==1)
		{
			do	
			{
				printf("请输入%s(10位):",row_txt[table][i]);
				scanf("%s",temp[1]);
				if(n[2]==1&&find(Find,temp[1],temp[1],all).studenthead!=NULL)
				{
					printf("\n该学号已存在,请重新输入!\n\n");
					continue;
				}
				if(n[2]==2&&find(Find,temp[1],temp[1],all).studenthead==NULL)
				{
					printf("\n该学号不存在,请重新输入!\n\n");
					continue;
				}
				if(strlen(temp[1])!=10)
				{
					printf("\n学号位数错误,请重新输入!\n\n");
					continue;
				}
				break;
			}while(1);
		}
        //姓名
		if(i==2)
		{
			printf("请输入%s:",row_txt[table][i]);
			scanf("%s",temp[1]);
		}
		//限制性别
		if(i==3)
		{
			do
			{
				if(flag==1)
				{
					printf("\n输入错误,请重新输入!\n\n");
				}
				printf("请输入%s(男/女):",row_txt[table][i]);
				scanf("%s",temp[1]);
				flag=1;
			}while(strlen(temp[1])!=2 || (strcmp("男",temp[1])!=0&&strcmp("女",temp[1])!=0));
		}
		//限制出生日期
		if(i==4)
		{
			do
			{
				if(flag==1)
				{
					printf("\n输入错误,请重新输入!\n\n");
				}
				printf("请输入%s(例如:1990-01-01):",row_txt[table][i]);
				scanf("%s",temp[1]);
				flag=1;
			}while(strlen(temp[1])!=10 || !(IsDate(temp[1],1)));
		}	
		//限制入校日期
		if(i==5)
		{
			do
			{
				if(flag==1)
				{
					printf("\n输入错误,请重新输入!\n\n");
				}
				printf("请输入%s(例如:1990-01):",row_txt[table][i]);
				scanf("%s",temp[1]);
				flag=1;
			}while(strlen(temp[1])!=7 || !(IsDate(temp[1],0)));
		}
		//毕业中学
        if(i==6)
		{
			printf("请输入%s:",row_txt[table][i]);
			scanf("%s",temp[1]);
		}
		//限制分数
		if(i==7)
		{
			do
			{
				if(flag==1)
				{
					printf("\n输入错误,请重新输入!\n\n");
				}
				printf("请输入%s(0-750):",row_txt[table][i]);
				grade=Force();
				flag=1;
			}while(grade<0 ||grade>750);
			//将整型转换为字符型
			itoa(grade,temp[1],10);
		}
		//联系方式
        if(i==8)
		{
			printf("请输入%s:",row_txt[table][i]);
			scanf("%s",temp[1]);
		}
		//住址
        if(i==9)
		{
			printf("请输入%s:",row_txt[table][i]);
			scanf("%s",temp[1]);
		}
		//专业编号限制
		if(i==10)
		{
			do
			{
				printf("请输入%s(2位):",row_txt[table][i]);
				scanf("%s",temp[1]);
				Find[1]=4;
				if(find(Find,temp[1],temp[1],all).specialityhead==NULL)
				{
					printf("\n该专业号不存在,请重新输入!\n\n");
					continue;
				}
				if(strlen(temp[1])!=2)
				{
					printf("\n专业号位数错误,请重新输入!\n\n");
					continue;
				}
				break;

			}while(1);
		}
		//班号限制
		if(i==11)
		{
			do
			{
				printf("请输入%s(10位):",row_txt[table][i]);
				scanf("%s",temp[1]);
				Find[1]=6;
				if(find(Find,temp[1],temp[1],all).classhead==NULL)
				{
					printf("\n该班号不存在,请重新输入!\n\n");
					continue;
				}
				if(strlen(temp[1])!=10)
				{
					printf("\n班号位数错误,请重新输入!\n\n");
					continue;
				}
				break;
			}while(1);
		}
		//寝室号限制
		if(i==12)
		{
			do							 
			{
				printf("请输入%s(5位):",row_txt[table][i]);
				scanf("%s",temp[1]);
				Find[1]=14;
				if(find(Find,temp[1],temp[1],all).chamberhead==NULL)
				{
					printf("\n该寝室号不存在,请重新输入!\n\n");
					continue;
				}
				if(strlen(temp[1])!=5)
				{
					printf("\n寝室号位数错误,请重新输入!\n\n");
					continue;
				}
				break;
			}while(1);
		}
	}
	//插入教师表
	if(table==2)
	{
		//限制教师号
		if(i==1)
		{
			do
			{
				printf("请输入%s(10位):",row_txt[table][i]);
				scanf("%s",temp[1]);
				if(n[2]==1&&find(Find,temp[1],temp[1],all).teacherhead!=NULL)
				{
					printf("\n该教师号已存在,请重新输入!\n\n");
					continue;
				}
				if(n[2]==2&&find(Find,temp[1],temp[1],all).teacherhead==NULL)
				{
					printf("\n该教师号不存在,请重新输入!\n\n");
					continue;
				}
				if(strlen(temp[1])!=10)
				{
					printf("\n教师号位数错误,请重新输入!\n\n");
					continue;
				}
				break;
			}while(1);
		}
        //姓名
		if(i==2)
		{
			printf("请输入%s:",row_txt[table][i]);
			scanf("%s",temp[1]);
		}
		//限制性别
		if(i==3)
		{
			do
			{
				if(flag==1)
				{
					printf("\n输入错误,请重新输入!\n\n");
				}
				printf("请输入%s(男/女):",row_txt[table][i]);
				scanf("%s",temp[1]);
				flag=1;
			}while(strlen(temp[1])!=2 || (strcmp("男",temp[1])!=0&&strcmp("女",temp[1])!=0));
		}
		//职称
		if(i==4)
		{
			printf("请输入%s:",row_txt[table][i]);
			scanf("%s",temp[1]);
		}
		//限制出生日期
		if(i==5)
		{
			do
			{
				if(flag==1)
				{
					printf("\n输入错误,请重新输入!\n\n");
				}
				printf("请输入%s例如:1990-01-01):",row_txt[table][i]);
				scanf("%s",temp[1]);
				flag=1;
			}while(strlen(temp[1])!=10 || !(IsDate(temp[1],1)));
		}	
		//限制工作日期
		if(i==6)
		{
			do
			{
				if(flag==1)
				{
					printf("\n输入错误,请重新输入!\n\n");
				}
				printf("请输入%s(例如:1990-01):",row_txt[table][i]);
				scanf("%s",temp[1]);
				flag=1;
			}while(strlen(temp[1])!=7 || !(IsDate(temp[1],0)));
		}
		//限制基本工资
		if(i==7)
		{
			do
			{
				if(flag==1)
				{
					printf("\n输入错误,请重新输入!\n\n");
				}
				printf("请输入%s(0-30000):",row_txt[table][i]);
				grade=Force();
				flag=1;
			}while(grade<0 ||grade>30000);
			//将整型转换为字符型
			itoa(grade,temp[1],10);
		}
        //院系号限制
		if(i==8)
		{
			do
			{
				printf("请输入%s(2位):",row_txt[table][i]);
				scanf("%s",temp[1]);
				Find[1]=5;
				if(find(Find,temp[1],temp[1],all).departmenthead==NULL)
				{
					printf("\n该院系号不存在,请重新输入!\n\n");
					continue;
				}
				if(strlen(temp[1])!=2)
				{
					printf("\n院系号位数错误,请重新输入!\n\n");
					continue;
				}
				break;
			}while(1);
		}


	}
	//插入课程表
	if(table==3)
	{
		//限制课程号
		if(i==1)
		{
			do
			{
				printf("请输入%s(10位):",row_txt[table][i]);
				scanf("%s",temp[1]);
				if(n[2]==1&&find(Find,temp[1],temp[1],all).coursehead!=NULL)
				{
					printf("\n该课程号已存在,请重新输入!\n\n");
					continue;
				}
				if(n[2]==2&&find(Find,temp[1],temp[1],all).coursehead==NULL)
				{
					printf("\n该课程号不存在,请重新输入!\n\n");
					continue;
				}
				if(strlen(temp[1])!=10)
				{
					printf("\n课程号位数错误,请重新输入!\n\n");
					continue;
				}
				break;
			}while(1);
		}
		//课程名
		if(i==2)
		{
			printf("请输入%s:",row_txt[table][i]);
			scanf("%s",temp[1]);
		}
		//限制讲课学时或实验学时
		if(i==3)
		{
			do
			{
				if(flag==1)
				{
					printf("\n输入错误,请重新输入!\n\n");
				}
				printf("请输入%s(0-120):",row_txt[table][i]);
				grade=Force();
				flag=1;
			}while(grade<0 ||grade>120);
			//将整型转换为字符型
			itoa(grade,temp[1],10);
		}
		//限制实验学时
		if(i==4)
		{
			do
			{
				if(flag==1)
				{
					printf("\n输入错误,请重新输入!\n\n");
				}
				printf("请输入%s(0-120):",row_txt[table][i]);
				grade=Force();
				flag=1;
			}while(grade<0 ||grade>120);
			//将整型转换为字符型
			itoa(grade,temp[1],10);
		}
		//限制学分
		if(i==5)
		{
			do
			{
				if(flag==1)
				{
					printf("\n输入错误,请重新输入!\n\n");
				}
				printf("请输入%s(0-10):",row_txt[table][i]);
				grade=Force();
				flag=1;
			}while(grade<0 ||grade>10);
			//将整型转换为字符型
			itoa(grade,temp[1],10);
		}
		//选用教材
		if(i==6)
		{
			printf("请输入%s:",row_txt[table][i]);
			scanf("%s",temp[1]);
		}
        //院系号限制
		if(i==7)
		{
			do
			{
				printf("请输入%s(2位):",row_txt[table][i]);
				scanf("%s",temp[1]);
				Find[1]=5;
				if(find(Find,temp[1],temp[1],all).departmenthead==NULL)
				{
					printf("\n该院系号不存在,请重新输入!\n\n");
					continue;
				}
				if(strlen(temp[1])!=2)
				{
					printf("\n院系号位数错误,请重新输入!\n\n");
					continue;
				}
				break;
			}while(1);
		}

 	 }
	 //插入专业表
	 if(table==4)
	 {
		 //限制专业编号
		 if(i==1)
		 {
			 do			
			 {
				 printf("请输入%s(2位):",row_txt[table][i]);
				 scanf("%s",temp[1]);
				 if(n[2]==1&&find(Find,temp[1],temp[1],all).specialityhead!=NULL)
				 {
					 printf("\n该专业号已存在,请重新输入!\n\n");
					 continue;
				 }
				 if(n[2]==2&&find(Find,temp[1],temp[1],all).specialityhead==NULL)
				 {
					 printf("\n该专业号不存在,请重新输入!\n\n");
					 continue;
				 }
				 if(strlen(temp[1])!=2)
				 {
					 printf("\n专业号位数错误,请重新输入!\n\n");
					 continue;
				 }
				 break;
			 }while(1);
		 }
		 //专业名
		 if(i==2)
		 {
			 printf("请输入%s:",row_txt[table][i]);
			 scanf("%s",temp[1]);
		 }
		 //限制创办年份
		 if(i==3)

⌨️ 快捷键说明

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