C语言高校社团管理系统设计报告.doc
- 格式:doc
- 大小:204.31 KB
- 文档页数:20
高校社团管理系统设计报告
一题目要求,内容
在高校中,为了丰富学生的业余生活,在学校的帮助下,会成立许多社团,少则几个,多则几十个。为了有效管理这些社团,要求编写程序实现社团招收新成员、修改社团相应信息、老成员离开社团、查询社团情况、统计社团成员数等功能。
二设计思想
根据题目要求,定义新的数据类型Club,用于存储社团信息,并采用单链表的方式将不同的社团连接起来,新定义的数据类型Club中包含结构体数组Member ClubMember[MaxMember],用于存储社团成员信息。其次,定义了不同的功能函数满足所需的功能要求。
三总体结构(模块结构图,函数功能)
四源代码,运行结果 #include
#include
#include
#define MaxClub 20
#define MaxMember 20
typedefstructMNode{
intnum; /*成员学号*/
char name[6]; /*成员姓名*/
char major[8]; /*成员专业*/
char hobby[10]; /*成员爱好*/
}Member;
typedefstructCNode{
char ClubName[10]; /*社团名字*/
char intro[20]; /*社团介绍*/
char information[20]; /*社团公告*/
intMeNum; /*成员人数*/
Member ClubMember[MaxMember]; /*社团成员信息*/
structCNode *next;
}Club,*NClub;
NClubIniti(NClub C) /*系统初始化*/
{
C=(NClub)malloc(sizeof(Club));
if(!C)
{
printf("\n\t\t\t初始化失败!");exit(0);
}
C->next=NULL;
printf("\n\t\t\t初始化成功!\n");
return C;
}
intAddClub(NClub C) /*添加社团*/
{
inti;
char ch; NClubp,q; p=C;
for(i=1;i<=MaxClub;i++)
{
q=(NClub)malloc(sizeof(Club));
if(!q)
{
printf("\n\t\t\t创建失败!");continue;
}
printf("\n\t\t\t请输入社团名称:");
gets(q->ClubName);fflush(stdin);
printf("\n\t\t\t请输入社团介绍:");
gets(q->intro);fflush(stdin);
printf("\n\t\t\t请输入社团信息:");
gets(q->information);fflush(stdin);
q->MeNum=0;
p->next=q;
q->next=NULL;
p=q;
printf("\n\t\t\t是否继续创建?(Y/N)\t");
ch=getchar();fflush(stdin);
if(ch=='Y') continue;
else break;
}
return 1;
}
intClubNum(NClub C) /*统计社团数量*/
{
int total=0;
NClub p=C->next;
while(p)
{
total++;
p=p->next;
}
return total;
} intInsertClub(NClub C) /*添加新社团*/
{
NClubp,q;
p=C;
if(ClubNum(C)>=MaxClub)
{printf("\n\t\t\t本校社团数已到最大值,不能再添加了!");return 0;}
while(p->next) p=p->next;
q=(NClub)malloc(sizeof(Club));
if(!q)
{
printf("\n\t\t\t创建失败!");return 0;
}
printf("\n\t\t\t请输入社团名称:");
gets(q->ClubName);fflush(stdin);
printf("\n\t\t\t请输入社团介绍:");
gets(q->intro);fflush(stdin);
printf("\n\t\t\t请输入社团信息:"); gets(q->information);fflush(stdin);
q->MeNum=0;
p->next=q;
q->next=NULL;
p=q;
return 1;
}
intDelteClub(NClub C) /*社团注销*/
{
if(ClubNum(C)==0) {printf("\n\t\t\t学校还没有社团!");return 0;}
char cn[10],ch;
inti,flag;
NClubp,q;
p=C;
printf("\n\t\t\t请输入社团名称:");
gets(cn);
for(i=1;i<=ClubNum(C);i++) {
q=p;
p=p->next;
if(!strcmp(cn,p->ClubName))
{flag=1;break;}
else flag=0;
}
if(flag==0) {printf("\n\t\t\t没有该社团!");return 0;}
q->next=p->next;
return 1;
}
intAddClubMember(NClub C) /*添加社团成员*/
{
if(ClubNum(C)==0) {printf("\n\t\t\t学校还没有社团!");return 0;}
char cn[10],ch;
inti,flag;
NClub p;
p=C;
printf("\n\t\t\t请输入成员所在社团:");
gets(cn);
for(i=1;i<=ClubNum(C);i++)
{
p=p->next;
if(!strcmp(cn,p->ClubName))
{flag=1;break;}
else flag=0;
}
if(flag==0) {printf("\n\t\t\t没有该社团!");return 0;}
for(i=0;i { printf("\n\t\t\t请输入成员的学号:"); scanf("%d",&p->ClubMember[i].num);fflush(stdin); printf("\n\t\t\t请输入成员的名字:"); gets(p->ClubMember[i].name);fflush(stdin); printf("\n\t\t\t请输入成员的专业:"); gets(p->ClubMember[i].major);fflush(stdin); printf("\n\t\t\t请输入成员的爱好:"); gets(p->ClubMember[i].hobby);fflush(stdin); p->MeNum++; printf("\n\t\t\t是否继续添加?(Y/N)\t"); ch=getchar(); if(ch=='Y') continue; else break; } return 1; } intAddClubNewMember(NClub C) /*添加社团新成员*/ { if(ClubNum(C)==0) {printf("\n\t\t\t学校还没有社团!");return 0;} char cn[10],ch; inti,flag; NClub p; p=C; printf("\n\t\t\t请输入成员所在社团:"); gets(cn); for(i=1;i<=ClubNum(C);i++) { p=p->next; if(!strcmp(cn,p->ClubName)) {flag=1;break;} else flag=0; } if(flag==0) {printf("\n\t\t\t没有该社团!");return 0;}