学生成绩管理系统C++(txt文件操作)

用c++实现学生成绩管理系统,以操作txt文件为主,可通过0-7进行操作,功能已经较为齐全
‘0’退出保存
‘1’显示学生信息
‘2’可以添加信息
‘3’查询信息(可通过学号,姓名,多科成绩五种方式查找)
‘4’删除信息(可通过学号,姓名,多科成绩五种方式查找删除)
‘5’成绩排序
‘6’单科成绩分析(可进行单科成绩排序,共三种排序方式)
‘7’退出并清空

*******此代码是博主初学时所写,C++知识并不完备
*******仅供参考
************代码如下
#include “iostream”
#include “string”
#include “iomanip”
#include “fstream”

using namespace std;
int n;
struct student
{
string ID;
string name;
double score1;
double score2;
double score3;
};
student stu[100];//
void showBiaotou();
void showMenu();
void showChoice();
void initStuMessage();//学生数据初始化
void ninit();//扫描文件行数,得到n
void cunMessage();// 0 保存退出
void showStuMessage();//1 学生信息总览表1
void addStuMessage();// 2 添加2
void findMessage();// 3 查询3
void clcStuMessage();// 4 清除数据,学号查询清除4
void xunMessage();// 5 成绩排序
void danMessag(); // 6 单科成绩分析
void qingMessage();// 7 清空所有信息并退出系统7
int main()
{
ninit();
initStuMessage();

showMenu();
showChoice();
return 0;

}

void ninit()
{
char file[100];
ifstream infile(“stu1.txt”);
if(!infile.is_open())//打开失败
{
cout<<“文件无法打开”<<endl;
cout<<“建立一个名为“stu1”的文件夹”<<endl;
cout<<“重新打开文件夹”<<endl;
infile.close();

    ofstream outfile;
    outfile.open("stu1.txt", ios_base::app);
    outfile.close();

    ifstream infile("stu1.txt");

}

if(infile.is_open())//成功打开
  {
      while(!infile.eof())
    {
        infile.getline(file, sizeof(file));//此处默认的终止标识符为‘\n’
        n++;
    }
    n=n-2;
    infile.close();
  }
  ////////////////////////////////////////////

}
void initStuMessage()
{
ifstream infile(“stu1.txt”);
for(int j=0;j<=n;j++)
{
infile >> setw(20)>> stu[j].ID;
infile >> setw(20)>> stu[j].name;
infile >> setw(10)>> stu[j].score1;
infile >> setw(10)>> stu[j].score2;
infile >> setw(10)>> stu[j].score3;
}

infile.close();

// cout<<n;

}

void showBiaotou()
{
cout << setw(20) << “学号”;
cout << setw(20) << “姓名”;
cout << setw(10) << “专业成绩”;
cout << setw(10) << “平时成绩”;
cout << setw(10) << “综合成绩”;
cout << endl;
}

void showMenu()
{
cout << “\n=============================================\n”;
cout << " 欢迎使用学生成绩查询系统\n";
cout << " 1.显示所有学生成绩\n";
cout << " 2.添加信息\n";
cout << " 3.查询信息\n";
cout << " 4.删除信息\n";
cout << " 5.成绩排序\n";
cout << " 6.单科成绩分析\n";
cout << " 7.清空所有信息并退出系统\n";
cout << " 0.保存并且退出系统\n";
cout << “\n=============================================\n”;
cout << " 请输入数字(0-7):\n";
}
void showChoice()
{
char choice;
cin >> choice;
while (choice <=‘7’)
{
switch(choice)
{
case ‘0’:
cunMessage();
break;
case ‘1’:
showStuMessage();
break;
case ‘2’:
addStuMessage();
break;
case ‘3’:
findMessage();
break;
case ‘4’:
clcStuMessage();
break;
case ‘5’:
xunMessage();
break;
case ‘6’:
danMessag();
break;
case ‘7’:
qingMessage();
break;
default:
cout << “输入非法,返回到主菜单” << endl;
}
if(choice==‘7’) break;
if(choice==‘0’) break;

    showMenu();
    cin >> choice;
}

}
void cunMessage()
{
ofstream outfile;
outfile.open(“stu1.txt”, ios_base::out);
for(int j=0;j<=n;j++)
{
outfile << setw(20) << stu[j].ID;
outfile << setw(20) << stu[j].name;
outfile << setw(10) << stu[j].score1;
outfile << setw(10) << stu[j].score1;
outfile << setw(10) << stu[j].score1;
outfile << endl;
}
outfile.close();

扫描二维码关注公众号,回复: 11353432 查看本文章
cout << "你选择了退出系统,并且保存修改数据" << endl;
cout << "系统即将关闭\n";

}

void showStuMessage()//1
{
showBiaotou();
for(int i = 0; i <=n; i++)
{
cout << setw(20) << stu[i].ID;
cout << setw(20) << stu[i].name;
cout << setw(10) << stu[i].score1;
cout << setw(10) << stu[i].score2;
cout << setw(10) << stu[i].score3;
cout << endl;
}

}

void addStuMessage()//2
{
cin.get();
student newstu;
cout << “请添加学生的信息(学号,姓名,成绩)” << endl;
cout << “学号:”;
getline(cin,newstu.ID);
cout << endl;
cout << “姓名:”;
getline(cin,newstu.name);
cout << endl;
while(1)
{
cout << “专业成绩: “;
cin >> newstu.score1;
while(cin.fail())
{
cout<<“输入非法字符,请重新输入成绩:\n”;
cin.clear();
while(cin.get()!=’\n’)
continue;
cin >> newstu.score1;
}
if(newstu.score1>=0&&newstu.score1<=100)
{
cout << endl;
break;
}
else
{
cout<<” 成绩只能在0-100,重新输入成绩:\n”;
}
cin.clear();
cin.ignore();
}
while(1)
{
cout << “平时成绩: “;
cin >> newstu.score2;
while(cin.fail())
{
cout<<“输入非法字符,请重新输入成绩:\n”;
cin.clear();
while(cin.get()!=’\n’)
continue;
cin >> newstu.score2;
}
if(newstu.score2>=0&&newstu.score2<=100)
{
cout << endl;
break;
}
else
{
cout<<” 成绩只能在0-100,重新输入成绩:\n”;
}
cin.clear();
cin.ignore();
}
newstu.score3=newstu.score20.8+newstu.score10.2;

cout << "输出新增学生的信息:" << endl;
showBiaotou();
cout << setw(20) << newstu.ID;
cout << setw(20) << newstu.name;
cout << setw(10) << newstu.score1;
cout << setw(10) << newstu.score2;
cout << setw(10) << newstu.score3;
cout << endl;

stu[n+1].ID=newstu.ID;
stu[n+1].name=newstu.name;
stu[n+1].score1=newstu.score1;
stu[n+1].score2=newstu.score2;
stu[n+1].score3=newstu.score3;
n++;

}//2

void findMessage()//3
{
int cha,i;
int pan=0;
cin.get();
student fstu;
cout<<“查询方式”<<endl;
cout<<“学号查询‘1’”<<endl;
cout<<“姓名查询‘2’”<<endl;
cout<<“专业成绩查询‘3’”<<endl;
cout<<“平时成绩查询‘4’”<<endl;
cout<<“综合成绩查询‘5’”<<endl;
cin>>cha;

   if(cha==1)
  {
    cout << "学号 ";
    cin>>fstu.ID;
    for(i=0;i<=n;i++)
    {
        if (fstu.ID==stu[i].ID)
        {
        fstu.name=stu[i].name;
        fstu.score1=stu[i].score1;
        fstu.score2=stu[i].score2;
        fstu.score3=stu[i].score3;
        if(pan==0)
           {   cout << "输出查询学生的信息:" << endl;
               showBiaotou(); }
        cout << setw(20) << fstu.ID;
        cout << setw(20) << fstu.name;
        cout << setw(10) << fstu.score1;
        cout << setw(10) << fstu.score2;
        cout << setw(10) << fstu.score3;
        cout << endl;
        pan=1;
        }
    }//for
    if(pan==0) cout << "没有该学生的信息:" << endl;
  } //cha==1

   if(cha==2)
  {
    cout << "姓名 ";
    cin>>fstu.name;
    for(i=0;i<=n;i++)
    {
        if (fstu.name==stu[i].name)
        {
        fstu.ID=stu[i].ID;
        fstu.score1=stu[i].score1;
        fstu.score2=stu[i].score2;
        fstu.score3=stu[i].score3;
        if(pan==0)
           {   cout << "输出查询学生的信息:" << endl;
               showBiaotou(); }
        cout << setw(20) << fstu.ID;
        cout << setw(20) << fstu.name;
        cout << setw(10) << fstu.score1;
        cout << setw(10) << fstu.score2;
        cout << setw(10) << fstu.score3;
        cout << endl;
        pan=1;
        }
    }//for
    if(pan==0) cout << "没有该学生的信息:" << endl;
  } //cha==2
   if(cha==3)
  {
       cout << "专业成绩 ";
    cin >> fstu.score1;
    for(i=0;i<=n;i++)
    {
        if (fstu.score1==stu[i].score1)
        {
        fstu.name=stu[i].name;
        fstu.ID=stu[i].ID;
        fstu.score2=stu[i].score2;
        fstu.score3=stu[i].score3;
       if(pan==0)
           {   cout << "输出查询学生的信息:" << endl;
               showBiaotou(); }
        cout << setw(20) << fstu.ID;
        cout << setw(20) << fstu.name;
        cout << setw(10) << fstu.score1;
        cout << setw(10) << fstu.score2;
        cout << setw(10) << fstu.score3;
        cout << endl;
        pan=1;
        }
    }//for
    if(pan==0) cout << "没有该学生的信息:" << endl;
  } //cha==3

   if(cha==4)
  {
       cout << "平时成绩 ";
    cin >> fstu.score2;
    for(i=0;i<=n;i++)
    {
        if (fstu.score2==stu[i].score2)
        {
        fstu.name=stu[i].name;
        fstu.ID=stu[i].ID;
        fstu.score1=stu[i].score1;
        fstu.score3=stu[i].score3;
       if(pan==0)
           {   cout << "输出查询学生的信息:" << endl;
               showBiaotou(); }
        cout << setw(20) << fstu.ID;
        cout << setw(20) << fstu.name;
        cout << setw(10) << fstu.score1;
        cout << setw(10) << fstu.score2;
        cout << setw(10) << fstu.score3;
        cout << endl;
        pan=1;
        }
    }//for
    if(pan==0) cout << "没有该学生的信息:" << endl;
  } //cha==4
   if(cha==5)
  {
       cout << "综合成绩 ";
    cin >> fstu.score3;
    for(i=0;i<=n;i++)
    {
        if (fstu.score3==stu[i].score3)
        {
        fstu.name=stu[i].name;
        fstu.ID=stu[i].ID;
        fstu.score1=stu[i].score1;
        fstu.score2=stu[i].score2;
       if(pan==0)
           {   cout << "输出查询学生的信息:" << endl;
               showBiaotou(); }
        cout << setw(20) << fstu.ID;
        cout << setw(20) << fstu.name;
        cout << setw(10) << fstu.score1;
        cout << setw(10) << fstu.score2;
        cout << setw(10) << fstu.score3;
        cout << endl;
        pan=1;
        }
    }//for
    if(pan==0) cout << "没有该学生的信息:" << endl;
  } //cha==5

}//3

