资源描述
程序设计实训报告
班级:
学号:
姓名:
2012年1月5日
一、课程设计的目的
1.进一步巩固C++语言理论基础。
2.熟练掌握程序设计的一般技巧和方法。
3.培养解决综合性实际问题的能力。
二、课程设计任务
题目:职工信息管理系统
题目要求:完成一个职工信息管理系统的设计,设计主要实现以下功能:
(1)建立职工信息数据,包括职工编号、姓名、性别、工资、出生时间、参加工作时间和年龄。
(2)使用集成的方法构成三个类(雇员类,教师类个工人类,其中雇员类是虚基类,教师类个工人类是派生类),相应的对象防治10个职工信息。
(3)编写成员函数,用来输出数组内容。
(4)按不同的类别输出职工信息,比如按系输出驾驶信息。(可选功能)
(5)检索(查找)指定信息(如按名字检索)
题目 职工信息管理系统
一、题目分析
首先构建虚基类employee,定义私有成员和共有成员变量。再定义两个派生类teacher和workers及数据的输入,定义成员函数。然后用输出流活得选择菜单。
在主函数中定义整形choice用switch(choice)......case语句执行选择菜单的功能
二、程序代码
#include <iostream>
#include <string>
using namespace std;
class employee
{
public:
virtual void display()=0;
protected:
int num;
string name;
string sex;
float income;
int birthday;
int workday;
int age;
};
class teacher:virtual public employee
{
public:
void getdata()
{
cout<<"请输入编号:"<<endl;
cin>>num;
cout<<"请输入姓名:"<<endl;
cin>>name;
cout<<"请输入姓别:"<<endl;
cin>>sex;
cout<<"请输入工资:"<<endl;
cin>>income;
cout<<"请输入生日:"<<endl;
cin>>birthday;
cout<<"请输入工作时间:"<<endl;
cin>>workday;
cout<<"请输入年龄:"<<endl;
cin>>age;
}
void display()
{
cout<<"编号:"<<num<<endl;
cout<<"姓名:"<<name<<endl;
cout<<"姓别:"<<sex<<endl;
cout<<"工资:"<<income<<endl;
cout<<"生日:"<<birthday<<endl;
cout<<"参加工作时间:"<<workday<<endl;
cout<<"年龄:"<<age<<endl;
}
int getage()
{
return age;
}
int getnum()
{
return num;
}
string getname()
{
return name;
}
};
class worker:virtual public employee
{
public:
void getdata()
{
cout<<"请输入编号:"<<endl;
cin>>num;
cout<<"请输入姓名:"<<endl;
cin>>name;
cout<<"请输入姓别:"<<endl;
cin>>sex;
cout<<"请输入工资:"<<endl;
cin>>income;
cout<<"请输入生日:"<<endl;
cin>>birthday;
cout<<"请输入参加工作时间:"<<endl;
cin>>workday;
cout<<"请输入年龄"<<endl;
cin>>age;
}
void display()
{
cout<<"编号:"<<num<<endl;
cout<<"姓名:"<<name<<endl;
cout<<"姓别:"<<sex<<endl;
cout<<"工资:"<<income<<endl;
cout<<"生日:"<<birthday<<endl;
cout<<"参加工作时间:"<<workday<<endl;
cout<<"年龄:"<<age<<endl;
}
int getage()
{
return age;
}
int getnum()
{
return num;
}
string getname()
{
return name;
}
};
void menu(int &choice)
{
cout<<"\t******************************************************"<<endl;
cout<<"\t\t\t 职工信息管理系统"<<endl;
cout<<"\t******************************************************"<<endl;
cout<<"\t\t\t1. 增加一位教师记录"<<endl;
cout<<"\t\t\t2. 增加一位工人记录"<<endl;
cout<<"\t\t\t3. 显示全部职工记录"<<endl;
cout<<"\t\t\t4. 删除一个教师记录"<<endl;
cout<<"\t\t\t5. 删除一个工人记录"<<endl;
cout<<"\t\t\t6. 按姓名检索所有信息"<<endl;
cout<<"\t\t\t7. 退出"<<endl;
cout<<"\t******************************************************"<<endl;
cout<<"\t 请选择你要执行的功能(请输入你要完成的功能的序号):"<<endl;
cin>>choice;
}
int main()
{
int choice=0;
int indx1=0,indx2=0;
bool flag=false;
teacher t[10];
worker w[10];
while (1)
{
int i=0;
int temp;
string tname;
menu(choice);
switch (choice)
{
case 1:
t[indx1++].getdata();
break;
case 2:
w[indx2++].getdata();
break;
case 3:
cout<<"显示所有教师信息:"<<endl;
for (i=0;i!=indx1;++i)
{
t[i].display();
}
cout<<"显示所有工人信息:"<<endl;
for (i=0;i!=indx2;++i)
{
w[i].display();
}
break;
case 4:
cout<<"请输入要删除教师的编号"<<endl;
cin>>temp;
for (i=0;i!=indx1;++i)
{
if (temp==t[i].getnum())
{
do
{
t[i]=t[i+1];
++i;
} while (i!=indx1);
cout<<"已删除"<<endl;
--indx1;
break;
}
}
break;
case 5:
cout<<"请输入要删除工人的编号"<<endl;
cin>>temp;
for (i=0;i!=indx2;++i)
{
if (temp==w[i].getnum())
{
do
{
w[i]=w[i+1];
++i;
} while (i!=indx2);
cout<<"已删除"<<endl;
--indx2;
break;
}
}
break;
case 6:
cout<<"请输入姓名:"<<endl;
cin>>tname;
for (i=0;i!=indx1;++i)
{
if (tname==t[i].getname())
{
cout<<"这位是教师"<<endl;
t[i].display();
}
}
for (i=0;i!=indx2;++i)
{
if (tname==w[i].getname())
{
cout<<"这位是工人"<<endl;
w[i].display();
}
}
break;
case 7:
flag=true;
break;
}
if (flag)
{
break;
}
}
return 0;
}
三、运行结果
显示菜单
选择功能1.
选择功能2
选择功能3
选择功能4
功能选择5
选择功能6
选择功能7
四、总结
虽然课程设计只有短短的几天,但是我发现我学到的知识比整整一个学期学到的都多。理论和实践的相结合是学习最有效的方法。在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,通过这次课程设计之后,一定把以前所学过的知识重新温故。
回顾起此次课程设计,我感慨颇多,的确,从从拿到题目到完成整个编程,从理论到实践,在整整一个星期的日子里,可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
展开阅读全文