2 qq 29120007 qq_29120007 于 2015.06.18 11:36 提问

C++类公司人员管理 运行报错
c++

#include
#include
using namespace std;
/*class Data
{
int year;
int month;
int day;
public:
void setyear(int year){ this->year=year; }void setmonth(int month){ this->month=month ; }void setday(int day){ this->day=day; }void getyear(){ cout << year; }
void getmonth(){ cout << month; }void getday( ){ cout << day; }
};*/
class employee
{
protected:
char name; //姓名
int individualEmpNo; //个人编号
int grade; //级别
float accumPay; //月薪总额
static int employeeNo; //本公司职员编号目前最大值
//Data data;
public:
employee(); //构造函数
~employee(); //析构函数
virtual void pay() = 0; //计算月薪函数(纯虚函数)
virtual void promote(int increment);
//升级函数(虚函数)
virtual void displayStatus() = 0;
//显示人员信息(纯虚函数)
};
class technician :public employee //兼职技术人员类
{
private:
float hourlyRate; //每小时酬金
int workHours; //当月工作时数
public:
technician(); //构造函数
void promote(int); //升级函数
void pay(); //计算月薪函数
void displayStatus(); //显示人员信息
};
class salesman :virtual public employee //兼职推销员类
{
protected:
float CommRate; //按销售额提取酬金的百分比
float sales; //当月销售额
public:
salesman(); //构造函数
void promote(int); //升级函数
void pay(); //计算月薪函数
void displayStatus(); //显示人员信息
};
class manager :virtual public employee //经理类
{
protected:
float monthlyPay; //固定月薪数
public:
manager(); //构造函数
void promote(int); //升级函数
void pay(); //计算月薪函数
void displayStatus(); //显示。人员信息
};
class salesmanager :public manager, public salesman
//销售经理类
{
public:
salesmanager(); //构造函数
void promote(int); //升级函数'
void pay(); //计算月薪函数
void displayStatus(); //显示人员信息
};
int employee::employeeNo = 1000;
//员工编号基数为
employee::employee( )
{
char namestr[50];
//输人雇员姓名时首先临时存放在namestr中
cout << "请输入下一个雇员的姓名:";
cin >> namestr; getchar();
name = new char[strlen(namestr) + 1];
//动态申请用于存放姓名的内存空间
strcpy_s(name,51, namestr); //将临时存放的姓名复制到name
/*int y, m, d;
cout << "请输入该雇员的生日" << endl;
cin >> y;
data.setyear(y);
cin >> m;
data.setmonth(m);
cin >> d;
data.setday(d);
/
individualEmpNo = employeeNo++;
//新输入的员工,其编号为目前最大编号加l
grade = 1; //级别初值为l
accumPay = 0.0; //月薪总额初值为
}
employee::~employee()
{
delete name;
//在析构函数中删除为存放姓名动态分配的内存空间
}
void employee::promote(int increment)
{
grade += increment; //升级,提升的级数由increment指定
}
technician::technician()
{
hourlyRate = 100; //每小时酬金元
}
void technician::promote(int)
{
employee::promote(2); //调用基类的升级函数,升级
}
void technician::pay()
{
cout << "请输入" << name << "本月的工作时数:";
cin >> workHours;
accumPay = hourlyRate*workHours;//计算月薪,按小时计酬
cout << "兼职技术人员" << name << "编号"
<< individualEmpNo << "本月工资" << accumPay << endl;
}
void technician::displayStatus()
{
cout << "兼职技术人员" << name << "编号"
<< individualEmpNo << "级别为" << grade
<< "级,已付本月工资" << accumPay;
/*cout << "出生日期为:";
data.getyear(); data.getmonth(); data.getday();*/
}
salesman::salesman()
{
CommRate = 0.04; //销售提成比例%
}
void salesman::promote(int)
{
employee::promote(0); //调用基类的升级函数,升级
}
void salesman::pay()
{
cout << "请输人" << name << "本月的销售额:";
cin >> sales;
accumPay = sales*CommRate; //月薪二销售提成
cout << "推销员" << name << "编号" << individualEmpNo
<< "本月工资" << accumPay << endl;
}
void salesman::displayStatus()
{
cout << "推销员" << name << "编号" << individualEmpNo
<< "级别为" << grade << "级,已付本月工资"
<< accumPay;
/*cout << "出生日期为:";
data.getyear(); data.getmonth(); data.getday();*/
}
manager::manager()
{
monthlyPay = 8000; //固定月薪元
}
void manager::promote(int)
{
employee::promote(3); //调用基类的升级函数,升级
}
void manager::pay()
{
accumPay = monthlyPay; //月薪总额即固定月薪数
cout << "经理" << name << "编号" << individualEmpNo
<< "本月工资" << accumPay << endl;
}
void manager::displayStatus()
{
cout << "经理" << name << "编号" << individualEmpNo
<< "级别为" << grade << "级,已付本月工资"
<< accumPay;
/*cout << "出生日期为:";
data.getyear(); data.getmonth(); data.getday();*/
}
salesmanager::salesmanager()
{
monthlyPay = 5000;
CommRate = 0.005;
}
void salesmanager::promote(int)
{
employee::promote(2); //调用基类的升级函数,升级
}
void salesmanager::pay()
{
cout << "请输入" << employee::name
<< "所管辖部门本月的销售总额:";
cin >> sales;
accumPay = monthlyPay + CommRate*sales;
//月薪二固定月薪+销售提成
cout << "销售经理" << name << "编号" << individualEmpNo
<< "本月工资" << accumPay << endl;
}
void salesmanager::displayStatus()
{
cout << "销售经理" << name << "编号" << individualEmpNo
<< "级别为" << grade << "级,已付本月工资"
<< accumPay;
/*cout << "出生日期为:";
data.getyear(); data.getmonth(); data.getday();*/
}
int main()
{
manager m1;
technician t1;
salesmanager sm1;
salesman s1;
employee emp[4] = { &m1, &t1, &sm1, &s1 };
//用指针数组的各元素存放各对象的地址
int i;
for (i = 0; i<4; i++)
{ /
依次调用各派生类对象的成员函数,完成各自不同的升
级、计算月薪、显示信息功能。*/
emp[i]->promote(0);
emp[i]->pay();
emp[i]->displayStatus();
}

return 0;

}

