| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 515 人关注过本帖
标题:▲〓这段代码运行有点错误,请帮看下
只看楼主 加入收藏
dsfafafas
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2006-1-2
收藏
 问题点数:0 回复次数:2 
▲〓这段代码运行有点错误,请帮看下

#include<iostream.h>
#include<malloc.h>
#include<string.h>
#define Data Data_Beginning_Start_teacher;
#define ok 1;
#define error 0;
typedef int status;
///////////////////////////////////////
//定义一个教师基类
class M_Teacher
{
private:
char MySex[5];
char MyName[10];
int Age;
public:
int StartData; //开始任教日期
int TotalWage;//总工资
int BaseWage;//基本工资
int CashAward;//奖金
int LessonNum;// 课时数
char Title[10];

void Register(char *name,char *sex,int age)
{
strcpy(MyName,name); strcpy(MySex,sex);
Age=age;
};
char *Getname(){return MyName;};
char *Getsex(){return MySex;};
int Getage(){return Age;};
void Show_Me();
};
//////////////////////////////////////////////
//定义一个院士类 并继承了老师类
class M_Academician:public M_Teacher
{
private:

public:
int A_Work_Overtime(int LessonNum){return LessonNum*150; };
M_Academician() //对象赋值
{
TotalWage = (10000+2000+20*100);
strcpy(Title,"院士");
BaseWage=10000; CashAward=2000;LessonNum=20;
};
~M_Academician(){};
};

/////////////////////////////////////////////////
//教授类对象
class M_Professor:public M_Teacher
{
private:

public:
int B_Work_Overtime(int LessonNum){return LessonNum*120; };
M_Professor() //对象赋值
{
int B_Work_shu=0;
TotalWage = ( 8000+1500+26*80 );
BaseWage = 8000; CashAward = 1500; LessonNum = 26;
strcpy(Title,"正教授");
};
~M_Professor(){};
};
/////////////////////////////////////
//打印基本信息
void M_Teacher::Show_Me()
{
cout<<"\n姓名 性别 年龄 职称 月薪 奖金 课时 总工资\n";
cout<<"\n"<<Getname()<<" "<<Getsex()<<" "<<Getage()<<" "<<Title<<" "<<BaseWage<<" "
<<CashAward<<" "<<LessonNum<<" "<<TotalWage<<endl<<endl;
};
//////////////////////////////
//主函数
void main()
{
int LessonNum;
char name1[10];
static int w=1000; //数据定义
char name[10];
char sex[5];
int age;
static int i,j,k=1,n=1;
int a,b; M_Academician *p1, p[3] ;
M_Professor *q1, q[3] ;
/////////////////////////////////////////////////////
p[1].Register("张三","男",50);
q[1].Register("李四","女",55); //初始化教授和院士
////////////////////////////////////////////////////////////////////////////////
cout<<" \3\3\3职工信息查询系统 V1.0版本\3\3\3\n";
loop1: cout<<"\n\n1.显示....2.增加....3.删除....4.查找....5.修改....6.退出\n"; //打印表头
cout<<"\n请输入您要进行的操作代码:";
///////////////////////////////////////////////////////////////////////////
cin>>a;
switch(a)
{
case 1:
for(i=1;i<=k;i++)
{
if (p[i].TotalWage == 0)
break;
cout<<"编号:"<<w<<endl;
p[i].Show_Me();
w++; //显示代码
};
for(j=1;j<=n;j++)
{
if (q[j].TotalWage==0)
break;
cout<<"编号"<<w<<endl;
q[j].Show_Me();w++;
};
goto loop1;
///////////////////////////////////////////////////
case 2:
int o;
cout<<"\n1.院士,2.正教授"<<endl<<"请输入您要插入的教师职称:";
cin>>o;

if(o==1)
{
cout<<"本系统已经记载了以下院士:"<<" "<<endl;
for(i=1;i<=k;i++)
{
if (p[i].TotalWage == 0)
break;
cout<<p[i].Getname() ;
};

p1=(M_Academician *)malloc(sizeof(p[i]));
cout<<"\n\n请依次输入院士的'姓名/性别/年龄':\n ";
cin>>name>>sex>>age;
p[i].Register(name,sex,age);
cout<<"\n此职工是否加班?(1.是,2.否)\n"<<"请输入您选择的代码:";
cin>>b;

if(b==1)
{
cout<<"请输入加班数:";
cin>>LessonNum;
p[i].A_Work_Overtime(LessonNum);
p[i].TotalWage += p[i].A_Work_Overtime(LessonNum);
p[i].LessonNum += LessonNum;
}
k++;
};

if(o==2)
{
cout<<"本系统已经记载了以下教授:\n";
for(j=1;j<=k;j++)
{
if (q[j].TotalWage == 0)
break;
cout<<q[j].Getname() ;
};

q1= (M_Professor*)malloc(sizeof(q[i]));
cout<<"\n\n请依次输入教授的'姓名/性别/年龄': "<<" "<<endl;
cin>>name>>sex>>age;
q[i].Register(name,sex,age);
cout<<"\n此职工是否加班?(1.是,2.否)\n"<<"请输入您选择的代码:";
cin>>b;

if(b==1) //添加人员代码
{
cout<<"请输入加班数:";
cin>>LessonNum;
q[j].B_Work_Overtime(LessonNum);
q[j].TotalWage += q[j].B_Work_Overtime(LessonNum);
q[j].LessonNum += LessonNum;
}
n++;
}
cout<<"\n\n增加数据成功!\n";w--;
goto loop1;
////////////////////////////////////////////////////////////////////////////
case 3:
cout<<"\n请输入要删除的教师姓名:";
cin>>name;
for(i=1;i<=k;i++)
{
if(p[i].Getname() == "*name1" )
{free(p1);
cout<<"成功删除!"; //删除代码
break;};
};
for(j=1;j<=n;j++)
{
if(q[j].Getname() == "*name1" )break;
};
goto loop1;
//////////////////////////////////////////////////////////////////////////// //
case 4:
cout<<"请输入要查找人的姓名:";
cin>>name1;

for( i=1;i<=k;i++)
{
if(p[i].Getname()=="name1") //查找人员代码
{p[i].Show_Me() ;break;}
};
for(j=1;j<=n;j++)
{
if(q[j].Getname()=="name1")
{q[j].Show_Me(); break;}
else
cout<<"无此人!";
};
goto loop1;
////////////////////////////////////////////////////////////////
case 6:
return;
default:
cout<<"输入错误请重新输入!";
goto loop1;
}
}
///////////////////////////////谢谢大家帮助
//我的问题主要出现在查找和删除那里,还有修改选项没有思路!请大哥们指教!
//谢谢你们

