| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1376 人关注过本帖
标题:需要高手指点
取消只看楼主 加入收藏
WJbobo
Rank: 1
等 级:新手上路
帖 子:85
专家分:3
注 册:2008-4-10
结帖率:76.92%
收藏
 问题点数:0 回复次数:2 
需要高手指点
这是一个学员成绩管理的程序,有这些功能。学员成绩的录入,显示,排序,查询,修改,删除,退出等功能。
#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
搜索更多相关主题的帖子: include 学员 学号 int 
2008-06-20 14:33
WJbobo
Rank: 1
等 级:新手上路
帖 子:85
专家分:3
注 册:2008-4-10
收藏
得分:0 
伤心啊!我才不会到网上找代码呢?说实话把,这是我们书上的,有几个地方我有点不懂。所以拿上来看看。不是我搞错了,是垃圾书上的错了。
2008-06-21 09:54
WJbobo
Rank: 1
等 级:新手上路
帖 子:85
专家分:3
注 册:2008-4-10
收藏
得分:0 
这是我们的上课的书
书上教的太简单了。每种算法都很简单的过一遍,在说我是业余班,平时还要上班。基础的确不扎实。的努力啊。
2008-06-21 11:35
快速回复:需要高手指点
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025823 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved