| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 489 人关注过本帖
标题:员工管理系统求教,,怎么写也不对 请高手指教
只看楼主 加入收藏
请问你好吗
Rank: 2
等 级:论坛游民
帖 子:64
专家分:51
注 册:2011-11-27
结帖率:81.48%
收藏
 问题点数:0 回复次数:0 
员工管理系统求教,,怎么写也不对 请高手指教
,怎么写也不对 请高手指教
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

/*******************************
/*  结构类型定义
/*******************************/
struct employee
{
    char name[20];
    int age;
    char sex;
    float salary;
};
/*******************************
/*  显示所有员工函数
/*******************************/
void display(struct employee *p, int n){
    int i;
    printf("姓名                年龄   性别   工资\n");
    printf("-------------------------------------------------------------\n");
    for(i=0;i<n;p++,i++){
           if(p->salary!=-1){/*工资=-1表示该员工已经被删除,不必显示*/
        printf("%20s %5d %4d %9.2f\n",p->name, p->age, p->sex, p->salary);
       }
    }
}
*****************
//按名字查找员工
****************
void serach_name(struct employee *p, int n)
{
     int i,k;
     char name[20];
     printf("\n请输入要查询员工的姓名:");
     scanf("%s",name);
     k=-1;
     for(i=0;i<n;i++)
 {
     if(strcmp(p[i].name,name)==0)
  {
    if(k==-1)
   {
    printf("\n\n姓名              年龄      性别        工资");
    printf("\n-----------------------------------------------------------------\n");
   }
   k=i;
   printf("%20s %5d %4d %9.2f\n\n",p->name,p->age,p->sex,p->salary);
  }
 }
 if(k==-1)
 {
  printf("\n\n没有找到该学生(姓名-%s)!",name);
 }
}
   

/*******************************
/*  按工资排序函数:使用选择排序算法
/*******************************/
void sort(struct employee *emp, int n){
    /*n是数组长度*/
    int i,j,min;
    struct employee tmp;
    for(i=0;i<n-1;i++){/*n-1遍*/
    min=i;
    for(j=i+1;j<n;j++){
      if(emp[j].salary<emp[min].salary){
        min=j;
      }/*if结束*/
        }/*for(j)结束*/
        tmp=emp[i];emp[i]=emp[min];emp[min]=tmp;/*交换emp[i]和emp[min];*/
    }/*for(i)结束*/
}
*****************
//求工资平均值
****************
void average(struct employee *p, int n )
{
    int i;
    float av;
    float sum;
    for(i=0;i<n;i++)
    {
       printf("%9.2f",p->salary);
       sum+=i;
      }
       av=sum/n;
     printf("%9.2f\n" av);
}

   


/*******************************
/*  主函数
/*******************************/
void  main(){
    int c;/*输入命令*/
    int n=0;/*员工人数*/
    char tmp[20];/*用于输入删除员工的姓名*/
    int i;/*循环变量*/
    struct employee *emp=NULL;/*员工数组,未定具体人数,根据n的数值动态分配内存空间。*/
    FILE *fp;/*文件指针*/
    char filename[80];/*文件名最大长度=79*/
    while(1){
        system("cls");/*清屏幕*/
        printf("\n================ 主菜单 =================\n");
        printf("  1 : 将员工信息保存到文件        \n");
        printf("  2 : 从文件读取员工信息        \n");
        printf("  3 : 新增一个员工            \n");
        printf("  4 : 删除一个员工            \n");
        printf("  5 : 显示所有员工信息            \n");
        printf("  6 : 按工资排序            \n");
        printf("  7 : 名字查询                \n");
           printf("  8 : 平均工资                \n");
        printf("  9 : 退出                  \n");
        printf("===========================================\n");
        printf("请输入命令:\n");
        scanf("%d",&c);
        switch(c)
        {
            case 1:
                printf("请输入文件名: \n");
                scanf("%s",filename);
                fp=fopen(filename,"w+");
                if(fp==NULL){
                    printf("文件打开失败: \n");
                }
                else{
                    fprintf(fp,"%d\n",n);/*先保存人数n*/
                    for(i=0;i<n;i++){
                        fprintf(fp,"%s\n",emp[i].name);
                        fprintf(fp,"%d\n",emp[i].age);
                        fprintf(fp,"%d\n",emp[i].sex);
                        fprintf(fp,"%f\n",emp[i].salary);
                    }
                    fclose(fp);
                }
                break;
            case 2:
                printf("请输入文件名: \n");
                scanf("%s",filename);
                fp=fopen(filename,"r");
                if(fp==NULL){
                    printf("文件打开失败: \n");
                }
                else{
                    fscanf(fp,"%d",&n);/*先读取人数n*/
                    if(emp==NULL)
                        emp=(struct employee *)malloc(n*sizeof(struct employee));/*第一次分配空间*/
                    else
                        emp=(struct employee *)realloc(emp,n*sizeof(struct employee));/*因为n改变,再次分配空间,并保留原来数据*/
                    for(i=0;i<n;i++){
                        fscanf(fp,"%s",emp[i].name);
                        fscanf(fp,"%d",&emp[i].age);
                        fscanf(fp,"%d",&emp[i].sex);
                        fscanf(fp,"%f",&emp[i].salary);
                    }
                    fclose(fp);
                }
                break;
            case 3:
                n++;
                if(emp==NULL)
                    emp=(struct employee *)malloc(n*sizeof(struct employee));
                else
                    emp=(struct employee *)realloc(emp,n*sizeof(struct employee));
                printf("请输入新员工信息:\n");
                printf("姓名(不能含空格):");
                scanf("%s",emp[n-1].name);
                printf("年龄:");
                scanf("%d",&emp[n-1].age);
                printf("性别:");
                scanf("%d",&emp[n-1].sex);
                printf("工资(工资=-1表示被删除):");
                scanf("%f",&emp[n-1].salary);
                break;
            case 4:
                printf("请输入要删除的员工姓名:\n");
                scanf("%s",tmp);
                for(i=0;i<n;i++){
                    if(strcmp(emp[i].name,tmp)==0)
                        emp[i].salary=-1;/*工资=-1表示被删除,注意同名的一起删除*/
                }
                break;
            case 5:
                display(emp,n);
                break;
            case 6:            
                sort(emp,n);
                break;
            case 7:  serach_name(emp,n);
                 break;
            case 8:  average(emp,n);
                 break;
            case 9:
                free(emp);
                exit(0);
            default:
                break;
        }/*switch结束*/
        printf("操作完毕,按任意键继续...\n");
        getchar();getchar();
    }/*while结束*/
}/*main结束*/
,怎么写也不对 请高手指教范例
错误点:Compiling...
C实训.C
C:\Users\q753azwsx\Desktop\新建文件夹\C实训.C(98) : error C2146: syntax error : missing ')' before identifier 'av'
C:\Users\q753azwsx\Desktop\新建文件夹\C实训.C(98) : error C2059: syntax error : ')'
执行 cl.exe 时出错.


[ 本帖最后由 请问你好吗 于 2011-12-29 16:15 编辑 ]
搜索更多相关主题的帖子: 姓名 employee 管理系统 display include 
2011-12-29 14:02
快速回复:员工管理系统求教,,怎么写也不对 请高手指教
数据加载中...
 
   



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

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