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

📄 main.cpp

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

#import "msado15.dll" no_namespace rename("EOF","EndOfFile")

/*主菜单函数的声明*/
	void Menu(sys *all);

/*子菜单函数的声明*/
	void Menu1(sys *all); 
	char db[2][200];//连接到数据库,\",\'

	char a_txt[4][10]={{"退出程序"},{"ACCESS"},{"SQL"}};

	void Menu2(sys *all); 

    char b_txt[15][10]={{"返回"},{"学生"},{"教师"},{"课程"},{"专业"},
	{"院系"},{"班级"},{"教学计划"},{"入学报到"},{"选修"},
	{"讲授"},{"参加活动"},{"登记"},{"学校活动"},{"寝室"}};  
	
	char row_num[15][13][15]={
	{{""}},
	{{"STUDENT"},{"SNO"},{"SN"},{"S_SEX"},{"S_BIRTHDAY"},{"S_DATE"},
	{"S_SCHOOL"},{"S_GRADE"},{"S_PHONE"},{"S_ADDRESS"},{"SP_NO"},{"CNO"},{"CH_NO"}},
	{{"TEACHER"},{"TNO"},{"TN"},{"T_SEX"},{"T_PROF"},{"T_BIRTHDAY"},{"T_DATE"},{"T_SALARY"},{"DNO"}},
	{{"COURSE"},{"CO_NO"},{"CO_N"},{"CO_T_TIME"},{"CO_E_TIME"},{"CO_S"},{"CO_BOOK"},{"DNO"}},
	{{"SPECIALITY"},{"SP_NO"},{"SP_N"},{"SP_DATE"},{"SP_NUM"},{"DNO"}},	
	{{"DEPARTMENT"},{"DNO"},{"DN"},{"D_DATE"},{"D_HEAD"},{"D_ADDRESS"},{"D_PHONE"}},
	{{"CLASS"},{"CNO"},{"CN"},{"C_DATE"},{"C_CLASSROOM"},{"C_NUM"},{"TNO"},{"DNO"}},
	{{"PROJECT"},{"SP_NO"},{"CO_NO"},{"CLASS"}},
	{{"REGISTER"},{"RNO"},{"DNO"},{"R_COST"}},
	{{"SC"},{"SNO"},{"CO_NO"},{"SC_CLASS"},{"SC_GRADE"},{"TNO"},{"SC_DATE"}},
	{{"TC"},{"TNO"},{"CO_NO"},{"TC_T_DATETIME"},{"TC_T_ADDRESS"},{"TC_E_DATETIME"},{"TC_E_ADDRESS"}},
	{{"JOINACTIVITY"},{"ANO"},{"J_GRADE"},{"J_OTHER"},{"SNO"}},
	{{"LOGON"},{"RNO"},{"SNO"},{"L_DATE"}},
	{{"ACTIVITY"},{"ANO"},{"AN"},{"A_DATE"}},
	{{"CHAMBER"},{"CH_NO"},{"CH_ADDRESS"},{"CH_NUM"}},
	};

	char row_txt[15][13][15]={
	{{""}},
	{{"学生表"},{"学号"},{"姓名"},{"性别"},{"出生日期"},{"入校日期"},
	{"毕业中学"},{"高考成绩"},{"联系方式"},{"住址"},{"专业号"},{"班号"},{"寝室号"}},
	{{"教师表"},{"教师号"},{"姓名"},{"性别"},{"职称"},{"出生日期"},{"工作年月"},{"基本工资"},{"院系号"}},
	{{"课程表"},{"课程号"},{"课程名"},{"讲课学时"},{"实验学时"},{"学分"},{"选用教材"},{"开课院系号"}},
	{{"专业表"},{"专业编号"},{"专业名"},{"创办年份"},{"学生规模"},{"院系名"}},	
	{{"院系表"},{"系编号"},{"系名"},{"成立年月"},{"系主任"},{"系办公室地点"},{"电话"}},
	{{"班级表"},{"班号"},{"班级名称"},{"创建年月"},{"自修教室"},{"人数"},{"班主任教师号"},{"院系号"}},
	{{"教学计划表"},{"专业编号"},{"课程号"},{"课程属性"}},
	{{"入学报到表"},{"编号(学期)"},{"系号"},{"学费"}},
	{{"选修表"},{"学号"},{"课程号"},{"考试类别"},{"考试成绩"},{"教师号"},{"选修年月"}},
	{{"讲授表"},{"教师号"},{"课程号"},{"授课时间"},{"授课地点"},{"实验时间"},{"实验地点"}},
	{{"参加活动表"},{"编号"},{"成绩"},{"获奖情况"},{"学号"}},
	{{"登记表"},{"编号(学期)"},{"学号"},{"入校时间"}},
	{{"活动表"},{"编号"},{"活动名称"},{"举行时间"}},
	{{"寝室表"},{"寝室号"},{"寝室地址"},{"人数"}},
	};
	
	void Menu3(sys *all);
    char c_txt[15][10]={{"返回"},{"学生"},{"教师"},{"课程"},{"专业"},{"院系"},{"班级"},{"教学计划"},
	{"入学报到"},{"选修"},{"讲授"},{"参加活动"},{"登记"},{"学校活动"},{"寝室"}};

	void Menu4(sys *all);
    char d_txt[8][10]={{"返回"},{"学生"},{"教师"},{"课程"},{"院系"},{"班级"},{"参加活动"},{"新生报到"}};
    TRANSA action[MAXSIZE];        //全局变量保存事件信息
	int actnum=1;                  //保存事件数目
	int registtime;                //保存注册时间单位(分)

