#include <stdio.h>
#include <stdlio.h>
#include <malloc.h>
#define LEN sizeof(Student)
struct student
{
int num;
char() name[100];
int number[100];
int sum;
struct student *next;
}Student;
int n;
Student *cin(void);
Student *sort_1(Student *head,int);
void sort_2(Student *head);
void print(Student *head);
Student *sort_all(Student *head);
void find(Student *head);
Student *add_new(Student *head);
输入函数
Student *cin()
{
int flag;
Student *head,*p1,*p2;
n=0;
head=(Student *)malloc(LEN);
p2=head;
printf("\n请输入第%d名玩家的账号,帐号为0表示结束输入:",n+1);
scanf("%d",&flag);
while(getchar()()!='\n');
for(;flag;)
{
n++;
p1=(Student *)malloc(LEN);
p1->num=flag;
printf("请输入账号和姓名:",n);
scanf("%s",p1->name);
printf("请输入第%d名玩家的战斗力:",n);
s
p1->sum=p1->score[0]+p1->score[1]+p1->score[2]+p1->score[3];
p2->next=p1;
p2=p1;
printf("\n请输入第%d名玩家的账号,没有此玩家则输入0表示结束:",n+1);
scanf("%d",&flag);
}
p2->next=NULL;
printf("\n\n");
return head;
}
排序函数
Student *sort_all(Student *head)
{
int choose;
for(;;)
{
printf("\n\t\t 玩家战斗力统计排序 \n");
printf("\t\t#\t1.按玩家账号排序\t #\n");
printf("\t\t#\t2.显示当前玩家战斗力\t #\n");
printf("\t\t#\t3.返回上一级菜单\t #\n");
printf("请输入你要执行的操作:");
scanf("%d",&choose);
while(getchar()()!='\n');
switch(choose)
{
case 1:
case 2:print(head);break;
case 3:return head;
default: printf("\n\n您的输入有误!请重新输入:\n\n");break;
}
}
}
删除函数
Student *sort_1(Student *head,int choose)
{
Student *p1,*p2=head->next,*pm,*px;
Student mid;
if (!p2) return head;
for(p1=p2;p1->next!=NULL;p1=p1->next)
{
pm=p1;
for(p2=p1->next;p2!=NULL;p2=p2->next)
switch(choose)
{
case 1:if(pm->num>p2->num) pm=p2;break;
case 2:if(pm->sum<p2->sum) pm=p2;break;
case 3:if(pm->score[0]<p2->score[0]) pm=p2;break;
}
if (pm!=p1)
{
mid=*pm;
*pm=*p1;
*p1=mid;
px=pm->next;
pm->next=p1->next;
p1->next=px;
}
}
printf("\n排序后的战斗力表为:\n");
print(head);
return head;
}
查找函数
void find(Student *head)
{
Student *p;
int choose,fnum;
char() tem[100];
if (n==0) {printf("\n当前系统没有任何玩家数据\n ");return;}
for(;;)
{
printf("\n请输入您要查询玩家的方式:\n\n");
printf("1、按账号查询;2、按姓名查询;0、我不查询了。\n\n");
printf("请选择:");
scanf("%d",&choose);
while(getchar()()!='\n');
if (choose==1)
{
printf("\n请输入你要查询的玩家的帐号,输入0退出学号查询:");
scanf("%d",&fnum);
for(;fnum;)
{
for(p=head->next;p!=NULL&&p->num!=fnum;p=p->next);
if (!p)
{
printf("\n\n找不到你要查询的帐号,请重新输入,输入0表示结束:");
scanf("%d",&fnum);
}
else if (p->num==fnum)
{
printf("\n账号为%d玩家的数据为:\n",p->num);
printf("账号\t姓名\t战斗力\n);
printf("%d\t%s\t %d\n",p->num,
p->name,p->score[0];
printf("\n\n请输入你还要查询的玩家的账号,输入0表示不按学\
号查询了:");
scanf("%d",&fnum);
}
}
}
else if (choose==2)
{
printf("\n请输入你要查询的玩家的账名,输入0退出姓名查询:");
scanf("%s",tem);
for(;strcmp(tem,"0");)
{
for(p=head->next;p!=NULL&&strcmp(p->name,tem);p=p->next);
if (!p)
{
printf("\n\n找不到你要查询的姓名,请重新输入,输入0表\
示结束:");
scanf("%s",tem);
}
else if(!strcmp(p->name,tem))
{
printf("\n姓名为%s玩家的数据为:\n",p->name);
printf("帐号\t姓名\t战斗力\n”);
printf("%d\t%s\t %d\n”);
p->num,p->name,p->score[0];
printf("\n\n请输入你还要查询的玩家的姓名,输入0表\
示不按姓名查询了:");
scanf("%s",tem);
}
}
}
else if (choose==0){printf("\n你选择了不查询!\n");break;}
else {printf("\n你以其他方式选择了不查询!\n");break;}
}
}
插入函数
Student *add_new(Student *head)
{
Student *p;
int flag;
printf("\n\n请输入你要新加入玩家的账号,学号为0表示结束输入:");
scanf("%d",&flag);
while(getchar()()!='\n');
for(;flag;)
{
p=(Student *)malloc(LEN);
p->num=flag;
printf("请输入新加入玩家的姓名:",n);
scanf("%s",p->name);
printf("请输入新加入玩家的战斗力:",n);
scanf("%d",&p->score[0]);
p->sum=p->score[0]+p->score[1]+p->score[2]+p->score[3];
p->next=head->next;
head->next=p;
n++;
printf("\n请输入还要加入玩家的账号,没有此学生则输入0表示结束:");
scanf("%d",&flag);
}
head=sort_1(head,1);
printf("加入后的战斗力表为:\n");
print(head);
return head;
}
输出函数
void print(Student *head)
{
Student *p=head->next;
if (!p) {printf("\n\n此系统目前没有任何玩家数据!\n\n\n");return;}
printf("此系统目前共计玩家%d名:\n",n);
printf("**************************玩英雄联盟统计一览************************\
*****\n");
printf("账号\t姓名\t战斗力 \n");
for(;p;p=p->next)
printf("%d\t%s\t %d\n",
p->num,p->name,
p->score[0]; p->p->score[0];
主函数
int main()
{
Student *head;
int choose,i;
head=(Student *)malloc(LEN);
head->next=NULL;
for(;;)
{
printf("\n\t\t* * * * *玩游戏统计系统 * * * *\n");
printf("\t\t*\t1.玩家数据键盘录入\t *\n");
printf("\t\t*\t2.玩家数据统计排序\t *\n");
printf("\t\t*\t3.查询玩家数据\t\t *\n");
printf("\t\t*\t4.插入玩家数据\t\t *\n");
printf("\t\t*\t5.删除玩家数据\t\t *\n");
printf("\t\t*\t6.显示当前战斗力表\t *\n");
printf("\t\t*\t0.退出统计系统\t *\n");
printf("\n请输入你要执行的操作:");
scanf("%d",&choose);
while(getchar()!='\n');
switch(choose)
{
case 1:printf("\n\t\t\t\t****注意****");
printf("\n\n 此选项将会建立新的玩家数据系统 ,原来的数据将\
不再存在,你确信要删除原来的数据并建立新的数据系统么?\n\n");
printf("1、建立新的数据系统;0、放弃建立新的数据系统。\n\n");
printf("请选择:");
scanf("%d",&i);
if (i==1) {head=cin();print(head);break;}
else if (i==0)
{
printf("\n你选择了放弃建立新的数据系统!\n");
break;
}
else {
printf("\n你做出别的选择,当作放弃建立!\n");
break;
}
case 2:head=sort_all(head);break;
case 3:find(head);break;
case 4:head=add_new(head);
case 5:del(head);break;
case 6:print(head);break;
case 0:system("pause");return 0;
default: printf("\n\n您的输入有误!请重新输入:\n\n");break;
}
}
#include <stdlio.h>
#include <malloc.h>
#define LEN sizeof(Student)
struct student
{
int num;
char() name[100];
int number[100];
int sum;
struct student *next;
}Student;
int n;
Student *cin(void);
Student *sort_1(Student *head,int);
void sort_2(Student *head);
void print(Student *head);
Student *sort_all(Student *head);
void find(Student *head);
Student *add_new(Student *head);
输入函数
Student *cin()
{
int flag;
Student *head,*p1,*p2;
n=0;
head=(Student *)malloc(LEN);
p2=head;
printf("\n请输入第%d名玩家的账号,帐号为0表示结束输入:",n+1);
scanf("%d",&flag);
while(getchar()()!='\n');
for(;flag;)
{
n++;
p1=(Student *)malloc(LEN);
p1->num=flag;
printf("请输入账号和姓名:",n);
scanf("%s",p1->name);
printf("请输入第%d名玩家的战斗力:",n);
s
p1->sum=p1->score[0]+p1->score[1]+p1->score[2]+p1->score[3];
p2->next=p1;
p2=p1;
printf("\n请输入第%d名玩家的账号,没有此玩家则输入0表示结束:",n+1);
scanf("%d",&flag);
}
p2->next=NULL;
printf("\n\n");
return head;
}
排序函数
Student *sort_all(Student *head)
{
int choose;
for(;;)
{
printf("\n\t\t 玩家战斗力统计排序 \n");
printf("\t\t#\t1.按玩家账号排序\t #\n");
printf("\t\t#\t2.显示当前玩家战斗力\t #\n");
printf("\t\t#\t3.返回上一级菜单\t #\n");
printf("请输入你要执行的操作:");
scanf("%d",&choose);
while(getchar()()!='\n');
switch(choose)
{
case 1:
case 2:print(head);break;
case 3:return head;
default: printf("\n\n您的输入有误!请重新输入:\n\n");break;
}
}
}
删除函数
Student *sort_1(Student *head,int choose)
{
Student *p1,*p2=head->next,*pm,*px;
Student mid;
if (!p2) return head;
for(p1=p2;p1->next!=NULL;p1=p1->next)
{
pm=p1;
for(p2=p1->next;p2!=NULL;p2=p2->next)
switch(choose)
{
case 1:if(pm->num>p2->num) pm=p2;break;
case 2:if(pm->sum<p2->sum) pm=p2;break;
case 3:if(pm->score[0]<p2->score[0]) pm=p2;break;
}
if (pm!=p1)
{
mid=*pm;
*pm=*p1;
*p1=mid;
px=pm->next;
pm->next=p1->next;
p1->next=px;
}
}
printf("\n排序后的战斗力表为:\n");
print(head);
return head;
}
查找函数
void find(Student *head)
{
Student *p;
int choose,fnum;
char() tem[100];
if (n==0) {printf("\n当前系统没有任何玩家数据\n ");return;}
for(;;)
{
printf("\n请输入您要查询玩家的方式:\n\n");
printf("1、按账号查询;2、按姓名查询;0、我不查询了。\n\n");
printf("请选择:");
scanf("%d",&choose);
while(getchar()()!='\n');
if (choose==1)
{
printf("\n请输入你要查询的玩家的帐号,输入0退出学号查询:");
scanf("%d",&fnum);
for(;fnum;)
{
for(p=head->next;p!=NULL&&p->num!=fnum;p=p->next);
if (!p)
{
printf("\n\n找不到你要查询的帐号,请重新输入,输入0表示结束:");
scanf("%d",&fnum);
}
else if (p->num==fnum)
{
printf("\n账号为%d玩家的数据为:\n",p->num);
printf("账号\t姓名\t战斗力\n);
printf("%d\t%s\t %d\n",p->num,
p->name,p->score[0];
printf("\n\n请输入你还要查询的玩家的账号,输入0表示不按学\
号查询了:");
scanf("%d",&fnum);
}
}
}
else if (choose==2)
{
printf("\n请输入你要查询的玩家的账名,输入0退出姓名查询:");
scanf("%s",tem);
for(;strcmp(tem,"0");)
{
for(p=head->next;p!=NULL&&strcmp(p->name,tem);p=p->next);
if (!p)
{
printf("\n\n找不到你要查询的姓名,请重新输入,输入0表\
示结束:");
scanf("%s",tem);
}
else if(!strcmp(p->name,tem))
{
printf("\n姓名为%s玩家的数据为:\n",p->name);
printf("帐号\t姓名\t战斗力\n”);
printf("%d\t%s\t %d\n”);
p->num,p->name,p->score[0];
printf("\n\n请输入你还要查询的玩家的姓名,输入0表\
示不按姓名查询了:");
scanf("%s",tem);
}
}
}
else if (choose==0){printf("\n你选择了不查询!\n");break;}
else {printf("\n你以其他方式选择了不查询!\n");break;}
}
}
插入函数
Student *add_new(Student *head)
{
Student *p;
int flag;
printf("\n\n请输入你要新加入玩家的账号,学号为0表示结束输入:");
scanf("%d",&flag);
while(getchar()()!='\n');
for(;flag;)
{
p=(Student *)malloc(LEN);
p->num=flag;
printf("请输入新加入玩家的姓名:",n);
scanf("%s",p->name);
printf("请输入新加入玩家的战斗力:",n);
scanf("%d",&p->score[0]);
p->sum=p->score[0]+p->score[1]+p->score[2]+p->score[3];
p->next=head->next;
head->next=p;
n++;
printf("\n请输入还要加入玩家的账号,没有此学生则输入0表示结束:");
scanf("%d",&flag);
}
head=sort_1(head,1);
printf("加入后的战斗力表为:\n");
print(head);
return head;
}
输出函数
void print(Student *head)
{
Student *p=head->next;
if (!p) {printf("\n\n此系统目前没有任何玩家数据!\n\n\n");return;}
printf("此系统目前共计玩家%d名:\n",n);
printf("**************************玩英雄联盟统计一览************************\
*****\n");
printf("账号\t姓名\t战斗力 \n");
for(;p;p=p->next)
printf("%d\t%s\t %d\n",
p->num,p->name,
p->score[0]; p->p->score[0];
主函数
int main()
{
Student *head;
int choose,i;
head=(Student *)malloc(LEN);
head->next=NULL;
for(;;)
{
printf("\n\t\t* * * * *玩游戏统计系统 * * * *\n");
printf("\t\t*\t1.玩家数据键盘录入\t *\n");
printf("\t\t*\t2.玩家数据统计排序\t *\n");
printf("\t\t*\t3.查询玩家数据\t\t *\n");
printf("\t\t*\t4.插入玩家数据\t\t *\n");
printf("\t\t*\t5.删除玩家数据\t\t *\n");
printf("\t\t*\t6.显示当前战斗力表\t *\n");
printf("\t\t*\t0.退出统计系统\t *\n");
printf("\n请输入你要执行的操作:");
scanf("%d",&choose);
while(getchar()!='\n');
switch(choose)
{
case 1:printf("\n\t\t\t\t****注意****");
printf("\n\n 此选项将会建立新的玩家数据系统 ,原来的数据将\
不再存在,你确信要删除原来的数据并建立新的数据系统么?\n\n");
printf("1、建立新的数据系统;0、放弃建立新的数据系统。\n\n");
printf("请选择:");
scanf("%d",&i);
if (i==1) {head=cin();print(head);break;}
else if (i==0)
{
printf("\n你选择了放弃建立新的数据系统!\n");
break;
}
else {
printf("\n你做出别的选择,当作放弃建立!\n");
break;
}
case 2:head=sort_all(head);break;
case 3:find(head);break;
case 4:head=add_new(head);
case 5:del(head);break;
case 6:print(head);break;
case 0:system("pause");return 0;
default: printf("\n\n您的输入有误!请重新输入:\n\n");break;
}
}