信息管理中心人员组成表

时间:2024.4.18

孟州市第二人民医院

信息管理中心人员


第二篇:面向对象的程序设计(C++)课程设计报告,通过组合和派生构成新的类、人员信息管理系统、成绩管理系统


面向对象的程序设计

院 日

课程设计报告 名: 号: 100511217 级:大类1002班 系:数学与计算机学院 期:2011.12.30

题目1:通过组合和派生构成新的类

本设计题目的任务是使用Point类产生Line类。分别通过组合类及派生类两种方法实现,并要求分别给出使用类模板实现的程序。

本设计题的目的是使学生掌握在不同的实现方法中,如何设计相应的构造函数和拷贝构造函数,进一步理解程序调用它们及析构函数的执行顺序,掌握组合类和派生类。另外本设计题目要让学生进一步掌握和理解类模板的技术及其实现方法。

1. 设计框图:

2、源程序

(1)组合类实现

#include<iostream>

#include<cmath>

using namespace std;

class Point

{

public:

Point(int xx=0,int yy=0){X=xx;Y=yy;}

Point(Point &p);

intGetX(){return X;}

intGetY(){return Y;}

private:

int X,Y;

};

Point::Point(Point &p)

{

X=p.X;

面向对象的程序设计C课程设计报告通过组合和派生构成新的类人员信息管理系统成绩管理系统

Y=p.Y;

cout<<"Point拷贝构造函数被调用"<<endl; }

//类的组合

class Line

{

public:

Line(Point xp1,Point xp2);

Line(Line &);

doubleGetLen(){return len;}

private:

Point p1,p2;

doublelen;

};

//组合类的构造函数

Line::Line(Point xp1,Point xp2)

:p1(xp1),p2(xp2)

{

cout<<"Line构造函数被调用"<<endl; double x=double(p1.GetX()-p2.GetX()); double y=double(p1.GetY()-p2.GetY()); len=sqrt(x*x+y*y);

}

//组合类的拷贝构造函数

Line::Line(Line &L):p1(L.p1),p2(L.p2) {

cout<<"Line拷贝构造函数被调用"<<endl; len=L.len;

}

//主函数

void main()

{

Point myp1(1,1),myp2(3,7);

Line line(myp1,myp2);

Line line2(line);

cout<<"The length of the line is:"; cout<<line.GetLen()<<endl;

cout<<"The length of the line2 is:"; cout<<line2.GetLen()<<endl;

}

编译结果;

(2)派生类实现

#include <iostream>

#include <cmath>

using namespace std;

class Point //Point类

{

public:

Point(int xx=0, intyy=0)

{

cout<<"Point类的构造函数被调用"<<endl; X=xx;

Y=yy;

}

Point(Point &p);

~Point()

{

cout<<"Point类的析构函数被调用"<<endl; }

intGetX() {return X;}

intGetY() {return Y;}

private:

int X,Y;

};

Point::Point(Point &p) //拷贝构造函数的实现 {

X=p.X;

Y=p.Y;

cout<<"Point类的拷贝构造函数被调用"<<endl; }

面向对象的程序设计C课程设计报告通过组合和派生构成新的类人员信息管理系统成绩管理系统

class Line:public Point //派生类Line

{

public:

Line (int x1, int y1,int x2,int y2,double z=0.0)

:p1(x1,y1),p2(x2,y2) //初始化列表

{

cout<<"Line类的构造函数被调用"<<endl; len=z;

double x=double(p1.GetX()-p2.GetX());

double y=double(p1.GetY()-p2.GetY());

len=sqrt(x*x+y*y);

}

Line (Line &L);

~Line()

{

cout<<"Line类的析构函数被调用"<<endl; }

doubleGetLen()

{

return len; //返回得到的长度

}

private:

Point p1,p2; //Point类的对象p1,p2

doublelen;

};

Line::Line(Line &L):p1(L.p1),p2(L.p2)

{

cout<<"Line类的拷贝构造函数被调用"<<endl; len=L.len;

}

int main() //主函数

{

Point myp1(1,1),myp2(4,6); //建立Point类的对象 Line line1(1,1,4,6);

Line line2(line1); //利用拷贝构造函数建立一个新对象 cout<<"The length of the line1 is:";

cout<<line1.GetLen()<<endl;

cout<<"The length of the line2 is:";

cout<<line2.GetLen()<<endl;

return 0;

}

3、编译结果:

4、小结

首先由于刚开始没读懂题意,我直接把课题中的模板类实现做成只有一个display()函数,根本没有真正显示出模板类的优点,后来通过和其他同学的讨论研究才发现自己在理解上有些偏差,于是我毫不犹豫地把原来学的程序放弃了,直接重新开始我的新任务,最后终于搞出来时,心情异常激动。

面向对象的程序设计C课程设计报告通过组合和派生构成新的类人员信息管理系统成绩管理系统

题目2:人员信息管理系统

本设计题目的任务是设计一个人员信息管理系统,并使用虚函数实现多态性,完成显示不同人员信息的任务。

设计employee类,用来存储雇员的编号,级别,月薪等信息,能够对其进行操作和显示。

以employee为基类派生出technician类,表示兼职技术人员,以及manager类,表示经理,以及salesman类,表示兼职推销员。利用manage类和salesman类派生出salesmanager类,表示销售经理。注意使用虚基类。

进一步使用虚函数和抽象类改进上面的程序。

本设计题目的目的是让学生进一步理解和掌握C++中类的继承,虚基类,多态性,虚函数以及抽象类技术及实现方法。

面向对象的程序设计C课程设计报告通过组合和派生构成新的类人员信息管理系统成绩管理系统

2、源程序:

#include<iostream>

#include<cstring>

using namespace std;

class employee

{

protected:

char name[20]; //姓名

intindividualEmpNo; //个人编号

int grade; //级别

float accumPay; //月薪总额

static intemployeeNo; //本公司职员编号目前最大值 public:

employee(); //够造函数 ~employee(); //

void pay();

void promote(int);

voidSetName(char *);

char * GetName();

intGetindividualEmpNo();

intGetgrade();

floatGetaccumPay();

};

classtechnician:public employee

{

private:

floathourlyRate;

intworkHours;

public:

technician();

voidSetworkHours(intwh);

void pay();

};

classsalesman:virtual public employee

{

protected:

floatCommRate;

float sales;

public:

salesman();

voidSetsales(float sl);

void pay();

};

classmanager:virtual public employee {

protected:

floatmonthlyPay;

public:

manager();

void pay();

};

classsalesmanager:publicmanager,public salesman {

public:

salesmanager();

void pay();

};

int employee::employeeNo=1000;

employee::employee()

{

individualEmpNo=employeeNo++; grade=1;

accumPay=0.0;

}

employee::~employee(){}

void employee::pay(){}

void employee::promote(int increment) {grade+=increment;}

void employee::SetName(char * names) {strcpy(name,names);}

char * employee::GetName()

{return name;}

int employee::GetindividualEmpNo()

{returnindividualEmpNo;}

int employee::Getgrade()

{return grade;}

float employee::GetaccumPay()

{

returnaccumPay;

}

technician::technician()

{hourlyRate=100;}

void technician::SetworkHours(intwh) {workHours=wh;}

void technician::pay()

{accumPay=hourlyRate*workHours;}

salesman::salesman()

{CommRate=0.04;}

void salesman::Setsales(float sl)

{sales=sl;}

void salesman::pay()

{accumPay=sales*CommRate;}

manager::manager()

{monthlyPay=8000;}

void manager::pay()

{accumPay=monthlyPay;}

salesmanager::salesmanager()

{

monthlyPay=5000;

CommRate=0.005;

}

voidsalesmanager::pay()

{accumPay=monthlyPay+CommRate*sales;}

void main()

