ZH-JUE- 发表于 2016-10-27 20:13:28

为什么社团管理系统调试不出

#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <string.h>

#defineOK      1
#defineERROR   0
#defineOVERFLOW-1

typedef int    status;
typedef char   CElemType;
typedef int    ElemType;
typedef struct Link
{
    CElemType num; //学号
    CElemType name; //姓名
    CElemType phone; //手机号
    CElemType point; //特征
    CElemType role; //角色
    ElemType sex; //性别
    ElemType age; //年龄
    struct Link *next;
}LinkList,*PLinkList;

typedef struct MLink
{
    CElemType ST; //社团名字
    ElemType len; //社团人数
    ElemType maxlen; //社团最大人数
    struct MLink *next;         
}MLinkList,*MPLinkList;

void menu() //主页面               
{
    printf("................    主菜单   ................\n");
    printf("................ 1.新成员入社................\n");
    printf("................ 2.老成员退社................\n");
    printf("................ 3.成员查询    ................\n");
    printf("................ 4.两个社团并社................\n");
        printf("................ 5.输入社团信息................\n");
    printf("................ 0.退出      ................\n");
} //menu

void ST(MPLinkList &L)   //输入社团信息
{
        printf("...............输入社团信息..............\n");
        printf(" 社团名字    当前成员人数   最大人数\n");
    scanf("%s %d %d",L->ST,&L->len,&L->maxlen);
} //ST

void Insert(MPLinkList &L) //新成员入社
{
        printf(".......................输入成员信息.....................\n");
        printf("学号    姓名    手机号    特征    角色    性别(0:女 1:男)    年龄\n");
        PLinklist q;
        q=(PLinklist)malloc(sizeof(Linklist));
        q->next=NULL;
        scanf("%s %s %s %s %s %d %d",p->num,p->name,p->phone,p->Point,p->role,&p->sex,&p->age);
    q->next=L->next;
    L->next=q;
    L->len++;
} //Insert

void Delete(MPLinkList &L) //老成员退社
{
        printf("................输入学号................\n");
    char a;
    scanf("%s",a);
    PLinkList q,p;
    q=p=L->next;
    while(p->next!=NULL)   
      if(!strcmp(p->next->num,a))   
            break;
    if(q==p)   
      L->next=NULL;   
    else if(q->next==p||q->next!=NULL)   
      q->next->next=p->next;   
    free(p);
    L->len--;
} //Delete

void show(MPLinkList &L)//成员展示
{
        printf("学号   姓名   手机号   特征   角色   性别(0:女 1:男)   年龄\n");
    PLinkList q;
    q=L->next;
    while(q!=NULL)
    {
      printf("%s %s %s %s %s %d %d\n",q->num,q->name,q->phone,q->Point,q->role,q->sex,q->age);
      q=q->next;
    }
} //show

void Init(MPLinkList &A,MPLinkList &B)//初始化表
{
    B->len=A->len=0;
    B->maxlen=A->maxlen=0;
    strcpy(B->ST," ");
    strcpy(A->ST," ");
    A->next=NULL;
    B->next=NULL;
}//Init

void combine(MPLinkList &A,MPLinkList &B) //两个社团合并
{
        printf(".................合并................\n");
    A->len=A->len+B->len;
    A->maxlen=A->maxlen+B->maxlen;
    printf("输入社名\n");
    scanf("%s",A->ST);
    PLinkList q;
    q=A->next;
    while(q!=NULL&&q->next!=NULL)
      q=q->next;
    if(A->next==NULL)
      A->next=B->next;
    else
      q->next=B->next;
    free(B);
}//combine

int main()   //主函数
{
        int n;
    MPLinkList A,B;
    B=A=(MPLinkList)malloc(sizeof(MLinkList));
    Init(A,B);
    menu();   
    printf("请输入数字\n");
    while(scanf("%d",&n)!=EOF&&n>=0&&n<=5)
    {
      switch(n)
      {
      case 1:
            {   
                Insert(A); //新成员加入
                break;
            }
      case 2:
            {         
                Delete(A);//老成员退出
                break;
            }
      case 3:
            {               
                show(A); //显示成员
                break;
            }
      case 4:
            {   
                combine(A,B); //合并
                break;
            }
                case 5:
                        {
                                ST(A);
                                break;
                        }
      case 0:
            {
                exit(OK); //退出
            }
      }
    }
    return 0;
}
页: [1]
查看完整版本: 为什么社团管理系统调试不出