教務處管理系統(數據結構的簡單應用)


簡單的數據結構應用,不多說,看程序!!!哈!!!

希望對你能有幫助!!!

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

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM