现在的位置: 首页 > 综合 > 正文

职工工资管理系统(C+MySql)[未完成版]

2013年06月08日 ⁄ 综合 ⁄ 共 9413字 ⁄ 字号 评论关闭

//目前除了 倒入数据,统计数据的功能还未编写,其它的功能已经完成,具体效果如下面的图片

 

#include<stdio.h>
#include<stdlib.h>
#include<io.h>
#include<windows.h>
#include<winsock2.h>
#include<mysql.h>
//职工的姓名、ID号以及基本工资、职务工资、岗位津贴、医疗保险、公积金
struct people
{
 char name[20];
 int id;
 float base;
 float office;
 float post;
 float medical;
 float reserve;
};

void inputmsg(people *p);//接受输入进来的数据
void msgtodbs(MYSQL *mysql, people pro,char p[]);//将输入进来的数据写入数据库
void viewdata(MYSQL *mysql,char p[]);//显示数据库里面的数据
void searchdata(MYSQL *mysql,char p[]);//查找数据
void editdata(MYSQL *mysql,char p[]);//编辑数据
void deldata(MYSQL *mysql,char p[]);//删除数据
void outputdata(MYSQL *mysql,char p[]);//导出数据
void finddata(MYSQL *mysql,char p[]);//恢复数据
void menu();//显示菜单
int main()
{
 people pro;
 MYSQL mysql;
 MYSQL_RES *mysql_res;
 MYSQL_ROW mysql_row;
 char p[4000];
 int number,flag=1;
 
 mysql_init(&mysql);
 
 if(!mysql_real_connect(&mysql,"localhost","root","123456",NULL,0,NULL,0))
 {//连接到MySql数据库服务器,但是不打开任何数据库;
  printf("%s/n",mysql_error(&mysql));
 }
 
 mysql_res=mysql_list_dbs(&mysql,"test_userdb");//检查test_userdb库是否已经存在,否则创建
 if(mysql_num_rows(mysql_res)<=0)
 {
  if(mysql_query(&mysql,"create database test_userdb;")!=0)
  {//创建数据库
   printf("%s/n",mysql_error(&mysql));
  }
 }
 mysql_free_result(mysql_res);
 
 if(mysql_change_user(&mysql,"root","123456","test_userdb")!=0)
 {//重新连接数据库
  printf("%s/n",mysql_error(&mysql));
 }
 
 mysql_res=mysql_list_tables(&mysql,"users");//检查users表是否已经存在,否则创建
 if(mysql_num_rows(mysql_res)<=0)
 {
  if(mysql_query(&mysql,"create table users(id int not null,name char(20) not null,base float not null,office float not null,post float not null,medical float not null,reserve float not null,primary key (id));")!=0)
  {//在新的数据库里面创建表
   printf("%s/n",mysql_error(&mysql));
  }
 }
 
 mysql_res=mysql_list_tables(&mysql,"del");//检查del表是否已经存在,否则创建
 if(mysql_num_rows(mysql_res)<=0)
 {
  if(mysql_query(&mysql,"create table del(id int not null,name char(20) not null,base float not null,office float not null,post float not null,medical float not null,reserve float not null,primary key (id));")!=0)
  {//在新的数据库里面创建表
   printf("%s/n",mysql_error(&mysql));
  }
 }
 
 mysql_free_result(mysql_res);
 
 menu();
 
 scanf("%d",&number);//主消息循环
 while(flag!=0)
 {
  switch(number)
  {
   case 1 :inputmsg(&pro);msgtodbs(&mysql,pro,p);flag=0;break;//输入并输出信息
   case 2 :viewdata(&mysql,p);flag=0;break;
   case 3 :editdata(&mysql,p);flag=0;break;
   case 4 :searchdata(&mysql,p);flag=0;break;
   case 5 :deldata(&mysql,p);flag=0;break;
   case 6 :finddata(&mysql,p);flag=0;break;
   case 7 :flag=0;break;
   case 8 :outputdata(&mysql,p);flag=0;break;
   case 9 :flag=0;break;
   default :printf("输入错误/n");scanf("%d",&number);break;
  }
 }
 
 mysql_close(&mysql);
 return 0;
}

void menu()
{
 printf("/t/t/t******************************/n");
 printf("/t/t/t*      职工工资管理系统      */n");
 printf("/t/t/t*      1.输入记录            */n");
 printf("/t/t/t*      2.显示记录            */n");
 printf("/t/t/t*      3.修改记录            */n");
 printf("/t/t/t*      4.查找记录            */n");
 printf("/t/t/t*      5.删除记录            */n");
 printf("/t/t/t*      6.恢复记录            */n");
 printf("/t/t/t*      7.统计记录            */n");
 printf("/t/t/t*      8.导出记录            */n");
 printf("/t/t/t*      9.倒入记录            */n");
 printf("/t/t/t******************************/n");
 printf("输入数字1-9来选择需要执行的功能:/n");
}

void inputmsg(people *p)
{
 printf("请输入:id/n");
 scanf("%d",&p->id);
 printf("请输入:用户名/n");
 scanf("%s",p->name);
 printf("请输入:基本工资/n");
 scanf("%f",&p->base);
 printf("请输入:职务工资/n");
 scanf("%f",&p->office);
 printf("请输入:岗位津贴/n");
 scanf("%f",&p->post);
 printf("请输入:医疗保险/n");
 scanf("%f",&p->medical);
 printf("请输入:公积金/n");
 scanf("%f",&p->reserve);
 printf("%d,%s,%f,%f,%f,%f,%f/n",p->id,p->name,p->base,p->office,p->post,p->medical,p->reserve);
}

void msgtodbs(MYSQL *mysql, people pro,char p[])
{
 FILE *fp;
 fp=fopen("data","wb+");//创建一个可读可写2进制文件
 fprintf(fp,"insert into users values(%d,'%s',%f,%f,%f,%f,%f);/n",pro.id,pro.name,pro.base,pro.office,pro.post,pro.medical,pro.reserve);
 fclose(fp);
 fp=fopen("data","rb");//以2进制只读方式打开文件
 fgets(p,filelength(fileno(fp)),fp);//fileno()将FILE类型转换为open()函数打开的文件句柄类型   
 fclose(fp);       //filelenght()计算用open()函数打开的文件长度
 
 printf("%s/n",p);//显示拼装好的sql语句
 
 if(mysql_query(mysql,p)!=0)
 {//在新的数据库里面写入一行数据
  printf("%s/n",mysql_error(mysql));
 }
}

void viewdata(MYSQL *mysql,char p[])
{
 int i,j;
 MYSQL_RES *mysql_res;
 MYSQL_FIELD *field;
 MYSQL_ROW mysql_row;
 if(mysql_query(mysql,"select * from users;")!=0)
 {
  printf("%s/n",mysql_error(mysql));
 }
 mysql_res=mysql_store_result(mysql);
 
 printf("共计%d行数据/n",mysql_num_rows(mysql_res));
 
 field=mysql_fetch_fields(mysql_res);//输出字段名
 printf("/t");
 for(i=0;i<mysql_num_fields(mysql_res);i++)
 {
  printf("%s/t", field[i].name);
 }  
 printf("/n");

 for(i=0;i<mysql_num_rows(mysql_res);i++)//输出数据
 {
  mysql_row=mysql_fetch_row(mysql_res);
  printf("%d/t",i+1);
  for(j=0;j<mysql_num_fields(mysql_res);j++)
  {
   printf("%s/t",mysql_row[j]);
  }
  printf("/n");
 }
 mysql_free_result(mysql_res);
}

void searchdata(MYSQL *mysql,char p[])
{
 int i,j;
 MYSQL_RES *mysql_res;
 MYSQL_FIELD *field;
 MYSQL_ROW mysql_row;
 FILE *fp;
 
 printf("输入要查找的用户id:");
 scanf("%d",&i);
  
 fp=fopen("data","wb+");//创建一个可读可写2进制文件
 fprintf(fp,"select *from users where id=%d;/n",i);
 fclose(fp);
 fp=fopen("data","rb");//以2进制只读方式打开文件
 fgets(p,filelength(fileno(fp)),fp);//fileno()将FILE类型转换为open()函数打开的文件句柄类型   
 fclose(fp);       //filelenght()计算用open()函数打开的文件长度
 
 
 if(mysql_query(mysql,p)!=0)//执行查询语句
 {
  printf("%s/n",mysql_error(mysql));
 }
 
 mysql_res=mysql_store_result(mysql);
 
 printf("共计%d行数据/n",mysql_num_rows(mysql_res));
 
 field=mysql_fetch_fields(mysql_res);//输出字段名
 printf("/t");
 for(i=0;i<mysql_num_fields(mysql_res);i++)
 {
  printf("%s/t", field[i].name);
 }  
 printf("/n");

 for(i=0;i<mysql_num_rows(mysql_res);i++)//输出数据
 {
  mysql_row=mysql_fetch_row(mysql_res);
  printf("%d/t",i+1);
  for(j=0;j<mysql_num_fields(mysql_res);j++)
  {
   printf("%s/t",mysql_row[j]);
  }
  printf("/n");
 }
 mysql_free_result(mysql_res);
}

void editdata(MYSQL *mysql,char p[])
{
 int id;
 people pro;
 FILE *fp;
 
 printf("输入要修改的数据id号:");
 scanf("%d",&id);
 inputmsg(&pro);
 fp=fopen("data","wb+");//创建一个可读可写2进制文件
 fprintf(fp,"update users set id=%d,name='%s',base=%f,office=%f,post=%f,medical=%f,reserve=%f where id=%d;/n",pro.id,pro.name,pro.base,pro.office,pro.post,pro.medical,pro.reserve,id);
 fclose(fp);
 fp=fopen("data","rb");//以2进制只读方式打开文件
 fgets(p,filelength(fileno(fp)),fp);//fileno()将FILE类型转换为open()函数打开的文件句柄类型   
 fclose(fp);       //filelenght()计算用open()函数打开的文件长度
 printf("%s/n",p);//显示拼装好的sql语句
 if(mysql_query(mysql,p)!=0)
 {//修改数据库里面的一行数据
  printf("%s/n",mysql_error(mysql));
 }
 
}

void deldata(MYSQL *mysql,char p[])
{
 int id;
 FILE *fp;
 printf("输入要删除的数据id号:");
 scanf("%d",&id);
 
 fp=fopen("data","wb+");//创建一个可读可写2进制文件
 fprintf(fp,"insert into del select * from users where id=%d/n",id);
 fclose(fp);
 fp=fopen("data","rb");//以2进制只读方式打开文件
 fgets(p,filelength(fileno(fp)),fp);//fileno()将FILE类型转换为open()函数打开的文件句柄类型   
 fclose(fp);       //filelenght()计算用open()函数打开的文件长度
 printf("%s/n",p);//显示拼装好的sql语句
 if(mysql_query(mysql,p)!=0)
 {//迁移数据库里面的一行数据
  printf("%s/n",mysql_error(mysql));
 }
 
 fp=fopen("data","wb+");//创建一个可读可写2进制文件
 fprintf(fp,"delete from users where id=%d/n",id);
 fclose(fp);
 fp=fopen("data","rb");//以2进制只读方式打开文件
 fgets(p,filelength(fileno(fp)),fp);//fileno()将FILE类型转换为open()函数打开的文件句柄类型   
 fclose(fp);       //filelenght()计算用open()函数打开的文件长度
 printf("%s/n",p);//显示拼装好的sql语句
 if(mysql_query(mysql,p)!=0)
 {//迁移数据库里面的一行数据
  printf("%s/n",mysql_error(mysql));
 }
}

void outputdata(MYSQL *mysql,char p[])
{
 int i,j;
 MYSQL_RES *mysql_res;
 MYSQL_FIELD *field;
 MYSQL_ROW mysql_row;
 FILE *fp;
 if(mysql_query(mysql,"select * from users;")!=0)
 {
  printf("%s/n",mysql_error(mysql));
 }
 mysql_res=mysql_store_result(mysql);
 
 fp=fopen("outdata.txt","w+");
 fprintf(fp,"共计%d行数据/n",mysql_num_rows(mysql_res));
 field=mysql_fetch_fields(mysql_res);//输出字段名
 fprintf(fp,"/t");
 for(i=0;i<mysql_num_fields(mysql_res);i++)
 {
  fprintf(fp,"%s/t", field[i].name);
 }  
 fprintf(fp,"/n");

 for(i=0;i<mysql_num_rows(mysql_res);i++)//输出数据
 {
  mysql_row=mysql_fetch_row(mysql_res);
  fprintf(fp,"%d/t",i+1);
  for(j=0;j<mysql_num_fields(mysql_res);j++)
  {
   fprintf(fp,"%s/t",mysql_row[j]);
  }
  fprintf(fp,"/n");
 }
 mysql_free_result(mysql_res);
 fclose(fp);
}

void finddata(MYSQL *mysql,char p[])
{
 int i,j,id;
 MYSQL_RES *mysql_res;
 MYSQL_FIELD *field;
 MYSQL_ROW mysql_row;
 FILE *fp;
 if(mysql_query(mysql,"select * from del;")!=0)
 {
  printf("%s/n",mysql_error(mysql));
 }
 mysql_res=mysql_store_result(mysql);
 
 printf("共计有%d行数据是被删除的/n",mysql_num_rows(mysql_res));
 
 field=mysql_fetch_fields(mysql_res);//输出字段名
 printf("/t");
 for(i=0;i<mysql_num_fields(mysql_res);i++)
 {
  printf("%s/t", field[i].name);
 }  
 printf("/n");

 for(i=0;i<mysql_num_rows(mysql_res);i++)//输出数据
 {
  mysql_row=mysql_fetch_row(mysql_res);
  printf("%d/t",i+1);
  for(j=0;j<mysql_num_fields(mysql_res);j++)
  {
   printf("%s/t",mysql_row[j]);
  }
  printf("/n");
 }
 mysql_free_result(mysql_res);
 
 printf("请输入要恢复的数据id/n");
 scanf("%d",&id);
 
 
 fp=fopen("data","wb+");//创建一个可读可写2进制文件
 fprintf(fp,"insert into users select * from del where id=%d/n",id);
 fclose(fp);
 fp=fopen("data","rb");//以2进制只读方式打开文件
 fgets(p,filelength(fileno(fp)),fp);//fileno()将FILE类型转换为open()函数打开的文件句柄类型   
 fclose(fp);       //filelenght()计算用open()函数打开的文件长度
 printf("%s/n",p);//显示拼装好的sql语句
 if(mysql_query(mysql,p)!=0)
 {//迁移数据库里面的一行数据
  printf("%s/n",mysql_error(mysql));
 }
 
 fp=fopen("data","wb+");//创建一个可读可写2进制文件
 fprintf(fp,"delete from del where id=%d/n",id);
 fclose(fp);
 fp=fopen("data","rb");//以2进制只读方式打开文件
 fgets(p,filelength(fileno(fp)),fp);//fileno()将FILE类型转换为open()函数打开的文件句柄类型   
 fclose(fp);       //filelenght()计算用open()函数打开的文件长度
 printf("%s/n",p);//显示拼装好的sql语句
 if(mysql_query(mysql,p)!=0)
 {//迁移数据库里面的一行数据
  printf("%s/n",mysql_error(mysql));
 }
}

 

 

 

 

 

抱歉!评论已关闭.