c语言成绩查询 c语言成绩查询系统编程

C语言成绩查询系统的设计与实现

在当前的教育环境中,成绩管理是学校日常管理的重要组成部分,传统的成绩管理方式主要依赖于人工操作,这种方式不仅效率低下,而且容易出错,随着计算机技术的发展,越来越多的学校开始采用计算机进行成绩管理,本文将介绍一种基于C语言的成绩查询系统,该系统可以有效地提高成绩管理的效率和准确性。

系统设计

本系统主要包括以下几个模块:用户登录模块、成绩查询模块、成绩修改模块和数据管理模块。

1、用户登录模块:该模块主要用于验证用户的合法性,用户需要输入用户名和密码才能进入系统,如果用户名和密码正确,用户将被允许进入系统;否则,用户将被拒绝访问。

2、成绩查询模块:该模块主要用于查询学生的成绩,用户可以通过输入学生的学号或姓名来查询学生的成绩,系统将返回学生的所有课程的成绩。

3、成绩修改模块:该模块主要用于修改学生的成绩,用户可以通过输入学生的学号或姓名来查询学生的成绩,然后对成绩进行修改,修改后的成绩将被保存到数据库中。

4、数据管理模块:该模块主要用于管理系统中的数据,包括数据的添加、删除、修改和查询等操作。

系统实现

本系统采用C语言编写,使用MySQL数据库存储数据,以下是部分关键代码的实现。

1、用户登录模块的实现:

#include <stdio.h>
#include <string.h>
#include "mysql.h"
void login() {
    MYSQL *conn;
    MYSQL_RES *res;
    MYSQL_ROW row;
    char user[20];
    char passwd[20];
    printf("请输入用户名:");
    scanf("%s", user);
    printf("请输入密码:");
    scanf("%s", passwd);
    conn = mysql_init(NULL);
    mysql_real_connect(conn, "localhost", user, passwd, "test", 0, NULL, 0);
    if (mysql_query(conn, "select * from users")) {
        printf("Error: %s
", mysql_error(conn));
        return;
    }
    res = mysql_use_result(conn);
    row = mysql_fetch_row(res);
    if (row == NULL) {
        printf("用户名或密码错误!
");
    } else {
        printf("登录成功!
");
    }
    mysql_free_result(res);
    mysql_close(conn);
}

2、成绩查询模块的实现:

void queryScore() {
    MYSQL *conn;
    MYSQL_RES *res;
    MYSQL_ROW row;
    char id[20];
    char name[20];
    printf("请输入学号或姓名:");
    scanf("%s", id);
    conn = mysql_init(NULL);
    mysql_real_connect(conn, "localhost", "root", "root", "test", 0, NULL, 0);
    if (strlen(id) > 6) { // 假设学号为6位数字,姓名长度不限
        sprintf(name, "select * from students where id='%s'", id); // 查询学号为id的学生信息
    } else {
        sprintf(name, "select * from students where name='%s'", id); // 查询姓名为id的学生信息
    }
    if (mysql_query(conn, name)) { // 执行SQL语句,查询学生信息
        printf("Error: %s
", mysql_error(conn)); // 如果出错,输出错误信息并返回
        return;
    } else { // 如果成功,获取查询结果集并输出学生信息
        res = mysql_use_result(conn); // 使用结果集函数获取结果集指针res,指向查询结果的第一行数据之前的位置(即结果集头)
        while ((row = mysql_fetch_row(res)) != NULL) { // 循环遍历结果集,每次取出一行数据,赋值给row指针,直到所有数据都取出为止(即结果集尾)