求大神 用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;
} 展开
(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;
} 展开
2个回答
展开全部
#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
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询