VC++读文件的问题:在A.TXT中删除条目后自动删除B.TXT中相应的内容

来源:百度知道 编辑:UC知道 时间:2024/05/27 08:59:05
学生基本信息文件(A.TXT)及其内容:A.TXT文件不需要编程录入数据,可用文本编辑工具直接生成
学号 姓名 性别 宿舍号码 电话号码
01 张成成 男 501 87732111
02 李成华 女 101 87723112
03 王成凤 女 101 87723112
04 张明明 男 502 87734333
05 陈东 男 501 87732111
06 李果 男 502 87734333
07 张园园 女 102 87756122
… … … … … …
学生成绩基本信息文件(B.TXT)及其内容:
学号 课程编号 课程名称 学分 平时成绩 实验成绩 卷面成绩 综合成绩 实得学分
01 A01 大学物理 3 66 78 82
02 B03 高等数学 4 78 -1 90
01 B03 高等数学 4 45 -1 88
02 C01 VF 3 65 76 66
… … … … … … … … … …
(1)求函数,当在A.TXT中删除一个学生时,自动地在B.TXT中删除此人所有信息。
数据结构为链表类型.
(2)将链表内容保存为TXT文本的函数

1、
首先,无论B.txt在硬盘上也好,还是当你读取了a.txt就生成了b.txt也好。总之,先要把b.txt搞到内存中,如果是第一种情况,那就读入,如果是第二种情况,那本来就在内存中了。

然后,当你删除a.txt中某项信息时,事实上是删除了一个学生信息。这个学生一定是有学号的。记下这个学好(假设是XX)。

接着,检索B.TXT在内存中的所有学号字段为XX(上面记下的那个)的记录,并将它从内存中删除。

最后,将修改后的B.TXT链表存入B.TXT文件。

当然,如果你是用数据库操作的话,那就没那么复杂了,用一条复合语句就可以实现。

2、
因为你没有给出数据结构定义,因此无法给你写准确的代码。下面是存盘的伪代码。

void SaveToFile()
{
//假设你的链表这样访问,象MFC的CList类似:

// 遍历链表
POSITION pos;
for( pos = m_list.GetHeadPosition(); pos; m_list.GetNextPosition( pos ))
{
NODE * pNode = m_list.GetAt( pos ); //得到链表中的数据
WriteToFile( pNode, sizeof( NODE )); //写文件
}
}

安慰你一下!