学生社团管理系统 任务:通过此系统可以实现如下功能(包含但不限于以下功能,可自行设计): 1、社团信息包括:社团编号、社团名称、成立时间…… 2、学生信息包括:学号、姓名、性别、年级、专业…… 3


#define flag 0
FILE *fp;//文件指针
typedef struct Student
{//学生结点定义
    int sno;//学号
  char sname[20];//姓名
    char sex[4];//性别
    int sage;//年龄
    int stel;//电话
    char szy[20];//专业
    struct Student *next;
}Student,*StuList;
typedef struct shetuan
{
    int shetuannumber;   //社团编号
    char shetuan[20];    //社团名称
    char begintime[20];   //成立时间
    struct shetuan *next;
}shetuan,*shetuanList;
typedef struct zhongjian  //中间节点建立
{
    int sno;  //学生学号
    int shetuannumber; //社团编号
    char role[10]; //社团角色
    struct zhongjian *next;
}zhongjian,*zhongjianList;




void Save(StuList head) {       /*保存数据到文件*/
    FILE *fp;
 StuList p;
   p=head->next;
    if((fp=fopen(DAT_FILENAME,"w+"))!=NULL)          /*以W+的方式打开文件*/
        {   while(p!=NULL)
          {     fprintf(fp,"%d\t",p->sno);
                fprintf(fp,"%s\t",p->sname);
                fprintf(fp,"%s\t",p->sex);
                fprintf(fp,"%d\t",p->sage);
                fprintf(fp,"%d\t",p->stel);


                fprintf(fp,"%s\n",p->szy);
               p=p->next;
                 }               /*将链表的内容写入文件*/
            fclose(fp);
                                          }
            else   printf("cannot open file\n"); }


void Save2(shetuanList head) {       /*保存数据到文件*/
    FILE *fp;
 shetuanList p;
    p=head->next;
    if((fp=fopen(FILENAME,"w+"))!=NULL)          /*以W+的方式打开文件*/
        {   while(p!=NULL)
          {     fprintf(fp,"%d\t",p->shetuannumber);
                fprintf(fp,"%s\t",p->shetuan);
                fprintf(fp,"%s\n",p->begintime);


               p=p->next;   }               /*将链表的内容写入文件*/
            fclose(fp);
                                          }
            else   printf("cannot open file\n"); }


void Save3(zhongjianList head) {       /*保存数据到文件*/
    FILE *fp;
 zhongjianList p;
   p=head->next;
    if((fp=fopen(DATA_FILENAME,"w+"))!=NULL)          /*以W+的方式打开文件*/
        {   while(p!=NULL)
          {     fprintf(fp,"%d\t",p->sno);
                fprintf(fp,"%d\t",p->shetuannumber);
                fprintf(fp,"%s\n",p->role);


               p=p->next;   }               /*将链表的内容写入文件*/
            fclose(fp);
                                          }
            else   printf("cannot open file\n"); }














StuList Read(StuList head) {  /*读取文件中的内容到链表中*/
     StuList p;
        p=(StuList)malloc(sizeof(Student));
         FILE *fp;
        // p=head->next;
          if((fp=fopen(DAT_FILENAME,"r"))!=NULL)  {
                /*读取文件中的内容到链表中*/
                while(fscanf(fp,"%d\t",&p->sno)!=EOF)
                 {     fscanf(fp,"%s\t",p->sname);
                       fscanf(fp,"%s\t",p->sex);
                       fscanf(fp,"%d\t",&p->sage);
                       fscanf(fp,"%d\t",&p->stel);
                       fscanf(fp,"%s\t",p->szy);
                                           //head=Insert(head,p);
                                           p->next=head->next;
                                           head->next=p;
                                               p=(StuList)malloc(sizeof(Student));
                                                 }
                                                fclose(fp);  }
                                                else   printf("cannot open file\n");
                                                return head; }


shetuanList Read2(shetuanList head) {  /*读取文件中的内容到链表中*/    //社团
     shetuanList p;
        p=(shetuanList)malloc(sizeof(shetuan));
         FILE *fp;
          if((fp=fopen(FILENAME,"r"))!=NULL)  {
                /*读取文件中的内容到链表中*/
                 while(fscanf(fp,"%d\t",&p->shetuannumber)!=EOF)
                 {     fscanf(fp,"%s\t",p->shetuan);
                      // fscanf(fp,"%s\t",p->sex);
                       fscanf(fp,"%s\t",p->begintime);
                      // fscanf(fp,"%d\t",&p->stel);
                     //  fscanf(fp,"%s\t",p->szy);
                                           //head=Insert(head,p);
                                           p->next=head->next;
                                           head->next=p;
                                               p=(shetuanList)malloc(sizeof(shetuan));
                                                 }
                                                fclose(fp);  }
                                                else   printf("cannot open file\n");
                                                return head; }


zhongjianList Read3(zhongjianList head) {  /*读取文件中的内容到链表中*/    //中间
     zhongjianList p;
        p=(zhongjianList)malloc(sizeof(zhongjian));
         FILE *fp;
          if((fp=fopen(DATA_FILENAME,"r"))!=NULL)  {
                /*读取文件中的内容到链表中*/
                 while(fscanf(fp,"%d\t",&p->sno)!=EOF)
                 {     fscanf(fp,"%d\t",&p->shetuannumber);
                       fscanf(fp,"%s\t",p->role);
                       p->next=head->next;
                       head->next=p;
                       p=(zhongjianList)malloc(sizeof(zhongjian));
                 }
                                    fclose(fp);  }
                            else   printf("cannot open file\n");
                                                return head; }




void Re_Creat_StuList(StuList &L,int n)
{//重复添加学生信息(前插法)
    int i;
    StuList p,M;
    int a=1;
    M=L->next;
    for(i=n;i>0;--i)
    {
        p=(Student *)malloc(sizeof(Student));
        printf("请依次输入学生的学号、姓名、性别、年龄、电话、专业:\n");
        printf("学号:");
        scanf("%d",&p->sno);
         while(M)
        {
         if(M->sno==p->sno)
         {
             a=0;
             break;
         }


          M=M->next;
        }
        if(a==1)
        {
            printf("姓名:");
            scanf("%s",p->sname);
            printf("性别:");
           scanf("%s",p->sex);
           printf("年龄:");
           scanf("%d",&p->sage);
           printf("电话:");
          scanf("%d",&p->stel);
          printf("专业:");
          scanf("%s",p->szy);
        p->next = L->next;
        L->next = p;
        }
        else{
             printf("该学号已经存在,此信息添加失败!\n");
            }
    }


}
void Re_Creat_shetuanList(shetuanList &A,int n)
{//重复添加学生信息(前插法)
    int i;
    shetuanList p,M;
    int a=1;
    M=A->next;
    for(i=n;i>0;--i)
    {
        p=(shetuan *)malloc(sizeof(shetuan));
        printf("请依次输入社团的社团编号,社团名称,成立时间:\n");
        printf("社团编号:");
        scanf("%d",&p->shetuannumber);
        while(M)
        {
            if(M->shetuannumber==p->shetuannumber)
            {
                a=0;
                break;
            }
            M=M->next;
        }
        if(a==1)
        {
        printf("社团名称:");
        scanf("%s",p->shetuan);
        printf("成立时间:");
        scanf("%s",p->begintime);
        p->next = A->next;
        A->next = p;
        }
       else printf("该社团编号已存在,此信息添加失败!\n");
    }


}
void Re_Creat_zhongjianList(StuList &L,shetuanList &A,zhongjianList &O,int n)
{
    int i;
    zhongjianList p,Q;
    Q=O->next;
    int a=1;
    int b=1;
    StuList M;
    M=L->next;
    shetuanList N;
    N=A->next;
    for(i=n;i>0;--i)
    {
        p=(zhongjian *)malloc(sizeof(zhongjian));
         printf("请依次输入学生学号,社团编号,社团角色:\n");
         printf("学生学号:");
        scanf("%d",&p->sno);
       while(M)
       {
          // printf("23333333333333333333\n");
           if(M->sno==p->sno)
           {
               a=0;
               break;
           }
           M=M->next;
       }
       if(a==0)
       {
             printf("社团编号:");
        scanf("%d",&p->shetuannumber);
        while(N)
        {
            if(N->shetuannumber==p->shetuannumber)
            {
                b=0;
                break;
            }
            N=N->next;
        }
        if(b==0)
        {
            printf("社团角色:");
        scanf("%s",p->role);
        p->next = O->next;
        O->next = p;
        }
        else printf("添加失败,该社团信息不存在!\n");


       }
       else printf("添加失败,该学号学生信息不存在!\n");


    }


}
void Display_zhongjianList(zhongjianList O)
{
    zhongjianList p;
    p=O;
    if(p->next)
    {
         while(p->next)
    {
        printf("学生学号:%d\n",p->next->sno);
        printf("社团编号:%d\n",p->next->shetuannumber);


        printf("社团角色:%s\n",p->next->role);




        p=p->next;
        printf("*******************\n");
    }
    }
   else printf("空!\n");
}
void Display_shetuanList(shetuanList A)
{
    shetuanList p;
    p=A;
    if(p->next)
    {
         while(p->next)
    {
        printf("社团编号:%d\n",p->next->shetuannumber);
        printf("社团名称:%s\n",p->next->shetuan);


        printf("成立时间:%s\n",p->next->begintime);




        p=p->next;
        printf("*******************\n");
    }
    }
   else printf("空!\n");
}
void Display_StuList(StuList M)
{
    StuList p;
    p=M;
    if(p->next)
    {
         while(p->next)
    {
        printf("学号:%d\n",p->next->sno);
        printf("姓名:%s\n",p->next->sname);
        printf("性别:%s\n",p->next->sex);
        printf("年龄:%d\n",p->next->sage);
        printf("电话:%d\n",p->next->stel);
        printf("专业:%s\n",p->next->szy);


        p=p->next;
        printf("*******************\n");
    }
    }
   else printf("空!\n");
}


StuList Locate_StuList(StuList L,int x) //选择不同的插入方法 查找也会有细微的区别
{//在带头结点单链表中查找等于给定值的结点
    StuList p;
    int a=x; //q用于保存所查元素上一结点的指针
    int j = 1;
    p = L;
   // q = p;


    while(p->next!=NULL&&p->next->sno!=a)  //第一个结点不是查找点且不是空链表继续查找 注意第一个结点非头结点
    {
       // q = p;
        p = p->next;
        j++;
    }
        if(p->next)
        {
            //printf("该学生信息基本信息:\n");
            printf("学号为:%d的学生在文件中,是第%d位学生\n",p->next->sno,j)    ;
            printf("该学生详细信息:\n");
            printf("学号:%d\n",p->next->sno);//打印出被查找学生的全部信息
            printf("姓名:%s\n",p->next->sname);
            printf("性别:%s\n",p->next->sex);
          printf("年龄:%d\n",p->next->sage);
           printf("电话:%d\n",p->next->stel);
           printf("专业:%s\n",p->next->szy);
            return p;
        }
        else
        {
            printf("学号为:%d的学生不在文件中!\n",a);
            return NULL;
        }


}
shetuanList Locate_shetuanList(shetuanList A,int x)   //查询社团
{//在带头结点单链表中查找等于给定值的结点
    shetuanList p;
    int a=x; //q用于保存所查元素上一结点的指针
    int j = 1;
    p = A;
   // q = p;


    while(p->next!=NULL&&p->next->shetuannumber!=a)  //第一个结点不是查找点且不是空链表继续查找 注意第一个结点非头结点
    {
       // q = p;
        p = p->next;
        j++;
    }
        if(p->next)
        {
            //printf("该学生信息基本信息:\n");
            printf("编号为:%d的社团在文件中,是第%d个社团\n",p->next->shetuannumber,j)    ;
            printf("该社团详细信息:\n");
           printf("社团编号:%d\n",p->next->shetuannumber);
           printf("社团名称:%s\n",p->next->shetuan);


           printf("成立时间:%s\n",p->next->begintime);
            return p;
        }
        else
        {
            printf("编号为:%d的社团不在文件中!\n",a);
            return NULL;
        }


}
zhongjianList Locate_zhongjianList(zhongjianList O,int x) //根据学号查询学生在社团信息
{//在带头结点单链表中查找等于给定值的结点
    zhongjianList p;
    int a=x;
    int j = 1;
    p = O;
    //q = p;


    while(p->next!=NULL&&p->next->sno!=a)  //第一个结点不是查找点且不是空链表继续查找 注意第一个结点非头结点
    {
      //  q = p;
        p = p->next;
        j++;
    }
        if(p->next)
        {
          //  printf("该学生在社团的基本信息:\n");
         //   printf("学号为:%d的学生在社团中,是第%d个学生\n",p->next->sno,j)    ;
            printf("该学生在社团的详细信息为:\n");
           printf("学生学号:%d\n",p->next->sno);
           printf("社团编号:%d\n",p->next->shetuannumber);


           printf("社团角色:%s\n",p->next->role);
            return p;
        }
        else
        {
           // printf("学号为:%d的学生不在社团中!\n",a);
            return NULL;
        }


}
zhongjianList Locate_zhongjianList2(zhongjianList O,int x)  //根据社团编号查询学生在社团信息
{//在带头结点单链表中查找等于给定值的结点
    zhongjianList p;
    int a=x; //q用于保存所查元素上一结点的指针
    int j = 1;
    p = O;
   // q = p;


    while(p->next!=NULL&&p->next->shetuannumber!=a)  //第一个结点不是查找点且不是空链表继续查找 注意第一个结点非头结点
    {
        //q = p;
        p = p->next;
        j++;
    }
        if(p->next)
        {
          //  printf("该学生在社团的基本信息:\n");
         //   printf("学号为:%d的学生在社团中,是第%d个学生\n",p->next->sno,j)    ;
            printf("该社团学生的详细信息为:\n");
           printf("学生学号:%d\n",p->next->sno);
           printf("社团编号:%d\n",p->next->shetuannumber);


           printf("社团角色:%s\n",p->next->role);
            return p;
        }
        else
        {
            //printf("社团编号为:%d的社团不存在!\n",a);
            return NULL;
        }


}


int xiugai_StuList(StuList L,int x)
{
    StuList p,q;
    int a=x;
    p=L;
    q=(StuList)malloc(sizeof(Student));
    q= Locate_StuList(L,x);
    if(q)
    {
        if(q->next->sno==a)
    {
        printf("请输入修改后的学号:");
        scanf("%d",&q->next->sno);
        printf("请输入修改后的姓名:");
        scanf("%s",q->next->sname);
         printf("请输入修改后的性别:");
         scanf("%s",q->next->sex);
         printf("请输入修改后的年龄:");
         scanf("%d",&q->next->sage);
         printf("请输入修改后的电话:");
         scanf("%d",&q->next->stel);
         printf("请输入修改后的专业:");
         scanf("%s",q->next->szy);
         printf("*******************\n");
         return 1;


    }
    }


    else {printf("该学号不存在!\n");
         return -1 ;  }








}
int xiugai_shetuanList(shetuanList A,int x)
{
    shetuanList p,q;
    int a=x;
    p=A;
    q=(shetuanList)malloc(sizeof(shetuan));
    q= Locate_shetuanList(A,x);
    if(q)
    {
         if(q->next->shetuannumber==a)
    {
        printf("请输入修改后的社团编号:");
        scanf("%d",&q->next->shetuannumber);
        printf("请输入修改后的社团名称:");
        scanf("%s",q->next->shetuan);
         printf("请输入修改后的社团成立时间:");
         scanf("%s",q->next->begintime);
        /* printf("请输入修改后的年龄:");
         scanf("%d",&p->next->sage);
         printf("请输入修改后的电话:");
         scanf("%d",&p->next->stel);
         printf("请输入修改后的专业:");
         scanf("%s",p->next->szy);*/
        return 1;
    }


    }
        else
        {
            printf("该社团不存在!\n");
            return -1;
        }
    }






int xiugai_zhongjianList(zhongjianList O,int x)
{
    zhongjianList p,q;
    int a=x;
    p=O;
     q=(zhongjianList)malloc(sizeof(zhongjian));
    q= Locate_zhongjianList(O,x);
    if(q)
    {
         if(q->next->sno==a)
    {
        printf("请输入修改后的学生学号:");
        scanf("%d",&q->next->sno);
        printf("请输入修改后的社团编号:");
        scanf("%d",&q->next->shetuannumber);
         printf("请输入修改后的社团角色:");
         scanf("%s",q->next->role);
      printf("信息修改成功!\n");
         return 1;


    }
    }


    else
    {printf("该信息不存在!\n");
    return -1;}








}
int xiugai_zhongjianList2(zhongjianList O,int x) //根据学号修改学生在社团信息
{
    zhongjianList p,q;
    int a=x;
    int b=0;
    q=O;
    // p=(zhongjianList)malloc(sizeof(zhongjian));
   // p= Locate_zhongjianList(O,x);
    while(q->next)
    {
         if(q->next->sno==a)
    {
        b=1;
        // p= Locate_zhongjianList(O,q->next->sno);
             printf("学生学号:%d\n",q->next->sno);
             printf("社团编号:%d\n",q->next->shetuannumber);
             printf("社团角色:%s\n",q->next->role);
             printf("*********************************\n");
        printf("请输入修改后的学生学号:");
        scanf("%d",&q->next->sno);
        printf("请输入修改后的社团编号:");
        scanf("%d",&q->next->shetuannumber);
         printf("请输入修改后的社团角色:");
         scanf("%s",q->next->role);
      printf("信息修改成功!\n");
        // return 1;


    }
    q=q->next;
    }


    if(b==0)
    {//printf("该信息不存在!\n");
    return -1;}
    else return 1;








}
int xiugai_zhongjianList3(zhongjianList O,int x) //根据社团编号修改学生在社团信息
{
    zhongjianList p,q;
    int a=x;
    int b=0;
    q=O;
    // p=(zhongjianList)malloc(sizeof(zhongjian));
   // p= Locate_zhongjianList(O,x);
    while(q->next)
    {
         if(q->next->shetuannumber==a)
    {
        b=1;
        // p= Locate_zhongjianList(O,q->next->sno);
             printf("学生学号:%d\n",q->next->sno);
             printf("社团编号:%d\n",q->next->shetuannumber);
             printf("社团角色:%s\n",q->next->role);
             printf("*********************************\n");
        printf("请输入修改后的学生学号:");
        scanf("%d",&q->next->sno);
        printf("请输入修改后的社团编号:");
        scanf("%d",&q->next->shetuannumber);
         printf("请输入修改后的社团角色:");
         scanf("%s",q->next->role);
      printf("信息修改成功!\n");
        // return 1;


    }
    q=q->next;
    }


    if(b==0)
    {//printf("该信息不存在!\n");
    return -1;}
    else return 1;








}


int Delete_shetuanList(shetuanList A,int n)
{
    shetuanList p,s; //p要删结点的上一结点 s为删除结点
    p = Locate_shetuanList(A,n);
    if(p==NULL)
    {
       // printf("要删除的前一结点不存在\n");


        return -1;
    }
    else if(p!=NULL) //此处不能p-》next 当只有一个结点时 p-》next 就是NULL
        {
            if(p->next==NULL)
            {    s=p;
                free(s);
                return -1;
            }
            s = p->next; //s为要删除的结点 p为前一结点
            p->next = s->next;// 绕过s结点
            free(s);
            return 1;
        }
        else
        {
            printf("该结点不存在!\n");
            return 0;
        }
}
int Delete_zhongjianList(zhongjianList O,int n)
{
    zhongjianList p,s; //p要删结点的上一结点 s为删除结点
    p = Locate_zhongjianList(O,n);
    if(p==NULL)
    {
       // printf("要删除的前一结点不存在\n");


        return -1;
    }
    else if(p!=NULL) //此处不能p-》next 当只有一个结点时 p-》next 就是NULL
        {
            if(p->next==NULL)
            {    s=p;
                free(s);
                return -1;
            }
            s = p->next; //s为要删除的结点 p为前一结点
            p->next = s->next;// 绕过s结点
            free(s);
            return 1;
        }
        else
        {
            printf("该结点不存在!\n");
            return 0;
        }
}
int Delete_zhongjianList2(zhongjianList O,int n)//根据社团编号删除中间表学生在社团信息
{
    zhongjianList p,s; //p要删结点的上一结点 s为删除结点
    p = Locate_zhongjianList2(O,n);
    if(p==NULL)
    {
       // printf("要删除的前一结点不存在\n");


        return -1;
    }
    else if(p!=NULL) //此处不能p-》next 当只有一个结点时 p-》next 就是NULL
        {
            if(p->next==NULL)
            {    s=p;
                free(s);
                return -1;
            }
            s = p->next; //s为要删除的结点 p为前一结点
            p->next = s->next;// 绕过s结点
            free(s);
            return 1;
        }
        else
        {
            printf("该结点不存在!\n");
            return 0;
        }
}
int Delete_StuList(StuList L,int n)
{                                           //删除学号为n的学生的所有信息
    StuList p,s; //p要删结点的上一结点 s为删除结点
    p = Locate_StuList(L,n);
    if(p==NULL)
    {
      //  printf("要删除的前一结点不存在\n");


        return -1;
    }
    else if(p!=NULL) //此处不能p-》next 当只有一个结点时 p-》next 就是NULL
        {
            if(p->next==NULL)
            {    s=p;
                free(s);
                return -1;
            }
            s = p->next; //s为要删除的结点 p为前一结点
            p->next = s->next;// 绕过s结点
            free(s);
            return 1;
        }
        else
        {
            printf("该结点不存在!\n");
            return 0;
        }
}




/*void shurushetuan(shetuanList &L)   //输入社团属性
{
 //scanf("%s %d %d",L->shetuan,&L->len,&L->maxLen);
 printf("社团编号:");
 scanf("%d",&L->shetuannumber);


 printf("社团名称:");
 scanf("%s",L->shetuan);
 printf("成立时间:");
  scanf("%d",&L->begintime);
}*/
void chaxunsno(zhongjianList O,int x)
{
    zhongjianList p;
    int a=x;
    int b=0;
    p=O;
     //q=(zhongjianList)malloc(sizeof(zhongjian));
     while(p->next)
     {
         if(p->next->sno==a)
         {
             b=1;
             printf("学生学号:%d\n",p->next->sno);
             printf("社团编号:%d\n",p->next->shetuannumber);
             printf("社团角色:%s\n",p->next->role);
             printf("*********************************\n");


         }
         p=p->next;
     }
     if(b==0)
     {
         printf("该学生学号信息不存在!\n");
     }


}
void chaxunshetuannumber(zhongjianList O,int x)
{
    zhongjianList p;
    int a=x;
    p=O;
    int b=0;
     //q=(zhongjianList)malloc(sizeof(zhongjian));
     while(p->next)
     {
         if(p->next->shetuannumber==a)
         {
             b=1;
             printf("学生学号:%d\n",p->next->sno);
             printf("社团编号:%d\n",p->next->shetuannumber);
             printf("社团角色:%s\n",p->next->role);
             printf("*********************************\n");


         }
         p=p->next;
     }
     if (b==0)
     {
         printf("该社团编号不存在!\n");
     }


}


int main()


