C语言高校社团管理系统设计报告doc.docx
《C语言高校社团管理系统设计报告doc.docx》由会员分享,可在线阅读,更多相关《C语言高校社团管理系统设计报告doc.docx(17页珍藏版)》请在冰豆网上搜索。
![C语言高校社团管理系统设计报告doc.docx](https://file1.bdocx.com/fileroot1/2023-1/29/4e7841be-76d2-4583-b376-7026a8b2bad4/4e7841be-76d2-4583-b376-7026a8b2bad41.gif)
C语言高校社团管理系统设计报告doc
高校社团管理系统设计报告
一题目要求,内容
在高校中,为了丰富学生的业余生活,在学校的帮助下,会成立许多社团,少则几个,多则几十个。
为了有效管理这些社团,要求编写程序实现社团招收新成员、修改社团相应信息、老成员离开社团、查询社团情况、统计社团成员数等功能。
二设计思想
根据题目要求,定义新的数据类型Club,用于存储社团信息,并采用单链表的方式将不同的社团连接起来,新定义的数据类型Club中包含结构体数组MemberClubMember[MaxMember],用于存储社团成员信息。
其次,定义了不同的功能函数满足所需的功能要求。
三总体结构(模块结构图,函数功能)
四源代码,运行结果
#include
#include
#include
#defineMaxClub20
#defineMaxMember20
typedefstructMNode{
intnum;/*成员学号*/
charname[6];/*成员姓名*/
charmajor[8];/*成员专业*/
charhobby[10];/*成员爱好*/
}Member;
typedefstructCNode{
charClubName[10];/*社团名字*/
charintro[20];/*社团介绍*/
charinformation[20];/*社团公告*/
intMeNum;/*成员人数*/
MemberClubMember[MaxMember];/*社团成员信息*/
structCNode*next;
}Club,*NClub;
NClubIniti(NClubC)/*系统初始化*/
{
C=(NClub)malloc(sizeof(Club));
if(!
C)
{
printf("\n\t\t\t初始化失败!
");exit(0);
}
C->next=NULL;
printf("\n\t\t\t初始化成功!
\n");
returnC;
}
intAddClub(NClubC)/*添加社团*/
{
inti;
charch;
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;
elsebreak;
}
return1;
}
intClubNum(NClubC)/*统计社团数量*/
{
inttotal=0;
NClubp=C->next;
while(p)
{
total++;
p=p->next;
}
returntotal;
}
intInsertClub(NClubC)/*添加新社团*/
{
NClubp,q;
p=C;
if(ClubNum(C)>=MaxClub){printf("\n\t\t\t本校社团数已到最大值,不能再添加了!
");return0;}
while(p->next)p=p->next;
q=(NClub)malloc(sizeof(Club));
if(!
q)
{
printf("\n\t\t\t创建失败!
");return0;
}
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;
return1;
}
intDelteClub(NClubC)/*社团注销*/
{
if(ClubNum(C)==0){printf("\n\t\t\t学校还没有社团!
");return0;}
charcn[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;}
elseflag=0;
}
if(flag==0){printf("\n\t\t\t没有该社团!
");return0;}
q->next=p->next;
return1;
}
intAddClubMember(NClubC)/*添加社团成员*/
{
if(ClubNum(C)==0){printf("\n\t\t\t学校还没有社团!
");return0;}
charcn[10],ch;
inti,flag;
NClubp;
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;}
elseflag=0;
}
if(flag==0){printf("\n\t\t\t没有该社团!
");return0;}
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;
elsebreak;
}
return1;
}
intAddClubNewMember(NClubC)/*添加社团新成员*/
{
if(ClubNum(C)==0){printf("\n\t\t\t学校还没有社团!
");return0;}
charcn[10],ch;
inti,flag;
NClubp;
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;}
elseflag=0;
}
if(flag==0){printf("\n\t\t\t没有该社团!
");return0;}
for(i=p->MeNum;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;
elsebreak;
}
return1;
}
voidClubMemberNum(NClubC)/*统计社团成员人数*/
{
if(ClubNum(C)==0){printf("\n\t\t\t学校还没有社团!
");return0;}
inti;
NClubp;
p=C->next;
for(i=0;i{
printf("\n\t\t\t%s社团共有%d个成员!
\n",p->ClubName,p->MeNum);
p=p->next;
}
}
intChangeClub(NClubC)/*修改社团信息*/
{
if(ClubNum(C)==0){printf("\n\t\t\t学校还没有社团!
");return0;}
charcn[10];
inti,flag;
NClubp;
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;}
elseflag=0;
}
if(flag==0){printf("\n\t\t\t没有该社团!
");return0;}
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);
return1;
}
intChangeMember(NClubC)/*修改社团成员信息*/
{
if(ClubNum(C)==0){printf("\n\t\t\t学校还没有社团!
");return0;}
charcn[10],na[6];
inti,flag,sign,y=0;
NClubp;
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;}
elseflag=0;
}
if(flag==0){printf("\n\t\t\t没有该社团!
");return0;}
printf("\n\t\t\t请输入所要修改信息成员的姓名:
");
gets(na);fflush(stdin);
for(i=0;i{
if(!
strcmp(na,p->ClubMember[i].name)){sign=1,y++;break;}
elsesign=0,y++;
}
if(sign==0){printf("\n\t\t\t没有这个成员!
");return0;}
printf("\n\t\t\t请输入成员的学号:
");
scanf("%d",&p->ClubMember[y-1].num);fflush(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);
return1;
}
intDelteClubMember(NClubC)/*社团成员退团*/
{
if(ClubNum(C)==0){printf("\n\t\t\t学校还没有社团!
");return0;}
charcn[10],na[6];
inti,flag,sign,y=0;
NClubp;
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;}
elseflag=0;
}
if(flag==0){printf("\n\t\t\t没有该社团!
");return0;}
printf("\n\t\t\t请输入所要删除成员的姓名:
");
gets(na);fflush(stdin);
for(i=0;i{
if(!
strcmp(na,p->ClubMember[i].name)){sign=1,y++;break;}
elsesign=0,y++;
}
if(sign==0){printf("\n\t\t\t没有这个成员!
");return0;}
for(i=y;i{
p->ClubMember[i-1]=p->ClubMember[i];
}
p->MeNum--;
return1;
}
intShowClubInformation(NClubC)/*显示社团信息*/
{
if(ClubNum(C)==0){printf("\n\t\t\t没有可以显示的信息!
\n");return0;}
inti,j;
NClubp;
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;jMeNum;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->ClubMember[j].hobby);
}
printf("\n\t===============================================\n");
p=p->next;
}
return1;
}
voidmenu()
{
printf("\n\t\t\t欢迎进入功能选择菜单\n");
printf("\t\t\t=======================\n");
printf("\t\t\t1.系统初始化;\n");
printf("\t\t\t2.创建社团;\n");
printf("\t\t\t3.添加新社团;\n");
printf("\t\t\t4.修改社团资料;\n");
printf("\t\t\t5.社团注销;\n");
printf("\t\t\t6.添加社团成员;\n");
printf("\t\t\t7.添加社团新成员;\n");
printf("\t\t\t8.修改社团成员资料;\n");
printf("\t\t\t9.社团成员退团;\n");
printf("\t\t\t10.显示社团信息;\n");
printf("\t\t\t11.统计社团成员人数;\n");
printf("\t\t\t0.结束;\n");
printf("\t\t\t=======================\n\n");
printf("\t\t\t选择功能:
");
}
main()
{
NClubC;
for(;;)
{
menu();
intse;
scanf("%d",&se);fflush(stdin);
if(se<0||se>11){printf("\n\t\t\t输入有误!
\n");system("pause");system("cls");}
switch(se)
{
case1:
C=Initi(C);
system("pause");
system("cls");
break;
case2:
AddClub(C);
ShowClubInformation(C);
system("pause");
system("cls");
break;
case3:
InsertClub(C);
ShowClubInformation(C);
system("pause");
system("cls");
break;
case4:
ChangeClub(C);
ShowClubInformation(C);
system("pause");
system("cls");
break;
case5:
DelteClub(C);
ShowClubInformation(C);
system("pause");
system("cls");
break;
case6:
AddClubMember(C);
ShowClubInformation(C);
system("pause");
system("cls");
break;
case7:
AddClubNewMember(C);
ShowClubInformation(C);
system("pause");
system("cls");
break;
case8:
ChangeMember(C);
ShowClubInformation(C);
system("pause");
system("cls");
break;
case9:
DelteClubMember(C);
ShowClubInformation(C);
system("pause");
system("cls");
break;
case10:
ShowClubInformation(C);
system("pause");
system("cls");
break;
case11:
ClubMemberNum(C);
system("pause");
system("cls");
break;
case0:
printf("\n\t\t\t感谢使用!
");
exit(0);
break;
}
}
}
五小结
通过本次数据结构课程设计的学习以及自己动手的实践,我获益匪浅。
本次课程设计使我更加扎实地掌握了数据结构方面的知识,在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查,同时在老师同学的帮助下,最终找出了原因所在。
由于时间、个人能力有限,程序仍有很多可以改进的地方。
比如,在程序执行时,必须按照规定的方式输入,为了解决这一问题可以在此程序的基础上设计错误处理机制,使程序的使用更加方便和可靠; 代码可重用率较低,如果使用面向对象的设计方法,可用到继承的方法,使程序更加简洁,可读性也大大增强;主程序界面不够美观,还是简单的控制台界面,可以尝试设计更加美观的界面。
通过本次课程设计,我有很多的体会。
想要编写一个优秀的程序,我们要扎实掌握程序语言,要注重培养实践能力,要培养严谨的态度,不怕出错,培养独立思考、解决问题的能力,提高自己的实际动手能力,同时,要和老师同学多交流,便于解决问题和共同进步。
赠送以下资料
考试知识点技巧大全
一、考试中途应饮葡萄糖水
大脑是记忆的场所,脑中有数亿个神经细胞在不停地进行着繁重的活动,大脑细胞活动需要大量能量。
科学研究证实,虽然大脑的重量只占人体重量的2%-3%,但大脑消耗的能量却占食物所产生的总能量的20%,它的能量来源靠葡萄糖氧化过程产生。
据医学文献记载,一个健康的青少年学生30分钟用脑,血糖浓度在120毫克/100毫升,大脑反应快,记忆力强;90分钟用脑,血糖浓度降至80毫克/100毫升,大脑功能尚正常;连续120分钟用脑,血糖浓度降至60毫克/100毫升,大脑反应迟钝,思维能力较差。
我们中考、高考每一科考试时间都在2小时或2小时以上且用脑强度大,这样可引起低血糖并造成大脑疲劳,从而影响大脑的正常发挥,对考试成绩产生重大影响。
因此建议考生,在用脑60分钟时,开始补饮25%浓度的葡萄糖水100毫升左右,为一个高效果的考试加油。
二、考场记忆“短路”怎么办呢?
对于考生来说,掌握有效的应试技巧比再做题突击更为有效。
1.草稿纸也要逐题顺序写草稿要整洁,草稿纸使用要便于检查。
不要在一大张纸上乱写乱画,东写一