今天实训,我的程序老师说有问题,求大神帮一下看是什么问题!
程序有点多是学生成绩管理系统
不是程序有问题
老师问的是这个: 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;
}
}
}








