求大神 用C语言编写一个 公司员工管理系统 要求如下 急!!T.T 谢谢了!!

(1).录入员工信息(2).根据员工的分数自动设置员工的等级(3).显示所有员工信息(以一定的格式)(4).查询员工信息(以一种或多种方式)(5).修改员工信息并保存(6... (1).录入员工信息
(2).根据员工的分数自动设置员工的等级
(3).显示所有员工信息(以一定的格式)
(4).查询员工信息(以一种或多种方式)
(5).修改员工信息并保存
(6).统计员工信息并显示
(7).对员工信息进行排序并显示
(8).保存员工信息到硬盘文件
(9).从硬盘文件获得员工信息
case '6':
WriteFile(filename, emp, NUM);
break;
case '7':
if (ReadFile(filename, emp, NUM) < 0)
printf("file does not exist\n");
else
printf("信息已从文件读入,请进行其它操作\n");
break;
case '8':
endflag = 0;
break;
default:
printf("选择错误。请重新选择。\n");
}
}
return 0;
}
展开
 我来答
lingyoupan
2015-04-05 · TA获得超过469个赞
知道答主
回答量:53
采纳率:100%
帮助的人:29.1万
展开全部
#include <stdio.h>
#define NUM 2 //员工人数
 
const char Male = 'M';
const char Female = 'F';
const char Outstanding = 'O';
const char Excellent = 'E';
const char Acceptable = 'A';
const char Poor = 'P';
const char Dreadful = 'D';
struct employee
{
     int eid; //员工号
      char name[30]; //姓名,
      char gender; //性别,
      int age; //年龄
       double score; //综合得分
      char level; //等级,
} emp[NUM];
void Input()
{
    int i;
    printf("注:每个员工属性用空格分隔,员工之间用回车分隔\n");
    printf("-----------------------------------------\n");
    printf("员工号 姓名 性别(M/F) 年龄 成绩\n");
     for(i=0; i<NUM; ++i)
 {
      scanf("%d%s%*c%c%d%lf",&emp[i].eid,emp[i].name,&emp[i].gender,&emp[i].age,&emp[i]
  .score); //%*c 用于滤过前面%s 输入的空格
 }
     getchar(); 
}
 
