include<iostream>
include<mysql/mysql.h>
include<list>
include<algorithm>
include<stdlib.h>
include<string.h>
include<stdio.h>
using namespace std;
//-----类------
class Boss
{
public:
Boss(){};
void Insert_manager(); //添加经理
void Insert_marger(); //添加销售经理
void Show_manager(); //显示经理信息
void Show_marger(); //显示销售经理信息
void Modify_manager(); //修改经理信息
void Modify_marger(); //修改销售经理信息
void Delete_manager(); //删除经理信息
void Delete_marger(); //删除销售经理信息
void Find_manager(); //查找某经理信息
void Find_marger(); //查找某销售经理信息
void Wage_manager(); //结算经理工资
void Wage_marger(); //结算销售经理工资
};
//基本员工类
class Employe
{
public:
int id;
char name[32];
int password;
int rank; //boss级别为1,经理级别2,销售经理级别3,兼职技术人员4,兼职推销员工级别5
float wage;
};
//manager经理
class Manager:public Employe
{
public:
Manager(){};
void Insert_manemploye(); //添加兼职技术人员
void Show_manemploye(); //显示兼职技术员工信息
void Modify_manemploye(); //修改兼职技术员工信息
void Delete_manemploye(); //删除兼职技术员工信息
void Find_manemploye(); //查找某技术员工信息
void Wage_manemploye(); //技术员工工资结算
};
//marger销售经理
class Marger:public Employe
{
public:
Marger(){};
void Insert_maremploye(); //添加兼职推销员工
void Show_maremploye(); //显示兼职推销员工信息
void Modify_maremploye(); //修改兼职推销员工信息
void Delete_maremploye(); //删除兼职推销员工信息
void Find_maremploye(); //查找兼职推销员工信息
void Wage_maremploye(); //结算兼职推销员工工资
};
MYSQL *conn;
MYSQL_RES *res;
MYSQL_ROW row;
//-------主函数----------
int main(int argc,char **argv)
{
const char *server="localhost";
const char *user="root";
const char *password="917";
const char *database="students";
conn=mysql_init(NULL); //初始化句柄,成功:不为NULL
if(conn == NULL)
{
cout<<"mysql_init error!!"<<endl;
return -1;
}
if(!mysql_real_connect(conn,server,user,password,database,0,NULL,0)) //连接成功,返回conn;失败,返回NULL。
{
fprintf(stderr,"%s\n",mysql_error(conn));
return 0;
}
mysql_set_character_set(conn,"utf8"); //字符集设置
//----------操作函数---------------
Boss boss; //定义Boss类的对象boss
boss.Insert_manager();//boss 添加经理
cout<<"按任意键显示数据库中经理的所有信息"<<endl;
boss.Show_manager(); //显示数据库中经理的信息
boss.Modify_manager();//修改数据库中的经理信息
mysql_close(conn); // 关闭数据库连接
return 0;
}
//------老板添加经理------- 先把数据放到容器中,然后把容器中的数据读到数据库中
void Boss::Insert_manager()
{
list<Manager> Link1;
Manager manager;
char ch;
char man[500];
while(1)
{
cout<<" 请输入要添加的经理的信息:"<<endl;
cout<<"编号:";
cin>>manager.id;
cout<<"姓名:";
cin>>manager.name;
cout<<"密码:";
cin>>manager.password;
cout<<"级别:";
cin>>manager.rank;
cout<<"工资:";
cin>>manager.wage;
Link1.push_back(manager);
cout<<" 是否继续添加【y/n】"<<endl;
while(getchar()!='\n');
ch=getchar();
if('n'==ch)
break;
}
cout<<" 确定结束添加吗【y/n】"<<endl;
while(getchar()!='\n');
ch=getchar();
if('y'==ch)
{
list<Manager>::iterator l=Link1.begin(); //创建容器Link1的迭代器 l;
while(l != Link1.end())
{
sprintf(man,"insert into manager(id,name,password,rank,wage) values(%d,'%s',%d,%d,%f)",l->id,l->name,l->password,l->rank,l->wage);
if(mysql_query(conn,man)) //发送SQL语句,成功返回0;
{
fprintf(stderr,"%s\n",mysql_error(conn));
exit(1);
}
l++;
}
}
}
//-------------显示数据库中经理的所有信息------------通过发送SQL语句,直接显示从数区库返回的结果集
void Boss::Show_manager()
{
getchar();
getchar();
getchar();
if(mysql_query(conn,"select *from manager"))
{
fprintf(stderr,"%s\n",mysql_error(conn));
exit(1);
}
res=mysql_use_result(conn); //获得结果集, 一个表。
cout<<" 经理的信息如下:"<<endl;
printf("编号\t姓名\t密码\t级别\t工资\n");
while((row=mysql_fetch_row(res)) != NULL) //打印数据库里的信息,每次获得一行
{
printf("%d\t%s\t%d\t%d\t%d\n",atoi(row[0]),row[1],atoi(row[2]),atoi(row[3]),atoi(row[4]));
}
mysql_free_result(res); //获取一次结果集后要跟着释放一次
return;
}
//------------修改数据库中某位经理的信息------ 通过容器接收数据库返回的结果集
void Boss::Modify_manager()
{
list<Manager> link2;
Manager manager;
char man[500];
int b=0;
cout<<"请输入要修改的编号:"<<endl;
cin>>b;
cout<<"按任意键显示所要修改的经理信息"<<endl;
getchar();
getchar();
getchar();
sprintf(man,"select * from manager where id=%d",b);
if(mysql_query(conn,man)) //发送SQL语句,成功返回0;
{
fprintf(stderr,"%s\n",mysql_error(conn));
exit(1);
}
res=mysql_use_result(conn);
while((row=mysql_fetch_row(res))!=NULL)//通过容器接收从数据库中读取的信息
{
manager.id=atoi(row[0]);
strcpy(manager.name,row[1]);
manager.password=atoi(row[2]);
manager.rank=atoi(row[3]);
manager.wage=atoi(row[4]);
link2.push_back(manager);
}
list<Manager>::iterator l=link2.begin();
while(l!=link2.end()) //显示容器里的信息
{
cout<<"编号:"<<l->id;
cout<<" 姓名:"<<l->name;
cout<<" 密码:"<<l->password;
cout<<" 级别:"<<l->rank;
cout<<" 工资:"<<l->wage<<endl;
l++;
}
mysql_free_result(res); //获取一次结果集后要跟着释放一次
//....
//....
//修改信息并存储到数据库里
}