找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1135|回复: 0
打印 上一主题 下一主题
收起左侧

教师管理系统源码

[复制链接]
跳转到指定楼层
楼主
ID:364572 发表于 2018-7-4 13:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

  1. #include<iostream>
  2. #include<string>
  3. #include<fstream>
  4. #include<WinSock.h>
  5. #include<mysql.h>
  6. #include<conio.h>

  7. #pragma comment(lib,"C:\\MySQL\\lib\\opt\\libmysql.lib")


  8. using namespace std;

  9. void Str_to_double(double temp,string &str)
  10. {
  11.         //values1表示整数部分,values2表示小数部分
  12.         int values1 = int(temp);
  13.         int values2 = (temp-values1) * 100;//values2最多为十位数
  14.         int *a;
  15.         a = new int[10];
  16.         for(int i = 0;(values1 / 10) != 0;i++)
  17.         {
  18.                 a[i] = values1 % 10;
  19.                 values1 /= 10;
  20.         }
  21.         a[i] = values1;
  22.         for(int j = i;j >= 0;j--)
  23.                 str += a[j] + 48;
  24.         str += ".";
  25.         int one,two;
  26.         one = values2 / 10;
  27.         two = values2 % 10;
  28.         str += one + 48;
  29.         str += two + 48;
  30.         delete[] a;//释放内存
  31. }
  32. bool InitDatabase(MYSQL &mydata)
  33. {
  34.         //初始化数据库
  35.         if(0==mysql_library_init(0, NULL, NULL))
  36.                 cout << "初始化数据库成功--" << endl;
  37.         else
  38.         {
  39.                 cout << "mysql_library_init() failed!" << endl;
  40.                 return 0;
  41.         }
  42.         //初始化数据结构
  43.         if(NULL!=mysql_init(&mydata))
  44.                 cout << "初始化数据结构成功--" << endl;
  45.         else
  46.         {
  47.                 cout << "mysql_init() failed!" << endl;
  48.                 return false;
  49.         }
  50.         //初始化字符集
  51.         if(0==mysql_options(&mydata,MYSQL_SET_CHARSET_NAME, "gbk"))
  52.                 cout << "初始化字符集成功--" << endl;
  53.         else
  54.         {
  55.                 cout << "mysql_options() failed!" << endl;
  56.                 return false;
  57.         }
  58.         //链接数据库
  59.         if(NULL!=mysql_real_connect(&mydata,"localhost","root","123456","teacher_salary_system",0,NULL,0))
  60.                 cout << "链接数据库成功--" << endl;
  61.         else
  62.         {
  63.                 cout << "mysql_real_connect() failed!" << endl;
  64.                 return false;
  65.         }
  66.         string sqlstr;
  67.         sqlstr = "create table if not exists Teacher_data";
  68.         sqlstr += "(";
  69.         sqlstr += "Number int unsigned not null auto_increment primary key," ;//教师号
  70.         sqlstr += "Name varchar(10) not null,";//姓名
  71.         sqlstr += "Sex varchar(10) not null,";//性别
  72.         sqlstr += "Company varchar(100) not null,";//单位名称
  73.         sqlstr += "Address varchar(100) not null,";//家庭住址
  74.         sqlstr += "Telephone varchar(20) not null,";//联系电话
  75.         sqlstr += "Basic_sal double unsigned not null,";//基本工资
  76.         sqlstr += "Sub_sal double unsigned not null,";//津贴
  77.         sqlstr += "Life_sal double unsigned not null,";//生活补贴
  78.         sqlstr += "Tele_mon double unsigned not null,";//电话费
  79.         sqlstr += "Elec_water_mon double unsigned not null,";//水电费
  80.         sqlstr += "House_mon double unsigned not null,";//房租
  81.         sqlstr += "Income_tax double unsigned not null,";//所得税
  82.         sqlstr += "Health_mon double unsigned not null,";//卫生费
  83.         sqlstr += "Gongji_mon double unsigned not null,";//公积金
  84.         sqlstr += "Got_sal double unsigned not null,";//应发工资
  85.         sqlstr += "Total_spend double unsigned not null,";//合计扣款
  86.         sqlstr += "Real_sal double unsigned not null";//实发工资
  87.         sqlstr += ");";
  88.         if(0 == mysql_query(&mydata,sqlstr.c_str()))
  89.         {
  90.                 cout << "初始化Teacher_data成功!" << endl << "按任意键继续--";
  91.                 getch();
  92.                 return true;
  93.         }
  94.         else
  95.         {
  96.                 cout << "mysql() 创建Teacher_data失败!" << endl;
  97.                 return false;
  98.         }
  99. }
  100. bool Input(MYSQL &mysql) //用引用
  101. {
  102.         while(1)
  103.         {
  104.                 system("CLS");
  105.                 string data = "insert into Teacher_data values(";
  106.                 string temp;
  107.                 cout << "--按提示进行操作--" << endl;
  108.                 cout << "请输入(下同)教师编号:" << endl;
  109.                 cin >> temp;
  110.                 data += temp + ",";
  111.                 cout << "教师姓名:" << endl;
  112.                 cin >> temp;
  113.                 data += "'" + temp + "',";
  114.                 cout << "教师性别:" << endl;
  115.                 cin >> temp;
  116.                 data += "'" + temp + "',";
  117.                 cout << "单位名称:" << endl;
  118.                 cin >> temp;
  119.                 data += "'" + temp + "',";
  120.                 cout << "家庭住址:" << endl;
  121.                 cin >> temp;
  122.                 data += "'" + temp + "',";
  123.                 cout << "联系电话:" << endl;
  124.                 cin >> temp;
  125.                 data += "'" + temp + "',";
  126.                 cout << "基本工资:" << endl;
  127.                 double temp1;
  128.                 cin >> temp1;
  129.                 Str_to_double(temp1,data);
  130.                 data += ",";
  131.                 cout << "津贴:" << endl;
  132.                 double temp2;
  133.                 cin >> temp2;
  134.                 Str_to_double(temp2,data);
  135.                 data += ",";
  136.                 cout << "生活补贴:" << endl;
  137.                 double temp3;
  138.                 cin >> temp3;
  139.                 Str_to_double(temp3,data);
  140.                 data += ",";
  141.                 cout << "电话费:" << endl;
  142.                 double temp4;
  143.                 cin >> temp4;
  144.                 Str_to_double(temp4,data);
  145.                 data += ",";
  146.                 cout << "水电费:" << endl;
  147.                 double temp5;
  148.                 cin >> temp5;
  149.                 Str_to_double(temp5,data);
  150.                 data += ",";
  151.                 cout << "房租:" << endl;
  152.                 double temp6;
  153.                 cin >> temp6;
  154.                 Str_to_double(temp6,data);
  155.                 data += ",";
  156.                 cout << "所得税:" << endl;
  157.                 double temp7;
  158.                 cin >> temp7;
  159.                 Str_to_double(temp7,data);
  160.                 data += ",";
  161.                 cout << "卫生费:" << endl;
  162.                 double temp8;
  163.                 cin >> temp8;
  164.                 Str_to_double(temp8,data);
  165.                 data += ",";
  166.                 cout << "公积金:" << endl;
  167.                 double temp9;
  168.                 cin >> temp9;
  169.                 Str_to_double(temp9,data);
  170.                 data += ",";
  171.                 double temp10 = temp1 + temp2 + temp3;//应发工资
  172.                 Str_to_double(temp10,data);
  173.                 data += ",";
  174.                 double temp11 = temp4 + temp5 + temp6 + temp7 +temp8 + temp9;//合计扣款
  175.                 Str_to_double(temp11,data);
  176.                 data += ",";
  177.                 double temp12 = temp10 - temp11;//实发工资
  178.                 cout << "实发工资:" << temp12 << endl;
  179.                 Str_to_double(temp12,data);
  180.                 data += ");";
  181.                 if(0 == mysql_query(&mysql,data.c_str()))//只能接收二进制文件
  182.                         cout << "插入成功!" << endl;
  183.                 else
  184.                 {
  185.                         cout << "mysql_query() failed!" << endl;
  186.                         cout << data.c_str() << endl;
  187.                         cout << "按任意键继续--" << endl;
  188.                         getch();
  189.                         return false;
  190.                 }
  191.                 cout << "输入成功,是否继续输入?Y/N" << endl;
  192.                 string judge;
  193.                 cin >> judge;
  194.                 if(!(judge == "Y" || judge == "y"))
  195.                         return false;
  196.         }
  197. }
  198. void Show(MYSQL &mydata,string model)
  199. {
  200.         string sqlstr;
  201.         if(model == "all")
  202.                 sqlstr = "select * from Teacher_data order by Number" ;
  203.         else if (model == "search")
  204.         {
  205.                 cout << "**************************" << endl;
  206.                 cout << " ****请选择查询的方式**** " << endl;
  207.                 cout << " ****1、编号查询**** " << endl;
  208.                 cout << " ****2、姓名查询**** " << endl;
  209.                 cout << " ****3、性别查询**** " << endl;
  210.                 cout << " ****4、单位名称查询****" << endl;
  211.                 cout << " ****5、家庭住址查询****" << endl;
  212.                 cout << " ****6、联系电话查询****" << endl;
  213.                 int i;//用于选择查询方式
  214.                 string p;//输入查询的内容
  215.                 cin >> i;
  216.                 while(i > 6 || i < 1)
  217.                 {
  218.                         cout << "无该查询方式,请重新输入--" << endl;
  219.                         cin >> i;
  220.                 }
  221.                 switch (i)
  222.                 {
  223.                 case 1:       
  224.                         cout << "请输入查询的教师编号:" << endl;
  225.                         cin >> p;
  226.                         sqlstr = "select * from Teacher_data where Number = " + p + ";";
  227.                         break;
  228.                 case 2:
  229.                         cout << "请输入查询的教师姓名:" << endl;
  230.                         cin  >> p;                               
  231.                         sqlstr = "select * from Teacher_data where name = '" + p + "';";
  232.                         break;
  233.                 case 3:
  234.                         cout << "请输入查询的教师性别:" << endl;
  235.                         cin  >> p;       
  236.                         sqlstr = "select * from Teacher_data where sex = '" + p + "';";
  237.                         break;
  238.                 case 4:
  239.                         cout << "请输入查询教师的单位名称:" << endl;
  240.                         cin  >> p;       
  241.                         sqlstr = "select * from Teacher_data where company = '" + p + "';";
  242.                         break;
  243.                 case 5:
  244.                         cout << "请输入查询教师的家庭住址:" << endl;
  245.                         cin  >> p;       
  246.                         sqlstr = "select * from Teacher_data where address = '" + p + "';";
  247.                         break;
  248.                 case 6:
  249.                         cout << "请输入查询教师的联系电话:" << endl;
  250.                         cin  >> p;       
  251.                         sqlstr = "select * from Teacher_data where telephone = '" + p + "';";
  252.                         break;
  253.                 default:
  254.                         break;
  255.                 }
  256.         }
  257.                 system("CLS");
  258.                 MYSQL_RES  *result = NULL;
  259.                 if(0 == mysql_query(&mydata,sqlstr.c_str()))
  260.                 {
  261.                         //一次性取得数据集
  262.                         result = mysql_store_result(&mydata);
  263.                         //取得并打印行数
  264.                         int rowcount = mysql_num_rows(result);
  265.                         cout << "row count: " << rowcount << endl;  

  266.                         //取得并打印各字段的名称  
  267.                         unsigned int fieldcount = mysql_num_fields(result);  
  268.                         MYSQL_FIELD *field = NULL;  
  269.                         for (unsigned int i = 0; i < fieldcount; i++)
  270.                         {  
  271.                                 field = mysql_fetch_field_direct(result, i);  
  272.                                 cout << field->name << "\t";  
  273.                          }  
  274.                          cout << endl;  
  275.                                   
  276.                          //打印各行  
  277.                          MYSQL_ROW row = NULL;  
  278.                          row = mysql_fetch_row(result);  
  279.                         while (NULL != row)
  280.                         {  
  281.                                 for (int i = 0; i < fieldcount; i++)
  282.                                 {  
  283.                                         cout << row[i] << "\t";  
  284.                                 }  
  285.                                 cout << endl;  
  286.                                 row = mysql_fetch_row(result);  
  287.                         }  
  288.                         cout << "按任意键继续--" << endl;
  289.                         getch();
  290.                 }
  291.                 else
  292.                 {
  293.                         cout << "退出系统--" <<endl;
  294.                         exit(0);
  295.                 }
  296. }
  297. bool Delete(MYSQL &mydata)
  298. {
  299.         system("CLS");
  300.         string sqlstr;
  301.         cout << "请输入要删除信息的教师号--" << endl;
  302.         string i;
  303.         cin >> i;
  304.         sqlstr += "delete from Teacher_data where Number = " + i + ";";
  305.         if(0 == mysql_query(&mydata,sqlstr.c_str()))
  306.         {
  307.                 cout << "删除成功--" << endl << "按任意键继续--";
  308.                 getch(); //便于查找语法错误,下同
  309.                 return true;
  310.         }
  311.         else
  312.         {
  313.                 cout << "删除失败!请检查您输入的ID是否存在" << endl;
  314.                 cout << sqlstr.c_str() << endl;
  315.                 getch();
  316.                 return false;
  317.         }
  318. }
  319. bool Modify(MYSQL &mydata)
  320. {
  321.         system("CLS");
  322.         string sqlstr;
  323.         cout << "请输入要修改信息的教师号--" << endl;
  324.         string i;
  325.         cin >> i;
  326.         sqlstr = "select * from Teacher_data where Number = " + i + ";" ;
  327.         MYSQL_RES *result = NULL;//结果集
  328.         MYSQL_FIELD *field = NULL; //字段名指针
  329.         MYSQL_ROW row = NULL;//行

  330.         if(0 == mysql_query(&mydata,sqlstr.c_str()))
  331.         {
  332.                 result = mysql_store_result(&mydata);//取得全部结果
  333.                 unsigned int fieldcount = mysql_num_fields(result); //字段名数量
  334.                 int rowcount = mysql_num_rows(result);//取得行数

  335.                 for(int j = 0; j < fieldcount; j++)
  336.                 {                                                                                               
  337.                         //打印字段名称
  338.                         field = mysql_fetch_field_direct(result,j);
  339.                         cout << field -> name << "\t";
  340.                 }
  341.                 cout << endl;
  342.                 row = mysql_fetch_row(result);//检测结果的下一行
  343.                 while(row != NULL)
  344.                 {
  345.                         for(int k = 0; k < fieldcount; k++)
  346.                         {
  347.                                 cout << row[k] << "\t";//输出每一行的字段
  348.                         }
  349.                         row = mysql_fetch_row(result);//往下面加一行
  350.                         cout << endl;
  351.                 }
  352.         }
  353.                 sqlstr = "update Teacher_data set ";
  354.                 cout << "请输入要修改的字段名称:" << endl;
  355.                 string temp;//记录当前用户输入的字段
  356.                 cin >> temp;
  357.                 sqlstr += temp;
  358.                 cout << "请输入要修改的内容:" << endl;
  359.                 cin >> temp;
  360.                 sqlstr += " = '" + temp + "'";
  361.                 sqlstr += " where Number = ";
  362.                 sqlstr += i + ";";
  363.                 if(0 == mysql_query(&mydata,sqlstr.c_str()))
  364.                 {
  365.                         cout << "修改成功--" << endl;
  366.                         getch();
  367.                         return true;
  368.                 }
  369.                 else
  370.                 {
  371.                         cout << "mysql_query() modify failed!" << endl;
  372.                         cout << sqlstr.c_str() << endl;
  373.                         getch();
  374.                         return false;
  375.                 }
  376. }               
  377. void menu()
  378. {
  379.                 cout<<"**************************"<<endl;
  380.                 cout<<"****教师工资管理系统****"<<endl;
  381.                 cout<<" ***1、输入教师信息*** "<<endl;
  382.                 cout<<" ***2、修改教师信息*** "<<endl;
  383.                 cout<<" ***3、删除教师信息*** "<<endl;
  384.                 cout<<" ***4、浏览教师信息*** "<<endl;//将全部教师显示到屏幕上
  385.                 cout<<" ***5、查找教师信息*** "<<endl;//查找某一教师的所有信息
  386.                 cout<<" ***0、安全退出系统*** "<<endl;
  387.                 cout<<"-----------------------"<<endl;
  388.                 cout<<endl;
  389. }
  390. int main(void)
  391. {
  392.         MYSQL mydata;
  393.         if( !InitDatabase(mydata))
  394.         {
  395.                 cout << "初始化失败" << endl;
  396.                 getch();
  397.                 exit(0);
  398.         }
  399.         while(1)
  400.         {
  401.                 system("CLS");
  402.                 menu();
  403.                 int select_opreation;
  404.                 cin >> select_opreation;
  405.                 while(select_opreation > 5 || select_opreation < 0)
  406.                 {
  407.                         cout << "输入有误请重新输入!" <<endl;
  408.                         cin >> select_opreation;
  409.                 }
  410.                 switch(select_opreation)
  411.                 {
  412.                 case 1:
  413.                         Input(mydata);
  414.                         break;
  415.                 case 2:
  416.                         Modify(mydata);
  417.                         break;
  418.                 case 3:
  419.                         Delete(mydata);
  420.                         break;
  421.                 case 4:
  422.                         Show(mydata,"all");
  423.                         break;
  424.                 case 5:
  425.                         Show(mydata,"search");
  426.                         break;
  427.                 case 0:
  428.                         cout<<"系统退出!!!"<<endl;
  429.                         exit(0);
  430.                 default:
  431.                         break;
  432.                 }
  433.                 cin.clear();//重置cin输入状态
  434.                 cin.sync();        //清楚缓冲区没有读取的信息
  435.         }
  436.         return 0;
  437. }

复制代码


teacher.docx

17.13 KB, 下载次数: 2, 下载积分: 黑币 -5

完整

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表