📄 manage.cpp
字号:
#include ".\manage.h"
#include "Student.h"
#include <vector>
#include <fstream>
#include <iostream>
using namespace std;
#using <mscorlib.dll>
Manage::Manage(void)
:m_nEditNum(0),m_bEdit(false)
{
}
Manage::~Manage(void)
{
}
void Manage::Input()
{
int score[6];
string name;
vector<int> NumVec;
AllNums(NumVec);
ofstream outfile("student.stu",ios_base::app);
cout<<"学号:";
cin>>score[0];
while(!IfNumUnique(score[0],NumVec))
cin>>score[0];
cout<<"\n姓名:";
cin>>name;
cout<<"依次输入C语言,数据库,英语,数学,物理的成绩:\n";
for(int i=1;i<6;i++)
{
cin>>score[i];
while(!ScoreCheck(score[i]))
cin>>score[i];
}
Student stu(score,name);
outfile<<stu;
cout<<stu<<endl;
cout<<"按照使用说明继续进行其它操作!\n";
Start();
}
void Manage::Edit()
{
char ch;
m_bEdit = true;
NumInquire();
cout<<"要删除此学生成绩,输入d/D;\n"
<<"要修改,请输入m/M;\n";
cin>>ch;
switch(ch)
{
case 'd':
case 'D': Del();break;
case 'm':
case 'M': Modify();break;
default:break;
}
}
void Manage::Del()
{
char ch;
Student stu;
ifstream infile("student.stu");
vector<Student> StuVec;
infile>>stu;
while(infile.get(ch))
{
if(stu.m_nNum != m_nEditNum)
StuVec.push_back(stu);
infile>>stu;
}
{
ofstream outfile("student.stu",ios_base::out);
for (vector<Student>::iterator it = StuVec.begin();
it != StuVec.end();++it)
outfile<<*it;
cout<<"已经成功删除!\n";
}
cout<<"按照使用说明继续进行其它操作!\n";
Start();
}
void Manage::Modify()
{
ifstream infile("student.stu");
vector<Student> StuVec;
char ch;
int code;
char cc = 'c';
Student stu;
cout <<"各项代码如下:\n"
<<"姓名--0,C语言--1,数据库--2,英语--3,数学--4,物理--5"<<endl;
infile>>stu;
while(infile.get(ch))
{
if(stu.m_nNum == m_nEditNum)
{
while(cc == 'c'||cc == 'C')
{
cout <<"选择要修改的项:"<<endl;
cin>>code;
switch (code)
{
case 0:
cout<<"输入新姓名:\n";
cin>>stu.m_strName;
break;
case 1:
cout<<"输入新值:\n";
cin>>stu.m_pGrade->m_nC;
break;
case 2:
cout<<"输入新值:\n";
cin>>stu.m_pGrade->m_nDB;
break;
case 3:
cout<<"输入新值:\n";
cin>>stu.m_pGrade->m_nEng;
break;
case 4:
cout<<"输入新值:\n";
cin>>stu.m_pGrade->m_nMath;
;
break;
case 5:
cout<<"输入新值:\n";
cin>>stu.m_pGrade->m_nPhy;
break;
default:break;
}
cout<<"继续修改其他项,请输入c/C,否则退出修改!";
cin>>cc;
}
}
StuVec.push_back(stu);
infile>>stu;
}
{
ofstream outfile("student.stu",ios_base::out);
for (vector<Student>::iterator it = StuVec.begin();
it != StuVec.end();++it)
outfile<<*it;
cout<<"修改成功!\n";
}
cout<<"按照使用说明继续进行其它操作!\n";
Start();
}
void Manage::Inquire()
{
cout<<"输入n/N进行学号查询;\n"
<<"输入x/X进行姓名查询;\n"
<<"输入c/C进行课程查询\n";
char ch;
cin>>ch;
switch(ch)
{
case 'n':
case 'N': NumInquire();break;
case 'x':
case 'X': NameInquire();break;
case 'c':
case 'C': CourseInquire();break;
default:break;
}
}
void Manage::Illustrate()
{
cout<<"使用说明:"<<endl
<<" 1) 进行学生成绩输入,输入i/I;\n"
<<" 2) 进行学生成绩编辑,输入e/E;\n"
<<" 3) 进行学生成绩查询,输入f/F;\n"
<<" 4) 要退出程序,输入除上面以外的任何字符!\n";
}
void Manage::Start()
{
cin>>m_cType;
switch(m_cType)
{
case 'i':
case 'I': Input();break;
case 'e':
case 'E': Edit();break;
case 'f':
case 'F': Inquire();break;
default : break;
}
}
void Manage::NumInquire()
{
bool flag = false;
char ch;
int check;
Student stu;
ifstream infile("student.stu");
cout << "请输入学号:\n";
cin >> check;
m_nEditNum = check;
while(infile.get(ch))
{
infile >> stu;
if(stu.m_nNum == check)
{ flag =true;
cout<<stu;
cout<<endl;
break;
}
}
if(!flag)
cout<<"没有学号为"<<check<<"的学生成绩存在!\n";
if(!m_bEdit)
{
cout<<"按照使用说明继续进行其它操作!\n";
Start();
}
}
void Manage::NameInquire()
{
bool flag =false;
char ch;
string check;
Student stu;
ifstream infile("student.stu");
cout<<" 请输入学生姓名:\n";
cin>>check;
while(infile.get(ch))
{
if(check == stu.m_strName)
{
cout<<stu;
flag = true;
}
infile >> stu;
}
if(!flag)
cout<<"没有姓名为"<<check<<"的学生成绩存在!\n";
cout<<"按照使用说明继续进行其它操作!\n";
Start();
}
void Manage::CourseInquire()
{
int type;
cout<<"请选择要查询的课程: C语言--1,数据库--2,英语--3,数学--4,物理--5!\n"
<<"输入课程代码:\n";
cin>>type;
while(type>5||type<=0)
{
cout<<"代码输入错误!请重新输入,在所给定的课程代码内选择!\n";
cin >>type;
}
CourseInquireCheck(type);
}
void Manage::CourseInquireCheck(int type)
{
char ch;
Student stu;
ifstream infile("student.stu");
infile>>stu;
while(infile.get(ch))
{
cout<<'['<<stu.m_nNum<<"] ,"<<stu.m_strName
<<": ";
switch(type)
{
case 1: cout<<stu.m_pGrade->m_nC<<endl;break;
case 2: cout<<stu.m_pGrade->m_nDB<<endl;break;
case 3: cout<<stu.m_pGrade->m_nEng<<endl;break;
case 4: cout<<stu.m_pGrade->m_nMath<<endl;break;
case 5: cout<<stu.m_pGrade->m_nPhy<<endl;break;
}
infile>>stu;
}
cout<<"按使用说明进行其它操作!\n";
Start();
}
void Manage::AllNums( vector<int>& v)
{
ifstream infile("student.stu");
char ch;
Student stu;
infile>>stu;
while(infile.get(ch))
{
v.push_back(stu.m_nNum);
infile>>stu;
}
}
bool Manage::IfNumUnique(int num,vector<int>& v)
{
if(num<=0)
{
cout<<"输入的学号不能为负数,请重新输入学号:";
return false;
}
for(vector<int>::iterator it = v.begin();
it != v.end();++it)
{
if(num == *it)
{
cout<<"输入的学号已存在,不能重复输入!\n"
<<"请重新输入学号:";
return false;
}
}
return true;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -