📄 delete.cpp
字号:
#include "StuClass.h"
//删除及恢复学生档案函数
LogicDel() //逻辑删除学生档案函数
{
system("cls");
cout<<endl;
cout<<" **********逻辑删除学生档案********** "<<endl;
cout<<endl;
cout<<endl;
char sname[12];
cout<<"输入要删除的学生学号:";
cin>>sname;
fstream outdel("Student.dat",ios::in|ios::out);
outdel.seekg(0);
Student one ;
int i=0;
char X;
while(!outdel.eof())
{
outdel.seekp(sizeof(Student)*i);
outdel.read((char*)&one,sizeof(one));
if (Comparison(one.getregnum(),sname)==1 && one.Gettag()=='#')
{
cout<<" 学生档案 "<<endl;
cout<<"-------------------------------------------------------------------------------"<<endl;
cout<<setiosflags(ios::left)
<<setw(7)<<"序号"<<setw(16)<<"学号"<<setw(11)<<"姓名"<<setw(7)<<"年龄"<<setw(7)<<"性别"
<<setw(10)<<"宿舍"<<setw(13)<<"电话"<<endl;
one.Display();
cout<<"-------------------------------------------------------------------------------"<<endl;
cout<<"是否删除(y/n)?"<<endl;
X=getch();
if (X=='y'||X=='Y')
{
outdel.seekp(sizeof(Student)*i);
outdel.put('*');
}
else
return 0;
}
i++;
}
outdel.close();
}
void Instaur() //恢复逻辑删除的档案函数
{
system("cls");
cout<<endl;
cout<<" **********恢复学生档案********** "<<endl;
cout<<endl;
int i=0;
char X;
fstream outdel("Student.dat",ios::in|ios::out);
Student one ;
outdel.seekg(0);
while(!outdel.eof())
{
outdel.seekp(sizeof(Student)*i);
outdel.read((char*)&one,sizeof(one));
if (one.Gettag()=='*')
{
cout<<" 学生档案 "<<endl;
cout<<"-------------------------------------------------------------------------------"<<endl;
cout<<setiosflags(ios::left)
<<setw(7)<<"序号"<<setw(16)<<"学号"<<setw(11)<<"姓名"<<setw(7)<<"年龄"<<setw(7)<<"性别"
<<setw(10)<<"宿舍"<<setw(13)<<"电话"<<endl;
cout<<"-------------------------------------------------------------------------------"<<endl;
one.Disp();
cout<<"-------------------------------------------------------------------------------"<<endl;
cout<<"是否恢复该档案(y/n)?"<<endl;
X=getch();
if (X=='y'||X=='Y')
{
outdel.seekp(sizeof(Student)*i);
outdel.put('#');
}
}
i++;
}
outdel.close();
}
void PhysicsDel()
{
fstream outdel("Student.dat",ios::in);
fstream temp("temp",ios::out|ios::trunc);
Student s;
while(!outdel.eof())
{
outdel.read((char *)&s,sizeof(Student));
if (s.Gettag()=='#')
temp.write((char *)&s,sizeof(Student));
}
outdel.close();
temp.close();
fstream outdel1("Student",ios::out|ios::trunc);
fstream temp1("temp",ios::in);
while (!temp1.eof())
{
temp1.read((char *)&s,sizeof(Student));
outdel1.write((char *)&s,sizeof(Student));
}
outdel1.close();
temp1.close();
cout<<"此记录已物理删除"<<endl;
}
int PhysicsDel1() //物理删除档案函数
{
/*system("cls");
cout<<endl;
cout<<" 学生档案 "<<endl;
cout<<"-------------------------------------------------------------------------------"<<endl;
cout<<setiosflags(ios::left)
<<setw(7)<<"序号"<<setw(16)<<"学号"<<setw(11)<<"姓名"<<setw(7)<<"年龄"<<setw(7)<<"性别"
<<setw(10)<<"宿舍"<<setw(13)<<"电话"<<endl;
cout<<"-------------------------------------------------------------------------------"<<endl;
fstream outdel("Student.dat",ios::in);
fstream temp("temp",ios::out|ios::trunc);
Student s;
while(!outdel.eof())
{
if (s.Gettag()=='*')
{
s.Disp();
}
}
cout<<"-------------------------------------------------------------------------------"<<endl;
cout<<"是否删除这些同学的档案(y/n)?"<<endl;
char X;
X=getch();
if(X=='n'||X=='N')
{
outdel.close();
temp.close();
return 0;
}
outdel.close();
temp.close();
fstream outdel2("Student.dat",ios::in);
fstream temp2("temp",ios::out|ios::trunc);
while(!outdel2.eof())
{
outdel2.read((char *)&s,sizeof(Student));
if (s.Gettag()=='#')
temp2.write((char *)&s,sizeof(Student));
}
outdel2.close();
temp2.close();
fstream outdel1("Student",ios::out|ios::trunc);
fstream temp1("temp",ios::in);
while (!temp1.eof())
{
temp1.read((char *)&s,sizeof(Student));
outdel1.write((char *)&s,sizeof(Student));
}
outdel1.close();
temp1.close();
cout<<"此记录已物理删除"<<endl;*/
ifstream input("Student.dat");
Student s;
system("cls");
cout<<endl;
cout<<" 学生档案 "<<endl;
cout<<"-------------------------------------------------------------------------------"<<endl;
cout<<setiosflags(ios::left)
<<setw(7)<<"序号"<<setw(16)<<"学号"<<setw(11)<<"姓名"<<setw(7)<<"年龄"<<setw(7)<<"性别"
<<setw(10)<<"宿舍"<<setw(13)<<"电话"<<endl;
cout<<"-------------------------------------------------------------------------------"<<endl;
input.read((char *)&s, sizeof(s));
while(input)
{
s.Disp();
input.read((char*)&s,sizeof(s));
}
input.close();
cout<<"-------------------------------------------------------------------------------"<<endl;
cout<<"是否删除这些同学的档案(y/n)?"<<endl;
char X;
X=getch();
if(X=='Y'||X=='y') PhysicsDel();
}
void DeleteMenu() //删除档案主界面
{
system("cls");
cout<<endl;
cout<<endl;
cout<<" "<<endl;
cout<<" "<<endl;
cout<<" ★学生档案删除系统★ "<<endl;
cout<<" "<<endl;
cout<<" **************************** "<<endl;
cout<<" $ $ "<<endl;
cout<<" $ 〖1.逻辑删除档案〗 $ "<<endl;
cout<<" $ $ "<<endl;
cout<<" $ 〖2.物理删除档案〗 $ "<<endl;
cout<<" $ $ "<<endl;
cout<<" $ 〖3.恢复学生档案〗 $ "<<endl;
cout<<" $ $ "<<endl;
cout<<" $ 〖4.退出编辑系统〗 $ "<<endl;
cout<<" $ $ "<<endl;
cout<<" **************************** "<<endl;
cout<<" "<<endl;
}
void Delete() //删除档案主函数
{
char select;
DeleteMenu();
do
{
cout<<" 输入选择的功能(1-4):";
cin>>select;
cout<<endl;
cout<<endl;
cout<<endl;
cout<<endl;
cout<<endl;
switch(select)
{
case '1':LogicDel(); DeleteMenu(); break; //选择1时执行『输入学生档案』
case '2':PhysicsDel(); DeleteMenu(); break; //选择2时执行『修改学生档案』
case '3':Instaur(); DeleteMenu(); break; //选择3时执行『添加学生档案』
}
}while(select>='1' && select<='3');
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -