|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <string.h>
#define OK 1
#define ERROR 0
#define OVERFLOW -1
typedef int status;
typedef char CElemType;
typedef int ElemType;
typedef struct Link
{
CElemType num[22]; //学号
CElemType name[20]; //姓名
CElemType phone[15]; //手机号
CElemType point[20]; //特征
CElemType role[10]; //角色
ElemType sex; //性别
ElemType age; //年龄
struct Link *next;
}LinkList,*PLinkList;
typedef struct MLink
{
CElemType ST[20]; //社团名字
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[20];
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;
}
|
|