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

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

希望对你能有帮助!!!

#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);
}

 

 

posted on 2013-01-25 21:06  @ 小浩  阅读(1754)  评论(6编辑  收藏  举报