{
    int i; //i控制界面输出边框
    int y; //操作数n的实参
    char ans;//ans 用于询问是否要继续操作
    int Y; //查询学号寄存变量
    StuList L,L2=NULL,L3=NULL,L4=NULL;//结构体student类型指针 L2用于删除时确定删除前一结点
    L=(StuList)malloc(sizeof(Student));
    L->next=NULL;


    shetuanList A,B=NULL,C=NULL;
     A=(shetuanList)malloc(sizeof(shetuan));
     A->next=NULL;


    zhongjianList O,P=NULL;
    O=(zhongjianList)malloc(sizeof(zhongjian));
     O->next=NULL;


   // Read(L);






    int T; //用于检查是否为表为空
    do{
    printf("       \t"HEAD_1);
    printf("\t*\t\t\t学生社团管理系统\t\t\t*\n"); //要想对称显示可以通过前后符号要对称才可以!
    for(i=0;i<2;i++)
    {


        printf("       \t"BODY);


    }
    printf("                              1、学生综合信息查询浏览\n");
    printf("                              2、社团综合信息查询浏览\n");
    printf("                              3、学生在社团中的综合信息查询浏览\n");
    printf("                              0、退出管理程序\n");
    for(i=0;i<2;i++)
    {


        printf("       \t"BODY);


    }
    printf("       \t"FOOT_1);
    int j;//j菜单选择
    printf("请输入相应操作序号:\n");
    scanf("%d",&j);
    switch(j)
    {
        case 1:
               do{ printf("***********************************************************************\n");
                   printf("*                       1.打开学生数据文件                            *\n");
                   printf("*                       2.添加学生信息                                *\n");
                   printf("*                       3.删除学生信息                                *\n");
                   printf("*                       4.修改学生信息                                *\n");
                   printf("*                       5.查询学生信息                                *\n");
                   printf("*                       6.显示当前学生信息                            *\n");
                   printf("***********************************************************************\n");
                int k;
                printf("请输入相应操作序号:");
                scanf("%d",&k);
                switch(k)
                {
                    case 1: printf("当前文件信息为:\n");
                            if((L=Read(L))!=NULL)
                            {


                              Display_StuList(L);
                             }
                               printf("是否继续操作(Y/N)?\n");
                               scanf(" %c",&ans);
                                  break;
                    case 2:printf("请输入要添加学生个数:");
                                scanf("%d",&y);
                              Re_Creat_StuList(L,y);
                           //   printf("信息添加成功!\n");
                              printf("*******************\n");
                               printf("当前学生信息为:\n");
                                Display_StuList(L);
                                Save(L);
                                 printf("是否继续操作(Y/N)?\n");
                               scanf(" %c",&ans);
                                break;


                    case 3:printf("请输入要删除学生学号:");
                                 scanf("%d",&Y);


                               T = Delete_StuList(L,Y); //逆序
                               if(T == -1)
                              {
                              printf("当前信息为空!\n");
                              printf("是否继续操作(Y/N)?\n");
                               scanf(" %c",&ans);
                               break;
                               }
                               else if(T)
                               {
                                   Save(L);
                                   printf("正在为您查询并删除该学号在社团的相应信息.........\n");
                                   P=O;
                                 while(P)
                                 {
                                      T = Delete_zhongjianList(O,Y); //逆序
                                       if(T == -1)
                                   {
                                //  printf("当前学号在社团信息为空!\n");
                                  }
                                else if(T)
                                {
                                    Save3(O);
                                }
                                     P=P->next;
                                 }




                               }
                             printf("********************\n");
                             printf("删除后信息为:\n");
                               Display_StuList(L);
                            //  Save(L);
                               printf("是否继续操作(Y/N)?\n");
                                  scanf(" %c",&ans);
                              break;
                    case 4:printf("请输入要修改的学生学号:");
                            scanf("%d",&Y);
                                  T= xiugai_StuList(L,Y);
                                if(T == -1)
                               {
                                printf("当前信息为空!\n");
                                printf("是否继续操作(Y/N)?\n");
                                scanf(" %c",&ans);
                                   break;
                               }
                               else if(T)
                               {
                                   Save(L);
                                   printf("正在为您查找并修改该学号学生在社团信息.....\n");


                                       T = xiugai_zhongjianList2(O,Y); //逆序
                                       if(T == -1)
                                   {
                                      // P=P->next;
                                      //  printf("该编号社团信息为空!\n");
                                   }
                                   else if(T)
                                   {
                                      // P=P->next;
                                      Save3(O);
                                   }


                                   }
                           //  Display_StuList(L);
                            // Save(L);
                              printf("是否继续操作(Y/N)?\n");
                             scanf(" %c",&ans);
                             break;
                    case 5: printf("请输入要查询学生学号:");
                             scanf("%d",&Y);
                                Locate_StuList(L,Y);
                               printf("是否继续操作(Y/N)?\n");
                              scanf(" %c",&ans);
                              break;
                   case 6:   printf("当前学生信息为:\n");
                            Display_StuList(L);
                            printf("是否继续操作(Y/N)?\n");
                            scanf(" %c",&ans);
                            break;
                   default:printf("输入数据有误,请检查!\n");
                   }
               }while(ans=='Y'||ans=='y');
                        printf("是否返回主菜单操作(Y/N)?\n");
                      scanf(" %c",&ans);
                       break;


        case 2:do{ printf("***********************************************************************\n");
                   printf("*                       1.打开社团数据文件                            *\n");
                   printf("*                       2.添加社团信息                                *\n");
                   printf("*                       3.删除社团信息                                *\n");
                   printf("*                       4.修改社团信息                                *\n");
                   printf("*                       5.查询社团信息                                *\n");
                   printf("*                       6.显示当前社团信息                            *\n");
                   printf("***********************************************************************\n");
                int k;
                printf("请输入相应操作序号:");
                scanf("%d",&k);
                switch(k)
                {
                    case 1:printf("当前社团数据文件为:\n");
                           if((A=Read2(A))!=NULL)
                            Display_shetuanList(A);
                          printf("是否继续操作(Y/N)?\n");
                          scanf(" %c",&ans);
                                break;
                    case 2:printf("请输入要添加社团个数:");
                            scanf("%d",&y);
                                Re_Creat_shetuanList(A,y);
                                Save2(A);
                               //  printf("信息添加成功!\n");
                                printf("当前文件中社团信息为:\n");
                                printf("***************************\n");
                                Display_shetuanList(A);


                               // printf("信息添加成功!\n");
                                 printf("是否继续操作(Y/N)?\n");
                                scanf(" %c",&ans);
                                break;
                    case 3:printf("请输入要删除社团编号:");
                          scanf("%d",&Y);
                           // Locate_shetuanList(A,Y);
                          T = Delete_shetuanList(A,Y); //逆序
                             if(T == -1)
                             {
                              printf("当前信息为空!\n");
                              printf("是否继续操作(Y/N)?\n");
                               scanf(" %c",&ans);
                             break;
                             }
                             else if(T)
                                {
                                   printf("正在为您查询并删除相应学生在该社团的信息!\n");
                                   P=O;
                                  while (P)
                                  {
                                      T = Delete_zhongjianList2(O,Y); //逆序
                                       if(T == -1)
                                   {
                                //  printf("该编号社团信息为空!\n");
                                   }
                                   else if(T)
                                   {
                                       Save3(O);
                                   }
                                   P=P->next;
                                  }




                                }
                              printf("删除后文件中信息为:\n");
                              Display_shetuanList(A);
                              Save2(A);
                               printf("是否继续操作(Y/N)?\n");
                               scanf(" %c",&ans);
                               break;
                    case 4:printf("请输入要修改的社团编号:");
                            scanf("%d",&Y);
                            T= xiugai_shetuanList(A,Y);
                            if(T == -1)
                           {
                            printf("当前信息为空!\n");
                            printf("是否继续操作(Y/N)?\n");
                            scanf(" %c",&ans);
                            break;
                           }
                           else if(T)
                           {
                               Save2(A);
                                printf("正在为您查找并修改该社团编号在社团信息.....\n");
                                  T = xiugai_zhongjianList3(O,Y); //逆序
                                       if(T == -1)
                                   {
                                      // P=P->next;
                                      //  printf("该编号社团信息为空!\n");
                                   }
                                   else if(T)
                                   {
                                      // P=P->next;
                                      Save3(O);
                                   }


                           }
                         //  printf("该信息修改成功!\n");
                         //  printf("当前文件中社团信息为:\n");
                         //   Display_shetuanList(A);
                         //   Save2(A);
                            printf("是否继续操作(Y/N)?\n");
                            scanf(" %c",&ans);
                            break;
                    case 5:printf("请输入要查询社团编号:");
                          scanf("%d",&Y);
                          if(B)
                          {
                          Locate_shetuanList(B,Y);
                          printf("是否继续操作(Y/N)?\n");
                          scanf(" %c",&ans);
                          break;
                          }
                          Locate_shetuanList(A,Y);
                          printf("是否继续操作(Y/N)?\n");
                          scanf(" %c",&ans);
                          break;
                    case 6:printf("当前社团信息为:\n");
                           Display_shetuanList(A);
                           printf("是否继续操作(Y/N)?\n");
                           scanf(" %c",&ans);
                           break;
                    default:printf("输入错误,请检查!\n");
                          printf("是否继续操作(Y/N)?\n");
                           scanf(" %c",&ans);
                           break;
                           }
                    }  while(ans=='Y'||ans=='y');
                     printf("是否返回主菜单操作(Y/N)?\n");
                      scanf(" %c",&ans);
                       break;
          case 3:do{ printf("***********************************************************************\n");
                     printf("*                       1.打开学生在社团的数据文件                    *\n");
                     printf("*                       2.学生加入社团                                *\n");
                     printf("*                       3.学生退出社团                                *\n");
                     printf("*                       4.修改学生在社团信息                          *\n");
                     printf("*                       5.按学生学号查询学生在社团信息                *\n");
                     printf("*                       6.按社团编号查询学生在社团信息                *\n");
                     printf("*                       7.显示当前学生在社团信息                      *\n");
                     printf("***********************************************************************\n");
                int k;
                printf("请输入相应操作序号:");
                scanf("%d",&k);
               switch(k)
              {
                  case 1:printf("当前学生在社团中的信息为:\n");
                        if((O=Read3(O))!=NULL)
                        Display_zhongjianList(O);
                        printf("是否继续操作(Y/N)?\n");
                        scanf(" %c",&ans);
                        break;
                  case 2:printf("请输入要加入社团学生个数:");
                            scanf("%d",&y);
                                Re_Creat_zhongjianList(L,A,O,y);
                               //  printf("信息添加成功!\n");
                                printf("当前学生在社团中信息为:\n");
                                Display_zhongjianList(O);
                                Save3(O);
                                printf("是否继续操作(Y/N)?\n");
                                scanf(" %c",&ans);
                                break;
                  case 3:printf("请输入要退出社团学生的学生学号:");
                         scanf("%d",&Y);
                          P=O;
                                 while(P)
                                 {
                                      T = Delete_zhongjianList(O,Y); //逆序
                                       if(T == -1)
                                   {
                                //  printf("当前学号在社团信息为空!\n");
                                  }
                                else if(T)
                                {
                                    Save3(O);
                                }
                                     P=P->next;
                                 }
                        // Locate_zhongjianList(O,Y);


                       /*  T = Delete_zhongjianList(O,Y); //逆序
                          if(T == -1)
                        {
                        printf("当前信息为空!\n");
                        printf("是否继续操作(Y/N)?\n");
                        scanf(" %c",&ans);
                        break;
                        }
                        else if(T)
                        {
                             Save3(O);


                        }*/
                        printf("退出当前学生在社团信息为:\n");
                        Display_zhongjianList(O);


                        printf("是否继续操作(Y/N)?\n");
                        scanf(" %c",&ans);
                        break;
                 case 4: printf("请输入要修改的学生学号:");
                         scanf("%d",&Y);
                         T= xiugai_zhongjianList2(O,Y);
                         if(T == -1)
                       {
                        printf("当前信息为空!\n");
                        printf("是否继续操作(Y/N)?\n");
                        scanf(" %c",&ans);
                        break;
                        }
                          //Display_zhongjianList(O);
                          Save3(O);
                         printf("是否继续操作(Y/N)?\n");
                        scanf(" %c",&ans);
                        break;
                 case 5:
                        printf("请输入要查询学生学号:");
                         scanf("%d",&Y);
                        chaxunsno(O,Y);
                     // Locate_zhongjianList(O,Y);
                      printf("是否继续操作(Y/N)?\n");
                      scanf(" %c",&ans);
                      break;
                 case 6: printf("请输入要查询的社团编号:\n");
                         scanf("%d",&Y);
                         chaxunshetuannumber(O,Y);
                         // Locate_zhongjianList2(O,Y);
                      printf("是否继续操作(Y/N)?\n");
                      scanf(" %c",&ans);
                      break;


                 case 7:printf("当前学生在社团的信息为:\n");
                        Display_zhongjianList(O);
                        printf("是否继续操作(Y/N)?\n");
                        scanf(" %c",&ans);
                        break;




               default:printf("输入错误,请检查!\n");
              }


          }while(ans=='Y'||ans=='y');
           printf("是否返回主菜单操作(Y/N)?\n");
                      scanf(" %c",&ans);
                       break;




         case 0:    exit(0);
                break;


        default:printf("输入错误,请检查!\n");
    }
    }while(ans=='Y'||ans=='y');


}

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
学生社团管理系统v0.1版主要实现成员管理功能,使用函数实现显示成员信息。 首先,我们可以定义一个用于存储成员信息的列表。每个成员信息可以使用字典来表示,包括成员姓名学号性别年级等基本信息。 接下来,我们可以定义一个函数来添加新的成员信息。该函数会接收输入的成员信息,并将其添加到成员信息列表中。 然后,我们可以定义一个函数来显示所有已添加的成员信息。该函数会遍历成员信息列表,并将每个成员信息按照一定的格式进行显示。 最后,我们可以设计一个主函数来实现用户与系统的交互。用户可以通过输入不同的指令来添加成员信息、显示成员信息等操作。 下面是一个简单的示例代码: ```python # 存储成员信息的列表 members = [] # 添加新的成员信息 def add_member(): name = input("请输入姓名:") student_id = input("请输入学号:") gender = input("请输入性别:") grade = input("请输入年级:") member = {"姓名": name, "学号": student_id, "性别": gender, "年级": grade} members.append(member) print("添加成功!") # 显示所有已添加的成员信息 def show_members(): if not members: print("暂无成员信息!") else: for member in members: print("姓名:{},学号:{},性别:{},年级:{}".format(member["姓名"], member["学号"], member["性别"], member["年级"])) # 主函数 def main(): while True: cmd = input("请输入指令(add: 添加成员, show: 显示成员信息, quit: 退出程序):") if cmd == "add": add_member() elif cmd == "show": show_members() elif cmd == "quit": print("程序已退出!") break else: print("无效指令!请重新输入。") # 运行主函数 main() ``` 通过运行以上代码,用户可以根据提示输入指令来操作学生社团管理系统v0.1版。例如,输入"add"可以添加新的成员信息,输入"show"可以显示已添加的成员信息,输入"quit"可以退出程序。这样,我们就实现了一个简单的学生社团管理系统v0.1版,并使用函数来实现显示成员信息功能

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值