当前位置:文档之家› C语言高校社团管理系统设计报告

C语言高校社团管理系统设计报告

高校社团管理系统设计报告一题目要求,内容在高校中,为了丰富学生的业余生活,在学校的帮助下,会成立许多社团,少则几个,多则几十个。

为了有效管理这些社团,要求编写程序实现社团招收新成员、修改社团相应信息、老成员离开社团、查询社团情况、统计社团成员数等功能。

二设计思想根据题目要求,定义新的数据类型Club,用于存储社团信息,并采用单链表的方式将不同的社团连接起来,新定义的数据类型Club 中包含结构体数组Member ClubMember[MaxMember],用于存储社团成员信息。

其次,定义了不同的功能函数满足所需的功能要求。

三总体结构(模块结构图,函数功能)四源代码,运行结果#include<stdio.h>#include<stdlib.h>#include<string.h>#define MaxClub 20#define MaxMember 20typedef 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本校社团数已到最大值,不能再添加了!");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;}int DelteClub(NClub C) /*社团注销*/ {if(ClubNum(C)==0){printf("\n\t\t\t学校还没有社团!");return 0;}char cn[10],ch;int i,flag;NClub p,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;}int AddClubMember(NClub C) /*添加社团成员*/{if(ClubNum(C)==0){printf("\n\t\t\t学校还没有社团!");return 0;}char cn[10],ch;int i,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<MaxMember;i++){printf("\n\t\t\t请输入成员的学号:");scanf("%d",&p->ClubMember[i].num);ffl ush(stdin);printf("\n\t\t\t请输入成员的名字:");gets(p->ClubMember[i].name);fflush(st din);printf("\n\t\t\t请输入成员的专业:");gets(p->ClubMember[i].major);fflush(s tdin);printf("\n\t\t\t请输入成员的爱好:");gets(p->ClubMember[i].hobby);fflush(s tdin);p->MeNum++;printf("\n\t\t\t是否继续添加?(Y/N)\t");ch=getchar();if(ch=='Y') continue;else break; }return 1;}int AddClubNewMember(NClub C) /*添加社团新成员*/{if(ClubNum(C)==0){printf("\n\t\t\t学校还没有社团!");return 0;}char cn[10],ch;int i,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=p->MeNum;i<MaxMember;i++) {printf("\n\t\t\t请输入成员的学号:");scanf("%d",&p->ClubMember[i].num);ffl ush(stdin);printf("\n\t\t\t请输入成员的名字:");gets(p->ClubMember[i].name);fflush(st din);printf("\n\t\t\t请输入成员的专业:");gets(p->ClubMember[i].major);fflush(s tdin);printf("\n\t\t\t请输入成员的爱好:");gets(p->ClubMember[i].hobby);fflush(s tdin);p->MeNum++;printf("\n\t\t\t是否继续添加?(Y/N)\t");ch=getchar();if(ch=='Y') continue;else break;}return 1;}void ClubMemberNum(NClub C) /*统计社团成员人数*/{if(ClubNum(C)==0){printf("\n\t\t\t学校还没有社团!");return 0;}int i;NClub p;p=C->next;for(i=0;i<ClubNum(C);i++){printf("\n\t\t\t%s社团共有%d 个成员!\n",p->ClubName,p->MeNum);p=p->next;}}int ChangeClub(NClub C) /*修改社团信息*/{if(ClubNum(C)==0){printf("\n\t\t\t学校还没有社团!");return 0;} char cn[10];int i,flag;NClub p;p=C;printf("\n\t\t\t请输入社团名称:");gets(cn);fflush(stdin);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;}printf("\n\t\t\t请输入社团名称:");gets(p->ClubName);fflush(stdin); printf("\n\t\t\t请输入社团介绍:");gets(p->intro);fflush(stdin);printf("\n\t\t\t请输入社团信息:");gets(p->information);fflush(stdin);return 1;}int ChangeMember(NClub C) /*修改社团成员信息*/{if(ClubNum(C)==0){printf("\n\t\t\t学校还没有社团!");return 0;}char cn[10],na[6];int i,flag,sign,y=0;NClub p;p=C;printf("\n\t\t\t请输入成员所在社团:");gets(cn);fflush(stdin);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;}printf("\n\t\t\t请输入所要修改信息成员的姓名:");gets(na);fflush(stdin);for(i=0;i<MaxMember;i++){if(!strcmp(na,p->ClubMember[i].name)) {sign=1,y++;break;}else sign=0,y++;}if(sign==0) {printf("\n\t\t\t没有这个成员!");return 0;}printf("\n\t\t\t请输入成员的学号:");scanf("%d",&p->ClubMember[y-1].num);f flush(stdin);printf("\n\t\t\t请输入成员的名字:");gets(p->ClubMember[y-1].name);fflush( stdin);printf("\n\t\t\t请输入成员的专业:");gets(p->ClubMember[y-1].major);fflush (stdin);printf("\n\t\t\t请输入成员的爱好:");gets(p->ClubMember[y-1].hobby);fflush (stdin);return 1;}int DelteClubMember(NClub C) /*社团成员退团*/{if(ClubNum(C)==0){printf("\n\t\t\t学校还没有社团!");return 0;}char cn[10],na[6];int i,flag,sign,y=0;NClub p;p=C;printf("\n\t\t\t请输入成员所在社团:");gets(cn);fflush(stdin);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;}printf("\n\t\t\t请输入所要删除成员的姓名:");gets(na);fflush(stdin);for(i=0;i<MaxMember;i++){if(!strcmp(na,p->ClubMember[i].name)) {sign=1,y++;break;}else sign=0,y++;}if(sign==0) {printf("\n\t\t\t没有这个成员!");return 0;}for(i=y;i<MaxMember;i++){p->ClubMember[i-1]=p->ClubMember[i]; }p->MeNum--;return 1;}int ShowClubInformation(NClub C) /*显示社团信息*/{if(ClubNum(C)==0){printf("\n\t\t\t没有可以显示的信息!\n");return 0;}int i,j;NClub p;p=C->next;for(i=0;p!=NULL;i++){printf("\n\t社团:\n");printf("\n\t\t名称\t介绍\t信息");printf("\n\t\t%-8s\t%-8s\t%-8s\n",p-> ClubName,p->intro,p->information);printf("\n\t社团成员信息:\n");if(p->MeNum==0){printf("\n\t\t该社团还没有成员!\n");p=p->next;continue;}printf("\n\t成员学号\t成员姓名\t成员专业\t成员爱好");for(j=0;j<p->MeNum;j++){ printf("\n\t%-8d\t%-8s\t%-8s\t%-8s\n" ,p->ClubMember[j].num,p->ClubMember[j ].name,p->ClubMember[j].major,p->Club Member[j].hobby);}printf("\n\t========================= ======================\n");p=p->next;}return 1;}void menu(){printf("\n\t\t\t 欢迎进入功能选择菜单\n");printf("\t\t\t======================= \n");printf("\t\t\t 1.系统初始化;\n");printf("\t\t\t 2.创建社团;\n"); printf("\t\t\t 3.添加新社团;\n");printf("\t\t\t 4.修改社团资料;\n");printf("\t\t\t 5.社团注销;\n"); printf("\t\t\t 6.添加社团成员;\n");printf("\t\t\t 7.添加社团新成员;\n");printf("\t\t\t 8.修改社团成员资料;\n");printf("\t\t\t 9.社团成员退团;\n");printf("\t\t\t 10.显示社团信息;\n");printf("\t\t\t 11.统计社团成员人数;\n");printf("\t\t\t 0.结束;\n");printf("\t\t\t======================= \n\n");printf("\t\t\t选择功能:");}main(){NClub C;for(;;){menu();int se;scanf("%d",&se);fflush(stdin);if(se<0||se>11) {printf("\n\t\t\t 输入有误!\n");system("pause");system("cls");}switch(se){case 1:C=Initi(C);system("pause");system("cls");break;case 2:AddClub(C);ShowClubInformation(C); system("pause");system("cls");break;case 3:InsertClub(C);ShowClubInformation(C); system("pause");system("cls");break;case 4:ChangeClub(C);ShowClubInformation(C); system("pause");system("cls");break; case 5:DelteClub(C);ShowClubInformation(C);system("pause");system("cls");break;case 6:AddClubMember(C);ShowClubInformation(C);system("pause");system("cls");break;case 7:AddClubNewMember(C);ShowClubInformation(C);system("pause");system("cls");break;case 8:ChangeMember(C);ShowClubInformation(C);system("pause");system("cls");break;case 9:DelteClubMember(C);ShowClubInformation(C);system("pause");system("cls");break;case 10:ShowClubInformation(C);system("pause");system("cls");break;case 11:ClubMemberNum(C);system("pause");system("cls");break;case 0:printf("\n\t\t\t感谢使用!");exit(0);break;}}}五小结通过本次数据结构课程设计的学习以及自己动手的实践,我获益匪浅。

相关主题