#include <iostream>
#include <string>
#include <fstream>
#include <iomanip>
using namespace std;
struct Score{ double chinese;//语文成绩
double math;//数学成绩
double english;//英语成绩
};
struct Student{ string no;//学号
string name;//姓名
Score score;//成绩
};
/*第一个参数是学生结构体数组,第二个参数是人数*/
void print(Student stu[],int n)//输出
{
for(int i=0;i<n;i++)
{
cout<<endl;
cout<<"学号:"<<stu[i].no<<",姓名:"<<stu[i].name<<endl;
cout<<"语文成绩:"<<stu[i].score.chinese<<endl;
cout<<"数学成绩:"<<stu[i].score.math<<endl;
cout<<"英语成绩:"<<stu[i].score.english<<endl;
cout<<endl; }
}
void file_print(Student stu[],int n)//用于文件输出
{
ofstream outfile("学生成绩文件.txt",ios::out);
for(int i=0;i<n;i++)
{
outfile<<"学号:"<<stu[i].no<<",姓名:"<<stu[i].name<<endl;
outfile<<"语文成绩:"<<stu[i].score.chinese<<endl;
outfile<<"数学成绩:"<<stu[i].score.math<<endl;
outfile<<"英语成绩:"<<stu[i].score.english<<endl;
outfile<<endl;
}
cout<<"保存完成"; outfile.close();
}
/*放入学生结构体指针,返回人数*/
int input(Student *stu)//输入
{
int n=0; while(true)
{
cout<<"请输入第"<<n+1<<"个学生的资料:"<<endl;
cout<<"学号:";
cin>>(stu+n)->no;
if((stu+n)->no=="exit") break;
cout<<"姓名:";
cin>>(stu+n)->name;
cout<<"语文成绩:";
cin>>(stu+n)->score.chinese;
cout<<"数学成绩:";
cin>>(stu+n)->score.math;
cout<<"英语成绩:";
cin>>(stu+n)->score.english;
cout<<"退出,请输入 exit "<<endl;
cout<<endl; n++; } return n;
}
/*第一个参数是学生结构体指针,第二个参数是学生学号,第三个是学生人数,返回人数*/
int del(Student *stu,string no,int n)//删除
{
int index=-1;
for(int i=0;i<n;i++)
{
if((stu+i)->no==no)
{
index=i;break;
}
if(index==-1)
{
cout<<"没有学号为"<<no<<"的学生!"<<endl;
return n;
}
else{
while(index<n-1)
{
*(stu+index)=*(stu+index+1);
index++;
}
cout<<"删除成功!"<<endl; return n-1;}
}
}
/*第一个参数是学生结构体指针,第一个参数是学号,第三个是学生总人数*/
bool change(Student *stu,string no,int n)//修改成绩
{
int index=-1;
for(int i=0;i<n;i++)
{
if((stu+i)->no==no)
{
index=i;break;
}
}
if(index==-1)
{
cout<<"没有学号为"<<no<<"的学生!"<<endl;
return false;
}
else {cout<<"请输入语文成绩:"<<endl;
cin>>(stu+index)->score.chinese;
cout<<"请输入数学成绩:"<<endl;
cin>>(stu+index)->score.math;
cout<<"请输入英语成绩:"<<endl;
cin>>(stu+index)->score.english;
return true;
}
}
/*第一个参数是学生结构体指针,第二个是学生人数,返回新的人数*/
int add(Student *stu,int n)//添加
{
cout<<"学号:";
cin>>(stu+n)->no;
cout<<"姓名:";
cin>>(stu+n)->name;
cout<<"语文成绩:";
cin>>(stu+n)->score.chinese;
cout<<"数学成绩:";
cin>>(stu+n)->score.math;
cout<<"英语成绩:";
cin>>(stu+n)->score.english;
cout<<"退出,请输入 exit "<<endl;
cout<<endl; return n+1;
}
int main()
{
Student *stu=new Student[100];
int n;
string str;
cout<<"|================================================|"<<endl;
cout<<"| ★☆★学生成绩管理系统★☆★ |"<<endl;
cout<<"|------------------------------------------------|"<<endl;
cout<<"| --制作人 :小蓝 |"<<endl;
cout<<"|================================================|"<<endl;
cout<<"|------------------------------------------------|"<<endl;
cout<<"|-------------------***登录***-------------------|"<<endl;
cout<<"|------------------------------------------------|"<<endl;
cout<<"|================================================|"<<endl;
char* password="admin";
char temppassword[255];
do{
cout<<"请输入你的密码:";
cin>>temppassword;
cout<<endl;
}
while(strcmp(temppassword,password));
cout<<"登录成功!";
cout<<"请建立你的数据!"<<endl; n=input(stu);
while(true)
cout<<"*******************************"<<endl;
cout<<"* 输出学生信息,请输入1 *"<<endl;
cout<<"* 删除学生信息,请输入2 *"<<endl;
cout<<"* 修改学生成绩,请输入3 *"<<endl;
cout<<"* 添加学生信息,请输入4 *"<<endl; cout<<"* 输出文件保存,请输入5 *"<<endl;
cout<<"* 打开文本文件,请输入6 *"<<endl; cout<<"* 退出,请输入 exit *"<<endl;
cout<<"*******************************"<<endl;
cout<<endl; cin>>str;
if(str=="1") print(stu,n);
else if(str=="2")
{
string no;
cout<<"请输入要删除学生的学号";
cin>>no;
n=del(stu,no,n);
}
else if(str=="3")
{
string no;
cout<<"请输入要修改成绩学生的学号:";
cin>>no;
if(change(stu,no,n)==false)
cout<<"修改失败!"<<endl;
else cout<<"修改成功!"<<endl;
}
else if(str=="4")
{
int bl=n;
bl=add(stu,n);
if(bl==n)
cout<<"添加失败!"<<endl;
else
{
cout<<"添加成功!"<<endl;
n=bl;
}
}
else if (str=="5")
{
file_print(stu,n);
}
else if (str=="6")
{
system("学生成绩文件.txt");
}
else if(str=="exit") return 0;
else cout<<"您的输入有误!!"<<endl;
}
/*cout<<"谢谢使用,再见!!"<<endl;
return 0;*/
C++终极作业
最新推荐文章于 2023-08-31 16:35:29 发布