{

manager m1;

technician t1;

salesmanager sm1;

salesman s1; charnamestr[20]; cout<<"请输入下一个雇员的姓名:"<<endl; cin>>namestr; m1.SetName(namestr); cout<<"请输入下一个雇员的姓名:"<<endl; cin>>namestr; t1.SetName(namestr); cout<<"请输入下一个雇员的姓名:"<<endl; cin>>namestr; sm1.SetName(namestr); cout<<"请输入下一个雇员的姓名:"<<endl; cin>>namestr; s1.SetName(namestr); m1.promote(3); m1.pay(); cout<<"请输入兼职技术人员"<<t1.GetName()<<"本月的工作时数:"; intww; cin>>ww; t1.SetworkHours(ww); t1.promote(2); t1.pay(); cout<<"请输入销售经理"<<sm1.GetName()<<"所管辖部门本月的销售总额:"; floatsl; cin>>sl; sm1.Setsales(sl); sm1.pay(); sm1.promote(2); cout<<"请输入推销员"<<s1.GetName()<<"本月的销售额:"; cin>>sl; s1.Setsales(sl); s1.pay(); //显示m1信息 cout<<m1.GetName()<<"编号"<<m1.GetindividualEmpNo() <<"级别为"<<m1.Getgrade()<<"级,本月工资"<<m1.GetaccumPay()<<endl;

//显示t1信息

cout<<t1.GetName()<<"编号"<<t1.GetindividualEmpNo()

<<"级别为"<<t1.Getgrade()<<"级,本月工资"<<t1.GetaccumPay()<<endl; //显示sml的信息

cout<<sm1.GetName()<<"编号"<<sm1.GetindividualEmpNo()

<<"级别为"<<sm1.Getgrade()<<"级,本月工资"<<sm1.GetaccumPay()<<endl; //显示s1信息

cout<<s1.GetName()<<"编号"<<s1.GetindividualEmpNo()

<<"级别为"<<s1.Getgrade()<<"级,本月工资"<<s1.GetaccumPay()<<endl; }

3、编译结果:

4、小结

对于第二个课题,原本以为很简单的事,忽然发现运行时总是提醒调用了private的数据成员,搞得我很迷糊,虽然很努力的整天对着电脑修改错误,但结果收效甚微,错误没改好,貌似又出现了更多的错误,简直是一团乱麻,当时真想放弃,最终在同学的帮忙下终于做完,有点身心疲惫的感觉。

面向对象的程序设计C课程设计报告通过组合和派生构成新的类人员信息管理系统成绩管理系统

题目3:成绩管理系统

输入一个班级的学生基本信息(包括学号,姓名,性别,科目),对N门考试的成绩进行管理(例N=5)

要求

? 用户录入每个学生每门课程的分数;

? 能够计算每个学生的各门功课总分和平均分,并按总分将成绩排序,显示每个学生的

总分和排名;

? 计算全班各门功课的平均分,显示每门课程中低于平均分的每一个学生的学号,姓名,

性别,科目,成绩等信息;

? 显示每门科目中,成绩在90分以上的学生信息。另外还输出每门科目中不及格的学

生信息;

? 能按姓名或者学号查找,增加,删除和保存各个学生的信息。

源程序:

#include <iostream.h>

#include <string.h>

#include <conio.h>

#include <iostream>

#include <ctime>

#define max 100

structstu //学生资料结构体 {

char name[10];

intnum;

charadress[10];

floatx,y,z,score;

int number;

};

int count=0;

int temp=0;

class student //学生类

{

private:

stu data[max];

charstart_del;

public:

void input(char *ch1,int num,char *ch2,float x,floaty,float z); //输入

void find(intnum); //查找 void del(intnum); //删除

intcheck_num(intnum) //确定没有重复学号 {

int m=0;

while(m<=count)

if(num==data[m++].num)

break;

if(m>count)

return 0;

else

return 1;

}

void taxis();

void show();

};

void student::input(char *ch1,int num,char *ch2,float x,floaty,float z)

{

strcpy(data[count].name,ch1);

data[count].num=num;

strcpy(data[count].adress,ch2);

data[count].x=x; data[count].y=y; data[count].z=z;

count++;

}

void student::find(intnum)

{

int m=0;

while(m<=count)

if(num==data[m++].num)

break;

if(m>count)

{

cout<< "很抱歉,没有该学号的学生" <<endl;

start_del='n';

getch();

}

else

{

temp=count; count=m; start_del='y';

cout<< "该学生的资料为" <<endl //总分排序 //输出

<< "序号 \t姓名\t学号\tC++\t数据结构\t英语\t体育" <<endl;

show();

count=temp; getch();

}

}

void student::del(intnum)

{

char chose;

find(num);

if(start_del=='y')

{

cout<< "确实要删除该学生资料? Y/N" <<endl;

cin>> chose;

if(chose=='y'||chose=='Y')

{

int m=0;

while(m<=count)

if(num==data[m++].num)

break;

temp=count; count=m;

while(count<temp)

{

strcpy(data[count-1].name,data[count].name);

data[count-1].num=data[count].num;

strcpy(data[count-1].adress,data[count].adress); data[count-1].x=data[count].x; data[count-1].y=data[count].y; data[count-1].z=data[count].z;

count++;

}

count=temp-1;

cout<< "该学生资料已删除" <<endl;

}

else

cout<< "学生资料未删除" <<endl;

getch();

}

}

void student::taxis()

{

intx,y,array[max];

int change;

for(x=0;x<count;x++)

array[x]=data[x].score=data[x].x+data[x].y+data[x].z;

for(x=0;x<count-1;x++)

for(y=0;y<count-1-x;y++)

if(array[y]<array[y+1])

{

change=array[y];

array[y]=array[y+1];

array[y+1]=change;

}

cout<< "总分\t姓名\t学号\tC++\t数绝结构\t英语\t体育" <<endl;

for(x=0;x<count;x++)

for(y=0;y<count;y++)

if(array[x]==data[y].score)

{

cout<< data[y].score << "\t" << data[y].name << "\t"

<<data[y].num<< "\t" << data[y].adress<< "\t"

<<data[y].x << "\t" << data[y].y << "\t"

<<data[y].z <<endl;

}

getch();

}

void student::show()

{

cout<< count << "\t" << data[count-1].name << "\t"

<<data[count-1].num<< "\t" << data[count-1].adress<< "\t"

<<data[count-1].x << "\t" << data[count-1].y << "\t"

<<data[count-1].z <<endl;

}

//main.cpp

void main()

{

studentst;

char *ch1,*ch2,chose;

intnum,find,del;

floatx,y,z;

time_t t;

time(&t);

while(1)

{

system("cls");

cout<< "欢迎进入武工院数计学院大类1002班学生成绩管理系统制作:张聪"<<endl; cout<< "当前系统时间是:" <<ctime(&t) <<endl;

cout<< "1.输入/添加学生资料 2.输出学生资料 3.查找 4.删除5.总分排序 6.退出" <<endl; cout<<" 请选择你要的服务(1-6)" <<endl;

cin>> chose;

if(chose=='6') break;

switch(chose)

{

case '1':

{

cout<< "请输入学生姓名\t学号\tC++\t数据结构\t英语\t体育" <<endl;

ch1=new char[]; ch2=new char[];

cin>> ch1 >>num;

while(st.check_num(num))

{

cout<< "学号重复,请重新输入" <<endl;

cin>>num;

}

cin>> ch2 >> x >> y >> z;

st.input(ch1,num,ch2,x,y,z);

}break;

case '2':

{

temp=count; count=1;

cout<< "序号\t姓名\t学号\tC++\t数据结构\t英语\t体育" <<endl;

while(count<=temp)

{

st.show(); count++;

}

count--; getch();

}break;

case '3':

{

cout<< "请输入你要查找学生的学号" <<endl;

cin>> find;

st.find(find);

}break;

case '4':

{

cout<< "请输入你要删除的学生学号" <<endl;

cin>> del;

st.del(del);

}break;

case '5':

{

st.taxis();

}break;

default:

{

cout<< "输入错误!!!,请重新输入" <<endl;

getch();

}

}

}

getch();

}

3、编译结果:

4、小结

第三个题目很有挑战性,因为越做越觉得很吸引我,它一点一点促使我向前进。在可以运行时我激动地搂着宿舍同学跳啊跳的,但是程序运行一段时间后就会自动中止,这让我很头疼,实在是有种受不了的感觉,看看其他同学也是很郁闷,但总不能只做一半就放弃,于是我上网看程序、图书馆查资料、看课本,终于成功了!

实验总结

这次C++课程设计让我有实战的感觉,在实践编程过程中积累了宝贵的经验.

面向对象的程序设计C课程设计报告通过组合和派生构成新的类人员信息管理系统成绩管理系统

对此门课充满了兴趣,也学到了很多知识, C++在社会中的用处也随处可见,它的作用也是不会被忽视的,我们也应该重视。这将会是一门日益重要的学科。 我这次编制的这个程序,在编程过程中,曾遇到了很多问题,也失败了很多次,不过最终通过不懈的努力,翻阅资料,征求老师和同学的意见还是圆满完成了。这次的设计进一步提高了我对C++的认识,也发现了许多问题,更学到了许多知识。在这次课程设计的过程中,在同学们的相互指导下,我的编程、理解、动手及思维能力有了提高,同时也对C++的感觉更好了。

更多相关推荐:
管理人员心得体会

学习第一线管理者心得体会一口气把此书读完深有感触全书以提问牵引与实际的管理实践联系甚为紧密此书还非常确定的回答了一个问题作业长是第一线经营者答案是肯定的作业长是是第一线的经营者和第一线管理者书中将经营者的定义扩...

在管理工作中的心得体会

在管理工作中的心得体会经营和管理就像一个人的两条腿失去任何一个公司都会栽跟斗的在好的经营思路也需要通过管理落实到位管理工作做的再好如果经营思路错了那只会使你背离正确的方向更远首相是发展方向的问题因为他是公司发展...

公司管理人员培训心得体会

商南县无机盐有限责任公司谢女士20xx年x月12-13日,我有幸受公司委派,在西安市碑林区建国路65号雍村饭店,进行了为期两天的封闭式学习培训,聆听了中国企业经理人培训导师、中国实战型执行管理专家韩超老师的精彩…

管理人员培训心得

管理人员培训心得(1):公司组织了一次管理人员培训课程,使我不仅从理论上更深层次的学习了什么是管理,同时在思想上也受到了启发,从中更认识到作为管理人员,怎样站好自己的岗位,怎样协调好、培训好员工,让每个人都认清…

管理人员学习心得

基层管理人员培训心得首先感谢公司给我们创造了一次学习提高和沟通交流的机会这次基层管理人员培训班从的外出参观总部情况到干部的集中学习我想用三个字来概括一下我对本次培训班的感受即精实全精在行程精心安排课程精益求精实...

管理人员培训心得体会

为提高全厂基层管理人员的管理能力和领导水平,分行高薪聘请全国出名的上海明鸿中小银行培训中心于7月x日至7月x日对全区中高层管理人员作了为期8天的培训。通过这三天的培训,我感受到了厂部主管对基层管理人员发展寄…

基层管理人员培训心得

班科长管理培训总结首先感谢公司给我们创造了一次学习提高和沟通交流的机会这次班科长管理人员培训班我想用三个字来概括一下我对本次培训班的感受即精实全精在行程精心安排课程精益求精实在授课老师真情实感内容注重实际全在知...

杰出的管理者--学习心得

学习心得报告杰出的管理者如何成为一名杰出的管理者是每一位管理人员义无反顾的追求或许作为管理者很多人都可以称得上是一个合格的成功的管理人员但要成为众多管理者当中的领头狼与佼佼者我认为不单单只是一个成功的管理者还必...

看《管理问题员工》视频心得

学习问题员工管理心得如何管理问题员工取其长处容其短处生产工艺杨福明20xx年8月9日在校长的安排下我们学习了张晓彤的问题员工管理方法与技巧培训内容丰富实用系统介绍了如何判断问题员工问题员工离职成本分析问题员工管...

人力资源部员工工作心得

免费分享创新人力资源部员工工作心得员工是一个企业赖以生存和发展的基石一个企业的问题一般都可归结到人的问题如何得到一只优秀的员工队伍往往成为困扰管理者的最大难题而人力资源的组织与开发正是解决这一问题的关键一聘用员...

员工管理心得

宁可小才大用不可大材小用2尺有所短寸有所长用人之长不挑人之短善用人者无不可用之人3灵活要有原则原则不可灵活4不能有活无人做也不可有人无活做更可怕的是一件事许多人在做遇责任则无人承担遇功劳则人人有份5一个好的管理...

《问题员工管理》学习心得

问题员工管理学习心得1在管理者在用人的时候要首先把着眼点放在人的长处上弄清这个人有什么长处如何用他的长处一个人做事不能样样都会我用人总是用他的长处避免用他的短处从管理的角度来说一个企业和一个国家是相似的人无完人...

人员管理心得(44篇)