课程设计要求用c语言连接数据库建立成绩管理系统,在网上找了很久的资料才写了出来,为了以后的同学能够少走弯路,写了这篇文章!
其中MySQL的安装参考了陈子青大佬的这篇文章特此感谢,还要感谢陈子青技术交流群里群友的指导和帮助: C/C++访问MySQL数据库_c++链接数据库陈子青_陈子青 - See的博客-CSDN博客
代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <mysql.h>
#define HOST "localhost"
#define USER "xxxxx" //自己的用户名
#define PASS "xxxxxx" //自己的密码
#define DB "xxxxx" //数据库名
int main()
{
MYSQL* conn;
MYSQL_RES* res;
MYSQL_ROW row;
conn = mysql_init(NULL);
int x = 0, id = 0, i = 0, id2 = 0,chengji=0;
char name1[100], c_id[100], name2[100], c_id2[100];
char sql_insert[200];
if (!mysql_real_connect(conn, HOST, USER, PASS, DB, 0, NULL, 0))
{
fprintf(stderr, "%s\n", mysql_error(conn));
exit(1);
}
while (1)
{
sql_insert[200];
name1[100];
c_id[100];
name2[100];
printf("----------------\n");
printf("1.添加数据\n");
printf("2.更新数据\n");
printf("3.删除数据\n");
printf("4.查询数据\n");
printf("5.顺序输出数据\n");
printf("6.退出\n");
printf("----------------\n");
printf("请输入(1-6)\n");
scanf_s("%d", &x);
getchar();
switch (x)
{
case 1:
printf("请输入学生的姓名:\n");
gets_s(name1, 40);
printf("请输入学生的班级:\n");
gets_s(c_id, 40);
printf("请输入学生的学号:\n");
scanf_s("%d", &id);
printf("请输入学生的成绩:\n");
scanf_s("%d", &chengji);
sprintf_s(sql_insert, sizeof(sql_insert), "%s%d,'%s','%s',%d%s", "insert INTO students(student_id,student_name,class_id,chengji) VALUES(", id, name1, c_id,chengji, ")");
mysql_query(conn, sql_insert);
printf("录入成功!\n");
break;
case 2:
printf("2.1更新姓名\n");
printf("2.2更新学号\n");
printf("2.3更新班级\n");
printf("2.4更新成绩\n");
printf("请输入1-4\n");
scanf_s("%d", &x);
getchar();
switch (x)
{
case 1:
printf("请输入原学生的姓名:\n");
gets_s(name1, 40);
printf("请输入改后学生的姓名:\n");
gets_s(name2, 40);
sprintf_s(sql_insert, sizeof(sql_insert), "%s'%s' %s'%s'", "UPDATE students SET student_name=", name2, "WHERE student_name=", name1);
mysql_query(conn, sql_insert);
printf("更新成功!\n");
break;
case 2:
printf("请输入原学生的学号:\n");
scanf_s("%d", &id);
printf("请输入改后学生的学号:\n");
scanf_s("%d", &id2);
sprintf_s(sql_insert, sizeof(sql_insert), "%s%d %s%d", "UPDATE students SET student_id=", id2, "WHERE student_id=", id);
mysql_query(conn, sql_insert);
printf("更新成功!\n");
break;
case 3:
printf("请输入学生的姓名:\n");
gets_s(name2, 40);
printf("请输入改后学生的班级:\n");
gets_s(c_id2, 40);
sprintf_s(sql_insert, sizeof(sql_insert), "%s'%s' %s'%s'", "UPDATE students SET class_id=", c_id2, "WHERE student_name=", name2);
mysql_query(conn, sql_insert);
printf("更新成功!\n");
break;
case 4:
printf("请输入学生的姓名:\n");
gets_s(name2, 40);
printf("请输入改后学生的成绩:\n");
scanf_s("%d", &chengji);
sprintf_s(sql_insert, sizeof(sql_insert), "%s%d %s'%s'", "UPDATE students SET chengji=",chengji, "WHERE student_name=", name2);
mysql_query(conn, sql_insert);
printf("更新成功!\n");
break;
}
break;
case 3:
printf("请输入要删除的学生的姓名:\n");
gets_s(name2, 40);
sprintf_s(sql_insert, sizeof(sql_insert), "%s'%s'", "delete from students where student_name = ", name2);
mysql_query(conn, sql_insert);
printf("删除成功!\n");
break;
case 4:
printf("请输入查询的学生姓名:");
gets_s(name2, 40);
sprintf_s(sql_insert, sizeof(sql_insert), "%s'%s'", "SELECT * FROM students where student_name=", name2);
mysql_query(conn, sql_insert);
res = mysql_use_result(conn);
printf("学号\t姓名\t班级\t成绩\n");
while ((row = mysql_fetch_row(res)) != NULL)
{
printf("%s\t%s\t%s\t%s\n", row[0], row[1], row[2], row[3]);
}
break;
case 5:
sprintf_s(sql_insert, sizeof(sql_insert), "%s", "SELECT * FROM students ");
mysql_query(conn, sql_insert);
res = mysql_use_result(conn);
printf("学号\t姓名\t班级\t成绩\n");
while ((row = mysql_fetch_row(res)) != NULL)
{
printf("%s\t%s\t%s\t%s\n", row[0], row[1], row[2],row[3]);
}
break;
case 6:
exit(0);
break;
}
}
mysql_free_result(res);
mysql_close(conn);
return 0;
}