| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1054 人关注过本帖
标题:今天实训,我的程序老师说有问题,求大神帮一下看是什么问题!
只看楼主 加入收藏
ym0se0
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2015-1-8
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:18 
今天实训,我的程序老师说有问题,求大神帮一下看是什么问题!
程序有点多
是学生成绩管理系统
不是程序有问题
老师问的是这个: void stu_input(); 这个输入函数,是在子函数中输入的,主函数的什么接收到这写输入的信息的。
我给老师说是从子函数中输入,结构体接收
然后在主函数用调用输出函数(从结构体中输出) 老师说不对 求大神帮分析啊 感激不尽

程序代码:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct student
{
    int class_;  //班级
    char name[20];  //姓名
    char number[20];   //学号
    float cj1; 
    float cj2;
    float cj3;
    float cj4;
    float cj5;

    float Average; //平均成绩
};
struct student students[1000];//声明学生数组及学生数量\ struct是 结构体的关键字
                              // student是 定义的结构体对象 生成struct student类型的students数组,该数组元素有N个
int num=0;

    void stu_input(); //输入函数
    void student_display(); //显示学生信息
    void stu_ave_chengji(); //平均排序
    void stu_change(); //改信息
    void stu_del();//删除学校信息
    void  stu_find();//姓名查找
    void stu_find_num(); //学号查找
    void student_xianshi(); //显示单独学生信息
    int student_searchByInde(); //返回下标 下同 学号返回 借鉴
    int student_xingmingfanhui(); //姓名返回


void main()
{
int choice; // 选择函数
  while(1) 
{
    printf(" ~~~~~~~~~~~~~                   ★                  ~~~~~~~~~~~~~~~~");
printf("                                                                               \n");


 printf ("\n|-----------------------------学生成绩管理系统-----------------------| \n");

 printf("|                                                                    |\n");

 printf("|  ①     输入学生信息成绩        |           ┏    班               | \n");

 printf("|  ②     计算平均成绩并排序      |             作  级               |  \n");

 printf("|  ③     输出学生成绩            |             者  ¨               |  \n");

 printf("|  ④     修改学生信息成绩        |             ¨  网               |  \n");

 printf("|  ⑤     增加学生信息成绩        |             郭  页               | \n");

 printf("|  ⑥     删除学生信息成绩        |             笑  一               | \n");

 printf("|  ⑦     按姓名查询学生信息      |             延  班               |     \n");

 printf("|  ⑧     按学号查询学生信息      |                    ┛            |    \n");

 printf("|  ⑨         退出                             学号:621413510113    |               \n");
  printf("----------------------------------------------------------------------- \n"); 

 printf("                                                                         \n");
printf(" ~~~~~~~~~~~~~                   ★                  ~~~~~~~~~~~~~~~~\n");

printf("                       \n    \t请选择序号1-9:");



 scanf ("%d",&choice);  //输入键盘序号
 if (choice>10) printf("ERROR:            请输入正确序号\n");// 解释错误的输入
 getchar(); //是从键盘读取一个字符放入缓冲区 然后在取出来 
    
   switch(choice) //选择
   {
   case 1: stu_input();
           break; //输入学生成绩函数

   case 2:student_display();
          stu_ave_chengji(); 
          break; //计算平均成绩排序

   case 3:student_display();
          break; //输出成绩
 
   case 4:stu_change();
         
          break; //修改信息(姓名学号查找修改)

   case 5:stu_input();
          break; //添加信息

   case 6:stu_del();
       break; //删除信息

   case 7:stu_find();
       break; //姓名查询

  case 8:stu_find_num();
       break; //学号查询

   case 9:exit(0);
       break; //退出

}
}
   



}


//学号返回到[]下标 *****
  
int student_xuehaofanhui(char id[]) // 已声明过  
  
{  
  
     int i;  
  
     for (i=0;i<num;i++)  
  
     {  
  
         if (strcmp(students[i].number,id)==0)  //比较两个字符串是否相同 
  
         {  
  
              return i;  
  
         }  
  
     }  
  
     return -1;   // 结束
  
}    

//姓名返回[]下标
  
int student_xingmingfanhui(char name2[])  
  
{  
  
     int i;  
  
     for (i=0;i<num;i++)  
  
     {  
  
         if (strcmp(students[i].name,name2)==0)  
  
         {  
  
              return i;  
  
         }  
  
     }  
  
     return -1;  
  
}  
  


void student_xianshi(int index) //单独学生信息的显示
{  
  
     printf("%9s%10s%10s%8s%8s%8s%8s%8s%10s\n","班级","学号","姓名","成绩","成绩","成绩","成绩","成绩","平均成绩");  
  
     printf("-------------------------------------------------------------\n");  
  
printf("%10d%10s%10s%8.2f%8.2f%8.2f%8.2f%8.2f%10.2f\n",students[index].class_,students[index].number,students[index].name,  
  
              students[index].cj1,students[index].cj2,students[index].cj3,students[index].cj4,students[index].cj5,students[index].Average);  
  
  
}  
  

