WJbobo 发表于 2008-6-20 14:33

需要高手指点

这是一个学员成绩管理的程序,有这些功能。学员成绩的录入,显示,排序,查询,修改,删除,退出等功能。
#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

scl512 发表于 2008-6-20 17:35

网上找的把!!自己写个把!!呵呵!!

StarWing83 发表于 2008-6-20 18:51

自己打字错误,怪谁?
作业不会自己写在网上找,鄙视,找了抄不对,鄙视,抄不对吧还不会自己调试,再鄙视,鄙视鄙视鄙视!!!

sunkaidong 发表于 2008-6-20 18:52

翅膀你怎么那么像女孩?还是你把你号给你女朋友用了[em09]

flyue 发表于 2008-6-20 18:59

pemove打错字了,改为remove
ppdate打错字了,改为update

改到这里,我发现,这个代码好像不是你自己写的吧?应该是在网络上找的。
谁自己写代码会把所有函数都打错呢???

StarWing83 发表于 2008-6-20 19:08

说不定是人家发代码前故意打错了呢~~~
对楼上某人:鄙视鄙视鄙视!!!

flyue 发表于 2008-6-20 19:10

恩,我也是这么想地。的确有人,为了不让下载代码的人不劳而获,故意打错。
结果…………

StarWing83 发表于 2008-6-20 19:13

恩恩,我要学习飞燕,以后放代码的时候加上版权标志,而且故意打错几个字~~~

WJbobo 发表于 2008-6-21 09:54

[em11] 伤心啊!我才不会到网上找代码呢?说实话把,这是我们书上的,有几个地方我有点不懂。所以拿上来看看。不是我搞错了,是垃圾书上的错了。

StarWing83 发表于 2008-6-21 09:59

这么多人推荐经典名著你不看要去看垃圾书,怪谁?

WJbobo 发表于 2008-6-21 11:35

这是我们的上课的书
书上教的太简单了。每种算法都很简单的过一遍,在说我是业余班,平时还要上班。基础的确不扎实。的努力啊。

页: [1]

编程论坛