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

📄 main.cpp

📁 连接到数据库(sql和access)
💻 CPP
📖 第 1 页 / 共 5 页
字号:
							 Find[1]=1;
							 Find[2]=10;
							 if(find(Find,temp[0],temp[0],all).studenthead!=NULL)
							 {
								 printf("\n该%s被%s表引用,不能删除,请重新输入!\n\n",row_txt[n][1],b_txt[Find[1]]);
								 flag=1;
							 }
							 Find[1]=7;
							 Find[2]=1;
							 if(find(Find,temp[0],temp[0],all).projecthead!=NULL)
							 {
								 printf("\n该%s被%s表引用,不能删除,请重新输入!\n\n",row_txt[n][1],b_txt[Find[1]]);
								 flag=1;
							 }
						 Find[1]=n;
						 delete_sys(n,find(Find,temp[0],temp[0],all),all);
						 break;
					 }
				 case 5:
					 {

							 Find[1]=2;
							 Find[2]=8;
							 if(find(Find,temp[0],temp[0],all).teacherhead!=NULL)
							 {
								 printf("\n该%s被%s表引用,不能删除,请重新输入!\n\n",row_txt[n][1],b_txt[Find[1]]);
								 flag=1;
							 }
							 Find[1]=3;
							 Find[2]=7;
							 if(find(Find,temp[0],temp[0],all).coursehead!=NULL)
							 {
								 printf("\n该%s被%s表引用,不能删除,请重新输入!\n\n",row_txt[n][1],b_txt[Find[1]]);
								 flag=1;
							 }
							 Find[1]=4;
							 Find[2]=5;
							 if(find(Find,temp[0],temp[0],all).specialityhead!=NULL)
							 {
								 printf("\n该%s被%s表引用,不能删除,请重新输入!\n\n",row_txt[n][1],b_txt[Find[1]]);
								 flag=1;
							 }
							 Find[1]=6;
							 Find[2]=7;
							 if(find(Find,temp[0],temp[0],all).classhead!=NULL)
							 {
								 printf("\n该%s被%s表引用,不能删除,请重新输入!\n\n",row_txt[n][1],b_txt[Find[1]]);
								 flag=1;
							 }
							 Find[1]=8;
							 Find[2]=2;
							 if(find(Find,temp[0],temp[0],all).registerhead!=NULL)
							 {
								 printf("\n该%s被%s表引用,不能删除,请重新输入!\n\n",row_txt[n][1],b_txt[Find[1]]);
								 flag=1;
							 }
						 Find[1]=n;
						 delete_sys(n,find(Find,temp[0],temp[0],all),all);
						 break;
					 }
				 case 6:
					 {
							 Find[1]=1;
							 Find[2]=11;
							 if(find(Find,temp[0],temp[0],all).studenthead!=NULL)
							 {
								 printf("\n该%s被%s表引用,不能删除,请重新输入!\n\n",row_txt[n][1],b_txt[Find[1]]);
								 flag=1;
							 }
						 Find[1]=n;
						 delete_sys(n,find(Find,temp[0],temp[0],all),all);
						 break;
					 }
				 case 7:
					 {	
						 Find[1]=n;
						 delete_sys(n,find(Find,temp[0],temp[1],all),all);
						 sprintf(between," %s=%s%s%s AND ",row_num[n][1],ch1,temp[0],ch1);
						 sprintf(temp[0]," %s=%s%s%s",row_num[n][2],ch1,temp[1],ch1);
						 strcat(between,temp[0]);
						 break;
					 }
				 case 8:
					 {	
							 Find[1]=12;
							 Find[2]=1;
							 if(find(Find,temp[0],temp[0],all).logonhead!=NULL)
							 {
								 printf("\n该%s被%s表引用,不能删除,请重新输入!\n\n",row_txt[n][1],b_txt[Find[1]]);
								 flag=1;
							 }
						 Find[1]=n;
						 delete_sys(n,find(Find,temp[0],temp[0],all),all);
						 break;
					 }
				 case 9:
					 {	
						 Find[1]=n;
						 delete_sys(n,find(Find,temp[0],temp[1],all),all);
						 sprintf(between," %s=%s%s%s AND ",row_num[n][1],ch1,temp[0],ch1);
						 sprintf(temp[0]," %s=%s%s%s",row_num[n][2],ch1,temp[1],ch1);
						 strcat(between,temp[0]);
						 break;
					 }
				 case 10:
					 {
						 Find[1]=n;
						 delete_sys(n,find(Find,temp[0],temp[1],all),all);
						 sprintf(between," %s=%s%s%s AND ",row_num[n][1],ch1,temp[0],ch1);
						 sprintf(temp[0]," %s=%s%s%s",row_num[n][2],ch1,temp[1],ch1);
						 strcat(between,temp[0]);
						 break;
					 }
				 case 11:
					 {	
						 Find[1]=n;
						 delete_sys(n,find(Find,temp[0],temp[1],all),all);
						 sprintf(between," %s=%s%s%s AND ",row_num[n][1],ch1,temp[0],ch1);
						 sprintf(temp[0]," %s=%s%s%s",row_num[n][4],ch1,temp[1],ch1);
						 strcat(between,temp[0]);
						 break;
					 }
				 case 12:
					 {	
						 Find[1]=n;
						 delete_sys(n,find(Find,temp[0],temp[1],all),all);
						 sprintf(between," %s=%s%s%s AND ",row_num[n][1],ch1,temp[0],ch1);
						 sprintf(temp[0]," %s=%s%s%s",row_num[n][2],ch1,temp[1],ch1);
						 strcat(between,temp[0]);
						 break;
					 }
				 case 13:
					 {	
							 Find[1]=11;
							 Find[2]=1;
							 if(find(Find,temp[0],temp[0],all).joinactivityhead!=NULL)
							 {
								 printf("\n该%s被%s表引用,不能删除,请重新输入!\n\n",row_txt[n][1],b_txt[Find[1]]);
								 flag=1;
							 }
						 Find[1]=n;
						 delete_sys(n,find(Find,temp[0],temp[0],all),all);
						 break;
					 }
				 case 14:
					 {	
							 Find[1]=1;
							 Find[2]=12;
							 if(find(Find,temp[0],temp[0],all).studenthead!=NULL)
							 {
								 printf("\n该%s被%s表引用,不能删除,请重新输入!\n\n",row_txt[n][1],b_txt[Find[1]]);
								 flag=1;
							 }
						 Find[1]=n;
						 //在链表中删除数据
						 delete_sys(n,find(Find,temp[0],temp[0],all),all);
						 break;
					 }
				 default:break;
				 }
				 if(flag==0)
				 {
					 printf("\n稍等……\n");
					 //删除数据库中记录
					 if(n==7||n==9||n==10||n==11||n==12)
					 {
						 sprintf(cmd,"DELETE FROM  %s WHERE %s",row_num[n][0],between);
					 }
					 else
					 {
						 sprintf(cmd,"DELETE FROM  %s WHERE %s=%s%s%s",row_num[n][0],row_num[n][1],ch1,temp[0],ch1);
					 }
					 ExecuteSQL(cmd);
					 printf("成功删除1条记录!\n\n");
				 }
				 sprintf(between,"\0");
				 flag=0;
				 system("pause");
				 break;
			 }
		 case 3:
			 {
	
				 for(i=2;i<=m;i++)
				 {
					 //不显示主键
					 if(n==11&&i==m)
						 break;
					 if(i==2&&(n==7||n==9||n==10||n==12))
						 continue;
					 printf("%d.%s  ",i,row_txt[n][i]);
				 }
				 do
				 {
					 printf("\n\n请选择:");
					 i=Force();
				 }while(i<2||i>m);
				 j[1]=n;
				 j[2]=2;
				 Find[1]=n;
				 Find[2]=0;
				 //修改链表
				 //记录主键
				 tmp=Input(j,1,all);
				 strcpy(between,tmp.str1);
				 if(n==7||n==9||n==10||n==12)
				 {
					 sprintf(between," %s=%s%s%s AND ",row_num[n][1],ch1,tmp.str1,ch1);
					 sprintf(temp[1]," %s=%s%s%s",row_num[n][2],ch1,tmp.str2,ch1);
					 strcat(between,temp[1]);

					 strcpy(temp[0],tmp.str1);
					 strcpy(temp[1],tmp.str2);
				 }
				 if(n==11)
				 {
					 sprintf(between," %s=%s%s%s AND ",row_num[n][1],ch1,tmp.str1,ch1);
					 sprintf(temp[1]," %s=%s%s%s",row_num[n][4],ch1,tmp.str2,ch1);
					 strcat(between,temp[1]);

					 strcpy(temp[0],tmp.str1);
					 strcpy(temp[1],tmp.str2);
				 }
				 //其他属性
			     tmp=Input(j,i,all);
                 strcpy(temp[2],tmp.str1);
				 //修改学生表
				 if(n==1)
				 {
					 receive.studenthead=find(Find,between,between,all).studenthead;
					 switch(i)
					 {

					 case 2:strcpy(receive.studenthead->SN,tmp.str1);break;
					 case 3:strcpy(receive.studenthead->S_SEX,tmp.str1);break;
					 case 4:strcpy(receive.studenthead->S_BIRTHDAY,tmp.str1);break;
					 case 5:strcpy(receive.studenthead->S_DATE,tmp.str1);break;
					 case 6:strcpy(receive.studenthead->S_SCHOOL,tmp.str1);break;
					 case 7:receive.studenthead->S_GRADE=atoi(tmp.str1);break;
					 case 8:strcpy(receive.studenthead->S_PHONE,tmp.str1);break;
					 case 9:strcpy(receive.studenthead->S_ADDRESS,tmp.str1);break;
					 case 10:strcpy(receive.studenthead->SP_NO,tmp.str1);break;
					 case 11:strcpy(receive.studenthead->CNO,tmp.str1);break;
					 case 12:strcpy(receive.studenthead->CH_NO,tmp.str1);break;
					 default:break;
					 }
				 }
					 //修改教师表
					 if(n==2)
					 {
						 receive.teacherhead=find(Find,between,between,all).teacherhead;
						 switch(i)
						 {
						 case 2:strcpy(receive.teacherhead->TN,tmp.str1);break;
						 case 3:strcpy(receive.teacherhead->T_SEX,tmp.str1);break;
						 case 4:strcpy(receive.teacherhead->T_PROF,tmp.str1);break;
						 case 5:strcpy(receive.teacherhead->T_BIRTHDAY,tmp.str1);break;
						 case 6:strcpy(receive.teacherhead->T_DATE,tmp.str1);break;
						 case 7:receive.teacherhead->T_SALARY=atoi(tmp.str1);break;
						 case 8:strcpy(receive.teacherhead->DNO,tmp.str1);break;
						 default:break;
						 }
					 }
					 //修改课程表
					 if(n==3)
					 {
						 receive.coursehead=find(Find,between,between,all).coursehead;
						 switch(i)
						 {
						 case 2:strcpy(receive.coursehead->CO_N,tmp.str1);break;
						 case 3:receive.coursehead->CO_T_TIME=atoi(tmp.str1);break;
						 case 4:receive.coursehead->CO_E_TIME=atoi(tmp.str1);break;
						 case 5:receive.coursehead->CO_S=atoi(tmp.str1);break;
						 case 6:strcpy(receive.coursehead->CO_BOOK,tmp.str1);break;
						 case 7:strcpy(receive.coursehead->DNO,tmp.str1);break;
						 default:break;
						 }
					 }
					 //修改专业表
					 if(n==4)
					 {
						 receive.specialityhead=find(Find,between,between,all).specialityhead;
						 switch(i)
						 {
						 case 2:strcpy(receive.specialityhead->SP_N,tmp.str1);break;
						 case 3:strcpy(receive.specialityhead->SP_DATE,tmp.str1);break;
						 case 4:receive.specialityhead->SP_NUM=atoi(tmp.str1);break;
						 case 5:strcpy(receive.specialityhead->DNO,tmp.str1);break;
						 default:break;
						 }
					 }
					 //修改院系表
					 if(n==5)
					 {
						 receive.departmenthead=find(Find,between,between,all).departmenthead;
						 switch(i)
						 {
						 case 2:strcpy(receive.departmenthead->DN,tmp.str1);break;
						 case 3:strcpy(receive.departmenthead->D_DATE,tmp.str1);break;
						 case 4:strcpy(receive.departmenthead->D_HEAD,tmp.str1);break;
						 case 5:strcpy(receive.departmenthead->D_ADDRESS,tmp.str1);break;
						 case 6:strcpy(receive.departmenthead->D_PHONE,tmp.str1);break;
						 default:break;
						 }
					 }
					 //修改班级表
					 if(n==6)
					 {
						 receive.classhead=find(Find,between,between,all).classhead;
						 switch(i)
						 {
						 case 2:strcpy(receive.classhead->CN,tmp.str1);break;
						 case 3:strcpy(receive.classhead->C_DATE,tmp.str1);break;
						 case 4:strcpy(receive.classhead->C_CLASSROOM,tmp.str1);break;
						 case 5:receive.classhead->C_NUM=atoi(tmp.str1);break;
						 case 6:strcpy(receive.classhead->TNO,tmp.str1);break;
						 case 7:strcpy(receive.classhead->DNO,tmp.str1);break;
						 default:break;
						 }
					 }
					 //修改教学计划表
					 if(n==7)
					 {
						 receive.projecthead=find(Find,temp[0],temp[1],all).projecthead;
						 switch(i)
						 {
						 case 3:strcpy(receive.projecthead->CLASS,tmp.str1);break;
						 default:break;
						 }
					 }
					 //修改入校报到表
					 if(n==8)
					 {
						 receive.registerhead=find(Find,between,between,all).registerhead;
						 switch(i)
						 {
						 case 2:strcpy(receive.registerhead->DNO,tmp.str1);break;
						 case 3:receive.registerhead->R_COST=atoi(tmp.str1);break;
						 default:break;
						 }
					 }
					 //修改选修表
					 if(n==9)
					 {
						 receive.schead=find(Find,temp[0],temp[1],all).schead;
						 switch(i)
						 {
						 case 3:strcpy(receive.schead->SC_CLASS,tmp.str1);break;
						 case 4:receive.schead->SC_GRADE=atoi(tmp.str1);break;
						 case 5:strcpy(receive.schead->TNO,tmp.str1);break;
						 case 6:strcpy(receive.schead->SC_DATE,tmp.str1);break;
						 default:break;
						 }
					 }
					 //修改讲授表
					 if(n==10)
					 {
						 receive.tchead=find(Find,temp[0],temp[1],all).tchead;
						 switch(i)
						 {
						 case 3:strcpy(receive.tchead->TC_T_DATETIME,tmp.str1);break;
						 case 4:strcpy(receive.tchead->TC_T_ADDRESS,tmp.str1);break;
						 case 5:strcpy(receive.tchead->TC_E_DATETIME,tmp.str1);break;
						 case 6:strcpy(receive.tchead->TC_E_ADDRESS,tmp.str1);break;
						 default:break;
						 }
					 }
					 
					 //修改参加活动表
					 if(n==11)
					 {
						 receive.joinactivityhead=find(Find,temp[0],temp[1],all).joinactivityhead;
						 switch(i)
						 {
						 case 2:receive.joinactivityhead->J_GRADE=atoi(tmp.str1);break;
						 case 3:strcpy(receive.joinactivityhead->J_OTHER,tmp.str1);break;
						 default:break;
						 }
					 }
					 
					 //修改登记表
					 if(n==12)
					 {
						 receive.logonhead=find(Find,temp[0],temp[1],all).logonhead;
						 switch(i)
						 {
						 case 3:strcpy(receive.logonhead->L_DATE,tmp.str1);break;
						 default:break;
						 }
					 }
					 //修改学校活动表
					 if(n==13)
					 {
						 receive.activityhead=find(Find,between,between,all).activityhead;
						 switch(i)
						 {
						 case 2:strcpy(receive.activityhead->AN,tmp.str1);break;
						 case 3:strcpy(receive.activityhead->A_DATE,tmp.str1);break;
						 default:break;
						 }
					 }
					 //修改寝室表
					 if(n==14)
					 {
						 receive.chamberhead=find(Find,between,between,all).chamberhead;
						 switch(i)
						 {
						 case 2:strcpy(receive.chamberhead->CH_ADDRESS,tmp.str1);break;
						 case 3:receive.chamberhead->CH_NUM=atoi(tmp.str1);break;
						 default:break;
						 }
					 }

				 printf("\n稍等……\n");
				 //修改数据库中记录
				 if(n==7||n==9||n==10||n==11||n==12)
				 {
					 sprintf(cmd,"UPDATE  %s SET %s=%s%s%s WHERE %s",row_num[n][0],row_num[n][i],ch1,temp[2],ch1,between);
				 }
				 else
				 {
					 sprintf(cmd,"UPDATE  %s SET %s=%s%s%s WHERE %s=%s%s%s",row_num[n][0],row_num[n][i],ch1,temp[2],ch1,row_num[n][1],ch1,between,ch1);
				 }
				 ExecuteSQL(cmd);
				 printf("成功修改1条记录!\n\n");
				 sprintf(between,"\0");
				 system("pause");
				 break;
			 }

		 default:;
		 }
	 }while(quit!=1);
}

/*-----------------------------------------------------------------*
 *函数:  SelectTABLE()                                             *
 *参数:  整型,字符串,表结构指针                                   *
 *作用:  从表中读取数据                                            *
 *返回: 无                                                        *
 *-----------------------------------------------------------------*/
void SelectTABLE(int choice,char select[50],sys *all)
{
	
	int i=1;
	_variant_t  var;
	_ConnectionPtr pConn("ADODB.Connection");
	pConn->ConnectionTimeout=5;

	//建立.udl文件后打开可得到
	try
	{    
	pConn->Open(db[0],"","",adConnectUnspecified);

	_RecordsetPtr pRs("ADODB.Recordset");
	pRs->Open(select,_variant_t(pConn,true),adOpenStatic,adLockOptimistic,adCmdText);	
	switch(choice)
	{
	//从学生表中读取数据
	case 1:
		{
			STUDENT *p,*q;
			q=all->studenthead;			
			while(!pRs->EndOfFile)
			{
				i=1;
				p=(STUDENT *)malloc(sizeof(STUDENT));
				p->next=NULL;

				var=pRs->GetCollect(row_num[choice][i]);
				i++;
				if(var.vt!=VT_NULL)//判断表中的属性值是否为NULL
				{
					sprintf(p->SNO,"%s",(char *)_bstr_t(var));
				}

				var=pRs->GetCollect(row_num[choice][i]);
				i++;
				if(var.vt!=VT_NULL)
				{
					sprintf(p->SN,"%s",(char *)_bstr_t(var));
				}

				var=pRs->GetCollect(row_num[choice][i]);
				i++;
				if(var.vt!=VT_NULL)
				{
					sprintf(p->S_SEX,"%s",(char *)_bstr_t(var));
				}

⌨️ 快捷键说明

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