void clcStuMessage()//4
{
int i,j;
// string clc_id;
int shu=0;
int shan;
student cstu;

cout<<"删除方式"<<endl;
cout<<"学号‘1’"<<endl;
cout<<"姓名‘2’"<<endl;
cout<<"专业成绩‘3’"<<endl;
cout<<"平时成绩‘4’"<<endl;
cout<<"综合成绩‘5’"<<endl;
cin>>shan;

if(shan==1)
{
    cout<<"请输入要删除的对象的学号:";
    getline(cin,cstu.ID);
    cin >> cstu.ID;
    for(i=0;i<=n;i++)
    {
        if(stu[i].ID==cstu.ID)
        {
            for(j=i;j<n;j++)
            {
                stu[j].ID=stu[j+1].ID;
                stu[j].name=stu[j+1].name;
                stu[j].score1=stu[j+1].score1;
                stu[j].score2=stu[j+1].score2;
                stu[j].score3=stu[j+1].score3;
            }
            n--;shu++;i--;
        }
    }//for
}//shan==1
 if(shan==2)
{
    cout<<"请输入要删除的对象的姓名:";
    getline(cin,cstu.name);
    cin >> cstu.name;
    for(i=0;i<=n;i++)
    {
        if(stu[i].name==cstu.name)
        {
            for(j=i;j<n;j++)
            {
                stu[j].ID=stu[j+1].ID;
                stu[j].name=stu[j+1].name;
                stu[j].score1=stu[j+1].score1;
                stu[j].score2=stu[j+1].score2;
                stu[j].score3=stu[j+1].score3;
            }
            n--;shu++;i--;
        }
    }//for
}//shan==2
 if(shan==3)
{
    cout<<"请输入要删除的对象的成绩:";
    cin >> cstu.score1;
    for(i=0;i<=n;i++)
    {
        if(stu[i].score1==cstu.score1)
        {
            for(j=i;j<n;j++)
            {
                stu[j].ID=stu[j+1].ID;
                stu[j].name=stu[j+1].name;
                stu[j].score1=stu[j+1].score1;
                stu[j].score2=stu[j+1].score2;
                stu[j].score3=stu[j+1].score3;
            }
            n--;  i--;shu++;
        }
    }//for
}//shan==3
 if(shan==4)
{
    cout<<"请输入要删除的对象的成绩:";
    cin >> cstu.score2;
    for(i=0;i<=n;i++)
    {
        if(stu[i].score2==cstu.score2)
        {
            for(j=i;j<n;j++)
            {
                stu[j].ID=stu[j+1].ID;
                stu[j].name=stu[j+1].name;
                stu[j].score1=stu[j+1].score1;
                stu[j].score2=stu[j+1].score2;
                stu[j].score3=stu[j+1].score3;
            }
            n--;  i--;shu++;
        }
    }//for
}//shan==4
 if(shan==5)
{
    cout<<"请输入要删除的对象的成绩:";
    cin >> cstu.score3;
    for(i=0;i<=n;i++)
    {
        if(stu[i].score3==cstu.score3)
        {
            for(j=i;j<n;j++)
            {
                stu[j].ID=stu[j+1].ID;
                stu[j].name=stu[j+1].name;
                stu[j].score1=stu[j+1].score1;
                stu[j].score2=stu[j+1].score2;
                stu[j].score3=stu[j+1].score3;
            }
            n--;  i--;shu++;
        }
    }//for
}//shan==5
cout<<"删除学生数量:"<< shu <<endl;
shu=0;

}

void xunMessage()//5
{
int i,j;
student xstu;

    for(i=0;i<n;i++)//321
    for(j=0;j<n;j++)
    {
        if(stu[j].score1<stu[j+1].score1)
        {
            xstu.ID=stu[j].ID;
            xstu.name=stu[j].name;
            xstu.score1=stu[j].score1;
            xstu.score2=stu[j].score2;
            xstu.score3=stu[j].score3;

            stu[j].ID=stu[j+1].ID;
            stu[j].name=stu[j+1].name;
            stu[j].score1=stu[j+1].score1;
            stu[j].score2=stu[j+1].score2;
            stu[j].score3=stu[j+1].score3;

            stu[j+1].ID=xstu.ID;
            stu[j+1].name=xstu.name;
            stu[j+1].score1=xstu.score1;
            stu[j+1].score2=xstu.score2;
            stu[j+1].score3=xstu.score3;
        }
    }

showStuMessage();

}
void danMessag() // 6 单科成绩分析
{
int i,j,xu;
student xstu;
int pan=1;

cout<<"排序方式"<<endl;
cout<<"专业成绩‘1’"<<endl;
cout<<"平时成绩‘2’"<<endl;
cout<<"综合成绩‘3’"<<endl;
cin>>xu;
while(pan)
{
    if(xu==1||xu==2||xu==3)pan=0;

}
if(xu==1)
{
    for(i=0;i<n;i++)//321
    for(j=0;j<n;j++)
    {
        if(stu[j].score1<stu[j+1].score1)
        {
            xstu.ID=stu[j].ID;
            xstu.name=stu[j].name;
            xstu.score1=stu[j].score1;
            xstu.score2=stu[j].score2;
            xstu.score3=stu[j].score3;

            stu[j].ID=stu[j+1].ID;
            stu[j].name=stu[j+1].name;
            stu[j].score1=stu[j+1].score1;
            stu[j].score2=stu[j+1].score2;
            stu[j].score3=stu[j+1].score3;

            stu[j+1].ID=xstu.ID;
            stu[j+1].name=xstu.name;
            stu[j+1].score1=xstu.score1;
            stu[j+1].score2=xstu.score2;
            stu[j+1].score3=xstu.score3;
        }
    }
}//xu==1
if(xu==2)
{
    for(i=0;i<n;i++)//321
    for(j=0;j<n;j++)
    {
        if(stu[j].score2<stu[j+1].score2)
        {
            xstu.ID=stu[j].ID;
            xstu.name=stu[j].name;
            xstu.score1=stu[j].score1;
            xstu.score2=stu[j].score2;
            xstu.score3=stu[j].score3;

            stu[j].ID=stu[j+1].ID;
            stu[j].name=stu[j+1].name;
            stu[j].score1=stu[j+1].score1;
            stu[j].score2=stu[j+1].score2;
            stu[j].score3=stu[j+1].score3;

            stu[j+1].ID=xstu.ID;
            stu[j+1].name=xstu.name;
            stu[j+1].score1=xstu.score1;
            stu[j+1].score2=xstu.score2;
            stu[j+1].score3=xstu.score3;
        }
    }
}//xu==2
if(xu==3)
{
    for(i=0;i<n;i++)//321
    for(j=0;j<n;j++)
    {
        if(stu[j].score3<stu[j+1].score3)
        {
            xstu.ID=stu[j].ID;
            xstu.name=stu[j].name;
            xstu.score1=stu[j].score1;
            xstu.score2=stu[j].score2;
            xstu.score3=stu[j].score3;

            stu[j].ID=stu[j+1].ID;
            stu[j].name=stu[j+1].name;
            stu[j].score1=stu[j+1].score1;
            stu[j].score2=stu[j+1].score2;
            stu[j].score3=stu[j+1].score3;

            stu[j+1].ID=xstu.ID;
            stu[j+1].name=xstu.name;
            stu[j+1].score1=xstu.score1;
            stu[j+1].score2=xstu.score2;
            stu[j+1].score3=xstu.score3;
        }
    }
}//xu==3
  showStuMessage();

}
void qingMessage()// 7 清空所有信息并退出系统7
{
ofstream outfile;
outfile.open(“stu1.txt”, ios_base::out);
outfile.close();
cout << “你选择了退出系统,并且清除数据” << endl;
cout << “系统即将关闭\n”;
}

猜你喜欢

转载自blog.csdn.net/Zra___/article/details/105851243