基于C语言和mysql开发的简单学生信息管理系统

开发环境:VS2015,mysql5.几 (忘了),mysql 的gui工具是Navicat。

简介:在C语言中借用mysql 给提供的C/C++API,制作了一个用C语言编写的简单的学生管理系统。在程序中,实现了使用C/C++API完成一般的增删改查操作,通过此程序的练习,初学者可以对mysq常用的C/C++API有一个基本的掌握。

mysql和vs2015连接时的系统设置请参考VS2015连接mySQL数据库
相关C\C++API请参考MySQL C API(5.1参考手册)

参考资料:C语言连接数据库

相关SQL语句建议阅读:The language of SQL初学者指南

全部代码如下:

#include<stdio.h>
#include "my_global.h"
#include"mysql.h"
#include"windows.h"
#include<stdlib.h>

void show();  //显示函数
void show_row();  //显示行
void show_head();  //显示头行
void insert();   //插入数据
void update();  //更新数据
void delet();  //删除数据
void menu();  //菜单

MYSQL my_connection;
MYSQL_RES*res_ptr;
MYSQL_ROW sqlrow;
char query[100];
int main(int argc, char*argv[])
{
	int n;
	mysql_init(&my_connection);  //初始化数据库
	//连接数据库   localhost是本机地址,root是用户名,1993是我数据库密码,student-navicate test是数据库名,3306是端口号
	if (!mysql_real_connect(&my_connection, "localhost", "root", "1993", "student-navicate test", 3306, NULL, 0))
	{
		fprintf(stderr, "Error connecting to datebase:%s", mysql_error(&my_connection));
	}
	else
		puts("Success connect...");
	//设置字符
	if (mysql_set_character_set(&my_connection, "gbk"))
	{
		fprintf(stderr, "错误,%s\n", mysql_error(&my_connection));
	}
	menu();  //菜单列表  
	while (scanf("%d", &n) == 1)
	{
		while (getchar() != '\n')continue;
		switch (n)
		{
		case 1:show();break;  //显示数据
		case 2:insert();break;//插入数据
		case 3:delet();break;//删除
		case 4:update();break;//更新
		default:puts("Bye!");exit(1);//退出
		}
		menu();
	}
	mysql_close(&my_connection);//关闭数据库
	getchar();
	return 0;
}
//显示函数
void show()
{
	int flag = 1;//标记位
	int res;
	res = mysql_query(&my_connection, "SELECT * FROM stu_info");
	if (res)
		fprintf(stderr, "SELECT error:%s\n", mysql_error(&my_connection));
	else
	{
		res_ptr = mysql_use_result(&my_connection);
		if (res_ptr)
		{
			if (flag)//如果是首行,则输出表头
			{
				show_head();
				flag = 0;//标志位归零
			}
			show_row();//输出表中内容
		}
		else
		{
			puts("获取数据错误!!!");
			fprintf(stderr, "Retrive error:%s\n", mysql_error(&my_connection));
		}
		mysql_free_result(res_ptr);  //清空缓存
	}
}
//显示表头
void show_head()
{
	MYSQL_FIELD *field_ptr;
	printf("Column details: \n");
	while ((field_ptr = mysql_fetch_field(res_ptr)) != NULL)
	{
		printf("\t Name: %s", field_ptr->name);
	}
	putchar('\n');
}
//显示表内容
void show_row()
{
	unsigned int i, n;
	MYSQL_ROW sqlrow;
	n = mysql_num_fields(res_ptr);
	while ((sqlrow = mysql_fetch_row(res_ptr)))
	{
		for (i = 0;i < n;i++)
		{
			printf("%15s", sqlrow[i]);
		}
		putchar('\n');
	}
}

//插入数据
void insert()
{
	char id[20];
	char name[20];
	char sex[20];
	char address[20];
	char*find;
	puts("Please enter id,name,sex and address:");
	printf("Please enter id:");
	fgets(id, 20, stdin);
	find = strchr(id, '\n');
	if (find)*find = '\0';

	printf("Please enter neme:");
	fgets(name, 20, stdin);
	find = strchr(name, '\n');
	if (find)*find = '\0';

	printf("Please enter sex:");
	fgets(sex, 20, stdin);
	find = strchr(sex, '\n');
	if (find)*find = '\0';

	printf("Please enter address:");
	fgets(address, 20, stdin);
	find = strchr(address, '\n');
	if (find)*find = '\0';

	sprintf(query, "insert into stu_info(stu_id,stu_name,stu_sex,stu_address)value('%s','%s','%s','%s')",
		id, name, sex, address);
	if (mysql_query(&my_connection, query))
		fprintf(stderr, "插入 is failure ,error is :%s", mysql_error(&my_connection));
	else
		puts("插入 success!");
}
//更新数据
void update()
{
	char*find;
	char name[20];
	char id[20];
	puts("PLease enter you want to  update column and row");
	printf("Please enter column:");
	fgets(name, 20, stdin);
	find = strchr(name, '\n');
	if (find)*find = '\0';

	printf("Please enter id:");
	fgets(id, 20, stdin);
	find = strchr(id, '\n');
	if (find)*find = '\0';
	sprintf(query, "update stu_info set stu_name='%s',where id='%s'", name, id);
	if (mysql_query(&my_connection, query))
		fprintf(stderr, "查询 is failure ,error is :%s", mysql_error(&my_connection));
	else
		puts("查询 success!");
}
//删除数据
void delet()
{
	char*find;
	char id[20];
	puts("Please enter id:");
	fgets(id, 20, stdin);
	find = strchr(id, '\n');
	if (find)*find = '\0';
	sprintf(query, "delete from stu_info where stu_id='%s'", id);
	if (mysql_query(&my_connection, query))
		fprintf(stderr, "删除 is failure ,error is :%s", mysql_error(&my_connection));
	else
		puts("删除 success!");
}
//菜单
void menu()
{
	printf("\n\n\n\n\n\n");
	puts("\t\t|-------------学生管理里系统------------|");
	puts("\t\t|\t 1.展示数据.                    |");
	puts("\t\t|\t 2.插入数据.                    |");
	puts("\t\t|\t 3.删除信息.                    |");
	puts("\t\t|\t 4.更新数据.                    |");
	puts("\t\t|\t other number is quit.          |");
	puts("\t\t|---------------------------------------|");
	puts("\t\t\t\tchose(1-4):");
}


运行样图:



数据库可视化:



寄语:见自己,见天地,见众生。

  作者:Wnlife    2018.5.26

猜你喜欢

转载自blog.csdn.net/TDOA1024/article/details/80463990