#include"stdio.h"
#include"string.h"
#include"stdlib.h"
#include"windows.h"
#include"dos.h"
#include"conio.h"
#define N 40
struct yuangong
{
char no[9];
char name[20];
char dizhi[20];
float jidulei[4];
float sum;
float average;
} lzh_s[N]= { {"130207","江娟","上海",456,654,716,449},
{"130202","乐娟","深圳",578,715,897,564},
{"130101","李金娜","北京",451,482,695,642},
{"130102","李丽","北京",659,862,896,985},
{"130201","刘德发","上海",235,186,458,225},
{"130105","钱多多","北京",486 ,258,695,865},
{"130301","邱雅培","深圳",266,698,654,984},
{"130103","孙德标","北京",325,456,587,745},
{"130202","谭鱼头","上海",856,951,248,476},
{"130203","王罕华","上海",563,486,978,156},
{"130206","王辉","上海",689,928,856,651 },
{"130304","王强","深圳",652,951,479,149} },*p;
char jidu[50][60]={"第一季度","第二季度","第三季度","第四季度"};
int emp=12;
int jdshu=4;
int wenjian=0;
int dl();
void menu();
void zengjia();
void shanchu();
void chazhao();
void xiugai();
int denglu();
int baocun();
void showtitle();
void displayall();
void menupt();
void dlxt(){
int x;
printf("1:vip用户 2:普通用户 3:退出n:");
scanf("%d",&x);
switch(x){
case 1: if(dl()==1) //管理员 //如果登录成功
{
while(1) //死循环,使系统始终显示主控菜单选项
{
menu(); //根据用户输入选择不同操作
}
};break;
case 2: if(dl()==1) //普通用户
{
while(1)
{
menupt();
}
};break;
case 3: printf("退出成功!n"),exit(0);
default:printf("无效的选择!!!请重新输入!!!");
}
}
char *getmm(char *buf,int len)
{
int i=0;
char ch;
fflush(stdin); //清空缓存区
while(i
if(kbhit()) //kbhit()检查当前是否有键盘输入,若有返回一个非0值,否则返回0
{
ch=getch();
if(ch=='r')
break;
putchar('*');
buf[i]=ch;
i++;
}
}
buf[i]=' ';
return buf;
}
int dl()
{
system("color 74");
char name[]="admin",mm[]="lzh123";
char username[10],usermm[10];
int s;
for(s=1;s<=5;s++){
printf("n");
printf("请输入用户名:");
gets(username);
printf("n");
printf("请输入密码:");
getmm(usermm,10);
printf("n");
if(strcmp(name,username)==0&&strcmp(mm,usermm)==0)
{
printf("欢迎您,亲爱的用户!");
return 1;
}
else if(s<3)
printf("******用户名或密码错误,请尝试重新输入!!******n");
}printf("******用户名或密码已经超过五次输入错误,系统自动退出!!!*********n");
return 0;
}
void menu()
{ int userselection;
system("color 79");
printf("n");
printf("t*****************************n");
printf("t* vip用户欢迎使用 *n");
printf("t* 员工季度管理系统 *n");
printf("t*****************************n");
printf("n");
printf("t* 1:增加员工信息 *n");
printf("t* 2:删除员工信息 *n");
printf("t* 3.查找员工信息 *n");
printf("t* 4:修改员工信息 *n");
printf("t* 5:从文件中读取员工信息 *n");
printf("t* 6:将员工信息保存到文件 *n");
printf("t* 7:查询员工系统 *n");
printf("t* 8:退出系统 *n");
printf("t***************************nn");
printf("请输入您的选择(1-8):");
scanf("%d",&userselection);
switch(userselection)
{
case 1: getchar();zengjia();break; //添加员工信息
case 2: getchar();shanchu();break; //根据员工修改员工信息
case 3: getchar();chazhao();break; //显示所有员工信息
case 4: getchar();xiugai();break; //根据编号查询
case 5: getchar();denglu();break; //从文件中读取
case 6: getchar();baocun();break; //保存到文件
case 7: getchar();displayall();break;
case 8: getchar();exit(0);break; //退出系统
default:printf("%c,请输入1-8之间的数字n",userselection);
}
}
void menupt(){
system("CLS");
int userselection;
char selection[10];
printf("n");
printf("**************************************************************n");
printf("*********************你好呀,普通用户!***********************n");
printf("**************************************************************n");
printf("*t 1.显示员工信息 *n");
printf("*t 2.查询员工信息 *n");
printf("*t 3.退出系统 *n");
printf("************************************************************* n");
printf("*t 请输入您的选择 *n");
gets(selection);
userselection=(int)atoi(selection);
switch(userselection){
case 1: getchar();displayall();break;
case 2: getchar();chazhao();break;
case 3: getchar();exit(0);break;
default:printf("%c,请输入1-10之间的数字n",userselection);
}menu();
}
void quitsystem()
{
system("color 77");
char str[5];
if(wenjian==1)
{
printf("是否保存?(Y/n)");
gets(str);
if(str[0]!='n'&&str[0]!='N')
baocun();
}
exit(0);
}
void showtitle()
{
system("color 77");
int j;
printf(" 编号 姓名 地址 ");
for(j=0;j
printf(" 总分 平均分n");
}
void displayall()
{
system("color 17");
int i,j;
if(emp==0)
printf("暂时还没有员工的信息!n请按任意键返回主菜单n");
else
{
showtitle(); //显示表头信息
for(i=0;i
//打印员工信息
printf("%8s %-8s %2s",lzh_s[i].no,lzh_s[i].name,lzh_s[i].dizhi);
for(j=0;j
printf("%8.lf%8.lfn",lzh_s[i].sum,lzh_s[i].average);
}
printf("n所有员工信息显示完毕,请按任意键继续n");
}
getchar();
}
void zengjia()
{ int i;
system("color 27");
while(1)
{
printf("请输入编号:(以两个0作为结束标志)");
gets(lzh_s[emp].no);
if (strcmp(lzh_s[emp].no,"00")==0) break;
printf("请输入姓名:");
gets(lzh_s[emp].name);
printf("请输入地址:");
gets(lzh_s[emp].dizhi);
lzh_s[emp].sum=0; //处理业绩
for(i=0;i
printf("请输入%s的季度工资:(0-100):",jidu[i]);
scanf("%f",&lzh_s[emp].jidulei[i]);
if(lzh_s[emp].jidulei[i]>=0 &&lzh_s[emp].jidulei[i]<=10000)
lzh_s[emp].sum+=lzh_s[emp].jidulei[i];
else
{ printf("输入数据无效,请重新输入……n"); i--; continue; }
}
lzh_s[emp].average=lzh_s[emp].sum/jdshu;
emp++;
getchar();
}
wenjian=1;
printf("员工添加完毕,请按任意键继续n");
getchar();
}
void shanchu()
{
system("color 43");
char delno[9]; //存放要删除员工的编号
char ok[5]; //确定是否要真的删除
int i,j;
printf("请输入要删除员工的编号:");
gets(delno);
//根据编号查找记录位置
for(i=0;i
if (i
showtitle(); //先显示原信息
printf("%8s %-8s %2s",lzh_s[i].no,lzh_s[i].name,lzh_s[i].dizhi);
for(j=0;j
printf("%8.lf%8.lfn",lzh_s[i].sum,lzh_s[i].average);
printf("确实要删除这条记录吗?(y/n)n");
gets(ok);
if(ok[0]=='y'||ok[0]=='Y') //确定要删除
{
emp--; //员工数减1
//将后面的记录前移
for(j=i;j
printf("n删除成功!n");
wenjian=1; //修改存储标志
}
}
else
printf("n没有该员工记录n");
printf("请按任意键继续n");
getchar();
}
void chazhao()
{
system("color 35");
char searchno[9];
int i,j;
printf("请输入要查询的员工的编号:");
gets(searchno);
for(i=0;i
if (i
showtitle();
printf("%8s %-8s %2s",lzh_s[i].no,lzh_s[i].name,lzh_s[i].dizhi);
for(j=0;j
printf("%8.lf%8.lfn",lzh_s[i].sum,lzh_s[i].average);
}
else //没有找到记录
printf("没有编号为%s的员工记录",searchno);
printf("n");
}
void xiugai()
{
system("color 74");
struct yuangong search; //存放要修改员工的信息
char temp[4];
float sumtemp;
int i,j;
printf("请输入要查找的编号:");//根据编号查找记录位置
gets(search.no);
for(i=0;i
if (strcmp(search.no,lzh_s[i].no)==0)
break;
}
if (i
showtitle(); //先显示原信息
printf("%8s %-8s %2s",lzh_s[i].no,lzh_s[i].name,lzh_s[i].dizhi);
for(j=0;j
printf("%8.lf%8.lfn",lzh_s[i].sum,lzh_s[i].average);
//输入其它信息并进行处理
printf("请输入编号:");
gets(search.no);
printf("请输入姓名:");
gets(search.name);
printf("请输入地址:"); //处理地址
gets(temp); //注意此处不要用getchar()或scanf("%c"),否则会将回车接收为性别
strcpy(search.dizhi,temp);
sumtemp=0; //处理业绩
for(j=0;j
printf("请输入%s业绩(0-100):",jidu[j]);
scanf("%f",&search.jidulei[j]);
if(search.jidulei[j]>=0 &&(search.jidulei[j])<=100)
sumtemp+=search.jidulei[j];
else
{ printf("输入数据无效,请重新输入……n"); i--; continue; }
}
search.sum=sumtemp;
search.average=sumtemp/jdshu;
lzh_s[i]=search; //用新值替换旧值
printf("n修改成功!n");
wenjian=1; //有修改,标示为1
}
else //没有找到记录
printf("没有编号为%s的员工记录",search.no);
printf("n请按任意键继续n");
getchar();
}
int baocun(void) //从数据保存到文件
{
system("color 13");
FILE *fp;
if((fp=fopen("yuangong.txt","wb+"))==NULL) //打开文件失败
{
printf("无法打开文件!n");
printf("请按任意键继续n");
exit(0);
}
printf("n存文件...n");
fwrite(lzh_s,sizeof(struct yuangong )*emp,1,fp); //写入文件
fclose(fp);
}
int denglu(void) //从文件中读出内容
{
system("color 12");
FILE *fp;
int i,js=0;
if((fp=fopen("yuangong.txt","rb"))==NULL) //打开文件失败
{
printf("无法打开文件!n");
printf("请按任意键继续n");
getchar();
exit(0);
}
printf("n读取文件...n");
js=0; //重新计算员工数
while(!feof(fp)) //读取文件内容
{
fread(&lzh_s[js],sizeof(struct yuangong),1,fp);
js++;
}
js--;
fclose(fp);
printf("共从文件中读入%d条记录n",js);
p=lzh_s;
printf("读出的文件内容为:n");
showtitle();
for(i=0;i
printf("请按任意键继续!n");
getchar();
}
void main()
{
system("color 84");
if (dl()==1)
while(1)
dlxt();
}



