
菜鸟做一个学生成绩管理系统,已经把学生信息保存在文本中,如何根据输入学号,查找某一学生的信息。谢谢 20
展开全部
我给你改了两个错误现在可以运行了,不知道还有没有其他逻辑错误,自己进一步修改吧。
第一个,你在排序那个程序里一个for循环不加,这个错误有些幼稚,不像能写出这种程序的人该犯的。
第二个错误,main主函数里if判断语句判等的时候用了赋值号,应该改成==
建议:你要学会调试,这种编译不过调试一下子就可以找到是排序函数的哪句话出错了。调试用F9标记,F5调试F10安步走,F11进入内层函数
#include<iostream>
#include<string>
using namespace std;
struct student //定义一个学生结构体
{
string name;
string sex;
int num;
int math;
int english;
int chinese;
int sum; //个人总分
float pingjun; //个人平均分
};
student stu[3];
int n; //全局变量
void input(student *p, int n) //输入模块
{
int i;
double SUM,PINGJUN;
p=&stu[0];
for(i=0;i<n; i++, p++)
{
cout<<"请依次输入第"<<i+1<<"个学生的姓名,性别,学号,数学分数,英语分数语文分数"<<endl;
cin>>(*p).name;
cin>>(*p).sex;
cin>>(*p).num;
cin>>(*p).math;
cin>>(*p).english;
cin>>(*p).chinese;
(*p).sum=(*p).math+(*p).english+(*p).chinese; //求个人总分
(*p).pingjun=((*p).math+(*p).english+(*p).chinese)/3; //个人平均分
SUM=SUM+(*p).sum; //班级总分
PINGJUN=SUM/3; //班级平均分
} cout<<"班级总分"<<SUM<<endl;
cout<<"班级平均分"<<PINGJUN<<endl;
}
void output(student *p, int n) //输出学生信息
{
for(int i=0;i<n;i++,p++)
{
cout<<"第"<<i+1<<"个学生的信息"<<"\n";
cout<<"姓名"<<p[i].name<<"\n";
cout<<"性别"<<p[i].sex<<"\n";
cout<<"数学分数"<<p[i].math<<"\n";
cout<<"英语分数"<<p[i].english<<"\n";
cout<<"语文分数"<<p[i].chinese<<"\n";
cout<<"个人总分"<<p[i].sum<<"\n";
cout<<"个人平均分"<<p[i].pingjun<<"\n";
}
}
void paixu(student *p, int n) //排序模块
{
int i, j, t;
string g;
for(i=0; i<n-1; i++)
{
for(j=0; j<n-i; j++)
{
if(p[j].sum<p[j+1].sum)
{
g=p[j].name; p[j].name=p[j+1].name; p[j+1].name=g;
g=p[j].sex; p[j].sex=p[j+1].sex; p[j+1].sex=g;
t=p[j].math; p[j].math=p[j+1].math; p[j+1].math=t;
t=p[j].english;p[j].english=p[j+1].english;p[j+1].english=t;
t=p[j].chinese; p[j].chinese=p[j+1].chinese; p[j+1].chinese=t;
t=p[j].sum; p[j].sum=p[j+1].sum; p[j+1].sum=t;
}
}
}
}
void chaozhao(student *p,int n) //查找模块
{
int xh;
while(n==0)
{
cout<<"没有记录,请先输入学生信息"<<endl;
break;
}
if(n!=0)
{
cout<<"输入您要查找的学生学号"<<endl;
cin>>xh; //输入学号
}
if(xh==p[n].num)
{
cout<<"姓名"<<p[n].name<<"\t";
cout<<"性别"<<p[n].sex<<"\t";
cout<<"学号"<<p[n].num<<"\t";
cout<<"数学分数"<<p[n].math<<"\t";
cout<<"英语分数"<<p[n].english<<"\t";
cout<<"语文分数"<<p[n].chinese<<"\t";
cout<<"总分"<<p[n].sum<<"\t";
}
else
cout<<"没有找到您要查找的学生"<<endl;
}
void main() //主函数
{
student *q=&stu[0];
paixu(q,3);
int i;
cout<<"*……………………管理系统……………………*"<<endl;
cout<<"请选择你需要的操作:"<<endl;
cout<<"(1)输入学生信息"<<endl;
cout<<"(2)按学号查找"<<endl;
cout<<"(3)显示所有学生信息"<<endl;
cin>>i;
if(i==1)
input(q,3);
if(i==2)
chaozhao(q,3);
if(i==3)
output(q,3);
}
第一个,你在排序那个程序里一个for循环不加,这个错误有些幼稚,不像能写出这种程序的人该犯的。
第二个错误,main主函数里if判断语句判等的时候用了赋值号,应该改成==
建议:你要学会调试,这种编译不过调试一下子就可以找到是排序函数的哪句话出错了。调试用F9标记,F5调试F10安步走,F11进入内层函数
#include<iostream>
#include<string>
using namespace std;
struct student //定义一个学生结构体
{
string name;
string sex;
int num;
int math;
int english;
int chinese;
int sum; //个人总分
float pingjun; //个人平均分
};
student stu[3];
int n; //全局变量
void input(student *p, int n) //输入模块
{
int i;
double SUM,PINGJUN;
p=&stu[0];
for(i=0;i<n; i++, p++)
{
cout<<"请依次输入第"<<i+1<<"个学生的姓名,性别,学号,数学分数,英语分数语文分数"<<endl;
cin>>(*p).name;
cin>>(*p).sex;
cin>>(*p).num;
cin>>(*p).math;
cin>>(*p).english;
cin>>(*p).chinese;
(*p).sum=(*p).math+(*p).english+(*p).chinese; //求个人总分
(*p).pingjun=((*p).math+(*p).english+(*p).chinese)/3; //个人平均分
SUM=SUM+(*p).sum; //班级总分
PINGJUN=SUM/3; //班级平均分
} cout<<"班级总分"<<SUM<<endl;
cout<<"班级平均分"<<PINGJUN<<endl;
}
void output(student *p, int n) //输出学生信息
{
for(int i=0;i<n;i++,p++)
{
cout<<"第"<<i+1<<"个学生的信息"<<"\n";
cout<<"姓名"<<p[i].name<<"\n";
cout<<"性别"<<p[i].sex<<"\n";
cout<<"数学分数"<<p[i].math<<"\n";
cout<<"英语分数"<<p[i].english<<"\n";
cout<<"语文分数"<<p[i].chinese<<"\n";
cout<<"个人总分"<<p[i].sum<<"\n";
cout<<"个人平均分"<<p[i].pingjun<<"\n";
}
}
void paixu(student *p, int n) //排序模块
{
int i, j, t;
string g;
for(i=0; i<n-1; i++)
{
for(j=0; j<n-i; j++)
{
if(p[j].sum<p[j+1].sum)
{
g=p[j].name; p[j].name=p[j+1].name; p[j+1].name=g;
g=p[j].sex; p[j].sex=p[j+1].sex; p[j+1].sex=g;
t=p[j].math; p[j].math=p[j+1].math; p[j+1].math=t;
t=p[j].english;p[j].english=p[j+1].english;p[j+1].english=t;
t=p[j].chinese; p[j].chinese=p[j+1].chinese; p[j+1].chinese=t;
t=p[j].sum; p[j].sum=p[j+1].sum; p[j+1].sum=t;
}
}
}
}
void chaozhao(student *p,int n) //查找模块
{
int xh;
while(n==0)
{
cout<<"没有记录,请先输入学生信息"<<endl;
break;
}
if(n!=0)
{
cout<<"输入您要查找的学生学号"<<endl;
cin>>xh; //输入学号
}
if(xh==p[n].num)
{
cout<<"姓名"<<p[n].name<<"\t";
cout<<"性别"<<p[n].sex<<"\t";
cout<<"学号"<<p[n].num<<"\t";
cout<<"数学分数"<<p[n].math<<"\t";
cout<<"英语分数"<<p[n].english<<"\t";
cout<<"语文分数"<<p[n].chinese<<"\t";
cout<<"总分"<<p[n].sum<<"\t";
}
else
cout<<"没有找到您要查找的学生"<<endl;
}
void main() //主函数
{
student *q=&stu[0];
paixu(q,3);
int i;
cout<<"*……………………管理系统……………………*"<<endl;
cout<<"请选择你需要的操作:"<<endl;
cout<<"(1)输入学生信息"<<endl;
cout<<"(2)按学号查找"<<endl;
cout<<"(3)显示所有学生信息"<<endl;
cin>>i;
if(i==1)
input(q,3);
if(i==2)
chaozhao(q,3);
if(i==3)
output(q,3);
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询