能够基本实现学生成绩管理系统,其中包括对学生信息的插入,显示,删除,修改,对学生成绩进行排序功能,还能够将数据保存至文件中。

#include <iostream>
#include <cstdlib>
#include <string>
#include<fstream>
#include<cstdlib>
#include<cstring>
using namespace std;
class student//学生类
{
public:
~student();//析构函数
void display();
void input();//输入学生信息void show();//输出学生信息
void Delete();//删除学生信息
void seek();//查找学生信息
void update();//改动学生信息
void sort();//对学生的语文成绩排序
friend ostream& operator<<(ostream &ostream,student &s);
private:
student *s;     //学生类指针
int stu_num;       //学生的人数
string name;    //姓名
string num;         //学号
int escore;    //英语成绩
int mscore;    //高数成绩
int cscore;    //c++成绩
int sum;       //总分
};
ostream& operator<<(ostream &ostream,student &s)
{
ostream<<s.name<<","<<s.num<<","<<s.escore<<","<<s.mscore<<","<<s.cscore<<","<<s.sum<<endl;
return ostream;
}
int main()
{
int Item;//操作命令student s;//学生对象
s.display();
while(1)
{cout<<"请选择操作命令:";cin>>Item;//system("cls");//清屏switch(Item){case 1://输入学生信息{s.input();}break;case 2://输出学生信息{s.show();}break;case 3://删除学生信息{s.Delete();}break;case 4://查找学生信息{s.seek();}break;case 5://改动学生信息{s.update();}break;case 6://对学生排序{s.sort();s.show();}break;case 7:break;default:break;}
}
return 0;
}
//界面函数
void student :: display()
{
printf("*********************************\n");
printf("    欢迎进入学生成绩管理系统     \n");
printf("*********************************\n");
printf("\n");
printf("\n");
printf("*********************************\n");
printf("              主菜单             \n");
printf("\n");
printf("     【1】输入学生基本信息       \n");
printf("     【2】显示学生基本信息       \n");
printf("     【3】删除学生基本信息       \n");
printf("     【4】查询学生基本信息       \n");
printf("     【5】修改学生基本信息       \n");
printf("     【6】排序学生基本信息       \n");
printf("   【7】关闭学生成绩管理系统     \n");
printf("\n");
printf("\n");
printf("*********************************\n");
printf("\n");
printf("\n");
printf("*************若有侵权************\n");
printf("************律师函警告***********\n");
}
//析构函数
student::~student()
{delete(s);}//输入学生的信息void student :: input (){
system("cls");
cout<<"*****************************"<<endl;
cout<<"***********输入信息**********"<<endl;
cout<<"*****************************"<<endl;
int len;//学生的人数
cout<<"请输入学生人数:";
cin>>len;
cin.get();
while(!cin.good())
{cin.clear();cin.sync();cout<<"输入有误!请重新输入:";cin>>len;cin.get();
}
stu_num = len;s = new student[stu_num];for(int i=0; i<len; i++)
{cout<<"请输入第"<<i+1<<"个学生的姓名:";cin>>s[i].name;cin.get();while(!cin.good()){cin.clear();cin.sync();cout<<"输入有误!请重新输入:";cin>>s[i].name;cin.get();}cout<<"请输入第"<<i+1<<"个学生的学号:";cin>>s[i].num;cin.get();while(!cin.good()){cin.clear();cin.sync();cout<<"输入有误!请重新输入:";cin>>s[i].num;cin.get();}for(int b=0; b<stu_num; b++){if(b==i)b++;if(s[b].num==s[i].num){cout<<"与已有学生的学号重复,请重新输入:";cin>>s[i].num;cin.get();while(!cin.good()){cin.clear();cin.sync();cout<<"输入有误!请重新输入: ";cin>>s[i].num;cin.get();}}}cout<<"请输入第"<<i+1<<"个学生的英语成绩:";cin>>s[i].escore;cin.get();while(!cin.good()){cin.clear();cin.sync();cout<<"输入有误!请重新输入:";cin>>s[i].escore;cin.get();}while(s[i].escore>100 || s[i].escore<0){cout<<"输入有误!请重新输入:";cin>>s[i].escore;cin.get();while(!cin.good()){cin.clear();cin.sync();cout<<"输入有误!请重新输入:";cin>>s[i].escore;cin.get();}}cout<<"请输入第"<<i+1<<"个学生的数学成绩:";cin>>s[i].mscore;cin.get();while(!cin.good()){cin.clear();cin.sync();cout<<"输入有误!请重新输入:";cin>>s[i].mscore;cin.get();}while(s[i].mscore>100 || s[i].mscore<0){cout<<"输入有误!请重新输入:";cin>>s[i].mscore;cin.get();while(!cin.good()){cin.clear();cin.sync();cout<<"输入有误!请重新输入:";cin>>s[i].mscore;cin.get();}}cout<<"请输入第"<<i+1<<"个学生的c++成绩:";cin>>s[i].cscore;cin.get();while(!cin.good()){cin.clear();cin.sync();cout<<"输入有误!请重新输入:";cin>>s[i].cscore;cin.get();}while(s[i].cscore>100 || s[i].cscore<0){cout<<"输入有误!请重新输入:";cin>>s[i].cscore;cin.get();while(!cin.good()){cin.clear();cin.sync();cout<<"输入有误!请重新输入:";cin>>s[i].cscore;cin.get();}}s[i].sum = s[i].escore + s[i].mscore + s[i].cscore;ofstream fb("f1.txt",ios::out);if(!fb){cout<<"打开文件失败!"<<endl;abort();}fb.seekp(0,ios::end);for(int j=0; j<stu_num; j++){fb<<s[j].name<<"\t"<<s[j].num<<"\t"<<s[j].escore<<"\t"<<s[j].mscore<<"\t"<<s[j].cscore<<"\t"<<s[j].sum;cout<<endl;}fb.close();system("cls");
}
}
//输出学生的信息
void student::show()
{
system("cls");
cout<<"*****************************"<<endl;
cout<<"***********显示结果**********"<<endl;
cout<<"*****************************"<<endl;
cout<<"姓名\t\t学号\t\t英语\t\t数学\t\tc++\t\t总分"<<endl;
fstream fa("f1.txt",ios :: binary | ios :: in);
if(!fa)
{cout<<"该文件打不开!"<<endl;abort();       //退出程序
}
fa.seekg(0,ios::beg);
for(int i=0; i<stu_num; i++)
{cout<<s[i].name<<"\t\t"<<s[i].num<<"\t\t"<<s[i].escore<<"\t\t"<<s[i].mscore<<"\t\t"<<s[i].cscore<<"\t\t"<<s[i].sum<<endl;
}
fa.close();
}
void student::Delete()//删除学生信息
{
system("cls");
cout<<"*****************************"<<endl;
cout<<"***********删除记录**********"<<endl;
cout<<"*****************************"<<endl;
cout<<endl;
char q;
cout<<"请选择根据学生姓名或者学号删除记录(n/x):";cin>>q;
cin.get();
while(q!='n'&& q!='x')
{cout<<"输入有误,请重新输入:";cin>>q;cin.get();
}
if(q=='n')
{string sr;cout<<"请输入你须要删除的学生的姓名:";cin>>sr;while(!cin.good()){cin.clear();cin.sync();cout<<"输入有误!请重新输入:";cin>>sr;cin.get();}fstream fc("f1.txt",ios::in|ios::out|ios::binary);if(!fc){cout<<"打开文件失败!"<<endl;abort();}fc.seekg(0,ios::beg);int n;//标记姓名相等时的下标int r=0;//寻找姓名相等时的下标for(int i=0; i<stu_num; i++){//当姓名相等时if(sr ==s[i].name){r++;cout<<"找到该同学!"<<endl;n=i;for(int j=n+1; j<stu_num; j++){s[j-1] = s[j];}stu_num -= 1;for(int k=0; k<stu_num; k++){fc<<s[k].name<<"\t"<<s[k].num<<"\t"<<s[k].escore<<"\t"<<s[k].mscore<<"\t"<<s[k].cscore<<"\t"<<s[k].sum;cout<<endl;}cout<<"删除成功!"<<endl;fc.close();}}if(r==0){cout<<"查无此人!请重新输入:";cin>>sr;cin.get();}}
else if(q=='x')
{string sa;cout<<"请输入你须要删除的学生的学号:";cin>>sa;while(!cin.good()){cin.clear();cin.sync();cout<<"输入有误!请重新输入:";cin>>sa;cin.get();}fstream fw("f1.txt",ios::in|ios::out|ios::binary);if(!fw){cout<<"打开文件失败!"<<endl;abort();}fw.seekg(0,ios::beg);int m;//标记姓名相等时的下标int o=0;//寻找姓名相等时的下标for(int i=0; i<stu_num; i++){//当姓名相等时if(sa == s[i].num){m = i;o++;cout<<"找到该同学!"<<endl;for(int j=m+1; j<stu_num; j++){s[j-1] = s[j];}stu_num -= 1;//学生人数降低一个for(int a=0; a<stu_num; a++){fw<<s[a].name<<"\t"<<s[a].num<<"\t"<<s[a].escore<<"\t"<<s[a].mscore<<"\t"<<s[a].cscore<<"\t"<<s[a].sum;cout<<endl;}cout<<"删除成功!"<<endl;fw.close();}}if(o==0){cout<<"查无此人!请重新输入:";cin>>sa;cin.get();}}
}
void student::seek()//查找学生信息
{
system("cls");
cout<<"*****************************"<<endl;
cout<<"***********查找记录**********"<<endl;
cout<<"*****************************"<<endl;
cout<<endl;
cout<<"请选择根据学号或者姓名查找2/1):(";
char se;
cin>>se;
while(se!='1'&&se!='2')
{cout<<"输入有误!请重新输入:";cin>>se;cin.get();
}
if(se=='1')
{string name;cout<<"请输入你须要查找的学生的姓名:";cin>>name;while(!cin.good()){cin.clear();cin.sync();cout<<"输入有误!请重新输入:";cin>>name;cin.get();}fstream fd("f1.txt",ios::in|ios::out|ios::binary);if(!fd){cout<<"文件打开失败!"<<endl;abort();}fd.seekg(0,ios::beg);cout<<"姓名\t\t学号\t\t英语\t\t数学\t\tc++\t\t总分"<<endl;int i;int h=0;for(i=0; i<stu_num; i++){if(name == s[i].name){h++;cout<<s[i].name<<"\t\t"<<s[i].num<<"\t\t"<<s[i].escore<<"\t\t"<<s[i].mscore<<"\t\t"<<s[i].cscore<<"\t\t"<<s[i].sum<<endl;fd.close();}}if(h==0){cout<<"查无此人!请重新输入:";cin>>name;cin.get();}}
else if(se=='2')
{string id;cout<<"请输入你须要查找的学生的学号:";cin>>id;while(!cin.good()){cin.clear();cin.sync();cout<<"输入有误!请重新输入:";cin>>id;cin.get();}fstream fe("f1.txt",ios::in|ios::out|ios::binary);if(!fe){cout<<"文件打开失败!"<<endl;abort();}fe.seekg(0,ios::beg);cout<<"姓名\t\t学号\t\t英语\t\t数学\t\tc++\t\t总分"<<endl;int j;int g=0;for(j=0; j<stu_num; j++){if(id == s[j].num){g++;cout<<s[j].name<<"\t\t"<<s[j].num<<"\t\t"<<s[j].escore<<"\t\t"<<s[j].mscore<<"\t\t"<<s[j].cscore<<"\t\t"<<s[j].sum<<endl;fe.close();}}if(g==0){cout<<"查无此人!请重新输入:";cin>>id;cin.get();}}
}
void student::update()//改动学生信息
{
system("cls");
cout<<"*****************************"<<endl;
cout<<"***********查找记录**********"<<endl;
cout<<"*****************************"<<endl;
cout<<endl;
cout<<"请选择根据学号或者姓名查找(2/1):";
char sf;
cin>>sf;
while(sf!='1'&&sf!='2')
{cout<<"输入有误!请重新输入:";cin>>sf;cin.get();
}
if(sf=='1')
{string name1;cout<<"请输入你须要更新的学生的姓名:";cin>>name1;while(!cin.good()){cin.clear();cin.sync();cout<<"输入有误!请重新输入:";cin>>name1;cin.get();}fstream ff("f1.txt",ios::in|ios::out|ios::binary);if(!ff){cout<<"文件打开失败!"<<endl;abort();}ff.seekg(0,ios::beg);int i;int u=0;for(i=0; i<stu_num; i++){if(name1 == s[i].name){u++;cout<<"改动前学生的信息:"<<endl;cout<<s[i].name<<" "<<s[i].num<<"  "<<s[i].escore<<" "<<s[i].mscore<<" "<<s[i].cscore<<" "<<s[i].sum<<endl<<endl;cout<<"请输入学生的学号:";cin>>s[i].num;cin.get();while(!cin.good()){cin.clear();cin.sync();cout<<"输入有误!请重新输入:";cin>>s[i].num;cin.get();}for(int c=0; c<stu_num; c++){if(c==i)c++;if(s[c].num==s[i].num){cout<<"与已有学生的学号重复,请重新输入:";cin>>s[i].num;cin.get();while(!cin.good()){cin.clear();cin.sync();cout<<"输入有误!请重新输入: ";cin>>s[i].num;cin.get();}}}cout<<"请输入学生的英语成绩:";cin>>s[i].escore;cin.get();while(!cin.good()){cin.clear();cin.sync();cout<<"输入有误!请重新输入:";cin>>s[i].escore;cin.get();}while(s[i].escore>100 || s[i].escore<0){cout<<"输入有误!请重新输入:";cin>>s[i].escore;cin.get();while(!cin.good()){cin.clear();cin.sync();cout<<"输入有误!请重新输入:";cin>>s[i].escore;cin.get();}}cout<<"请输入学生的数学成绩:";cin>>s[i].mscore;cin.get();while(!cin.good()){cin.clear();cin.sync();cout<<"输入有误!请重新输入:";cin>>s[i].mscore;cin.get();}while(s[i].mscore>100 || s[i].mscore<0){cout<<"输入有误!请重新输入:";cin>>s[i].mscore;cin.get();while(!cin.good()){cin.clear();cin.sync();cout<<"输入有误!请重新输入:";cin>>s[i].mscore;cin.get();}}cout<<"请输入学生的c++成绩:";cin>>s[i].cscore;cin.get();while(!cin.good()){cin.clear();cin.sync();cout<<"输入有误!请重新输入:";cin>>s[i].cscore;cin.get();}while(s[i].cscore>100 || s[i].cscore<0){cout<<"输入有误!请重新输入:";cin>>s[i].cscore;cin.get();while(!cin.good()){cin.clear();cin.sync();cout<<"输入有误!请重新输入:";cin>>s[i].cscore;cin.get();}}s[i].sum = s[i].escore + s[i].mscore + s[i].cscore;for(int x=0; x<stu_num; x++){ff<<s[x].name<<"\t"<<s[x].num<<"\t"<<s[x].escore<<"\t"<<s[x].mscore<<"\t"<<s[x].cscore<<"\t"<<s[x].sum;cout<<endl;}ff.close();}}if(u==0){cout<<"查无此人!请重新输入:";cin>>name1;cin.get();}}
if(sf=='2')
{string id1;cout<<"请输入你须要更新的学生的学号:";cin>>id1;while(!cin.good()){cin.clear();cin.sync();cout<<"输入有误!请重新输入:";cin>>id1;cin.get();}fstream fg("f1.txt",ios::in|ios::out|ios::binary);if(!fg){cout<<"文件打开失败!"<<endl;abort();}fg.seekg(0,ios::beg);int i;int v=0;for(i=0; i<stu_num; i++){if(id1 == s[i].num){v++;cout<<"改动前学生的信息:"<<endl;cout<<s[i].name<<" "<<s[i].num<<"  "<<s[i].escore<<" "<<s[i].mscore<<" "<<s[i].cscore<<" "<<s[i].sum<<endl<<endl;cout<<"请输入学生的姓名:";cin>>s[i].name;cin.get();while(!cin.good()){cin.clear();cin.sync();cout<<"输入有误!请重新输入:";cin>>s[i].name;cin.get();}cout<<"请输入学生的英语成绩:";cin>>s[i].escore;cin.get();while(!cin.good()){cin.clear();cin.sync();cout<<"输入有误!请重新输入:";cin>>s[i].escore;cin.get();}while(s[i].escore>100 || s[i].escore<0){cout<<"输入有误!请重新输入:";cin>>s[i].escore;cin.get();while(!cin.good()){cin.clear();cin.sync();cout<<"输入有误!请重新输入:";cin>>s[i].escore;cin.get();}}cout<<"请输入学生的数学成绩:";cin>>s[i].mscore;cin.get();while(!cin.good()){cin.clear();cin.sync();cout<<"输入有误!请重新输入:";cin>>s[i].mscore;cin.get();}while(s[i].mscore>100 || s[i].mscore<0){cout<<"输入有误!请重新输入:";cin>>s[i].mscore;cin.get();while(!cin.good()){cin.clear();cin.sync();cout<<"输入有误!请重新输入:";cin>>s[i].mscore;cin.get();}}cout<<"请输入学生的c++成绩:";cin>>s[i].cscore;cin.get();while(!cin.good()){cin.clear();cin.sync();cout<<"输入有误!请重新输入:";cin>>s[i].cscore;cin.get();}while(s[i].cscore>100 || s[i].cscore<0){cout<<"输入有误!请重新输入:";cin>>s[i].cscore;cin.get();while(!cin.good()){cin.clear();cin.sync();cout<<"输入有误!请重新输入:";cin>>s[i].cscore;cin.get();}}s[i].sum = s[i].escore + s[i].mscore + s[i].cscore;for(int y=0; y<stu_num; y++){fg<<s[y].name<<"\t"<<s[y].num<<"\t"<<s[y].escore<<"\t"<<s[y].mscore<<"\t"<<s[y].cscore<<"\t"<<s[y].sum;cout<<endl;}fg.close();}}if(v==0){cout<<"查无此人!请重新输入:";cin>>id1;cin.get();}}
}
void student::sort()//对学生排序
{
//提供插入数组中的数据
cout<<"***************************"<<endl;
cout<<"***********1.英语**********"<<endl;
cout<<"***********2.数学**********"<<endl;
cout<<"***********3.c++***********"<<endl;
cout<<"***********4.总分**********"<<endl;
cout<<"***********5.学号**********"<<endl;
cout<<"***************************"<<endl;
char sel='a';
cout<<"请输入你的选择:";
cin>>sel;
if(sel == '1')
{for(int i=1; i<stu_num; i++){int j = i-1;//插入数组中的数据student temp = s[i];while(temp.escore > s[j].escore && j>=0){s[j+1]  = s[j];j--;}s[++j] = temp;}
}else if(sel == '2')
{//提供插入数组中的数据for(int i=1; i<stu_num; i++){int j = i-1;//插入数组中的数据student temp = s[i];while(temp.mscore > s[j].mscore && j>=0){s[j+1]  = s[j];j--;}s[++j] = temp;}
}else if(sel == '3')
{//提供插入数组中的数据for(int i=1; i<stu_num; i++){int j = i-1;//插入数组中的数据student temp = s[i];while(temp.cscore > s[j].cscore && j>=0){s[j+1]  = s[j];j--;}s[++j] = temp;}
}else if(sel == '4')//对学生的总分排序
{//提供插入数组中的数据for(int i=1; i<stu_num; i++){int j = i-1;//插入数组中的数据student temp = s[i];while(temp.sum  > s[j].sum && j>=0){s[j+1]  = s[j];j--;}s[++j] = temp;}
}else if(sel == '5')
{for(int i=1; i<stu_num; i++){int j = i-1;//插入数组中的数据student temp = s[i];while(temp.num  > s[j].num && j>=0){s[j+1]  = s[j];j--;}s[++j] = temp;}}
}

利用c++完成学生成绩管理系统相关推荐

  1. c语言利用指针函数等完成学生成绩管理系统,课程设计C语言可视化程序学生成绩管理系统...

    <课程设计C语言可视化程序学生成绩管理系统>由会员分享,可在线阅读,更多相关<课程设计C语言可视化程序学生成绩管理系统(37页珍藏版)>请在人人文库网上搜索. 1.C语言可视化 ...

  2. 学生成绩管理系统利用数据结构顺序表来进行二分查找,直接插入,快速排序操作

    一.实验目的 1.掌握查找的不同方法,并能用高级语言实现查找算法. 2.熟练掌握顺序表和有序表的顺序查找和二分查找方法. 3.掌握排序的不同方法,并能用高级语言实现排序算法. 4.熟练掌握顺序表的选择 ...

  3. 用C语言实现一个学生成绩管理系统 实现学生信息管理。包括:录入、查询、排序等功能。 要求: 用数据文件保存学生基本信息(学号 姓名 课程1 课程2 课程3…) ,利用菜单可以循环实现各个功能。

    用C语言实现一个学生成绩管理系统 题目: 学生成绩管理系统 功能: 实现学生信息管理.包括:录入.查询.排序等功能. 要求: 用数据文件保存学生基本信息(学号 姓名 课程1 课程2 课程3-) ,利用 ...

  4. C语言学生成绩简单,C语言实现简单学生成绩管理系统.pdf

    C语言实现简单学生成绩管理系统 这篇文章主要为大家详细介绍了C语言实现简单学生成绩管理系统,具有 定的参考价值,感兴趣的小伙伴们可以 参考 下 本文实例为大家分享了C语言实现学生成绩管理系统的具体代码 ...

  5. C实现的一个简单的学生成绩管理系统

    /*学生成绩管理系统 */ //#include "StdAfx.h" #include "stdio.h"   /*标准输入输出函数库*/ #include ...

  6. java计算并显示学生的成绩_Java开学测试-学生成绩管理系统

    题目: 1.定义 ScoreInformation 类,其中包括七个私有变量(stunumber, name, mathematicsscore, englishiscore,networkscore ...

  7. 测试学生成绩的软件,《软件测试-学生成绩管理系统》.doc

    宿迁学院 软件测试 -学生成绩管理系统 姓名: ***** 班级:计算机(3)班 学号:****** 系部: 三 系 指导老师:***** 成绩: 目录 目录2 1引言3 1.1开发系统目标3 1.2 ...

  8. 学生成绩管理系统实验报告_学生成绩管理系统设计

    1.题目与要求 1.1问题提出 设计学生成绩管理系统,有N个学生,每个学生的数据包含学号(不重复).姓名.三门课的成绩及平均成绩,试设计一学生成绩管理系统 1.2本系统涉及的知识点 结构体数组.结构体 ...

  9. 按平均成绩排行c语言文件操作,学生成绩管理系统(c语言结构体以及文件操作)实验报告精选.doc...

    学生成绩管理系统(c语言结构体以及文件操作)实验报告精选 C程序设计 实验报告 编号: 姓名院系学号任课教师于萧指导教师实验地点实验时间实验名称文件操作同 组 人无预习报告(对实验主要内容的认识)得分 ...

最新文章

  1. ATSS : 目标检测的自适应正负anchor选择,很扎实的trick | CVPR 2020
  2. GANs笔记(1) - 初步了解 GANs
  3. Jetson Nano and VIM3硬件参数对比及目标检测性能对比
  4. 月老盲盒小纸条微信云开发小程序源码
  5. 阿里首款自研芯片含光800问世!算力相当于10个CPU,性能超第二名4倍!
  6. 项目实训第一周(车道线检测)
  7. 全文搜索引擎有哪些?_你想要拥有自己的搜索引擎吗?
  8. 实体和电商哪个更能赚到?
  9. 为hadoop集群安装mapreduce
  10. vscode中文_VS Code 中文社区正式成立啦!VS Code Day 圆满落幕!
  11. 大多数元素python_学Python必知的20个技巧,掌握它们,准没错
  12. java类库中的设计模式
  13. 图像降噪算法——从BM3D到VBM4D
  14. Ubuntu18.04下的模拟神器RetroArch
  15. poco库 文件服务器,poco
  16. 什么是combo复用口,光电类型如何转换?
  17. 纵向表格转为横向表格
  18. 1197:山区建小学
  19. 09|自研or借力(下):集成Gin替换已有核心
  20. Spring Boot 学习[四] web项目实战训练(增删改查,分页,排序)

热门文章

  1. python中文格式化输出_python format 格式化输出方法
  2. 《少有人走的路:心智成熟的旅程》笔记
  3. 微信网页授权(前端)
  4. Iphone 免费申请App ID
  5. 线性回归预测波士顿房价
  6. 【增广贤集】先学会说话
  7. ps修改图片中的文字、数字
  8. 【文档】web系统非功能性需求
  9. SASO认证价格多少?
  10. 双极化天线及其下倾技术(转)