利用c++设计学生成绩管理系统,使用mysql.h头文件,要求系统包含录入学生学号,姓名,语文,数学,英语成绩,查询学生成绩,打印成绩表,按总成绩排序并打印成绩表,退出系统功能
时间: 2023-08-06 17:05:44 浏览: 215
这是一个比较复杂的项目,需要使用C++和MySQL数据库进行开发。首先,需要安装MySQL数据库并在C++中引入mysql.h头文件。
以下是一个简单的学生成绩管理系统的代码示例:
```c++
#include <iostream>
#include <mysql.h>
using namespace std;
// 定义一个结构体存储学生信息
struct student {
string id, name;
double score[3], sum;
};
int main() {
// 连接数据库
MYSQL mysql;
mysql_init(&mysql);
mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, "utf8"); // 设置编码
mysql_real_connect(&mysql, "localhost", "root", "password", "testdb", 3306, NULL, 0);
if (!mysql_ping(&mysql)) {
cout << "数据库连接成功!" << endl;
} else {
cout << "数据库连接失败!" << endl;
return -1;
}
// 创建表
string query = "CREATE TABLE IF NOT EXISTS scores (id varchar(20), name varchar(20), chinese double, math double, english double, sum double)";
mysql_query(&mysql, query.c_str());
// 录入学生信息
student stu[100];
int n = 0;
while (true) {
cout << "请输入学生信息(学号 姓名 语文成绩 数学成绩 英语成绩):" << endl;
cin >> stu[n].id >> stu[n].name >> stu[n].score[0] >> stu[n].score[1] >> stu[n].score[2];
stu[n].sum = stu[n].score[0] + stu[n].score[1] + stu[n].score[2];
// 将学生信息插入数据库
query = "INSERT INTO scores (id, name, chinese, math, english, sum) VALUES ('" + stu[n].id + "', '" + stu[n].name + "', " + to_string(stu[n].score[0]) + ", " + to_string(stu[n].score[1]) + ", " + to_string(stu[n].score[2]) + ", " + to_string(stu[n].sum) + ")";
mysql_query(&mysql, query.c_str());
n++;
cout << "是否继续录入?(Y/N)" << endl;
char c;
cin >> c;
if (c == 'N' || c == 'n') {
break;
}
}
// 查询学生信息
cout << "请输入要查询的学生信息(学号/姓名):" << endl;
string keyword;
cin >> keyword;
query = "SELECT * FROM scores WHERE id='" + keyword + "' OR name='" + keyword + "'";
mysql_query(&mysql, query.c_str());
MYSQL_RES *result = mysql_store_result(&mysql);
int num_fields = mysql_num_fields(result);
MYSQL_ROW row;
while ((row = mysql_fetch_row(result))) {
for (int i = 0; i < num_fields; i++) {
cout << row[i] << "\t";
}
cout << endl;
}
mysql_free_result(result);
// 按总成绩排序并打印成绩表
query = "SELECT * FROM scores ORDER BY sum DESC";
mysql_query(&mysql, query.c_str());
result = mysql_store_result(&mysql);
while ((row = mysql_fetch_row(result))) {
for (int i = 0; i < num_fields; i++) {
cout << row[i] << "\t";
}
cout << endl;
}
mysql_free_result(result);
// 关闭数据库连接
mysql_close(&mysql);
return 0;
}
```
在该示例代码中,我们首先连接了MySQL数据库,并创建了一个名为“scores”的表来存储学生成绩信息。然后,我们使用一个结构体来存储学生信息,可以通过循环来录入学生信息并将其插入到数据库中。接着,我们可以通过输入学号或姓名来查询学生信息,并按总成绩排序并打印成绩表。
需要注意的是,这只是一个简单的示例代码,实际开发中需要更加完善的错误处理和安全性检查。
阅读全文