高校社团管理数据结构与算法课程设计
纯菜鸟 2012-12-17 03:02:53 添加一个头文件,省略号等补充完整,可以直接运行的,会员信息有会员会号、姓名、性别、年龄、年级专业、联系方式
如果你用自己的方法重新写了一个新的也可
另外好多注释写不下了,就没有写,需要的话 留个邮箱或者QQ给我,我传给你
写好发到邮箱919266967@qq.com
多谢大侠了
typedef struct member
{
int ID; // 会员的会号,一个会号唯一确定一个会员
char * name; // 会员姓名,在创建实体时,动态分配内存
int phoneno; // 会员的联系电话
int age; // 会员年龄
// ... 还可以有别的很多数据信息
struct member * next;
} *LinkMember,member;
// 社团的数据类型
typedef struct corporation
{
Linkmember Head; // 存放社团会员链表,L为链表头结点
int membernum; // 社团会员的人数
TypeInfo * Info; // 社团相关信息,TypeInfo由用户来定义
} *LinkCorp,corporation;
// 社团的初始化
Status InitialCorp (LinkCorp &Lcorp)
{
Lcorp = (LinkCorp) malloc (sizeof (corporation));
if (!L) exit(-1);
Lcorp->Head = (LinkMember) malloc (sizeof (member)); // 会员链表的头指针
if (! Lcorp->Head) exit(-1);
Lcorp->Head->next = NULL;
Lcorp->membernum = 0; // 社团人数初始化为0
Lcorp->Info = NULL; // 暂无社团信息
}
//招收新成员
Status RecruitFunc (LinkCorp &Lcorp)
{
p = Lcorp->Head;
while ( p->next != NULL )
p = p->next; // 让q指向会员链表的尾结点
q = (LinkMember) malloc (sizeof (member));
if ( !q ) exit (-1);
q->next = NULL;
printf ("请输入会员会号:");
scanf ("%d",&q->ID);
try
{
r = Lcorp->Head->next;
while ( r != NULL )
{
if ( r->ID == q->ID)
throw "False";
else
r = r->next;
}
} catch (...)
{
printf ("您刚刚输入的ID号,已存在!\n");
free (q);
return;
}
printf ("请输入会员姓名:");
name = getchar ( ); // name为char类型的字符变量
int i;
for (i=0; i < stdin->bsize; i++)
if (*(stdin-> buffer+i) == 0x0A)
break; // 0x0A是当前缓冲区的结束符。这段代码用于动态接受用户在键盘输入的姓名,以方便
分配内存。
q->name = (char *) malloc (sizeof (char) * (i+1));
if ( !q->name ) exit (-1);
memcpy (q->name, stdin->buffer, i?i:1);
*(q->name + i) = '\0';
fflush (stdin); // 清空缓冲区内容
printf ("请输入会员联系电话:");
scanf ("%d",&q->phoneno);
printf ("请输入会员年龄:");
scanf ("%d",&q->age);
... ...
++Lcorp->membernum;
p->next = q;
return OK;
}
// 修改社团信息
Status AmendInfo (LinkCorp &Lcorp)
{
Amend (Lcorp->Info); // Amend函数具体看你的Info存放的是什么信息,并且想修改什么了
... ...
return OK;
}
// 老会员离开社团
Status Deletemember (LinkCorp &Lcorp)
{
r = Lcorp->Head->next;
s = Lcorp->Head;
printf ("请输入离开会员的ID号:");
scanf ("%d",&i);
while ( r != NULL )
{
if ( r->ID == i )
{
s->next = r->next;
free (r);
printf ("删除成功!\n");
return OK;
}
else
{
s = r;
r = r->next;
}
}
if ( r == NULL )
{
printf ("所输入的ID号不存在!\n");
--Lcorp->membernum;
return ERROR;
}
}
// 查询社团情况
Status CheckCorp (LinkCorp Lcorp)
{
Read (Lcorp->Info); // 和Amend一样,具体情况自己编写了
... ...
return OK;
}
// 统计社团成员数
Status TotalMember (LinkCorp Lcorp)
{
return Lcorp->membernum;
}