搜索更多相关主题的帖子: 运行 代码 
2006-01-02 13:56
woodhead
Rank: 3Rank: 3
等 级:新手上路
威 望:9
帖 子:1124
专家分:0
注 册:2005-7-18
收藏
得分:0 

if(p[i].Getname() == "*name1" ) 不行

字符串的比较可以用strcmp(a,b),如a==b返回0


2006-01-03 12:34
dsfafafas
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2006-1-2
收藏
得分:0 

//我的程序主要是在修改操作上出现问题 请大哥们帮忙修改下,或者发到我的油箱或
//

#include<iostream.h>
#include<malloc.h>
#include<string.h>
#define Data Data_Beginning_Start_teacher
#define ok 1
#define error 0
typedef int status;
//////////////////////////////////////////////////////
//管理员类
class M_Teacher;
class M_Administrators
{
private:
char AdminName[10];
char AdminSex[3];
float AdminNum;
public:
M_Administrators(char *AdminName1,char *AdminSex1,float AdminNum1)
{
strcpy(AdminName,AdminName1);
strcpy(AdminSex,AdminSex1);
AdminNum=AdminNum1;
}
char *GetAdminName(){return AdminName;};
char *GetAdminSex(){return AdminSex;};
float GetAdminNum(){return AdminNum;};
status M_A_Change(M_Teacher *e[5]);
};
///////////////////////////////////////
// 定义一个教师基类
class M_Teacher
{
friend M_Administrators;
private:
char MySex[5];
char MyName[10];
int Age;
public:
int StartData; // 开始任教日期
int TotalWage; // 总工资
int BaseWage; // 基本工资
int CashAward; // 奖金
int LessonNum; // 课时数
char Title[10]; //职称

M_Teacher(char *name,char *sex,int age)
{
strcpy(MyName,name); strcpy(MySex,sex);
Age=age;
}
char *Getname(){return MyName;};
char *Getsex(){return MySex;};
int Getage(){return Age;};
void Show_Me();
};
//////////////////////////////////////////////
// 定义一个院士类 并继承了老师类
class M_Academician:public M_Teacher
{
private:

public:
int A_Work_Overtime(int LessonNum){return LessonNum*150; };
M_Academician(char *name,char *sex,int age):M_Teacher(name,sex,age) //对象赋值
{
TotalWage = (10000+2000+20*100);
strcpy(Title,\"院士\");
BaseWage=10000; CashAward=2000;LessonNum=20;
}
~M_Academician(){};
};
/////////////////////////////////////////////////
//教授类对象
class M_Professor:public M_Teacher
{
private:

public:
int B_Work_Overtime(int LessonNum){return LessonNum*120; };
M_Professor(char *name,char *sex,int age):M_Teacher(name,sex,age) //对象赋值
{
int B_Work_shu=0;
TotalWage = ( 8000+1500+26*80 );
BaseWage = 8000; CashAward = 1500; LessonNum = 26;
strcpy(Title,\"正教授\");
}
~M_Professor(){};
};

////////////////////////////////////////////////////////////
//修改信息函数
status M_Administrators::M_A_Change(M_Teacher *e[5])
{
int z,x, i;
static k=0,n=0;
char name2[10];
cout<<\"\n此表包含以下人员信息信息:\n\";
for(i=0;i<=k;i++)
{
if (e[i]->TotalWage == 0)
break;
cout<<e[i]->Getname();
}
cout<<\"\n请输入您要修改的人员的姓名\n\";
cin>>name2;
for( i=0;i<=k;i++)
{
if(strcmp(e[i]->Getname(),name2)==0) //查找人员代码
{
e[i]->Show_Me();
break;
}
else
{
cout<<\"无此人!\";
return 0;
}
}

cout<<\"\n您要修改此人的1.姓名 2.年龄 3.性别 \n4.总工资 5.职称 6.总工资 \n 7.基本工资8.基本课时数\n请输入您要操作的编号\";
cin>>z;
switch(z)
{
case 1:
cout<<\"请输入新姓名\";
cin>>name2;
if(e[i]->Getname())
{
strcpy(e[i]->Getname(),name2);
return ok;
}
case 2:
cout<<\"请输入新年龄\";
cin>>x;
if(e[i]->Getname())
{

x=e[i]->Getage();
return ok;
}

}

return ok;
}
/////////////////////////////////////
//打印基本信息
void M_Teacher::Show_Me()
{
cout<<\"\n姓名 性别 年龄 职称 月薪 奖金 课时 总工资\n\";
cout<<\"\n\"<<Getname()<<\" \"<<Getsex()<<\" \"<<Getage()<<\" \"<<Title<<\" \"<<BaseWage<<\" \"
<<CashAward<<\" \"<<LessonNum<<\" \"<<TotalWage<<endl<<endl;
}
//////////////////////////////
//主函数
int main()
{
int LessonNum;
static int w=1000; // 数据定义
char name[10];
char sex[5];
int age;
static int i,j,k=0,n=0;
int a,b;
M_Academician *p[5];
M_Professor *q[5];
M_Teacher *e[5];
/////////////////////////////////////////////////////////////////
M_Administrators A(\"管理员\",\"女\",0052);
p[0]=new M_Academician(\"张三\",\"男\",50); // (\"张三\",\"男\",50)
q[0]=new M_Professor(\"李四\",\"女\",55);// (\"李四\",\"女\",55)
//////////////////////////////////////////////////////////////////////////////
cout<<\" \3\3\3职工信息查询系统 V1.0版本\3\3\3\n\";

while(1)
{
cout<<\"\n\n1.显示....2.增加....3.删除....4.查找....5.修改....6.退出\n\"; //打印表头
cout<<\"\n请输入您要进行的操作代码:\";
///////////////////////////////////////////////////////////////////////////
cin>>a;
switch(a)
{
case 1:
w=1000;
for(i=0;i<=k;i++)
{
if (p[i]->TotalWage == 0)
break;
else
{
cout<<\"编号:\"<<w<<endl;
p[i]->Show_Me();
w++;
} //显示代码
}
for(j=0;j<=n;j++)
{
if (q[j]->TotalWage==0)
break;
cout<<\"编号\"<<w<<endl;
q[j]->Show_Me();w++;
}
break;
case 2:
int o;
cout<<\"\n1.院士,2.正教授\"<<endl<<\"请输入您要插入的教师职称:\";
cin>>o;
if(o==1)
{
cout<<\"本系统已经记载了以下院士:\"<<\" \"<<endl;
for(i=0;i<=k;i++)
{
if (p[i]->TotalWage == 0)
break;
cout<<p[i]->Getname();
}
cout<<\"\n\n请依次输入院士的'姓名/性别/年龄':\n \";
cin>>name>>sex>>age;
p[i]=new M_Academician(name,sex,age);
cout<<\"\n此职工是否加班?(1.是,2.否)\n\"<<\"请输入您选择的代码:\";
cin>>b;
if(b==1)
{
cout<<\"请输入加班数:\";
cin>>LessonNum;
p[i]->A_Work_Overtime(LessonNum);
p[i]->TotalWage += p[i]->A_Work_Overtime(LessonNum);
p[i]->LessonNum += LessonNum;
}
k++;
};
if(o==2)
{
cout<<\"本系统已经记载了以下教授:\n\";
for(j=0;j<=k;j++)
{
if (q[j]->TotalWage == 0)
break;
cout<<q[j]->Getname();
}
cout<<\"\n\n请依次输入教授的'姓名/性别/年龄': \"<<\" \"<<endl;
cin>>name>>sex>>age;
q[j]=new M_Professor(name,sex,age);
cout<<\"\n此职工是否加班?(1.是,2.否)\n\"<<\"请输入您选择的代码:\";
cin>>b;
if(b==1) //添加人员代码
{
cout<<\"请输入加班数:\";
cin>>LessonNum;
q[j]->B_Work_Overtime(LessonNum);
q[j]->TotalWage += q[j]->B_Work_Overtime(LessonNum);
q[j]->LessonNum += LessonNum;
}
n++;
}
cout<<\"\n\n增加数据成功!\n\";w--;
break;
////////////////////////////////////////////////////////////////////////////
case 3:
cout<<\"\n请输入要删除的教师姓名:\";
cin>>name;
for(i=0;i<=k;i++)
{
if(strcmp(p[i]->Getname(),name)==0)
{
delete(p[i]);
cout<<\"成功删除!\";
i--; //删除代码
break;
}
}
for(j=0;j<=n;j++)
{
if(strcmp(q[j]->Getname(),name)==0)
{
delete(q[j]);
cout<<\"成功删除!\";
break;
}
}
break;
//////////////////////////////////////////////////////////////////////////// //
case 4:
cout<<\"请输入要查找人的姓名:\";
cin>>name;
for( i=0;i<=k;i++)
{
if(strcmp(p[i]->Getname(),name)==0) //查找人员代码
{
p[i]->Show_Me();
break;
}
else
{
for(j=0;j<=n;j++)
{
if(strcmp(q[j]->Getname(),name)==0)
{q[j]->Show_Me(); break;}
else
cout<<\"无此人!\";
}
}
}
break;
////////////////////////////////////////////////////////////////
case 5:
A.M_A_Change(M_Teacher *e[5]);
case 6:
return 0;
default:
cout<<\"输入错误请重新输入!\";
}
}
}

备注:以上是我的代码!
其中修改操作我不知道怎么实现,引用了友元类进行修改,可怎么也没有办法实现我的目的,希望各位朋友及其它人士的指导,小弟感激不尽,欢迎大家把此程序复制,在自己电脑上帮我修改!
2006-01-03 19:38
快速回复:▲〓这段代码运行有点错误,请帮看下
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018279 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved