c语言连接MySQL成绩管理系统

课程设计要求用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;
}
  • 9
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
以下是使用C语言连接数据库实现的简单成绩管理系统示例: 1. 首先,需要安装MySQL数据库并创建一张表,用于存储学生的成绩信息。表结构可以如下: ```sql CREATE TABLE student_score ( id INT(11) NOT NULL AUTO_INCREMENT, // 学生ID,自增长 name VARCHAR(20) NOT NULL, // 学生姓名 math_score INT(11) DEFAULT 0, // 数学成绩 english_score INT(11) DEFAULT 0, // 英语成绩 PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; ``` 2. 在C语言中使用MySQL提供的API连接数据库,并执行相关操作。以下是示例代码: ```c #include <stdio.h> #include <stdlib.h> #include <mysql.h> int main() { MYSQL *conn; // MySQL连接 MYSQL_RES *res; // MySQL查询结果集 MYSQL_ROW row; // MySQL行 char *server = "localhost"; // MySQL服务器地址 char *user = "root"; // MySQL用户名 char *password = "123456"; // MySQL密码 char *database = "test"; // MySQL数据库名 conn = mysql_init(NULL); // 初始化MySQL连接 if (!mysql_real_connect(conn, server, user, password, database, 0, NULL, 0)) { printf("Connection error: %s\n", mysql_error(conn)); exit(1); } // 插入一条学生记录 if (mysql_query(conn, "INSERT INTO student_score(name, math_score, english_score) VALUES('张三', 90, 80)")) { printf("Insert error: %s\n", mysql_error(conn)); } else { printf("Insert success!\n"); } // 查询所有学生的成绩 if (mysql_query(conn, "SELECT * FROM student_score")) { printf("Query error: %s\n", mysql_error(conn)); } else { res = mysql_use_result(conn); printf("ID\tName\tMath Score\tEnglish Score\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]); } mysql_free_result(res); } mysql_close(conn); // 关闭MySQL连接 return 0; } ``` 在上述代码中,首先初始化MySQL连接,并使用mysql_real_connect()函数连接MySQL服务器。然后使用mysql_query()函数执行SQL语句,插入一条学生记录。接着使用mysql_query()函数查询所有学生的成绩,并使用mysql_use_result()函数获取结果集,使用mysql_fetch_row()函数逐行读取结果并输出。最后使用mysql_close()函数关闭MySQL连接。 注意:以上示例代码仅供参考,实际开发中需要根据具体需求进行修改和完善。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值