溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

C++如何實(shí)現(xiàn)教職工管理系統(tǒng)

發(fā)布時(shí)間:2022-03-18 09:04:13 來(lái)源:億速云 閱讀:160 作者:iii 欄目:開(kāi)發(fā)技術(shù)

這篇文章主要介紹“C++如何實(shí)現(xiàn)教職工管理系統(tǒng)”,在日常操作中,相信很多人在C++如何實(shí)現(xiàn)教職工管理系統(tǒng)問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”C++如何實(shí)現(xiàn)教職工管理系統(tǒng)”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

要求:設(shè)計(jì)一個(gè)程序來(lái)管理職工較全面數(shù)據(jù)信息,具備數(shù)據(jù)的輸入、查找、刪除等功能。具體功能細(xì)節(jié)可以根據(jù)自己理解情況進(jìn)行增加。

以下是我的設(shè)計(jì):

#include <stdio.h>
#include <windows.h>
#include <string.h>
 
 
struct worker
{
int num;
char name[20];
char zhicheng[10];  
int wages;
int reward;
long birth;
int salary;
}work[500],work1;        /*定義結(jié)構(gòu)體*/
 
 
 
 
void menu();                     //聲明菜單函數(shù)
void type_in();                  //聲明錄入函數(shù)
void baocun(int);                //聲明保存函數(shù)
void scan();                     //聲明瀏覽函數(shù)
void del();                      //聲明刪除函數(shù)
void search();                   //聲明查詢(xún)函數(shù)
void search_zhicheng();          //聲明按職稱(chēng)查詢(xún)函數(shù)
void search_name();              //聲明按姓名查找函數(shù)
void change();                   //聲明修改函數(shù)
void order();                    //聲明排序函數(shù)
void add();                      //聲明添加函數(shù)
void order_wages();
void order_name();
void menu()                      /*菜單函數(shù)*/
{
    printf("\n");
    printf("                                歡迎進(jìn)入                             \n");
    printf("                             職工信息管理系統(tǒng)                                   ");
    printf("******************************************************************************\n");
    printf("           1.錄入職工信息\n");
    printf("           2.瀏覽職工信息\n");
    printf("           3.查詢(xún)職工信息\n");
    printf("           4.刪除職工信息\n");
    printf("           5.修改職工信息\n");
    printf("           6.職工信息排序\n");
    printf("           7.添加職工信息\n");
    printf("           8.退出\n");
    printf("*******************************************************************************\n");
    printf("\n");
    
}
/********************************************************************************************/
void main()
{   
    int n,f;
    while(1)
    { 
        do
        {
            menu();            
            printf("請(qǐng)輸入你需要操作的序號(hào)(1-8):\n");
            scanf("%d",&n);
            if(n>=1&&n<=8)
            {
                f=1;
                break;
            }
            else
            {
                f=0;
                
                printf("您輸入有誤,請(qǐng)重新選擇!");
            }
        }while(f==0);
        
        switch(n)
        {
        case 1:printf("               錄入職工信息\n");printf("\n");type_in();break;
        case 2:printf("               瀏覽職工信息\n");printf("\n");system("cls");scan();break;
        case 3:printf("               查詢(xún)職工信息\n");printf("\n");system("cls");search();break; 
        case 4:printf("               刪除職工信息\n");printf("\n");system("cls");del();break;
        case 5:printf("               修改職工信息\n");printf("\n");system("cls");change();break;
        case 6:printf("               職工信息排序\n");printf("\n");system("cls");order();break;
        case 7:printf("               添加職工信息\n");printf("\n");system("cls");add();break;
        case 8:system("cls");printf("\n\n\n\n\n\n                      ------謝謝使用!---------\n\n\n\n\n\n\n                                                          by --鳳灼\n");return ;
        default :break;
        }
        
    }    
}
/***********************************************************************************/
void type_in()   /*錄入函數(shù)*/
{
    int i,m;
    printf("請(qǐng)輸入需要?jiǎng)?chuàng)建信息的職工人數(shù)(1--500):\n");
    scanf("%d",&m);
    for (i=0;i<m;i++)
    {
        printf("請(qǐng)輸入職工號(hào): ");
        scanf("%d",&work[i].num);  
        printf("\n");
        printf("請(qǐng)輸入姓名:  ");
        scanf("%s",work[i].name);
        getchar();
        printf("請(qǐng)輸入職稱(chēng):  ");
        scanf("%s",&work[i].zhicheng);
        printf("請(qǐng)輸入基本工資:  ");
        scanf("%d",&work[i].wages);
        printf("請(qǐng)輸入獎(jiǎng)金:  ");
        scanf("%d",&work[i].reward);
        printf("請(qǐng)輸入生日(格式如19900101):  ");
        scanf("%d",&work[i].birth);
        getchar();system("cls");
        printf("\n一個(gè)職工的信息檔案創(chuàng)建完畢!請(qǐng)輸入下一個(gè)職工的信息\n");     
        work[i].salary=work[i].wages + work[i].reward;
        printf("\n");
        
    }
    baocun(m);
}
/***************************************************************************/
void baocun(int m)  /*保存文件函數(shù)*/
{
    int i;
    FILE *fp;
    if ((fp=fopen("worker_list.txt","wb"))==NULL)  /*創(chuàng)建文件并判斷是否能打開(kāi)*/
    {
        printf ("此文件不能打開(kāi)\n");
        exit(0);
    }
    for (i=0;i<m;i++) 
        if (fwrite(&work[i],sizeof(struct worker),1,fp)!=1)
            printf("file write error\n");
        fclose(fp);
}
/***************************************************************************/
 
 
int load()  /*導(dǎo)入函數(shù)*/
{
    FILE*fp;
    int i=0;
    if((fp=fopen("worker_list.txt","rb"))==NULL)
    {
        printf ("cannot open file\n");
        exit(0);
    }
    else 
    {
        do 
        {
            fread(&work[i],sizeof(struct worker),1,fp);
            i++;
        }
        while(feof(fp)==0);
    }
    fclose(fp);
    return(i-1);
}
   
/*******************************************************************************/
void scan()  /*瀏覽函數(shù)*/
{
    int i;
    int m=load();
    printf("\n職工號(hào)\t姓名\t職稱(chēng)\t基本工資\t獎(jiǎng)金\t實(shí)際工資\t生日             \n");
    for(i=0;i<m;i++) 
        printf("\n %d\t%s\t  %s\t  %d    \t%d\t %d\t      %ld\n",work[i].num,work[i].name,
        work[i].zhicheng,work[i].wages,work[i].reward,work[i].salary,work[i].birth);
    
    printf("按任意鍵繼續(xù)\n");
    getchar();
    getchar();system("cls");
}
/********************************************************************************/
void del()   /*刪除函數(shù)*/
{
    int m=load();
    int i,j,n,t,f;
    char name1[10];
    printf("\n 原來(lái)的職工信息:\n");
    scan();   
    printf("\n");
    printf("請(qǐng)輸入要?jiǎng)h除的職工的姓名:\n");
    scanf("%s",name1);
    for(f=1,i=0;f&&i<m;i++)
    {
        if(strcmp(work[i].name,name1)==0)
        {
            printf("\n已找到此人,原始記錄為:\n");
            printf("\n職工號(hào)\t姓名\t職稱(chēng)\t基本工資\t獎(jiǎng)金\t實(shí)際工資\t生日             \n");
            printf("\n %d\t%s\t  %s\t  %d    \t%d\t %d\t      %ld\n",work[i].num,work[i].name,
                work[i].zhicheng,work[i].wages,work[i].reward,work[i].salary,work[i].birth);                                                                                                            
            printf("\n確實(shí)要?jiǎng)h除此人信息請(qǐng)按1,不刪除請(qǐng)按0\n");
            scanf("%d",&n);
            if(n==1)   
            {
                for(j=i;j<m-1;j++)
                {
                    work[j]=work[j+1];
                    
                }
                f=0;
            }
        }
    }
    if(!f)
        m=m-1;
    else
        printf("\n對(duì)不起,查無(wú)此人!\n");
    printf("\n 瀏覽刪除后的所有職工信息:\n");
    baocun(m);     
    scan();  
    printf("\n繼續(xù)刪除請(qǐng)按1,不再刪除請(qǐng)按0\n");
    scanf("%d",&t);
    switch(t)
    {
    case 1:del();break;
    case 0:break;
    default :break;
    }system("cls");
}
 
 
/**********************************************************************************/
void search()/*查詢(xún)函數(shù)*/
{
    int t,f;
    do
    {
        printf("\n按姓名查詢(xún)請(qǐng)按1 ; 按職稱(chēng)查詢(xún)請(qǐng)按2 ; 返回主頁(yè)按3\n");
        scanf("%d",&t);
        if(t>=1&&t<=3)
        {
            f=1;
            break;
        }
        else
        {
            f=0;
            printf("您輸入有誤,請(qǐng)重新選擇!");
        }
    }while(f==0);system("cls");
    while(f==1)
    {
        switch(t)
        { 
        case 1:printf("按姓名查詢(xún)\n");search_name();break;
        case 2:printf("按職稱(chēng)查詢(xún)\n");search_zhicheng();break;
        case 3:main();break;
        default:break;
        }
        system("cls");    
    }
}
/***********************************************************************************/
void search_name()/*按姓名查找函數(shù)*/
{
    char name1[10];
    int i,t;
    int m=load();
    printf("請(qǐng)輸入要查找的姓名:\n");
    scanf("%s",name1);
    for(i=0;i<m;i++)
        if(strcmp(name1,work[i].name)==0)
        {  
            printf("\n已找到此人,其記錄為:\n");
            printf("\n職工號(hào)\t姓名\t職稱(chēng)\t基本工資\t獎(jiǎng)金\t實(shí)際工資\t生日             \n");
            printf("\n %d\t%s\t  %s\t  %d    \t%d\t %d\t      %ld\n",work[i].num,work[i].name,
                work[i].zhicheng,work[i].wages,work[i].reward,work[i].salary,work[i].birth); 
            break;
        }
        if(i==m)  
            printf("\n對(duì)不起,查無(wú)此人\n");
        printf("\n");
        printf("返回查詢(xún)函數(shù)請(qǐng)按1,繼續(xù)查詢(xún)職工號(hào)請(qǐng)按2\n");
        scanf("%d",&t);
        switch(t)
        { 
        case 1:search();break;
        case 2: break;
        default:break;
        }
}
  
  
/*************************************************************************************/
void search_zhicheng()/*按職稱(chēng)查找函數(shù)*/
{
    char zhicheng1[10];
    int i,t;
    int m=load();
    printf("請(qǐng)輸入要查找的職稱(chēng):\n");
    scanf("%s",zhicheng1);
    for(i=0;i<m;i++)
        if(strcmp(zhicheng1,work[i].zhicheng)==0)
        {  
            printf("\n已找到此人,其記錄為:\n");
            printf("\n職工號(hào)\t姓名\t職稱(chēng)\t基本工資\t獎(jiǎng)金\t實(shí)際工資\t生日             \n");
            printf("\n %d\t%s\t  %s\t  %d    \t%d\t %d\t      %ld\n",work[i].num,work[i].name,
                work[i].zhicheng,work[i].wages,work[i].reward,work[i].salary,work[i].birth); 
            break;
        }
        if(i==m)  
            printf("\n對(duì)不起,信息有誤\n");
        printf("\n");
        printf("返回查詢(xún)函數(shù)請(qǐng)按1,繼續(xù)查詢(xún)職工號(hào)請(qǐng)按2\n");
        scanf("%d",&t);
        switch(t)
        { 
        case 1:search();break;
        case 2: break;
        default:break;
        }
}
/***************************************************************************************/
void change()  /*修改函數(shù)*/
{
    int num;
    char name[20];
    char zhicheng[10];  
    int wages;
    int reward;
    int birth;
    int salary;
    int b,c,i,n,t,f; 
    int m=load();                                      /*導(dǎo)入文件內(nèi)的信息*/
    printf("\n 原來(lái)的職工信息:\n");
    scan();                                      
    printf("\n");
    printf("請(qǐng)輸入要修改的職工的姓名:\n");
    scanf("%s",name);
    for(f=1,i=0;f&&i<m;i++)
    {
        if(strcmp(work[i].name,name)==0)
        {
            printf("\n已找到此人,原始記錄為:\n");
            printf("\n職工號(hào)\t姓名\t職稱(chēng)\t基本工資\t獎(jiǎng)金\t實(shí)際工資\t生日             \n");
            printf("\n %d\t%s\t  %s\t  %d    \t%d\t %d\t      %ld\n",work[i].num,work[i].name,
                work[i].zhicheng,work[i].wages,work[i].reward,work[i].salary,work[i].birth); 
            printf("\n確實(shí)要修改此人信息請(qǐng)按1 ; 不修改請(qǐng)按0\n");
            scanf("%d",&n);
            if(n==1)
            {
                printf("\n需要進(jìn)行修改的選項(xiàng)\n 1.職工號(hào) 2.姓名 3.職稱(chēng) 4.基本工資 5.獎(jiǎng)金  6.生日 7.實(shí)際工資\n");  
                printf("請(qǐng)輸入你想修改的那一項(xiàng)序號(hào):\n");  
                scanf("%d",&c);  
                if(c>7||c<1)  
                    printf("\n選擇錯(cuò)誤,請(qǐng)重新選擇!\n");  
            }
            f=0;
        }
        
    }
    if(f==1)
        printf("\n對(duì)不起,信息有誤!\n");  
    do  
    {
    switch(c)     
    {  
    case 1:printf("職工號(hào)改為: ");
        scanf("%d",&num);
        work[i-1].num=num;
        break;  
    case 2:printf("姓名改為: ");
        scanf("%s",name);
        strcpy(work[i-1].name,name); 
        break;
    case 3:printf("職稱(chēng)改為");
        scanf("%s",zhicheng);
        strcpy(work[i-1].zhicheng,zhicheng); 
        break; 
    case 4:printf("基本工資改為: ");
        scanf("%d",&wages);
        work[i-1].wages=wages;
        break;  
    case 5:printf("獎(jiǎng)金改為: ");
        scanf("%d",&reward); 
        work[i-1].reward=reward; 
        break;   
    case 6:printf("生日改為: ");
        scanf("%ld",&birth);
        work[i-1].birth=birth;
        break;  
    case 7:printf("實(shí)際工資改為: ");
        scanf("%d",&salary);
        work[i-1].salary=salary; 
        break;  
    } 
    printf("\n");
    printf("\n是否確定所修改的信息?\n 是 請(qǐng)按1 ; \n不,重新修改 請(qǐng)按2:  \n"); 
    scanf("%d",&b);
    
    }  
    while(b==2);
    printf("\n瀏覽修改后的所有職工信息:\n");
    printf("\n");
    baocun(m);
    scan();
    printf("\n繼續(xù)修改請(qǐng)按1,不再修改請(qǐng)按0\n");
    scanf("%d",&t);
    switch(t)
    {
    case 1:change();break;
    case 0:break;
    default :break;
    }system("cls");
}
/*************************************************************************************/
void order()/*排序函數(shù)*/
{
    int k,f;
    do
    {
        printf("\n按姓名排序請(qǐng)按1 ; 按基本工資排序請(qǐng)按2 ; 返回主頁(yè)按3\n");
        scanf("%d",&k);
        if(k>=1&&k<=3)
        {
            f=1;
            break;
        }
        else
        {
            f=0;
            printf("您輸入有誤,請(qǐng)重新選擇!");
        }
    }while(f==0);system("cls");
    
    while(f==1)
    {
        switch(k)
        { 
        case 1:printf("\n按姓名排序?yàn)?字母由小到大排列):\n");order_name();break;
        case 2:printf("\n按基本工資排序?yàn)?由高到低排列):\n");order_wages();break;
        case 3:system("cls");main();break;
        default:break;
        }
        system("cls");    
    }
}
/*************************************************************************************/
void order_name()/*按姓名排序函數(shù)*/
{
    int i,j,k;
    int m=load();
    for(i=0;i<m-1;i++)
        for(j=0;j<m-1-i;j++)/*冒泡法排序*/
            if(strcmp(work[j].name,work[j+1].name)>0)
            {  work1=work[j];work[j]=work[j+1];work[j+1]=work1;}
            baocun(m);
            printf("\n職工號(hào)\t姓名\t職稱(chēng)\t基本工資\t獎(jiǎng)金\t實(shí)際工資\t生日             \n");
            for(j=0;j<m;j++) 
                printf("\n %d\t%s\t  %s\t  %d    \t%d\t %d\t      %ld\n",work[j].num,work[j].name,
                work[j].zhicheng,work[j].wages,work[j].reward,work[j].salary,work[j].birth);
            
            printf("返回排序函數(shù)請(qǐng)按1,返回主頁(yè)請(qǐng)按2\n");
            scanf("%d",&k);
            switch(k)
            { 
            case 1:order();return;
            case 2:system("cls");return;
            default:break;
   }system("cls");
}
/************************************************************************************/
void order_wages()/*按基本工資排序函數(shù)*/
{
    int i,k,j;
    int m=load();
    for(i=0;i<m-1;i++)
        for(j=0;j<m-1-i;j++)
            if(work[j].wages<work[j+1].wages)/*用冒泡法排序*/
            {  work1=work[j];work[j]=work[j+1];work[j+1]=work1;}
            baocun(m);
            printf("\n職工號(hào)\t姓名\t職稱(chēng)\t基本工資\t獎(jiǎng)金\t實(shí)際工資\t生日             \n");
            for(j=0;j<m;j++) 
                printf("\n %d\t%s\t  %s\t  %d    \t%d\t %d\t      %ld\n",work[j].num,work[j].name,
                work[j].zhicheng,work[j].wages,work[j].reward,work[j].salary,work[j].birth);
            
            printf("返回排序函數(shù)請(qǐng)按1,返回主頁(yè)請(qǐng)按2\n");
            scanf("%d",&k);
            switch(k)
            { 
            case 1:order();return;
            case 2:system("cls"); return;
            default:break;
            }
            system("cls");
}
/***********************************************************************************/
void add()   /*添加函數(shù)*/
{
    int n=load();
    int i,m;
    printf("請(qǐng)輸入需要添加信息的職工人數(shù)\n");
    scanf("%d",&m);
    for (i=n;i<m+n;i++)
    {
        printf("請(qǐng)輸入職工號(hào): ");
        scanf("%d",&work[i].num);  
        printf("\n");
        printf("請(qǐng)輸入姓名:  ");
        scanf("%s",work[i].name);
        printf("請(qǐng)輸入職稱(chēng):  ");
        scanf("%s",&work[i].zhicheng);
        printf("請(qǐng)輸入基本工資:  ");
        scanf("%d",&work[i].wages);
        printf("請(qǐng)輸入獎(jiǎng)金:  ");
        scanf("%d",&work[i].reward);
        printf("請(qǐng)輸入生日(格式如19900101):  ");
        scanf("%d",&work[i].birth);
        getchar();system("cls");
        printf("\n一個(gè)職工的信息檔案添加完畢!請(qǐng)輸入下一個(gè)職工的信息\n");     
        work[i].salary=work[i].wages + work[i].reward;
        printf("\n");
    }
    baocun(m+n);system("cls");
    printf("添加職工檔案完成。\n這時(shí)庫(kù)存信息為:\n");
    scan();
}

下面是調(diào)試結(jié)果:

C++如何實(shí)現(xiàn)教職工管理系統(tǒng)

按序號(hào)順序要試一下各個(gè)功能:

C++如何實(shí)現(xiàn)教職工管理系統(tǒng)

C++如何實(shí)現(xiàn)教職工管理系統(tǒng)

C++如何實(shí)現(xiàn)教職工管理系統(tǒng)

C++如何實(shí)現(xiàn)教職工管理系統(tǒng)

C++如何實(shí)現(xiàn)教職工管理系統(tǒng)

C++如何實(shí)現(xiàn)教職工管理系統(tǒng)

C++如何實(shí)現(xiàn)教職工管理系統(tǒng)

C++如何實(shí)現(xiàn)教職工管理系統(tǒng)

C++如何實(shí)現(xiàn)教職工管理系統(tǒng)

C++如何實(shí)現(xiàn)教職工管理系統(tǒng)

C++如何實(shí)現(xiàn)教職工管理系統(tǒng)

最后的退出是直接退了出去就沒(méi)有放圖,基本各個(gè)功能都沒(méi)什么問(wèn)題。

到此,關(guān)于“C++如何實(shí)現(xiàn)教職工管理系統(tǒng)”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

c++
AI