18

2024-05

当前位置: 网事范文网 > 思想汇报 >

实训总结报告

| 来源:网友投稿

----《面向对象程序》

  实训的目的与系统概述

  1、目的:

  (1)掌握面向对象设计开发的基本思想和方法,培养学生在已有的知识基础上进一步获取新知识的能力,提高分析问题和解决问题的能力。

  (2)进一步巩固《面向对象程序设计》课程中所学到的知识,熟练掌握C++语言程序设计,加强对VC++编程环境的使用能力,掌握VC++编程环境中的调试功能,增强实际编程能力。

  (3)培养和提高逻辑思维、抽象思维和统筹规划能力,培养独立完成程序设计开发的工作能力。为今后从事专业性软件开发工作打下基础。

  2、 功能


  通过将不同类型的人员设计成相应的类,完成的人员的管理。

  3、 系统概述

  学校的人员包括学生、职工;职工又分为教师和行政人员;在职进修教师又具备学生和教师的属性和行为。

  a) 人员具有姓名、年龄、性别、地址和人员类别等属性,有显示属性的功能和设置属性的功能。

  b) 学生具有人员的属性和行为,此外,添加学号、成绩属性。具有的行为有:设置属性的函数:让用户能够通过键盘的输入设置除了成绩之外的基本属性;录入成绩:输入学生的各门成绩;显示:显示基本属性和他的平均成绩。

  c) 职工具有人员的属性和行为,此外,添加职工号、职称和工资属性。

  d) 教师具有职工的属性和行为,此外,添加教研室、教授的课程属性。具有的行为有:设置属性的函数:让用户能够通过键盘的输入设置除了课程信息之外的基本属性;录入课程:输入教师所教的各门成绩;显示:显示基本属性。

  e) 行政人员具有职工的属性和行为,此外,添加办公室属性。

  f) 在职进修教师具有教师与学生的属性和行为,此外,添加进修时间,工作单位属性。

  通过实现此系统,让我综合运用所学知识,掌握面向对象设计开发的基本思想和方法和C++的编程思想来完成简单的面向对象的程序设计。让我在已有的知识基础上进一步获取新知识的能力,提高分析问题、解决问题和独立完成程序设计开发的工作能力。为今后从事专业性软件开发工作打下基础。


  类的实现

  编程实现上面类的设计。

  主程序中的验证

  创建对象,检验类的功能是否能够实现。


  

  1、遇到的困难、解决办法及收获:

  ①各类属性的实现。

  利用对象数组即方便又能固定调用哪个属性。在构造函数中定义属性类型,利用对象数组调用。

  ②对象数组中字符串的赋值。

  分配(new实现)一个char型变量长度加一的字符串,再利用拷贝函数拷贝原变量并放在name里,如:

  name=new char;strcpy(name,na);

  ③因为没有给原带参构造函数的形参赋值,主函数中不能声明类的无参对象。

  在定义一个无参构造函数,如:

  person(){}

  ④在派生类带参构造函数与基类带参构造函数所带参数不同时没有对基类构造函数的参数初始化。

  构造函数无法被继承,当派生类带参构造函数与基类带参构造函数所带参数不同时,要在派生类构造函数中对基类构造函数的参数进行初始化,如:

  worker(int num,char *v,int p,char *na,int a,char *s,char *ad,char *l):person(na,a,s,ad,l){}

  ⑤平均分的实现。

  利用对象数组正确调用分数属性再利用返回值为float的成员函数实现平均分,如:

  float getaverage(student st,int i){

  int a=st.mathscore;

  int b=st.cscore;

  return st.average=(a+b)/2;}

  ⑥正确输入和调用属性。

  利用p.属性名实现属性的各种行为,如:

  cinp.age;

  cout姓名:p.nameendl;

  ⑦switch语句总执行完一个case后还继续执行。

  加入break语句跳出switch语句。

  2、 程序中还需要改进的地方。

  姓名,年龄,地址等属性限制的实现。


附件:源程序
#include iostream.h
#include string
using namespace std;
class person{
protected:
char *name;
int age;
char *sex;
char *address;
char *lb;
public:
person(char *na,int a,char *s,char *ad,char *l){//对象数组
name=new char;
strcpy(name,na);
age=a;
sex=new char;
strcpy(sex,s);
address=new char;
strcpy(address,ad);
lb=new char;
strcpy(lb,l);}
person(){}//无参构造函数,方便声明无参对象
virtual void getinf(person p,int n){
char na1;
cout姓名:;
cinna1;
p.name=new char;//分配na1长度+1的字符串
strcpy(p.name,na1);//拷贝字符串
coutendl;
cout年龄:;
cinp.age;
coutendl;
char s1;
cout性别:(n:男,w:女);
cins1;
p.sex=new char;
strcpy(p.sex,s1);
coutendl;
char ad1;
cout地址:;
cinad1;
p.address=new char;
strcpy(p.address,ad1);
coutendl;
}
virtual void disp(person p,int n){//有参虚函数,对象数组输出的事现
cout姓名:p.nameendl;
cout年龄:p.ageendl;
cout性别:p.sexendl;
cout地址:p.addressendl;}
};
class student:public virtual person
{
protected:
int number;
int mathscore,cscore;
float average;
public:
student(int nu,int ms,int cs,float av,char *na,int a,char *s,char *ad,char *l):person(na,a,s,ad,l){//构造函数无法被继承,在派生类构造函数带参数与基类构造函数所带参数不同时要先对基类构造函数初始化
number=nu;mathscore=ms;cscore=cs;average=av;}
student(){}
virtual void getvalue(student st,int i){
cout学号:;
cinst.number;
coutendl;}
void getscore(student st,int i){
cout数学成绩:;
cinst.mathscore;
coutendl;
coutC++成绩:;
cinst.cscore;
coutendl;}
float getaverage(student st,int i){//平均分的实现
int a=st.mathscore;
int b=st.cscore;
return st.average=(a+b)/2;}
void show(student st,int i){
cout学号:st.numberendl;
}
virtual void show1(student st,int i){
st.show(st,i);
cout数学成绩:st.mathscoreendl;
coutC++成绩:st.cscoreendl;
st.getaverage(st,i);
cout平均成绩:st.averageendl;
}
};
class worker:public virtual person
{
protected:
int number;
float pay;
char *value;
public:
worker(int num,char *v,int p,char *na,int a,char *s,char *ad,char *l):person(na,a,s,ad,l){
number=num;
value=new char;
strcpy(value,v);
pay=p;}
worker(){}
void getvalue(worker w,int i){
cout职工号:;
cinw.number;
coutendl;
char v1;
cout职称:;
cinv1;
w.value=new char;
strcpy(w.value,v1);
coutendl;
cout工资:;
cinw.pay;
coutendl;
}
void show(worker w,int i){
cout职工号:w.numberendl;
cout职称:w.valueendl;
cout工资:w.payendl;
}
};
class teacher:public virtual worker,public virtual person{
protected:
char *kemu;
int chengji;
char *office;
public:
teacher(char *of,char *ke,int ch,int num,char *v,int p,char *na,int a,char *s,char *ad,char *l):worker(num,v,p,na,a,s,ad,l),person(na,a,s,ad,l){
office=new char;
strcpy(office,of);
kemu=new char;
strcpy(kemu,ke);
chengji=ch;}
teacher(){}
void getmessage(teacher t,int i) {
char of1;
cout教研室:;
cinof1;
t.office=new char;
strcpy(t.office,of1);
coutendl;
char ke1;
cout科目:;
cinke1;
t.kemu=new char;
strcpy(t.kemu,ke1);
coutendl;
cout成绩:;
cint.chengji;
coutendl;
}
void show1(teacher t,int i){
cout教研室:t.officeendl;
cout科目:t.kemuendl;
cout成绩:t.chengjiendl;
}
};
class employee:public virtual worker,public virtual person{
private:
char *office;
public:
employee(char *of,int num,char *v,int p,char *na,int a,char *s,char *ad,char *l):worker(num,v,p,na,a,s,ad,l),person(na,a,s,ad,l){
office=new char;
strcpy(office,of);
}
employee(){}
void getmessage(employee e,int i) {
char of1;
cout教研室:;
cinof1;
e.office=new char;
strcpy(e.office,of1);
coutendl;
}
void show1(employee e,int i){
cout教研室:e.officeendl;
}
};
class jingx:public virtual student,public virtual teacher,public virtual worker,public virtual person{
private:
int time;
char *danwei;
public:
jingx(int ti,char *da,int nu,int ms,int cs,float av,char *of,char *ke,int ch,int num,char *v,int p,char *na,int a,char *s,char *ad,char *l):student(nu,ms,cs,av,na,a,s,ad,l),teacher(of,ke,ch,num,v,p,na,a,s,ad,l),worker(num,v,p,na,a,s,ad,l),person(na,a,s,ad,l){
time=ti;
danwei=new char;
strcpy(danwei,da);}
jingx(){}
void getmessage1(jingx j,int i){
cout进修时间:;
cinj.time;
coutendl;
char da1;
cout单位属性:;
cinda1;
j.danwei=new char;
strcpy(j.danwei,da1);
coutendl;
}
void show2(jingx j,int i) {
cout进修时间:j.timeendl;
cout单位属性:j.danweiendl;
}
};
int i;
person p; student st; worker wo; teacher te; employee em; jingx jx;
void main(){
cout请选择人员类别:endl;
cout1、普通人 2、学生 3、学生及成绩 4、员工 5、教师 6、行政人员 7、在职进修教师endl;
cini;
cout请依次录入信息endl;
switch(i){//录入信息种类选择的实现
case 1:{
p.getinf(p,1);
cout*************************************endl;
p.disp(p,1);
break;}//要有break语句否则将执行case2
case 2:{
st.getvalue(st,1);
p.getinf(p,1);
cout*************************************endl;
st.show(st,1);
p.disp(p,1);
break;}
case 3:{
st.getvalue(st,1);
p.getinf(p,1);
st.getscore(st,1);
cout*************************************endl;
st.show1(st,1);
p.disp(p,1);
break;}
case 4:{
wo.getvalue(wo,1);
p.getinf(p,1);
cout*************************************endl;
wo.show(wo,1);
p.disp(p,1);
break;}
case 5:{
te.getmessage(te,1);
p.getinf(p,1);
wo.getvalue(wo,1);
cout*************************************endl;
te.show1(te,1);
p.disp(p,1);
wo.show(wo,1);
break;}
case 6:{
em.getmessage(em,1);
p.getinf(p,1);
wo.getvalue(wo,1);
cout*************************************endl;
em.show1(em,1);
p.disp(p,1);
wo.show(wo,1);
break;}
case 7:{
jx.getmessage1(jx,1);
te.getmessage(te,1);
st.getvalue(st,1);
wo.getvalue(wo,1);
p.getinf(p,1);
st.getscore(st,1);
cout*************************************endl;
jx.show2(jx,1);
p.disp(p,1);
te.show1(te,1);
wo.show(wo,1);
st.show1(st,1);
break;}
default :
cout输入错误!endl;
}

}

推荐访问:实训 总结报告

最新推荐New Ranking

12023年度汇报表演主持词21篇(2023年)

汇报表演主持词第1篇尊敬的各位领导、教官、亲爱的老师们、同学们:开学伊始,为加强学生入学教育,引...

22023年度舞蹈汇报演出主持词8篇(完整文档)

舞蹈汇报演出主持词第1篇甲:尊敬的各位领导乙:各位来宾甲:各位家长乙:亲爱的同学们合:大家晚上好...

32023年思想方面自我鉴定集锦7篇

思想方面自我鉴定第1篇在思想政治方面,本人具有优秀道德修养,并有坚定的政治方向。我热爱祖国,热爱...

42023年自我鉴定思想方面23篇【精选推荐】

自我鉴定思想方面第1篇转眼又到了寒冬腊月,一年又悄然而逝,在过去一年的工作中,我可以自豪的说,我...

5教师入党思想汇报10篇(全文)

提起党员教师,人们会认为他们是教师队伍中的典范,是教师队伍中的一支生力军。所以今天小编就给大家...

6入党动机思想汇报研究生模板范本【五篇】篇

思想汇报是申请入党的人或党员为了使党组织更好地了解自己的思想情况,自觉地争取党组织的教育和监督...

7研究生入党思想汇报2000字【五篇】(全文完整)

做一名合格的研究生入党积极分子,要真正意识到在以后的为人处事过程中必须真正做到吃苦在前,享乐在...

82023年度小学教师入党思想汇报范本(2023年)

教师在入党的过程中有很多需要学习的地方,思想上需要改正的地方,那么小学教师入党思想汇报该怎样写...

92023年部队入党积极分子思想汇报模板【五篇】(2023年)

作为一名部队人员,一名入党积极分子,要不断向党靠拢,努力学习党的知识,提高自己的党性。这里给大...

102023企业普通党员入党思想汇报范本(完整文档)

作为一名企业员工入党积极分子,一定要时刻以一名党员的标准来衡量自己。那么企业普通党员入党思想汇...