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(); //添加經(jīng)理
void Insert_marger(); //添加銷售經(jīng)理
void Show_manager(); //顯示經(jīng)理信息
void Show_marger(); //顯示銷售經(jīng)理信息
void Modify_manager(); //修改經(jīng)理信息
void Modify_marger(); //修改銷售經(jīng)理信息
void Delete_manager(); //刪除經(jīng)理信息
void Delete_marger(); //刪除銷售經(jīng)理信息
void Find_manager(); //查找某經(jīng)理信息
void Find_marger(); //查找某銷售經(jīng)理信息
void Wage_manager(); //結(jié)算經(jīng)理工資
void Wage_marger(); //結(jié)算銷售經(jīng)理工資
};
//基本員工類
class Employe
{
public:
int id;
char name[32];
int password;
int rank; //boss級(jí)別為1猜极,經(jīng)理級(jí)別2薇缅,銷售經(jīng)理級(jí)別3,兼職技術(shù)人員4替久,兼職推銷員工級(jí)別5
float wage;
};
//manager經(jīng)理
class Manager:public Employe
{
public:
Manager(){};
void Insert_manemploye(); //添加兼職技術(shù)人員
void Show_manemploye(); //顯示兼職技術(shù)員工信息
void Modify_manemploye(); //修改兼職技術(shù)員工信息
void Delete_manemploye(); //刪除兼職技術(shù)員工信息
void Find_manemploye(); //查找某技術(shù)員工信息
void Wage_manemploye(); //技術(shù)員工工資結(jié)算
};
//marger銷售經(jīng)理
class Marger:public Employe
{
public:
Marger(){};
void Insert_maremploye(); //添加兼職推銷員工
void Show_maremploye(); //顯示兼職推銷員工信息
void Modify_maremploye(); //修改兼職推銷員工信息
void Delete_maremploye(); //刪除兼職推銷員工信息
void Find_maremploye(); //查找兼職推銷員工信息
void Wage_maremploye(); //結(jié)算兼職推銷員工工資
};
MYSQL *conn;
MYSQL_RES *res;
MYSQL_ROW row;
//-------主函數(shù)----------
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"); //字符集設(shè)置
//----------操作函數(shù)---------------
Boss boss; //定義Boss類的對(duì)象boss
boss.Insert_manager();//boss 添加經(jīng)理
cout<<"按任意鍵顯示數(shù)據(jù)庫(kù)中經(jīng)理的所有信息"<<endl;
boss.Show_manager(); //顯示數(shù)據(jù)庫(kù)中經(jīng)理的信息
boss.Modify_manager();//修改數(shù)據(jù)庫(kù)中的經(jīng)理信息
mysql_close(conn); // 關(guān)閉數(shù)據(jù)庫(kù)連接
return 0;
}
//------老板添加經(jīng)理------- 先把數(shù)據(jù)放到容器中诉濒,然后把容器中的數(shù)據(jù)讀到數(shù)據(jù)庫(kù)中
void Boss::Insert_manager()
{
list<Manager> Link1;
Manager manager;
char ch;
char man[500];
while(1)
{
cout<<" 請(qǐng)輸入要添加的經(jīng)理的信息:"<<endl;
cout<<"編號(hào):";
cin>>manager.id;
cout<<"姓名:";
cin>>manager.name;
cout<<"密碼:";
cin>>manager.password;
cout<<"級(jí)別:";
cin>>manager.rank;
cout<<"工資:";
cin>>manager.wage;
Link1.push_back(manager);
cout<<" 是否繼續(xù)添加【y/n】"<<endl;
while(getchar()!='\n');
ch=getchar();
if('n'==ch)
break;
}
cout<<" 確定結(jié)束添加嗎【y/n】"<<endl;
while(getchar()!='\n');
ch=getchar();
if('y'==ch)
{
list<Manager>::iterator l=Link1.begin(); //創(chuàng)建容器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)) //發(fā)送SQL語(yǔ)句周伦,成功返回0;
{
fprintf(stderr,"%s\n",mysql_error(conn));
exit(1);
}
l++;
}
}
}
//-------------顯示數(shù)據(jù)庫(kù)中經(jīng)理的所有信息------------通過(guò)發(fā)送SQL語(yǔ)句未荒,直接顯示從數(shù)區(qū)庫(kù)返回的結(jié)果集
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); //獲得結(jié)果集专挪, 一個(gè)表。
cout<<" 經(jīng)理的信息如下:"<<endl;
printf("編號(hào)\t姓名\t密碼\t級(jí)別\t工資\n");
while((row=mysql_fetch_row(res)) != NULL) //打印數(shù)據(jù)庫(kù)里的信息片排,每次獲得一行
{
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); //獲取一次結(jié)果集后要跟著釋放一次
return;
}
//------------修改數(shù)據(jù)庫(kù)中某位經(jīng)理的信息------ 通過(guò)容器接收數(shù)據(jù)庫(kù)返回的結(jié)果集
void Boss::Modify_manager()
{
list<Manager> link2;
Manager manager;
char man[500];
int b=0;
cout<<"請(qǐng)輸入要修改的編號(hào):"<<endl;
cin>>b;
cout<<"按任意鍵顯示所要修改的經(jīng)理信息"<<endl;
getchar();
getchar();
getchar();
sprintf(man,"select * from manager where id=%d",b);
if(mysql_query(conn,man)) //發(fā)送SQL語(yǔ)句寨腔,成功返回0;
{
fprintf(stderr,"%s\n",mysql_error(conn));
exit(1);
}
res=mysql_use_result(conn);
while((row=mysql_fetch_row(res))!=NULL)//通過(guò)容器接收從數(shù)據(jù)庫(kù)中讀取的信息
{
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<<"編號(hào):"<<l->id;
cout<<" 姓名:"<<l->name;
cout<<" 密碼:"<<l->password;
cout<<" 級(jí)別:"<<l->rank;
cout<<" 工資:"<<l->wage<<endl;
l++;
}
mysql_free_result(res); //獲取一次結(jié)果集后要跟著釋放一次
//....
//....
//修改信息并存儲(chǔ)到數(shù)據(jù)庫(kù)里
}