需要高手指点
这是一个学员成绩管理的程序,有这些功能。学员成绩的录入,显示,排序,查询,修改,删除,退出等功能。#include"stdio.h"
#include"stdlib.h"
#include"conio.h"
struct student
{
int no; //学号
char name[20]; //姓名
float score[2]; //两门课的成绩
float avg; //平均成绩
};
struct student input();
void display(struct student[],int); //单个学员信息的录入
void sort(struct student[],int); //显示所有学员信息
int pind(struct student[],int,int); //排序
void puery(struct student[],int); //根据学号查找学员
void ppdate(struct student[],int); //修改学员信息
void pemove(struct student[],int*); //删除信息
void main()
{
struct student stu[20];
int count=0;
char sel='1',flag;
while(sel !='7')
{
system("cls");//清屏函数
printf("---------------------学生信息管理系统-------------------------\n\n");
printf("1.录入\n2.显示\n3.排序\n4.查询\n5.修改\n6.删除\n7.退出\n");
printf("\n请选择:");
sel=getchar();
switch(sel)
{
case '1':
system("cls");
do
{
stu[count]=input();
count++;
printf("\n是否继续(y/n):");
fflush(stdin);
flag=getchar();
}while(flag=='y'||flag=='Y');
break;
case '2':
display(stu,count);
break;
case '3':
sort(stu,count);
break;
case '4':
puery(stu,count);
break;
case '5':
ppdate(stu,count);
break;
case '6':
pemove(stu,&count);
break;
}
}
}
//单个学员信息录入
struct student input()
{
struct student stu;
float sum;
int j;
printf("\n学号:");
scanf("%d",&stu.no);
printf("\n姓名:");
scanf("%d",&stu.name);
printf("\n两门成绩:\n");
sum=0;
for(j=0;j<2;j++)
{
printf("成绩%d:",j+1);
scanf("%f",&stu.score[j]);
sum+=stu.score[j];
}
stu.avg=sum/2.0;
return stu;
}
//显示所有学员的信息
void display(struct student stud[],int count)
{
system("cls");
printf("\n%-8s%-12s%-12s%-12s%s","学号","姓名","成绩一","成绩二","平均成绩");
printf("\n%-8s%-12s%-12s%-12s%s\n","====","====","======","======","=======");
for(int i=0;i<count;i++)
{
printf("%-8d",stud[i].no);
printf("%-12d",stud[i].name);
printf("%-12d",stud[i].score[0]);
printf("%-12d",stud[i].score[1]);
printf("%-12d",stud[i].avg);
printf("\n");
}
printf("\n按任意键返回主采单:");
getch();
}
//排序
void sort(struct student stud[],int count)
{
struct student t;
int i,j;
//冒泡
for(i=0;i<count-1;i++)
{
for(j=count-1;j>i;j--)
{
if(stud[j].avg>stud[j-1].avg)
{
t=stud[j];
stud[j]=stud[j-1];
stud[j-1]=t;
}
}
}
system("cls");
printf("\n排序已完成,请按任意键返回主菜单:");
getch();
}
//根据学号查找学员函数 ,找到返回该学员在数组中的下标,没找到返回-1
int find(struct student stud[],int count,int no)
{
int i;
for(i=0;i<count;i++);
{
if(stud[i].no==no)
return i;
}
return -1;
}
//根据学号查询并显示学员的信息
void fuery(struct student stud[],int count)
{
int dno,i;
system("cls");
printf("\n请输入要查询学员的学号:");
scanf("%d",&dno);
i=find(stud,count,dno);
if(i==1)
{
printf("\n你所要查询的学员你存在!按任意键返回主菜单:");
getch();
return;
}
printf("\n%-8s%-12s%-12s%-12s%s","学号","姓名","成绩一","成绩二","平均成绩");
printf("\n%-8s%-12s%-12s%-12s%s","====","====","=====","=====","=======");
printf("%-8d",stud[i].no);
printf("%-12s",stud[i].name);
printf("%-12.2f",stud[i].score[0]);
printf("%-12.2f",stud[i].score[1]);
printf("%-.2f\n",stud[i].avg);
printf("\n请按任意键返回主菜单:");
getch();
}
//修改学员信息
void update(struct student stud[],int count)
{
int dno,i;
system("cls");
printf("\n请输入要修改学员的学号:");
scanf("%d",&dno);
i=find(stud,count,dno);
if(i==-1)
{
printf("\n你所要修改的学员不存在,按任意键返回主菜单:");
getch();
return;
}
stud[i]=input();
printf("\n修改成功!按任意键返回主菜单:");
getch();
}
//删除学员信息
void remove(struct student stud[],int*count)
{
int dno,i;
system("cls");
printf("\n请输入要删除的学员学号:");
scanf("%d",&dno);
if(i==-1)
{
printf("\n你所要删除的学号不存在!按任意键返回主菜单:");
getch();
return;
}
for(int j=i;j<*count-1;j++)
{
stud[j]=stud[j+1];
}
(*count)--;
printf("\n删除成功!按任意键返回主菜单:");
getch();
}
错误 18 error LNK2019: 无法解析的外部符号 "void __cdecl pemove(struct student * const,int *)" (?pemove@@YAXQAUstudent@@PAH@Z),该符号在函数 _main 中被引用 1003.obj
错误 19 error LNK2019: 无法解析的外部符号 "void __cdecl ppdate(struct student * const,int)" (?ppdate@@YAXQAUstudent@@H@Z),该符号在函数 _main 中被引用 1003.obj
错误 20 error LNK2019: 无法解析的外部符号 "void __cdecl puery(struct student * const,int)" (?puery@@YAXQAUstudent@@H@Z),该符号在函数 _main 中被引用 1003.obj
错误 21 fatal error LNK1120: 3 个无法解析的外部命令 D:\My Documents\Visual Studio 2005\Projects\1001\Debug\1001.exe