文档库 最新最全的文档下载
当前位置:文档库 › C++结构体学生成绩统计系统

C++结构体学生成绩统计系统

#include
#include
#include
using namespace std;
struct student
{
char number[10];// 学号
string name;// 姓名
double xuekea;// 第一个学科成绩
double xuekeb;// 第二个学科成绩
double xuekec;// 第三个学科成绩
double xueked;// 第四个学科成绩
double total;// 总分
double average;// 总成绩平均分
int rank;//排名
}s[1000];//
struct xueke//定义一个xueke类型的结构体,成员代表的是四门学科的名字
{
string mingzia;
string mingzib;
string mingzic;
string mingzid;
}x[1];
void welcome(void);//欢迎界面

void luruxk(xueke &x);//录入四门学科

void luru(student &s,xueke &x);//录入学生的成绩函数

void count(student &s);//计算学生成绩总分和平均分的函数

void paixu(student s[],int N);//排名函数

void print(student &s);//输出学生信息,并写入“成绩备份.txt”。

void printxk(xueke &x);//将“排名,姓名,学号,四科学科的名字”显示屏幕并写入“成绩备份.txt”。

void print_and_write(student &s);//将学生信息显示在显示屏上并写入文件“成绩备份.txt”中。

int search1(student s[],int N,char *n);//按学号的查找方式

void search2(student s[],int N,string x);//按姓名的查找方式

void Delete(student s[],int &N,string mmm) ;//删除学生信息

void main()
{
welcome(); system("pause"); system("cls");system("COLOR 73");
int renshu=0;
int order=0;
while (order!=7)
{
cout<<"`````````````````````命令菜单`````````````````"<cout<<"```````````````1.开始输入四门学科名```````````"<cout<<"```````````````2.开始输入学生信息```(姓名为“结束”时结束统计)```````````"<cout<<"```````````````3.打印所有排名``````````````````"<cout<<"```````````````4.查找某学生的信息`````"<cout<<"```````````````5.修改某学生的信息`````"<cout<<"```````````````6.删除某学生的信息"<cout<<"```````````````7.退出系统```````````````"<cout<<"¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥"<cout<<"请输入命令"<cin>>order;
switch(order)
{
case 1:
{
luruxk(x[0]);
}
break;
case 2:
{
cout<<"=================请输入学生信息====================="<++renshu;
for(int i=0;i{
cout<<"请输入第"<luru(s[i],x[0]);
count(s[i]);
++renshu;
if(s[i].name=="结束")
{
--renshu;
--renshu;
}
}
}
break;
case 3:
{
system("cls");
printxk(x[0]);
paixu(s,renshu);
for(int i=0;iprint_and_write(s[i]);
}
break;
case 4:
{
cout<<"请选择查找方式:"

<cout<<"1.按学号"<<"\t"<<"2.按名字"<int mingling=0;
cin>>mingling;
switch(mingling)
{
case 1:
{
char code[10];
cout<<"请输入要查找的学号: ";
cin>>code;
int result=search1(s,renshu,code);
if (result==-1)
cout<<"查找的学号不存在"<else
cout<<"\n你要查找的信息已经找到"<print(s[result]);
}
break;
case 2:
{
string t;
cout<<"请输入你要查找的姓名:"<cin>>t;
search2(s,renshu,t);
}
break;
}
}
break;
case 5:
{
int a=0;
cout<<"请选择查找方式:===①:按姓名②:按学号"<cin>>a;
if(a==1)
{
bool flag=false;
string nam;
cout<<"请输入要查找的姓名"<cin>>nam;

for(int i=0;i{
if(s[i].name==nam)
{
cout<cout<<"学号: ";
cin>>s[i].number;
cout<cin>>s[i].xuekea;
cout<cin>>s[i].xuekeb;
cout<cin>>s[i].xuekec;
cout<cin>>s[i].xueked;
s[i].total=(s[i].xuekea+s[i].xuekeb+s[i].xuekec+s[i].xueked);
s[i].average=s[i].total/4;
cout<<"信息修改完毕"<flag=true;
break;
}
}

if(flag==false)cout<<"信息貌似不存在";

}

if(a==2)
{
char cod[10];
cout<<"请输入学生号";
cin>>cod;
int jieguo=search1(s,renshu,cod);
if(jieguo==-1)
cout<<" sorry 未找到"<else
{
cout<cout<<"学号"<<"\t";
cin>>s[jieguo].number;
cout<cin>>s[jieguo].xuekea;
cout<cin>>s[jieguo].xuekeb;
cout<cin>>s[jieguo].xuekec;
cout<cin>>s[jieguo].xueked;
s[jieguo].total=(s[jieguo].xuekea+s[jieguo].xuekeb+s[jieguo].xuekec+s[jieguo].xueked);
s[jieguo].average=s[jieguo].total/4;
cout<<"信息修改完毕"<}
}
if(a!=1&&a!=2)
{
cout<<"命令有误"<main();
}
}
break;

case 6:
{
string m_z;
cout<<"请输入你要删除的学生的名字: "<cin>>m_z;
Delete(s

,renshu,m_z);
}
break;

case 7:
break;
default:
cout<<"请在0到6之间选择"<}
}
}
void welcome(void)
{
system("COLOR 3f");
cout<<" --------【学生信息管理系统】-------\n";
cout<<" 制作人: 李晓东 指导人:杨燕翔 \n";
cout<<" $$$$$$$$$$$$\n";
cout<<" $$\n";
cout<<" $$\n";
cout<<" $$\n";
cout<<" $$$$$$$$$$$$\n";
cout<<" $$\n";
cout<<" $$\n";
cout<<" $$\n";
cout<<" $$$$$$$$$$$$$\n";
cout<<" ¥¥¥¥¥¥¥¥¥¥\n";
cout<<" ¥¥¥¥¥¥¥¥¥¥\n";
cout<<" ¥¥ \n";
cout<<" ¥¥ \n";
cout<<" ¥¥ \n";
cout<<" ¥¥ \n";
cout<<" ¥¥ \n";
cout<<" ¥¥ \n";
cout<<" ¥¥ \n";
cout<<" ¥¥ \n";
cout<<" ¥¥ \n";



}
void luruxk(xueke &x)
{
system("cls");
cout<<"=================请输入学科信息====================="<cout<<"请输入第一个学科的名字:";
cin>>x.mingzia;
cout<cout<<"请输入第二个学科的名字:";
cin>>x.mingzib;
cout<cout<<"请输入第三个学科的名字:";
cin>>x.mingzic;
cout<cout<<"请输入第四个学科的名字:";
cin>>x.mingzid;
}

void luru(student &s,xueke &x)
{
cout<<"======姓名:";
cin>>https://www.wendangku.net/doc/392079375.html,;
cout<if(https://www.wendangku.net/doc/392079375.html,!="结束")
{
cout<<"======学号:";
cin>>s.number;
cout<cout<<"======"<cin>>s.xuekea;
cout<cout<<"======"<cin>>s.xuekeb;
cout<cout<<"======"<cin>>s.xuekec;
cout<cout<<"======"<cin>>s.xueked;
cout<}
else
cout<<"统计结束"<

}

int search1(student s[],int N,char *c)
{
for (int i=0;i{
if(strcmp(s[i].number,c)==0)
return i;
}
return -1;
}
void search2(student s[],int N,string xm)
{
bool flag=false;
for(int i=0;iif(s[i].name==xm)
{
cout<<"信息被找到内容如下:"<print(s[i]);
flag=true;
break;
}
if(flag==false)cout<<"信息貌似不存在";
}
void count(student &s)
{
s.total=0;
s.average=0;
s.rank=0;
s.total=s.xuekea+s.xuekeb+s.xuekec+s.xueked;
s.average=s.total/4;
}

void print(student &s)
{
cout<<"=========姓名"<<"\t"<cout<<"=========排名"<<"\t"<cout<<"=========学号"<<"\t"<co

ut<<"========="<cout<<"========="<cout<<"========="<cout<<"========="<cout<}
void printxk(xueke &x)
{
ofstream outfile("成绩备份.txt",ios::out|ios::app);
if(! outfile)
{
cerr<<"open error!"<exit(1);
}
cerr<<"排名"<<"\t"<<"姓名"<<"\t"<<"学号"<<"\t\t"<outfile<<"排名"<<"\t"<<"姓名"<<"\t"<<"学号"<<"\t\t"<outfile.close();
}


void print_and_write(student &s)
{
ofstream outfile("成绩备份.txt",ios::out|ios::app);
if(! outfile)
{
cerr<<"open error!"<exit(1);
}
cerr<outfile<outfile.close();
}

void paixu(student s[],int N)
{
student itemp;
for(int i=0;i<(N-1);i++)
{
for(int j=i+1;j{
if(s[i].total{
itemp=s[i];
s[i]=s[j];
s[j]=itemp;
}
}
}
for(int j=0;js[j].rank=j+1;
}

void Delete(student s[],int &N,string mmm) //按名字查找信息,删除信息。
{
int i=0,j;
while(s[i].name!=mmm&&iif(i==N)
{
cout<<"\t没有发现该学生资料!\n"; /*返回失败信息*/
}
else
{
for(j=i;j{
s[j]=s[j+1];

}
cout<<"\t"<<"当前信息已删除成功!"<N--;
}
}

相关文档