/****************************************************************
************ 学生成绩管理系统 ***************************
****************************************************************/
#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('=')<<setw(25);
cout<<"请输入第 "<<i+1<<" 个课程名:";
cin>>cour_name[i];
cin.get();
}
}
int i;
int **all_score=new int*[student_num];
for(i=0;i<student_num;i++)
all_score[i]=new int[cour_num];
for(i=0;i<student_num;i++)
p[i].score=&all_score[i][0];
if(tolower(first_sel)=='y')
{
ifstream fin;
cout<<"****************** 说明: ******************"<<endl;
cout<<"****************** 如上次保存的文档名为student.txt ******************"<<endl;
cout<<"****************** 则读取的文档名为student_student.txt。 ******************"<<endl;
cout<<"请输入学生信息文档名:";
char _fname[SIZE];
cin.getline(_fname,SIZE);
fin.open(_fname);
while(!fin.is_open())
{
cout<<"不能打开此文档名的文档,请重新输入:";
cin.getline(_fname,SIZE);
fin.ope
C++课程设计:学生成绩管理系统
最新推荐文章于 2023-06-07 15:18:10 发布
这篇博客介绍了作者使用C++编程实现的一个学生成绩管理系统,包括开始界面、人数及课程设置、信息输入、成绩显示、分析等功能。通过这次课程设计,作者深化了对C++的理解,对这门课程产生了更大的兴趣,并计划在考试后进一步深入学习。
摘要由CSDN通过智能技术生成