⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cpp1.cpp

📁 人机交互信息查询系统
💻 CPP
📖 第 1 页 / 共 2 页
字号:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>
#define N 10
struct employee//职工基本情况
{   int num;//工号
    int position;//职位1、总经理 2、副总经理 3、业务经理等
    char name[20];//姓名
    char sex[5];//性别[F]为女[M]为男
    int age;//年龄
    int cult;//文化程度1、研究生以上 2、本科 3、专科 4、中专 5、其它
    int salary;//工资
    int state;//健康情况分为1、好 2、一般 3、差
}em[N];
struct communication//职工通讯录
{   char name[8];
    char officetel[13];
    char hometel[13];
    char handtel[11];
    char address1[30];
    char address2[30];
}empc[N];
struct empsalary//职工工资与姓名的文件
{   char name[8];
    int salary;
}emps[N];
void manage();
void query();
void communicate();
void input();
void display();
void change();
void delAll();
void del();
void add();
void count();
int changeposition();
int changecult();
int changesalary();
int changestate();
void sortEmployee();
void sortName();
void sortNum();
void swap(struct employee *e1, struct employee *e2);
void inputcommunicate();
void displaycommunicate();
void querycommunicate();
void changecommunicate();
void changetel1(int ii);
void changetel2(int ii);
void changetel3(int ii);
void changetel4(int ii);
void changetel5(int ii);
void delcommunicateOne();
void delcommunicateAll();
void sortcommunicate();
void swapcommunicate(struct communication *c1,struct communication *c2);
void main()
{   int choice;
    do
{ printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
        printf("\t\t欢迎进入企业职工管理系统中文版\n\n\n");
        printf("\t制作人:马敬旭\t班级:04假期班\t学号:5406212048\n\n");
        printf("\t天津大学 计算机科学与技术\n\n");
    printf("\t%%%%%%%%%%%%%%%%%%%%%%%%%%%\n");
        printf("\t\t请你选择操作类型:\n");
        printf("\t==============\t\t==============\n");
        printf("\t\t1 进入职工基本信息管理系统\n");
        printf("\t\t2 进入职工信息查询系统\n");
        printf("\t\t3 进入职工通讯录管理系统\n");
        printf("\t\t0 退出职工管理系统\n");
        printf("\t==============\t\t==============\n\n");
    printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
         printf("请输入0-3进行选择操作类型-");
        cin >> choice;
        switch(choice)
        {    case 1:
            manage();
            break;
        case 2:
            query();
            break;
        case 3:
            communicate();
            break;
        case 0:
            {   printf("谢谢使用再见\n");
            	exit(0);
    		}
        default:
    		{
                printf("输入有错误请重新输入:\n");
    		}
    	}
    }while(1);
}
void manage()
{   int choicemanage;
    char choice='y';
    while(toupper(choice)!='N')
    {   printf("\t\t欢迎进入职工基本信息管理系统\n");
        printf("=====================\n");
        printf("\t\t请你选择操作类型:\n");
        printf("\t\t1输入/追加职工信息\n");
        printf("\t\t2显示职工信息\n");
        printf("\t\t3修改职工信息\n");
        printf("\t\t4删除一个职工信息\n");
        printf("\t\t5删除所有职工信息\n");
        printf("\t\t6排序职工信息\n");
        printf("\t\t7统计职工信息\n");
        printf("\t\t0退出职工信息管理系统\n");
        printf("=====================\n");
                printf("请输入0-7进行选择操作类型-");
        cin >> choicemanage;
        switch(choicemanage)
    	{
        case 1:
            input();//输入/追加职工信息
            break;
        case 2:
            display();//显示职工信息
            break;
        case 3:
            change();//修改职工信息
            break;
        case 4:
            del();//删除一个职工信息
            break;
        case 5:
            delAll();//删除全体职工信息
            break;
        case 6:
            sortEmployee();//排序职工信息
            break;
        case 7:
            count();//统计职工信息
            break;
        case 0:
            printf("谢谢你的使用再见\n");
            return;
        default:
            printf("你的输入有错请重新输入\n");
    	}
        printf("是否继续管理?(Y/N)");
        scanf("%s",&choice);
    }
        printf("输入完毕,任意键返回\n");
        getch();
}
void input() //输入职工信息
{   FILE *fp;
    char choiceinput='y';
    int i=0;
    if((fp=fopen("employee.txt","ab+"))==NULL)
    {   printf("不能打开文件\n");
        printf("操作完毕,按任意键返回\n");
        getch();
    }
    while(fread(&em[i],sizeof(struct employee),1,fp) != 0)
        i++;
    printf("%d请输入职工的基本信息\n",i);

    while(toupper(choiceinput)!='N')
    {   i++;
        printf("第%d个职工\n",i);
        em[i].num=i+1000;
        printf("\n");
        printf("请你选择其职位:\n");
        printf("1、总经理 2、副总经理 3、业务经理\n");
        printf("4、技术负责人 5、进出口负责人 6、秘书\n");
        printf("7、会计 8、跟单员 9、员工\n");
        printf("请你输入职位代号:");//输入职位
        scanf("%d",&em[i].position);  
        printf("\n");
        printf("请你输入姓名:");//输入姓名
        scanf("%s",em[i].name);
        printf("\n");
        printf("请你选择性别:[M]为男 [F]为女\n");  
        printf("请你输入性别代码: ");//输入性别
        scanf("%s",em[i].sex);  
        printf("请你输入年龄:");//输入年龄
        scanf("%d",&em[i].age);
        printf("\n");
printf("请你选择文化程度:1研究生以上 2本科 3专科 4中专 5其他\n"); 
        printf("请你输入文化程度代码:");//输入文化程度
        scanf("%d",&em[i].cult);
        printf("\n");
        printf("请你输入工资:");//输入工资
        scanf("%d",&em[i].salary);
        printf("\n");
        printf("请你选择身体情况:1、好 2、一般 3、差\n");  
        printf("请你输入身体情况代码:");//身体情况
        scanf("%d",&em[i].state); 
        fwrite(&em[i],sizeof(struct employee),1,fp);
        printf("\n");
        printf("是否继续输入?(Y/N)\n");
        scanf("%s",&choiceinput);
    }
    fclose(fp);
    printf("输入完毕,任意键返回\n");
    getch();
}
void display()//显示职工信息
{   FILE *fp;
    int i;
    if((fp=fopen("employee.txt","rb"))==NULL)
    {
        printf("对不起,目前无数据可读!\n");
        return;
    }
    printf("输出结果:\n");
    printf("工号\t职位\t姓名\t性别\t年龄\t文化程度\t工资\t身体情况\n");
    for(i=0;fread(&em[i],sizeof(struct employee),1,fp)!=0;i++)
    {  
        printf("%d\t",em[i].num);
        printf(" %d\t",em[i].position);
        printf("%s\t",em[i].name);
        printf("  %s\t",em[i].sex);
        printf(" %d\t",em[i].age);
        printf("   %d\t",em[i].cult);
        printf("        %d\t",em[i].salary);
        printf("   %d\n",em[i].state);
    }
    fclose(fp);
    if(i == 0) printf("无记录!");
    printf("\n");
    printf("职位说明:    1、总经事     2、副总经理     3、业务经理\n");
    printf("              4、技术负责人 5、进出口负责人 6、秘书\n");
    printf("              7、会计       8、跟单员       9、员工\n");
    printf("性别说明:    其中[M]为男 [F]为女\n");
    printf("\n");
printf("文化程度说明:1、研究生以上 2、本科 3、专科 4、中专 5、其他\n");
    printf("\n");
    printf("身体状况说明:1、 好  2、一般 3、差\n");
    printf("\n");
    printf("完毕按任意键返回\n");
    getch();
 }
