吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 6397|回复: 30
收起左侧

[C&C++ 原创] [C语言]职工信息管理系统

  [复制链接]
xin112532604 发表于 2022-8-29 16:32
本帖最后由 xin112532604 于 2022-8-31 08:11 编辑

[C语言环境]职工信息管理系统
录入模块:输入该厂现有员工信息并保存与文件中,方便日后进行排序,更新,统计,打印等操作。
输出模块:将所有员工信息,或所需员工信息输出于屏幕上,用于查询员工信息每二十条
删除模块:此分为按姓名,职工号删除
添加模块:添加新员工信息并保存起来。
修改模块:找到该员工选择所要修改的选项。
查询模块:此分为按姓名,职工号查询
a.jpg.png
源代码.zip (107.94 KB, 下载次数: 149)
[CSS] 纯文本查看 复制代码
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <string.h>
#define FORMART "|%-20d|%-15s|%-20lld|%-12.1f|\n"
#define txtA emp[i].Number,emp[i].name,emp[i].Tel,emp[i].money

struct employee{//员工信息结构体
        int Number;//职工号
        char name[20];//姓名
        float money;//工资
        long long int Tel;//电话
};
struct employee emp[1000],emp1;

//功能函数声明
void Welcome();  //主菜单
void in();  //输入员工信息
void save(int m);   //存储信息
int  read();    // 读取信息
void Print();//浏览信息
void add()  ;   //添加
void find();  //查找
void findname();  //按姓名查找
void findnum();  //按职工号查找
void Delete();  //删除操作
void change();  //修改操作
//主函数
int main()   {
        system("color 0e");
        int n;
        while(1)
        {  
                        
                        Welcome();
                        scanf("%d",&n);
            if(n==0)
            {
                    printf("输入错误,请重新输入!\n");
                    system("pause");
                    fflush(stdin);
                    continue;
                }
               
                switch(n)   
                {      
                        case 1: system("cls");
                                        printf("\n\t\t\t  录入职工信息\n\n");
                                        in();  
                                        break;   
                        case 2: system("cls");
                                        printf("\n\t\t\t\t浏览职工信息\n");
                                        Print();
                                        system("cls");
                                        break;        
                        case 3: system("cls");
                                        printf("\n\t\t\t\t查询职工信息\n");
                                        find();  
                                        break;      
                        case 4: system("cls");
                                        printf("\n\t\t添加职工信息");
                                        add()  ;
                                        break;      
                        case 5: system("cls");
                                        printf("\n\t\t\t\t删除职工信息\n\n");
                                        Delete();  
                        case 6: system("cls");
                                        printf("\n\t\t\t\t修改职工信息\n");              
                                        change();
                                        Print();
                                        system("cls");
                                        break;         
                        case 7:        getchar();
                                        exit(7);
                                        break;         
                        }  
     }   
}
void Welcome(){  //主菜单
   
        printf("\n\n\n");
        printf("\t\t**************************欢迎访问职工信息管理系统************************\n");
    printf("\t\t**                                                                      **\n");
        printf("\t\t**                                                                      **\n");
        printf("\t\t**                          1---录入职工信息数据                        **\n");
    printf("\t\t**                          2---浏览职工信息数据                        **\n");
    printf("\t\t**                          3---查询职工信息数据                        **\n");
    printf("\t\t**                          4---添加职工信息数据                        **\n");
    printf("\t\t**                          5---删除职工信息数据                        **\n");
    printf("\t\t**                          6---修改职工信息数据                        **\n");
        printf("\t\t**                          7---退出职工信息系统                        **\n");
    printf("\t\t**                                                                      **\n");
        printf("\t\t**                                                                      **\n");
        printf("\t\t**************************************************************************");
        printf("\n请您选择你需要的操作(1-7):  ");
}

void in(){        //录入职工信息
        int i,m,num;
        printf("请您输入需要创建信息的职工人数: ");
    scanf("%d",&m);
        system("cls");
        printf("\n");
    for (i=0;i<m;i++)
                {   printf("第%d个员工信息输入:\n", i+1);
                        printf("请输入职工号: ");
                        scanf("%d",&num);
                        for(int j=0;j<i;j++)
                                while(emp[j].Number==num)
                                {        printf("职工号为 %d 的员工已存在,请重新输入:\n",num);
                                        scanf("%d",&num);
                                }
                        emp[i].Number=num;
                        printf("请输入姓名:  ");  
                        scanf("%s",&emp[i].name);
                                do
                        {
                            printf("请输入工资:  ");
                                scanf("%f",&emp[i].money);
                                if(emp[i].money>0) break;
                                else printf("对不起,您输入格式错误,请重新输入!\n");
                        }while(1);   
                        do
                        {
                        printf("请输入电话:  ");   
                        scanf("%lld",&emp[i].Tel);
                        if(emp[i].Tel>0)
                        {
                                break;
                        }
                        else
                        {
                                printf("对不起,您输入格式错误,请重新输入!\n");
                        }
                        }while(1);
                        system("cls");
                        printf("\n职工信息创建完成!\n\n");        
                 }      
                save(m);      //保存入文件中
}

void save(int m){
        int i;
     FILE *fp;
     if ((fp=fopen("employee.dat","wb"))==NULL)   
         {  printf ("cannot open file!\n");
                exit(0);
         }     
         for (i=0;i<m;i++)
        if (fwrite(&emp[i],sizeof(struct employee),1,fp)!=1)
                printf("file write error!\n");   
        fclose(fp);
}  

int read(){  //导入函数
        FILE*fp;  
        int i=0;   
        if((fp=fopen("employee.dat","rb"))==NULL)
        {   printf ("cannot open file!\n");
                exit(0);      
    }
        else
        {   
                do {     
                    fread(&emp[i],sizeof(struct employee),1,fp);
                        i++;
                        }while(feof(fp)==0);
        }  
        fclose(fp);
        return(i-1);
}      
void Print(){  //浏览职工信息
        char ch;
        int m=read(),x;
        int page=1,firstindex=0,i,pageamount=m/20+1,j;//定义联系人为一页
        x=m-19;
    do
        {        system("cls");
        if(page>pageamount)
                printf("**对不起,页数的最大值为%d\n",pageamount);
                else if (page < 0)
                printf("**对不起,输入的数字必须为正数\n");
        else
                {
            firstindex=20*(page - 1)-1;
            printf("\n贵公司所有职工信息(共计%d人):\n",m);
                        printf("************************************************************************\n");
                        printf("|\t\t\t\t\t\t\t\t       |\n");
                        printf("|职工号              |姓名           |电话                |工资        |\t\n");
            for(i=0;i<firstindex;++i)  m=i;
                        i=0;
                        //x=m-19;
            while(m!=NULL&&i<20)
                        {
                                if(j>=m+x)
                                {
                                        break;
                                }
                i++;
                j=i+firstindex;
                printf("|%-20d|%-15s|%-20lld|%-12.1f|\n",emp[j].Number,emp[j].name,emp[j].Tel,emp[j].money);
               
            }
                                printf("|\t\t\t\t\t\t\t\t       |\n");
                                printf("|\t\t\t\t\t\t\t\t       |\n");
                                printf("|*************************** 第%d页(共%d页) *****************************|\n", page, pageamount);
        }
        printf("请输入跳转页面(按0返回通讯录主菜单):");
        scanf("%d",&page);
    }
        while (page);

        printf("\n");
}

void Delete(){    //删除职工信息
        int m=read();  
        int i,j,t,n,f,Num;   
        //Print();  
        printf("请您输入要删除的职工的职工号:  ");
        scanf("%d",&Num);  
        for(i=0,f=1;f&&i<m;i++)           //遍历全部职员
        {    if(emp[i].Number==Num)    //判断输入职工号是否与原职工号相同
                {   
                        printf("\n已找到此人,原始记录为:\n");
                        printf("************************************************************************\n");
                        printf("|\t\t\t\t\t\t\t\t       |\n");
                        printf("|职工号              |姓名           |电话                |工资        |\t\n");
                        printf(FORMART,txtA);
                        printf("\n确认删除请按 1,取消删除请按 0: ");   
                        scanf("%d",&n);              
                        if(n==1)   
                        {         for(j=i;j<m-1;j++)
                                         emp[j]=emp[j+1];     
                                f=0;
                        }
                        else f=2;
                }

        }
        system("cls");
   switch(f){
                case 0: m=m-1;
                                printf("\n\t\t\t\t删除成功!\n");
                                save(m);     //调用保存函数   
                            //Print();  //调用浏览函数
                                break;
                case 1: printf("\n\t\t\t没有该员工!\n");   
                            //Print();  //调用浏览函数
                                break;
                case 2: printf("\n\t\t\t\t取消删除!\n");
                                break;
        }   
      //Print();  /*调用浏览函数*/
   printf("\n继续删除请按1,返回主菜单请按0: ");
   scanf("%d",&t);    //输入t调用switch中的函数
   system("cls");
   switch(t)
   {    case 1:  Delete();
                             break;     
                case 0:  system("cls");
                                 main();
                                 break;
                default: break;
   }
    system("cls");
}

void add(){   //添加职工信息
    int n=read();   //读取文件
        int i,m,num=0;  
    printf("(目前职工人数%d人)\n\n",n);
        printf("请您输入需要添加信息的职工人数: ");   
        scanf("%d",&m);   
        if(m+n>1000)  {
                system("cls");
                printf("\n职工人数超出范围,请重新输入(0至%d之间):\n\n",1000-n);
                add();       //重新调用add()函数
        }
        else{
                for (i=n;i<m+n;i++)   
                {        printf("第%d个员工信息输入(按Enter确认输入): \n", i+1);
                        printf("请输入职工号:");
                        scanf("%d",&num);
                        for(int j=0;j<i;j++)
                                while(emp[j].Number==num)    //判断输入职工号是否与原职工号重复
                                {        printf("职工号为 %d 的员工已存在,请重新输入\n",num);
                                        scanf("%d",&num);    //重新输入职工号
                                       
                                }
                        emp[i].Number=num;
                        printf("请输入姓名:");  
                        scanf("%s",emp[i].name);
                        
                                do
                        {
                            printf("请输入工资:");
                                scanf("%f",&emp[i].money);
                        if(emp[i].money>0)
                        {
                                break;
                        }
                        else
                        {
                        
                                printf("对不起,您输入格式错误,请重新输入!\n");
                        
                        }
                        }while(1);   
                        printf("请输入电话:");   
                        scanf("%lld",&emp[i].Tel);
                        system("cls");
                        printf("\n一个职工的信息档案创建完毕!请输入下一个职工的信息\n");
                        printf("\n");        
                }      
                save(m+n);    //调用save并保存文件
                system("cls");
                printf("\n添加职工信息完成!  \n");
                Print();    //调用Print函数 浏览全部信息
                printf("\n按Enter键继续\n");
                getchar();  //吸收回车
                getchar();  //吸收回车
                system("cls");
        }
}

void find(){ //查询职工信息
    int t;
        do {      
                printf("\n 姓名查询请按 1;   职工号查询请按 2;  进入主菜单请按 0 : ");
                scanf("%d",&t);     //输入数字对应操作选项
                if(t>=0&&t<=3)      
                {         break;     }
                else {        printf("您输入有误,请重新选择!");     }
        }while(0);
        system("cls");
        while(1)
        {      
                switch(t)     
                {   case 0: main();
                                    break;
                        case 1: printf("\n按姓名查询\n");
                                        findname();
                                        break;      
                        case 2: printf("\n按职工号查询\n");
                                    findnum();
                                        break;
                        default:break;
                }      
                system("cls");     
        }
}  

void findname(){ //按姓名查找职工信息
    char name1[20];   //定义一个数组指向字符串
        int i,t,n=0;   
        int m=read();   
        printf("\n请输入要查找的姓名:  ");
        scanf("%s",name1);   
        for(i=0;i<m;i++)    //遍历  
                if(strcmp(name1,emp[i].name)==0) //strcmp对两个字符串的大小进行比较
                {   
                        if(n==0)
                        {        printf("\n已找到以下信息:\n");
                                printf("************************************************************************\n");
                                printf("|\t\t\t\t\t\t\t\t       |\n");
                                printf("|职工号              |姓名           |电话                |工资        |\t\n");
                        }
                        n++;
printf(FORMART,txtA);                }     
        if(n==0)  //没有一个符合条件
        {        printf("\n对不起,贵公司没有该员工!\n");
                getchar();
                getchar();
        }
        else  
        {        printf("\n查询到有 %d 个员工符合要求。\n",n);
                printf("\n");   
                printf("删除员工请按 1,修改信息请按 2,继续查询请按 3,返回上一层请按 4,返回主菜单请按 0 :");
                scanf("%d",&t);       //输入数字对应操作选项
                switch(t)
                {        case 0: system("cls");   
                                        main();
                                        break;  
                        case 1: Delete();
                                        break;  
                        case 2: change();
                                        break;
                        case 3: break;
                        case 4: system("cls");   
                                        find();
                                        break;
                        default:break;   
                }  
        }
}  

void findnum(){ //按职工号查找职工信息
    int num1;  
        int i,t,n=0;
        int m=read();
        printf("\n请输入要查找的职工号:  ");
        scanf("%d",&num1);  
        for(i=0;i<m;i++)    //遍历  
                if(num1==emp[i].Number)
                {   
                        if(n==0)
                        {        printf("\n已找到以下信息:\n");
                                printf("************************************************************************\n");
                                printf("|\t\t\t\t\t\t\t\t       |\n");
                                printf("|职工号              |姓名           |电话                |工资        |\t\n");
                        }
                        n++;
printf(FORMART,txtA);                }     
                if(n==0)  //没有一个符合条件
        {        printf("\n对不起,贵公司没有该员工!\n");
                getchar();
                getchar();
        }
        else  
        {        printf("\n查询到有 %d 个员工符合要求。\n",n);
                printf("\n");   
                printf("删除员工请按 1,修改信息请按 2,继续查询请按 3,返回上一层请按 4,返回主菜单请按 0 :");
                scanf("%d",&t);       //输入数字对应操作选项
                switch(t)
                {        case 0: system("cls");   
                                        main();
                                        break;  
                        case 1: Delete();
                                        break;  
                        case 2: change();
                                        break;
                        case 3: break;
                        case 4: system("cls");   
                                        find();
                                        break;
                        default:break;   
                }  
        }
}   
                 
void change() {     //修改职工信息
    int Number;       //职工号
        char name[20];     //姓名
        float money;        //工资
        int Tel;      //电话
        int b=1,c,i,n,t,k=0,g;
        int m=read();               //导入文件内的信息
        printf("\n");      
        printf("请输入要修改的职工的职工号:  ");
        scanf("%d",&Number);
        system("cls");
        for(i=0;i<m;i++)
        {   if(emp[i].Number==Number)    //判断输入的职工号是否与原职工号相同
                {          k=1;
                        printf("\n已找到该职工号员工,其记录为:\n");
                        printf("************************************************************************\n");
                        printf("|\t\t\t\t\t\t\t\t       |\n");
                        printf("|职工号              |姓名           |电话                |工资        |\t\n");
            printf(FORMART,txtA);
                        printf("\n确认修改请按1,取消修改请按0:");
                        scanf("%d",&n);            
                        if(n==1)      
                        {   printf("\n需要进行修改的选项\n 1.职工号  2.姓名  3.电话  4.工资  \n");
                                printf("请输入你想修改的那一项序号:  ");  
                scanf("%d",&c);               //输入数字对应操作选项   
                                do  {      
                                        switch(c)     
                                        {   case 1: printf("职工号改为: ");
                                                                scanf("%d",&g);
                                                for(int i=0;i<m;i++)
                                                while(emp[i].Number==g)    //判断输入的职工号是否与原来的重复
                                                {        printf("职工号为 %d 的员工已存在,请重新输入:\n",g);
                                                scanf("%d",&g);
                                                }
                                    emp[i].Number=g;         //将重新输入的职工号录入程序中
                                                                break;                  
                                                case 2: printf("姓名改为: ");
                                                                scanf("%s",name);         
                                                                strcpy(emp[i].name,name);
                                                                break;     
                                                
                                                case 4: printf("基本工资改为: ");
                                                                scanf("%f",&money);
                                                                emp[i].money=money;
                                                                break;      
                                                
                                                case 3: printf("电话改为: ");  
                                                                scanf("%lld",Tel);
                                                                emp[i].Tel=Tel;  
                                                                break;               
                                        }            
                                        printf("\n确认修改 请按1,重新输入 请按2:   ");
                                        scanf("%d",&b);
                                        if(b==1)
                                        {
                                                system("cls");
                                                save(m);//储存修改后的数据
                                                printf("\n");   
                                                
                                        }
                                } while(b==2);
                        }               
                }

                else if(i==(m-1)) i++;        
        }   
        if(k==0) {
                printf("\n对不起,您输入有误!\n");
            getchar();
                getchar();
        }
        else{
                printf("\n继续修改请按 1,退出修改请按 0:  ");
            scanf("%d",&t);
        }
        system("cls");
        switch(t)
        {   case 1:
                                change();//返回修改函数
                                break;
                case 0: break;   
                default:break;
        }
        system("cls");
}

免费评分

参与人数 7吾爱币 +13 热心值 +5 收起 理由
156431 + 1 + 1 谢谢@Thanks!
scottlee1008 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
ccaw + 1 用心讨论,共获提升!
yygfml + 1 + 1 我很赞同!
mrtwzchi + 1 + 1 热心回复!
zhaoqingdz + 1 + 1 谢谢@Thanks!
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

chishingchan 发表于 2022-8-29 20:54
源码发附件就好。贴个图比贴源码更好理解!
 楼主| xin112532604 发表于 2022-9-2 19:15
Mokte 发表于 2022-9-2 15:44
为什么不能发个成品图出来呢?

这个是在cmd窗口编译运行的程序,还没在运用在软件中呢
erui 发表于 2022-8-29 21:59
谢谢楼主分享,编程是个技术活,要有创作意图,还要能用编程语言写出代码。
zhaoqingdz 发表于 2022-8-31 13:06
感谢楼主的分享!学习了
Mokte 发表于 2022-9-2 15:44
为什么不能发个成品图出来呢?
cfengah 发表于 2022-9-9 19:57
        楼主很棒,一起加油哦
lzg6664 发表于 2022-12-2 13:23
可以可以
mrtwzchi 发表于 2022-12-5 08:30
学习学习
hebkljk 发表于 2022-12-7 06:22
感谢楼主的分享!学习了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 13:04

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表