Mysql数据库简易学生管理系统

#include 
#include 
#pragma comment(lib,"libmySQL.lib")  //要加不然会编译出错
#include "stdio.h"
#include "string.h"
#include
using namespace std;


struct conn_info {
	char *host;
	char *user;
	char *password;
	char *db;
};

struct student
{
	char name[10];
	char nu[10];
	struct student *next;
};

class Mysql
{
public:
/********************************连接数据库*****************************************************/
	MYSQL* mysql_connect(conn_info con){
		MYSQL* mysql=mysql_init(NULL);//mysql初始化函数,实例化一个新的对象(NULL为新的对象,否则为初始化以创建的对象)
		if(!mysql_real_connect(mysql,con.host,con.user,con.password,con.db,3306,NULL,0)){//mysql_real_connect(MYSQL *mysql,const char *host, const char *user, const char *passwd, const char *db, unsigned int port, const char *unix_socket, unsigned long client_flag)
			//上面的函数为,与mysql进行连接
			cout<<"connection error";
			exit(1);
		}
		return mysql;//返回实例化的对象
	}
 
 
/****************************************数据库操作函数*******************************************************/
	void mysql_operation(MYSQL* mysql,char *sql_op)
	{
		if(mysql_query(mysql,sql_op))//mysql_query()函数为对mysql进行操作,第一个参数为刚才实例化的对象,第二个位需要进行的操作
		{ 
			printf("MySQL query error : %s/n", mysql_error(mysql));  //需要加上这个,因为这个是操作失败时返回显示
			getchar();
		 	exit(1);
		}	
	}
 
 
/*******************************查询函数***********************************************************/
	MYSQL_RES* mysql_find(MYSQL* mysql,const char *table,MYSQL_RES* res){
		char cmd[100];
		strcpy(cmd,"select * from ");
		strcat(cmd,table);		//拼接函数
 
 
//		cout<name);
		strcat(cmd,"\",\"");
		strcat(cmd,p->nu);
		strcat(cmd,"\")");
 
 
//		cout<7);//判断i值是否在1~7之间,否则继续要求输入
	return i;
}


class Operate
{
	
	public:
		void input(MYSQL* mysql)
		{
			struct student *current;
			Mysql _mysql;
			int flag;

			char name[10];//用于存储学生的名字
			char nu[10];//用于存储学生学号
//			char flag;//用于判断是否继续扫描

			current=(struct student *)malloc( sizeof(struct student) );
		
			printf("请输入学生名字:\n");
			scanf("%s", name);//扫描键盘
			getchar();//注意在前一次进行过扫描后要加getchar(),否则下次扫描会读取回车
			flag = _mysql.mysql_repeat(mysql,"test",NULL,0,name);
			if(flag)
			{
				cout<<"名字打重啦,换个大名试试"<name,name);

			printf("请输入学生学号:\n");
			scanf("%s", nu);//扫描键盘
			getchar();//注意在前一次进行过扫描后要加getchar(),否则下次扫描会读取回车
			flag = _mysql.mysql_repeat(mysql,"test",NULL,1,nu);
			if(flag)
			{
				cout<<"学号打重啦,再摇个号试试"<nu,nu);

			_mysql.mysql_insert(mysql,current);	
			printf("增加成功");
			getchar();
		}

		void del(MYSQL* mysql)
		{
			Mysql _mysql;
			char name[10];
			char nu[10];
			char flag = -1;
			
			printf("请选择用学号删除(0)或用姓名删除(1):");
			scanf("%c",&flag);
			getchar();
			if(flag == 48)//ASCII码
			{
				printf("\n请输入需要删除学生的学号:\n");
				scanf("%s",&nu);
				getchar();
				flag = _mysql.mysql_repeat(mysql,"test",NULL,1,nu);
				if(flag == 0)
				{
					cout<<"可惜没这个号啊"<next=NULL; 

		while(1)
	{
		system("cls");
		switch(menu_select())
		{
			case 1:
				op1.input(conn);
				break;
			case 2:
				op1.del(conn);
				break;
			case 3:
				op1.list(conn);
				break;
			case 4:
				op1.find(conn);
				break;
			case 5:
				op1.modify(conn);
				break;
			case 6:
				mysql_close(conn);
				exit(0);
			default:
				printf("输入出错,按任意键返回。");
				getchar();
				break;
		}
	}
}
相对于之前的,加入了报错,在mysql函数中加入了判断重复的函数mysql_repeat()。

你可能感兴趣的:(VC++,mysql)