| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1299 人关注过本帖
标题:学生成绩管理系统第一个函数就卡住了,,大家帮看看
取消只看楼主 加入收藏
鸿飞冥冥
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:48
专家分:124
注 册:2011-8-14
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:5 
学生成绩管理系统第一个函数就卡住了,,大家帮看看
程序代码:
#include<stdio.h>
#define N 50             /***定义有50个学生***/
struct student
{ 
    char num[10];
    char name[20];
    float score[4];
    float aver;
    struct student *next;
}stu[N];
void sr(void)
{
    int j,i=1,q=0;
    char c;
    struct student *p;
    p=stu;
    printf("请输入%d学生的成绩:\n",i);
    while(q==0)
    {
        printf("请输入学号:\n");
        scanf("%s",p->num);
        printf("请输入姓名:\n");
        scanf("%s",p->name);
        printf("请输入四科成绩:\n");
        for(j=0;j<4;j++)scanf("%5.2f",&p->score[j]);
        p++,i++;
        printf("是否继续输入(Y/N)?");
        getchar();
        c=getchar();
        if(c!='N'||c!='n'&&i<=N)q=1;
     }
}
void main()
{
int n;
     do
{     
printf(" 主菜单\n");
printf("======================\n");
printf(" 1.输入学生成绩\n"); 
printf(" 2.按姓名查询学生成绩\n");
printf(" 3.按学号查询学生成绩\n");
printf(" 4.打印输出成绩\n");
printf(" 0.退出系统\n");
printf("======================\n");
printf(" 请选择(0~4):\n");
scanf("%d",&n);  
switch(n)
     {
     case 0:break;
     case 1:sr();break;
     case 2:printf("请输入姓名:\n");break;
     case 3:printf("请输入学号:\n");break;
     case 4:printf("成绩输出为:\n");break;
    default:printf("输入错误,请重新输入\n");break;
     }
}
while(n!=0);
printf("谢谢使用\n");
} 
搜索更多相关主题的帖子: 管理系统 
2011-09-29 14:54
鸿飞冥冥
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:48
专家分:124
注 册:2011-8-14
收藏
得分:0 
刚除了链表别的几个函数都做出来了,,但是输入函数还是不行,,每次输入第一个成绩就跳转,不能正常输入
程序代码:
#include<stdio.h>
#include<string.h>
#define N 50             /***定义有50个学生***/
struct student
{ 
    char num[10];
    char name[20];
    float score[4];
    float aver;
    struct student *next;
}stu[N];
void sr(void)
{
    int j,i=1,q=0;
    char c;
    struct student *p;
    p=stu;
    printf("请输入%d学生的成绩:\n",i);
    while(q==0)
    {
        printf("请输入学号:\n");
        scanf("%s",p->num);
        printf("请输入姓名:\n");
        scanf("%s",p->name);
        printf("请输入四科成绩:\n");
        for(j=0;j<4;j++)scanf("%5.2f",&p->score[j]);
        p++,i++;
        printf("是否继续输入(Y/N)?");
        getchar();
        c=getchar();
        if(c!='N'||c!='n'&&i<=N)q=1;
     }
}
void namecx(void)
{
    int q=0;
    struct student *p;
    char name[20];
    printf("请输入要查询姓名:\n");
    scanf("%s",name);
    for(p=stu;p<p+N;p++)
    {
    if(strcmp(name,p->name)==0)
        printf("%s  %s  %3.2f  %3.2f  %3.2f  %3.2f\n",p->num,p->name,p->score[0],p->score[1],p->score[2],p->score[3]);
          q=1;break;
     }
    if(q==1)printf("查找不到这个姓名!\n");
}
void numcx(void)
{
    int q=0;
    struct student *p;
    char num[10];
    printf("请输入要查询学号:\n");
    scanf("%s",num);
    for(p=stu;p<p+N;p++)
    {
    if(strcmp(num,p->num)==0)
    printf("%s  %s  %3.2f  %3.2f  %3.2f  %3.2f\n",p->num,p->name,p->score[0],p->score[1],p->score[2],p->score[3]);
    q=1;break;
     }
    if(q==1)printf("查找不到这个学号!\n");
}
void aver(struct student *p)
{
    float s=0;
    int i;
    for(i=0;i<4;i++)
    s+=p->score[i];
    p->aver=s/4;
}
void dysc(void)
{
    int i=1;
    struct student *p;
    printf("输出的学号,姓名,第一科成绩,第二科成绩,第三科成绩,第四科成绩,平均分为:\n");
    for(p=stu;p<p+N;p++)
    printf("%s  %s  %3.2f  %3.2f  %3.2f  %3.2f  %3.2f\n",p->num,p->name,p->score[0],p->score[1],p->score[2],p->score[3],aver);
}    
void main()
{
    int n;
     aver(stu);
     do
     {     
          printf(" 主菜单\n");
          printf("======================\n");
          printf(" 1.输入学生成绩\n"); 
          printf(" 2.按姓名查询学生成绩\n");
          printf(" 3.按学号查询学生成绩\n");
          printf(" 4.打印输出成绩\n");
          printf(" 0.退出系统\n");
          printf("======================\n");
          printf(" 请选择(0~4):\n");
          scanf("%d",&n);  
          switch(n)
          {
               case 0:break;
           case 1:sr();break;
               case 2:namecx();break;
               case 3:numcx();break;
           case 4:dysc();break;
              default:printf("输入错误,请重新输入\n");break;
          }
     }
     while(n!=0);
     printf("谢谢使用\n");
} 

Sickcat
2011-09-29 16:33
鸿飞冥冥
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:48
专家分:124
注 册:2011-8-14
收藏
得分:0 
程序代码:
#include<stdio.h>
#include<string.h>
#define N 50             /***定义有50个学生***/
struct student
{ 
    char num[10];
    char name[20];
    float score[4];
    float aver;
    struct student *next;
}stu[N];
void sr(void)
{
    int j,i,q=0;
    char c;
    struct student *p;
    p=stu;
    for(i=0;i<N;i++)
    {
        printf("请输入%d学生的成绩:\n",i+1);
        printf("请输入学号:\n");
        scanf("%s",p->num);
        printf("请输入姓名:\n");
        scanf("%s",p->name);
        printf("请输入四科成绩:\n");
        for(j=0;j<4;j++)scanf("%f",&p->score[j]);
        p++;
        printf("是否继续输入(Y/N)?");
        getchar();
        c=getchar();
        if(c=='N'||c=='n')break;
     }
}
void namecx(void)
{
    int q=0;
    struct student *p;
    char name[20];
    printf("请输入要查询姓名:\n");
    scanf("%s",name);
    for(p=stu;p<p+N;p++)
    {
    if(strcmp(name,p->name)==0)
        printf("%s  %s  %3.2f  %3.2f  %3.2f  %3.2f  %3.2\n",p->num,p->name,p->score[0],p->score[1],p->score[2],p->score[3],p->aver);
          q=1;break;
     }
    if(q!=1)printf("查找不到这个姓名!\n");
}
void numcx(void)
{
    int q=0;
    struct student *p;
    char num[10];
    printf("请输入要查询学号:\n");
    scanf("%s",num);
    for(p=stu;p<p+N;p++)
    {
    if(strcmp(num,p->num)==0)
    printf("%s  %s  %3.2f  %3.2f  %3.2f  %3.2f  %3.2f\n",p->num,p->name,p->score[0],p->score[1],p->score[2],p->score[3],p->aver);
    q=1;break;
     }
    if(q!=1)printf("查找不到这个学号!\n");
}
void aver(struct student *p)
{
    float s=0;
    int i;
    for(i=0;i<4;i++)
    s+=p->score[i];
    p->aver=s/(float)4;
}
void dysc(void)
{
    int i=1;
    struct student *p;
    printf("输出的学号,姓名,第一科成绩,第二科成绩,第三科成绩,第四科成绩,平均分为:\n");
    for(p=stu;p<p+N;p++)
    printf("%s  %s  %3.2f  %3.2f  %3.2f  %3.2f  %3.2f\n",p->num,p->name,p->score[0],p->score[1],p->score[2],p->score[3],p->aver);
}    
void main()
{
    int n;
     do
     {     
          printf(" 主菜单\n");
          printf("======================\n");
          printf(" 1.输入学生成绩\n"); 
          printf(" 2.按姓名查询学生成绩\n");
          printf(" 3.按学号查询学生成绩\n");
          printf(" 4.打印输出成绩\n");
          printf(" 0.退出系统\n");
          printf("======================\n");
          printf(" 请选择(0~4):\n");
          scanf("%d",&n);  
          switch(n)
          {
               case 0:break;
              case 1:sr();aver(stu);break;
               case 2:namecx();break;
               case 3:numcx();break;
              case 4:dysc();break;
              default:printf("输入错误,请重新输入\n");break;
          }
     }
     while(n!=0);
     printf("谢谢使用\n");
} 

我本就水人一个,,现在1-4除了4不能用(输出满屏乱码),,别的都行了,,不过链表没做,排序没做

Sickcat
2011-09-29 18:04
鸿飞冥冥
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:48
专家分:124
注 册:2011-8-14
收藏
得分:0 
回复 12楼 TonyDeng
是我一个字一个字打出来的,不是抄的.结构体里用设个链表只是想尝试下用链表这种方法处理一样的问题,至于那个指针不是在定义结构体的时候,成员大小个数和结构体数组个数都已经给出了吗,,干吗还每用一次都要开辟新空间呢,,望指教
最后补一句:我显然是个激进派的

Sickcat
2011-10-01 08:35
鸿飞冥冥
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:48
专家分:124
注 册:2011-8-14
收藏
得分:0 
程序代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 50             /***定义有50个学生***/
struct student
{ 
    char num[10];
    char name[20];
    float score[4];
    float aver;
}stu[N];
void input(void)
{
    int j,i,q=0;
    char c;
    struct student *p;
    p=stu;
    for(i=0;i<N;i++,p++)
    {
        printf("请输入%d学生的成绩:\n",i+1);
         printf("请输入学号:\n");
        scanf("%s",p->num);
        printf("请输入姓名:\n");
        scanf("%s",p->name);
        for(j=0;j<4;j++)
        {
            printf("请输入第%d科成绩:\n",j+1);
             scanf("%f",&p->score[j]);
        }
        p->aver=aver(p);
        printf("是否继续输入(Y/N)?");
        getchar();
        c=getchar();
        if(c=='N'||c=='n')break;
     }
}
void name_s(struct student *p,char name)
{
    char q=1;
    for(p=stu;p<p+N;p++)
    {
    if(strcmp(name,p->name)==0)
    {    
        printf("%s  %s  %3.2f  %3.2f  %3.2f  %3.2f  %3.2f\n",p->num,p->name,p->score[0],p->score[1],p->score[2],p->score[3],p->aver);
        q=0;
    }
    }
    if(q==1)puts("查找不到这个姓名!\n");
}
void num_s(void)
{
    int q=0;
    struct student *p;
    char num[10];
    printf("请输入要查询学号:\n");
    scanf("%s",num);
    for(p=stu;p<p+N;p++)
    {
    if(strcmp(num,p->num)==0)
    printf("%s  %s  %3.2f  %3.2f  %3.2f  %3.2f  %3.2f\n",p->num,p->name,p->score[0],p->score[1],p->score[2],p->score[3],p->aver);
    q=1;break;
     }
    if(q!=1)printf("查找不到这个学号!\n");
}
float aver(struct student *p)
{
    float s=0.0;
    int i;
    for(i=0;i<4;i++)
    s+=p->score[i];
    return(s/4);
}
void dysc(void)
{
    int i=1;
    struct student *p;
    printf("输出的学号,姓名,第一科成绩,第二科成绩,第三科成绩,第四科成绩,平均分为:\n");
    for(p=stu;p<p+N;p++)
    printf("%s  %s  %3.2f  %3.2f  %3.2f  %3.2f  %3.2f\n",p->num,p->name,p->score[0],p->score[1],p->score[2],p->score[3],p->aver);
}    
void main()
{
    int n;
    char name[20],num[10];
     do
     {     
          printf(" 主菜单\n");
          printf("======================\n");
          printf(" 1.输入学生成绩\n"); 
          printf(" 2.按姓名查询学生成绩\n");
          printf(" 3.按学号查询学生成绩\n");
          printf(" 4.打印输出成绩\n");
          printf(" 0.退出系统\n");
          printf("======================\n");
          printf(" 请选择(0~4):\n");
          scanf("%d",&n);  
          switch(n)
          {
               case 0:break;
               case 1:system("cls");
                          input();
                    break;
               case 2:system("cls");
                      printf("请输入要查询姓名:\n");
                         scanf("%s",name);
                      name_s(stu,name);
                      break;
               case 3:num_s();break;
               case 4:dysc();break;
              default:printf("输入错误,请重新输入\n");break;
          }
     }
     while(n!=0);
     printf("谢谢使用\n");
} 

帮看看那个按姓名查询的函数就是用不了是个神马情况

Sickcat
2011-10-01 08:59
鸿飞冥冥
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:48
专家分:124
注 册:2011-8-14
收藏
得分:0 
总算搞完了,,哈哈,,
程序代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 50             /***定义有50个学生***/
struct student
{ 
    char num[10];
    char name[20];
    float score[4];
    float aver;
}stu[N];
void scan(void)
{
    int j,i,q=0;
    char c;
    struct student *p;
    p=stu;
    for(i=0;i<N;i++,p++)
    {
        printf("请输入%d学生的成绩:\n",i+1);
         printf("请输入学号:\n");
        scanf("%s",p->num);
        printf("请输入姓名:\n");
        scanf("%s",p->name);
        for(j=0;j<4;j++)
        {
            printf("请输入第%d科成绩:\n",j+1);
            scanf("%f",&p->score[j]);
        }
        p->aver=avero(p);
        printf("是否继续输入(Y/N)?");
        getchar();
        c=getchar();
        if(c=='N'||c=='n')break;
     }
}
void name_s(struct student *p,char *name)
{
    int i;
    char q=1;
    p=stu;
    for(i=0;i<N;i++,p++)
    {
    if(strcmp(name,p->name)==0)
    {    
        printf("该生的学号,姓名,第一科成绩,第二科成绩,第三科成绩,第四科成绩,平均分为:\n");
        printf("      %s   %s     %3.2f      %3.2f      %3.2f      %3.2f     %3.2f\n",
            p->num,p->name,p->score[0],p->score[1],p->score[2],p->score[3],p->aver);
        q=0;
    }
    }
    if(q==1)puts("查找不到这个姓名!\n");
}
void num_s(struct student *p,char *num)
{
    int i;
    char q=1;
    p=stu;
    for(i=0;i<N;i++,p++)
    {
    if(strcmp(num,p->num)==0)
    {
        printf("该生的学号,姓名,第一科成绩,第二科成绩,第三科成绩,第四科成绩,平均分为:\n");
        printf("     %s    %s   %3.2f      %3.2f      %3.2f      %3.2f      %3.2f\n",
            p->num,p->name,p->score[0],p->score[1],p->score[2],p->score[3],p->aver);
    q=0;
    }
     }
    if(q==1)puts("查找不到这个学号!\n");
}
float avero(struct student *p)
{
    float s=0.0;
    int i;
    for(i=0;i<4;i++)
    s+=p->score[i];
    return(s/4.0);
}
void input(void)
{
    int i=0;
    struct student *p;
    p=stu;
    printf("No.:学号,姓名,第一科成绩,第二科成绩,第三科成绩,第四科成绩,平均分为:\n");
    for(i=0;i<N;i++,p++)
    {
        if(p->aver==0)break;
        printf("%d  %s   %s   %3.2f      %3.2f       %3.2f     %3.2f      %3.2f\n",i+1,
    p->num,p->name,p->score[0],p->score[1],p->score[2],p->score[3],p->aver);
    }
}    
void main()
{
    int n;
    char name[20],num[10];
     do
     {     
          printf(" 主菜单\n");
          printf("======================\n");
          printf(" 1.输入学生成绩\n"); 
          printf(" 2.按姓名查询学生成绩\n");
          printf(" 3.按学号查询学生成绩\n");
          printf(" 4.打印输出成绩\n");
          printf(" 0.退出系统\n");
          printf("======================\n");
          printf(" 请选择(0~4):\n");
          scanf("%d",&n);  
          switch(n)
          {
               case 0:break;
               case 1:system("cls");
                          scan();
                    break;
               case 2:system("cls");
                      printf("请输入要查询姓名:\n");
                      scanf("%s",name);
                      name_s(stu,name);
                      break;
               case 3:system("cls");
                      printf("请输入要查询学号:\n");
                      scanf("%s",num);
                      num_s(stu,num);
                      break;
               case 4:system("cls");
                      input();
                      break;
              default:printf("输入错误,请重新输入\n");break;
          }
     }
     while(n!=0);
     printf("谢谢使用\n");
} 

Sickcat
2011-10-01 09:53
快速回复:学生成绩管理系统第一个函数就卡住了,,大家帮看看
数据加载中...
 
   



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

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