C++实现教职工管理系统课程设计

本文实例为大家分享了C++实现教职工管理系统的具体代码,供大家参考,具体内容如下

要求:设计一个程序来管理职工较全面数据信息,具备数据的输入、查找、删除等功能。具体功能细节可以根据自己理解情况进行增加。

以下是我的设计:

#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;        /*定义结构体*/
 
 
 
 
void menu();                     //声明菜单函数
void type_in();                  //声明录入函数
void baocun(int);                //声明保存函数
void scan();                     //声明浏览函数
void del();                      //声明删除函数
void search();                   //声明查询函数
void search_zhicheng();          //声明按职称查询函数
void search_name();              //声明按姓名查找函数
void change();                   //声明修改函数
void order();                    //声明排序函数
void add();                      //声明添加函数
void order_wages();
void order_name();
void menu()                      /*菜单函数*/
{
    printf("\n");
    printf("                                欢迎进入                             \n");
    printf("                             职工信息管理系统                                   ");
    printf("******************************************************************************\n");
    printf("           1.录入职工信息\n");
    printf("           2.浏览职工信息\n");
    printf("           3.查询职工信息\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("请输入你需要操作的序号(1-8):\n");
            scanf("%d",&n);
            if(n>=1&&n<=8)
            {
                f=1;
                break;
            }
            else
            {
                f=0;
                
                printf("您输入有误,请重新选择!");
            }
        }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("               查询职工信息\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()   /*录入函数*/
{
    int i,m;
    printf("请输入需要创建信息的职工人数(1--500):\n");
    scanf("%d",&m);
    for (i=0;i<m;i++)
    {
        printf("请输入职工号: ");
        scanf("%d",&work[i].num);  
        printf("\n");
        printf("请输入姓名:  ");
        scanf("%s",work[i].name);
        getchar();
        printf("请输入职称:  ");
        scanf("%s",&work[i].zhicheng);
        printf("请输入基本工资:  ");
        scanf("%d",&work[i].wages);
        printf("请输入奖金:  ");
        scanf("%d",&work[i].reward);
        printf("请输入生日(格式如19900101):  ");
        scanf("%d",&work[i].birth);
        getchar();system("cls");
        printf("\n一个职工的信息档案创建完毕!请输入下一个职工的信息\n");     
        work[i].salary=work[i].wages + work[i].reward;
        printf("\n");
        
    }
    baocun(m);
}
/***************************************************************************/
void baocun(int m)  /*保存文件函数*/
{
    int i;
    FILE *fp;
    if ((fp=fopen("worker_list.txt","wb"))==NULL)  /*创建文件并判断是否能打开*/
    {
        printf ("此文件不能打开\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()  /*导入函数*/
{
    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()  /*浏览函数*/
{
    int i;
    int m=load();
    printf("\n职工号\t姓名\t职称\t基本工资\t奖金\t实际工资\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("按任意键继续\n");
    getchar();
    getchar();system("cls");
}
/********************************************************************************/
void del()   /*删除函数*/
{
    int m=load();
    int i,j,n,t,f;
    char name1[10];
    printf("\n 原来的职工信息:\n");
    scan();   
    printf("\n");
    printf("请输入要删除的职工的姓名:\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职工号\t姓名\t职称\t基本工资\t奖金\t实际工资\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确实要删除此人信息请按1,不删除请按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对不起,查无此人!\n");
    printf("\n 浏览删除后的所有职工信息:\n");
    baocun(m);     
    scan();  
    printf("\n继续删除请按1,不再删除请按0\n");
    scanf("%d",&t);
    switch(t)
    {
    case 1:del();break;
    case 0:break;
    default :break;
    }system("cls");
}
 
 
/**********************************************************************************/
void search()/*查询函数*/
{
    int t,f;
    do
    {
        printf("\n按姓名查询请按1 ; 按职称查询请按2 ; 返回主页按3\n");
        scanf("%d",&t);
        if(t>=1&&t<=3)
        {
            f=1;
            break;
        }
        else
        {
            f=0;
            printf("您输入有误,请重新选择!");
        }
    }while(f==0);system("cls");
    while(f==1)
    {
        switch(t)
        { 
        case 1:printf("按姓名查询\n");search_name();break;
        case 2:printf("按职称查询\n");search_zhicheng();break;
        case 3:main();break;
        default:break;
        }
        system("cls");    
    }
}
/***********************************************************************************/
void search_name()/*按姓名查找函数*/
{
    char name1[10];
    int i,t;
    int m=load();
    printf("请输入要查找的姓名:\n");
    scanf("%s",name1);
    for(i=0;i<m;i++)
        if(strcmp(name1,work[i].name)==0)
        {  
            printf("\n已找到此人,其记录为:\n");
            printf("\n职工号\t姓名\t职称\t基本工资\t奖金\t实际工资\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对不起,查无此人\n");
        printf("\n");
        printf("返回查询函数请按1,继续查询职工号请按2\n");
        scanf("%d",&t);
        switch(t)
        { 
        case 1:search();break;
        case 2: break;
        default:break;
        }
}
  
  
/*************************************************************************************/
void search_zhicheng()/*按职称查找函数*/
{
    char zhicheng1[10];
    int i,t;
    int m=load();
    printf("请输入要查找的职称:\n");
    scanf("%s",zhicheng1);
    for(i=0;i<m;i++)
        if(strcmp(zhicheng1,work[i].zhicheng)==0)
        {  
            printf("\n已找到此人,其记录为:\n");
            printf("\n职工号\t姓名\t职称\t基本工资\t奖金\t实际工资\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对不起,信息有误\n");
        printf("\n");
        printf("返回查询函数请按1,继续查询职工号请按2\n");
        scanf("%d",&t);
        switch(t)
        { 
        case 1:search();break;
        case 2: break;
        default:break;
        }
}
/***************************************************************************************/
void change()  /*修改函数*/
{
    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();                                      /*导入文件内的信息*/
    printf("\n 原来的职工信息:\n");
    scan();                                      
    printf("\n");
    printf("请输入要修改的职工的姓名:\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职工号\t姓名\t职称\t基本工资\t奖金\t实际工资\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确实要修改此人信息请按1 ; 不修改请按0\n");
            scanf("%d",&n);
            if(n==1)
            {
                printf("\n需要进行修改的选项\n 1.职工号 2.姓名 3.职称 4.基本工资 5.奖金  6.生日 7.实际工资\n");  
                printf("请输入你想修改的那一项序号:\n");  
                scanf("%d",&c);  
                if(c>7||c<1)  
                    printf("\n选择错误,请重新选择!\n");  
            }
            f=0;
        }
        
    }
    if(f==1)
        printf("\n对不起,信息有误!\n");  
    do  
    {
    switch(c)     
    {  
    case 1:printf("职工号改为: ");
        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("职称改为");
        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("奖金改为: ");
        scanf("%d",&reward); 
        work[i-1].reward=reward; 
        break;   
    case 6:printf("生日改为: ");
        scanf("%ld",&birth);
        work[i-1].birth=birth;
        break;  
    case 7:printf("实际工资改为: ");
        scanf("%d",&salary);
        work[i-1].salary=salary; 
        break;  
    } 
    printf("\n");
    printf("\n是否确定所修改的信息?\n 是 请按1 ; \n不,重新修改 请按2:  \n"); 
    scanf("%d",&b);
    
    }  
    while(b==2);
    printf("\n浏览修改后的所有职工信息:\n");
    printf("\n");
    baocun(m);
    scan();
    printf("\n继续修改请按1,不再修改请按0\n");
    scanf("%d",&t);
    switch(t)
    {
    case 1:change();break;
    case 0:break;
    default :break;
    }system("cls");
}
/*************************************************************************************/
void order()/*排序函数*/
{
    int k,f;
    do
    {
        printf("\n按姓名排序请按1 ; 按基本工资排序请按2 ; 返回主页按3\n");
        scanf("%d",&k);
        if(k>=1&&k<=3)
        {
            f=1;
            break;
        }
        else
        {
            f=0;
            printf("您输入有误,请重新选择!");
        }
    }while(f==0);system("cls");
    
    while(f==1)
    {
        switch(k)
        { 
        case 1:printf("\n按姓名排序为(字母由小到大排列):\n");order_name();break;
        case 2:printf("\n按基本工资排序为(由高到低排列):\n");order_wages();break;
        case 3:system("cls");main();break;
        default:break;
        }
        system("cls");    
    }
}
/*************************************************************************************/
void order_name()/*按姓名排序函数*/
{
    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职工号\t姓名\t职称\t基本工资\t奖金\t实际工资\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("返回排序函数请按1,返回主页请按2\n");
            scanf("%d",&k);
            switch(k)
            { 
            case 1:order();return;
            case 2:system("cls");return;
            default:break;
   }system("cls");
}
/************************************************************************************/
void order_wages()/*按基本工资排序函数*/
{
    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职工号\t姓名\t职称\t基本工资\t奖金\t实际工资\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("返回排序函数请按1,返回主页请按2\n");
            scanf("%d",&k);
            switch(k)
            { 
            case 1:order();return;
            case 2:system("cls"); return;
            default:break;
            }
            system("cls");
}
/***********************************************************************************/
void add()   /*添加函数*/
{
    int n=load();
    int i,m;
    printf("请输入需要添加信息的职工人数\n");
    scanf("%d",&m);
    for (i=n;i<m+n;i++)
    {
        printf("请输入职工号: ");
        scanf("%d",&work[i].num);  
        printf("\n");
        printf("请输入姓名:  ");
        scanf("%s",work[i].name);
        printf("请输入职称:  ");
        scanf("%s",&work[i].zhicheng);
        printf("请输入基本工资:  ");
        scanf("%d",&work[i].wages);
        printf("请输入奖金:  ");
        scanf("%d",&work[i].reward);
        printf("请输入生日(格式如19900101):  ");
        scanf("%d",&work[i].birth);
        getchar();system("cls");
        printf("\n一个职工的信息档案添加完毕!请输入下一个职工的信息\n");     
        work[i].salary=work[i].wages + work[i].reward;
        printf("\n");
    }
    baocun(m+n);system("cls");
    printf("添加职工档案完成。\n这时库存信息为:\n");
    scan();
}

下面是调试结果:

按序号顺序要试一下各个功能:

最后的退出是直接退了出去就没有放图,基本各个功能都没什么问题。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • C++实现评教管理系统

    本文实例为大家分享了C++实现评教管理系统的具体代码,供大家参考,具体内容如下 #include<iostream> #include<fstream> #include<cstring> #include <stdlib.h> #include <conio.h> #include<vector> using namespace std; int n;   class Student {public:     char sname[

  • C++实现高校教室管理系统

    本文实例为大家分享了C++实现高校教室管理系统的具体代码,供大家参考,具体内容如下 设计目的在于,利用学习的数据结构和c语言知识,研究大学空闲教室管理系统的开发途径和应用方法.与其他学习阶段相比,大学课程相对较少,合理利用空闲教室显得尤为重要.为了让广大在校师生,在空闲时间有个教室去自习,去做自己想做的事情,因此开发一套空闲教室管理系统是势在必行的.通过高校教室管理系统,广大师生可以随时随地查看空闲教室,作为老师可以添加后台数据即默认空教室.同时,高校空闲教室管理系统设计是具有具体化,合理化性,

  • C++实现教师管理系统

    本文实例为大家分享了C++实现教师管理系统的具体代码,供大家参考,具体内容如下 链表模板定义:就是用这种数据类型来进行存储 #include<iostream> #ifndef NODELIST_S #define NODELIST_S template<typename T> class Node { public:     T s_Data;     Node<T>* s_Next;     Node(const T&data) :s_Data(data),

  • C++实现教职工管理系统课程设计

    本文实例为大家分享了C++实现教职工管理系统的具体代码,供大家参考,具体内容如下 要求:设计一个程序来管理职工较全面数据信息,具备数据的输入.查找.删除等功能.具体功能细节可以根据自己理解情况进行增加. 以下是我的设计: #include <stdio.h> #include <windows.h> #include <string.h>     struct worker { int num; char name[20]; char zhicheng[10];   i

  • C语言学生成绩管理系统课程设计

    学生成绩管理系统是比较适合初学者的.它涵盖了c语言几乎知识.对于学了c语言的人,把这个课程设计搞好(当然自己能设计出来是要有很好的基础).不管自己能不能够完成,最重要的是能弄懂.参考其他资料,试着自己编写是不错的选择.这个课程设计也是我参照资料,自己编写的.自己适当地增加了一些功能.不过,编的不够那么专业吧. #include<stdio.h> #include<string.h> #include<stdlib.h> #define size 100 char* cl

  • C语言通讯录管理系统课程设计

    本文实例为大家分享了C语言通讯录管理系统课程设计,供大家参考,具体内容如下 #include <stdio.h> #include <stdlib.h> #include <windows.h> struct Sign{ char name[8]; char sex[4]; char birthday[12]; char phone[11]; char postcode[7]; char addr[30]; struct Sign *next; }pe; char Ph

  • C++实现图书管理系统课程设计(面向对象)

    本文实例为大家分享了C++实现图书管理系统课程设计,供大家参考,具体内容如下 1.题目: [1]:工作人员登录后,可以进行的操作 添加学生的信息(学号,姓名,院系,最大借阅的图书数量等):修改学生的信息(学号,姓名,院系,最大借阅的图书数量等):删除学生的信息(学号,姓名,院系,最大借阅的图书数量等):如果某个学生退学,就要清除他的信息:查看学生的信息:添加图书的信息(图书号,书名,作者,出版社,数量等):修改图书的信息(图书号,书名,作者,出版社,数量等):删除图书的信息(图书号,书名,作者,

  • C语言图书管理系统课程设计

    这是本人大一第二学期初C语言课程设计的作品,嘿嘿,本来以为已经找不到原稿了,今天无意中竟然在QQ网络硬盘中找到了当初的teta版,发布于此,以作纪念. C 源代码如下: #include<stdio.h> #include<stdlib.h> #include<string.h> struct book{ char book_name[30]; int bianhao; double price; char author[20]; char state[20]; cha

  • C语言实现班档案管理系统课程设计

    本文实例为大家分享了C语言班档案管理系统的具体代码,供大家参考,具体内容如下 做的挺长时间的课程设计,当作参考吧 #include<stdio.h> #include<stdlib.h> #include<string.h> #define N 20 struct student { long num; char name[20]; char sex[10]; int age; char bz[40]; struct student *next; }; int i,j,

  • C语言学生成绩管理系统课程设计word版

    一份C语言学生成绩管理系统设计报告,分享给大家 一.课程设计题目 <学生成绩管理系统设计> 二.实训目的 (1)掌握结构化程序设计的基本方法,基本掌握面向对象程序设计的基本思路和方法. (2)掌握C++的基本概念和基础知识. (3)通过训练能够读懂较为复杂的C++语言源程序并具备基本C++语言程序设计的能力. (4)通过实训,培养自己编写.调试.分析程序的能力. (5)培养自己独立解决问题,查找资料的能力.同学之间相互帮助,相互交流,相互合作的团队精神. (6) 培养自己良好的学习兴趣,独立的

  • C语言实现电话簿管理系统课程设计

    本文实例为大家分享了C语言课程设计:电话簿管理系统,供大家参考,具体内容如下 文件目录: 初始界面 现在显示一部分代码: //添加联系人 void add() { int i; FILE *fp1;//定义文件指针fp1,使其指向电话簿文本文件 fp1=fopen("电话簿.txt","a+"); printf("请输入要增加的联系人的个数:"); scanf("%d",&n); for(i=num;i<num+

  • Java图书管理系统课程设计

    本文实例为大家分享了Java图书管理系统的具体代码,供大家参考,具体内容如下 大二上学期做的一个Java课程设计,总分为四个Java文件,AllBook,AllBorrow,AllStudent,Tushu. 本系统是一个面向图书馆的管理系统,具有一定的实用性.它主要完成了图书的基本操作功能,全校学生信息的相关基本操作,以及对图书的借阅归还管理.本系统采用当前流行的面向对象的JAVA语言开发工具eclipse来完成整个系统的设计.系统在设计过程中不可避免地遇到了各种各样的问题,由于整个系统完全都

  • C++实现职工工资管理系统课程设计

    本文实例为大家分享了C++实现职工工资管理系统的具体代码,供大家参考,具体内容如下 现在的大学里经常有一些课程设计 ,这不,我就遇到了 . 我们的c++老师 ,给了我们许 多的题目要我们来选择 ,我就选择了这个 ,说难又不难 ,说简单,又不简单的. 题目 ——职工工资管理系统 我们老师给的题目是这样的!! 职工工资管理设计与实现 功能设计要求 1. 输入记录:将每一个职工的姓名.ID号以及基本工资.职务工资.岗位津贴.医疗保险.公积金的数据作为一个记录.该软件能建立一个新的数据文件或给已建立好

随机推荐