C++课程设计:学生成绩管理系统

学校学生成绩管理

假设一个学校成绩管理要管理的学生信息包括:班级、学号、姓名、学期、每门课程的成绩(每学期的课程门数是不一样的) ,对学生的成绩信息进行管理。

要求实现如下的功能:

实现:学生信息的录入;修改;删除和查询,按学期、学号、成绩不及格等查询。

⑴ 输入学生的成绩信息,包含学号、姓名、性别等基本信息和各课成绩

⑵ 显示全部学生各科成绩信息;

⑶ 对各科分班进行成绩统计分析(总分、平均分、最高分、最低分、及格率等);

⑷ 统计各科各分数段人数及班级信息;

⑸ 按学号或姓名查找并显示某个学生的各科成绩;

⑹ 按课程成绩或总分由高到低排序显示;

⑺ 更新某个学生的基本信息或课程成绩;

⑻ 设计一个菜单,具有上述规定的操作要求、退出系统等最基本的功能。

/****************************************************************
************     学生成绩管理系统     ***************************
****************************************************************/
#include <iostream>  
#include <cstring>  
#include <iomanip>  
#include <cstdlib>  
#include <fstream>  
#include <string>  
#include <cctype>  
using namespace std;  
const int SIZE=20;  
struct student  
{  
 char classnum[SIZE];                                            //班级  
 char id[SIZE];                                                  //学号  
 char name[SIZE];                                                //姓名  
 int *score;  
};  
void input(student p[], string c_name[],int s_num,int c_num);    //输入学生的成绩信息,包括学号、姓名、性别等基本信息和各科成绩  
void show(student p[], string c_name[],int s_num,int c_num);     // 显示全部学生各科成绩信息;  
void statistic(student p[], string c_name[],int s_num,int c_num);//对各科分班进行成绩统计分析,计算总分、平均分、最高分、最低分、及格率等;  
void section(student p[], string c_name[],int s_num,int c_num);  //统计各个科目各分数段人数及班级信息;  
void search(student p[], string c_name[],int s_num,int c_num);   //按学号或姓名查找并显示某个学生的各科成绩;  
void sort(student p[], string c_name[],int s_num,int c_num);     //按课程成绩或总分由高到低排序显示;  
void update(student p[], string c_name[],int s_num,int c_num);   //更新某个学生的基本信息或课程成绩;  
void quicksort(int s[],int l,int r);              //快速排序  
void fileout(student p[], string c_name[],int s_num,int c_num,int semester);//文件形式输出  
int main()  
{  
    cout<<setw(25)<<" "<<"欢迎使用本系统!"<<endl;  
    cout<<"********************************************************************************"<<endl<<endl;  
    cout<<"****************************《学生成绩管理系统》********************************"<<endl<<endl;  
    cout<<"********************************************************************************"<<endl;  
    int n=0;  
    int student_num;//学生数  
    int semester;//学期  
    int cour_num;//课程数  
    cout<<"是否从文档中读取基础信息?(Y/N):";  
    char first_sel;  
    cin>>first_sel;  
    cin.get();  
    while(tolower(first_sel)!='y'&&tolower(first_sel)!='n')  
    {  
        cout<<"输入有误,请重新输入(Y/N):";  
        cin>>first_sel;  
        cin.get();  
    }  
    if(tolower(first_sel)=='y')  
    {  
        ifstream fin;  
        n=1;  
        cout<<"****************      说明:                                  ****************"<<endl;  
        cout<<"****************      如上次保存的文档名为student.txt         ****************"<<endl;  
        cout<<"****************      则读取的文档名为basic_student.txt。     ****************"<<endl;  
        cout<<"请输入基本信息文档名:";  
        char _fname[SIZE];  
        cin.getline(_fname,SIZE);  
        fin.open(_fname);  
        while(!fin.is_open())  
        {  
            cout<<"不能打开此文档名的文档,请重新输入:";  
            cin.getline(_fname,SIZE);  
            fin.open(_fname);  
        }  
        fin>>student_num;  
        fin.get();  
        fin>>semester;  
        fin.get();  
        fin>>cour_num;  
        fin.get();  
        fin.close();  
        system("pause");  
        system("cls");  
    }  
    else  
    {  
        cout<<setfill('=')<<setw(32);  
        cout<<"请输入学生人数:";  
        cin>>student_num;  
        while(!cin.good())  
        {  
            cin.clear();  
            cin.sync();  
            cout<<"输入有误!请重新输入学生个数: ";  
            cin>>student_num;  
            cin.get();  
        }  
        cout<<"================";  
        cout<<"请输入学期(以数字形式):";  
        cin>>semester;  
        while(!cin.good())  
        {  
            cin.clear();  
            cin.sync();  
            cout<<"输入有误!请重新输入学期: ";  
            cin>>student_num;  
            cin.get();  
        }  
        cout<<setfill('=')<<setw(25);  
        cout<<"请输入第 "<<semester<<" 学期的课程数目: ";  
        cin>>cour_num;  
        cin.get();  
        while(!cin.good())  
        {  
            cin.clear();  
            cin.sync();  
            cout<<"输入有误!请重新输入第 "<<semester<<" 学期的课程数目: ";  
            cin>>cour_num;  
            cin.get();  
        }  
  
    }  
    student *p=new student[student_num];  
    string *cour_name=new string[cour_num];  
    if(tolower(first_sel)=='y')  
    {  
        ifstream fin;  
        cout<<"****************      说明:                                 ******************"<<endl;  
        cout<<"****************      如上次保存的文档名为student.txt        ******************"<<endl;  
        cout<<"****************      则读取的文档名为course_student.txt。   ******************"<<endl;  
        cout<<"请输入课程信息文档名:";  
        char _fname[SIZE];  
        cin.getline(_fname,SIZE);  
        fin.open(_fname);  
        while(!fin.is_open())  
        {  
            cout<<"不能打开此文档名的文档,请重新输入:";  
            cin.getline(_fname,SIZE);  
            fin.open(_fname);  
        }  
        for(int i=0;i<cour_num;i++)  
        {  
            getline(fin,cour_name[i]);  
        }  
        fin.close();  
        system("pause");  
        system("cls");  
    }  
    else  
    {  
		int i;
        for(i=0;i<cour_num;i++)  
        {  
            cout<<setfill('=')&
  • 20
    点赞
  • 135
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值