一运行 输入姓名之后就报错~我看半天了 都觉得挺对啊 求大神指点

4个回答

ycg514230
ycg514230   Rxr 2015.06.18 12:08

代码太多了,一下也不好定位,建议你用VS单步调试看看是什么问题吧

lx624909677
lx624909677   Ds   Rxr 2015.06.18 12:09

在输入姓名的地方添加一个断点,然后载入完姓名后回到代码中,按F10走下一步,看看是哪里出错了

lx624909677
lx624909677 回复qq_29120007: 在输入姓名的地方按F9设置断点,然后F5运行程序,输入完姓名后会回到断点处,然后按F10调试
大约 3 年之前 回复
qq_29120007
qq_29120007 用的VS2013 调试的看不懂呀- -
大约 3 年之前 回复
cuiwei1026522829
cuiwei1026522829   Ds   Rxr 2015.06.18 19:03

最开始那两个#include引入的是谁啊。。

frank_20080215
frank_20080215   2015.06.18 12:08

咳,怎么有些属性不用类变量,静态Static?

lx624909677
lx624909677 用什么类型的变量取决于这个变量存什么,静态的和非静态的也取决于应用的场景,这些使用都没有规定说是必须的
大约 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
c++人员管理系统【类】
//#include"Employee.h" #include #include #include #include using namespace std; int laker=1; class date { private: int year; int month; int day;     public:     date(){}     date(int y,
c++公司员工管理系统
第一实践写的C++,可能很多地方不完善 #include<limits> #include<iostream> #include<fstream> using namespace std;
公司人员管理系统c++程序设计
某小型公司,主要有四类人员:经理,兼职技术人员,销售经理和兼职推销员。 (1) 人员信息包括姓名:编号,级别,当月薪水,计算月薪总额等; (2) 能够显示这些人员的全部信息; (3) 添加删除功能:能根据公司人事的变动情况,添加删除记录; (4) 查询功能:能根据编号和姓名进行查询; (5) 人员编号在生成人员信息时自动生成,每输入一个人员信息编号顺序加1。
C++实习报告 小型公司管理系统
姓名:智慧星   学号:06  指导老师:xxxxxx  日期:2007年1月10日  邮箱: xing1xing2@126.com        一、 实习目的:  1、 握C++语言编程的基础知识。通过编写一个小型公司管理系统,学会简单的面向对象的编程方法,包括类的结构、继承以及了的多态与虚函数、抽象类之间的关系。  2、 悉Visual C++6.0的编程环境,通过编译提示、断点调试能够找出
c++程序设计小型公司员工信息管理系统
c++程序设计小型公司员工信息管理系统
C++ 《企业员工管理系统》
一企业有四类职工:经理,销售经理,技术人员,销售员。现在,需要存储这些人员的人事档案信息:工号、姓名、职务、工资等信息。要求编写程序来完成如下功能: 1)添加、删除功能:能根据企业人事的变动情况,添加删除记录 2)修改功能:能根据编号对员工的记录进行修改并存储 3)保存功能:能对输入的数据进行相应的存储 4)工号在生成人员信息时同时生成,工号能唯一标识员工 5)查询统计功能:显示所有员工信息及销售信息
c++版本的员工管理系统
#include #include #include #include #include using namespace std; class Employee { public:     string num,name;     int hour,time,money,pos;     struct Employee* next; }; typedef class Em
公司员工管理系统(C++继承、多态)
公司员工信息管理系统:(使用C++实现)1、输入:txt文本,包含员工信息、性别、年龄、工号、部门、职位(职员、部门经理、总经理)等信息。2、要求功能: 添加、删除、修改员工信息;    员工显示排序(能够根据任意信息排序)。    根据某员工查询其上下级员工;    能够输出所有信息。3、需要使用知识点:类继承、多态、vector/map容器。源代码:@1、头文件:#include &amp;lt;io...
用C++实现员工管理系统
职工信息管理系统: 1. 存在一个数据文件,用来存储职工各种信息:职工号,姓名,年龄,性别,邮编,部门,工资 2. 可以注册新职工; 3. 允许修改职工信息 4. 允许删除职工信息; 5,按照按照姓名和部门查询职工信息; 6. 可以按照工资多少进行排名, 7. 可以浏览所有职工信息; 8.有一个主界面,供选择和调用上述选项。 9.用C++中,文件和链表实现 #inc
企业员工管理系统 c语言版
<br />#include <stdio.h><br /> #include <stdlib.h><br /> #include <string.h><br /> #include <conio.h><br /> #include <malloc.h><br /><br /> #define N 100;<br /><br /><br /> /********************************************结构体部分***************************