⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 delete.cpp

📁 学生管理系统 学生管理系统 学生管理系统
💻 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 + -