📄 stuinfomansys.cpp
字号:
#include <iostream>
#include <string>
#include <vector>
#include <fstream>
#include <iomanip>
using namespace std;
class StuInfor
{
private:
int S_Position; //输出次序
string S_Number; //学号
string S_Name; //姓名
float S_Score_Math; //数学分数
float S_Score_Chinese; //语文分数
float S_Score_English; //英语分数
float S_Score_Totle; //总分
char S_Rank; //排名
string S_Other; //备注
bool Open_flag;
int Record;
public:
StuInfor();
virtual ~StuInfor();
void Cmenu(StuInfor &L); // 菜单函数
void ReadFromFile(StuInfor &L); // 读入数据
void PrintAll(StuInfor &L); // 打印全部
void SavetoFile(StuInfor &L); // 写入文件即保存
void Search_Listmember(StuInfor &L); // 查找成员
void Search_On_Name(StuInfor &L); // 按姓名查找
void Search_On_Number(StuInfor &L); // 按学号查找
void ModifyMember(StuInfor &L); // 修改成员数据
void DelMember(StuInfor &L); // 删除数据成员
void InsertMember(StuInfor &L); // 插入数据成员
};
StuInfor::StuInfor() // 构造函数进行一些初始化
{
Record=0;
Open_flag=false;
S_Rank=' ';
}
StuInfor::~StuInfor()
{
}
//////////////////////////////////////////////////////////////////////////
StuInfor stu[50]; //定义对象数组,来存放数据,每一个学生数据即是一个对象
//////////////////////////////////////////////////////////////////////////
void StuInfor::Cmenu(StuInfor &L) // 菜单函数实现
{
system("cls"); //清屏
cout<<"\n\n\n\t\tStudent Information Management System"<<endl;
cout<<"\n\t\t\t\tMade By:月子 QQ:562888025\n"<<endl;
cout<<"***************************************************************************\n"<<endl;
cout<<"\t 1.Read From File \t\t 2.Print All List member"<<endl;
cout<<"\t 3.Search List member\t\t 4.Insert List member"<<endl;
cout<<"\t 5.Modify List member\t\t 6.Delete List member"<<endl;
cout<<"\t 7.Save To File\t\t\t 0.Exit System"<<endl;
cout<<"***************************************************************************\n"<<endl;
cout<<"Please input a number above!"<<endl;
int i;
start:
cin>>i;
switch(i)
{
case 1:L.ReadFromFile(L);break;
case 2:L.PrintAll(L); break;
case 3:L.Search_Listmember(L);break;
case 4:L.InsertMember(L);break;
case 5:L.ModifyMember(L);break;
case 6:L.DelMember(L);break;
case 7:L.SavetoFile(L);break;
case 0:exit(1);break;
default:
{
cout<<"Error,please put a number again!"<<endl;
goto start; break;
}
}
}
void StuInfor::ReadFromFile(StuInfor &L)
{
system("cls"); //清屏
Open_flag=true;
ifstream filein;
filein.open("StuInfo.txt",ios_base::in); //输入流打开文件
if (!filein) //判断是否打开成功
{
cerr<<"\n open error!"<<endl;
exit(1);
}
// cout<<setw(2)<<"次序"<<setw(8)<<" 学号"<<setw(5)<<" 姓名" //表头信息
// <<setw(6)<<" 数学成绩"<<setw(6)<<" 语文成绩"<<setw(6)
// <<" 英语成绩"<<setw(6)<<" 总分"<<" 总分排名"<<" 备注"<<endl;
// cout<<"****************************************************************************"<<endl;
for (int i=0;!filein.eof();i++) //遍历文件中的元素
{
filein>>stu[i].S_Position>>stu[i].S_Number>>stu[i].S_Name>>
stu[i].S_Score_Chinese >>stu[i].S_Score_Math>>stu[i].S_Score_English;
stu[i].S_Score_Totle=stu[i].S_Score_Chinese +stu[i].S_Score_Math+stu[i].S_Score_English;
// cout<<setw(2)<<stu[i].S_Position<<setw(13)<<stu[i].S_Number<<setw(6)<<stu[i].S_Name //输出所有信息
// <<setw(10)<<stu[i].S_Score_Chinese<<setw(10)<<stu[i].S_Score_Math<<setw(10)
// <<stu[i].S_Score_English<<setw(10)<<stu[i].S_Score_Totle<<stu[i].S_Rank<<endl;
Record=i;
}
cout<<" The Loading Finished!You can make other operations now!"<<endl;
filein.close(); //关闭文件
char temp; //临时定义用于输入的变量
cout<<"Continue to run the system?(y/n)"<<endl;
cin>>temp;
if (temp=='y')
{
L.Cmenu(L); //返回主菜单
}
else
exit(1);
}
void StuInfor::PrintAll(StuInfor &L)
{
system("cls");
char _load_temp='n';
if (!Open_flag)
{
cout<<"File hasn't loaded,and now load it?(y/n)"<<endl;
cin>>_load_temp;
if (_load_temp=='y')
{
L.ReadFromFile(L); //加载文件
}
else
L.Cmenu(L); //返回主菜单
}
cout<<setw(2)<<"次序"<<setw(8)<<" 学号"<<setw(5)<<" 姓名" //表头信息
<<setw(6)<<" 数学成绩"<<setw(6)<<" 语文成绩"<<setw(6)
<<" 英语成绩"<<setw(6)<<" 总分"<<" 总分排名"<<" 备注"<<endl;
cout<<"****************************************************************************"<<endl;
for (int i=0;i<=Record;i++) //遍历文件中的元素
{
stu[i].S_Score_Totle=stu[i].S_Score_Chinese +stu[i].S_Score_Math+stu[i].S_Score_English;
cout<<setw(2)<<stu[i].S_Position<<setw(13)<<stu[i].S_Number<<setw(6)<<stu[i].S_Name //输出所有信息
<<setw(10)<<stu[i].S_Score_Chinese<<setw(10)<<stu[i].S_Score_Math<<setw(10)
<<stu[i].S_Score_English<<setw(10)<<stu[i].S_Score_Totle<<stu[i].S_Rank<<endl;
}
cout<<" The Print Finished!"<<endl;
char temp; //临时定义用于输入的变量
cout<<"Continue to run the system?(y/n)"<<endl;
cin>>temp;
if (temp=='y')
{
L.Cmenu(L); //返回主菜单
}
else
exit(1);
}
void StuInfor::ModifyMember(StuInfor &L)
{
system("cls");
char _load_temp='n';
if (!Open_flag)
{
cout<<"File hasn't loaded,and now load it?(y/n)"<<endl;
cin>>_load_temp;
if (_load_temp=='y')
{
L.ReadFromFile(L); //加载文件
}
else
L.Cmenu(L); //返回主菜单
}
cout<<"\t Your position is at Modify list member Function!"<<endl;
int _Position;
cout<<"Please input the Position you want to Modify!"<<endl;
cin>>_Position;
int flag=1; //标识,用来标识是否找到要找的东西
char f,p;
for (int i=0;i<=Record;i++) //遍历文件中的信息
{
if(_Position==stu[i].S_Position) //以位置查找并打印查找到的东西
{
cout<<"What you want is:"<<endl; //打印出查找出来的东西
cout<<setw(2)<<"次序"<<setw(8)<<" 学号"<<setw(5)<<" 姓名" //表头信息
<<setw(6)<<" 数学成绩"<<setw(6)<<" 语文成绩"<<setw(6)
<<" 英语成绩"<<setw(6)<<" 总分"<<" 总分排名"<<" 备注"<<endl;
cout<<"****************************************************************************"<<endl;
cout<<setw(2)<<stu[i].S_Position<<setw(13)<<stu[i].S_Number<<setw(6)<<stu[i].S_Name //输出所有信息
<<setw(10)<<stu[i].S_Score_Chinese<<setw(10)<<stu[i].S_Score_Math<<setw(10)
<<stu[i].S_Score_English<<setw(10)<<stu[i].S_Score_Totle<<stu[i].S_Rank<<endl;
flag=0;
}
}
if(flag) //没有找到要找的元素,询问是否退出系统
{
cout<<"No find your position!\n"<<endl;
cout<<"Continue to run the system?(y/n)"<<endl;
cin>>p;
if (p=='y')
{
L.Cmenu(L);
}
else
exit(1);
}
else //找到了要找的元素,可以进行操作了
{
cout<<"Do you want to Modify it?(y/n)"<<endl; //确认修改
cin>>f;
if (f=='y')
{
i=_Position-1; //逐项修改选中元素
cout<<"Now Please In put the new data!"<<endl;
cout<<"Input The new Number:"<<endl;
cin>>stu[i].S_Number;
cout<<"Input The new Name:"<<endl;
cin>>stu[i].S_Name;
cout<<"Input The new Chinese score:"<<endl;
cin>>stu[i].S_Score_Chinese;
cout<<"Input The new Math score:"<<endl;
cin>>stu[i].S_Score_Math;
cout<<"Input The new English score:"<<endl;
cin>>stu[i].S_Score_English;
cout<<"Succeed to Modify the data!\nAnd do not forget to save befor leave!"<<endl;
}
else
{
cout<<"Failed to modify!"<<endl;
}
cout<<"Continue to run the system?(y/n)"<<endl; //是否继续操作系统
cin>>p;
if (p=='y')
{
L.Cmenu(L); //返回主菜单
}
else
exit(1);
}
}
void StuInfor::Search_Listmember(StuInfor &L)
{
system("cls");
char _load_temp='n';
if (!Open_flag)
{
cout<<"File hasn't loaded,and now load it?(y/n)"<<endl;
cin>>_load_temp;
if (_load_temp=='y')
{
L.ReadFromFile(L); //加载文件
}
else
L.Cmenu(L); //返回主菜单
}
system("cls");
cout<<"\t Your position is Serach Function!"<<endl;
cout<<"\t\tWhat would you like to sesrch on?"<<endl;
cout<<" \t 1.On Name \t 2 On Number \t 3 Quit Search"<<endl;
int i;
P_S_start:
cin>>i;
switch(i) //选择函数,按姓名查找或者按照学号查找
{
case 1: L.Search_On_Name(L); break;
case 2: L.Search_On_Number(L); break;
case 3: L.Cmenu(L);break;
case 0: exit(1);break;
default:cout<<"Wrong input!\n Put a number again!"<<endl;goto P_S_start;break;
}
L.Cmenu(L);
}
void StuInfor::Search_On_Name(StuInfor &L)
{
system("cls");
string _Name;
cout<<"\t Your position is Serach on Name Function!"<<endl;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -