编程论坛
注册
登录
编程论坛
→
C++教室
有没有人能帮帮我做这题啊,老是出毛病
yqfang310
发布于 2008-03-06 16:20, 946 次点击
做一个根据学号查名字以及根据名字查学号的程序,名字和学号的对应表从文件中读入学号与名字的数据
7 回复
#2
sunkaidong
2008-03-06 16:49
这个程序应该不难啊,你把你的代码给看看啊....
#3
aipb2007
2008-03-06 19:16
你分别把学号和姓名读到no[]和name[]里
两个函数,分别查找两个数组,查学号返回no[i],查姓名返回name[i]
#4
tszhao
2008-03-06 21:10
我也编写了一下这个程序,结果也是出错了,哪位高手帮帮忙哈!!~
#include <iostream>
#include <string>
#include <fstream>
#include <vector>
using namespace std;
class data
{
public:
data(){};
private:
string name;
int num;
};
int main()
{
vector<data> vec;
data d;
void check(int numb,vector<data>);
void check(string str,vector<data>);
void input();
int numb;
string nam;
ifstream infile("nam_num.dat",ios::in); //nam_num.dat 是你存放名字和学号对应表的文件。
if(!infile)
{
cerr<<"open file error!"<<endl;
exit(0);
}
ostream& operator>>(ostream&input,data&d)
{
input>>d.num>>d.name;
return input;
}
while(infile>>d)
vec.push_back(d);
cout<<"请输入你要查询的学号:";
cin>>numb;
check(numb,vec);
cout<<"请输入你要查询的学生姓名:";
cin>>nam;
check(nam,vec);
return 0;
}
void check(string nam,vector<data> vec)
{
int i,m;
int flag(0);
for(i=0;i!=vec.size();++i)
if(nam==data.name[i])
{
flag=1;
m=i;
}
if(flag)
cout<<vec[m].num<<" "<<vec[m].name<<endl;
else
cout<<"没有这个学生!"<<endl;
}
void check(int numb,vector<data> vec)
{
int i,m;
int flag(0);
for(i=0;i!=vec.size();++i)
if(numb==data.num[i])
{
flag=1;
m=i;
}
if(flag)
cout<<vec[m].num<<" "<<vec[m].name<<endl;
else
cout<<"没有这个学生!"<<endl;
}
#5
yqfang310
2008-03-08 14:44
有没有人忙看一下啊,小弟C++基础不怎么好
#6
yqfang310
2008-03-08 14:51
[bo]以下是引用 [un]aipb2007[/un] 在 2008-3-6 19:16 的发言:[/bo]
你分别把学号和姓名读到no[]和name[]里
两个函数,分别查找两个数组,查学号返回no,查姓名返回name
从文件里面怎么分别读到数组啊,真的不懂耶
#7
aipb2007
2008-03-08 15:09
找本书看文件流fstream
#8
千里冰封
2008-03-08 19:14
把映射信息写入文件了,你读的时候,把一行一行的数据读出来,再自己做好一个映射,再在内存里面进行查找就可以了
当然,如果 文件特别大,是不适合全部读入内存的,这个时候就应该读一部份查一部份
1