1、高校社团管理系统设计报告一题目要求,内容在高校中,为了丰富学生的业余生活,在学校的帮助下,会成立许多社团,少则几个,多则几十个。为了有效管理这些社团,要求编写程序实现社团招收新成员、修改社团相应信息、老成员离开社团、查询社团情况、统计社团成员数等功能。二设计思想根据题目要求,定义新的数据类型 Club,用于存储社团信息,并采用单链表的方式将不同的社团连接起来,新定义的数据类型Club 中包含结构体数组 Member ClubMemberMaxMember,用于存储社团成员信息。其次,定义了不同的功能函数满足所需的功能要求。三总体结构(模块结构图,函数功能)四源代码,运行结果#include#i
2、nclude#include#define MaxClub 20#define MaxMember 20typedef struct MNodeint num; /*成员学号*/char name6; /*成员姓名*/char major8; /*成员专业*/char hobby10; /*成员爱好*/Member;typedef struct CNodechar ClubName10; /*社团名字*/char intro20; /*社团介绍*/char information20; /*社团公告*/int MeNum; /*成员人数*/Member ClubMemberMaxMember;
3、 /*社团成员信息*/struct CNode *next;Club,*NClub;NClub Initi(NClub C) /*系统初始化*/C=(NClub)malloc(sizeof(Club);if(!C)printf(“nttt 初始化失败!“);exit(0);C-next=NULL;printf(“nttt 初始化成功!n“);return C;int AddClub(NClub C) /*添加社团*/int i;char ch;NClub p,q;p=C;for(i=1;iClubName);fflush(stdin);printf(“nttt 请输入社团介绍:“);gets(
4、q-intro);fflush(stdin);printf(“nttt 请输入社团信息:“);gets(q-information);fflush(stdin);q-MeNum=0;p-next=q;q-next=NULL;p=q;printf(“nttt 是否继续创建?(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 t
5、otal;int InsertClub(NClub C) /*添加新社 团*/NClub p,q;p=C;if(ClubNum(C)=MaxClub) printf(“nttt 本校社团数已到最大值,不能再添加了!“);return 0;while(p-next) p=p-next;q=(NClub)malloc(sizeof(Club);if(!q)printf(“nttt 创建失败!“);return 0;printf(“nttt 请输入社团名称:“);gets(q-ClubName);fflush(stdin);printf(“nttt 请输入社团介绍:“);gets(q-intro);
6、fflush(stdin);printf(“nttt 请输入社团信息:“);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(“nttt 学校还没有社团!“);return 0;char cn10,ch;int i,flag;NClub p,q;p=C;printf(“nttt 请输入社团名称:“);gets(cn);for(i=1;inext;if(!strcmp(cn,p-Cl
7、ubName) flag=1;break;else flag=0;if(flag=0) printf(“nttt 没有该社团!“);return 0;q-next=p-next;return 1;int AddClubMember(NClub C) /*添加社团成员*/if(ClubNum(C)=0) printf(“nttt 学校还没有社团!“);return 0;char cn10,ch;int i,flag;NClub p;p=C;printf(“nttt 请输入成员所在社团:“);gets(cn);for(i=1;inext;if(!strcmp(cn,p-ClubName) flag
8、=1;break;else flag=0;if(flag=0) printf(“nttt 没有该社团!“);return 0;for(i=0;iClubMemberi.num);fflush(stdin);printf(“nttt 请输入成员的名字:“);gets(p-ClubMemberi.name);fflush(stdin);printf(“nttt 请输入成员的专业:“);gets(p-ClubMemberi.major);fflush(stdin);printf(“nttt 请输入成员的爱好:“);gets(p-ClubMemberi.hobby);fflush(stdin);p-M
9、eNum+;printf(“nttt 是否继续添加?(Y/N)t“);ch=getchar();if(ch=Y) continue;else break;return 1;int AddClubNewMember(NClub C) /*添加社团新成员*/if(ClubNum(C)=0) printf(“nttt 学校还没有社团!“);return 0;char cn10,ch;int i,flag;NClub p;p=C;printf(“nttt 请输入成员所在社团:“);gets(cn);for(i=1;inext;if(!strcmp(cn,p-ClubName) flag=1;break
10、;else flag=0;if(flag=0) printf(“nttt 没有该社团!“);return 0;for(i=p-MeNum;iClubMemberi.num);fflush(stdin);printf(“nttt 请输入成员的名字:“);gets(p-ClubMemberi.name);fflush(stdin);printf(“nttt 请输入成员的专业:“);gets(p-ClubMemberi.major);fflush(stdin);printf(“nttt 请输入成员的爱好:“);gets(p-ClubMemberi.hobby);fflush(stdin);p-MeN
11、um+;printf(“nttt 是否继续添加?(Y/N)t“);ch=getchar();if(ch=Y) continue;else break;return 1;void ClubMemberNum(NClub C) /*统计社团成员人数*/if(ClubNum(C)=0) printf(“nttt 学校还没有社团!“);return 0;int i;NClub p;p=C-next;for(i=0;iClubName,p-MeNum);p=p-next;int ChangeClub(NClub C) /*修改社团信息*/if(ClubNum(C)=0) printf(“nttt 学校还
12、没有社团!“);return 0;char cn10;int i,flag;NClub p;p=C;printf(“nttt 请输入社团名称:“);gets(cn);fflush(stdin);for(i=1;inext;if(!strcmp(cn,p-ClubName) flag=1;break;else flag=0;if(flag=0) printf(“nttt 没有该社团!“);return 0;printf(“nttt 请输入社团名称:“);gets(p-ClubName);fflush(stdin);printf(“nttt 请输入社团介绍:“);gets(p-intro);ffl
13、ush(stdin);printf(“nttt 请输入社团信息:“);gets(p-information);fflush(stdin);return 1;int ChangeMember(NClub C) /*修改社团成员信息*/if(ClubNum(C)=0) printf(“nttt 学校还没有社团!“);return 0;char cn10,na6;int i,flag,sign,y=0;NClub p;p=C;printf(“nttt 请输入成员所在社团:“);gets(cn);fflush(stdin);for(i=1;inext;if(!strcmp(cn,p-ClubName)
14、 flag=1;break;else flag=0;if(flag=0) printf(“nttt 没有该社团!“);return 0;printf(“nttt 请输入所要修改信息成员的姓名:“);gets(na);fflush(stdin);for(i=0;iClubMemberi.name) sign=1,y+;break;else sign=0,y+;if(sign=0) printf(“nttt 没有这个成员!“);return 0;printf(“nttt 请输入成员的学号:“);scanf(“%d“,fflush(stdin);printf(“nttt 请输入成员的名字:“);ge
15、ts(p-ClubMembery-1.name);fflush(stdin);printf(“nttt 请输入成员的专业:“);gets(p-ClubMembery-1.major);fflush(stdin);printf(“nttt 请输入成员的爱好:“);gets(p-ClubMembery-1.hobby);fflush(stdin);return 1;int DelteClubMember(NClub C) /*社团成员退团*/if(ClubNum(C)=0) printf(“nttt 学校还没有社团!“);return 0;char cn10,na6;int i,flag,sign
16、,y=0;NClub p;p=C;printf(“nttt 请输入成员所在社团:“);gets(cn);fflush(stdin);for(i=1;inext;if(!strcmp(cn,p-ClubName) flag=1;break;else flag=0;if(flag=0) printf(“nttt 没有该社团!“);return 0;printf(“nttt 请输入所要删除成员的姓名:“);gets(na);fflush(stdin);for(i=0;iClubMemberi.name) sign=1,y+;break;else sign=0,y+;if(sign=0) printf
17、(“nttt 没有这个成员!“);return 0;for(i=y;iClubMemberi-1=p-ClubMemberi;p-MeNum-;return 1;int ShowClubInformation(NClub C) /*显示社团信息*/if(ClubNum(C)=0) printf(“nttt 没有可以显示的信息!n“);return 0;int i,j;NClub p;p=C-next;for(i=0;p!=NULL;i+)printf(“nt 社团:n“);printf(“ntt 名 称t 介 绍t信 息“);printf(“ntt%-8st%-8st%-8sn“,p-Club
18、Name,p-intro,p-information);printf(“nt 社团成员信息:n“);if(p-MeNum=0) printf(“ntt 该社团还没有成员!n“);p=p-next;continue;printf(“nt 成员学号t 成员姓名t成员专业t 成员爱好“);for(j=0;jMeNum;j+)printf(“nt%-8dt%-8st%-8st%-8sn“,p-ClubMemberj.num,p-ClubMemberj.name,p-ClubMemberj.major,p-ClubMemberj.hobby);printf(“nt=n“);p=p-next;return
19、 1;void menu()printf(“nttt 欢迎进入功能选择菜单n“);printf(“ttt=n“);printf(“ttt 1.系统初始化;n“);printf(“ttt 2.创建社团;n“);printf(“ttt 3.添加新社团;n“);printf(“ttt 4.修改社团资料;n“);printf(“ttt 5.社团注销;n“);printf(“ttt 6.添加社团成员;n“);printf(“ttt 7.添加社团新成员;n“);printf(“ttt 8.修改社团成员资料;n“);printf(“ttt 9.社团成员退团;n“);printf(“ttt 10.显示社团信息
20、;n“);printf(“ttt 11.统计社团成员人数;n“);printf(“ttt 0.结束;n“);printf(“ttt=nn“);printf(“ttt 选择功能:“);main()NClub C;for(;)menu();int se;scanf(“%d“,fflush(stdin);if(se11) printf(“nttt 输入有误!n“);system(“pause“);system(“cls“);switch(se)case 1:C=Initi(C);system(“pause“);system(“cls“);break;case 2:AddClub(C);ShowClu
21、bInformation(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:Ad
22、dClubMember(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(“p
23、ause“);system(“cls“);break;case 10:ShowClubInformation(C);system(“pause“);system(“cls“);break;case 11:ClubMemberNum(C);system(“pause“);system(“cls“);break;case 0:printf(“nttt 感谢使用!“);exit(0);break;五小结通过本次数据结构课程设计的学习以及自己动手的实践,我获益匪浅。本次课程设计使我更加扎实地掌握了数据结构方面的知识,在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查,同时在老师同
24、学的帮助下,最终找出了原因所在。由于时间、个人能力有限,程序仍有很多可以改进的地方。比如,在程序执行时,必须按照规定的方式输入,为了解决这一问题可以在此程序的基础上设计错误处理机制,使程序的使用更加方便和可靠; 代码可重用率较低,如果使用面向对象的设计方法,可用到继承的方法,使程序更加简洁,可读性也大大增强;主程序界面不够美观,还是简单的控制台界面,可以尝试设计更加美观的界面。 通过本次课程设计,我有很多的体会。 想要编写一个优秀的程序,我们要扎实掌握程序语言,要注重培养实践能力,要培养严谨的态度,不怕出错,培养独立思考、解决问题的能力,提高自己的实际动手能力,同时,要和老师同学多交流,便于解决问题和共同进步。