课程设计报c++告.docx
《课程设计报c++告.docx》由会员分享,可在线阅读,更多相关《课程设计报c++告.docx(15页珍藏版)》请在冰豆网上搜索。
课程设计报c++告
《面向对象程序设计C++》
课程设计图书管理系统说明书
组员:
黄**、吴**、曾**、陈**
院系:
电子信息工程学院
专业班级:
计算机***
指导教师:
邹金安
日期:
2011年12月
目录
《面向对象程序设计C++》1
课程设计图书管理系统说明书1
一、实验目的2
二、实验原理2
1、类与对象3
2、构造函数3
3、继承、虚函数3
三、实验要求3
1.实验准备3
2.实验步骤3
3.系统主要功能:
4
四、实验仪器设备和软件环境4
五、实验步骤及结果测试及分析。
4
六.实验心得8
七.附录(部分关键代码)9
八.参考文献12
背景:
课程设计比教学实验复杂,涉及的深度较广,并更加实用。
目的是通过课程设计的综合训练,培养实际分析问题和编程能力。
最终目标是通过课程设计的形式,帮助学习者系统地掌握该门课程的主要内容,更好地完成学习任务。
另外,课程设计中的较大规模的综合设计,可以分成几个小项目进行分工合作,以培养团队协作精神。
一、实验目的
综合复习课程的所有知识点,进一步熟练面向对象程序的开发方法和流程,提高独立分析问题和解决问题的能力,进一步培养动手实践技能。
实验内容主要包括:
(1)了解图书管理系统的功能,需要完成的主要任务;
(2)掌握类、对象、继承等面向对象技术的编程实现;
(3)掌握如何进行一个较完整系统的整合。
二、实验原理
在以往学习的基础上,对以往所学内容进行整合,综合运用类、对象、继承等面向对象技术,进行图书管理系统的开发。
面向对象的几个基本概念:
1、类与对象
类是C++语言封装的基本单位,用来创建对象,它是定义对象形式的模板,指定代码和数据。
C++使用类的规范构建对象,对象是类的实例。
定义一个类时,要声明其包含的数据以及处理这些数据的代码。
数据包含于由类定义的实例变量中,代码则包含于函数中,组成类的代码和数据称为这个类的成员。
2、构造函数
构造函数在对象创建时进行初始化,为类定义的实例变量赋初始值,或者执行一个结构完整的对象必须的任何其他启动过程。
3、继承、虚函数
继承允许一个类继承另一个类的特征。
使用继承可以创建一个普通类,定义一组相关对象的共有特征,然后这个类可以由另一个更为具体的类继承,每个类都可以增加自己独有的元素。
虚函数建立在继承的基础上,支持多态,即“一个接口多种方法”的面向对象编程原则。
在C++中被继承的类叫基类,继承基类的类是派生类。
因此,派生类就是基类的具体版本。
派生类继承基类定义的所有成员并添加自己的独特元素。
C++通过允许一个类将另一个类合并到其声明中来实现继承。
C++支持多态性的基础,由继承和基类指针组成,实际实现多态性的具体功能就是虚函数。
虚函数在基类中声明为virtual,并在一个或多个派生类中重新定义。
因此,每个派生类都可以有自己的虚函数版本。
调用时,C++根据指针指向的对象的类型确定调用函数的哪个版本。
因此,如果基类包含虚函数且有两个或多个类由基类派生而来,那么当通过基类指针指向不同类型对象时,就会执行不同版本的虚函数。
多态性是面向对象编程的基本功能,因为它允许一般化的类指定类的所有派生类共用的那些函数,同时允许派生类定义所有这些函数或其中一部分函数的具体实现。
三、实验要求
1.实验准备
(1)综合复习编写该程序要用到的所有知识点。
(2)安装VisualC++6.0集成开发环境。
2.实验步骤
(1)调研:
到图书馆、资料室调研图书管理方式及图书分类的国家标准。
(2)系统分析:
分析系统的构成模块和开发流程。
(3)系统开发:
按照系统模块的划分和开发流程,编写程序代码。
(4)系统测试:
做单元、接口、集成测试,白盒和黑盒两种方法相结合。
(5)系统提交:
提交程序,实验报告,测试数据和结果。
3.系统主要功能:
(1)读者借书。
(2)读者还书。
(3)图书维护。
(4)读者维护。
四、实验仪器设备和软件环境
计算机,Windows2000或WindowsXP操作系统,VisualC++6.0
五、实验步骤及结果测试及分析。
对多个模拟数据进行测试,观察图书、读者信息的更新,对系统的各项功能都要进行一一测试,充分运用黑盒测试和白盒测试等手段进行。
(一)系统主功能模块图
图1系统功能模块图
(二)系统运行截图
主界面
程序归属说明
图书节约查询
图书分类管理系统
读者信息
被借图书信息
记录操作区
字串表
编辑区
信息
六.实验心得
黄**:
这次课程设计让我掌握了许多的有用知识。
首先通过不断地学习和锻炼更加熟悉地掌握应用软件Microsoft Visual C++6.0了。
设计正确及合适的程序对于我们初心者来说是很大的难题,出现一丁点错误就得费很大努力去修改,正式这一步步一点点的努力让我对C语言有了更加深刻的认识。
同时我掌握了解决问题的方法,无论是对以后的学习、生活都有无比重要的价值
吴**:
在这次课程设计中,我们小组完成了图书管理系统的设计,小组内的分工和相互协调很重要,大家在分工中扬长避短,个及所长,很好的提高了大家的积极性和合作意识,并有效的缩短了完成时间。
通过这次的设计,我学到了很多,同时也学会了细心与耐心的培养。
我想这在将来的工作或社会“旅程”中都将起到很大的帮助。
曾**:
在设计中,每个同学都会遇到一些困难,或多或少,这些困难常常让我心情烦躁,比如不能清晰的建立设计模板,不会修改出现的错误等等,然后我向同学寻求帮助,向他们学习,最终通过自己努力建立了模版。
不可避免程序中肯定依然存在着某些问题,我希望在以后的学习和应用中不断提高自己的能力,攻克遇到的难题。
同时我也深刻的体会到团队的合作是多么的重要
陈**:
在学习C++以前,我认为c++只是在c语言的基础上的一种延伸,认为只要学习c预言就可以用c语言的那种设计思想来学习c++\设计c++程序。
只是由于抱了这种思想,是我在一开始学习c++的时候遇到了很大的困难,我没有办法体会面向对象的设计思想,我在学习这门课的时候老是想着实现这个函数功能的具体过程,而没有太注意对象分类的重要性。
在学习这门课的过程中,我感受到了自己亲手编程序、调程序的重要性,我们要熟悉c++的语法、体会调试的思想,最好的一个手段就是自己动手编程、调试,这会比我们一味的看书效果好得多。
七.附录(部分关键代码)
//102图书城View.h:
interfaceoftheC102Viewclass
//
/////////////////////////////////////////////////////////////////////////////
#if!
defined(AFX_102VIEW_H__641E7367_4011_40C3_9046_91B74C65F92C__INCLUDED_)
#defineAFX_102VIEW_H__641E7367_4011_40C3_9046_91B74C65F92C__INCLUDED_
#if_MSC_VER>1000
#pragmaonce
#endif//_MSC_VER>1000
classC102Set;
classC102View:
publicCRecordView
{
protected:
//createfromserializationonly
C102View();
DECLARE_DYNCREATE(C102View)
public:
//{{AFX_DATA(C102View)
enum{IDD=IDD_102_FORM};
C102Set*m_pSet;
//}}AFX_DATA
//Attributes
public:
C102Doc*GetDocument();
//Operations
public:
//Overrides
//ClassWizardgeneratedvirtualfunctionoverrides
//{{AFX_VIRTUAL(C102View)
public:
virtualCRecordset*OnGetRecordset();
virtualBOOLPreCreateWindow(CREATESTRUCT&cs);
protected:
virtualvoidDoDataExchange(CDataExchange*pDX);//DDX/DDVsupport
virtualvoidOnInitialUpdate();//calledfirsttimeafterconstruct
virtualBOOLOnPreparePrinting(CPrintInfo*pInfo);
virtualvoidOnBeginPrinting(CDC*pDC,CPrintInfo*pInfo);
virtualvoidOnEndPrinting(CDC*pDC,CPrintInfo*pInfo);
//}}AFX_VIRTUAL
//Implementation
public:
virtual~C102View();
#ifdef_DEBUG
virtualvoidAssertValid()const;
virtualvoidDump(CDumpContext&dc)const;
#endif
protected:
//Generatedmessagemapfunctions
protected:
//{{AFX_MSG(C102View)
afx_msgvoidOnButtonaddnew();
afx_msgvoidOnButtondelete();
afx_msgvoidOnButtonupdate();
afx_msgvoidOnButtonfirst();
afx_msgvoidOnButtonprev();
afx_msgvoidOnButtonnext();
afx_msgvoidOnButtonlast();
afx_msgvoidOnRadio1();
afx_msgvoidOnRadio2();
afx_msgvoidOnButton3();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
#ifndef_DEBUG//debugversionin102图书城View.cpp
inlineC102Doc*C102View:
:
GetDocument()
{return(C102Doc*)m_pDocument;}
#endif
/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
//MicrosoftVisualC++willinsertadditionaldeclarationsimmediatelybeforethepreviousline.
#endif//!
defined(AFX_102VIEW_H__641E7367_4011_40C3_9046_91B74C65F92C__INCLUDED_)
//102图书城Set.h:
interfaceoftheC102Setclass
//
/////////////////////////////////////////////////////////////////////////////
#if!
defined(AFX_102SET_H__98C62E7F_389F_49F6_9454_A2D60835C2C4__INCLUDED_)
#defineAFX_102SET_H__98C62E7F_389F_49F6_9454_A2D60835C2C4__INCLUDED_
#if_MSC_VER>1000
#pragmaonce
#endif//_MSC_VER>1000
classC102Set:
publicCRecordset
{
public:
C102Set(CDatabase*pDatabase=NULL);
DECLARE_DYNAMIC(C102Set)
//Field/ParamData
//{{AFX_FIELD(C102Set,CRecordset)
CStringm_bookID;
CStringm_bookname;
CStringm_class;
CStringm_outhor;
CStringm_price;
intm_number;
CStringm_introduce;
CStringm_public;
CTimem_publictime;
CStringm_stdnum;
CStringm_bookID2;
CStringm_bookname2;
CTimem_brotime;
CStringm_identity;
CStringm_stdname;
//}}AFX_FIELD
//Overrides
//ClassWizardgeneratedvirtualfunctionoverrides
//{{AFX_VIRTUAL(C102Set)
public:
virtualCStringGetDefaultConnect();//Defaultconnectionstring
virtualCStringGetDefaultSQL();//defaultSQLforRecordset
virtualvoidDoFieldExchange(CFieldExchange*pFX);//RFXsupport
//}}AFX_VIRTUAL
//Implementation
#ifdef_DEBUG
virtualvoidAssertValid()const;
virtualvoidDump(CDumpContext&dc)const;
#endif
};
//{{AFX_INSERT_LOCATION}}
//MicrosoftVisualC++willinsertadditionaldeclarationsimmediatelybeforethepreviousline.
#endif//!
defined(AFX_102SET_H__98C62E7F_389F_49F6_9454_A2D60835C2C4__INCLUDED_)
八.参考文献
面向对象程序设计与VisualC++6.0教程作者邹金安厦门大学出版社
面向对象程序设计与VisualC++6.0学习指导书作者邹金安厦门大学出版社