// 平均成绩  课本262页-263页 几乎原样.
float Avg(struct student stu) //有一个函数Avg(),此函数的返回值是一个float类型的值,接受一个struct student类型的数组做为参数。
{
    return (stu.cj1+stu.cj2+stu.cj3+stu.cj4+stu.cj5)/5;
}

// 输入学生成绩函数
void  stu_input()
{ 
    while(1)
    {
        printf("请输入增补学生的班级:");
        scanf("%d",&students[num].class_);
        getchar(); //同前解释
        printf("请输入增补的新学号:");
        scanf("%s",&students[num].number);
        getchar();
        printf("请输入新学生姓名:");
        scanf("%s",&students[num].name);
        getchar();
        printf("输入新成绩1:");
        scanf("%f",&students[num].cj1);
        getchar();
        printf("输入新成绩2:");
        scanf("%f",&students[num].cj2);
        getchar();
        printf("输入新成绩3:");
        scanf("%f",&students[num].cj3);
        getchar();
        printf("输入新成绩4:");
        scanf("%f",&students[num].cj4);
        getchar();
        printf("输入新成绩5:");
        scanf("%f",&students[num].cj5);
        getchar();

         students[num].Average=Avg(students[num]);
        num++;

        printf("继续添加学生信息? 1/0");
        if (getchar()=='0') // 如果0 循环结束 下同
        {
            break;
        }
    }
}



 
void stu_ave_chengji()    // 平均值排序 
  
{  
     int i,j;  
  
     struct student tmp;   
  
     for (i=0;i<num;i++)  
  
     {  
  
         for (j=1;j<num-i;j++)  
  
         {  
  
              if (students[j-1].Average<students[j].Average)  
  
              {  
  
                   tmp=students[j-1];  
  
                   students[j-1]=students[j];  
  
                   students[j]=tmp;  
  
              }  
  
         }  
  
     }  
  
}  
  


void student_display()  // 显示成绩
  
{  
  
     int i;  
  
     printf("%10s%10s%10s%8s%8s%8s%8s%8s%10s\n","班级","学号","姓名","成绩","成绩","成绩","成绩","成绩","平均成绩");  
  
     printf("-----------------------------------------------------------\n");  
  
     for (i=0;i<num;i++)  
  
     {  
  
         printf("%8d%10s%10s%8.2f%8.2f%8.2f%8.2f%8.2f%10.2f\n",students[i].class_,students[i].number,students[i].name,  
  
              students[i].cj1,students[i].cj2,students[i].cj3,students[i].cj4,students[i].cj5,students[i].Average);  
  
     }  
  
}  



//修改信息
 
void stu_change()  
  
{  
  
     
  
     while(1)   // [[[ 借鉴 ]]]
  
     {  
  
         char id[20];  //学号 
  
         int index;  
  
         printf("请输入要修改的学生的学号:");  
  
         scanf("%s",&id);  
  
         getchar();  
  
         index=student_xuehaofanhui(id);  
  
         if (index==-1)  
  
         {  
  
              printf("学生不存在!\n");  
  
         }  
  
         else  
  
         {  
  
              printf("你要修改的学生信息为:\n");  
  
              student_xianshi(index);  
  
              printf("-- 请输入新值--\n");  
  
              printf("请输入班级:");  
  
              scanf("%d",&students[index].class_);  
  
              getchar(); 
  
              printf("请输入学号:");  
  
              scanf("%s",&students[index].number);  
  
              getchar();  
  
  
              printf("请输入姓名:");  
  
              scanf("%s",&students[index].name);  
  
              getchar();  
  
  
              printf("请输入成绩:");  
  
              scanf("%f",&students[index].cj1);  
  
              getchar();  
  
  
              printf("请输入成绩:");  
  
              scanf("%f",&students[index].cj2);  
  
              getchar();  
  
  
              printf("请输入成绩:");  
  
              scanf("%f",&students[index].cj3);  
  
              getchar(); 
              
              printf("请输入成绩:");  
  
              scanf("%f",&students[index].cj4);  
  
              getchar();  
              printf("请输入成绩:");  
  
              scanf("%f",&students[index].cj5);  
  
              getchar();  
  
  
              students[index].Average=Avg(students[index]);  
  
         }  
  
         printf("是否继续修改学生信息?(1/0)");  
  
         if (getchar()=='0')  
  
         {  
  
              break;  
  
         }  
  
     }  
  
}  




/*删除学生信息*/  
  
void stu_del()  
  
{  
  
     int i;  
  
     while(1)  
  
     {  
  
         char number2[20];  
  
         int index;  
  
         printf("请输入要删除的学生的学号:");  
  
         scanf("%s",&number2);  
  
         getchar();  
  
         index=student_xuehaofanhui(number2);  
  
         if (index==-1)  
  
         {  
  
              printf("学生不存在!\n");  
  
         }  
  
         else  
  
         {  
  
              printf("你要删除的学生信息为:\n");  
  
               student_xianshi(index);  
  
              printf("是否真的要删除?(y/n)");  
  
              if (getchar()=='y')  
  
              {  
  
                   for (i=index;i<num-1;i++)  
  
                   {  
  
                       students[i]=students[i+1];//把后边的对象都向前移动  
  
                   }  
  
                   num--;  
  
              }  
  
              getchar();  
  
         }  
  
         printf("是否继续删除?(1/0)");  
  
         if (getchar()=='0')  
  
         {  
  
              break;  
  
         }  
  
     }  
  
}  
  

void stu_find()  // 查询 姓名
 
{  
  
     while(1)  
  
     {  
  
         char name[20];  
  
         int index;  
  
         printf("请输入要查询的学生的姓名:");  
  
         scanf("%s",&name);  
  
         getchar();  
  
         index=student_xingmingfanhui(name);  
  
         if (index==-1)  
  
         {  
  
              printf("学生不存在!\n");  
  
         }  
  
         else  
  
         {  
  
              printf("你要查询的学生信息为:\n");  
  
              student_xianshi(index);  
  
         }  
  
         printf("是否继续?(1/0)");  
  
         if (getchar()=='0')  
  
         {  
  
              break;  
  
         }  
  
     }  
  
}  

void stu_find_num() //按学号查询

{  
  
     while(1)  
  
     {  
  
         char id[20];  
  
         int index;  
  
         printf("请输入要查询的学生的姓名:");  
  
         scanf("%s",&id);  
  
         getchar();  

         index=student_xuehaofanhui(id);  
  
         if (index==-1)  
  
         {  
  
              printf("学生不存在!\n");  
  
         }  
  
         else  
  
         {  
  
              printf("你要查询的学生信息为:\n");  
  
              student_xianshi(index);  
  
         }  
  
         printf("是否继续?(1/0)");  
  
         if (getchar()=='0')  
  
         {  
  
              break;  
  
         }  
  
     }  
  
}  
搜索更多相关主题的帖子: 管理系统 结构体 实训 信息 
2015-01-08 13:11
ym0se0
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2015-1-8
收藏
得分:0 
真心不懂啊。。看了好久了。。。
2015-01-08 13:15
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:15 
对不对 不是某个人说了算的  需要测试  自己没有测试吗   难道光凭肉眼就能判断一个程序是否合格

DO IT YOURSELF !
2015-01-08 13:15
ym0se0
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2015-1-8
收藏
得分:0 
回复 3楼 wp231957
这就是我自己编的。。肯定测试了。。
问题是老师问我 子函数 输入的值 是 怎么让主函数保存的
我就是这样写的。不知道怎么回答啊
2015-01-08 13:20
ym0se0
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2015-1-8
收藏
得分:0 
回复 3楼 wp231957
而且我是自己编出来的
我排版比较整齐
老师看了看直接问我是不是在百度下载的代码
我说不是,老师都不信

然后就问我这个个问题 问我 子函数(输入函数input这个)输入的学校信息,是怎么让主函数保存的
2015-01-08 13:22
ym0se0
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2015-1-8
收藏
得分:0 
回复 3楼 wp231957
大神 我真不知道我解释的是哪错了
您看 我这个输入的子函数的值 是怎么让主函数main保存的
2015-01-08 13:24
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
我没有太仔细的看你的代码

正常来讲,我们所谓的录入系统 大致都是录到数组里去了,所以如果单独有一个输入模块的话,需要把数组的地址(指针)传进去

不过你的程序 貌似使用的全局结构体变量 貌似也可以  需要用大量的测试案例去检验你的程序  直至没有bug 为止

DO IT YOURSELF !
2015-01-08 13:24
ym0se0
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2015-1-8
收藏
得分:0 
回复 7楼 wp231957
我就是先声明全局变量
定义了结构体
然后在子函数中调用结构体 把要输入的值输入进去
然后在主函数中调用输出函数和结构体
然后输出的话也是可以显示键盘输入的值

但是。。老师的问题是
我的程序 子函数的值 是 怎么让 主函数保存下来的
我不知道怎么回答啊。。下午就要让我讲解程序了。。看了俩小时了我。。。求大神分析一下~感激不尽啊!
2015-01-08 13:27
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
回复 8楼 ym0se0
真晕,你自己写的程序 要别人来讲解,连我都怀疑你的代码的出处了

神马叫全局变量,在同一个代码段里  任何一个函数都可以操作、使用、更新的变量

DO IT YOURSELF !
2015-01-08 13:29
ym0se0
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2015-1-8
收藏
得分:0 
回复 9楼 wp231957
不是- -我是大一新生。。
以前喜欢E语言
现在学C语言
很多不懂啊
我就那样写出来。。老师非问我是怎么让主函数保存。。我是真的不知道。。
我那个应该是声明函数- -我貌似说错了。。
我想请教你
我那个 输入函数的值是怎么让主函数保存的。。
我真的是不知道怎么说啊。。。我给老师说是存到结构体里然后主函数调用出来。。。
2015-01-08 13:33
快速回复:今天实训,我的程序老师说有问题,求大神帮一下看是什么问题!
数据加载中...
 
   



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

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