void change() //修改职工信息
{    FILE *fp;
    int i;
    int count = 0;
    char chname[8];
    int choicechange;
    if((fp=fopen("employee.txt","rb"))==NULL)
    {
        printf("文件为空,不能够打开\n");
        printf("按任意键返回\n");
        getch();
    }
    for(i=0;fread(&em[i],sizeof(struct employee),1,fp)!=0;i++)
        count++;
    fclose(fp);
    printf("请你输入要修改的人的姓名:\n");
    scanf("%s",&chname);
    if((fp=fopen("employee.txt","wb"))==NULL)
    {
        printf("不能够打开这个文件\n");
        return;
    }
    for(i = 0;i<count; i++)
    {     if(strcmp(chname,em[i].name)==0)
        {   printf("这是你要修改的人的信息\n");
printf("工号为 %d 职位为 %d 姓名为 %s 性别为 %s 文化程度为 %d 工资为 %d 身体为 %d\n",em[i].num,em[i].position,em[i].name,em[i].sex,em[i].cult,em[i].salary,em[i].state);
        printf("------------------------------------------------------------\n");
            printf("请你输入要修改的部分:\n");
            printf("======================\n");
            printf("1修改职位\n");
            printf("2修改文化程度\n");
            printf("3修改工资\n");
            printf("4修改身体情况\n");
            printf("0退出系统\n");
            printf("======================\n");
            printf("请输入0-4进行选择操作类型-");
            scanf("%d",&choicechange);
            switch(choicechange)
    		{
            case 1:
                em[i].position=changeposition();
            	break;
            case 2:
                em[i].cult=changecult();
            	break;
            case 3:
                em[i].salary=changesalary();
            	break;
            case 4:
                em[i].state=changestate();
            	break;
            case 0:
            	break;
            default :
                printf("输入有错误");
        	}   
    	}	
    fwrite(&em[i],sizeof(struct employee),1,fp);
    }
    fclose(fp);
    printf("操作完成按任意键返回\n");
    getch();
}
int changeposition()//输入新职位信息
{
    int newposition;
    printf("请你输入新职位:\n");
    printf("1、总经理 2、副总经理 3、业务经理\n");
    printf("4、技术负责人 5、进出口负责人 6、秘书\n");
    printf("7、会计 8、跟单员 9、员工\n");
    scanf("%d",&newposition);
    return(newposition);
}
int changecult()//输入新的文凭信息
{
    int newcult;
    printf("请你输入新的文凭:\n");
    printf("1、研究生以上 2、本科 3、专科 4、中专 5、其他\n");
    scanf("%d",&newcult);
    return newcult;
}
int changesalary()//输入新的工资信息
{
    int newsalary;
    printf("请你输入新的工资:\n");
    scanf("%d",&newsalary);
    return newsalary;
}
int changestate()//输入新的身体情况信息
{
    int newstate;
    printf("请你输入现在的身体情况:\n");
    printf("1、好 2、一般 3、差\n");
    scanf("%d",&newstate);
    return newstate;
}
void del()//删除一个职工信息
{   int i=0;
    int count = 0;
    char delname[8];
    FILE *fp;
    if((fp=fopen("employee.txt","rb"))==NULL)
    {   printf("文件为空,不能够打开\n");
        printf("按任意键返回\n");
        getch();
    }
    printf("请你输入要删除的人的姓名:\n");//删除的职工的信息
    scanf("%s",delname);
    for(i=0;fread(&em[i],sizeof(struct employee),1,fp)!=0;i++)
        count++;
    fclose(fp);
    if((fp=fopen("employee.txt","wb+"))==NULL)//显示新的职工的信息
    {   printf("不能够打开这个文件\n");
        printf("按任意键返回\n");
        getch();
    }
    for(i=0;i<count;i++)
    {   if(strcmp(em[i].name,delname)!=0)
            fwrite(&em[i],sizeof(struct employee),1,fp);		
    }
    fclose(fp);
    printf("删除完毕,按任意键返回\n");
    getch();
} 
void delAll()//删除全体职工信息
{   FILE *fp;
    if((fp=fopen("employee.txt","wb"))==NULL)
    {   printf("文件为空,不能够打开\n");
        printf("按任意键返回\n");
        getch();
    }
    printf("删除完毕,按任意键返回\n");
    getch();
    fclose(fp);
}
void count()//统计信息
{   FILE *fp;
    int i=0;
    int num=0;//总人数统计
    int mnum=0,fnum=0;//性别人数统计
    int expernum=0,doctornum=0,masternum=0,bechelornum=0,othernum=0;//学位人数统计
    int dsznum=0,zglnum=0,fzglnum=0,glnum=0,fglnum=0;//职位人数统计
    int mishunum=0,jsynum=0,lbnum=0,ygnum=0;
    if((fp=fopen("employee.txt","rb"))==NULL)
    {
        printf("不能够打开这个文件\n");
        printf("按任意键继续\n");
        getch();
    }
    do
    {   fread(&em[i],sizeof(struct employee),1,fp);
        if(feof(fp))
            break;
        num++;
        if(strcmp(em[i].sex,"m")==0)
            mnum++;
        if(strcmp(em[i].sex,"f")==0)
            fnum++;
        if(em[i].cult==1)
            expernum++;
        if(em[i].cult==2)
            doctornum++;
        if(em[i].cult==3)
            masternum++;
        if(em[i].cult==4)
            bechelornum++;
        if(em[i].cult==5)
            othernum++;
        if(em[i].position==1)//职位统计
            dsznum++;
        if(em[i].position==2)
            zglnum++;
        if(em[i].position==3)
            fzglnum++;
        if(em[i].position==4)
            glnum++;
        if(em[i].position==5)
            fglnum++;
        if(em[i].position==6)
            mishunum++;
        if(em[i].position==7)
            jsynum++;
        if(em[i].position==8)
            lbnum++;
        if(em[i].position==9)
            ygnum++;
        i++;
    }while(1);
    printf("总人数为%d\n",num);
    printf("====性别分类=====\n");
    printf("男人数为%d\n",mnum);
    printf("女人数为%d\n",fnum);
    printf("=====文凭分类=====\n");
    printf("研究生以上人数为%d\n",expernum);
    printf("大学本科人数为%d\n",doctornum);
    printf("大学专科人数为%d\n",masternum);
    printf("中专人数为%d\n",bechelornum);
    printf("其他人数为%d\n",othernum);
    printf("=====职位分类========\n");
    printf("总经理人数为%d\n",dsznum);
    printf("副总经理人数为%d\n",zglnum);
    printf("业务经理人数为%d\n",fzglnum);
    printf("技术负责人人数为%d\n",glnum);
    printf("进出口负责人人数为%d\n",fglnum);
    printf("秘书人数为%d\n",mishunum);
    printf("会计人数为%d\n",jsynum);
    printf("跟单员人数为%d\n",lbnum);
    printf("员工人数为%d\n",ygnum);
    fclose(fp);
}
void query()//查询职工信息
{   FILE *fp;
    int i=0;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -