当前位置:编程学习 > C/C++ >>

c++编程中出现的问题

#include
#include
#include
#include
class Employ//基类-雇员类
{
protected:
int num;
char name[10];
char sex;
int age;
int wage;
public:
virtual void set()=0;
virtual void print()=0;
virtual void reserved()=0;
};
class Manager:public Employ//经理类
{
public:
void set();
void print();
void reserved();
};
class Salesman:public Employ//销售员类
{
protected:
int salesvolume;
int snum;
public:
void set();
void print();
void reserved();
void printinfor();
int getsales()
{return salesvolume;}
int getsnum()
{return snum;}
};
class MarketMan:public Manager//销售经理类
{
protected:
int salesvolume;
public:
void set();
void print();
void reserved();
int resetwage();
int getnum()
{return num;}
char*getname()
{return name;}
int getamount(Salesman s[],int n)
{
salesvolume=0;
for(int i=0;i<n;i++)
{if(s[i].getsnum()==num)
salesvolume+=s[i].getsales();}
return salesvolume;
}
};
class Technician:public Employ//技术员类
{
protected:
int worktime;
public:
void set();
void print();
void reserved();
};

void Manager::set()
{
wage=8000;
cout<<"经理的编号:";
cin>>num;
cout<<"其姓名:";
cin>>name;
cout<<"性别(m/w):";
cin>>sex;
cout<<"年龄:";
cin>>age;
}

void Manager::print()//经理类成员函数
{
cout<<"┣━━━━━━╋━━━━━━╋━━━━━━╋━━━━━━╋━━━━━━┫"<<endl;
cout<<"┃"<<setw(12)<<num<<"┃"<<setw(12)<<name<<"┃"<<setw(12)<<sex;
cout<<"┃"<<setw(12)<<age<<"┃"<<setw(12)<<wage<<"┃"<<endl;
}
void Manager::reserved()
{
ofstream employf("E:\\05-29\\gzglxt.txt",ios::app);
employf<<"经理的编号:"<<num<<endl
<<"其姓名:"<<name<<endl
<<"性别(m/w):"<>num;
cout<<"其姓名:";
cin>>name;
cout<<"性别(m/w):";
cin>>sex;
cout<<"年龄:";
cin>>age;
}
void MarketMan::print()
{
resetwage();
cout<<"┣━━━━━━╋━━━━━━╋━━━━━━╋━━━━━━╋━━━━━━┫"<<endl;
cout<<"┃"<<setw(12)<<num<<"┃"<<setw(12)<<name<<"┃"<<setw(12)<<sex;
cout<<"┃"<<setw(12)<<age<<"┃"<<setw(12)<<wage<<"┃"<<endl;
}
void MarketMan::reserved()
{
ofstream employf("E:\\05-29\\gzglxt.txt",ios::app);
employf<<"销售经理的编号:"<<num<<endl
<<"其姓名:"<<name<<endl
<<"性别(m/w):"<<sex<<endl
<<"年龄:"<<age<<endl;
}
int MarketMan::resetwage()
{
wage=5000+int(salesvolume*0.005);
return wage;
}

void Salesman::set()//销售员类定义
{
cout<<"销售员的编号:";
cin>>num;
cout<<"其姓名:";
cin>>name;
cout<<"性别(m/w):";
cin>>sex;
cout<<"年龄:";
cin>>age;
cout<<"销售额:";
cin>>salesvolume;
cout<<"所属销售经理的编号:";
cin>>snum;
wage=int(salesvolume*0.04);
}
void Salesman::printinfor()
{
cout<<"┣━━━━━━━╋━━━━━━━╋━━━━━━━┫"<<endl;
cout<<"┃"<<setw(14)<<num<<"┃"<<setw(14)<<name<<"┃"<<setw(14)<<salesvolume<<"┃"<<endl;
}
void Salesman::print()
{
cout<<"┣━━━━╋━━━━━╋━━━━━╋━━━━━╋━━━━━╋━━━━━━━━┫"<<endl;
cout<<"┃"<<setw(8)<<num<<"┃"<<setw(10)<<name<<"┃"<<setw(10)<<sex;
cout<<"┃"<<setw(10)<<age<<"┃"<<setw(10)<<wage<<"┃"<<setw(16)<<getsnum()<<"┃"<<endl;
}
void Salesman::reserved()
{
ofstream employf("E:\\05-29\\gzglxt.txt",ios::app);
employf<<"销售员的编号:"<<num<<endl
<<"其姓名:"<<name<<endl
<<"性别(m/w):"<<sex<<endl
<<"年龄:"<<age<<endl
<<"销售额:"<<salesvolume<<endl
<<"所属销售经理的编号"<<snum<<endl;
}

void Technician::set()//技术员类定义
{
cout<<"技术员的编号:";
cin>>num;
cout<<"其姓名:";
cin>>name;
cout<<"性别(m/w):";
cin>>sex;
cout<<"年龄:";
cin>>age;
cout<<"工作时间:";
cin>>worktime;
wage=worktime*100;
}
void Technician::print()
{
cout<<"┣━━━━━━╋━━━━━━╋━━━━━━╋━━━━━━╋━━━━━━┫"<<endl;
cout<<"┃"<<setw(12)<<num<<"┃"<<setw(12)<<name<<"┃"<<setw(12)<<sex;
cout<<"┃"<<setw(12)<<age<<"┃"<<setw(12)<<wage<<"┃"<<endl;
}
void Technician::reserved()
{
ofstream employf("E:\\05-29\\gzglxt.txt",ios::app);
employf<<"技术员的编号:"<<num<<endl
<<"其姓名:"<<name<<endl
<<"性别(m/w):"<<sex<<endl
<<"年龄:"<<age<<endl
<<"工作时间:"<<worktime<<endl;
}
//主函数
int t,m,s,mm;
Technician*pt;
Manager*pm;
Salesman*ps;
MarketMan*pmm;

void setin();
void count();
void printdata();
void reservedall();
void single();


void main()
{
cout<<"请分别输入技术员,经理,销售员,销售经理人数:"<>t>>m>>s>>mm;
pt=new Technician[t];
pm=new Manager;
ps=new Salesman[s];
pmm=new MarketMan[mm];
if((!pt)||(!pm)||(!ps)||(!pmm))
{
cout<<"堆内存分配失败!"<>choice;



switch(choice)
{
case 1:setin();
case 2:count();
case 3:printdata();
case 4:reservedall();
case 5:exit(0);
}
}



void setin()
{
Menu1:
cout<<"★★小型公司工资管理系统★★"<>ch1;
switch(ch1)
{
case 1:{for(i=0;i>ch2;
switch(ch2)
{
case 1:{for(i=0;i>ch3;
switch(ch3)
{case 1:{
cout<<"技术员"<>ch4;
switch(ch4)
{
case 1:{for(i=0;i<t;i++)
pt[i].reserved();
goto Menu4;
}
case 2:{for(i=0;i<m;i++)
pm[i].reserved();
goto Menu4;
}
case 3:{for(i=0;i<s;i++)
ps[i].reserved();
goto Menu4;
}
case 4:{for(i=0;i<mm;i++)
pmm[i].reserved();
goto Menu4;
}
case 5:single();
}
}
在执行该程序时出现 0x004030f4 处未处理的异常: 0xC0000005: 读取位置 0xfdfdfdfd 时发生访问冲突 该怎么解决啊
追问:试了还是不幸啊
答案:

可能是数组越界 或者 指针 错误。

你可以调试,然后跟踪着一步一步的执行,看看是在哪个位置出错,然后详细检查。

如果无法使用调试功能,就在自己的程序中加上几个输入和暂停的语句,看看是执行到什么地方出错。

要耐心,当你有经验的时候就很容易找到错误了。

(1)安装的软件与系统或其它软件发生冲突,盗版或带病毒的软件,请慎重下载软件,最好使用正版。【这里主要说的是检查开机启动项,把没必要启动的启动项禁止开机启动】
2}可能是数组越界了

上一个:关于C/C++编程问题
下一个:c++编程数组排序的问题

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,