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