• 教务处管理系统(数据结构的简单应用)


    简单的数据结构应用,不多说,看程序!!!哈!!!

    希望对你能有帮助!!!

    #include<stdio.h>
    #include<iostream>
    #include<stdlib.h>
    #include<malloc.h>
    #include<algorithm>
    using namespace std;


    #define LEN sizeof(struct Worker)
    struct Worker{
     char name[20];//姓名!
     char department[20];//单位
     char sex;//性别!
     int age;//年龄!
     long telephone;//电话!
     double wage;//工资!
     long num;//职工号!
     struct Worker *next;
    };


    struct Worker *CreatInformation()
    {
     struct Worker *head,*p1;
        int n,i;
      
     head=p1=(struct Worker*)malloc(LEN);
       
     printf("请输入你要存储员工的个数:\n");
     cin>>n;
     i=n;
     while(n--)
     {
        printf("姓名  单位  性别  年龄  电话  工资  职工号\n");
        scanf("%s %s %c %d %ld %lf %ld",&p1->name,&p1->department,&p1->sex,&p1->age,&p1->telephone,&p1->wage,&p1->num);
        p1->next=(struct Worker*)malloc(LEN);
     if(n>=0)
     p1=p1->next;
     }
     p1->next=NULL;
     return head;
    }


    int main()
    {
      
       void  InsertData(struct Worker *A);
       void  DeleteData(struct Worker *B);
       void  CorrectData(struct Worker *C);
       void  SortData(struct Worker *D);
       void  PrintData(struct Worker *E);
       void  AverWage(struct Worker *F);
       struct Worker *pt;
    printf("欢迎使用本员工管理系统,请输入数据:\n");
    printf("----------------------------------------------------------------\n");
    pt=CreatInformation();
    if(pt)
    printf("                  员工信息已经存储成功,请选择你要进行的操作:\n");
    else
    printf("                  员工信息已经存储失败!请重新存储\n");
    printf("----------------------------------------------------------------\n");
    printf("                  其中插入数据请按“0”:\n");
    printf("                  其中删除数据请按“1”:\n");
    printf("                  其中修改数据请按“2”:\n");
    printf("                  其中数据排序请按“3”:\n");
    printf("                  其中打印数据请按“4”:\n");
    printf("                  其中数据平均请按“5”:\n");
    printf("----------------------------------------------------------------\n");
    int ch=0,mark=1;
    while(mark!=0)
    {
       cin>>ch;
      switch(ch)
      {case 0:InsertData(pt);break;
       case 1:DeleteData(pt);break;
       case 2:CorrectData(pt);break;
       case 3:SortData(pt);break;
       case 4:PrintData(pt);break;
       case 5:AverWage(pt);break;
       default: printf("error\n请重新选择\n");
      }
    printf("请选择您是否要继续进行操作,如果要继续进行操作,请输入任一非零数,如果要结束请按“0”\n");
    cin>>mark;
    printf("----------------------------------------------------------------\n");
    printf("                  其中插入数据请按“0”:\n");
    printf("                  其中删除数据请按“1”:\n");
    printf("                  其中修改数据请按“2”:\n");
    printf("                  其中数据排序请按“3”:\n");
    printf("                  其中打印数据请按“4”:\n");
    printf("                  其中数据平均请按“5”:\n");
    printf("----------------------------------------------------------------\n");

      }
    return 0;
    }

    void  DeleteData(struct Worker *B)//删除数据
    {  int n1,n2=1;            
    struct Worker *q1,*q2;
    q1=B;
    printf("请输入要删除的员工职工号:\n");
    cin>>n1;
    if(B->num==n1)

      B=B->next;
      n2=0;
    }
    while(q1->num!=n1&&n2!=0)
    {q2=q1;
     q1=q1->next;
    }
    if(n2)
    q2->next=q1->next;
    printf("元素删除成功\n");
    }


    void InsertData(struct Worker *A)//插入数据
     {              
    struct Worker *q1,*q2;
    q1=A;
    while(q1!=NULL)
    {q2=q1;
    q1=q1->next;
    }  
    q2->next=(struct Worker*)malloc(LEN);
        q1=q2->next;
     q1->next=NULL;
        printf("           请输入你要插入的数据的相关信息\n");
        printf("姓名  单位  性别  年龄  电话  工资  职工号\n");
        scanf("%s %s %c %d %ld %lf %ld",&q2->name,&q2->department,&q2->sex,&q2->age,&q2->telephone,&q2->wage,&q2->num);
     printf("数据插入成功\n");
    }

    void  CorrectData(struct Worker *C)//修改数据
    { int n;              
    struct Worker *q;
    q=C;
    printf("请输入要修改的员工的职工号:");
     cin>>n;
     while(q->num!=n)
      q=q->next;
        printf("              请输入你要修改的员工的相关信息\n");
        printf("姓名  单位  性别  年龄  电话  工资  职工号\n");
        scanf("%s %s %c %d %ld %lf %ld",&q->name,&q->department,&q->sex,&q->age,&q->telephone,&q->wage,&q->num);
    }


    void SortData(struct Worker *D)//数据排序!
    {
     struct Worker *q;
     q=D;
     int data[100],j=1,m=0;
     memset(data,0,sizeof(data));
     while(q)
     {
          data[j]=q->wage;
       q=q->next;
       j++;
     }
     m=j;
     printf("员工工资排序为:\n");
     sort(data,data+j);
     for(j=2;j<m;j++)
      cout<<data[j]<<" ";
         cout<<endl;
    }

      
    void  PrintData(struct Worker *E)//输出员工信息
    {
    struct Worker *q;
    q=E;
    while(q->next!=NULL)

    printf("姓名:%s\n单位:%s\n性别:%c\n年龄:%d\n电话:%ld\n工资:%lf\n职工号:%ld\n",q->name,q->department,q->sex,q->age,q->telephone,q->wage,q->num);
     q=q->next;
    cout<<endl;
    }

    }


    void AverWage(struct Worker *F)//输出员工的平均工资!
    {   double aver,sum=0;int m=0;
        struct Worker *q;
     q=F;
     while(q->next)
     {
       sum+=q->wage;
       q=q->next;
       m++;
     }
     printf("员工的平均工资为:\n");
     aver=sum/m;
     printf("%lf\n",aver);
    }

  • 相关阅读:
    continue语句及小案例
    break语句和break版猜数字游戏
    python 用while语句打印99乘法表
    python2中引入python3中print函数的语法的语句
    【猜数字 小游戏】
    【while循环】
    代码块和缩进
    使用vs2015编写c语言的方法
    This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details
    矩阵相乘法则和技巧
  • 原文地址:https://www.cnblogs.com/xiohao/p/2877275.html
Copyright © 2020-2023  润新知