高校社团管理系统设计报告
一题目要求,内容
在高校中,为了丰富学生的业余生活,在学校的帮助下,会成立许多社团,少则几个,多则几十个。为了有效管理这些社团,要求编写程序实现社团招收新成员、修改社团相应信息、老成员离开社团、查询社团情况、统计社团成员数等功能。
二设计思想
根据题目要求,定义新的数据类型Club,用于存储社团信息,并采用单链表的方式将不同的社团连接起来,新定义的数据类型Club中包含结构体数组Member ClubMember[MaxMember],用于存储社团成员信息。其次,定义了不同的功能函数满足所需的功能要求。
三总体结构(模块结构图,函数功能)
四源代码,运行结果
#include
#include
#include
#define MaxClub 20
#define MaxMember 20
typedef struct MNode{
int num; /*成员学号*/
char name[6]; /*成员姓名*/
char major[8]; /*成员专业*/
char hobby[10]; /*成员爱好*/
}Member;
typedef struct CNode{
char ClubName[10]; /*社团名字*/
char intro[20]; /*社团介绍*/
char information[20]; /*社团公告*/
int MeNum; /*成员人数*/
Member ClubMember[MaxMember]; /*社团成员信息*/
struct CNode *next;
}Club,*NClub;
NClub Initi(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;
}
int AddClub(NClub C) /*添加社团*/
{
int i;
char ch;
NClub p,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;
}
int ClubNum(NClub C) /*统计社团数量*/
{
int total=0;
NClub p=C->next;
while(p)
{
total++;
p=p->next;
}
return total;
}
int InsertClub(NClub C) /*添加新社团*/
{
NClub p,q;
p=C;
if(ClubNum(C)>=MaxClub) {printf("\n\t\t\t本校