void PrintEmployee(int i)
{
    printf("%d\t%s\t%c\t%d\t%.2lf\t%c\n",emp[i].eid,emp[i].name,emp[i].gender,emp[i].age,emp
    [i].score,emp[i].level);
}
void PrintEmployees()
{
      int i=0;
     printf("\n=== 公司员工信息表 ===\n");
     printf("员工号\t 姓名\t 性别\t 年龄\t 得分\t 等级\n");
     printf("-----------------------------------------------\n");
    while(i<NUM)
{
PrintEmployee(i);
    i++;
}
     putchar('\n');
}
char getLevel(double score) 
{
   char level;
   if (score>=90&&score<=100)
   level=Outstanding ;
   else if (score>=80&&score<=89)
   level=Excellent;
   else if (score>=70&&score<=79)
   level=Acceptable;
   else if (score>=60&&score<=69)
   level=Poor;
   else
   level=Dreadful;
   return level;
}
void setLevel() //功能:设置员工等级
{
   int i;
   for(i=0; i<NUM; i++)
   emp[i].level = getLevel(emp[i].score);
}
void Sort(int max[])
{
   int i,j,t,y;
   for(i=0; i<NUM; i++)
   max[i]=i; //用一个数组存放结构体数组元素的序号,
   for(i=0; i<NUM-1; i++)
   {
      y=0; //序号数组从第一个开始进行新一轮排序
      for(j=0; j<NUM-1-i; j++)
  {
         if(emp[max[y]].score<emp[max[y+1]].score)
 {
            t=max[y]; //序号进行交换,
             max[y]=max[y+1];
             max[y+1]=t;
 }
              ++y;
  }
   }
}
void PrintSorted()
{
   int i;
   int a[NUM]; //获取排序后的序号数组
   Sort(a);
   printf("\n=== 公司员工信息表(按得分排序) ===\n");
   printf("员工号\t 姓名\t 性别\t 年龄\t 得分\t 等级\n");
   printf("-----------------------------------------------\n");
   for(i=0;i<NUM; i++)
   PrintEmployee(a[i]);
}
//查询和修改
int explore()
{
   int i,id;
   printf("请输入要查找的员工号:");
   scanf("%d",&id);
   getchar();
   for(i=0; i<NUM; ++i)
   if(emp[i].eid==id)
   return i;
      printf("没有找到员工信息。请检查输入的员工号是否正确。\n");
      return -2;
}
void changeage(int i)
{
int age;
   printf("员工名字%s 原来的年龄为%d\n", emp[i].name, emp[i].age);
   printf("年龄只支持小写\n");
   printf("请输入他/她现在的年龄:");
   scanf("%d",&age); 
   getchar(); 
   printf("修改成功\n");
   emp[i].age = age;
   PrintEmployee(i);
}
void changescore(int i)
{
int score;
   printf("员工名字%s 原来的得分为%f\n", emp[i].name, emp[i].score);
   printf("得分只支持小写\n");
   printf("请输入他/她现在的得分:");
   scanf("%d",&score); 
   getchar(); 
   printf("修改成功\n");
   emp[i].score = score;
   PrintEmployee(i);
}
void getbestworst()                    //查询得分最高和最低的员工
{
int i,best,worst;
double max,min;
max=emp[0].score;
for(i=1;i<NUM;i++)
{
if(emp[i].score>max)
{
max=emp[i].score;
        best=i;
}
}
 printf("\n员工号 \t姓名\t性别\t年龄\t 得分 \t      等级\n");
 printf("%d\t%s\t%c\t%d\t%lf\t%c\n",emp[best].eid,emp[best].name,emp[best].gender,emp[best].age,emp[best].score,emp[best].level);
    min=emp[NUM-1].score;
for(i=0;i<NUM;i++)
{
if(emp[i].score<min)
{
min=emp[i].score;
worst=i;
}
}
 printf("\n员工号 \t姓名\t性别\t年龄\t 得分 \t      等级\n");
 printf("%d\t%s\t%c\t%d\t%lf\t%c\n",emp[worst].eid,emp[worst].name,emp[worst].gender,emp[worst].age,emp[worst].score,emp[worst].level);
}
int level1(char level)
{      
int b=0;
     for(int a=0;a<NUM;a++)
 {
 if(emp[a].level==level)
 b++;
 }
           return b;
 
}
void  level2()
{
char levels[5]={Outstanding,Excellent,Acceptable,Poor,Dreadful};
for(int i=0;i<5;i++)
printf("等级%c:一共有%d个员工\n",levels[i],level1(levels[i]));
}
void wenjian()
{
 
int i;
FILE *fp;
fp=fopen("aaaaa.plg","wt");
for(i=0;i<NUM;i++)
 fprintf(fp,"员工号:%d  姓名:%s  性别:%c  年龄:%d  得分:%lf  等级:%c\n", emp[i].eid, emp[i].name, emp[i].gender,
         emp[i].age, emp[i].score, emp[i].level);
         fclose(fp);
printf("创建文件成功\n");
  
}
 
int main()      
{
char choice;
int endflag = 1;
 int i;
 int x;
 
while (endflag)
{
fflush(stdin); //清空输入缓冲区
printf(">>>>>>>>>>>>>>>>>>\n请选择你要做的工作:\n");
printf("1. 输入员工信息\n"
       "2. 显示/排序\n"
       "3. 查询并修改员工信息___选择1为修改年龄,选择2为修改得分\n"
       "4. 查询得分最高和最低的员工信息\n"
       "5. 统计每一等级的员工数目\n"
       "6. 将所有信息存储到一个文件中\n"
       "7. 退出\n");
printf("请用1-7以为的数字表达:\n");
 
choice = getchar();
getchar();  
switch (choice)
{
case '1': //能接收从键盘输入的20 位员工的信息,并能存储在内存中
Input();
setLevel();
PrintEmployees();
break;
case '2':    //按照得分从高到低进行排序
PrintSorted();
break;
case '3':    //根据员工号查询并修改某位员工的信息;
   i = explore();
   if (i != -2)
printf("请输入1或者2:");
scanf("%d",&x);
switch(x)
{
  case 1: changeage(i);break;
                                  case 2: changescore(i);break;
  default :printf("选择错误");
}
PrintEmployees();
break;
case '4':     //查出得分最高和最低的员工信息
getbestworst();
break;
case '5':    //统计每一等级的员工数目
level2();
break;
case '6': 
wenjian(); // 用文件保存信息
break;
case '7': 
endflag = 0;
break;
default:
printf("选择错误。请重新选择。\n");
}
}
return 0;
}
 
出自百度文库http://wenku.baidu.com/link?url=1NPL2s1phoarBKDdxNE3yc5m5JfBj04Q-2WE_IBdOMVO1Tdw6mnktsHj0rHcmSGxnU00q78zlKpDM5JHniXkNFp3kyrXK2A_JiXTE5QODCG
easysoft_ln
2015-04-05 · TA获得超过1208个赞
知道大有可为答主
回答量:1.3万
采纳率:41%
帮助的人:4710万
展开全部

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式