您现在的位置是: 首页 > 教育政策 教育政策
高考成绩_高考成绩管理系统c
tamoadmin 2024-07-20 人已围观
简介1.关于C++ 编写一个简单的学生成绩管理系统.通过本系统能实现对学生成绩记录的显示,查询,修改添加和删除2.C语言编程—学生成绩查询系统!紧急!!!3.c语言课程设计之学生成绩管理系统设计的程序4.C语言学生管理系统5.c语言编写查询学生成绩管理程序。6.C++简单编程题目 求大神教育 学生成绩管理系统这是我刚改过的代码,还添加了求平均分的功能#include<iostream.h>
1.关于C++ 编写一个简单的学生成绩管理系统.通过本系统能实现对学生成绩记录的显示,查询,修改添加和删除
2.C语言编程—学生成绩查询系统!紧急!!!
3.c语言课程设计之学生成绩管理系统设计的程序
4.C语言学生管理系统
5.c语言编写查询学生成绩管理程序。
6.C++简单编程题目 求大神教育 学生成绩管理系统
这是我刚改过的代码,还添加了求平均分的功能
#include<iostream.h>
#include<string.h>
#include<fstream.h>
class stu
{
char name[20];
int ba;
double math,number,chinese,english,erage,sum;
public:
stu()
{
}
stu(char n[20],int ban,double nu,double ma,double chin,double eng)
{
strcpy(name,n);
ba=ban;
number=nu;
math=ma;
chinese=chin;
english=eng;
}
double getsum()
{
sum=chinese+english+math;
return sum;
}
double geter()
{
erage=getsum()/3;
return erage;
}
friend void main();
};
void main()
{
cout<<"(0)数据录入 (1)增加人员"<<endl;
cout<<"(2)删除人员 (3)修改数据"<<endl;
cout<<"(4)按学号查询 (5)按姓名查询"<<endl;
cout<<"(6)输出所有学生的数据 (7)按总分查询排名"<<endl;
cout<<"(8)按语文查询排名 (9)按数学查询排名"<<endl;
cout<<"(y)按英语查询排名 "<<endl;
cout<<"选择相关操作请输入相对的括号里的阿拉伯数字或字母!"<<endl;
char p;char w;
stu *s[50];
ofstream *file[50];
int i=0;
int j=0;
bool flag2=0;
do
{
cin>>p;
if((p>='0'&&p<='9'))
flag2=1;
else
cout<<"指令错误!请重新输入:"<<endl;
}while(flag2==0);
do{
switch(p)
{
case '0':
{
char c;
char name[20];int ba ;double number, math,chinese,english;
do{
cout<<"请输入姓名"<<endl;
cin>>name;
cout<<"请输入班级:"<<endl;
cin>>ba;
cout<<"请输入您要增加的学生的学号:"<<endl;
cin>>number;
cout<<"请输入数学成绩:"<<endl;
cin>>math;
cout<<"请输入语文成绩:"<<endl;
cin>>chinese;
cout<<"请输入外语成绩:"<<endl;
cin>>english;
file[j]=new ofstream("d:\\document",ios::ate);
*file[j]<<"姓名"<<name<<"班级"<<ba<<"学号"<<number<<"数学成绩"<<math<<"语文成绩"<<chinese<<"外语成绩"<<english<<endl;
j++;
s[i]=new stu(name,ba,number, math, chinese, english);
i++;
cout<<"数据录入成功,想继续录入吗(y/n)"<<endl;
cin>>c;
do
{
if(c!='y'&&c!='n')
{
cout<<"指令错误!请重新输入!"<<endl;
cin>>c;
}
else
flag2=1;
}while(flag2==0);
}while(c=='y');
break;
}
case '1':
{
char name[20];int ba;double number,math,chinese,english;
char c;
do
{
cout<<"请输入您要增加的学生的姓名:"<<endl;
cin>>name;
cout<<"请输入要增加的学生的班级:"<<endl;
cin>>ba;
cout<<"请输入您要增加的学生的学号:"<<endl;
cin>>number;
cout<<"请输入数学成绩:"<<endl;
cin>>math;
cout<<"请输入语文成绩:"<<endl;
cin>>chinese;
cout<<"请输入外语成绩:"<<endl;
cin>>english;
file[j]=new ofstream("d:\\document",ios::ate);
*file[j]<<"姓名"<<name<<"班级"<<ba<<"学号"<<number<<"数学成绩"<<math<<"语文成绩"<<chinese<<"外语成绩"<<english<<endl;
j++;
s[i]=new stu(name, ba,number,math, chinese, english);
i++;
cout<<"数据录入成功,想继续录入吗(y/n)"<<endl;
cin>>c;
if(c!='y'&&c!='n')
{
cout<<"指令错误!请重新输入!"<<endl;
cin>>c;
}
}while(c=='y');
break;
}
case '2':
{
char name[20];bool flag3=0;char c;
do{
cout<<"请输入您要删除的学生姓名:"<<endl;
cin>>name;
for(int h=0;h<i;h++)
{
if(strcmp(name,s[h]->name)==0)
{
flag3=1;
i--;
do{
s[h]=s[h+1];
h++;
}while(h<=i);
}
}
if(flag3==0)
cout<<"您要求删除的对象本来就不存在!请检查输入的正确性!";
cout<<"要继续删除吗?(y/n)"<<endl;
cin>>c;
if(c!='y'&&c!='n')
{
cout<<"指令错误!请重新输入!"<<endl;
cin>>c;
}
}while(c=='y');
break;
}
case '3':
{
char name[20];double mat,chin,eng;flag2=0;
char c;
do
{
cout<<"请输入您要修改的学生的姓名:"<<endl;
cin>>name;
for(int h=0;h<i;h++)
{
if(strcmp(name,s[h]->name)==0)
{
flag2=1;
cout<<"请输入新的数学成绩:"<<endl;
cin>>mat;
cout<<"请输入新的语文成绩:"<<endl;
cin>>chin;
cout<<"请输入新的外语成绩:"<<endl;
cin>>eng;
s[h]->chinese=chin;
s[h]->math=mat;
s[h]->english=eng;
cout<<"数据修改成功!";
}
}
if(flag2==0)
{
cout<<"您要修改的学生本来就不存在!请检查重新输入!"<<endl;
}
cout<<"想继续修改吗(y/n)"<<endl;
cin>>c;
if(c!='y'&&c!='n')
{
cout<<"指令错误!请重新输入!"<<endl;
cin>>c;
}
}while(c=='y');
break;
}
case '4':
{
double t;char c;
do
{
int flag1=0;
cout<<"请输入你要查询学生的学号"<<endl;
cin>>t;
for(int q=0;q<i;q++)
{
if(s[q]->number==t)
{
flag1=1;
cout<<"您要查询的学生是:"<<(*s[q]).name
<<"数学成绩为:"<<s[q]->math
<<"语文成绩为:"<<s[q]->chinese
<<"英语成绩为:"<<s[q]->english
<<"总分为:"<<s[q]->getsum()
<<endl;
}
}
if(flag1==0)
cout<<"对不起!您要查询的学生不存在!"<<endl;
cout<<"您想继续查询吗?(y/n)"<<endl;
cin>>c;
if(c!='y'&&c!='n')
{
cout<<"指令错误!请重新输入!"<<endl;
cin>>c;
}
}
while(c=='y');
break;
}
case '5':
{
char n[20];int j=0;char c;
do{
int flag=0;
cout<<"请输入你要查询的学生姓名"<<endl;
cin>>n;
for(int j=0;j<i;j++)
{
if(strcmp(n,(*s[j]).name)==0)
{
flag=1;
cout<<"您要查询的学生是:"<<(*s[j]).name
<<endl;
cout<<(*s[j]).name<<"的总成绩成绩是"<<(*s[j]).getsum()
<<"班级:"<<" "<<s[j]->ba
<<"语文:"<<" "<<s[j]->chinese
<<"数学:"<<" "<<s[j]->math
<<"外语:"<<" "<<s[j]->english
<<"平均成绩是:"<<(*s[j]).geter()
<<endl;
}
}
if(flag==0)
cout<<"对不起!您要查询的学生不存在!"<<endl;
cout<<"您想继续查询吗?(y/n)"<<endl;
cin>>c;
if(c!='y'&&c!='n')
{
cout<<"指令错误!请重新输入!"<<endl;
cin>>c;
}
}
while(c=='y');
break;
}
case '6':
{
cout<<"本系统所有学生数据如下:"<<endl;
if(i==0)
cout<<"管理系统中没有录入数据或者数据已经被删除!"<<endl;
for(int k=0;k<i;k++)
{
cout<<k+1<<" "<<"姓名:"<<" "<<s[k]->name
<<"班级"<<s[k]->ba
<<"学号"<<s[k]->number
<<"语文:"<<" "<<s[k]->chinese<<"数学:"
<<" "<<s[k]->math
<<"外语:"<<" "<<s[k]->english
<<"总分:"<<" "<<(*s[k]).getsum()
<<"平均分:"<<" "<<(*s[k]).geter()
<<endl;
}
break;
}
case '7':
{
int t;stu b;
cout<<"本系统所有学生总分排名如下:"<<endl;
for(int x=0;x<i-1;x++)
{
t=x;
for(int y=x+1;y<i;y++)
{
if((s[t]->getsum())<(s[y]->getsum()))
t=y;
if(t!=x)
{
b=*s[x];
*s[x]=*s[t];
*s[t]=b;
}
}
}
if(i==0)
cout<<"管理系统中没有录入数据或者数据已经被删除!";
double o1,o2;
for(int k=0;k<i;k++)
{
cout<<k+1<<" "<<"姓名:"<<" "<<s[k]->name
<<"班级"<<s[k]->ba
<<"学号"<<s[k]->number
<<"语文:"<<" "<<s[k]->chinese
<<"数学:"<<" "<<s[k]->math
<<"外语:"<<" "<<s[k]->english
<<"总分:"<<" "<<s[k]->getsum()
<<"平均分:"<<" "<<s[k]->geter()
<<endl;
o1=s[k]->sum;
o2=s[0]->sum;
}
cout<<"总分最高分"<<o2<<endl
<<"总分最低分"<<o1<<endl
<<endl;
break;
}
case '8':
{
int t;stu b;
cout<<"本系统所有学生语文排名如下:"<<endl;
for(int x=0;x<i-1;x++)
{
t=x;
for(int y=x+1;y<i;y++)
{
if((s[t]->chinese)<(s[y]->chinese))
t=y;
if(t!=x)
{
b=*s[t];
*s[t]=*s[x];
*s[x]=b;
}
}
}
if(i==0)
cout<<"管理系统中没有录入数据或者数据已经被删除!";
double o1 ,o2;
for(int k=0;k<i;k++)
{
cout<<k+1<<" "<<"姓名:"<<" "<<s[k]->name
<<"班级"<<s[k]->ba
<<"学号"<<s[k]->number
<<"语文:"<<" "<<s[k]->chinese
<<"数学:"<<" "<<s[k]->math
<<"外语:"<<" "<<s[k]->english
<<"总分:"<<" "<<s[k]->getsum()
<<"平均分:"<<" "<<s[k]->geter()
<<endl;
o1=s[k]->chinese;
o2=s[0]->chinese;
}
int v1=0,v2=0;double v3;
for(v2=0;v2<=i-1;v2++)
{
if(s[v2]->english>=60)
v1++;
}
v3=(v1*100)/v2;
cout<<"语文最高分"<<o2<<endl
<<"语文最低分"<<o1<<endl
<<"语文及格率"<<v3<<"%"
<<endl;
break;
}
case '9':
{
int t;stu b;
cout<<"本系统所有学生数学排名如下:"<<endl;
for(int x=0;x<i-1;x++)
{
t=x;
for(int y=x+1;y<i;y++)
{
if((s[t]->math)<(s[y]->math))
t=y;
if(t!=x)
{
b=*s[t];
*s[t]=*s[x];
*s[x]=b;
}
}
}
if(i==0)
cout<<"管理系统中没有录入数据或者数据已经被删除!";
double o1,o2;
for(int k=0;k<i;k++)
{
cout<<k+1<<" "<<"姓名:"<<" "<<s[k]->name
<<"班级"<<s[k]->ba
<<"学号"<<s[k]->number
<<"语文:"<<" "<<s[k]->chinese
<<"数学:"<<" "<<s[k]->math
<<"外语:"<<" "<<s[k]->english
<<"总分:"<<" "<<s[k]->getsum()
<<"平均分:"<<" "<<s[k]->geter()
<<endl;
o1=s[k]->math;
o2=s[0]->math;
}
int v1=0,v2=0;double v3;
for(v2=0;v2<=i-1;v2++)
{
if(s[v2]->english>=60)
v1++;
}
v3=(v1*100)/v2;
cout<<"数学最高分"<<o2<<endl
<<"数学最低分"<<o1<<endl
<<"数学及格率"<<v3<<"%"
<<endl;
break;
}
case 'y':
{
int t;stu b;
cout<<"本系统所有学生英语排名如下:"<<endl;
for(int x=0;x<i-1;x++)
{
t=x;
for(int y=x+1;y<i;y++)
{
if((s[t]->english)<(s[y]->english))
t=y;
if(t!=x)
{
b=*s[t];
*s[t]=*s[x];
*s[x]=b;
}
}
}
if(i==0)
cout<<"管理系统中没有录入数据或者数据已经被删除!";
double o1,o2;
for(int k=0;k<i;k++)
{
cout<<k+1<<" "<<"姓名:"<<" "<<s[k]->name
<<"班级"<<s[k]->ba
<<"学号"<<s[k]->number
<< "语文:"<<" "<<s[k]->chinese
<<"数学:"<<" "<<s[k]->math
<<"外语:"<<" "<<s[k]->english
<<"总分:"<<" "<<s[k]->getsum()
<<"平均分:"<<" "<<s[k]->geter()
<<endl;
o1=s[k]->english;
o2=s[0]->english;
}
int v1=0,v2=0;double v3;
for(v2=0;v2<=i-1;v2++)
{
if(s[v2]->english>=60)
v1++;
}
v3=(v1*100)/v2;
cout<<"英语最高分"<<o2<<endl
<<"英语最低分"<<o1<<endl
<<"英语及格率"<<v3<<"%"
<<endl;
}
break;
}
cout<<"您想继续进行其他操作吗?(y/n)"<<endl;
bool flag4=0;
do
{
cin>>w;
if(w!='y'&&w!='n')
cout<<"指令错误!请重新输入!"<<endl;
else
flag4=1;
}while(flag4==0);
if(w=='y')
cout<<" 请输入操作代码: "<<endl;
cout<<"0 录入 1 增加人员 2 删除人员"<<endl;
cout<<"3 修改数据 4 按学号查询 5 按姓名查询"<<endl;
cout<<"6 显示所有成员数据 7 按总分排名 8 按语文排名"<<endl;
cout<<"9 按数学排名 y按英语排名"<<endl;
cin>>p;
}while(w=='y');
}
关于C++ 编写一个简单的学生成绩管理系统.通过本系统能实现对学生成绩记录的显示,查询,修改添加和删除
呵呵,刚好我们有一个c++大型作业,学生成绩管理系统,就把我的代码帖给你,可以运行。
#include<iostream.h>
#include<fstream.h>
#include<stdlib.h>
#include<string.h>
#include<stdio.h>
class?Stu//构建学生类
{
public:
friend?void?Input(Stu?stud[])?; friend?void?Statistic(Stu?stud[]); friend?void?Lookup(Stu?stud[])?; friend?void?Modify(Stu?stud[])?; friend?void?Delete(Stu?stud[])?; friend?void?Output(Stu?stud[])?; friend?void?Sort(Stu?stud[])?; friend?void?Insert(Stu?stud[])?; friend?void?Write(Stu?stud[],int?n);friend?int?Read(Stu?stud[]);
private:
char?class_0[20]; int?num; char?name[8]; float?elec; float?c_program; float?media; float?english; float?math; float?sport; float?polity; float?erage; int?order;}stud[100];
void?Write(Stu?stud[],int?n)?//向文件中写入数据
{
fstream?myFile; myFile.open("student.dat",ios::out|ios::binary); if(!myFile) { cout<<"student.dat?can't?open!"<<endl; abort(); } int?count=n; myFile<<count<<endl<<endl; for(int?i=0;i<=count;i++) { myFile<<stud[i].class_0<<"?"<<stud[i].num<<"?"<<stud[i].name<<"?"<<stud[i].elec<<"?"<<stud[i].c_program<<"?"<<stud[i].media<<"?"<<stud[i].english<<"?"<<stud[i].math<<"?"<<stud[i].sport<<"?"<<stud[i].polity<<"?"<<stud[i].erage<<endl;
} myFile.close();}
int?Read(Stu?stud[])?//从文件中读数据
{
fstream?myFile; myFile.open("student.dat",ios::in|ios::binary);if(!myFile)
{ cout<<"student.dat?can't?open!"<<endl; abort(); }int?count;
myFile.seekg(0);
myFile>>count;for(int?i=0;i<=count;i++)
{
myFile>>stud[i].class_0>>stud[i].num>>stud[i].name>>stud[i].elec>>stud[i].c_program>>stud[i].media>>stud[i].english>>stud[i].math>>stud[i].sport>>stud[i].polity>>stud[i].erage;
}
myFile.close();
return?count?;
}
void?Input(Stu?stud[])?//---------------输入学生成绩
{
system("cls");?/*运行前清屏*/ int?i=0; int?flag; char?sign; cout<<endl<<"====>>?请输入学生成绩?<<===="<<endl; while(sign!='n'&&sign!='N')?/*判断*/? {? cout<<"?班级:";?/*交互输入*/? cin>>stud[i].class_0;?loop:
cout<<"?学号:";? cin>>stud[i].num; int?c=0; while(c<i) {c++;
if(stud[i].num==stud[i-c].num)
{
cout<<"?你输入的学号已经存在!请重新输入。"<<endl;
goto?loop;
}?
} cout<<"?姓名:?";? cin>>stud[i].name;? do{flag=0;
cout<<"?模拟电路:";?cin>>stud[i].elec;?
if(stud[i].elec>100?||stud[i].elec<1)?
cout<<"对不起,请输入1-100之间的数字!!\n";?
else?
flag=1;
}while(flag==0);?do{?
flag=0; cout<<"?C++程序设计成绩:";? cin>>stud[i].c_program;?if(stud[i].c_program>100?||stud[i].c_program<1)?
cout<<"对不起,请输入1-100之间的数字!!\n";?
else?
flag=1;
}while(flag==0);?do{?
flag=0;
cout<<"?软件工程成绩:";?
cin>>stud[i].media;?
if(stud[i].media>100?||stud[i].media<1)?
cout<<"对不起,请输入1-100之间的数字!!\n";?
else?
flag=1;
}while(flag==0);?do{?
flag=0;
cout<<"?大学英语成绩:";?
cin>>stud[i].english;?
if(stud[i].english>100?||stud[i].english<1)?
cout<<"对不起,请输入1-100之间的数字!!\n";?
else?
flag=1;
}while(flag==0);?do{?
flag=0;
cout<<"?大学物理成绩:";?
cin>>stud[i].math;if(stud[i].math>100?||stud[i].math<1)?
cout<<"对不起,请输入1-100之间的数字!!\n";?
else?
flag=1;
}while(flag==0);?do{?
flag=0;
cout<<"?大学体育成绩:";?
cin>>stud[i].sport;?if(stud[i].sport>100?||stud[i].sport<1)?
cout<<"对不起,请输入1-100之间的数字!!\n";?
else?
flag=1;
}while(flag==0);?do{?
flag=0;
cout<<"?民族理论:";? cin>>stud[i].polity;?if(stud[i].polity>100?||stud[i].polity<1)?
cout<<"对不起,请输入1-100之间的数字!!\n";?
else?
flag=1;
}while(flag==0);? stud[i].erage=(stud[i].elec+stud[i].c_program+stud[i].media+stud[i].english+stud[i].math+stud[i].sport+stud[i].polity)/7;? cout<<"?平均分为:"<<stud[i].erage<<endl;?cout<<"====>提示:是否继续写入学生成绩?(Y/N)";?
cin>>sign;?/*输入判断*/? i++;? }? Write(stud,i);}
void?Statistic(Stu?stud[])?//---------------统计学生数据
{
system("cls");?/*运行前清屏*/
int?n=Read(stud);
cout<<endl<<"====>>?输出学生统计数据?<<===="<<endl;cout<<"班级"<<"\t"<<"学号"<<"\t"<<"?姓名"<<"\t"<<"?平均分"<<endl;
for(int?i=0;i<n;i++) cout<<stud[i].class_0<<"\t"<<stud[i].num<<"\t"<<stud[i].name<<"\t"<<stud[i].erage<<endl;system("pause");?
}
void?Lookup(Stu?stud[])?//---------------查找学生成绩?
{?
system("cls");?/*运行前清屏*/int?n=Read(stud);
int?s;? int?i=0; cout<<endl<<"====>>?查找学生成绩?<<===="<<endl; cout<<"请输入需要查找学生的学号:"<<endl;? cin>>s;? while((stud[i].num-s)!=0&&i<n)?i++;?/*查找判断*/? if(i==n)? {? cout<<"=====>提示:对不起,无法找到该学生的信息!"<<endl;?/*输入失败信息*/? }? else { cout<<"---------------------------"<<endl;? cout<<"班级:"<<stud[i].class_0<<endl;?/*输出该学生信息*/? cout<<"学号:"<<stud[i].num<<endl;? cout<<"姓名:"<<stud[i].name<<endl;? cout<<"模拟电路:"<<stud[i].elec<<endl;? cout<<"C++程序设计:"<<stud[i].c_program<<endl;? cout<<"软件工程:"<<stud[i].media<<endl;? cout<<"大学英语:"<<stud[i].english<<endl;? cout<<"大学物理:"<<stud[i].math<<endl;? cout<<"大学体育:"<<stud[i].sport<<endl;? cout<<"民族理论:"<<stud[i].polity<<endl;? cout<<"平均分:"<<stud[i].erage<<endl; }}
void?Modify(Stu?stud[])//---------------修改学生成绩
{?
system("cls");?/*运行前清屏*/int?n=Read(stud);
int?s;? int?i=0; cout<<endl<<"====>>?修改学生成绩?<<===="<<endl; cout<<"请输入需要修改成绩学生的学号:"<<endl;? cin>>s;? while((stud[i].num-s)!=0&&i<n)?i++;?/*查找判断*/? if(i==n)? {? cout<<"=====>提示:对不起,无该学生的成绩……"<<endl;?/*输入失败信息*/ }? else { cout<<"----------该学生的信息----------"<<endl;?/*格式头*/? cout<<"班级"<<"\t"<<"学号"<<"\t"<<"姓名"<<"\t"<<"电子"<<"\t"<<"c++"<<"\t"<<"?多媒体"<<"\t"<<"英语"<<"\t"<<"数学"<<"\t"<<"体育"<<"\t"<<"政治"<<"\t"<<"平均分"<<endl; cout<<"---------------------------------"<<endl;? cout<<stud[i].class_0<<"\t"<<stud[i].num<<"\t"<<stud[i].name<<"\t"<<stud[i].elec<<"\t"<<stud[i].c_program<<"\t"<<stud[i].media<<"\t"<<stud[i].english<<"\t"<<stud[i].math<<"\t"<<stud[i].sport<<"\t"<<stud[i].polity<<"\t"<<stud[i].erage<<endl; cout<<"请重新输入该学生的信息"<<endl; cout<<"班级:"<<endl;?/*交互输入*/? cin>>stud[i].class_0;? cout<<"学号:"<<endl;? cin>>stud[i].num;? cout<<"姓名:"<<endl;? cin>>stud[i].name;? cout<<"模拟电路成绩:"<<endl;? cin>>stud[i].elec; cout<<"C++程序设计成绩:"<<endl;? cin>>stud[i].c_program;? cout<<"软件工程成绩:"<<endl;? cin>>stud[i].media;? cout<<"大学英语成绩:"<<endl;? cin>>stud[i].english;? cout<<"大学物理成绩:"<<endl;? cin>>stud[i].math; cout<<"大学体育成绩:"<<endl;? cin>>stud[i].sport;? cout<<"民族理论成绩:"<<endl;? cin>>stud[i].polity;? stud[i].erage=(stud[i].elec+stud[i].c_program+stud[i].media+stud[i].english+stud[i].math+stud[i].sport+stud[i].polity)/7;? cout<<"平均分为:"<<stud[i].erage<<endl; char?c; cout<<"是否保存数据?(y/n)"<<endl; cin>>c; if(c!='n'&&c!='N') Write(stud,n); }}
void?Delete(Stu?stud[])?//---------------按学号查找,删除学生信息?
{
system("cls");?/*运行前清屏*/? int?n=Read(stud); int?s;? int?i=0,j; cout<<endl<<"====>>?删除学生成绩?<<===="<<endl; cout<<"请输入需要删除学生的学号:"<<endl;?/*交互式问寻*/? cin>>s;? while((stud[i].num-s)!=0&&i<n)?i++;?/*查找判断*/? if(i==n)? {? cout<<"====>提示:对不起,无法找到该学生……"<<endl;?/*返回失败信息*/? }? else { for(j=i;j<n-1;j++)?/*删除操作*/? {?strcpy(stud[j].class_0,stud[j+1].class_0);?
stud[j].num=stud[j+1].num;?
strcpy(stud[j].name,stud[j+1].name);?
stud[j].elec=stud[j+1].elec;?
stud[j].c_program=stud[j+1].c_program;?
stud[j].media=stud[j+1].media;?
stud[j].english=stud[j+1].english;?
stud[j].math=stud[j+1].math;?
stud[j].sport=stud[j+1].sport;?
stud[j].polity=stud[j+1].polity;
stud[j].erage=stud[j+1].erage;
} cout<<"====>提示:已成功删除!"<<endl;?/*返回成功信息*/ }? Write(stud,n-1);}?
void?Insert(Stu?stud[])?//---------------增加学生成绩?
{?
system("cls");?/*运行前清屏*/ int?n=Read(stud); char?s; cout<<endl<<"====>>?增加学生成绩<<===="<<endl; while(s!='n'&&s!='N') { cout<<"班级:"<<endl;?/*交互输入*/?cin>>stud[n].class_0;?
cout<<"学号:";?
cin>>stud[n].num;?
cout<<"姓名:";?
cin>>stud[n].name;?
cout<<"模拟电路成绩:";? cin>>stud[n].elec;? cout<<"C++程序设计成绩:";? cin>>stud[n].c_program;? cout<<"软件工程成绩:";? cin>>stud[n].media;? cout<<"大学英语成绩:";? cin>>stud[n].english;? cout<<"大学物理成绩:";? cin>>stud[n].math;? cout<<"大学体育成绩:";? cin>>stud[n].sport;? cout<<"民族理论成绩:";? cin>>stud[n].polity;? stud[n].erage=(stud[n].elec+stud[n].c_program+stud[n].media+stud[n].english+?stud[n].math+stud[n].sport+stud[n].polity)/7;? cout<<"平均分"<<stud[n].erage; n++;? cout<<"=====>提示:插入成功!"<<endl;?/*返回成功信息*/ cout<<"是否继续输入(y/n)"<<endl; cin>>s; } Write(stud,n);?}
void?Sort(Stu?stud[])?//---------------按平均分对学生成绩记录项进行降序排序?
{
system("cls");?/*运行前清屏*/? int?i,j,k;? float?s;? char?t[20]; cout<<endl<<"====>>?降序排序成绩?<<===="<<endl; int?n=Read(stud); for(i=0;i<n-1;i++)?/*冒泡法排序*/? for(j=0;j<n-1-i;j++)?if(stud[j].erage<stud[j+1].erage)?
{?
strcpy(t,stud[j+1].class_0);?
strcpy(stud[j+1].class_0,stud[j].class_0);?
strcpy(stud[j].class_0,t);?
k=stud[j+1].num;?
stud[j+1].num=stud[j].num;?
stud[j].num=k;?
strcpy(t,stud[j+1].name);?
strcpy(stud[j+1].name,stud[j].name);?
strcpy(stud[j].name,t);?
s=stud[j+1].elec;?
stud[j+1].elec=stud[j].elec;?
stud[j].elec=s;?
s=stud[j+1].c_program;?
stud[j+1].c_program=stud[j].c_program;?
stud[j].c_program=s;?
s=stud[j+1].media;?
stud[j+1].media=stud[j].media;?
stud[j].media=s;?
s=stud[j+1].english;?
stud[j+1].english=stud[j].english;?
stud[j].english=s;?
s=stud[j+1].math;?
stud[j+1].math=stud[j].math;?
stud[j].math=s;?
s=stud[j+1].sport;?
stud[j+1].sport=stud[j].sport;?
stud[j].sport=s;?
s=stud[j+1].polity;?
stud[j+1].polity=stud[j].polity;?
stud[j].polity=s;?
s=stud[j+1].erage;?
stud[j+1].erage=stud[j].erage;?
stud[j].erage=s;?
}?
cout<<"----------------------------------------------------"<<endl;?/*格式头*/? cout<<"班级"<<"\t"<<"学号"<<"\t"<<"姓名"<<"\t"<<"电子"<<"\t"<<"C++"<<"\t"<<"多媒体"<<"\t"<<"英语"<<"\t"<<"数学"<<"\t"<<"体育"<<"\t"<<"政治"<<"\t"<<"平均分"<<"\t"<<"名次"<<endl;? cout<<"----------------------------------------------------"<<endl;?for(i=0;i<n;i++)?/*循环输入*/?
{?stud[i].order=i+1;
cout<<stud[i].class_0<<"\t"<<stud[i].num<<"\t"<<stud[i].name<<"\t"<<stud[i].elec<<"\t"<<stud[i].c_program<<"\t"<<stud[i].media<<"\t?"<<stud[i].english<<"?\t"<<?stud[i].math<<"\t"<<stud[i].sport<<"\t?"<<stud[i].polity<<"\t"<<stud[i].erage<<"\t"<<stud[i].order<<endl;?}?
Write(stud,n);
}
void?Output(Stu?stud[])?//---------------显示全部学生成绩?
{?
system("cls");?/*运行前清屏*/
int?n=Read(stud); cout<<endl<<"====>>?显示全部学生成绩?<<===="<<endl; if(!stud) cout<<"没有记录";? else{
cout<<"----------------------------------------------------"<<endl;?/*格式头*/? cout<<"班级"<<"\t"<<"学号"<<"\t"<<"姓名"<<"\t"<<"电子"<<"\t"<<"c++"<<"\t"<<"多媒体"<<"\t"<<"英语"<<"\t"<<"数学"<<"\t"<<"体育"<<"\t"<<"政治"<<"\t"<<"平均分"<<endl; cout<<"------------------------------------------------"<<endl;? for(int?i=0;i<n;i++)?/*循环输入*/? {? cout<<stud[i].class_0<<"\t?"<<stud[i].num<<"\t?"<<stud[i].name<<"\t?"<<stud[i].elec<<"?\t"<<stud[i].c_program<<"\t?"<<stud[i].media<<"\t?"<<stud[i].english<<"\t?"<<?stud[i].math<<"?\t"<<stud[i].sport<<"\t"<<stud[i].polity<<"\t"<<stud[i].erage<<endl;? }?cout<<"--------------------------------------------------------"<<endl;
}?}
int?menu()?/*菜单函数*/?
{
char?c;?
do? {?system("cls");?/*运行前清屏*/?
cout<<"?-----------------<<欢迎您使用学生成绩管理系统--------------\n"<<endl;?
cout<<"?*******************************************\n\n"<<endl;/*菜单选择*/?
cout<<"1、输入学生成绩"<<endl;? cout<<"2、显示统计数据"<<endl;? cout<<"3、查找学生成绩"<<endl;? cout<<"4、修改学生成绩"<<endl;? cout<<"5、删除学生成绩"<<endl;? cout<<"6、插入学生成绩"<<endl;? cout<<"7、按平均分降序排列"<<endl;? cout<<"8、显示全部学生成绩"<<endl;? cout<<"0、退出本系统"<<endl<<endl;? cout<<"*********************************************"<<endl;? cout<<"请你选择操作(0-8):"<<endl;? c=getchar();?/*读入选择*/? }? while(c<'0'||c>'8');? return(c-'0');?/*返回选择*/?}?
void?main()?/*主函数*/?
{?
for(;;)? {? switch(menu())?/*选择判断*/? {? case?1:?Input(stud);/*输入学生成绩*/
break;?
case?2:?Statistic(stud);?/*输出学生统计数据*/?
break;
case?3:Lookup(stud);?/*查找学生成绩*/
cout<<"\t\t\t";?
system("pause");?
break;?
case?4:?Modify(stud);?/*修改学生成绩*/
cout<<"\t\t\t";?
system("pause");?
break;?
case?5:?Delete(stud);?/*按学号查找,删除学生信息*/?
cout<<"\t\t\t";?
system("pause");?
break;?
case?6:?Insert(stud);/*增加学生成绩*/?
cout<<"\t\t\t";?
system("pause");?
break;?
case?7:?Sort(stud);?/*按平均分对成绩记录项进行降序排序*/?
cout<<"\t\t\t";?
system("pause");?
break;?
case?8:?Output(stud);?/*显示全部学生成绩*/
cout<<"\t\t\t";?
system("pause");?
break;?
case?0:?cout<<endl<<"?================================<<感谢您使用学生成绩管理系统>>===============================\n"<<endl;?/*结束程序*/?
cout<<"\t\t\t";?
system("pause");?
exit(0);?
}? }?}
C语言编程—学生成绩查询系统!紧急!!!
#include <iostream>
#include<fstream>
using namespace std;
const int N=5
class student
{
char n_name[10];
char n_numble[5];
char n_[3];
float score[4];//score[0]英语成绩,score[1]数学成绩,score[2]语文成绩,score[3]平均分
public:
student();
student(char name[],char numble[],char [],float a,float b,float c);
student(student &s);
void input();//输入学生信息:姓名,学号,性别,英语,数学,语文
float pj();//获取平均分
void stu_delete(student stu[]);//删除
void stu_find(student stu[]);
void dispaly();//显示学生信息:姓名,学号,性别,英语,数学,语文,平均分
};
student::student()
{
strcpy(n_numble,"000");
strcpy(n_name,"noname");
strcpy(n_,"male");
score[0]=88;
score[1]=99;
score[2]=95;
score[3]=94;
}
student::student(char name[],char numble[],char [],float a,float b,float c)
{
strcpy(n_name,name);
strcpy(n_numble,numble);
strcpy(n_,);
score[0]=a;
score[1]=b;
score[2]=c;
score[3]=(score[0]+score[1]+score[2])/3.0;
}
student::student(student &s)
{
strcpy(n_name,s.n_name);
strcpy(n_numble,s.n_numble);
strcpy(n_,s.n_);
score[0]=s.score[0];
score[1]=s.score[1];
score[2]=s.score[2];
score[3]=(score[0]+score[1]+score[2])/3.0;
}
void student::input()
{
cout<<"输入学生信息:"<<endl;
cout<<"请依次输入姓名,学号,性别,英语,数学,语文"<<endl;
cin>>n_name>>n_numble>>n_>>score[0]>>score[1]>>score[2];
score[3]=(score[0]+score[1]+score[2])/3.0;
}
float student::pj()
{
return score[3];
}
void student::stu_delete(student stu[])
{
student t;
int i,k,j;
char d_numble[5];
cout<<"请输入要删除的学生学号:";
cin>>d_numble;
for(i=0;i<N+1;i++)
{
j=i;
k=strcmp(stu[i].n_numble,d_numble);
if(k==0&&i!=N)
{
for(;j<N;j++)
stu[j]=stu[j+1];
}
if(k==0&&i==N)
{
strcpy(stu[N].n_numble,"0000");
strcpy(stu[N].n_name,"noname");
strcpy(stu[N].n_,"男");
stu[N].score[0]=0;
stu[N].score[1]=0;
stu[N].score[2]=0;
stu[N].score[3]=0;
}
}
}
void student::stu_find(student stu[])
{
int i,k;
char d_numble[5];
cout<<"请输入要查询学生的学号:";
cin>>d_numble;
for(i=0;i<N+1;i++)
{
k=strcmp(stu[i].n_numble,d_numble);
if(k==0)
{
stu[i].dispaly();
}
}
}
void student::dispaly()
{
cout<<"姓名:"<<n_name<<" "<<"学号:"<<n_numble<<" "<<"性别:"<<n_<<" "<<"英语:"<<score[0]<<" "<<"数学:"<<score[1]<<" "<<"语文:"<<score[2]<<" "<<"平均分:"<<score[3]<<endl;
}
class manage_stu
{
//private:
student stu[N+1];//定义N+1名学生空间
public:
void input_stu();//输入N名学生信息
void delete_stu();//删除指定学号的学生信息
void find_stu();//查找指定学号的学生并显示
void total_stu();//分别求每个人的总分
void sort_stu();//按总分高低排序,排序后的结果显示并生成文件sortstu.txt
void display_stu();//显示N名学生信息
};
void manage_stu::input_stu()//输入N名学生信息
{
int i;
for(i=0;i<N;i++)
stu[i].input();
}
void manage_stu::delete_stu()//删除指定学号的学生信息
{
student r;
r.stu_delete(stu);
}
void manage_stu::find_stu()//查找指定学号的学生并显示
{
student t;
t.stu_find(stu);
}
void manage_stu::total_stu()//分别求每个人的总分
{
int i;
for(i=0;i<N+1;i++)
stu[i].pj();
}
void manage_stu::sort_stu()
{
int i,j;
student a;
for(i=0;i<N-1;i++)
{
for(j=i;j<N;j++)
{
if(stu[i].pj()<stu[j].pj())
{
a=stu[i];
stu[i]=stu[j];
stu[j]=a;
}
}
}
}
void manage_stu::display_stu()//显示N名学生信息
{
student t;
int i;
for(i=0;i<N;i++)
stu[i].dispaly();
}
void main()
{
int i=1,c;
manage_stu s;
while(i)
{
cout<<"学生管理系统:"<<endl;
cout<<"1、录入学生信息"<<N<<"名学生信息"<<endl;
cout<<"2、查找"<<endl;
cout<<"3、排序"<<endl;
cout<<"4、删除"<<endl;
cout<<"5、显示几名学生信息"<<endl;
cout<<"6、退出系统"<<endl;
cout<<"请选择(1--6):";
cin>>c;
switch(c)
{
case 1:s.input_stu();break;
case 2:s.find_stu();break;
case 3:s.sort_stu();break;
case 4:s.delete_stu();break;
case 5:s.display_stu();break;
case 6:i=0;
}
}
}
c语言课程设计之学生成绩管理系统设计的程序
这个是我自己做的类式的,你可以按自己的要求改下·不难的和你的差不多,给分哦
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#include<conio.h>
#define N 10
/*****定义结构体*****/
typedef struct students /*标记为students*/
{
char num[10]; /*学生学号*/
char name[10]; /*学生姓名*/
int age; /*年龄*/
char [10]; /*性别*/
float cyy; /*C语言成绩*/
float computer; /*计算机成绩*/
float english; /*英语成绩*/
float pj; /*平均成绩*/
}STU;
STU temp;
void sort(STU students[],int n); //排序
void se(STU students[] ,int n);//导出
int Locate(STU students[],int n);//查询
/*--------------显示菜单--------------------*/
char displaymenu()
{
char k;
system("cls");
printf(" 学生成绩管理 \n");
printf("-----------------------------------应用菜单-------------------------------------\n");
printf(" 1 输入学生成绩\n\n");
printf(" 2 输出学生成绩\n\n");
printf(" 3 查询学生成绩\n\n");
printf(" 4 修改学生成绩\n\n");
printf(" 5 查看成绩排序\n\n");
printf(" 6 查看成绩统计\n\n");
printf(" 7 保存数据\n\n");
printf(" 8 读取数据\n\n");
printf(" 9 退出系统\n\n");
printf(" 请选择你想进行的操作:");
k=getchar();
return k;
}
/*****定义输出函数*****/
void printheader() /*格式化输出表头*/
{
printf("\n\n************************学生成绩管理系统****************************\n\n\n");
printf("| 学号 | 姓名 | 年龄 | 性别 | C语言成绩 |计算机成绩 | 英语成绩| 平均成绩 | \n");
}
void printdata(STU pp) /*格式化输出表中数据*/
{
STU* p;
p=&pp;
printf("| %-5s| %-5s | %-4d| %-4s| %-6.0f| %-6.0f| %-5.0f| %-6.0f|\n",p->num,p->name,p->age,p->,p->cyy,p->computer,p->english,p->pj);
}
/*****添加学生信息*****/
int add(STU students[] ,int *n)
{
int i=0;
system("cls");
printf(" \n");
printf(" 请输入学生信息 \n");
printf(" 退出请在学生号处输入:0 \n");
printf("请输入学生学号:\n ");
scanf("%s",students[i].num);
while(strcmp(students[i].num,"0") )//当输入的学号为0时结束输入
{
printf("请输入学生姓名:\n ");
scanf("%s",students[i].name);
printf("****************\n\n\n");
printf("请输入学生年龄:\n ");
scanf("%d",&students[i].age);
printf("****************\n\n\n");
printf("请输入学生性别:\n");
scanf("%s",students[i].);
printf("****************\n\n\n");
printf("请输入C语言成绩:\n ");
scanf("%f",&students[i].cyy);
printf("****************\n\n\n");
printf("请输入计算机成绩:\n ");
scanf("%f",&students[i]puter);
printf("****************\n\n\n");
printf("请输入英语成绩:\n ");
scanf("%f",&students[i].english);
printf("****************\n\n\n");
students[i].pj=(students[i].cyy+students[i]puter+students[i].english)/3;
printf("学生平均成绩: %-8.0f\n",students[i].pj);
i++;
printf("****************\n\n\n");
printf("请输入学生学号:\n ");
scanf("%s",students[i].num);
}
*n=i;
se(students ,i);
return i;
}
/*****查询学生信息函数*****/
int Locate(STU students[],int n)
{
int k,m=-1;
char num[10],name[20];
int i=0;
system("cls");
printf(" 退出请输入:0 \n");
printf("请选择以什么方式查询:1).按学生学号查询 2).按学生姓名查询 \n");
scanf("%d",&k);
if(k==1)
{
printf("请输入你要查询的学生学号:\n");
scanf("%s",num);
while(i<n)
{
if(strcmp(students[i].num,num)==0) /*若找到学号*/
{
printf(">>学生学号:%s\n*学生姓名:%s\n*学生年龄:%d\n*学生性别:%s\n>C语言成绩:%-8.0f\n>计算机成绩:%-8.0f\n>>英语成绩:%-8.0f\n>>平均成绩:%-8.0f\n",students[i].num,students[i].name,students[i].age,students[i].,students[i].cyy,students[i]puter,students[i].english,students[i].pj);
m=i;
getchar();
break;
}
i++;
}
if(i>=n)
printf("没有所找学生信息\n");
getchar();
}
else if(k==2)
{
printf("请输入你要查询的学生姓名:\n");
scanf("%s",name);
while(i<n)
{
if(strcmp(students[i].name,name)==0) /*若找到姓名*/
{ printf("学生学号:%s\n学生姓名:%s\n学生年龄:%d\n学生性别:%s\n学生C语言成绩:%-8.0f\n计算机成绩:%-8.0f\n英语成绩:%-8.0f\n平均成绩:%-8.0f\n",students[i].num,students[i].name,students[i].age,students[i].,students[i].cyy,students[i]puter,students[i].english,students[i].pj);
m=i;
getchar();
break;
}
i++;
}
if(i>=n)
printf("没有所找学生信息\n");
}
return m;/*返回一个根m便于修改学生信息*/
getchar();
}
/*****显示函数*****/
void input(STU students[],int n)
{
int i;
system("cls"); //清屏
if(n==0) /*表示没有学生信息记录*/
{
printf("\n没有学生记录!\n");
}
printf("\n\n");
printheader(); /*输出表格头部*/
i=0;
while(i<n) /*逐条输出数组中存储的学生信息*/
{
printdata(students[i]);
i++;
}
getchar();
}
/*****修改子程序*****/
void Modify(STU students[],int n)
{
int i;
if(n<=0)
{
system("cls");
printf(" \n退出请输入:0 \n");
printf("\n----------not found!----------\n");
getchar();
return ;
}
system("cls");
printf("修改学生信息");
input(students,n);
i=Locate(students,n); /*查询到该数组元素,并返回下标值*/
if(i!=-1) /*若i!=-1,表明已经找到该数组元素*/
{
printf("请输入新的学生信息: \n");
printf(" 学号: ");
scanf("%s",students[i].num);
printf(" 姓名: ");
scanf("%s",students[i].name);
printf(" 年龄: ");
scanf("%d",&students[i].age);
printf(" 性别: ");
scanf("%s",students[i].);
printf(" C语言: ");
scanf("%f",&students[i].cyy);
printf(" 英语: ");
scanf("%f",&students[i].english);
printf(" 计算机: ");
scanf("%f",&students[i]puter);
students[i].pj=(students[i].cyy+students[i].english+students[i]puter)/3;
printf("平均成绩: %-9.0f\n",students[i].pj);
se(students ,n);
printf("\n-------------修改成功!-------------\n");
}
else
printf("not found!\n");
getchar();
}
/*****学生成绩排序子程序*****/
void sort(STU students[],int n)
{
int i,j,a,b,c,d,e,f,k;
float p;
printf(" \n退出请输入:0 \n");
printf("成绩排序方式选择: 1.按C语言 2.按英语 3.按平均 \n ");
scanf("%d",&k);
if(k==1) /*用选择法对C语言排序*/
{
for(i=0; i<n; i++)
for(j=0;j<n-1;j++)
{
if(students[i].english<students[j+1].english)
{
temp=students[i];
students[i]=students[j+1];
students[j+1]=temp;
}
}
}
else if(k==2)/*英语用冒泡法*/
{
for(a=0; a<n-1; a++)
{
c=a;
for(b=a+1; b<n; b++)
if(students[b].cyy>students[c].cyy)
c=b;
if (c!=a)
{
temp=students[a];
students[a]=students[c];
students[c]=temp;
}
}
}
if(k==3) /*平均成绩用插入法*/
{
for(d=1;d<n;d++)
{
p=students[d].pj;
for(e=0;e<d;e++)
if(students[e].pj<p)
break;
if(e==d)
continue;
for(f=d;f>e;f--)
students[f]=students[f-1];
students[e]=temp;
}
}
input(students,n); /*显示排序后的所有记录*/
se(students ,n);
printf("\n 排序完成!\n");
}
/*****统计学生分数在各等级的人数子程序*****/
void Tongji(STU students[],int n)
{
int count6085=0,count85=0,count60=0;
int i=0;
system("cls");
printf(" \n退出请输入:0 \n");
input(students,n);
i=0;
while(i<n)
{
if(students[i].pj>85) {count85++;i=i+1;continue;} /*平均成绩=>85*/
if(students[i].pj>=60&&students[i].pj<=85) {count6085++;i=i+1;continue;} /*60<平均成绩<85*/
if(students[i].pj<60) {count60++;i=i+1;continue;} /*平均成绩<60*/
}
printf("\n************统计结果************\n\n");
printf("平均成绩高于85分的人数:%d \n",count85);
printf(" \n");
printf("平均成绩在65分和80分之间的人数:%d \n",count6085);
printf(" \n");
printf("平均成绩低于60分的人数:%d \n",count60);
printf(" \n");
printf("\n\n**********统计结束**********");
getchar();
}
/*****导出或保存数据*****/
void se(STU students[],int n)
{
FILE* fp;
int i=0;
fp=fopen("students","wb+");/*以读写方式打开创建一个二进制文件*/
if(fp==NULL) /*打开文件失败*/
{
printf("\n*******打开文件错误!*******\n");
return ;
}
for(i=0;i<n;i++)
{
if(fwrite(&students[i],sizeof(STU),1,fp)==1)/*每次写一条记录或一个结构数组元素至文件*/
{
continue;
}
else
{
break;
}
}
if(i>0)
{
getchar();
printf("\n\n*共导出%d个学生信息*\n",i);
getchar();
}
else
{
system("cls");
printf("**没有信息导出*\n");
getchar();
}
fclose(fp); /*关闭此文件*/
}
/*****导入数据*****/
void Read(STU students[],int * n)
{
FILE* fp;
int i=0;
fp=fopen("students","rb");/*以只读方式打开一个已有的二进制文件*/
if(fp==NULL) /*打开文件失败*/
{
printf("\n********打开文件错误!********\n");
exit(0);
}
for(i=0;i<N;i++)
{
if(fread(&students[i],sizeof(STU),1,fp)==1)/*每次读一条记录或一个结构数组元素至文件*/
continue;
else
break;
}
*n=i;
if(i>0)
{
printf("\n\n************共导入:%d 个学生信息 ************\n",i);
getchar();
}
else
{ system("cls");
printf("************没有信息导入!************\n");
getchar();
}
getchar();
fclose(fp); /*关闭此文件*/
}
/*****主函数*****/
void main()
{
STU students[N];
int n;
char s1[3],s2[3]={"1"};
int i,k;
printf("\n\n");
printf("******************************************************\n");
printf("^ < 欢迎使用本软件> ^\n\n");
printf("^ <版本 : oooo> ^\n\n\n");
printf("^ <姓名>:卢景光 <班级>: 09623 <学号>:34 ^\n");
printf("^ ^\n");
printf("******************************************************\n");
printf("\n\n");
for(i=0;i<3;i++)
{
printf("\n请输入密码:");
gets(s1);
if(strcmp(s1,s2)==0)
break;
else
printf("\n>密码错误,请重新输入");
}
if(i>2)
{
printf("\n您已连续3次输错,系统将退出!\n");
exit(0);
}
else
{
while(1)
{
k=displaymenu();
switch(k)
{
case '1' : add(students,&n); break;
case '2' : Read(students,&n);input(students,n) ;break;
case '3' : Read(students,&n);Locate(students,n);break;
case '4' : Read(students,&n);Modify(students,n);;break;
case '5' : Read(students,&n);sort(students,n);break;
case '6' : Read(students,&n);Tongji(students,n); break;
case '7' : se(students,n) ;break;
case '8' : Read(students,&n);break;
case '9' : system("cls");
printf("\n **********谢谢您的使用**********\n");exit(0);break;
default : printf("\n\n输入错误,输入必须是0~9之间的一个数字!请重新输入\n");getchar();getchar();
}
}
}
}
C语言学生管理系统
#include<stdio.h>
#include<conio.h>
#include <stdlib.h>
#include<string.h>
#define MAX 80
#define max 3
int nu=0;
struct classname
{
char name[20];
float score;
};
struct student
{
char no[20];
char std_name[20];
struct classname km[max];
float e;
float sum;
int se;
};
struct student stu[MAX],*p;
void chushi()
{
int i,j;
for(i=0;i<MAX;i++)
{
for(j=0;j<20;j++)
{
stu[i].no[j]=NULL;
stu[i].std_name[j]=NULL;
stu[i].km[j].name[j]=NULL;
stu[i].km[j].score=0;
}
stu[i].e=0;
stu[i].sum=0;
stu[i].se=0;
}
}
void ()/*求平均值*/
{
int i;
for(i=0;i<nu;i++)
{
stu[i].sum=stu[i].km[1].score+stu[i].km[2].score+stu[i].km[3].score;
stu[i].e=stu[i].sum/3;
}
}
void first_check()
{
FILE *p;
int i,j;
struct classname frist[max];
for(i=0;i<max;i++)
{
for(j=0;j<20;j++)
frist[i].name[j]=NULL;
frist[i].score=0;
}
if ((p=fopen("c:\\kemu.txt","r"))==NULL)
{
printf("您好,欢迎使用学生成绩管理系统\n\n因为您是第一次使用,请输入科目名称(三科)\n\n");
p=fopen("c:\\kemu.txt","w");
printf("输入课程1名称:");
scanf("%s",frist[0].name);
fprintf(p,"%s\n",frist[0].name);
printf("输入课程2名称:");
scanf("%s",frist[1].name);
fprintf(p,"%s\n",frist[1].name);
printf("输入课程3名称:");
scanf("%s",frist[2].name);
fprintf(p,"%s\n",frist[2].name);
}
system("cls");
fclose(p);
}
void se_nu()
{
FILE *p;
p=fopen("c:\\renshu.txt","w");
fprintf(p,"%d\n",nu);
fclose(p);
}
void Se_add(int n)
{
FILE * p;
int i;
p= fopen("c:\\cheji.txt","at");
if (p == NULL)
{
printf("文件不存在!!\n");
exit(0);
}
se_nu();
for (i = 0;i<n;i++)
if(stu[i].se==1)
{
stu[i].sum=stu[i].km[1].score+stu[i].km[2].score+stu[i].km[3].score;
stu[i].e=stu[i].sum/3;
fprintf(p,"%s %s %2.1f %2.1f %2.1f %2.1f %2.1f \n",stu[i].no,stu[i].std_name,stu[i].km[0].score,stu[i].km[1].score,stu[i].km[2].score,stu[i].e,stu[i].sum);
}
fclose(p);
}
void Se()
{
FILE * p;
int i;
p= fopen("c:\\cheji.txt","w");
if (p == NULL)
{
printf("文件不存在!!\n");
exit(0);
}
se_nu();
for (i = 0;i<nu;i++)
if(stu[i].se==1)
{
();
fprintf(p,"%s %s %2.1f %2.1f %2.1f %2.1f %2.1f \n",stu[i].no,stu[i].std_name,stu[i].km[0].score,stu[i].km[1].score,stu[i].km[2].score,stu[i].e,stu[i].sum);
}
fclose(p);
}
int read_nu()
{
FILE *p;
char ch,s[10]={'\0'};
int i=0;
p=fopen("c:\\renshu.txt","r");
if(p==NULL)
{
se_nu();
return 0;
}
ch=fgetc(p);
while(ch!='\n')
{
s[i]=ch;
ch=fgetc(p);
i++;
}
nu=atoi(s);
fclose(p);
return 0;
}
int read_km()
{
FILE *p;
int i,j=0;
char s[20]={'\0'};
chushi();
p=fopen("c:\\kemu.txt","r");
if(p==NULL)
{
printf("ERROR read_km");
return 0;
}
fgets(s,20,p);
while(strlen(s)!=0)
{
for(i=0;i<strlen(s);i++)
if(s[i]==10)
{
s[i]='\0';
break;
}
for(i=0;i<=nu;i++)
strcpy(stu[i].km[j].name,s);
for(i=0;i<20;i++)
s[i]='\0';
j++;
fgets(s,20,p);
}
}
void read()
{
FILE *p;
int i,j,n,k,z=0;
char s[50]={'\0'};
char o[10]={'\0'};
p=fopen("c:\\cheji.txt","r");
if(p==NULL)
printf("ERROR_read");
chushi();
read_km();
fgets(s,50,p);
while(strlen(s)!=0)
{
j=0;
for(i=0;i<50;i++)
{
if(s[i]!='\n')
{
n=0;
while(j==0)
{
if(s[i]!=' ')
{
stu[z].no[n]=s[i];
n++;i++;
}
else
break;
}
while(j==1)
{
if(s[i]!=' ')
{
stu[z].std_name[n]=s[i];
n++;i++;
}
else
break;
}
while(j==2)
{
if(s[i]!=' ')
{
o[n]=s[i];
n++;i++;
}
else
{
stu[z].km[0].score=atoi(o);
break;
}
}
while(j==3)
{
if(s[i]!=' ')
{
o[n]=s[i];
n++;i++;
}
else
{
stu[z].km[1].score=atoi(o);
break;
}
}
while(j==4)
{
if(s[i]!=' ')
{
o[n]=s[i];
n++;i++;
}
else
{
stu[z].km[2].score=atoi(o);
break;
}
}
while(j==5)
{
if(s[i]!=' ')
{
o[n]=s[i];
n++;i++;
}
else
{
stu[z].e=atoi(o);
break;
}
}
while(j==6)
{
if(s[i]!=' ')
{
o[n]=s[i];
n++;i++;
}
else
{
stu[z].sum=atoi(o);
break;
}
}
for(k=0;k<10;k++)
o[k]='\0';
}
else
break;
j++;
}
for(i=0;i<50;i++)
s[i]='\0';
fgets(s,50,p);
z++;
}
}
void putin()
{
int n,i=0;
char ch;
read_km();
do
{
printf("\t\t\t\t录入学员信息\n输入第%d个学员的信息\n",i+1);
printf("\n输入学生编号:");
scanf("%s",stu[i].no);
printf("\n输入学员姓名:");
scanf("%s",stu[i].std_name);
printf("\n输入课程%s的分数:",stu[0].km[0].name);
scanf("%f",&stu[i].km[0].score);
printf("\n输入课程%s的分数:",stu[0].km[1].name);
scanf("%f",&stu[i].km[1].score);
printf("\n输入课程%s的分数:",stu[0].km[2].name);
scanf("%f",&stu[i].km[2].score);
stu[i].se=1;
printf("\n\n");
i++;
n=i;
printf("是否继续输入?(Y/N)");
fflush(stdin);
ch=getch();
system("cls");
}
while(ch!='n'&&ch!='N');
system("cls");
if(nu==0)
{
nu=n;
Se();
}
else
{
nu=n+nu;
Se_add(n);
}
}
int putout()
{
int i;char s;
if(nu==0)
{
printf("学生信息为零!请录入...");
return 0;
}
read();
do
{
printf("学生成绩信息:\n\n");
for(i=0;i<nu;i++)
printf("学号:%s 姓名:%s\n%s分数:%2.1f\t%s分数:%2.1f\t%s分数:%2.1f\n平均分数:%2.1f\t总成绩:%2.1f\n\n",stu[i].no,stu[i].std_name,stu[i].km[0].name,stu[i].km[0].score,stu[i].km[1].name,stu[i].km[1].score,stu[i].km[2].name,stu[i].km[2].score,stu[i].e,stu[i].sum);
printf("\t\t按任意键返回主菜单");
fflush(stdin);
s=getch();
}
while(!s);
system("cls");
}
int sort()/*排序数据函数*/
{
struct student temp;
int i,j;
char s;
if(nu==0)
{
printf("学生信息为零!请录入...");
return 0;
}
chushi();
read();
for(i=1;i<nu;i++)
{
for(j=1;j<=nu-i;j++)
{
if(stu[j-1].e<stu[j].e)
{
temp=stu[j];
stu[j]=stu[j-1];
stu[j-1]=temp;
}
}
}
do
{
printf("学生成绩信息:\n\n");
for(i=0;i<nu;i++)
printf("学号:%s 姓名:%s 平均成绩:%2.1f\n\n",stu[i].no,stu[i].std_name,stu[i].e);
printf("\t\t按任意键返回主菜单");
fflush(stdin);
s=getch();
}
while(!s);
system("cls");
}
void find()/*查询函数*/
{
int j,i=0;
int c=0;
char search[10]={'\0'};
char as;
if(nu==0)
{
printf("学生信息为零!请录入...");
return 0;
}
chushi();
read();
do
{
printf("输入要查询课程名称:");
scanf("%s",search);
for(j=0;j<max;j++)
if(!strcmp(stu[i].km[j].name,search))
{
c=1;
printf("\n该课程不及格学生姓名:\n");
for(i=0;i<nu;i++)
if(stu[i].km[j].score<60)
printf("%s\n",stu[i].std_name);
}
if(c==0)
printf("无此课程!");
printf("\n\t\t按任意键返回主菜单");
fflush(stdin);
as=getch();
}
while(!as);
system("cls");
}
void tongji()
{
int j,m,z,i=0;
char s;
if(nu==0)
{
printf("学生信息为零!请录入...");
return 0;
}
chushi();
read();
for(z=0;z<max;z++)
{
m=stu[i].km[z].score;j=0;
printf("%s 最高分: ",stu[i].km[z].name);
for(i=0;i<nu;i++)
if(m<stu[i].km[z].score)
{
m=stu[i].km[z].score;
j=i;
}
printf("%s\t",stu[j].std_name);
j=0;i=0;m=stu[i].km[z].score;
printf("%s 最低分: ",stu[i].km[z].name);
for(i=0;i<nu;i++)
if(m>stu[i].km[z].score)
{
m=stu[i].km[z].score;
j=i;
}
printf("%s\t",stu[j].std_name);
m=0;j=0;i=0;
printf("%s 平均分: ",stu[i].km[z].name);
for(i=0;i<nu;i++)
m=m+stu[i].km[z].score;
printf("%d\n",m/nu);
m=0;i=0;
printf("%s 分数低于的60人数: ",stu[i].km[z].name);
for(i=0;i<nu;i++)
if(stu[i].km[z].score<60)
m++;
printf("%d\t",m);
m=0;j=0;i=0;
printf("%s 分数高于60的人数: ",stu[i].km[z].name);
for(i=0;i<nu;i++)
if(stu[i].km[z].score>60)
m++;
printf("%d\n\n",m);
}
do
{
printf("\t\t按任意键返回主菜单");
fflush(stdin);
s=getch();
}
while(!s);
system("cls");
}
void main()/*主函数*/
{
int as;
first_check();
start: printf("\n\t\t\t欢迎使用学生成绩管理系统\n");
/*一下为功能选择模块*/
do
{
printf("\n\t\t\t\t1.录入学员信息\n\t\t\t\t2.显示学员信息\n\t\t\t\t3.成绩排序信息\n\t\t\t\t4.查询不及格学生\n\t\t\t\t5.统计信息\n\t\t\t\t6.退出\n");
printf("\t\t\t\t选择功能选项:");
fflush(stdin);
read_nu();
scanf("%d",&as);
switch(as)
{
case 1:system("cls");putin();break;
case 2:system("cls");putout();break;
case 3:system("cls");sort();break;
case 4:system("cls");find();break;
case 5:system("cls");tongji();break;
case 6:system("exit");exit(0);
default:system("cls");goto start;
}
}
while(1);
/*至此功能选择结束*/
}
c语言编写查询学生成绩管理程序。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<conio.h>
#define max 20
typedef struct student //学生
{
char sno[max]; // 学号
char sname[max]; //姓名
char [max]; //性别
char age[max]; //年龄
char depart[max]; //系
char classs[max]; //班
char grade[max]; //年级
struct student* next;
} student;
student* head;
int LogOn() //登录模块,已实现输入密码不回显,如果中途发现输错某几位,可退格键重输
{
char username[max],password[max];
printf("\n请输入用户名:");
scanf("%s",username);
printf("\n请输入密码(最多15位):");
//开始以不回显且支持退格方式获取输入密码
int i=0;
while((i>=0)&&(password[i++]=getch())!=13)//条件i>=0是用于限制退格的范围
{
if(password[i-1]=='\b')//对退格键的处理
{
printf("%c%c%c",'\b','\0','\b');
i=i-2;
}
else
printf("*");
}
password[--i]='\0';
//已获取密码。验证用户身份
if(!strcmp(username,"zhang")&&!strcmp(password,"8147086"))
{
printf("\n登录成功!");
return 1;
}
else
return 0;
}
void regist()
{
char ch;
student *s,*ptr; //s用来建新结点,ptr用来暂存头结点
do
{
s=(student*)malloc(sizeof(student)); // 新建一个学生结点
printf("\n开始注册..."); //开始注册
printf("\n请输入该学生的学号:");
scanf("%s",s->sno);
printf("\n请输入该学生的姓名:");
scanf("%s",s->sname);
printf("\n请输入该学生的性别:");
scanf("%s",s->);
printf("\n请输入该学生的年龄:");
scanf("%s",s->age);
printf("\n请输入该学生的系:");
scanf("%s",s->depart);
printf("\n请输入该学生所在的班:");
scanf("%s",s->classs);
printf("\n请输入该学生所在的年级");
scanf("%s",s->grade);
ptr=head;
head=s;//将新结点插入队头
s->next=ptr;
fflush(stdin);
printf("\n请问是否继续注册?(Y/N)");
scanf("%c",&ch);
}while(ch=='Y'||ch=='y');
return;
}
void ElePrint(char str[]) //输出单个元素
{
if(str==NULL) exit(0);
printf("%s",str);
for(unsigned int i=0;i<12-strlen(str);i++) printf(" ");//为了对齐输出,需插入一些空格
return;
}
int LinePrint(student *ptr) //输出一行
{
if(ptr==NULL) //检查传进来的指针
return 0;
printf("\n");
ElePrint(ptr->sno);
ElePrint(ptr->sname);
ElePrint(ptr->age);
ElePrint(ptr->);
ElePrint(ptr->depart);
ElePrint(ptr->classs);
ElePrint(ptr->grade);
return 1;
}
void print() //输出全部学生信息
{
student *ptr=head;
printf("\n学号 姓名 年龄 性别 系 班 年级 ");
while(ptr)
{
LinePrint(ptr);
ptr=ptr->next;
}
printf("\n");
return;
}
void search()//查询模块
{
int method;//查询方式
char no[max],name[max],departm[max],clss[max],grades[max]; //用来接收查询关键字
while(1)
{
printf("\n请选择查询方式");
printf("\n1.按学号查询");
printf("\n2.按姓名查询");
printf("\n3.按所在系查询");
printf("\n4.按所在班级查询");
printf("\n5.按所在年级查询");
printf("\n6.打印全部学生信息");
printf("\n7.返回主菜单\n");
scanf("%d",&method);
student *p=head,*temp;
switch(method)
{
case 1:
printf("\n请输入要查询的学号:");
scanf("%s",no);
while(p)
{
if(!strcmp(p->sno,no))
break;
else
{
temp=p;
p=p->next;
}
}
printf("\n学号 姓名 年龄 性别 系 班 年级 ");
LinePrint(p);
break;
case 2:
printf("\n请输入要查询的姓名:");
scanf("%s",name);
printf("\n学号 姓名 年龄 性别 系 班 年级 ");
while(p)
{
if(!strcmp(p->sname,name))
LinePrint(p);
p=p->next;
}
break;
case 3:
printf("\n请输入学生所在的系:");
scanf("%s",departm);
printf("\n学号 姓名 年龄 性别 系 班 年级 ");
while(p)
{
if(!strcmp(p->depart,departm))
LinePrint(p);
p=p->next;
}
break;
case 4:
printf("\n请输入学生所在的班:");
scanf("%s",clss);
printf("\n请输入学生所在的年级:");
scanf("%s",grades);
printf("\n学号 姓名 年龄 性别 系 班 年级 ");
while(p)
{
if(!strcmp(p->classs,clss)&&!strcmp(p->grade,grades))
LinePrint(p);
p=p->next;
}
break;
case 5:
printf("\n请输入学生所在的年级:");
scanf("%s",grades);
printf("\n学号 姓名 年龄 性别 系 班 年级 ");
while(p)
{
if(!strcmp(p->grade,grades))
LinePrint(p);
p=p->next;
}
break;
case 6:
print();
break;
case 7:
return;
default:
printf("很抱歉,暂无此查询方式!");
break;
}
}
}
void modify()//修改学生信息
{
char num[max];
student *p=head;
printf("\n请输入要修改的学生的学号:");
scanf("%s",num);
while(p)
{
if(!strcmp(p->sno,num))
break;
else
p=p->next;
}
if(p==NULL)
{
printf("\n错误:没有此学生的信息!\n");
return;
}
LinePrint(p);
printf("\n请输入要修改的该学生的信息:");
printf("\n1.姓名");
printf("\n2.性别");
printf("\n3.年龄");
printf("\n4.所在的系");
printf("\n5.所在的班");
printf("\n6.所在的年级");
char name1[max],1[max],age1[max],depart1[max],class1[max],grade1[max];
int select;
fflush(stdin);
scanf("%d",&select);
printf("\n请输入新的信息:");
switch(select)
{
case 1:
scanf("%s",name1);
strcpy(p->sname,name1);
break;
case 2:
scanf("%s",1);
strcpy(p->,1);
break;
case 3:
scanf("%s",age1);
strcpy(p->age,age1);
break;
case 4:
scanf("%s",depart1);
strcpy(p->depart,depart1);
break;
case 5:
scanf("%s",class1);
strcpy(p->classs,class1);
break;
case 6:
scanf("%s",grade1);
strcpy(p->grade,grade1);
break;
default:
printf("\nError!");
break;
}
LinePrint(p);
return;
}
void del()// 删除某学生的信息
{
student *p=head,*temp=head,*s;
char num1[max];
printf("\n请输入要删除的学生的学号:");
scanf("%s",num1);
while(p)//查找该学生所在的结点
{
if(!strcmp(p->sno,num1))
break;
else
{
temp=p;
p=p->next;
}
}//while
if(!p)
{
printf("\n不存在此学生的信息.");
return;
}
LinePrint(p);//输出该学生的信息
printf("\n请问真的要删除该学生的信息吗?(Y/N)");
char ch;
fflush(stdin);
scanf("%c",&ch);
if(ch=='Y'||ch=='y')
{
s=p->next;
temp->next=s;
free(p);
printf("\n已经删除该学生的信息.");
}
return;
}
void sort() //排序模块。将学生记录按学号从小到大排列。用起泡排序算法实现
{
student *ptr,*s=head,*p;
int count=0,count1;
while(s)//统计链表结点个数
{
count++;
s=s->next;
}
for(int i=1;i<count;i++)
{
ptr=head;
p=NULL;
count1=count-i; //用来控制每轮起泡排序的终点,即每次把学号最小的结点移到倒数第i个结点
while(ptr&&ptr->next&&(count1--))
{
if(strcmp(ptr->sno,ptr->next->sno)>0)
{
s=ptr->next;
ptr->next=s->next;
if(p==NULL) //ptr处于队头时
head=s;
else
p->next=s;
s->next=ptr;
p=s;
}
else
{
ptr=ptr->next;
if(p==NULL) //ptr处于队头时
p=head;
else
p=p->next;
}
}
}
return;
}
void quit()
{
char ch;
printf("\n真的要退出?(Y/N)");
fflush(stdin);
scanf("%c",&ch);
if(ch=='Y'||ch=='y')
exit(0);
return;
}
int main()
{
int option;
printf("\nCopyright@2005 KongXinCai All rights reserved.");
printf("\n欢迎使用学生信息管理系统!\n");
//登录模块
int icheck=0;
while(icheck<3)
{
if(LogOn()==0)
icheck++;
else
break;
}
if(icheck==3)
{
printf("\n连续登录三次不成功,退出!");
exit(0);
}
//系统界面
while(1)
{
printf("\n\n请选择需要的服务:");
printf("\n1.注册");
printf("\n2.查询");
printf("\n3.修改");
printf("\n4.删除");
printf("\n5.排序");
printf("\n7.求平均");
printf("\n6.退出\n");
scanf("%d",&option);
switch(option)
{
case 1:
regist();
break;
case 2:
search();
break;
case 3:
modify();
break;
case 4:
del();
break;
case 5:
sort();
break;
case 6:
quit();
break;
}
}
return 0;
}
C++简单编程题目 求大神教育 学生成绩管理系统
#include<stdio.h>
#include<stdlib.h>
#include<string.h>struct record
{
char xuehao[10];//学号
char name[20]; //姓名
char [3];//性别
int ke1;//数学
int ke2 ;//语文
int ke3;//英语
int pin;
}stu[50];
int k=1,n,m;void readfile();
void seek();
void insert();
void del();
void se();
void menu();
void seek()
{int i,j,item,flag;<br>char s1[20];<br>printf("------------------\n");<br>printf("1.按学号查询\n");<br>printf("2.退出本菜单\n");<br>printf("------------------\n");<br>while(1)<br>{ printf("请选择子菜单编号:");<br>scanf("%d",&item);<br>flag=0;<br>switch(item)<br>{<br>case 1:<br>printf("请输入要查询的学生的学号:\n");<br>scanf("%s",s1);<br>for(i=0;i<n;i++)<br>if(strcmp(stu[i].xuehao,s1)==0)<br>{ flag=1;<br>printf("该学生学号,姓名,性别,数学,语文,英语 分别为:\n");<br>printf(" %s %s %s %d %d %d",stu[i].xuehao,stu[i].name,<br>stu[i].,stu[i].ke1,stu[i].ke2,stu[i].ke3);<br>}
if(flag==0)
printf("该学号不存在!\n"); break;
case 2:return;
default:printf("请在1-2之间选择\n");
}
}
}
void insert()
{ int i=n,j,flag;
printf("请输入待增加的学生数:\n");
scanf("%d",&m);
do
{ flag=1;
while(flag)
{ flag=0;
printf("请输入第 %d 个学生的学号:\n",i+1);
scanf("%s",stu[i].xuehao);
for(j=0;j<i;j++)
if(strcmp(stu[i].xuehao,stu[j].xuehao)==0)
{ printf("已有该学号,请检查后重新录入!\n");
flag=1;
break;
}
}
printf("请输入第 %d 个学生的姓名:",i+1);
scanf("%s",stu[i].name);
printf("\n请输入第 %d 个学生的性别:",i+1);
scanf("%s",stu[i].);
printf("\n请输入第 %d 个学生的数学成绩:",i+1);
scanf("%d",&stu[i].ke1);
printf("\n请输入第 %d 个学生的语文成绩:",i+1);
scanf("%d",&stu[i].ke2);
printf("\n请输入第 %d 个学生的英语成绩:",i+1);
scanf("%d",&stu[i].ke3);if(flag==0)
{ i=i;
i++;
}
}while(i<n+m);
n+=m;
printf("录入完毕!\n\n");
}void del()
{ int i,j,flag=0;
char s1[20];
printf("请输入要删除学生的学号:\n");
scanf("%s",s1);
for(i=0;i<n;i++)
if(strcmp(stu[i].xuehao,s1)==0)
{ flag=1;
for(j=i;j<n-1;j++)
stu[j]=stu[j+1];
}
if(flag==0)
printf("该学号不存在!\n");
if(flag==1)
{ printf("删除成功,显示结果请选择菜单6\n");
n--;
}
}
void readfile()
{
char buf[80],*p="student.dat";
FILE *fp;
int i=0;
if ((fp=fopen("student.dat","r"))==NULL)
{ printf("Open file %s error! Strike any key to exit!",p);
system("pause");
exit(0);
}
while(fscanf(fp,"%s%s%s%d%d%d",stu[i].xuehao,stu[i].name,
stu[i].,&stu[i].ke1,&stu[i].ke2,&stu[i].ke3)==6)
{ i++;
i=i;
}
fclose(fp);
n=i;
printf("录入完毕!\n");
}void se()
{ int i,j,k,flag=0;
FILE *fp;
fp=fopen("student.dat","w");
for(i=0;i<m;i++)
{
fprintf(fp,"%s%s%d%d%d",stu[i].xuehao,stu[i].name,stu[i].,&stu[i].ke1,
&stu[i].ke2,&stu[i].ke3);
fclose(fp);
printf("已储存");
}
}
void paixu()
{
int i,j,k,t;
for(i=0;i<m;i++)
{
stu[i].pin=(stu[i].ke1+stu[i].ke2+stu[i].ke3)/3;
}
for(i=0;i<=m-2;i++)
{
k=i;
for(j=i+1;j<=m-1;j++)
if(stu[j].pin<stu[k].pin)
k=j;
if(k!=i)
{
t=stu[k].pin;
stu[k].pin=stu[i].pin;
stu[i].pin=t;
}
}
for(i=0;i<m;i++)
{printf("第 %d 个学生的姓名%s:",i+1,stu[i].name);<br> printf("\n第 %d 个学生的性别:%s",i+1,stu[i].);<br> printf("\n第 %d 个学生的数学成绩:%d",i+1,stu[i].ke1);<br> printf("\n第 %d 个学生的语文成绩:%d",i+1,stu[i].ke2);<br> printf("\n第 %d 个学生的英语成绩:%d",i+1,stu[i].ke3);<br> printf("\n第 %d 个学生的平均成绩:%d",i+1,stu[i].pin);<br> }
}
void menu()
{ int nub;
printf(" \n\n学生成绩管理系统\n\n");
printf("*****系统功能菜单*****\n");
printf("----------------------\n");
printf("1.输入学生信息\n");
printf("2.查询学生信息\n");
printf("3.按学号删除信息\n");
printf("4.读入学生信息\n");
printf("5.保存信息(要把修改保存到文件,退出程序前必须执行本项)\n");
printf("6.查询学生平均成绩信息\n");
printf("0.退出系统\n");
printf("----------------------\n");
printf("请选择菜单编号:");
scanf("%d",&nub);
switch(nub)
{
case 1:insert();break;
case 2:seek();break;
case 3:del();break;
case 4:readfile();break;
case 5:se();break;
case 6:paixu();break;
case 0:k=0;break;
default:printf("请在0-6之间选择\n");
}}
void main()
{
while(k)
menu();
}
//平均数是排序后,输出的,如果你不想直接输入,那就不要对每个学生进行选择排序了
#include<stdio.h>#include<windows.h>
#include<stdlib.h>
#include<string.h>
/*作者:北京交通大输10级?lenhal
功能:成绩管理系统 时间:2012年7月*/
int?n=2;?//全局变量,要输入的学生数,自行改变其值
struct?student
{
char?num[10]; char?name[10]; float?score[3]; float?g;}stu[200];
/**********************************************************************************************/
void?enter(struct?student?t[])//输入数据
{
int?i,j,k,a; system("cls"); printf("输入数据之前,请确定输入的人数\n你是否已经确定了人数\n"); printf("是输入1回车继续\n否输入0回车退出程序,改变全局变量的值\n"); scanf("%d",&a); if(a!=1) exit(0); for(i=0;i<n;i++) { system("cls");?//清屏 printf("请输入第%d个学生的学号:\n",i+1); scanf("%s",t[i].num); for(j=0;j<i;j++)if(strcmp(t[i].num,t[j].num)==0)?//避免有相同的学号
{
i--;
printf("此学号的学生已存在,请重新输入:");
Sleep(3000);
break;
}
} for(i=0;i<n;i++) { system("cls"); printf("请输入学号为%s学生的:(用空格隔开)?\n名字?第一门成绩?第二门成绩?第三门成绩\n",t[i].num); //t[i].score[0]=0;t[i].score[1]=0;t[i].score[2]=0; scanf("%s%f%f%f",t[i].name,&t[i].score[0],&t[i].score[1],&t[i].score[2]); t[i].g=(t[i].score[0]+t[i].score[1]+t[i].score[2])/3.0; }}
/**********************************************************************************************/
int?list(struct?student?t[])//显示所有信息
{
int?i; system("cls"); printf("所有%d个学生信息如下:\n\n",n); printf("学号?名字第一门成绩第二门成绩第三门成绩平均分\n"); for(i=0;?;i++) { if(strlen(t[i].num)!=0)?//判断是否结束 printf("%s\t%s\t?%5.2f\t%5.2f\t%5.2f\t?%5.2f\t\n", t[i].num,t[i].name,t[i].score[0],t[i].score[1],t[i].score[2],t[i].g); else?break;
} putchar(10);}
/**********************************************************************************************/
void?research(struct?student?t[])//按学号查找某个信息
{
int?i,a,y; char?s[10]; while(1) { system("cls"); printf("请输入要查询的学号:"); scanf("%s",&s); for(i=0;?;i++) { system("cls"); if?(!(strcmp(s,t[i].num)))?//如果找到该学号,则输出 {printf("学号为%s的学生成绩如下:\n\n",t[i].num);
printf("学号名字第一门成绩第二门成绩第三门成绩平均分\n");
printf("%s\t%s\t?%5.2f\t%5.2f\t%5.2f\t?%5.2f\t\n", t[i].num,t[i].name,t[i].score[0],t[i].score[1],t[i].score[2],t[i].g);putchar(10);
break;
} else?if((strcmp(s,t[i].num))!=0?&&?strlen(t[i].num)==0)//查找完毕后找不到该学号,结束 {printf("\n没有此学号的信息:\n\n");
break;
} } printf("************************************\n"); printf("继续查询,输入1回车\n"); printf("返回主菜单,输入2回车\n"); printf("退出程序,输入任意回车\n"); printf("************************************\n"); scanf("%d",&a); if(a==1) research(stu,n); else?if(a==2) break; else { system("cls"); printf("是否退出?直接退出输入1回车,保存数据退出输入2回车,输入22回主菜单\n建议退出前先保存数,否则数据将丢失"); scanf("%d",&y); if(y==1) exit(0); else?if(y==2)se(stu);
elsemain();
} } main();}
/**********************************************************************************************/
void?del(struct?student?t[])?//删除某一学生的信息
{
int?i,j,a,z,y; char?b[10]; system("cls"); printf("请输入要删除的学号:"); scanf("%s",b); for(i=0;?;i++) if(strcmp(b,t[i].num)==0)break;
else?if((strcmp(b,t[i].num))!=0?&&?strlen(t[i].num)==0) {printf("没有此学号的信息:\n\n");
Sleep(3000);
break;
} if(strlen(t[i].num)!=0) { system("cls"); printf("确认删除?是输入1回车\n"); scanf("%d",&z); if(z==1) for(j=i;?;j++) { if(strlen(t[j].num)==0)break;
else { t[j]=t[j+1];n=n-1;
} } } system("cls"); printf("************************************\n"); printf("继续删除,输入1回车\n"); printf("返回主菜单,输入2回车\n"); printf("退出程序,输入任意回车\n"); printf("************************************\n"); scanf("%d",&a); if(a==1) del(stu); else?if(a==2) main(); else { system("cls"); printf("是否退出?直接退出输入1回车,保存数据退出输入2回车,输入22回主菜单\n建议退出前先保存数,否则数据将丢失"); scanf("%d",&y); if(y==1) exit(0); else?if(y==2)se(stu);
elsemain();
}}
/**********************************************************************************************/
void?add(struct?student?t[])//增加学生数据
{
int?i,j,m,a,y; system("cls"); printf("请输入要增加的记录数:\nm="); scanf("%d",&m); for(i=n;i<n+m;i++) { system("cls"); printf("请输入第%d个新增学生的学号:",i-n+1); scanf("%s",t[i].num); for(j=0;j<i;j++)if(strcmp(t[i].num,t[j].num)==0)//避免学号重复
{
i--;
printf("此学号的学生已存在,请重新输入:");
Sleep(3000);
break;
}
} for(i=n;i<n+m;i++) { system("cls"); printf("请输入增加学号为%s学生的:(用空格隔开)?\n名字?第一门成绩?第二门成绩?第三门成绩\n",t[i].num); //t[i].score[0]=0;t[i].score[1]=0;t[i].score[2]=0; scanf("%s%f%f%f",t[i].name,&t[i].score[0],&t[i].score[1],&t[i].score[2]); t[i].g=(t[i].score[0]+t[i].score[1]+t[i].score[2])/3.0; } n=n+m;?//学生数等于本来学生数加新加的学生数 printf("************************************\n"); printf("继续添加,输入1回车\n"); printf("返回主菜单,输入2回车\n"); printf("退出程序,输入任意回车\n"); printf("************************************\n"); scanf("%d",&a); if(a==1) add(stu); else?if(a==2) main(); else { system("cls"); printf("是否退出?直接退出输入1回车,保存数据退出输入2回车,输入22回主菜单\n建议退出前先保存数,否则数据将丢失"); scanf("%d",&y); if(y==1) exit(0); else?if(y==2)se(stu);
elsemain();
}}
/**********************************************************************************************/
int?se(struct?student?t[])//保存数据到文件中
{
FILE?*fp; char?s[20],ch; int?i,a,y; system("cls"); printf("保存到新的文件输入1回车\n保存到已有文件输入2回车\n"); scanf("%d",&a); ch=getchar();//接收回车字符,否则gets()函数将空格赋给s,出错 if(a==1) { printf("请输入新的文件名:\n(包括其拓展名,20个字符以下)\n"); gets(s); if((fp=fopen(s,"w+"))==NULL)?//使fp指向文件 { printf("没有此文件\n"); exit(0); } } else?if(a==2) { printf("请输入已有文件名:\n(包括其拓展名,20个字符以下)\n"); gets(s); if((fp=fopen(s,"w+"))==NULL) { system("cls"); printf("没有此文件\n"); exit(0); } } fprintf(fp,"%d\n",n);//将学生数写的文件中 for(i=0;?;i++) if(strlen(t[i].num)!=0)?//如果学号不为空,将数据写到指定文件中 {fprintf(fp,"%s\t%s\t%-5.2f\t%-5.2f\t%-5.2f\t%-5.2f",
t[i].num,t[i].name,t[i].score[0],t[i].score[1],t[i].score[2],t[i].g);fprintf(fp,"\n");
} elsebreak;
fclose(fp); system("cls"); printf("\n保存完成!\n");}
/**********************************************************************************************/
void?read(struct?student?t[])//读取文件中的数据
{
FILE?*fp; int?y,m,i,x; char?s[20],ch; ch=getchar();?//接收回车字符,否则gets()函数将空格赋给s,出错 system("cls"); printf("请输入要读取数据的文件名:\n(包括其拓展名,20个字符以下)\n"); gets(s); if((fp=fopen(s,"r"))==NULL) { system("cls"); printf("没有此文件\n"); Sleep(3000); system("cls"); printf("是否退出?直接退出输入1回车,保存数据退出输入2回车,输入22回主菜单\n建议退出前先保存数,否则数据将丢失"); scanf("%d",&y); if(y==1) exit(0); else?if(y==2)se(stu);
elsemain();
} fscanf(fp,"%d",&x);//读取学生数 for(i=0;i<x;i++)?//读取所有数据 fscanf(fp,"%s%s%f%f%f%f",t[i].num,t[i].name,&t[i].score[0], &t[i].score[1],&t[i].score[2],&t[i].g); fclose(fp); system("cls"); n-=n;?//将n置0 n=x; printf("\n读取完成!\n");}
/**********************************************************************************************/
menu()?//选择菜单{
int?x; printf("请选择相应的菜单:\n"); printf("************************************\n"); printf("输入新记录,输入0回车\n"); printf("显示全部学生成绩,输入1回车\n"); printf("查询相应的记录,输入2回车\n"); printf("删除相应的记录,输入3回车\n"); printf("增加新的记录,输入4回车\n"); printf("从文件中读入记录,输入5回车\n"); printf("按平均分从高到低排序并输出,输入6回车\n"); printf("按学号从低到高排序并输出,输入7回车\n"); printf("查找每门成绩的最高分,输入8回车\n"); printf("保存成绩到文本中,输入9回车\n"); printf("退出程序,输入11回车\n"); printf("************************************\n"); scanf("%d",&x); return?x;}
/**********************************************************************************************/ void?to_exit()?//退出 { int?y; system("cls"); printf("是否退出?直接退出输入1回车,保存数据退出输入2回车,输入22回主菜单\n建议退出前先保存数,否则数据将丢失"); scanf("%d",&y); if(y==1) exit(0); else?if(y==2)se(stu);
elsemain();
}/**********************************************************************************************/
void?g_arrange(struct?student?t[])//按平均分从高到低排序 { int?i,j; struct?student?temp[1]; for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)
if(t[i].g?<?t[j].g)
{
temp[0]=t[i]; t[i]=t[j]; t[j]=temp[0];}
list(stu); } /**********************************************************************************************/ void?num_arrange(struct?student?t[])//按学号从小到大排序 { int?i,j; struct?student?temp[1]; for(i=0;i<n;i++)for(j=0;j<n-1;j++)
if(strcmp(t[j].num,t[j+1].num)>0)
{
temp[0]=t[j]; t[j]=t[j+1]; t[j+1]=temp[0];}
list(t); }/**********************************************************************************************/
void?high(struct?student?t[])//查找某门科目的最高成绩 { int?i,j,k; struct?student?max[1]; max[0]=t[0]; system("cls"); printf("请输入要查找的科目:?1?or?2?or?3\n"); scanf("%d",&k); for(i=1;i<n;i++)max[0]=max[0].score[k-1]?>?t[i].score[k-1]max[0]:t[i];
system("cls"); printf("第?%d?科目:?最分为:%-5.2f?学号为%s\n",k,max[0].score[k-1],max[0].num);}
/**********************************************************************************************/
main()
{
int?a; while(1) { a=menu(); switch(a)//根据选择菜单做相应的操作 { case?0?:?enter(stu);break; case?1:?list(stu);break; case?2:?research(stu);break; case?3:?del(stu);break; case?4:?add(stu);break; case?5:?read(stu);break; case?6:?g_arrange(stu);break; case?7:?num_arrange(stu);break; case?8:?high(stu);break; case?9:?se(stu);break; default?:?to_exit();break; } }}
/**********************************************************************************************/