求助啊、、C 课程设计的。。

[复制链接]
查看11 | 回复2 | 2011-6-27 02:11:26 | 显示全部楼层 |阅读模式
回复

使用道具 举报

千问 | 2011-6-27 02:11:26 | 显示全部楼层
你这程序我实在是没精力挨个写,去年我的作业,借鉴一下吧,功能不完全一样,但都差不多。呵呵,又发现下面那题也类似,一起看吧。
/*一条学生的记录包括学号、姓名和成绩等信息,
要求进行如下读写操作:
(1)格式化输入多个学生记录;
(2)以清晰的格式写到文件stu.txt中;
(3)按二进制方式写到文件stu.dat中;
(4)从文件中读出对成绩求平均值;
(5)对文件中按成绩排序再写回文件中.
(6)在文件中查找某个学生的信息,
修改成绩并重新写入文件*/
#includeiostream
#includefstream
usingnamespacestd;

classStudent
{
public:
intid;
charname[20];
intscore;
};

voidmain()
{
ofstreamfout1(\"c:\\\\stu.txt\");
ofstreamfout2(\"c:\\\\stu.dat\",ios::binary);
Students;
cout\"请输入学生学号、姓名和成绩:\"endl;
cins.ids.names.score;//实现输入学生数据
while(s.score=0)
{
fout1s.id\"\"s.name\"\"s.scoreendl;//写到文件stu.txt功能
fout2.write((char*)//实现写到文件stu.dat功能
cins.ids.names.score;
}
fout1.close();
fout2.close();



//从文件中读出对成绩求平均值;
ifstreamfin(\"c:\\\\stu.dat\");
fin.seekg(0,ios::end);
intpos=fin.tellg();
intcount=pos/sizeof(Student);//计算学生个数


Students1;
fin.seekg(0);
fin.read((char*)
couts1.scoreendl;
intsum=0;
for(inti=0;icount;i)
{

sum=sums1.score;
fin.seekg((i1)*sizeof(Student));
fin.read((char*)
}//求成绩和
cout\"平均成绩为:\"sum/countendl;
fin.close();


//对文件中按成绩排序再写回文件中
fin.close();

ifstreamfin2(\"c:\\\\stu.dat\");
fin2.seekg(0);
ofstreamfout3(\"c:\\\\stu.txt\",ios::app);
Students4,s5;

fin2.seekg(0);
intk=sizeof(Student);
fin2.read((char*)



fin2.seekg(k);
fin2.read((char*)


for(intj=0;jcount;j)//选择排序
{
for(intq=j1;qcount;q)
{
if(s4.scores5.score)
s4=s5;
fin2.seekg(q*k);
fin2.read((char*)

}

fout3s4.id\"\"s4.name\"\"s4.scoreendl;;

fin2.seekg((j)*k);
fin2.read((char*)

}
fin2.close();
fout3.close();

//在文件中查找某个学生的信息,修改成绩并重新写入文件
ifstreamfin1(\"c:\\\\stu.dat\");
cout\"请输入学生序号:\"endl;
intq;
cinq;
fin1.seekg((q-1)*sizeof(Student));
Students2;
fin1.read((char*)
cout\"第\"q\"个学生信息:\"s2.id\"\"s2.name\"\"s2.scoreendl;//显示
fin1.close();


fstreamfio(\"c:\\\\stu.dat\",ios::in|ios::out);
Students3;
cout\"输入修改信息:\"endl;
cins3.ids3.names3.score;

fio.seekp((i-1)*sizeof(Student));
fio.write((char*)//写入文件
fio.close();
}
/*有5个员工的数据,包括职员的姓名、工号和周薪,要求:
(1)把它们存到磁盘文件中;
(2)将磁盘文件中的第1,3,5个员工数据读入程序并显示;
(3)将第3个员工的数据修改后存回磁盘文件中的原有位置。
(4)从磁盘文件读入修改后的5个员工的数据并显示出来。
(5)增添新员工的信息
(6)删除第一个员工的信息*/

#includeiostream
#includefstream
usingnamespacestd;

classWorker
{
public:
charname[20];
intid;
intpay;
};


voidmain()
{//把它们存到磁盘文件中
Workera[5];
ofstreamfout(\"c://员工管理系统.txt\");
cout\"pleaseinputtheinformationsofthe5workers:\"endl;
for(inti=0;i5;i)
{
cina.namea.ida.pay;

}
for(i=0;i5;i)
fout.write((char*)
//a.name\"\"a.id\"\"a.payendl;
fout.close();
//将磁盘文件中的第1,3,5个员工数据读入程序并显示
ifstreamfin(\"c://员工管理系统.txt\");
fin.seekg(ios::beg);
cout\"hereissomeinformationofworker1,3,5:\"endl;

for(i=0;i5;i=i2)
couta.name\"\"a.id\"\"a.payendl;
fin.close();
//将第3个员工的数据修改后存回磁盘文件中的原有位置
fstreamfio(\"c://员工管理系统.txt\");
Workera1;
cout\"输入修改信息:\"endl;
cina1.namea1.ida1.pay;
fio.seekg(ios::beg);
fio.seekp(2*sizeof(Worker));
fio.write((char*)
couta1.name\"\"a1.id\"\"a1.payendl;


//从磁盘文件读入修改后的5个员工的数据并显示出来
Workera3;
fio.seekg(ios::beg);
cout\"newinformation:\"endl;
for(i=0;i5;i)
{
fio.seekp(i*sizeof(Worker));
fio.read((char*)
couta3.name\"\"a3.id\"\"a3.payendl;
}
fio.close();
//增添新员工的信息
Workera4;
ofstreamfout1(\"c://员工管理系统.txt\",ios::app);//设置文件提取方式为保留原数据,直接增加新数据
cout\"pleaseinputtheinformationofnewworker:\"endl;
cina4.namea4.ida4.pay;
fout1a4.name\"\"a4.id\"\"a4.payendl;


//删除第一个员工的信息
Workera5;
fstreamfio1(\"c://员工管理系统.txt\");//原理:先从文件中取出从第二个工人开始的数据再存入文件
ofstreamfout2(\"c://员工管理系统.txt\");
for(i=1;i6;i)
{
fio1.seekp(i*sizeof(Worker));
fio1.read((char*)
fout2.write((char*)
}

}
回复

使用道具 举报

千问 | 2011-6-27 02:11:26 | 显示全部楼层
已加。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行