运动会管理系统源代码
include
#include
#include
struct student /* 定义链表 */
{
long num;
char name[10];
char danwei[10];
int xiangmu;
int chengji;
struct student *next;
};
struct student *creat(struct student *h); /*s 输入函数 */
struct student *findstudent(struct student *h); /* 查找函数 */
struct student *sort(struct student *h); /* 排序函数 */
main()
{
int b,c=1;
struct student *head,*p,*f; /* 定义表头指针 */
head=NULL; /* 创建一个空表 */
printf("\t\t\t**********************\n");
printf("\t\t\t****运动会管理系统****\t\t\n");
printf("\t\t\t**********************\n");
do /* 循环使用系统中的功能 */
{
printf("*************************************************************************\n");
printf("\t\t请输入1或2或3进行功能选择\n");
printf("\t\t输入1---------------------进行输入功能\n");
printf("\t\t输入2---------------------进行查找功能\n");
printf("\t\t输入3---------------------进行排序功能\n");
printf("*************************************************************************\n"); scanf("%d",&b);
switch(b) /* 进入函数 */
{
case 1:head=creat(head);break;
case 2:p=findstudent(head);break;
case 3:f=sort(head);break;
default:printf("输入错误,请从新输入");
}
printf("*************************************************************************\n");
printf("否进行其他功能?\n");
printf("是输入------1,否输入------2:\n");
scanf("%d",&c);
}while(c==1);
}
/* 输入功能 */
struct student *creat(struct student *h)
{
struct student *p1,*p2; /* 定义链表指针 */
p1=p2=(struct student*)malloc(sizeof(struct student)); /* 申请新结点*/
printf("\n-------------------------------------------------------\n");
printf("请依次输入运动员的号码、姓名、单位、项目(run为1,jump为2,swim为3)、成绩\n学号输入0时,结束输入!\n");
printf("\n-------------------------------------------------------\n");
if(p2!=NULL)
printf("请输入号码:");
scanf("%ld",&p2->num); /* 输入结点的值 */
if(p2->num!=0)
{
getchar();
printf("请输入姓名:");
gets(p2->name);
printf("请输入单位:");
scanf("%s",&p2->danwei);
printf("请输入项目 run则输入1 jump则输入2 swim则输入3:");
scanf("%d",&p2->xiangmu);
printf("请输入成绩:");
scanf("%d",&p2->chengji);
p2->next=NULL; /* 新结点指针成员的赋值为空 */
printf("---------------------------------------------------\n");
}
while(p2->num!=0)
{
if(h==NULL)
h=p2; /* 若为空表,接入表头 */
else
p1->next=p2; /* 若为非空表,接入表尾 */
p1=p2;
p2=(struct student*)malloc(sizeof(struct student)); /* 申请下一个新结点 */
if(p2!=NULL)
{
printf("请输入号码:");
scanf("%ld",&p2->num); /* 输入结点的值 */
if(p2->num!=0)
{
getchar();
printf("请输入姓名:");
gets(p2->name);
printf("请输入单位:");
scanf("%s",&p2->danwei);
printf("请输入项目 run则输入1 jump则输入2 swim则输入3:");
scanf("%d",&p2->xiangmu);
printf("请输入成绩:");
scanf("%d",&p2->chengji);
p2->next=NULL; /* 新结点指针成员的赋值为空 */
printf("-----------------------------------------------\n");
}
}
}
return h;
}
/* 查找功能 */
struct student *findstudent(struct student *h)
{
int a;
struct student *q; /* 定义链表指针 */
q=(struct student*)malloc(sizeof(struct student));
q=h; /* 接入表头 */
printf("输入运动项目:run则输入1 jump则输入2 swim则输入3:\n");
scanf("%d",&a);
while(q!=NULL)
{
if(a==1) /* 若项目为run则进行查找输出 */
{
if(q->xiangmu==1)
{
printf("------------------------------------------------\n");
printf("查找结果为:\n");
printf("学生号码\t学生姓名\t学生单位\t学生项目\t学生成绩\t\n");
printf("%ld\t\t%s\t\t%s\t\t%d\t\t%d\t\n",q->num,q->name,q->danwei,q->xiangmu,q->chengji); q=q->next; /* 进入下一结点 */
}
else
q=q->next; /* 进入下一结点 */
}
else if(a==2) /* 若项目为jump则进行查找输出 */
{
if(q->xiangmu==2)
{
printf("------------------------------------------------\n");
printf("查找结果为:\n");
printf("学生号码\t学生姓名\t学生单位\t学生项目\t学生成绩\t\n");
printf("%ld\t\t%s\t\t%s\t\t%d\t\t%d\t\n",q->num,q->name,q->danwei,q->xiangmu,q->chengji); q=q->next; /* 进入下一结点 */
}
else
q=q->next; /* 进入下一结点 */
}
else /* 若项目为swim则进行查找输出 */ {
if(q->xiangmu==3)
{
printf("------------------------------------------------\n");
printf("查找结果为:\n");
printf("学生号码\t学生姓名\t学生单位\t学生项目\t学生成绩\t\n");
printf("%ld\t\t%s\t\t%s\t\t%d\t\t%d\t\n",q->num,q->name,q->danwei,q->xiangmu,q->chengji); q=q->next; /* 进入下一结点 */
}
else
q=q->next; /* 进入下一结点 */ }
}
}
/* 排序功能 */
struct student *sort(struct student *h)
{
int d;
int g1=0,e1=0,i1,j1,temp1,a[60];
int g2=0,e2=0,i2,j2,temp2,b[60];
int g3=0,e3=0,i3,j3,temp3,c[60];
struct student *s; /* 定义链表指针 */
s=h;
printf("按项目排序:\n");
printf("请输入项目,run----输入1,jump----输入2,swim----输入3:\n");
scanf("%d",&d);
printf("-----------------------------------------------------------------\n");
printf("学生排序结果为:\n");
printf("学生号码\t学生姓名\t学生单位\t学生项目\t学生成绩\t\n");
if(d==1) /* 对项目为run的运动员进行排序 */
{
while(s!=NULL) /* 计算e1大小也就是项目为run的运动员的多少 */ {
if(s->xiangmu==1)
{
a[e1]=s->chengji;
e1=e1+1;
s=s->next; /* 进入下一结点 */
}
else
s=s->next; /* 进入下一结点 */
}