帮忙修改一个c++程序,调试总是出错。。。

http://hi.baidu.com/dc3994288/blog/item/d686a388d53ac6a66c8119b9.html请直接在空间下面评论需要修改的内... http://hi.baidu.com/dc3994288/blog/item/d686a388d53ac6a66c8119b9.html
请直接在空间下面评论需要修改的内容,然后来这里说一下就行了,麻烦你了,两百分,加上追加50.
补充一下,用的编译器是vc6.0. xp系统,愿意帮忙的且有把握的可以现在回答上留言再去空间回答,避免大家重复劳动,谢谢了!!
展开
 我来答
hpmv
2011-06-18 · TA获得超过886个赞
知道小有建树答主
回答量:279
采纳率:0%
帮助的人:135万
展开全部
我在空间详细的回复了。程序再贴一下。
不要只看上面的解答。这个程序不只是语法错误,还有逻辑错误。能编译并不代表正确。
另外反驳楼上观点。最后的main()是很有用的。用途是重新执行,从而能打印出菜单,等等。否则的话程序到那个地方就结束了。实际上这个应该修改成在main()里面加一个while(true){...} 的循环。就不用屡次调用main()了

1. 第40行
void printo();//成员函数定义完毕
};
这里的分号不能用中文分号。改成;

2. 第186行
yg.push_back(yuangong) 忘了分号。

3. 第192行
cout<<"输入完毕,返回主菜单。" 忘了分号。

4. 第202行,256行,270行,302行
yg[ix].printo; 没有函数括号。加()

5. 第270行
if(yg[ix2].wage==sedu) 是unsigned long和string互相比较。你的意思是if(yg[ix2].education==sedu)吧。。。干嘛把工资和学历相比较呢。

6. 第282行
string yggg 少了分号。

7. 第284行
for(int ii=1;ii<yg2.size;i++) 前面是ii后面变成i了。改成ii.
另外for(int ii=1;ii<yg2.size;ii++)应该改成for(int ii=1;ii<yg2.size();ii++)。 size()是函数。

8. 第286行
for(vector<int>::size_type ix3=0;ix3!=yg2.size();ix3++){ 这里把所有的ix3都改成 j 。 因为后面用的都是 j.

9. 第282行
string yggg; 改为Employee yggg; 因为yggg是表示排序过程中交换两个Employee的中间值。

10. 最后一行
少了一个} 用来结束search() 定义。

11. 第194行
single()???这是啥啊?改成main()估计是你的意思。

12.以下为逻辑问题:
a. 输入永远不会结束。解决方法:改成bool Employee::set(),输入成功返回true, 如果输入编号为0则返回false. 返回false之后结束输入数据过程。
b. 输出格式有问题。在278行改成了cout<<"以下为按工资排序并输出"<<endl; (加了endl),然后把100行改成cout<<"┣━━━━━━╋━━━━━━╋━━━━━━╋━━━━━━╋━━━━━━╋━━━━━━╋━━━━━━╋━━━━━━┫"<<endl;
在305行和203行分别加上cout<<"┣━━━━━━╋━━━━━━╋━━━━━━╋━━━━━━╋━━━━━━╋━━━━━━╋━━━━━━╋━━━━━━┫"<<endl;

最终结果:
-----------------------

#include <iostream>
#include <string>
#include <string.h>
#include <fstream>
#include <vector>
#include <iomanip>
using namespace std;
class Employee{//定义职工类
public:
unsigned long num;//此处假设员工号全为数字
char name[20];
char sex;
unsigned int age;
string education;
unsigned long wage;
string address;
string phonenum;//数据成员定义完毕
bool set();
void printo();//成员函数定义完毕
};
bool Employee::set(){//读入数据并存储到文件
cout<<"现在开始分组输入数据,请根据提示逐条输入"<<endl;
cout<<"编号:(必须全为数字,输入 0 退出)";
cin>>num;
if(num==0) return false;
cout<<"姓名:";
cin>>name;
cout<<"性别(男为M,女为W)";
cin>>sex;
cout<<"年龄:";
cin>>age;
cout<<"学历:";
cin>>education;
cout<<"工资:";
cin>>wage;
cout<<"地址:";
cin>>address;
cout<<"电话:";
cin>>phonenum;//信息录入完毕
ofstream out("out.txt",ios::app);
out<<"编号:"<<num<<endl
<<"姓名:"<<name<<endl
<<"性别:"<<sex<<endl
<<"年龄:"<<age<<endl
<<"学历:"<<education<<endl
<<"工资:"<<wage<<endl
<<"地址:"<<address<<endl
<<"电话:"<<phonenum<<endl;
return true;
}
void Employee::printo(){//输出信息
cout<<"┣━━━━━━╋━━━━━━╋━━━━━━╋━━━━━━╋━━━━━━╋━━━━━━╋━━━━━━╋━━━━━━┫"<<endl;
cout<<"┃"<<setw(12)<<num<<"┃"<<setw(12)<<name<<"┃"<<setw(12)<<sex;
cout<<"┃"<<setw(12)<<age<<"┃"<<setw(12)<<education<<"┃"<<setw(12)<<wage;
cout<<"┃"<<setw(12)<<address<<"┃"<<setw(12)<<phonenum<<"┃"<<endl;
}
Employee yuangong;
vector<Employee> yg;
void setin();
void printout();
void search();
// void dechange();
int main(){
cout<<"职工信息管理系统设计"<<endl;
cout<<"┏━━━━━━━━━┓"<<endl;
cout<<"┃ 按数字键操作 ┃"<<endl;
cout<<"┃ ┃"<<endl;
cout<<"┃ 1、输入数据 ┃"<<endl;
cout<<"┃ ┃"<<endl;
cout<<"┃ 2、输出数据 ┃"<<endl;
cout<<"┃ ┃"<<endl;
cout<<"┃ 3、查询和排序 ┃"<<endl;
cout<<"┃ ┃"<<endl;
//cout<<"┃ 4、删除和修改 ┃"<<endl;
cout<<"┃ ┃"<<endl;
cout<<"┃ 5、退出 ┃"<<endl;
cout<<"┃ ┃"<<endl;
cout<<"┗━━━━━━━━━┛"<<endl;
int choice;
cin>>choice;
switch(choice)
{
case 1:setin();
case 2:printout();
case 3:search();
//case 4:dechange();
case 5:exit(0);
}
}
void setin()
{
int i;
for(i=0;;i++){
if(yuangong.set())
yg.push_back(yuangong);
else break;
cout<<"---------------------------------"<<endl;
}
cout<<"输入完毕,返回主菜单。";
main();
}
void printout(){
for(vector<int>::size_type ix=0;ix!=yg.size();++ix)
yg[ix].printo();
cout<<"┣━━━━━━╋━━━━━━╋━━━━━━╋━━━━━━╋━━━━━━╋━━━━━━╋━━━━━━╋━━━━━━┫"<<endl;
}
void search(){
Menu1:
cout<<"职工信息管理系统设计"<<endl;
cout<<"┏━━━━━━━━━┓"<<endl;
cout<<"┃ 按数字键操作 ┃"<<endl;
cout<<"┃ ┃"<<endl;
cout<<"┃ 1、按工资 ┃"<<endl;
cout<<"┃ ┃"<<endl;
cout<<"┃ 2、按学历 ┃"<<endl;
cout<<"┃ ┃"<<endl;
cout<<"┃ 3、排序 ┃"<<endl;
cout<<"┃ ┃"<<endl;
cout<<"┃ 4、返回 ┃"<<endl;
cout<<"┃ ┃"<<endl;
cout<<"┗━━━━━━━━━┛"<<endl;
int choice1;
unsigned swage;
string sedu;
cin>>choice1;
switch(choice1)
{
case 1:{
cout<<"请输入工资:";
cin>>swage;
for(vector<int>::size_type ix1=0;ix1!=yg.size();ix1++){
if(yg[ix1].wage==swage) yg[ix1].printo();
cout<<endl;
goto Menu1;}}
case 2:{
cout<<"请输入学历:";
cin>>sedu;
for(vector<int>::size_type ix2=0;ix2!=yg.size();ix2++){
if(yg[ix2].education==sedu) yg[ix2].printo();
cout<<endl;
goto Menu1;}}
case 3:{
cout<<"以下为按工资排序并输出"<<endl;
vector<Employee> yg2(yg);
Employee yggg;
for(int ii=1;ii<yg2.size();ii++)
for(vector<int>::size_type j=0;j!=yg2.size();j++){
if(yg2[j].wage<yg2[j+1].wage)
{
yggg=yg2[j];
yg2[j]=yg2[j+1];
yg2[j+1]=yggg;
}}
for(vector<int>::size_type ix4=0;ix4!=yg.size();ix4++){
yg[ix4].printo();
cout<<endl;}
cout<<"┣━━━━━━╋━━━━━━╋━━━━━━╋━━━━━━╋━━━━━━╋━━━━━━╋━━━━━━╋━━━━━━┫"<<endl;
goto Menu1;}
case 4:main();
}
}
wick_0725
2011-06-18 · TA获得超过1354个赞
知道小有建树答主
回答量:215
采纳率:0%
帮助的人:149万
展开全部
不懂。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
我很幸福啊123
2011-06-18 · TA获得超过286个赞
知道答主
回答量:139
采纳率:0%
帮助的人:72.8万
展开全部
我有个程序几乎和你的一样,要不要发给你,我最近也做了一个类似的题目
追问
方便的话发给我看看吧,麻烦你了。。。。我想知道我哪里错了啊。。就是通不过编译。。呼呼~
追答
那我发给你的邮箱吧,你看看
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dengniyiqianni
2011-06-18 · TA获得超过316个赞
知道小有建树答主
回答量:213
采纳率:0%
帮助的人:322万
展开全部
给我你的邮箱,我发给你我改变后的。。。可以HI我。。或者直接追问。。。
#include <iostream>
#include <string>
#include <string.h>
#include <fstream>
#include <vector>
#include <iomanip>
using namespace std;

class Employee{//定义职工类
public:
unsigned long num;//此处假设员工号全为数字
char name[20];
char sex;
unsigned int age;
string education;
unsigned long wage;
string address;
string phonenum;//数据成员定义完毕
void set();
void printo();//成员函数定义完毕
};

void Employee::set(){//读入数据并存储到文件
cout<<"现在开始分组输入数据,请根据提示逐条输入"<<endl;
cout<<"编号:(必须全为数字)";
cin>>num;
cout<<"姓名:";
cin>>name;
cout<<"性别(男为M,女为W)";
cin>>sex;
cout<<"年龄:";
cin>>age;
cout<<"学历:";
cin>>education;
cout<<"工资:";
cin>>wage;
cout<<"地址:";
cin>>address;
cout<<"电话:";
cin>>phonenum;//信息录入完毕
ofstream out("out.txt",ios::app);
out<<"编号:"<<num<<endl
<<"姓名:"<<name<<endl
<<"性别:"<<sex<<endl
<<"年龄:"<<age<<endl
<<"学历:"<<education<<endl
<<"工资:"<<wage<<endl
<<"地址:"<<address<<endl
<<"电话:"<<phonenum<<endl;
}

void Employee::printo(){//输出信息
cout<<"┣━━━━━━╋━━━━━━╋━━━━━━╋━━━━━━╋━━━━━━┫"<<endl;
cout<<"┃"<<setw(12)<<num<<"┃"<<setw(12)<<name<<"┃"<<setw(12)<<sex;
cout<<"┃"<<setw(12)<<age<<"┃"<<setw(12)<<education<<"┃"<<setw(12)<<wage;
cout<<"┃"<<setw(12)<<address<<"┃"<<setw(12)<<phonenum<<"┃"<<endl;
}

Employee yuangong;
vector<Employee> yg;
void setin();
void printout();
void search();
// void dechange();
int main(){
cout<<"职工信息管理系统设计"<<endl;
cout<<"┏━━━━━━━━━┓"<<endl;
cout<<"┃ 按数字键操作 ┃"<<endl;
cout<<"┃ ┃"<<endl;
cout<<"┃ 1、输入数据 ┃"<<endl;
cout<<"┃ ┃"<<endl;
cout<<"┃ 2、输出数据 ┃"<<endl;
cout<<"┃ ┃"<<endl;
cout<<"┃ 3、查询和排序 ┃"<<endl;
cout<<"┃ ┃"<<endl;
//cout<<"┃ 4、删除和修改 ┃"<<endl;
cout<<"┃ ┃"<<endl;
cout<<"┃ 5、退出 ┃"<<endl;
cout<<"┃ ┃"<<endl;
cout<<"┗━━━━━━━━━┛"<<endl;
int choice;
cin>>choice;
switch(choice)
{
case 1:setin();
case 2:printout();
case 3:search();
//case 4:dechange();
case 5:exit(0);
}
return 0;
}

void setin()
{
int i;
for(i=0;;i++){
yuangong.set();
yg.push_back(yuangong);
cout<<"---------------------------------"<<endl;
}
cout<<"输入完毕,返回主菜单。";
// single();
}

void printout(){
for(vector<int>::size_type ix=0;ix!=yg.size();++ix)
yg[ix].printo();
}

void search(){
Menu1:
cout<<"职工信息管理系统设计"<<endl;
cout<<"┏━━━━━━━━━┓"<<endl;
cout<<"┃ 按数字键操作 ┃"<<endl;
cout<<"┃ ┃"<<endl;
cout<<"┃ 1、按工资 ┃"<<endl;
cout<<"┃ ┃"<<endl;
cout<<"┃ 2、按学历 ┃"<<endl;
cout<<"┃ ┃"<<endl;
cout<<"┃ 3、排序 ┃"<<endl;
cout<<"┃ ┃"<<endl;
cout<<"┃ 4、返回 ┃"<<endl;
cout<<"┃ ┃"<<endl;
cout<<"┗━━━━━━━━━┛"<<endl;
int choice1;
unsigned swage;
string sedu;
cin>>choice1;
switch(choice1)
{
case 1:{
cout<<"请输入工资:";
cin>>swage;
for(vector<int>::size_type ix1=0;ix1!=yg.size();ix1++){
if(yg[ix1].wage==swage) yg[ix1].printo();
cout<<endl;
goto Menu1;}}
case 2:{
cout<<"请输入学历:";
cin>>sedu;
for(vector<int>::size_type ix2=0;ix2!=yg.size();ix2++){
if(yg[ix2].education==sedu) yg[ix2].printo();
cout<<endl;
goto Menu1;}}
case 3:{
cout<<"以下为按工资排序并输出";
vector<Employee> yg2(yg);
Employee yggg;
for(int ii=1;ii<yg2.size();ii++)
for(vector<int>::size_type ix3=0;ix3!=yg2.size();ix3++){
if(yg2[ix3].wage<yg2[ix3+1].wage)
{
yggg=yg2[ix3];
yg2[ix3]=yg2[ix3+1];
yg2[ix3+1]=yggg;
}}
for(vector<int>::size_type ix4=0;ix4!=yg.size();ix4++){
yg[ix4].printo();
cout<<endl;}
goto Menu1;}
case 4:
main(); //怎么可以调用main呢...其实多余,应该删了
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cicy821
2011-06-18 · TA获得超过167个赞
知道答主
回答量:151
采纳率:0%
帮助的人:111万
展开全部
for(int ii=1;ii<yg2.size;i++) 明显语法错误,一会ii一会i一会j的不知道你要用哪个。
if(yg2[j].wage<yg2[j+1].wage)
3、void setin()
{
int i;
for(i=0;;i++)
{
yuangong.set();
yg.push_back(yuangong)
cout<<"---------------------------------"<<endl;
}
cout<<"输入完毕,返回主菜单。"
single();
}
程序逻辑问题:死循环输入,for中没有判断break的条件,后面的程序怎么能走到?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
921901670
2011-06-18
知道答主
回答量:97
采纳率:0%
帮助的人:20.6万
展开全部
不懂
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式