c语言实现信息管理系统

                    c语言实现的员工信息管理系统

    第一次写博客,内心还有点小忐忑,这个系统是为期两周写出来的课设。不知道该说些啥,就随便说说吧。。。。。。该系统实现了对员工信息的添加修改,删除,查询,打印,排序,统计的一系列功能。其中采用了结构体数组,文件的打开,存储。期间还有对背景颜色的改变,首先是对文件的读写,再者录入职工信息时,getch(),借助这个函数是有键盘缓冲区的功能,可以隐藏在运行框中一些不必要的提示指令,这个运行得前提是自己先写一个员工信息的记事本,里面包括员工的个数,职工号,姓名,性别,年龄,学历,工资,地址,电话。然后存到本地电脑的d盘文件名为worker,即可运行。代码如下
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#define N 100
#define  PAGE 3

		                                      
/*职工结构体类型*/
struct   staff
{     int  num;
      char name[20];
	  char sex[4];
	  int  age;
	  char deg[20];
      int  salary;
	  char add[20];
	  char  tel[40];
}s[50];
int readfile(struct staff s[])
{ 
	FILE *fp;
	int i=0,n;
	fp=fopen("d:\\worker.txt","r");
      fscanf(fp,"%d",&n);
      for(i=0;i<n;i++)
        fscanf(fp,"%d\t%s\t%s\t%d\t%s\t%d\t%s\t%s\n",&s[i].num,s[i].name, s[i].sex,&s[i].age, s[i].deg,&s[i].salary,s[i].add,s[i].tel);
	fclose(fp);
	return n;
}
void savefile(struct staff s[])
{ FILE *fp;
	int i=0,n;
	fp=fopen("d:\\worker.txt","w");
      fscanf(fp,"%d",&n);
      for(i=0;i<n;i++)
        fscanf(fp,"%d\t%s\t%s\t%d\t%s\t%d\t%s\t%s\n",&s[i].num,s[i].name, s[i].sex,&s[i].age, s[i].deg,&s[i].salary,s[i].add,s[i].tel);
	fclose(fp);	
}
int  input( struct staff s[])
{     int  i=0;
      
	  printf("\n\n          录入职工信息(最多%d个人)\n",N);
	  printf("------------------------------------------------\n");
	  do
	  {  
		 printf("\n        第%d个职工",i+1);
	     printf("\n         职工号:");
		 scanf("%d",&s[i].num);
		 if(s[i].num==0)  break;
         printf("\n         姓名:");
		 scanf("%s",s[i].name);
         printf("\n         性别:");
		 scanf("%s",s[i].sex);
	     printf("\n         年龄:");
		 scanf("%d",&s[i].age);
	     printf("\n         学历:");
		 scanf("%s",s[i].deg);
	     printf("\n         工资:");
		 scanf("%d",&s[i].salary);
	     printf("\n         住址:");
		 scanf("%s",s[i].add);
	     printf("\n         电话:");
		 scanf("%d",&s[i].tel);
		 i++;
	  }while(i<N);
	  printf("\n         第%d个职工信息输入完毕!    \n",i);
	  printf("\n         按任意键返回主菜单!");
	  getch();
	  return i ;
	  
}

/*输出模块*/
void  output(struct staff s[],int n)
{      
	   int  i=0;
       system("cls");
       printf("职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话\n");
	   printf("------------------------------------------------\n");
        for(i=0;i<n;i++)
		  printf("%d\t%s\t%s\t%d\t%s\t%d\t%s\t%s\n\n",s[i].num,s[i].name, s[i].sex,s[i].age,s[i].deg,s[i].salary,s[i].add,s[i].tel);
		 if(i>n)                     
		   printf("\n        该职工不存在!");
     printf("\n         按任意键返回主菜单!");
	 getch();
		 
	   
}
void add(struct staff s[])   /*添加信息模块*/
{     int i=0,m,n;
       n=readfile(s);
       printf("输入要增加的个数");
	   scanf("%d",&m) ;
  printf("\n\n    ------添加一个新的职工------\n\n\n");
  for(i=n;i<n+m;i++)
	  {  
	     printf("\n         职工号:");
		 scanf("%d",&s[i].num);
         printf("\n         姓名:");
		 scanf("%s",&s[i].name);
         printf("\n         性别:");
		 scanf("%s",&s[i].sex);
	     printf("\n         年龄:");
		 scanf("%d",&s[i].age);
	     printf("\n         学历:");
		 scanf("%s",&s[i].deg);
	     printf("\n         工资:");
		 scanf("%d",&s[i].salary);
	     printf("\n         住址:");
		 scanf("%s",&s[i].add);
	     printf("\n         电话:");
		 scanf("%s",&s[i].tel);
        printf("职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话\n");
         printf("%d\t%s\t%s\t%d\t%s\t%d\t%s\t%s\n",s[i].num,s[i].name, s[i].sex,s[i].age, s[i].deg,s[i].salary,s[i].add,s[i].tel);
     }
       FILE *fp;
	  fp=fopen("d:\\worker.txt","w") ;
	  fprintf(fp,"%d\n",n+m);
	  for(i=0;i<n+m;i++)
	      fprintf(fp,"%d\t%s\t%s\t%d\t%s\t%d\t%s\t%s\n",s[i].num,s[i].name, s[i].sex,s[i].age, s[i].deg,s[i].salary,s[i].add,s[i].tel);
     
     fclose(fp);
	  printf("****按任意键返回!****");
   getch();
}
void modify(struct staff s[])
{    
int  i=0,choice,modify_num,flag,n;
    n=readfile(s);
	
    do
	{
	   printf("\n     输入要修改的职工号:");
	   scanf("%d",&modify_num);
	   for(i=0;i<n;i++)
	   if(s[i].num==modify_num)
	   {
	     printf("\n\n               职工信息  \n");
         printf("-------------------------------------------------------\n");
	     printf("职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话\n");
		 printf("%d\t%s\t%s\t%d\t%s\t%d\t%s\t%s\n",s[i].num,s[i].name,s[i].sex,s[i].age,s[i].deg,s[i].salary,s[i].add,s[i].tel);

		  printf("\n              您要修改哪一项\n");
          printf("\n              1 : 职工号\n");
          printf("\n              2 : 姓名\n");
          printf("\n              3 : 性别\n");
          printf("\n              4 : 年龄\n");
          printf("\n              5 : 学历\n");
          printf("\n              6 : 工资\n");
          printf("\n              7 : 住址\n");
          printf("\n              8 : 电话\n");
          printf("\n              请选择(1-7):");
		  scanf("%d",&choice);
		  switch(choice)
		  {
          case 1 :printf("\n      输入修改后的职工号:");
				  scanf("%d",&s[i].num);break;
		  case 2 :printf("\n      输入修改后的姓名:");
				  scanf("%s",s[i].name);break;
		  case 3 :printf("\n      输入修改后的性别:");
				  scanf("%s",s[i].sex);break;
          case 4 :printf("\n      输入修改后的年龄:");
			      scanf("%d",&s[i].age);break;
		  case 5 :printf("\n      输入修改后的学历:");
				  scanf("%s",s[i].deg);break;
		  case 6 :printf("\n      输入修改后的工资:");
				  scanf("%d",&s[i].salary);break;
          case 7 :printf("\n      输入修改后的住址:");
				  scanf("%s",s[i].add);break;
          case 8 :printf("\n      输入修改后的电话:");
				  scanf("%s",s[i].tel);break;
		  }
         printf("\n\n        >>>>>职工信息<<<<<  \n");
         printf("----------------------------------------------------\n");
	     printf("职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话\n");
		 printf("%d\t%s\t%s\t%d\t%s\t%d\t%s\t%s\n",s[i].num,s[i].name, s[i].sex,s[i].age,s[i].deg,s[i].salary,s[i].add,s[i].tel);
		 break;
	   }
	   if(i==n)
       {
	     printf("\n        该职工不存在!");
	   }
	   printf("\n\n        继续修改吗?(Y/N)");
	   choice=getch();
	   if(choice=='Y'||choice=='y')
	   {
	     flag=1;
		 printf("\n        继续!\n");
	   }
	   else  flag=0;
	}while(flag==1);
	 FILE *fp;
	  fp=fopen("d:\\worker.txt","w") ;
	  fprintf(fp,"%d\n",n);
	  for(i=0;i<n;i++)
	      fprintf(fp,"%d\t%s\t%s\t%d\t%s\t%d\t%s\t%s\n",s[i].num,s[i].name, s[i].sex,s[i].age, s[i].deg,s[i].salary,s[i].add,s[i].tel);
     
     fclose(fp);
	  printf("****按任意键返回!****");
   getch();
    printf("\n         按任意键返回主菜单!");
    
}
void del(struct staff s[])              /*删除信息模块*/
{  
   int i,n,m;
     n=readfile(s);
   printf("*******删除一个职工信息********\n\n");
   printf("     请输入要删除的职工号    ");
   scanf("%d",&m);
   for(i=0;i<n;i++)
      if(s[i].num==m)
	  {  
		 printf("职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话\n");
		    printf("%d\t%s\t%s\t%d\t%s\t%d\t%s\t%s\n",s[i].num,s[i].name,s[i].sex,s[i].age,s[i].deg,s[i].salary, s[i].add,s[i].tel);
       
	  }
	   FILE *fp;
	  fp=fopen("d:\\worker.txt","w") ;
	  fprintf(fp,"%d\n",n-1);
	for(i=0;i<n-1;i++)
	      fprintf(fp,"%d\t%s\t%s\t%d\t%s\t%d\t%s\t%s\n",s[i].num,s[i].name, s[i].sex,s[i].age, s[i].deg,s[i].salary,s[i].add,s[i].tel);
     fclose(fp);
	 
}	
void  inquire(struct staff s[],int n)           /*信息查询模块*/
{
	 int i,inquire_num;
     system("cls");
     printf("*******查询职工信息********\n\n");
	 printf("       请输入要找职工的职工号:");
	 scanf("%d",&inquire_num);
	 for(i=0;i<n;i++)
	 if(s[i].num==inquire_num&&s[i].num!=0)
	 {
	   printf("*******该职工信息表*******\n\n");
	   printf("职工号 姓名 性别 年龄 学历 工资 住址 电话\n");
       printf("\n\n%d %s %s %d %s %d %s %s",s[i].num,s[i].name,s[i].sex,s[i].age,s[i].deg,s[i].salary,s[i].add,s[i].tel);
	   break;
	 }
 	if(i==n)
		 printf("该职工不存在!\n\n");
	     getch();
	     printf("按任意键返回主菜单!");
}
  void  count(struct staff s[],int n)           /*信息查询模块*/
{
	 int i,salaryb;
     system("cls");
     printf("*******查询职工信息********\n\n");
	 printf("       请输入要找职工的工资:");
	 scanf("%d",&salaryb);
	 for(i=0;i<n;i++)
	 if(s[i].salary==salaryb)
	 {
	   printf("*******该职工信息表*******\n\n");
	   printf("职工号 姓名 性别 年龄 学历 工资 住址 电话\n");
       printf("\n\n%d %s %s %d %s %d %s %s",s[i].num,s[i].name,s[i].sex,s[i].age,s[i].deg,s[i].salary,s[i].add,s[i].tel);
	   break;
	 }
 	if(i==n)
		 printf("该职工不存在!\n\n");
	     getch();
	     printf("按任意键返回主菜单!");
}
   void sort_age(struct staff s[],int n)
{
  int i,j;
  n=readfile(s);
   printf("\n           排行\n");
   printf("-------------------------------------------------------\n");
   for(i=n-2;i>=0;i--)
     for(j=0;j<=i;j++)
	  if(s[j].age>s[j+1].age)
		 {  struct staff t;
		   t=s[j];
          s[j]=s[j+1];
          s[j+1]=t;
		 }
     FILE *fp;
	  fp=fopen("d:\\worker.txt","w") ;
	  fprintf(fp,"%d\n",n);
	for(i=0;i<n;i++)
	      fprintf(fp,"%d\t%s\t%s\t%d\t%s\t%d\t%s\t%s\n",s[i].num,s[i].name, s[i].sex,s[i].age, s[i].deg,s[i].salary,s[i].add,s[i].tel);
     fclose(fp);
   }
void sort_age1(struct staff s[],int n)
{
  int i,j;
  n=readfile(s);
   printf("\n           排行\n");
   printf("-------------------------------------------------------\n");
   for(i=n-2;i>=0;i--)
     for(j=0;j<=i;j++)
	  if(s[j].age<s[j+1].age)
		 {  struct staff t;
		   t=s[j];
          s[j]=s[j+1];
          s[j+1]=t;
		 }
     FILE *fp;
	  fp=fopen("d:\\worker.txt","w") ;
	  fprintf(fp,"%d\n",n);
	for(i=0;i<n;i++)
	      fprintf(fp,"%d\t%s\t%s\t%d\t%s\t%d\t%s\t%s\n",s[i].num,s[i].name, s[i].sex,s[i].age, s[i].deg,s[i].salary,s[i].add,s[i].tel);
     fclose(fp);
   }

     main(int argc,char*argv[])
{  
		 struct staff w[50];
   int  choice,m,b,sum,n,d,k;
   system("color 9e");
   m=123;
   printf("请输入密码:");
  scanf("%d",&b);
   if(b==m)
   {
	 printf("进入系统");
     n=readfile(w);
   if(n==0)
   {
      printf("并录入基本库存信息!*********\n");
	  getch();
	  n=input(w);
   }
   do
   {

	  printf(" \n          **********职工信息系统**********\n\n");
      printf(" \n                1 :  添加职工信息");
      printf(" \n                2 :  修改职工信息");
      printf(" \n                3 :  删除职工信息");
      printf(" \n                4 :  查询职工信息");
	  printf(" \n                5 :  打印职工信息");
      printf(" \n                6 :  职工年龄排序信息");
      printf(" \n                7:   职工年龄1排序信息");
      printf(" \n                8 :  统计职工信息");
      printf(" \n                0 :  退出系统");
      printf(" \n                 请选择(0-8)");
      scanf("%d",&choice);
      switch(choice)
	  {
	  case 1:add(w);              break;
	  case 2:modify(w);               break;
      case 3:del(w);                 break;
      case 4:inquire(w,n);              break;
	  case 5:output(w,n);               break;
      case 6:sort_age(w,n);                 break;
      case 7:sort_age1(w,n);                 break;
    case 8:count(w,n);               break;
      case 0:                        break;
	  }
   }while(choice!=0);
   }else
	   printf("密码错误!!!!\n");
   savefile(w); 
}
效果图见下图有点大
 

猜你喜欢

转载自blog.csdn.net/du111_/article/details/79873655