⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 职工管理系统.cpp

📁 用vc写的一个职工管理系统
💻 CPP
📖 第 1 页 / 共 3 页
字号:
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<malloc.h>
#include"inputkeys.cpp"
#define L sizeof(employee)
#define HL sizeof(filehead)
#define BUG1(p) if(p->num==10)\
		p->num=99999;
#define BUG2(p) if(p->num==99999)\
		p->num=10;

FILE *fp;
FILE *tempfp;
char filename[20];				//文件名
char filenamepostfix[]=".dat";			//文件后缀名
char password_[20];				//确认密码
struct filehead					//密码结构体
{
 int on_off;					//密码开启/禁用 0为默认值/禁用 1为开启密码
 char password[20];				//密码 on_off为1时有效 	
}filehead_={0,""};

#pragma pack(1)
struct employee					//职工信息结构体 
{
	int num;					//职工号 
	char name[10];				//姓名	 
	char sex[4];				//性别 
	int age;					//年龄 
	char sclrec[6];				//学历 
	int pay;					//工资 
	char address[40];			//地址	
	char phonenum[12];			//电话号码
};
#pragma pack()

void build()
{ 
 employee *p;
 int i;
again4:
 system("cls");
 printf("                            ╔═══════════╗\n"); 
 printf("                            ║    请输入职工信息    ║\n");
 printf("                            ╠═══════════╣\n");
 printf("                            ║各项数据之间用空格或者║\n");
 printf("                            ║    Tab(制表符)隔开   ║\n");
 printf("                            ╚═══════════╝\n");
 printf("输入顺序:职工号-->>姓名-->>性别-->>年龄-->>学历-->>工资-->>地址-->>电话号码\n");
 fflush(stdin);
 p=(employee *)malloc(L); 
 scanf("%d%s%s%d%s%d%s%s",&p->num,p->name,p->sex,&p->age,p->sclrec,&p->pay,p->address,p->phonenum);
BUG1(p)////////////////////////////////////////////////////////////////////////////////
 if(fp==NULL)
   fp=fopen(filename,"a");
 fwrite(p,L,1,fp);
 free(p); 
 printf("\n\n\n\n");
 printf("                          ╔═════════════╗\n"); 
 printf("                          ║ 按 1 继续输入数据        ║\n");
 printf("                          ╠═════════════╣\n"); 
 printf("                          ║ 按 2 返回上一级          ║\n");
 printf("                          ╠═════════════╣\n"); 
 printf("                          ║ 按 3 退出程序            ║\n");
 printf("                          ╚═════════════╝\n");
again5:  
 fflush(stdin);
 i=getch();
 switch(i)
 {
  case 49:
   goto again4;
  case 50:
   fclose(fp);
   fp=NULL;
   return;
  case 51:
   fclose(fp);  
   exit(0);
  default:  
   goto again5;
 }
}

void creat()
{
   int i;
again3:      
   system("cls");
   fflush(stdin);
   printf("\n\n\t请输入路径及文件名: ");
   scanf("%s",filename);
   strcat(filename,filenamepostfix); 
   if((fp=fopen(filename,"w+"))==NULL)
    {
	 printf("\n\t创建失败!");
         printf("\n\t按任意键返回...");
	 fflush(stdin);
	 getch();
	 return;
    }
   fwrite(&filehead_,sizeof(filehead_),1,fp);	
   printf("\n\t创建成功!\n");
   printf("\n\t按任意键继续...");
   fflush(stdin);
   getch();		
again2: 
   system("cls");   
   printf("\n\n\n\n\n\n");
   printf("                          ╔════════════╗\n"); 
   printf("                          ║ 按 1 进入数据存放系统  ║\n");
   printf("                          ╠════════════╣\n"); 
   printf("                          ║ 按 2 重新建立一个文件  ║\n");
   printf("                          ╠════════════╣\n"); 
   printf("                          ║ 按 3 返回上一级        ║\n");
   printf("                          ╠════════════╣\n"); 
   printf("                          ║ 按 4 退出程序          ║\n");
   printf("                          ╚════════════╝\n"); 
   fflush(stdin);
   i=getch();
   switch(i)
   {
    case 49:
     build();
     goto again2;
    case 50:
     if(fp!=NULL)
       fclose(fp);
     i=0;
     goto again3;
    case 51:
     if(fp!=NULL)
     fclose(fp);
     return;
    case 52:
    if(fp!=NULL)
     fclose(fp);
     exit(0);
    default:
     goto again2;
   }
}

void look()
{
 employee *p;
 int i; 
 fflush(stdin);
 system("cls"); 
 printf("                          ╔════════════╗\n"); 
 printf("                          ║     职工信息如下表     ║\n");
 printf("                          ╚════════════╝\n");
 printf("职工号--姓名-----性别--年龄---学历---工资-----地址----------------电话号码------\n");
 p=(employee *)malloc(L);
 for(;fread(p,L,1,fp);)
  {
BUG2(p)/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
   printf("  %-3d   %-9s %-4s  %-3d   %-6s %-6d   %-20s %-12s\n\n",p->num,p->name,p->sex,p->age,p->sclrec,p->pay,p->address,p->phonenum);
BUG1(p)/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  }
 free(p); 
 printf("                          ╔════════════╗\n"); 
 printf("                          ║ 按 1 返回上一级        ║\n");
 printf("                          ╠════════════╣\n"); 
 printf("                          ║ 按 2 退出程序          ║\n");
 printf("                          ╚════════════╝\n");
again7:
 fflush(stdin);
 i=getch(); 
 switch(i)
 {
  case 49:
   return;
  case 50:
   fclose(fp);
   exit(0);
  default: 
   goto again7;
 }
  
}

void reopen()
{
 fclose(fp);
 if((fp=fopen(filename,"r+"))==NULL)
  {
   printf("\n打开文件错误,输入任意键退出程序!");
   fflush(stdin);
   getch(); 
   exit(0);
  }
 fseek(fp,HL,SEEK_CUR); 
}

void rewind_(FILE *fp_)
{
 fseek(fp_,HL,SEEK_SET);
}

void search_1()
{
 employee *p;
 int i,j=0; 
 system("cls");
 printf("                          ╔═══════════╗\n"); 
 printf("                          ║     以职工号搜索     ║\n");
 printf("                          ╚═══════════╝\n");
 printf("请输入你要找的职工号:");
 scanf("%d",&i);
 p=(employee *)malloc(L);
 rewind_(fp);
 for(;fread(p,L,1,fp);)
  {
BUG2(p)/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
   if(p->num==i)
    {
	 j=1;
BUG1(p)/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	 break;
    }
  } 
 rewind_(fp); 
 if(j==1)
  {
   printf("以下为你要找的职工信息:\n\n");
   printf("职工号--姓名-----性别--年龄---学历---工资-----地址----------------电话号码------\n");
BUG2(p)/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
   printf("  %-3d   %-9s %-4s  %-3d   %-6s %-6d   %-20s %-12s\n\n",p->num,p->name,p->sex,p->age,p->sclrec,p->pay,p->address,p->phonenum);
BUG1(p)/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  }
 else
  printf("\n没有你要找的职工号!\n");
  printf("\n按任意键返回上一级..."); 
  fflush(stdin);
  getch();
 free(p); 
}
void search_2()
{
 employee *p;
 char i[10]; 
 int j=0; 
 system("cls");
 printf("                          ╔═══════════╗\n"); 
 printf("                          ║    以职工姓名搜索    ║\n");
 printf("                          ╚═══════════╝\n");
 printf("请输入你要找的姓名:");
 fflush(stdin);
 scanf("%s",i);
 p=(employee *)malloc(L);
 rewind_(fp);
 for(;fread(p,L,1,fp);)
  {
   if(!strcmp(p->name,i))
    {
	 j=1;
	 break;
    }
  }  
 rewind_(fp); 
 if(j==1)
  {
   printf("以下为你要找的职工信息:\n\n");
   printf("职工号--姓名-----性别--年龄---学历---工资-----地址----------------电话号码------\n");
BUG2(p)/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
   printf("  %-3d   %-9s %-4s  %-3d   %-6s %-6d   %-20s %-12s\n\n",p->num,p->name,p->sex,p->age,p->sclrec,p->pay,p->address,p->phonenum);
BUG1(p)/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  }
 else
  printf("\n没有你要找的姓名!\n");
  printf("\n按任意键返回上一级..."); 
  fflush(stdin);
  getch();
 free(p);	
}
void search_3()
{
 employee *p;
 char i[40]; 
 int j=0; 
 system("cls");
 printf("                          ╔═══════════╗\n"); 
 printf("                          ║    以职工地址搜索    ║\n");
 printf("                          ╚═══════════╝\n");
 printf("请输入你要找职工的地址:");
 fflush(stdin);
 scanf("%s",i);
 p=(employee *)malloc(L);
 rewind_(fp);
 for(;fread(p,L,1,fp);)
  {
   if(!strcmp(p->address,i))
    {
	 j=1;
	 break;
    }
  }  
 rewind_(fp); 
 if(j==1)
  {
   printf("以下为你要找的职工信息:\n\n");
   printf("职工号--姓名-----性别--年龄---学历---工资-----地址----------------电话号码------\n");
BUG2(p)/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
   printf("  %-3d   %-9s %-4s  %-3d   %-6s %-6d   %-20s %-12s\n\n",p->num,p->name,p->sex,p->age,p->sclrec,p->pay,p->address,p->phonenum);
BUG1(p)/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  }
 else
  printf("\n没有你要找的职工地址!\n");
  printf("\n按任意键返回..."); 
  fflush(stdin);
  getch();
 free(p);
}
void search_4()
{
 employee *p;
 char i[12]; 
 int j=0; 
 system("cls");
 printf("                          ╔═══════════╗\n"); 
 printf("                          ║    以电话号码搜索    ║\n");
 printf("                          ╚═══════════╝\n");
 printf("请输入你要找职工的电话号码:");
 fflush(stdin);
 scanf("%s",i);
 p=(employee *)malloc(L);
 rewind_(fp);
 for(;fread(p,L,1,fp);)
  {
   if(!strcmp(p->phonenum,i))
    {
	 j=1;
	 break;
    }
  }  
 rewind_(fp); 
 if(j==1)
  {
   printf("\n以下为你要找的职工信息:\n\n");
   printf("职工号--姓名-----性别--年龄---学历---工资-----地址----------------电话号码------\n");
BUG2(p)/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
   printf("  %-3d   %-9s %-4s  %-3d   %-6s %-6d   %-20s %-12s\n\n",p->num,p->name,p->sex,p->age,p->sclrec,p->pay,p->address,p->phonenum);
BUG1(p)/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  }
 else
  printf("\n没有你要找的职工的电话号码!\n");
  printf("\n按任意键返回..."); 
  fflush(stdin);
  getch();
 free(p);
}
void search_()
{
 int i; 
again9:  
 system("cls"); 
 printf("\n\n\n\n\n\n");
 printf("                          ╔════════════╗\n");
 printf("                          ║ 按 1 以职工号搜索      ║\n");
 printf("                          ╠════════════╣\n"); 
 printf("                          ║ 按 2 以名字搜索        ║\n");
 printf("                          ╠════════════╣\n"); 
 printf("                          ║ 按 3 以地址搜索        ║\n");
 printf("                          ╠════════════╣\n"); 
 printf("                          ║ 按 4 以电话号码搜索    ║\n");
 printf("                          ╠════════════╣\n"); 
 printf("                          ║ 按 5 返回上一级        ║\n");
 printf("                          ╠════════════╣\n"); 
 printf("                          ║ 按 6 退出程序          ║\n");
 printf("                          ╚════════════╝\n");
 fflush(stdin);
 i=getch();
 switch(i)
 {
  case 49:
   search_1();
   reopen();
   goto again9;
  case 50:
   search_2();
   reopen();
   goto again9;
  case 51:
   search_3();
   reopen();
   goto again9;
  case 52:
   search_4();
   reopen();
   goto again9;
  case 53:
   return;
  case 54:
   exit(0); 
  default:  
   goto again9;
 }   
}
void compositor_(int n)
{
 employee *p1,*p2,*p;
 int i,j,k; 
 rewind_(fp);
 p=(employee *)malloc(L);
 for(i=0;fread(p,L,1,fp);i++);
 free(p);
 for(j=0;j<i-1;j++)
 { 
  rewind_(fp); 
  p1=(employee *)malloc(L);
  p2=(employee *)malloc(L);   
  fread(p1,L,1,fp);
  fread(p2,L,1,fp);
BUG2(p1)/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
BUG2(p2)/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  for(k=0;k<i-1-j;k++)
  {
   switch(n)
   {
    case 1:   
     if((p2->num)<(p1->num))
      {
BUG1(p1)/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
BUG1(p2)/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
       fseek(fp,-L,SEEK_CUR);
       fwrite(p1,L,1,fp);
       fseek(fp,-(L*2),SEEK_CUR);
       fwrite(p2,L,1,fp);
       fseek(fp,L,SEEK_CUR);
      }
     break;
    case 2:	  
     if((p2->num)>(p1->num))
      {
BUG1(p1)/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
BUG1(p2)/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
       fseek(fp,-L,SEEK_CUR);
       fwrite(p1,L,1,fp);
       fseek(fp,-(L*2),SEEK_CUR);
       fwrite(p2,L,1,fp);
       fseek(fp,L,SEEK_CUR);
      } 
     break;
	case 3:
     if((p2->age)<(p1->age))
      {
BUG1(p1)/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
BUG1(p2)/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
       fseek(fp,-L,SEEK_CUR);
       fwrite(p1,L,1,fp);
       fseek(fp,-(L*2),SEEK_CUR);
       fwrite(p2,L,1,fp);
       fseek(fp,L,SEEK_CUR);
      } 
     break;
    case 4:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -