#define _CRT_SECURE_NO_WARNINGS
#include <mysql.h>
#include <iostream>
#include <string>
#include<stdio.h>
//#include <mysql.h>
// 全局变量保持不变
CHAR Course_name[128];
CHAR Student_cName[128], Student_cClass[128];
int Course_iNum = 0, Course_credit = 0;
int Student_iNum = 0, Student_age = 0;
int CourseSelection_id = 0, CourseSelection_St_id = 0, CourseSelection_Course_id = 0;
MYSQL *conn;
MYSQL_RES *result;
MYSQL_ROW row;
char Course_cTitle[128];
using namespace std;
//错误处理宏
#define CHECK_MYSQL_ERROR(conn, msg) \
if (mysql_errno(conn) != 0) { \
cerr << msg << ": " << mysql_error(conn) << endl; \
mysql_close(conn); \
return 1; \
}
int ljmysql() {
// 初始化MySQL连接对象
MYSQL* conn = mysql_init(nullptr);
if (!conn) {
cerr << "初始化MySQL失败: 内存分配错误" << endl;
return 1;
}
// 连接数据库(替换为你的实际信息)
const char* host = "localhost";
const char* user = "root"; // 用户名
const char* pass = "123456";// 密码
const char* dbname = "jxgl"; // 数据库名
unsigned int port = 3306; // 端口号
conn = mysql_real_connect(conn, host, user, pass, dbname, port, nullptr, 0);
if (!conn) {
cerr << "连接失败: " << mysql_error(conn) << endl;
mysql_close(conn);
return 1;
}
cout << "成功连接到MYSQL8.0数据库" << endl;
if (mysql_query(conn, "SET NAMES utf8mb4") != 0) {
CHECK_MYSQL_ERROR(conn, "设置字符编码失败");
}
system("pause"); // 暂停查看输出
return 0;
}
void ejcd(int m) {
//int ShowRecord(int DbSource, SQLCHAR * cSELECTString);
void search(int iTopMenu);
void insert(int iTopMenu);
void edit(int DBSource);
void delete1(int DBSource);
}
void search(int iTopMenu) {
}
void insert(int source) {
char current[500];
int result;
switch (source)
{case 1:
//插入课程
printf_s("-------课程插入---------\n");
printf_s("请输入课程名称:");
scanf("%s",&Course_name);
printf_s("请输入课程学分:");
scanf("%ld", &Course_credit);
break;
case 2:
printf("-------学生插入---------\n");
printf("请输入学生姓名:");
scanf("%s", Student_cName);
printf("请输入学生班级:");
scanf("%s", Student_cClass);
printf("请输入学生年龄:");
scanf_s("%d", &Student_age);
break;
case 3:
// 显示所有学生
ShowRecord(2, "SELECT * FROM Student");
printf("请选择选课学生编号:");
scanf("%d", &iSt_id);
// 验证学生是否存在
snprintf(query, sizeof(query), "SELECT * FROM Student WHERE iNum = %d", iSt_id);
if (mysql_query(conn, query)) {
fprintf(stderr, "查询失败: %s\n", mysql_error(conn));
return;
}
result = mysql_store_result(conn);
if (!result) {
fprintf(stderr, "结果集为空\n");
return;
}
int rowCount = mysql_num_rows(result);
mysql_free_result(result);
if (rowCount == 1) {
// 显示所有课程
ShowRecord(1, "SELECT * FROM Course");
printf("请选择课程编号:");
scanf("%d", &iCo_id);
// 构建选课插入语句
snprintf(query, sizeof(query),
"INSERT INTO CourseSelection (Course_id, Student_id) VALUES (%d, %d)",
iCo_id, iSt_id);
}
else {
system("cls");
printf("输入学生编号不正确!按任意键继续...\n");
system("pause");
return;
}
break;
default:
break;
}
}
int showrecord(int source, char* query) {
if (mysql_query(conn, query)) {
printf("查询失败: %s\n", mysql_error(conn));
return 0;
}
result = mysql_store_result(conn);
if (!result) {
printf("结果集为空\n");
return 0;
}
int num_fields = mysql_num_fields(result);
int rowc = 0;
switch (source)
{
case 1://课程表
printf("|-------------------------------------------------------|\n");
printf("|\t学号\t|\t课程名称\t|\t学时\t|\t学分\t|\t课程类型\t|\n");
printf("|-------------------------------------------------------|\n");
while (row = mysql_fetch_row(result))
{
printf("|\t%s\t", row[0] ? row[0] : "NULL");
printf("|%-10s\t", row[1] ? row[1] : "NULL");
printf("|%-10s\t", row[2] ? row[2] : "NULL");
printf("|%-20s\t", row[3] ? row[3] : "NULL");
printf("|\t%s\t|", row[4] ? row[4] : "NULL");
printf("\n|---------------------------------------------------------------------------------------|\n");
rowc++;
}
default:
case 2://学生表
printf("|---------------------------------------------------------------|\n");
printf("|\t编号\t|\t姓名\t|\t性别\t|\t出生日期\t|\t院系号\t|\t地址\t|\n");
printf("|---------------------------------------------------------------|\n");
while ((row = mysql_fetch_row(result))) {
printf("|\t%s\t", row[0] ? row[0] : "NULL");
printf("|%-10s\t", row[1] ? row[1] : "NULL");
printf("|%-10s\t", row[2] ? row[2] : "NULL");
printf("|\t%s\t|", row[3] ? row[3] : "NULL");
printf("|\t%s\t|", row[4] ? row[4] : "NULL");
printf("|\t%s\t|", row[5] ? row[5] : "NULL");
printf("\n|---------------------------------------------------------------|\n");
rowc++;
case 3: // 选课
printf("|---------------------------------------------------------------------------------------|\n");
printf("|\t编号\t|\t姓名\t|\t班级\t|\t课程名称\t|\t学分\t|\n");
printf("|---------------------------------------------------------------------------------------|\n");
while ((row = mysql_fetch_row(result))) {
printf("|\t%s\t", row[0] ? row[0] : "NULL");
printf("|%-10s\t", row[1] ? row[1] : "NULL");
printf("|%-10s\t", row[3] ? row[3] : "NULL"); // 班级在第4列
printf("|%-20s\t", row[2] ? row[2] : "NULL"); // 课程名称在第3列
printf("|\t%s\t|", row[4] ? row[4] : "NULL"); // 学分在第5列
printf("\n|---------------------------------------------------------------------------------------|\n");
rowc++;
}
break;
}
printf("一共找到 %d 条记录\n", rowc);
mysql_free_result(result);
return rowc;
}
int main() {
int m;
ejcd(m);
ljmysql();
finsh();
do {
//一级菜单
system("cls");//会将上一次运行输出的内容给清除掉,屏幕上只显示本次输出的结果
printf("\t\t\t---------------------------------\t\n");
printf("\t\t\t|\t课程选修管理系统!\t|\n");
printf("\t\t\t|\t 欢迎使用!\t\t|\n");
printf("\t\t\t---------------------------------\n");
printf("\n\n");
printf("\t\t\t-------------主菜单--------------\t\n");
printf("\t\t\t|\t \t\t|\n");
printf("\t\t\t|\t1.课程管理\t\t|\n");
printf("\t\t\t|\t \t\t|\n");
printf("\t\t\t|\t2.学生管理\t\t|\n");
printf("\t\t\t|\t \t\t|\n");
printf("\t\t\t|\t3.选课管理\t\t|\n");
printf("\t\t\t|\t \t\t|\n");
printf("\t\t\t|\t0.退出系统\t\t|\n");
printf("\t\t\t---------------------------------\t\n");
printf("\n选择功能前面的数字进入功能(0~3):\n");
scanf_s("%d", &m);
return 0;
}
}
}
最新发布