| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1894 人关注过本帖
标题:一个员工管理系统 总是出现 error C2065: 'SetLevel' : undeclared identif ...
只看楼主 加入收藏
Leenson
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2015-4-5
收藏
 问题点数:0 回复次数:2 
一个员工管理系统 总是出现 error C2065: 'SetLevel' : undeclared identifier 这个问题 麻烦大家看看到底哪里错了
#include <stdio.h>

#define NUM        2                  //员工人数
//#define NUM        3                     //员工人数

//常量声明,用于变量gender的取值范围
const char Male     = 'M';
const char Female    = 'F';

//常量声明,用于变量level的取值范围
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];    //姓名,用字符数组存放。姓名的最大长度不超过30个字符
    char    gender;        //性别,取值Male和Female之一
    int    age;        //年龄
    double    score;        //综合得分
    char    level;        //等级,不能直接输入,而是通过计算
} emp[NUM];               

void InputEmployee()
{
    int i;
    printf("请输入员工信息:\t");
    printf("(员工个属性之间使用空格分开,两员工之间用回车分隔)\n\t");
    printf("员工号 姓名 性别(M/F) 年龄 综合得分\n");
    printf("\t-------------------------------------------\n");
    for(i = 0;i < NUM;++i)
    {
    scanf("%d%s%c%d%lf",&emp[i].eid,emp[i].name,&emp[i].gender,&emp[i].age,&emp[i]
  .score);
    }
    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\t=== 公司员工信息表如下 ===\t\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 Query()
{
    int i,j;
    printf("请输入查询的工号:");
    scanf("%d",&j);
    getchar();
    for(i=0;i<=NUM;++i)
    if(emp[i].eid==j)
    return i;
      printf("没有该员工信息!\n");
      return -1;
}
    //此处填入代码,实现查询指定员工的信息的功能


void Modify(int i)
{
       printf("请选择要修改的内容,1:修改年龄 2:修改分数");
    int k;
    scanf("%d",&k);
    switch(k)
    {
    case '1': {         
                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);
            }break;

    case '2': {

                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);
            };break;
     default :printf("选择错误");
    }                                                        //调用函数必须在主函数 调用
         
        
              //此处填入代码,实现修改指定员工的信息的功能
}

void QueryTheBestnWorst()
{
    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 levelsuanfa(char level)
{      
      int b=0;
        for(int a=0;a<NUM;a++)
        {
          if(emp[a].level==level)
             b++;
        }
    return b;
  
}
void LevelStatistic()
{
    char levels[5]={Outstanding,Excellent,Acceptable,Poor,Dreadful};
    for(int i=0;i<5;i++)
    printf("等级%c:一共有%d个员工\n",levels[i],levelsuanfa(levels[i]));
 //此处填入代码,实现统计每一等级的员工数目
}


const char *filename = "empinfo.txt";
void WriteFile(const char *filename, const struct employee *emp, int len)
{
/*    FILE *fp;
    int i;
    employee p = *emp;
    fp = fopen("empinfo.txt","w");
    for(i = 0;i < len;++i,++p)
        fprintf(fp,"员工号:%d  姓名:%s  性别:%c  年龄:%d  得分:%d  等级:%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 ReadFile(const char *filename, struct employee *emp, int len)
{
    //此处填入代码,实现从文件中读出员工信息
return 0;}

int main()
{
    char choice;
    int endflag = 1;
    int i;

    while (endflag)
    {
        fflush(stdin); //清空输入缓冲区
        printf(">>>>>>>>>>>>>>>>>>\n请选择你要做的工作:\n");
        printf("1. 输入员工信息\n"
               "2. 显示/排序\n"
               "3. 查询并修改员工信息\n"
               "4. 查询得分最高和最低的员工信息\n"
               "5. 统计每一等级的员工数目\n"
               "6. 将所有信息存储到一个文件中\n"
               "7. 从文件中读出信息\n"
               "8. 退出\n");

        choice = getchar();
        getchar();  // eat the last return
        switch (choice)
        {   
        case '1':   
            InputEmployee();
            SetLevel();
            PrintEmployees();
            break;
        case '2':
            PrintSorted();
            break;
        case '3':
            i = Query();
            if (i != -1)
                Modify(i);
            break;
        case '4':
            QueryTheBestnWorst();
            break;
        case '5':
            LevelStatistic();
            break;
        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;
}
搜索更多相关主题的帖子: employee 管理系统 include 
2015-04-05 11:25
天使梦魔
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:37
帖 子:564
专家分:2754
注 册:2007-8-29
收藏
得分:0 
undeclared identifier

没有定义该标识符
2015-04-08 15:39
冷月无双
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2015-4-15
收藏
得分:0 
回复 楼主 Leenson
大哥,你知道有区分大小写一说吗?setLevel 这是你定义的 ,可你调用了SetLevel
2015-04-15 11:39
快速回复:一个员工管理系统 总是出现 error C2065: 'SetLevel' : undeclared id ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.041015 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved