面向对象程序设计实习报告.doc_第1页
面向对象程序设计实习报告.doc_第2页
面向对象程序设计实习报告.doc_第3页
面向对象程序设计实习报告.doc_第4页
面向对象程序设计实习报告.doc_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

生活需要游戏,但不能游戏人生;生活需要歌舞,但不需醉生梦死;生活需要艺术,但不能投机取巧;生活需要勇气,但不能鲁莽蛮干;生活需要重复,但不能重蹈覆辙。 -无名 面向对象程序设计报告 课题: 面向对象程序设计 专业: 通信工程 班级: 姓名: 学号: 指导老师: 设计时间:2010/2011(2)学期第03-04周目录1. 实践课题 32. 实践要求 33. 设计目的 34. 实践内容 44.1必做课题:大学人员类的设计的功能描述以及模块结构44.1.1 功能模块描述及主要类描述44.1.2程序代码 74.1.3使用说明和调试结果164.1.4 必做题小结184.2选作课题:基于RFID设备的隧道工作人员考勤系统 184.2.1选做题任务分析184.2.2 液晶屏功能实现 204.2.3 选做题小结 205.心得体会 216.参考文献 21一实践课题:面向对象程序设计二实践要求:2.1.必做课题 大学人员类的设计(3月7-8日)基类,person类,相关的属性自己定义派生类,student类,teacher类,相关的属性自己定义Student类和teacher类的属性不相同,利用多态性编辑show函数,可以输出同类正确的信息。编辑界面,功能有(1)输入人员(2)删除人员(3)保存人员(4)查询人员2.2选作课题 (二者必选一,六人一大组,三人一小组,每个同学 必须作不同的功能模块,要求选出组长,分配任务,)(3月9-18日)2.2.1. 基于RFID设备的隧道工作人员考勤系统(1)与必做课题结合,将每个卡与人员姓名,工种绑定,进入即可显示人员的相关信息。两台RFID读卡器,从1-2表示进入隧道,从2-1表示退出隧道,据此,统计当前隧道里面的人员总数与姓名。2.2.2 基于RFID设备的隧道工作人员考勤系统(2)(1)自学MFC,设计基于MFC设计隧道工作人员考勤系统,具有增、删、改、查询的功能(2)结合小组1同学做的实时考勤系统,设计基于MFC的隧道工作人员考勤系统三实践目的:通过本次课程设计,使我们在掌握C+程序设计的基本思想、基本概念和基本方法上,能运用所学的知识对一般问题进行分析和程序设计,把C+程序设计语言作为基本工具使用,为今后在专业课程的学习中,使用计算机解决实际问题打好基础。同时,将理论知识与实践相结合,更加深入的应用C+的知识,也了解和学习MFC的界面开发和界面设计。让我们学会创新,能够自主学习新的知识,提高我们的自学能力,也考验我们做事的耐心。四实践内容:4.1必做课题:大学人员类的设计的功能描述以及模块结构4.1.1功能模块描述及主要类描述 模块一:输入人员函数void inter() / 输入函数 loop:int intput;cout请您选择所要注册的类型n按“1”为普通人员n按“2”为学生n按“3”为教师nintput;switch(intput)case 1:intputperson(intputtime);intputtime+;break; case 2:intstudent(intputtime);intputtime+;break;case 3:intteacher(intputtime);intputtime+;break;default: cout抱歉,您输入错误,请重新输入endl;goto loop;break;输入添加指定的人员;模块二:查找人员函数 void finder()point1:int run,fin;char c;fin=0;cout请您输入要操作的名字nm;for(run=0;runname) cout恭喜您查找成功!nshow();fin=1;break;location=run;if(fin=0)cout抱歉,没有找到该信息nendl; fin=0;cout您想继续查询吗?(y/n)c;if(c=Y|c=y)goto point1;查找指定的基本信息;模块三:保存人员信息函数void saver()/学生信息保存system(cls);ofstream file;file.open(D:信息保存.txt,ios:out);coutnnnnnnttt正在保存,请稍等 endl;system(cls);coutnnnntt数据保存保存成功!nnendl;for(int i=0;ishow();file.close();system(pause);保存指定的信息;模块四:删除人员函数void deletemember() char a; location=0; finder(); cout是否删除该数据(Y/N)a; if(a=Y|a=y) for(;locationintputtime;location+) findlocation=findlocation+1; cout删除成功endl; intputtime-; 删除指定的基本信息。模块五:显示函数show(),定义为虚函数实现函数的多态,使在不同类中能够根据变量的多少选择合适的show()函数。virtual void show(); void person:show() cout姓名:namen年龄agen性别:genderendl; if(registered=1)void student:show()person:show();cout学号:numendl;void teacher:show()person:show();cout教师职称:positionendl;本大学人员类的设计采用了面向对象的程序设计方法。所有的方法均以类为基础。所涉及到的类包括:class Person 普通人员类;该类是一个基类,设置了属于私有成员的年龄,以及公有成员gender和name,可以给学生和老师类继承。且分别定义了ID()、get_name()、get_age()和get_gender()函数。Class student 学生类;该类多态继承了普通人员类,加入了成员变量num及成员函数get_num()。 Class teacher 教师类;该类同样多态继承了普通人员类。该类定义了与学生类一样的函数,有着同样的功能。加入了成员变量position及成员函数get_position()。 4.1.2程序代码#include#include #includeusing namespace std;int intputtime=0; / 输入的次数int registered=0; / 区别注册与查找int location=0; / 确定当前位置class personprivate: int age;public:string gender;/ 1为男 0为女string name;virtual int ID(); void get_name(); void get_age();void get_gender();virtual void show(); ;int person:ID()return 0;void person:get_name()string n; cout请您输入姓名n; name=n;void person:get_age() int a; cout请您输入年龄a; age=a;void person:get_gender() string g; cout请您输入性别男或者女g; gender=g;void person:show() cout姓名:namen年龄agen性别:genderendl; if(registered=1) cout恭喜您成功完成注册!endl; class student:virtual public person /学生继承public: int ID(); string num; void get_num(); void show(); int student:ID()return 1;void student:get_num()string n;cout请您输入学号n;num=n;void student:show()person:show();cout学号:numendl;class teacher:virtual public personpublic: int ID(); string position; void get_position(); void show();int teacher:ID()return 2;void teacher:get_position()string p;cout请您输入职称p;position=p;void teacher:show()person:show();cout教师职称:positionendl; / 注意此处下面变量要为全局变量person p200; / 学校普通人员变量student s200; /学生变量teacher t200; / 老师变量person *find600;/ 查找用的指针void intputperson(int x) px.get_name(); px.get_age(); px.get_gender(); px.ID(); px.show(); findx=&px; registered=0; / 注册时候显示用的void intstudent(int x)sx.get_name();sx.get_age();sx.get_gender();sx.get_num();sx.ID();sx.show();findx=&sx;registered=0;void intteacher(int x)tx.get_name();tx.get_age();tx.get_gender();tx.get_position();tx.ID();tx.show();findx=&tx;registered=0;void inter() / 输入函数 loop:int intput;cout请您选择所要注册的类型n按“1”为普通人员n按“2”为学生n按“3”为教师nintput;switch(intput)case 1:intputperson(intputtime);intputtime+;break; case 2:intstudent(intputtime);intputtime+;break;case 3:intteacher(intputtime);intputtime+;break;default: cout抱歉,您输入错误,请重新输入endl;goto loop;break; void finder()point1:int run,fin;char c;fin=0;cout请您输入要操作的名字nm;for(run=0;runname) cout恭喜您查找成功!nshow();fin=1;break;location=run;if(fin=0)cout抱歉,没有找到该信息nendl; fin=0;cout您想继续查询吗?(y/n)c;if(c=Y|c=y)goto point1;void saver()/学生信息保存system(cls);ofstream file;file.open(D:信息保存.txt,ios:out);coutnnnnnnttt正在保存,请稍等 endl;system(cls);coutnnnntt数据保存保存成功!nnendl;for(int i=0;ishow();file.close();system(pause); void deletemember() char a; location=0; finder(); cout是否删除该数据(Y/N)a; if(a=Y|a=y) for(;locationintputtime;location+) findlocation=findlocation+1; cout删除成功endl; intputtime-; void main()point:int a;char b;cout 福建工程学院通信0801信息管理系统 endl;cout*endl;cout 按1输入人员endl;cout 按2查询人员endl;cout 按3保存成员endl;cout 按4删除成员endl;cout *endl;cout请选择您需要的操作a;switch(a)case 1:inter();break;case 2:finder();break;case 3:saver();break;case 4:deletemember();break;default :goto point;cout是否继续操作(Y/N)b;if(b=Y|b=y)goto point;elsecout感谢您的使用!_ endl;4.1.3使用说明和调试结果(1)使用说明这是一个关于学生和教师信息管理系统,具有输入、查询、保存、删除的功能,建立了一个含有人员的姓名、性别、年龄、学号、职位等成员的类的变量。可以选择三类人员进行信息的输入,查询、保存和删除操作。调试过程中,可按照有关提示进行相关操作:输入人员信息按“1”键;查询人员信息按“2”键;保存人员信息按“3”键;删除人员信息按“4”键;同时根据提示进行相关的操作。(2)调试结果代码中运用了switch 语句调用各子函数,数字 1、2、3、4等4个数字代表不同的指令。程序运行后调试程序代码后出现的总体界面:按1输入信息后出现如下界面,进行人员信息输入对象的选择:选择3教师类信息输入如图示,有如下功能:信息查询功能 信息保存功能信息保存在:D:信息保存.txt但是此程序中存在一个问题不能符合要求的是:在运行界面关掉后,再次打开运行界面时,不能够查询到前一个界面的信息。4.1.4 必做题小结对大学人员类的设计,在系统分析和设计的部分花了比较多的时间。模块设计部分因为涉及功能的实现,要从抽象的设计转化成实际的代码,因此对于某项功能的实现方法都思考得比较详尽。由于自己的知识和能力有限,只能在借鉴前人和阅读很多与本系统有相关内容的书籍做参考的基础上,完成此次的系统编写。由于班里有些同学对编程方面很感兴趣和精通,所以我也经常请教他们,做互相交流。同时,在交流的过程中能够互相提出更好的建议。4.2选作课题:基于RFID设备的隧道工作人员考勤系统我们组选择的课题是选作课题(2)即:(1)自学MFC,设计基于MFC设计隧道工作人员考勤系统,具有增、删、改、查询的功能(2)结合小组1同学做的实时考勤系统,设计基于MFC的隧道工作人员考勤系统4.2.1选做题任务分析由于必做题做的是学生管理系统,同样有输入、删除、查询的功能,与其去编写一个新的程序,倒不如顺着之前对管理系统的理解和程序的掌握继续选择做人员管理系统的输入、查询等操作设计。选作题要运用到的是MFC设计界面中的对话框编程。一开始我们对MFC相当的陌生,经过查看相关书籍和请教同学,稍微了解了一些操作。选作课题我们组六个人分为三小组,每个人完成每一小部分,分别有以下三部分:界面;这部分要求完成的是考勤系统的操作界面,包括进入系统,输入所有人员信息的界面,能够查询、删除、修改人员的界面,同时能够自动保存实时处理的数据,以及进行相关功能程序的编写。其中绑定姓名与ID号则是与第二部分所做的内容的一个连接点。ID号即为卡号;RFID接口;完成当读到卡的ID号时能够显示人员姓名等相关的基本信息,这部分要编写显示信息属性的相关程序,且能够将显示的信息保存在固定的文件中;液晶屏显示,将进入隧道人员的姓名及相关信息在LED显示屏上显示出相关信息来。归纳起来对各小组的要求为:界面小组的功能要求:!,密码登陆,2,录入人员(每个人员有唯一的ID号,如学号),删除,查询人员的信息3,将人员与RFID卡绑定4,所有人员可以保存5,可以查询人员的考勤记录 这部分我们基本上完成了知识在人员与RFID卡的绑定上与第二部分衔接不上。RFID小组的功能要求:1 能够获取读卡器发回的ID号2 将ID号与界面小组保存的人员信息比较,找到配对的人名3 将该名人员进行考勤信息保存(人名,ID号,时间)这部分在第二点与界面相连接找到配对绑定的人员上没有完成,对于绑定的人员和ID卡号的实现部分是在第二部分的程序中单独完成的。液晶小组的功能要求(vc调用delphi的dll):1 能正确使液晶显示需要显示的信息2 能够将RFID当前读到的人员名单在液晶上进行显示能够显示所需要的信息,但是正确的信息显示完之后会显示出一连串的未知乱码。4.2.2 液晶屏功能实现我做的是液晶屏显示这一部分的内容,这部分完成的内容相对于前两部分来讲甚是简单,只需要完成老师给的delphi的dll程序代码的理解,然后将文件流与第二部分RFID结合即可。LED屏幕的参数设置程序略。当接入LED显示屏后,将端口参数改成设备管理器的硬件设备端口值,然后运行LedshowTW2011二次开发库(10.12.09)的delphi库程序,此前先将delphi中的dll文件拷贝到Visual C+的工程下(驱动液晶显示器的程序工程下),此步骤即是完成VisualC+对delphi的动态链接库的调用。然后再在delphi的应用程序页面单击“添加屏幕”、“添加节目”、“添加图文区域”、打开要显示信息的目录,我们的程序中信息存储在:C:SUIDAO17kaoqin.txt文件中,将此文件添加到当前图文区域即可。LED过缓冲时间后即可显示kaoqin文件中的信息。由于此部分操作简单,也不需要编写程序,于是实习期间基本上是帮忙做前两部分的同学完成前两部分的内容,其中对界面的编写更为熟悉。其中较为熟练的掌握事件的实现和界面跳转功能的实现等,其中界面跳转功能的实现如下:首先在主要界面的类函数前添加要转界面的类的头文件,在按钮函数中加入代码如删shanchu dlg; dlg.DoModal();这个代码,就可以实现跳转到删除的界面了。由于我们是初学MFC,所以只能在程序编写上较多的参考老师及其他已完成同学的程序及做法,只能做到对考勤系统有有个比较系统地了解,知道它是怎么设计和实现功能的。4.2.3 选做题小结在基于RFID设备的隧道工作人员考勤系统设计方面,通过在网上查找和下载了相关资料,以

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论