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

📄 file_operation.cpp

📁 1.管理信息系统(学生成绩) 两种用户等级:管理员和用户
💻 CPP
字号:
#include "Function.h"

/**************
文件存储操作
***************/
void InfoManager::Save()
{
	system("cls");
	char choice;
	cout<<"\n原文件将被覆盖,是否继续?(Y/N):";
	cin>>choice;
	if (choice=='N'||choice=='n') return;
	ofstream savefile_stu("db_student.txt",ios_base::binary); //输出流文件对象初始化
	Unit *p1=head_stu;
	//学生
	savefile_stu<<"此文件存放学生信息\n";
	while (p1)// 写入文件
	{
		savefile_stu<<p1->ID<<"\t"<<p1->PWD<<"\t"<<p1->Name<<"\t"<<p1->Sex<<"\t"<<p1->Old<<"\t"<<p1->Class<<"\t"<<p1->Math<<"\t"<<p1->Chinese<<"\t"<<p1->English<<"\t"<<p1->Authority;
		savefile_stu<<endl;
		p1=p1->next;
	}
	savefile_stu.close();//关闭文件
	//教师
	ofstream savefile_tea("db_teacher.txt",ios_base::binary); //输出流文件对象初始化
	savefile_tea<<"此文件存放教师信息\n";
	Unit *p2=head_tea;
	while (p2)// 写入文件
	{
		savefile_tea<<p2->ID<<"\t"<<p2->PWD<<"\t"<<p2->Name<<"\t"<<p2->Sex<<"\t"<<p2->Old<<"\t"<<p2->Class<<"\t"<<p2->Math<<"\t"<<p2->Chinese<<"\t"<<p2->English<<"\t"<<p2->Authority;
		savefile_tea<<endl;
		p2=p2->next;
	}
	savefile_tea.close();//关闭文件
	cout<<"\n文件保存完毕 ..."<<endl;
	Sleep(1500);
}

void InfoManager::saveRecords(Unit *p1)
{
	char name[40];
	string fname;
	cout<<"请输入要存入的文件名(如:records.txt):";
	while (1)
	{
		cin.sync();
		cin.getline(name,40);
		fname=name;
		if (fname.empty()) cout<<"文件名为空,请重新输入:\n";
		else break;
	}
	ofstream of(fname.c_str(),ios_base::binary);
	//学生
	while (p1)// 写入文件
	{
		if (p1->Authority==0)
		of<<p1->ID<<"\t"<<p1->Name<<"\t"<<p1->Sex<<"\t"<<p1->Old<<"\t"<<p1->Class<<"\t"<<p1->Math<<"\t"<<p1->Chinese<<"\t"<<p1->English;
		of<<endl;
		p1=p1->next;
	}
	of.close();//关闭文件
	cout<<endl<<"文件"<<fname<<"保存完毕 ..."<<endl;
	Sleep(1500);
}




/**************
文件读取操作
***************/

void InfoManager::Load()
{
	char s[80];
	string Name;
	string PWD;
	int Sex, Old, Class, Math, Chinese, English, Authority;
	long ID;
//学生
	ifstream readfile_stu("db_student.txt",ios_base::binary); //输入流文件对象初始化
	readfile_stu.getline(s,80);
	readfile_stu>>ID>>PWD>>Name>>Sex>>Old>>Class>>Math>>Chinese>>English>>Authority;
	//创建链表,从外部文件写入内存
	while (readfile_stu.good())
	{
		Unit *q;
		q=head_stu;
		q=new Unit (Name, PWD, Sex, Old, Class, ID, Math, Chinese, English, Authority);//构造函数:姓名,密码,性别,年龄,班级,ID,数学,语文,英语,权限
		q->next=NULL;
		if (head_stu) //head非空,则追加记录
		{
			Unit *s;
			s=head_stu;
			while (s->next) //s移到表尾
			{
				s=s->next;
			}
			s->next=q; //将新节点插入
		}
		else //空表情况
		{
			 //直接插入
			head_stu=q;
		}
		readfile_stu>>ID>>PWD>>Name>>Sex>>Old>>Class>>Math>>Chinese>>English>>Authority;
	}
	readfile_stu.close(); //关闭文件
//	cout<<"\nstudent读取成功!(test)"<<endl; //*************************测试用
//教师
	ifstream readfile_tea("db_teacher.txt",ios_base::binary); //输入流文件对象初始化
	readfile_tea.getline(s,80);
	readfile_tea>>ID>>PWD>>Name>>Sex>>Old>>Class>>Math>>Chinese>>English>>Authority;
	//创建链表,从外部文件写入内存
	while (readfile_tea.good())
	{
		Unit *p;
		p=head_tea;
		p=new Unit (Name, PWD, Sex, Old, Class, ID, Math, Chinese, English, Authority);//构造函数:姓名,密码,性别,年龄,班级,ID,数学,语文,英语,权限
		p->next=NULL;
		if (head_tea) //head非空,则追加记录
		{
			Unit *t;
			t=head_tea;
			while (t->next) //s移到表尾
			{
				t=t->next;
			}
			t->next=p; //将新节点插入
		}
		else //空表情况
		{
			 //直接插入
			head_tea=p;
		}
		readfile_tea>>ID>>PWD>>Name>>Sex>>Old>>Class>>Math>>Chinese>>English>>Authority;
	}
	readfile_tea.close(); //关闭文件
//	cout<<"\nstudent读取成功!(test)"<<endl; //*************************测试用
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -