前言

重点参考前辈们写的优秀文章,这里只做一些的补充

准备

1.MySQL安装
参考链接:https://www.cnblogs.com/xiaokang01/p/12092160.html
安装前注意这一步要勾选Documentation,否则找不到include,lib文件夹,当然你之后运行安装软件再添加下图左边方框最下方的 Documentation也可以

在这里插入图片描述
在这里插入图片描述
2.DEV-C++连接MySQL
参考链接:https://blog.csdn.net/yy64578537/article/details/104372747
值得提一句,如果下载MySQL.DevPak https://sourceforge.net/projects/dev-cpp/files/webupdate/webupdate/
长时间不能响应访问,按照下方操作进行换源。
在这里插入图片描述
在这里插入图片描述

1.基本函数

官网接口函数说明Mysql For C API Function Descriptions:https://dev.mysql.com/doc/c-api/5.7/en/c-api-functions.html
参考链接: https://blog.csdn.net/Mculover666/article/details/105680319

2.数据库的连接

mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, "gbk");//这句话很关键,防止在命令行中中文乱码
#include <stdio.h>
#include <mysql.h>
#include <string.h>
int main(){
	 MYSQL mysql;
	mysql_init(&mysql);
		mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, "gbk");//这句话很关键,防止在命令行中中文乱码
	if(NULL == mysql_real_connect(&mysql,"127.0.0.1","root","password","cesdb",3306,NULL,0))
    {
        printf("MySQL connect fail.\n");
        mysql_close(&mysql);
        return -1;
    }
else 
    printf("MySQL connect success!\n");
     mysql_close(&mysql);
}

3.系统代码实现

//1) 新生入学信息增加,学生信息修改。 
//2) 课程信息维护(增加新课程,修改课程信息,删除没有选课的课程信息)。 
//3) 录入学生成绩,修改学生成绩。 
//4) 按系统计学生的平均成绩、最好成绩、最差成绩、优秀率、不及格人数。 
//5) 按系对学生成绩进行排名,同时显示出学生、课程和成绩信息。 
//6) 输入学号,显示该学生的基本信息和选课信息。 
#include <stdio.h>
#include <mysql.h>
#include <string.h>

void insertintostudent(MYSQL &mysql);
void updatestudent(MYSQL &mysql);
void insertintocourse(MYSQL &mysql); 

void updatecourse(MYSQL &mysql);
void deletefromcourse(MYSQL &mysql);
void insertintosc(MYSQL &mysql);
void updatesc(MYSQL &mysql);
void count(MYSQL &mysql);
void rankingbysdept(MYSQL &mysql);
void selectbysno(MYSQL& mysql);

	MYSQL_RES* res;
	MYSQL_ROW row;
	char sql[150];
int main(){
	 
	MYSQL mysql;
	mysql_init(&mysql);
	mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, "gbk");
	if(NULL == mysql_real_connect(&mysql,"127.0.0.1","root","1010990249","cesdb_u201812975",3306,NULL,0))
    {
        printf("MySQL connect fail.\n");
       
        mysql_close(&mysql);
        return -1;
    }
else 
    printf("MySQL connect sucessed!\n");
    int op=1;
  while(op){
  
//  	char value = 1;
// (void) mysql_init (&mysql);
// mysql_options(&mysql, MYSQL_OPT_RECONNECT, (char *)&value); 
// mysql_ping(&mysql);
	system("cls");	printf("\n\n");
	printf("      Menu for Linear Table On Sequence Structure \n");
	printf("-------------------------------------------------\n");
	printf("    	  1. Insert into student        2. Update student\n");
	printf("    	  3. Insert into course      	4. Update course\n");
	printf("    	  5. Delete from course          \n");
	printf("    	  6. Insert into sc         	7. Update sc\n");
	printf("    	  8. Count AVG,MAX,MIN,EXCELLENT Rate,BELOW60\n");
	printf("    	  9. Ranking by grade\n");
	printf("          10.Query by sno\n"          );
	printf("          0. exit\n"          );
	printf("-------------------------------------------------\n");
	printf("    请选择你的操作[0~10]:");
	scanf("%d",&op);
    switch(op){
    	case 1:{
    		int num;
    		printf("请输入需要增加的人数:");
			scanf("%d",&num);
			while(num){
    		insertintostudent(mysql);
    		printf("\n");
			num--;}
    		system("pause");
			break;
		}
		case 2:{
			updatestudent(mysql);
			system("pause");
			break;
		}
		case 3:{
			int num;
    		printf("请输入需要增加的课程数:");
			scanf("%d",&num);
			while(num){
    		insertintocourse(mysql);
    		printf("\n");
			num--;}
    		system("pause");
			break;
		}
		case 4:{
			updatecourse(mysql);
			system("pause");
			break;
		}
		case 5:{
			deletefromcourse(mysql);
			system("pause");
			break;
		}
		case 6:{
			insertintosc(mysql);
			system("pause");
			break;
		}
		case 7:{
			
			updatesc(mysql);
			system("pause");
			break;
		}
		case 8:{
			count(mysql);
			system("pause");
			break;
		}
		case 9:{
			rankingbysdept(mysql);
			system("pause");
			break;
		}
		case 10:{
			selectbysno(mysql);
			system("pause");
			break;
		}
	} 

     
    
}
mysql_close(&mysql);
}//end of main

//student 数据区 
char sno[20];char sname[20];char ssex[2];int sage;char sdept[10];char scholarship[10];
//courser 数据区
char cno[4]; char cname[40];char cpno[4];int ccredit;
//sc 数据区
char scsno[20]; char sccno[4]; int grade;


//1.insertintostudent
void insertintostudent(MYSQL &mysql){
//	char sno[9];char sname[20];char ssex[2];int sage;char sdept[10];char scholarship[]="否";
	strcpy(scholarship,"否");
    printf("请输入学生的学号:");scanf("%s",sno);
    printf("请输入学生的姓名:");scanf("%s",sname);
    printf("请输入学生的性别:");scanf("%s",ssex);
    printf("请输入学生的年龄:");scanf("%d",&sage);
    printf("请输入学生的院系:");scanf("%s",sdept);
    sprintf(sql,"insert into student values('%s','%s','%s','%d','%s','%s');",sno,sname,ssex,sage,sdept,scholarship);
    if(!mysql_query(&mysql,sql)){
    	printf("新生信息添加成功!\n"); 
	}
	else 	
	{printf("新生信息添加失败!"); 
	fprintf(stderr,"%s\n",mysql_error(&mysql)); 
	} 
    
}
void updatestudent(MYSQL &mysql){


	printf("请输入学生的学号:");scanf("%s",sno);
	
	sprintf(sql,"select sname from student where sno='%s';",sno);
	if(mysql_query(&mysql,sql)) {
		fprintf(stderr,"%s\n",mysql_error(&mysql));
		return ;
	}
	else {
		res=mysql_use_result(&mysql);
		if((row=mysql_fetch_row(res))==NULL) 
		{
			printf("该学号无效!");
			
			return ;
		}
	}
	mysql_free_result(res);
	
	printf("(1)姓名 (2)性别 (3)年龄 (4)院系 (5)奖学金 (0)退出\n");
	int select=1;

	while(select) {
	printf("请输入选择:");scanf("%d",&select);
	switch (select){
		case 1:{
			printf("请输入学生的姓名:");scanf("%s",sname);
			sprintf(sql,"update student set sname='%s' where sno='%s';",sname,sno);
			break;
		}
		case 2:{
			printf("请输入学生的性别:");scanf("%s",ssex);
			sprintf(sql,"update student set ssex='%s' where sno='%s';",ssex,sno);
			break;
		} 
		case 3:{
			printf("请输入学生的年龄:");scanf("%d",&sage);
			sprintf(sql,"update student set sage=%d where sno='%s';",sage,sno);
			break;
		}
		case 4:{
			printf("请输入学生的院系:");scanf("%s",sdept);
			sprintf(sql,"update student set sdept='%s' where sno='%s';",sdept,sno);
			break;
		}
		case 5:{
			printf("请输入学生是否获得奖学金(是/否):");scanf("%s",scholarship);
			sprintf(sql,"update student set sdept='%s' where sno='%s';",scholarship,sno);
			break;
		}
		case 0:{
			
			break;
		}
	}

	if(!mysql_query(&mysql,sql)){
		printf("学生信息修改成功!");
	}
	else {
		printf("学生信息修改失败!");
		fprintf(stderr,"%s\n",mysql_error(&mysql));
		system("pause");
	}
}
	 
}

void insertintocourse(MYSQL &mysql){
	printf("请输入课程号:");scanf("%s",cno);
	printf("请输入课程名:");scanf("%s",cname);
	printf("请输入先修课程:");scanf("%s",cpno);
	printf("请输入课程学分:");scanf("%d",&ccredit);
	sprintf(sql,"insert into course values('%s','%s','%s','%d');",cno,cname,cpno,ccredit);
    if(!mysql_query(&mysql,sql)){
    	printf("课程信息添加成功!\n"); 
	}
	else 	
	{printf("课程信息添加失败!\n"); 
	fprintf(stderr,"%s\n",mysql_error(&mysql)); 
	} 
}
void updatecourse(MYSQL &mysql){
	
	char newcname[40];
	printf("请输入课程名:\n");scanf("%s",cname);
	sprintf(sql,"select * from course where cname='%s';",cname);
	if(mysql_query(&mysql,sql)) {
		fprintf(stderr,"%s\n",mysql_error(&mysql));
		return ;
	}
	else {
		res=mysql_use_result(&mysql);
		if((row=mysql_fetch_row(res))==NULL) 
		{
			printf("系统中无该课程!");
		
			return ;
		}
	}
	mysql_free_result(res);
	
	printf("(1)课程号 (2)课程名 (3)先修课 (4)学分 (0)退出\n");
	int select=1;

	while(select) {
	printf("请输入选择:");scanf("%d",&select);
	switch (select){
		case 1:{
			printf("请输入课程号:");scanf("%s",cno);
			sprintf(sql,"update course set cno='%s' where cname='%s';",cno,cname);
			break;
		}
		case 2:{
			printf("请输入课程名:");scanf("%s",newcname);
				sprintf(sql,"update course set cname='%s' where cname='%s';",newcname,cname);
			break;
		} 
		case 3:{
			printf("请输入先修课程:");scanf("%d",&cpno);
			sprintf(sql,"update course set sage='%s' where cname='%s';",cpno,cname);
			break;
		}
		case 4:{
			printf("请输入学分:");scanf("%d",&ccredit);
			sprintf(sql,"update course set ccredit= %d where cname='%s';",ccredit,cname);
			break;
		}
		
		case 0:{
			
			return ;
		}
	}

	if(!mysql_query(&mysql,sql)){
		printf("课程信息修改成功!\n");
	}
	else {
		printf("课程信息修改失败!\n");
		fprintf(stderr,"%s\n",mysql_error(&mysql));
	
	}
}
	
}

void deletefromcourse(MYSQL &mysql){
	strcpy(sql,"delete from course where cno not in(select cno from sc);");
	if(!mysql_query(&mysql,sql)){
		printf("课程信息删除成功!\n");
	}
	else {
		printf("课程信息删除失败!\n");
		fprintf(stderr,"%s\n",mysql_error(&mysql));
	
	}
}

void insertintosc(MYSQL &mysql){
	printf("请输入学号:");scanf("%s",scsno);
	printf("请输入课程号:");scanf("%s",sccno);
	printf("请输入成绩:");scanf("%d",&grade);
	sprintf(sql,"insert into sc values('%s','%s',%d);",scsno,sccno,grade);
    if(!mysql_query(&mysql,sql)){
    	printf("成绩录入成功!\n"); 
	}
	else 	
	{printf("成绩录入失败!"); 
	fprintf(stderr,"%s\n",mysql_error(&mysql)); 
	} 
	
}
void updatesc(MYSQL &mysql){
	printf("请输入学号和课程号:");scanf("%s %s",scsno,sccno);
		sprintf(sql,"select * from sc where sno='%s' and cno='%s';",scsno,sccno);
	if(mysql_query(&mysql,sql)) {
		fprintf(stderr,"%s\n",mysql_error(&mysql));
		return ;
	}
	else {
		res=mysql_use_result(&mysql);
		if((row=mysql_fetch_row(res))==NULL) 
		{
			printf("系统中无该学号和课程对应的成绩!");
			
			return ;
		}
	}
	mysql_free_result(res);
	
	printf("请输入更改后的成绩:");scanf("%d",&grade);
	 sprintf(sql,"update sc set grade=%d where sno='%s' and cno='%s';",grade,scsno,sccno);
	  if(!mysql_query(&mysql,sql)){
    	printf("成绩更新成功!\n"); 
	}
	else 	
	{printf("成绩更新失败!\n"); 
	fprintf(stderr,"%s\n",mysql_error(&mysql)); 
	} 
} 
//统计 
void count(MYSQL &mysql){
//略
	

}

void rankingbysdept(MYSQL &mysql){
	strcpy(sql,"select DISTINCT Sdept from student,sc where student.sno=sc.sno;");
	if(mysql_query(&mysql,sql)){
	fprintf(stderr,"%s\n",mysql_error(&mysql)); 
	return ;
	} 
	MYSQL_RES *res1;
	MYSQL_ROW row1;
	res1=mysql_store_result(&mysql);
	char a[4][9];
	int i=0;
	while((row1=mysql_fetch_row(res1))!=NULL){
		strcpy(a[i],row1[0]);
		i++;
	}
	while(i){
			i--;
	sprintf(sql,"select student.sno,student.sdept,cno,grade from sc,student where sdept='%s' order by grade desc",a[i]);
	if(mysql_query(&mysql,sql)){
	fprintf(stderr,"%s\n",mysql_error(&mysql)); 
	return ;
	}
	MYSQL_RES *res2=mysql_store_result(&mysql);
	MYSQL_ROW row2;
	while((row2=mysql_fetch_row(res2))!=NULL){
	
	printf("%10s %5s %5s %5s\n",row2[0],row2[1],row2[2],row2[3]);
}
mysql_free_result(res2);

}
mysql_free_result(res1);
}
  
void selectbysno(MYSQL& mysql){
		printf("请输入学号:");scanf("%s",sno);
		sprintf(sql,"select distinct student.*,cno from student,sc where student.sno=sc.sno and student.sno='%s'",sno);
		 if(mysql_query(&mysql,sql)){
	fprintf(stderr,"%s\n",mysql_error(&mysql)); 
	return ;
	}
	res=mysql_store_result(&mysql);
	while((row=mysql_fetch_row(res))!=NULL){
	printf("%s %10s %10s %s %s %s %s\n",row[0],row[1],row[2],row[3],row[4],row[5],row[6]);
}
	mysql_free_result(res);
}
Logo

本社区面向用户介绍CSDN开发云部门内部产品使用和产品迭代功能,产品功能迭代和产品建议更透明和便捷

更多推荐