|
- #include<iostream>
- #include<string>
- #include<fstream>
- #include<WinSock.h>
- #include<mysql.h>
- #include<conio.h>
- #pragma comment(lib,"C:\\MySQL\\lib\\opt\\libmysql.lib")
- using namespace std;
- void Str_to_double(double temp,string &str)
- {
- //values1表示整数部分,values2表示小数部分
- int values1 = int(temp);
- int values2 = (temp-values1) * 100;//values2最多为十位数
- int *a;
- a = new int[10];
- for(int i = 0;(values1 / 10) != 0;i++)
- {
- a[i] = values1 % 10;
- values1 /= 10;
- }
- a[i] = values1;
- for(int j = i;j >= 0;j--)
- str += a[j] + 48;
- str += ".";
- int one,two;
- one = values2 / 10;
- two = values2 % 10;
- str += one + 48;
- str += two + 48;
- delete[] a;//释放内存
- }
- bool InitDatabase(MYSQL &mydata)
- {
- //初始化数据库
- if(0==mysql_library_init(0, NULL, NULL))
- cout << "初始化数据库成功--" << endl;
- else
- {
- cout << "mysql_library_init() failed!" << endl;
- return 0;
- }
- //初始化数据结构
- if(NULL!=mysql_init(&mydata))
- cout << "初始化数据结构成功--" << endl;
- else
- {
- cout << "mysql_init() failed!" << endl;
- return false;
- }
- //初始化字符集
- if(0==mysql_options(&mydata,MYSQL_SET_CHARSET_NAME, "gbk"))
- cout << "初始化字符集成功--" << endl;
- else
- {
- cout << "mysql_options() failed!" << endl;
- return false;
- }
- //链接数据库
- if(NULL!=mysql_real_connect(&mydata,"localhost","root","123456","teacher_salary_system",0,NULL,0))
- cout << "链接数据库成功--" << endl;
- else
- {
- cout << "mysql_real_connect() failed!" << endl;
- return false;
- }
- string sqlstr;
- sqlstr = "create table if not exists Teacher_data";
- sqlstr += "(";
- sqlstr += "Number int unsigned not null auto_increment primary key," ;//教师号
- sqlstr += "Name varchar(10) not null,";//姓名
- sqlstr += "Sex varchar(10) not null,";//性别
- sqlstr += "Company varchar(100) not null,";//单位名称
- sqlstr += "Address varchar(100) not null,";//家庭住址
- sqlstr += "Telephone varchar(20) not null,";//联系电话
- sqlstr += "Basic_sal double unsigned not null,";//基本工资
- sqlstr += "Sub_sal double unsigned not null,";//津贴
- sqlstr += "Life_sal double unsigned not null,";//生活补贴
- sqlstr += "Tele_mon double unsigned not null,";//电话费
- sqlstr += "Elec_water_mon double unsigned not null,";//水电费
- sqlstr += "House_mon double unsigned not null,";//房租
- sqlstr += "Income_tax double unsigned not null,";//所得税
- sqlstr += "Health_mon double unsigned not null,";//卫生费
- sqlstr += "Gongji_mon double unsigned not null,";//公积金
- sqlstr += "Got_sal double unsigned not null,";//应发工资
- sqlstr += "Total_spend double unsigned not null,";//合计扣款
- sqlstr += "Real_sal double unsigned not null";//实发工资
- sqlstr += ");";
- if(0 == mysql_query(&mydata,sqlstr.c_str()))
- {
- cout << "初始化Teacher_data成功!" << endl << "按任意键继续--";
- getch();
- return true;
- }
- else
- {
- cout << "mysql() 创建Teacher_data失败!" << endl;
- return false;
- }
- }
- bool Input(MYSQL &mysql) //用引用
- {
- while(1)
- {
- system("CLS");
- string data = "insert into Teacher_data values(";
- string temp;
- cout << "--按提示进行操作--" << endl;
- cout << "请输入(下同)教师编号:" << endl;
- cin >> temp;
- data += temp + ",";
- cout << "教师姓名:" << endl;
- cin >> temp;
- data += "'" + temp + "',";
- cout << "教师性别:" << endl;
- cin >> temp;
- data += "'" + temp + "',";
- cout << "单位名称:" << endl;
- cin >> temp;
- data += "'" + temp + "',";
- cout << "家庭住址:" << endl;
- cin >> temp;
- data += "'" + temp + "',";
- cout << "联系电话:" << endl;
- cin >> temp;
- data += "'" + temp + "',";
- cout << "基本工资:" << endl;
- double temp1;
- cin >> temp1;
- Str_to_double(temp1,data);
- data += ",";
- cout << "津贴:" << endl;
- double temp2;
- cin >> temp2;
- Str_to_double(temp2,data);
- data += ",";
- cout << "生活补贴:" << endl;
- double temp3;
- cin >> temp3;
- Str_to_double(temp3,data);
- data += ",";
- cout << "电话费:" << endl;
- double temp4;
- cin >> temp4;
- Str_to_double(temp4,data);
- data += ",";
- cout << "水电费:" << endl;
- double temp5;
- cin >> temp5;
- Str_to_double(temp5,data);
- data += ",";
- cout << "房租:" << endl;
- double temp6;
- cin >> temp6;
- Str_to_double(temp6,data);
- data += ",";
- cout << "所得税:" << endl;
- double temp7;
- cin >> temp7;
- Str_to_double(temp7,data);
- data += ",";
- cout << "卫生费:" << endl;
- double temp8;
- cin >> temp8;
- Str_to_double(temp8,data);
- data += ",";
- cout << "公积金:" << endl;
- double temp9;
- cin >> temp9;
- Str_to_double(temp9,data);
- data += ",";
- double temp10 = temp1 + temp2 + temp3;//应发工资
- Str_to_double(temp10,data);
- data += ",";
- double temp11 = temp4 + temp5 + temp6 + temp7 +temp8 + temp9;//合计扣款
- Str_to_double(temp11,data);
- data += ",";
- double temp12 = temp10 - temp11;//实发工资
- cout << "实发工资:" << temp12 << endl;
- Str_to_double(temp12,data);
- data += ");";
- if(0 == mysql_query(&mysql,data.c_str()))//只能接收二进制文件
- cout << "插入成功!" << endl;
- else
- {
- cout << "mysql_query() failed!" << endl;
- cout << data.c_str() << endl;
- cout << "按任意键继续--" << endl;
- getch();
- return false;
- }
- cout << "输入成功,是否继续输入?Y/N" << endl;
- string judge;
- cin >> judge;
- if(!(judge == "Y" || judge == "y"))
- return false;
- }
- }
- void Show(MYSQL &mydata,string model)
- {
- string sqlstr;
- if(model == "all")
- sqlstr = "select * from Teacher_data order by Number" ;
- else if (model == "search")
- {
- cout << "**************************" << endl;
- cout << " ****请选择查询的方式**** " << endl;
- cout << " ****1、编号查询**** " << endl;
- cout << " ****2、姓名查询**** " << endl;
- cout << " ****3、性别查询**** " << endl;
- cout << " ****4、单位名称查询****" << endl;
- cout << " ****5、家庭住址查询****" << endl;
- cout << " ****6、联系电话查询****" << endl;
- int i;//用于选择查询方式
- string p;//输入查询的内容
- cin >> i;
- while(i > 6 || i < 1)
- {
- cout << "无该查询方式,请重新输入--" << endl;
- cin >> i;
- }
- switch (i)
- {
- case 1:
- cout << "请输入查询的教师编号:" << endl;
- cin >> p;
- sqlstr = "select * from Teacher_data where Number = " + p + ";";
- break;
- case 2:
- cout << "请输入查询的教师姓名:" << endl;
- cin >> p;
- sqlstr = "select * from Teacher_data where name = '" + p + "';";
- break;
- case 3:
- cout << "请输入查询的教师性别:" << endl;
- cin >> p;
- sqlstr = "select * from Teacher_data where sex = '" + p + "';";
- break;
- case 4:
- cout << "请输入查询教师的单位名称:" << endl;
- cin >> p;
- sqlstr = "select * from Teacher_data where company = '" + p + "';";
- break;
- case 5:
- cout << "请输入查询教师的家庭住址:" << endl;
- cin >> p;
- sqlstr = "select * from Teacher_data where address = '" + p + "';";
- break;
- case 6:
- cout << "请输入查询教师的联系电话:" << endl;
- cin >> p;
- sqlstr = "select * from Teacher_data where telephone = '" + p + "';";
- break;
- default:
- break;
- }
- }
- system("CLS");
- MYSQL_RES *result = NULL;
- if(0 == mysql_query(&mydata,sqlstr.c_str()))
- {
- //一次性取得数据集
- result = mysql_store_result(&mydata);
- //取得并打印行数
- int rowcount = mysql_num_rows(result);
- cout << "row count: " << rowcount << endl;
- //取得并打印各字段的名称
- unsigned int fieldcount = mysql_num_fields(result);
- MYSQL_FIELD *field = NULL;
- for (unsigned int i = 0; i < fieldcount; i++)
- {
- field = mysql_fetch_field_direct(result, i);
- cout << field->name << "\t";
- }
- cout << endl;
-
- //打印各行
- MYSQL_ROW row = NULL;
- row = mysql_fetch_row(result);
- while (NULL != row)
- {
- for (int i = 0; i < fieldcount; i++)
- {
- cout << row[i] << "\t";
- }
- cout << endl;
- row = mysql_fetch_row(result);
- }
- cout << "按任意键继续--" << endl;
- getch();
- }
- else
- {
- cout << "退出系统--" <<endl;
- exit(0);
- }
- }
- bool Delete(MYSQL &mydata)
- {
- system("CLS");
- string sqlstr;
- cout << "请输入要删除信息的教师号--" << endl;
- string i;
- cin >> i;
- sqlstr += "delete from Teacher_data where Number = " + i + ";";
- if(0 == mysql_query(&mydata,sqlstr.c_str()))
- {
- cout << "删除成功--" << endl << "按任意键继续--";
- getch(); //便于查找语法错误,下同
- return true;
- }
- else
- {
- cout << "删除失败!请检查您输入的ID是否存在" << endl;
- cout << sqlstr.c_str() << endl;
- getch();
- return false;
- }
- }
- bool Modify(MYSQL &mydata)
- {
- system("CLS");
- string sqlstr;
- cout << "请输入要修改信息的教师号--" << endl;
- string i;
- cin >> i;
- sqlstr = "select * from Teacher_data where Number = " + i + ";" ;
- MYSQL_RES *result = NULL;//结果集
- MYSQL_FIELD *field = NULL; //字段名指针
- MYSQL_ROW row = NULL;//行
- if(0 == mysql_query(&mydata,sqlstr.c_str()))
- {
- result = mysql_store_result(&mydata);//取得全部结果
- unsigned int fieldcount = mysql_num_fields(result); //字段名数量
- int rowcount = mysql_num_rows(result);//取得行数
- for(int j = 0; j < fieldcount; j++)
- {
- //打印字段名称
- field = mysql_fetch_field_direct(result,j);
- cout << field -> name << "\t";
- }
- cout << endl;
- row = mysql_fetch_row(result);//检测结果的下一行
- while(row != NULL)
- {
- for(int k = 0; k < fieldcount; k++)
- {
- cout << row[k] << "\t";//输出每一行的字段
- }
- row = mysql_fetch_row(result);//往下面加一行
- cout << endl;
- }
- }
- sqlstr = "update Teacher_data set ";
- cout << "请输入要修改的字段名称:" << endl;
- string temp;//记录当前用户输入的字段
- cin >> temp;
- sqlstr += temp;
- cout << "请输入要修改的内容:" << endl;
- cin >> temp;
- sqlstr += " = '" + temp + "'";
- sqlstr += " where Number = ";
- sqlstr += i + ";";
- if(0 == mysql_query(&mydata,sqlstr.c_str()))
- {
- cout << "修改成功--" << endl;
- getch();
- return true;
- }
- else
- {
- cout << "mysql_query() modify failed!" << endl;
- cout << sqlstr.c_str() << endl;
- getch();
- return false;
- }
- }
- void menu()
- {
- cout<<"**************************"<<endl;
- cout<<"****教师工资管理系统****"<<endl;
- cout<<" ***1、输入教师信息*** "<<endl;
- cout<<" ***2、修改教师信息*** "<<endl;
- cout<<" ***3、删除教师信息*** "<<endl;
- cout<<" ***4、浏览教师信息*** "<<endl;//将全部教师显示到屏幕上
- cout<<" ***5、查找教师信息*** "<<endl;//查找某一教师的所有信息
- cout<<" ***0、安全退出系统*** "<<endl;
- cout<<"-----------------------"<<endl;
- cout<<endl;
- }
- int main(void)
- {
- MYSQL mydata;
- if( !InitDatabase(mydata))
- {
- cout << "初始化失败" << endl;
- getch();
- exit(0);
- }
- while(1)
- {
- system("CLS");
- menu();
- int select_opreation;
- cin >> select_opreation;
- while(select_opreation > 5 || select_opreation < 0)
- {
- cout << "输入有误请重新输入!" <<endl;
- cin >> select_opreation;
- }
- switch(select_opreation)
- {
- case 1:
- Input(mydata);
- break;
- case 2:
- Modify(mydata);
- break;
- case 3:
- Delete(mydata);
- break;
- case 4:
- Show(mydata,"all");
- break;
- case 5:
- Show(mydata,"search");
- break;
- case 0:
- cout<<"系统退出!!!"<<endl;
- exit(0);
- default:
- break;
- }
- cin.clear();//重置cin输入状态
- cin.sync(); //清楚缓冲区没有读取的信息
- }
- return 0;
- }
复制代码
|
评分
-
查看全部评分
|