栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

记录大一c语言实训作业:员工信息管理系统

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

记录大一c语言实训作业:员工信息管理系统


#include
#include
#include
#include
#define N 100

// 员工信息包括:员工号、姓名、性别、年龄、工资、住址、联系电话等(员
// 工号不重复)。

typedef struct employee {
    int id;//employee
    char name[20];
    char gender[20];
    int age;
    float wage;//工资
    char address[20];
    char phonenumber[11];

} EMP;
void Login();         //用于系统登录,密码初始为"000000"
void reset();
void Examine();
void Input(EMP *p);
void Writefile(EMP *p);
void Readfile(EMP *p);
int read(EMP *emp);
void add(EMP *emp);
void Delete(EMP *p);
void save(int m,EMP *emp);
void Search(EMP *p);
void searchbyid(EMP *p);
void change(EMP *emp);
void sortwage(EMP *emp);//将员工按工资排序,从高到低
void sortage(EMP *emp);//将员工按年龄排序,从小到大
void Output(EMP *p,int n);
void ShowHead();
void ShowLine();
int Meum();
int number;

int main() {
    EMP emp[N];
    Examine();
    Login();

    int x,y;//x,y分别用于选择排序和查找的方式
    number=read(emp);
    while(1) {
        int a=Meum();
        switch(a) {
            case 1:
                Input(emp);
                break;
            case 2:
                add(emp);
                break;
            case 3:
                printf("请输入您想要的查询方式(1:员工号 2:姓名):");
                scanf("%d",&y);
                if((y==1)||(y==2)) {

                    if(y==1) {

                        searchbyid(emp);
                    } else if(y==2) {
                        Search(emp);
                    }
                } else {
                    system("cls");
                    printf("nn请进行正确的输入,系统已返回到主菜单nn");

                }
                break;
            case 4:
                change(emp);
                break;
            case 5:
                Delete(emp);
                break;
            case 6:

                printf("请输入您想要的排序方式(1:工资 2:年龄):");
                scanf("%d",&x);
                if(x==1||x==2) {

                    if(x==1) {

                        sortwage(emp);
                    } else if(x==2) {
                        sortage(emp);
                    }
                } else {
                    system("cls");
                    printf("nn请进行正确的输入,系统已返回到主菜单nn");

                }
                break;
            case 7:

                Readfile(emp);

                Output(emp,number);
                break;
            case 8:
                reset();
                break;
            case 0:
                printf("系统成功退出!n");
                exit(0);
                break;
            default:
                printf("错误");
                break;
        }
    }
}

//系统菜单主界面
int Meum() {
    printf("n************************员工信息管理系统**********************n");
    printf("n  t1.  录入职工信息 tt 5.  删除职工信息");
    printf("n  t2.  添加职工信息 tt 6.  排序职工信息");//6 排序,按工资从高到低排序,并显示。
    printf("n  t3.  查询职工信息 tt 7.  浏览职工信息");
    printf("n  t4.  修改职工信息 tt 8.  重置密码");
    printf("n  t0.  退出系统");
    printf("nn************************************************************");
    int number;
    printf("n请输入想使用的功能序号:");
    scanf("%d",&number);
//    system("cls");
    return number;
}
void Examine() {
    if(fopen("E:/employee.txt","r")==NULL) {
        fopen("E:/employee.txt","w");
    }
}
void Input(EMP *p) {
    int i,j;
    printf("请输入录入员工人数:");
    scanf("%d",&number);
    for(i=0; i
        printf("n请输入第%d位员工的员工号:",i+1);
        scanf("%d",&p[i].id);
        getchar();
        printf("请输入第%d位员工的姓名:",i+1);
        scanf("%s",&p[i].name);
        getchar();
        printf("请输入第%d位员工的性别:",i+1);
        scanf("%s",&p[i].gender);
        getchar();
        printf("请输入第%d位员工的年龄:",i+1);
        scanf("%d",&p[i].age);
        getchar();
        printf("请输入第%d位员工的工资:",i+1);
        scanf("%f",&p[i].wage);
        getchar();
        printf("请输入第%d位员工的住址:",i+1);
        scanf("%s",&p[i].address);
        getchar();
        printf("请输入第%d位员工的联系电话:",i+1);
        scanf("%s",&p[i].phonenumber);
        getchar();
        printf("已录入该员工信息。n");
    }
    char a;
    printf("输入回车返回主菜单。");
    a=getchar();
    if(a=='n')
        system("cls");//输入完员工信息更简洁
    printf("nn员工信息已经成功录入!nn");
    EMP t;
    for(i=0; i         for(j=0; j
            if(p[j].id>p[j+1].id) {
                t=p[j];
                p[j]=p[j+1];
                p[j+1]=t;
            }
        }
    Writefile(p);
}
void Output(EMP *p,int n) {

    int i;
    ShowHead();
    for(i=0; i
        printf("nt|%dt|%st|%st|%dt|%.1ft|%8st|%8sn",p[i].id,p[i].name,p[i].gender,
               p[i].age,p[i].wage,p[i].address,p[i].phonenumber);
        ShowLine();
    }
    getchar();
    char a;
    printf("nn输入回车返回主菜单:");
    a=getchar();
    if(a=='n')
        system("cls");//输入完员工信息更简洁
}
//员工信息表头
void ShowHead() {
    printf("t|员工号t|姓名t|性别t|年龄t|工资t|住址tt|联系电话");
}

//分割线
void ShowLine() {
    printf("t");
    for(int i=0; i<70; i++)
        printf("-");
}
int read(EMP *emp) { //读取文件中已有的员工人数
    FILE*fp;
    int i=0;
    if((fp=fopen("E:/employee.txt","rb"))==NULL) {
        printf ("文件打开失败n");
        exit(0);
    } else {
        do {
            fread(&emp[i],sizeof(EMP),1,fp);
            i++;
        } while(feof(fp)==0);
    }
    fclose(fp);
    return(i-1);
}
//用于将已有员工信息和加入后新的员工信息都保存到文件中
void save(int m,EMP *emp) {
    int i;
    FILE *fp;
    if ((fp=fopen("E:/employee.txt","wb"))==NULL) {
        printf ("文件打开失败!n");
        exit(0);
    }
    for (i=0; i         if (fwrite(&emp[i],sizeof(EMP),1,fp)!=1)
            printf("文件写入失败!n");
    fclose(fp);
}
//结构体数组写到文件中
void Writefile(EMP *p) {
    FILE *fp;
    if((fp=fopen("E:/employee.txt","w"))==NULL)
        printf("文件创建失败!");
    fwrite(p,sizeof(EMP),number,fp);
    fclose(fp);
}
//文件信息读取到结构体数组中
void Readfile(EMP *p) {
    FILE *fp;
    fp=fopen("E:/employee.txt","r");
    if(fp==NULL) {
        printf("未找到文件");
        exit(0);
    } else {
        for(int i=0; !feof(fp); i++)
            fread(&p[i],sizeof(EMP),1,fp);
    }
    fclose(fp);
}
//用于在已有员工信息后加入新的员工信息
void add(EMP *emp) {
    int n=read(emp);
    int i,m,num=0;
    printf("请输入需要添加信息的员工人数: ");
    scanf("%d",&m);
    if(m+n>100)  {
        system("cls");
        printf("n对不起,你所输入的员工人数超出范围。请重新输入(0至%d之间):nn",100-n);
        add(emp);
    } else {
        for (i=n; i
            printf("第%d个员工信息输入(按回车确认输入): n", i+1);
            printf("请输入员工号: ");
            scanf("%d",&num);
            for(int j=0; j                 if(emp[j].id==num) {
                    printf("员工号为 %d 的员工已存在,请重新输入:",num);
                    scanf("%d",&num);
                    j=0;
                }
            emp[i].id=num;
            printf("请输入第%d个员工的姓名: n", i+1);
            scanf("%s",emp[i].name);
            printf("请输入第%d个员工的性别: n", i+1);
            getchar();
            scanf("%s",&emp[i].gender);
            printf("请输入第%d个员工的年龄: n", i+1);
            scanf("%d",&emp[i].age);

            printf("请输入第%d个员工的工资: n", i+1);
            scanf("%f",&emp[i].wage);
            printf("请输入第%d个员工的住址: n", i+1);
            scanf("%s",&emp[i].address);
            printf("请输入第%d个员工的联系电话: n", i+1);
            scanf("%s",&emp[i].phonenumber);
            system("cls");
            printf("n一个员的信息添加成功!请输入下一个员工的信息n");
            printf("n");
            number++;
        }
        save(m+n,emp);

        system("cls");
        printf("n添加员工完成!  n");
    }
}
//删除员工信息
void Delete(EMP *p) {
    int i,n;
    int g;//用于判断是否继续进行删除员工的操作
    printf("请输入想要删除的员工号:");
    scanf("%d",&n);
    int flag=0;
    int k=0;
    for(i=0; i
        if(p[i].id==n) {
            k=i;
            flag =1 ;
            break;
        }
    }
    if(flag==0) printf("无此员工号");
    else {
        printf("n此员工的信息如下表:n");
        ShowHead();
        printf("nt|%dt|%st|%st|%dt|%.1ft|%8st|%8sn",p[k].id,p[k].name,p[k].gender,
               p[k].age,p[k].wage,p[k].address,p[k].phonenumber);
        ShowLine();
        printf("nn请确定是否删除此员工号:(1确认,0返回主菜单)");
        scanf("%d",&g);
        if(g==1) {
            for(; i             number--;
            Writefile(p);
            system("cls");
            printf("nn该员工信息删除成功nn") ;
        } else if(g==0) {
            system("cls");
        }    else {
            printf("你输入了非法数字,请重新进行该操作!nn");
            Delete(p);
        }
    }
}
void Search(EMP *p) {
    char name[20];
    int i;
    int flag =0;//flag 用于判断是否
    printf("请输入想要查询的员工姓名:");
    scanf("%s",name);
    getchar();
    //判断是否找到并反馈
    for(i=0; i
        if(strcmp(p[i].name,name)==0) {
            flag=1;
            printf("n已找到名为%s的员工,他/她的信息如下:nn",name);
            break;
        }
    }
    if(!flag) {
        printf("nn很抱歉未能找到为%s的员工,请重新输入!nn",name);
        Search(p);
    }
    for(i=0; i
        if(strcmp(p[i].name,name)==0) {

            ShowHead();
            printf("nt|%dt|%st|%st|%dt|%.1ft|%8st|%8sn",p[i].id,p[i].name,p[i].gender,
                   p[i].age,p[i].wage,p[i].address,p[i].phonenumber);
            ShowLine();
        }
    }
    char b;
    printf("n按下回车返回主菜单:");
    b=getchar();
    if(b=='n')
        system("cls");//输入完员工信息更简洁
}
void searchbyid(EMP *p) {
    int id;
    int i;
    int flag =0;//flag 用于判断是否找到并反馈
    printf("请输入想要查询的员工号:");
    scanf("%d",&id);
    //判断是否找到并反馈
    system("cls");
    for(i=0; i
        if(p[i].id==id) {
            flag=1;
            printf("n已找到员工号为%d的员工,他/她的信息如下:nn",id);
            break;
        }
    }
    if(!flag) {
        printf("nn很抱歉未能找到为%d的员工,请重新输入!nn",id);
        searchbyid(p);
    }


    for(i=0; i
        if(p[i].id==id) {
            printf("nn员工号为%d的员工信息如下表:nn",id);
            ShowHead();
            printf("nt|%dt|%st|%st|%dt|%.1ft|%8st|%8sn",p[i].id,p[i].name,p[i].gender,
                   p[i].age,p[i].wage,p[i].address,p[i].phonenumber);
            ShowLine();
            char b;
            getchar();
            printf("n按下回车返回主菜单:");
            b=getchar();
            if(b=='n') {
                system("cls");//输入完员工信息更简洁
            }
        }
    }

}
//s用于存储输入的需要修改的员工的员工号,j用于存储第n个员工需要修改的序号n
void change(EMP *emp) {
    int s,j;
    printf("请输入你想要修改信息的员工的员工号:");
    scanf("%d",&s);
    int flag=0;
    for(int i=0; i
        if(s==emp[i].id) {
            j=i;
            flag=1;
            break;
        }
    }
    if(flag==0) {
        printf("找不到员工号为:%d的员工,请重新输入",s);
        change(emp);
    }
    int c;
    int id;//employee
    char name[20];
    char gender[20];
    int age;
    float wage;//工资
    char address[20];
    char phonenumber[11];
    printf("n已找到员工号为%d的员工,其记录为:n",emp[j].id);
    ShowHead();
    printf("nt|%dt|%st|%st|%dt|%.1ft|%8st|%8sn",emp[j].id,emp[j].name,emp[j].gender,
           emp[j].age,emp[j].wage,emp[j].address,emp[j].phonenumber);
    ShowLine();
    printf("nn可以进行修改的选项n 1.姓名  2.性别  3.年龄  4.工资  5.住址  6.电话  nn");
    printf("请输入你想修改的那一项序号:  ");
    scanf("%d",&c);
    switch(c) {

        case 1:
            printf("姓名改为: ");
            scanf("%s",name);
            strcpy(emp[j].name,name);
            break;
        case 2:
            printf("性别改为:");
            scanf("%s",&gender);
            strcpy(emp[j].gender,gender);
            break;
        case 3:
            printf("年龄改为: ");
            scanf("%d",&age);
            emp[j].age=age;
            break;

        case 4:
            printf("工资改为: ");
            scanf("%f",&wage);
            emp[j].wage=wage;
            break;
        case 5:
            printf("住址改为: ");
            scanf("%s",&address);
            strcpy(emp[j].address,address);
            break;
        case 6:
            printf("电话改为: ");
            scanf("%s",phonenumber);
            strcpy(emp[j].phonenumber,phonenumber);
            break;
    }
    save(number,emp);
    system("cls");
    printf("nn修改成功! 您可以浏览员工信息表查验nn");
}

void sortwage(EMP *emp) {
    int i,j;
    EMP t;
    for(i=0; i
        for(j=0; j
            if(emp[j].wage
                t=emp[j];
                emp[j]=emp[j+1];
                emp[j+1]=t;
            }
        }
    }
    system("cls");
    printf("nn员工按工资排序后的结果为下表:nn");
    Output(emp,number);
}
void sortage(EMP *emp) {
    int i,j;
    EMP t;
    for(i=0; i
        for(j=0; j
            if(emp[j].age>emp[j+1].age) {
                t=emp[j];
                emp[j]=emp[j+1];
                emp[j+1]=t;
            }
        }
    }
    system("cls");
    printf("nn员工按年龄排序后的结果为下表:nn");
    Output(emp,number);
}
void Login() {
    //首先检验是否有密码,无则创建“000000 ” 初始密码。
    FILE *fp;
    char a[10]= {"000000"};
    if(fopen("E:/password.txt","r")==NULL) {
        fp=fopen("E:/password.txt","w");
        fputs(a,fp);
        fclose(fp);
    }

    char password[15];
    char word[15];
    fp=fopen("E:/password.txt","r");
    fgets(password,14,fp);
    fclose(fp);
    int i=0;
    printf("************************员工信息管理系统**********************n");
    printf("欢迎使用员工信息管理系统n");
    printf("请输入管理员密码:n");
    for(i=0; i<3; i++) {
        scanf("%s",word);
        if(strcmp(word,password)==0) {
            system("cls");
            printf("登录成功。n");
            break;
        } else {
            if(i!=2) {
                printf("密码输入错误,请重新输入(还有%d次机会):n",2-i);
            }
        }
    }
    if(3==i) {
        printf("登录失败,程序退出。n");
        exit(0);
    }
}

void reset() {
    getchar();
    char password[15];
    printf("请输入新密码:");
    gets(password);
    FILE *fp;
    fp=fopen("E:/password.txt","w");
    fputs(password,fp);
    fclose(fp);
    system("cls");
    printf("重置密码成功。n");
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1004933.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号