📄 file_operation.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 + -