include
include
include
include
include
define N O
define NUM 1000
define SCORENUM 3
define NAMESIZE 3
struct Student_Info
{ char name[NAMESIZE];
int number;
int score[SCORENUM];
float ave;
} Student [NUM];
Student_Info CreatStudent()
{ Student_Info s;
int Studentlen, namelen,i=0,value=0,flag=1;
for(i=0;i
{ if((Student+i)->name[0]=='\0')
{ Studentlen=i;
break;
}
}
srand(time(0));
while(flag)
{ flag=0;
namelen=rand()%(NAMESIZE-1)+2;
for(i=0;i
{value=rand()%26;
value+=65;
s.name[i]=value;
}
s.name[namelen]='\0';
for(i=0;i
{ if(!strcmp(s.name,Student[i].name))
{flag=1;
}
}
}
flag=1;
while(flag)
{flag=0;
value=rand()&NUM+1;
for(i=0;i
{ if(value==Student[i].number)
{flag=1;
}
}
}
s.number=value;
value=0;
for(i=0;i
{s.score[i]=rand()%100;
value+=s.score[i];
}
s.ave=(float)value/3;
return s;
}
void AddStudent(struct Student_Info s)
{ int i=0;
for (i=0;i
{ if((Student+i)->name[0]=='0')
{ break;
}
}
Student[i]=s;
}
int find (int number)
{ int i=0;
for(i=0;i
{ if((Student+i)->number==number)
{return i;
}
}
return -1;
}
void showAll()
{ int Studentlen,i=0,j=0;
for(i=0;i
{ if((Student+i)->name[0]=='0')
{ Studentlen =i;
break;
}
}
printf("\n共有%d名学生信息\n\n",Studentlen);
for(i=0;i
{ printf("\n***********第%d名学生信息***********\n\n",i+1);
printf("姓名:\t%s\n",(Student+i)->name);
printf("学号:\t%d\n",(Student+i)->number);
for(j=0;j
{ printf("课程%d成绩:\t%d\n",j+1,(Student+i)->score[j]);
}
printf("平均成绩:\t%f\n",(Student+i)->ave);
printf("\n******************************\n\n",i+1);
}
}
void query(int number)
{ int i,j;
i=find(number);
if(i!=-1)
{ printf("\n***********查询学生信息如下:**********\n\n");
printf("姓名:\t%s\n",(Student+i)->name);
printf("学号:\t%d\n",(Student+i)->number);
for(j=0;j
{ printf("课程%d成绩:\t%d\n",j+1,(Student+i)->score[j]);
}
printf("平均成绩:\t%f\n",(Student+i)->ave);
}
else
{printf("\n学号为%d的学生信息不存在\n\n",number);
}
}
void del(int number)
{
int i,j;
i=find(number);
if(i!=-1)
{
for(j=i;j
{(Student+j)=(Student+j+1);
if((Student+j+1)->name[0]=='\0')
{ break;
}
}
printf("\n学号为%d的学生信息已删除\n\n",number);
}
else
{
printf("\n %d \n\n",number);
}
}
void modify(int number)
{
int i,j;
float ave=0;
i=find(number);
if(i!=-1)
{printf("\n输入待修改的学生信息:\n\n");
printf("姓名:\t");
scanf("%s",&((Student+i)->name));
fflush(stdin);
printf(" :\t");
scanf("%d",&((Student+i)->number));
fflush(stdin);
for(j=0;j
{ printf(" %d :\t",j+1);
fflush(stdin);
ave +=(Student+i)->score[j];
}
(Student+j)->ave = ave/SCORENUM;
printf("\n学号为%d的学生信息修改成功\n\n",number);
}
else
{
printf("\n学号为%d的学生信息不存在\n\n",number);
}
}
void main()
{
int i,j,number;
for(i=0;i
{
(Student+i)->name[0]= '\0';
(Student+i)->number = -1;
for(j=0;j
{
(Student+i)->score[j]=-1;
}
(Student+i)->ave =-1;
}
for(i=0;i
{
AddStudent(CreatStudent());
}
showAll();
printf("\n输入需查找的学生学号:");
scanf("%d",&number);
fflush(stdin);
query(number);
printf("\n输入需删除的学生学号:");
scanf("%d",&number);
fflush(stdin);
del(number);
showAll();
printf("\n输入需修改的学生学号:");
scanf("%d",&number);
fflush(stdin);
modify(number);
showAll();
system("pause");
}