/*执行SQL命令系列函数*/
	void SelectTABLE(int choice,char select[50],sys *all);
	void SQLCOMMAND(int n,int m,sys *all);
    void ExecuteSQL(char cmd[100]);


	
int main(void)
{
	system("color f9");
	printf("\n初始化,请稍等……\n\n");
	//初始化COM
    CoInitialize(NULL);
	sys all;
	//初始化学生表
	all.studenthead=(STUDENT *)malloc(sizeof(STUDENT));
	all.studenthead->next=NULL;

	//初始化教师表
	all.teacherhead=(TEACHER *)malloc(sizeof(TEACHER));
	all.teacherhead->next=NULL;

	//初始化课程表
	all.coursehead=(COURSE *)malloc(sizeof(COURSE));
	all.coursehead->next=NULL;

	//初始化专业表
	all.specialityhead=(SPECIALITY *)malloc(sizeof(SPECIALITY));
	all.specialityhead->next=NULL;

	//初始化院系表
	all.departmenthead=(DEPARTMENT *)malloc(sizeof(DEPARTMENT));
	all.departmenthead->next=NULL;

	//初始化班级表
	all.classhead=(CLASS *)malloc(sizeof(CLASS));
	all.classhead->next=NULL;

	//初始化教学计划表
	all.projecthead=(PROJECT *)malloc(sizeof(PROJECT));
	all.projecthead->next=NULL;

	//初始化入校报到表
	all.registerhead=(REGISTER *)malloc(sizeof(REGISTER));
	all.registerhead->next=NULL;

	//初始化选修表
	all.schead=(SC *)malloc(sizeof(SC));
	all.schead->next=NULL;

	//初始化讲授表
	all.tchead=(TC *)malloc(sizeof(TC));
	all.tchead->next=NULL;

	//初始化参加活动表
	all.joinactivityhead=(JOINACTIVITY *)malloc(sizeof(JOINACTIVITY));
	all.joinactivityhead->next=NULL;

	//初始化登记表
	all.logonhead=(LOGON *)malloc(sizeof(LOGON));
	all.logonhead->next=NULL;

	//初始化学校活动表
	all.activityhead=(ACTIVITY *)malloc(sizeof(ACTIVITY));
	all.activityhead->next=NULL;

	//初始化寝室表
	all.chamberhead=(CHAMBER *)malloc(sizeof(CHAMBER));
	all.chamberhead->next=NULL;

	while(1)
	{
		system("cls");
		Menu(&all);
	}
	return 0;
}

/*-----------------------------------------------------------------*
 *函数:  Menu()                                                    *
 *参数:  表结构指针                                                *
 *作用:  显示系统各子菜单                                          *
 *返回: 无                                                        *
 *-----------------------------------------------------------------*/
void Menu(sys *all)
{
	char choice;
	if(all->studenthead->next==NULL||all->teacherhead->next==NULL||all->coursehead->next==NULL)
	{
		Menu1(all);
	}
	system("cls");
	printf("\n\n\t***************************学生综合管理系统**********************\n\n\n\t");
	printf(" a.读取数据       ");
	printf(" b.表的维护       ");
	printf(" c.数据查询       ");
	printf(" d.数据统计       ");
	printf("\n\n\t*****************************************************************\n\n");
	printf("\n\n请选择(a-d):");
	choice=getch();
	switch(choice)
	{
	case 'a':Menu1(all);break;
	case 'b':Menu2(all);break;
	case 'c':Menu3(all);break;
	case 'd':Menu4(all);break;
	default:break;
	}
}

/*-----------------------------------------------------------------*
 *函数:  Menu1()                                                   *
 *参数:  表结构指针                                                *
 *作用:  显示数据处理菜单                                          *
 *返回: 无                                                        *
 *-----------------------------------------------------------------*/
void Menu1(sys *all)
{
	int i,choice;
	char select[50];
	char db_info[2][50];
	system("cls");
	printf("a.读取数据");
	printf("\n\n");
	for(i=0;i<3;i++)
	{
		printf("\t%d.%s\n",i,a_txt[i]);
	}
	printf("\n\n请选择(0-2):");
	choice=Force();
	while(choice<0||choice>2)
	{
		printf("\n\n输入错误,请重输:");
		choice=Force();
	}
	switch(choice)
	{
	case 0:
		{
			printf("\n\n\n\t\t\t谢谢使用!           06信科2班程亮、廖翅飞\n\n");
			system("pause");
			exit(0);
		}
	case 1:
		{
			printf("\n\n请输入Access数据库名:");
			scanf("%s",db_info[1]);
			printf("\n\n您输入的Access数据库为%s.mdb\n\n",db_info[1]);
			sprintf(db[0],"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s.mdb;Persist Security Info=False",db_info[1]);
			sprintf(db[1],"Access");
			printf("\n\n正在读取数据,请等待……\n\n");
			break;
		}
	case 2:
		{
			printf("\n\n请输入SQL服务器名:");
			scanf("%s",db_info[0]);
			printf("\n\n请输入SQL数据库名:");
			scanf("%s",db_info[1]);
			printf("\n\n您输入的SQL服务器名为%s,数据库名为%s\n\n",db_info[0],db_info[1]);
			sprintf(db[0],"Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=%s;Data Source=%s;Persist Security Info=False",db_info[1],db_info[0]);
			sprintf(db[1],"SQL");
			printf("\n\n正在读取数据,请等待……\n\n");
			break;			 
		}
	default:break;
	}

	//读取学生表
	sprintf(select,"Select * From STUDENT");
	SelectTABLE(1,select,all);

	//读取教师表
	sprintf(select,"Select * From TEACHER");
	SelectTABLE(2,select,all);

	//读取课程表
	sprintf(select,"Select * From COURSE");
	SelectTABLE(3,select,all);

	//读取专业表
	sprintf(select,"Select * From SPECIALITY");
	SelectTABLE(4,select,all);

	//初始化院系表
	sprintf(select,"Select * From DEPARTMENT");
	SelectTABLE(5,select,all);

	//读取班级表
	sprintf(select,"Select * From CLASS");
	SelectTABLE(6,select,all);

	//读取教学计划表
	sprintf(select,"Select * From PROJECT");
	SelectTABLE(7,select,all);

	//读取入校报到表
	sprintf(select,"Select * From REGISTER");
	SelectTABLE(8,select,all);

	//读取选修表
	sprintf(select,"Select * From SC");
	SelectTABLE(9,select,all);

	//读取讲授表
	sprintf(select,"Select * From TC");
	SelectTABLE(10,select,all);

	//读取参加活动表
	sprintf(select,"Select * From JOINACTIVITY");
	SelectTABLE(11,select,all);

	//读取登记表
	sprintf(select,"Select * From LOGON");
	SelectTABLE(12,select,all);

	//读取学校活动表
	sprintf(select,"Select * From ACTIVITY");
	SelectTABLE(13,select,all);

	//读取寝室表
	sprintf(select,"Select * From CHAMBER");
	SelectTABLE(14,select,all);
}

/*-----------------------------------------------------------------*
 *函数:  Menu2()                                                   *
 *参数:  表结构指针                                                *
 *作用:  显示表的维护菜单                                          *
 *返回: 无                                                        *
 *-----------------------------------------------------------------*/    
void Menu2(sys *all)
{
	int i,quit=0,choice;
	 do
	 {
		 system("cls");
		 printf("b.表的维护");
		 printf("\n\n");
		 for(i=0;i<15;i++)
			 printf("\t%d.%s\n",i,b_txt[i]);
		 printf("\n\n请选择(0-14):");
		 choice=Force();
		 while(choice<0||choice>14)
		 {
			 printf("\n\n输入错误,请重输:");
			 choice=Force();
		 }
		 switch(choice)
		 {
		 case 0:
			 {
				 quit=1;
				 break;
			 }
		 case 1:{
			      SQLCOMMAND(choice,12,all);
				  break;
				}
		 case 2:{
			      SQLCOMMAND(choice,8,all);
				  break;
				}
		 case 3:{
			      SQLCOMMAND(choice,7,all);
				  break;
				}
		 case 4:{
			      SQLCOMMAND(choice,5,all);
				  break;
				}
		 case 5:{
			      SQLCOMMAND(choice,6,all);
				  break;
				}
		 case 6:{
			      SQLCOMMAND(choice,7,all);
				  break;
				}
		 case 7:{
			      SQLCOMMAND(choice,3,all);
				  break;
				}
		 case 8:{
			      SQLCOMMAND(choice,3,all);
				  break;
				}
		 case 9:{
			      SQLCOMMAND(choice,6,all);
				  break;
				}
		 case 10:{
			      SQLCOMMAND(choice,6,all);
				  break;
				}
		 case 11:{
			      SQLCOMMAND(choice,4,all);
				  break;
				}
		 case 12:{
			      SQLCOMMAND(choice,3,all);
				  break;
				}
		 case 13:{
			      SQLCOMMAND(choice,3,all);
				  break;
				}
		 case 14:{
			      SQLCOMMAND(choice,3,all);
				  break;
				}
		 default:break;
		 }
	 }while(quit==0);
}

/*------------------------------------------------------------------*
 *函数:  SQLCOMMAND()                                               *
 *参数:  表结构指针,整型,n为表名的下标,m为表中列名的个数 (row_num中)*
 *作用:  调用相关SQL语句命令                                        *
 *返回: 无                                                         *
 *------------------------------------------------------------------*/
void SQLCOMMAND(int n,int m,sys *all)
{
	int i=1,quit=0,choice,j[3]={0,n,0},flag=0;//j传递主键输入的方式,flag判断能否被删除
	int Find[3]={0,n,0};//Find[1]传递查找主键,Find[2]传递查找外键
	char ch1[2]="\"";//access字符
	char ch2[3]=",";//sql,access字符
	char temp[3][50];
	char between[100]="";//连接成sql中的字符串部分
	char cmd[200];//sql命令字符串
    sys tmp;//输入记录
	sys receive;//插入,修改记录
	if(strcmp(db[1],"SQL")==0)
	{
		ch1[0]='\'';//sql字符
		ch1[1]='\0';
	}
    do
	 {

		 system("cls");
         printf("\n正在%s表中操作……\n\n",b_txt[n]);
		 printf("1.插入新记录\n");
         printf("2.删除已有记录\n");
         printf("3.修改已有记录\n");
		 printf("0.返回\n\n");
		 printf("\n\n请选择(0-3):");
		 choice=Force();
		 while(choice<0||choice>3)
		 {
			 printf("\n\n输入错误,请重输:");
			 choice=Force();
		 }
		 switch(choice)
		 {
		 case 0:
			 {
				 quit=1;
				 break;
			 }
		 case 1:
			 {
				 //开辟空间
				 switch(n)
				 {
				 case 1:
					 {	
						 receive.studenthead=(STUDENT *)malloc(sizeof(STUDENT));
						 break;
					 }
				 case 2:
					 {	
						 receive.teacherhead=(TEACHER *)malloc(sizeof(TEACHER));
						 break;
					 }
				 case 3:
					 {	
						 receive.coursehead=(COURSE *)malloc(sizeof(COURSE));
						 break;
					 }
				 case 4:
					 {	
						 receive.specialityhead=(SPECIALITY *)malloc(sizeof(SPECIALITY));
						 break;
					 }
				 case 5:
					 {	
						 receive.departmenthead=(DEPARTMENT *)malloc(sizeof(DEPARTMENT));
						 break;
					 }
				 case 6:
					 {	
						 receive.classhead=(CLASS  *)malloc(sizeof(CLASS));
						 break;
					 }
				 case 7:
					 {	
						 receive.projecthead=(PROJECT  *)malloc(sizeof(PROJECT));
						 break;
					 }
				 case 8:
					 {	
						 receive.registerhead=(REGISTER *)malloc(sizeof(REGISTER));
						 break;
					 }
				 case 9:
					 {	
						 receive.schead=(SC *)malloc(sizeof(SC));
						 break;
					 }
				 case 10:
					 {	
						 receive.tchead=(TC *)malloc(sizeof(TC));
						 break;
					 }
				 case 11:
					 {	
						 receive.joinactivityhead=(JOINACTIVITY *)malloc(sizeof(JOINACTIVITY));
						 break;
					 }
				 case 12:
					 {	

⌨️ 快捷键说明

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