版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C++课程设计主讲教师:於文雪副教授影像科学与技术实验室Tel:83794249,83794443Email:ywx.list@课时安排(长学期)上课:8学时
第9、10、11周上机:20机时: 第12-16周:周五下午(6-9)课时安排(短学期)上课:4学时
第1周:周一,1~2节第2周:周一,3~4节上机:36机时:
第1周:周一、四晚上18:30-21:30第2周:周一、二、四晚上18:30-21:30第3周:周一、四晚上18:30-21:30学习目的
计算机科学与技术专业实践性环节之一,是学习完《C++程序设计语言》课程后进行的一次全面的综合练习;通过实践加强对程序设计语言课程知识点的理解和掌握,培养综合运用能力、实际分析问题能力及编程能力,养成良好的编程习惯,提高运用C++语言以及面向对象知识解决实际问题的能力;学习目的
掌握用C++语言编写面向对象的实用程序的设计方法,对面向对象方法和思想增加感性的认识;学会利用C++程序设计语言编写出一些短小、可靠的Windows实用程序,切实提高面向对象的程序设计能力;为后续的相关课程学习打下基础。设计内容安排
课程设计1–9题本人学号除以9的余数为设计题目,余数为0时做第9题;工程命名:“P”+“学号_”+“题目号”;如学号为“09007301”的同学工程名为“P09007301_2”;最后一次上机交课程设计。其它要求
每人请准备一个笔记本,将所做程序的设计思想、实现方法、程序模块、实验结果等整理后记录下来,课程结束时交上来,作为平时和总结报告的考评依据。数学问题求解程序设计1)计算器
输入一个算式(包含操作数(整形、浮点数)、操作符、优先级);对算式进行编译,确定操作数、操作符、运算次序;
给出可计算的测试算式;*如算式有错误提示和处理算式越复杂,得分越高。2)考核重点
字符串使用与操作;数学运算。数学问题求解程序设计步骤:1)输入算式;2)得到算式;3)解释算式:分离出操作符、操作数和优先级,包括 a.算式中会有数字0~9、小数点、空格、左括号、右括号、+、-、、。怎么判断?
b.由数字和小数点组装数;4)组成算式;5)计算结果。
模板实现矩阵的基本运算1)要求
学会建立模板类;实现矩阵的“加”、“减”、“乘”、“数乘”、“转置”
;
动态内存分配并用随机数填充;
注意“加”、“减”、“乘”要进行条件的判断;用模板类实现。模板实现链表操作1)要求
学会建立模板类;掌握链表实现链表的建立、插入、删除、查找、合并、逆转等;
用模板类实现。模板的一般形式
C++的两类模板:函数模板template<模板参数表>返回类型函数名(参数表){
...
}类模板template<模板参数表>class类名{
…
}矩阵运算类模板template<classT>classCMatrix{
public:
CMatrix();
CMatrix(int
Row,intCol);
~CMatrix();public:
int
m_Row;
int
M_Col; T* m_Element;public:
CMatrix*MultiLeft(CMatrix&Matrix);
CMatrix*MultiRight(CMatrix&Matrix);
CMatrix*Plus(CMatrix&Matrix);
CMatrix*Minus(CMatrix&Matrix);
CMatrix*DotPlus(TValue);
CMatrix*Transpos();
CMatrix*operator+(CMatrix&Matrix) voidoperator=(CMatrix&Matrix)}矩阵运算模板类CMatrix<float>Mat(4,5);考核与成绩评定
不考试,成绩以课程设计过程中的学习态度、总结报告、程序清单和实验结果以及平时考核情况评定;成绩评定:汇总后实行百分制。评分标准平时(20%):出勤、答问、作业检查;程序清单和实验结果(65%):程序设计的正确性、实用性、通用性、可扩充性等,包括:a)工程文件,b)程序源码,c)可执行程序,4)数据;总结报告(15%):包括系统设计要求、设计思路、系统功能模块图、系统流程图、类的层次图(包括类成员列表)、关键程序代码、总结、参考书目等。其它要求
每人请准备一个笔记本,将所做程序的设计思想、实现方法、程序模块、实验结果等整理后记录下来,课程结束时交上来,作为平时和总结报告的考评依据。教材与参考资料主要参考书:C++程序设计实践教程,李海文、吴乃陵编,高等教育出版社其它:1)VisualC++课程设计陈清华朱红编东南大学出版2)VisualC++课程设计与系统开发案例伍俊良编清华大学出版社3)C++程序设计课程设计刘振安刘燕君孙忱编机械工业出版社4)VisualC++面向对象与可视化程序设计黃维通编清华大学出版社
常用程序类型控制台程序:main(DOS)Win32程序:WinMain(一般Windows)MFC框架程序:看不到程序入口控制台程序:源程序//Console.cpp:Definestheentrypointfortheconsoleapplication.//#include"stdafx.h"int
main(int
argc,char*argv[]){
printf("HelloWorld!\n"); return0;}控制台程序:运行结果Win32应用程序:源程序//Win32App.cpp:Definestheentrypointfortheapplication.//#include"stdafx.h"#include"resource.h"#defineMAX_LOADSTRING100//GlobalVariables:HINSTANCEhInst; //currentinstanceTCHARszTitle[MAX_LOADSTRING]; //ThetitlebartextTCHARszWindowClass[MAX_LOADSTRING]; //Thetitlebartext//Fowarddeclarationsoffunctionsincludedinthiscodemodule:ATOM MyRegisterClass(HINSTANCE
hInstance);BOOL InitInstance(HINSTANCE,int);LRESULTCALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);LRESULTCALLBACK About(HWND,UINT,WPARAM,LPARAM);Win32应用程序:源程序intAPIENTRYWinMain(HINSTANCE
hInstance,HINSTANCEhPrevInstance,LPSTRlpCmdLine,
int
nCmdShow){ //TODO:Placecodehere. MSGmsg; HACCELhAccelTable; //Initializeglobalstrings
LoadString(hInstance,IDS_APP_TITLE,szTitle,MAX_LOADSTRING);
LoadString(hInstance,IDC_WIN32APP,szWindowClass,MAX_LOADSTRING);
MyRegisterClass(hInstance); //Performapplicationinitialization: if(!InitInstance(hInstance,nCmdShow)) { returnFALSE; }
hAccelTable=LoadAccelerators(hInstance,(LPCTSTR)IDC_WIN32APP); //Mainmessageloop: while(GetMessage(&msg,NULL,0,0)) { if(!TranslateAccelerator(msg.hwnd,hAccelTable,&msg)) {
TranslateMessage(&msg);
DispatchMessage(&msg); } } returnmsg.wParam;}Win32程序:运行结果MFC程序:源程序//MFC.cpp:Definestheclassbehaviorsfortheapplication.//#include"stdafx.h"#include"MFC.h"#include"MainFrm.h"#include"ChildFrm.h"#include"MFCDoc.h"#include"MFCView.h"#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;#endif///////////////////////////////////////////////////////////////////////////////CMFCAppBEGIN_MESSAGE_MAP(CMFCApp,CWinApp) //{{AFX_MSG_MAP(CMFCApp) ON_COMMAND(ID_APP_ABOUT,OnAppAbout) //NOTE-theClassWizardwilladdandremovemappingmacroshere. //DONOTEDITwhatyouseeintheseblocksofgeneratedcode! //}}AFX_MSG_MAP //Standardfilebaseddocumentcommands ON_COMMAND(ID_FILE_NEW,CWinApp::OnFileNew) ON_COMMAND(ID_FILE_OPEN,CWinApp::OnFileOpen) //Standardprintsetupcommand ON_COMMAND(ID_FILE_PRINT_SETUP,CWinApp::OnFilePrintSetup)END_MESSAGE_MAP()MFC程序:源程序///////////////////////////////////////////////////////////////////////////////CMFCAppinitializationBOOLCMFCApp::InitInstance(){
AfxEnableControlContainer(); //Standardinitialization //Ifyouarenotusingthesefeaturesandwishtoreducethesize //ofyourfinalexecutable,youshouldremovefromthefollowing //thespecificinitializationroutinesyoudonotneed.#ifdef_AFXDLL Enable3dControls(); //CallthiswhenusingMFCinasharedDLL#else Enable3dControlsStatic(); //CallthiswhenlinkingtoMFCstatically#endif //Changetheregistrykeyunderwhichoursettingsarestored. //TODO:Youshouldmodifythisstringtobesomethingappropriate //suchasthenameofyourcompanyororganization.
SetRegistryKey(_T("LocalAppWizard-GeneratedApplications"));
LoadStdProfileSettings();//LoadstandardINIfileoptions(includingMRU)MFC
程序:
源程序 //Registertheapplication'sdocumenttemplates.Documenttemplates //serveastheconnectionbetweendocuments,framewindowsandviews.
CMultiDocTemplate*pDocTemplate;
pDocTemplate=newCMultiDocTemplate( IDR_MFCTYPE,
RUNTIME_CLASS(CMFCDoc),
RUNTIME_CLASS(CChildFrame),//customMDIchildframe
RUNTIME_CLASS(CMFCView));
AddDocTemplate(pDocTemplate); //createmainMDIFramewindow
CMainFrame*pMainFrame=newCMainFrame; if(!pMainFrame->LoadFrame(IDR_MAINFRAME)) returnFALSE;
m_pMainWnd=pMainFrame; //Parsecommandlineforstandardshellcommands,DDE,fileopen
CCommandLineInfo
cmdInfo;
ParseCommandLine(cmdInfo); //Dispatchcommandsspecifiedonthecommandline if(!ProcessShellCommand(cmdInfo)) returnFALSE; //Themainwindowhasbeeninitialized,soshowandupdateit.
pMainFrame->ShowWindow(m_nCmdShow);
pMainFrame->UpdateWindow(); returnTRUE;}MFC程序:运行结果MFC程序:Hello//修改前//CMFCViewdrawingvoidCMFCView::OnDraw(CDC*pDC){
CMFCDoc*pDoc=GetDocument();
ASSERT_VALID(pDoc);
//TODO:adddrawcodefornativedatahere}//修改后voidCMFCView::OnDraw(CDC*pDC){
CMFCDoc*pDoc=GetDocument();
ASSERT_VALID(pDoc);
pDC->TextOut(100,100,"Hello");}MFC程序:Hello运行结果基本应用程序框架下面为创建MFC工程的文件框架:
CMFCApp
应用程序框架(CWinApp)
CMFCDoc
文档类(CDocument)
CMFCView
视图类(CView)
CMainFrame
主框架窗口(CMDIFrameWnd)
CChildFrame
子框架窗口(CMDIChildWnd)
CAboutBox
关于对话框。该类非常简单,就是显示版权信息(CDialog)
程序框架中的基本联系::AfxGetApp
得到应用程序的指针(CMFCApp)::AfxGetMainWnd
得到程序的主框架窗口(CMainFrame)CMDIChildWnd::GetMDIFrame得到程序的主框架窗口(CMainFrame)CMFCView::GetDocument得到(CMFCDoc)CFrameWnd::GetActiveView()得到(CMFCView)请联系:CMFCApp在MFC中创建新类在MFC中创建新类程序与项目
形式上:单文件与多文件具体的问题与一项任务一段代码与一组代码一个类(或几个函数)与多个类实现上程序员与系统分析员孤立与联系静态与动态封闭与通讯目标集中与统筹兼顾项目开发的步骤
第一步,项目任务分析:搞清楚干什么,任务之间的关系第二步,开发平台选择:用什么实现最经济、方便、可靠、具有竞争力第三步,项目分解:简化问题,任务具体化第四步,编程实现:编制代码,实现具体的功能第五步,系统调试:检查系统的功能,排查错误用VC++开发项目
第一步,项目任务分析:如何用“C++类”来描述项目第二步,项目分解:用哪些类来实现,在哪里使用这些类第三步,设计系统框架:在系统框架的基础上集成任务“类”第四步,添加代码:编制类的代码第五步,系统集成:完成通讯(人机交互)、数据存储。第六步,完善文档。具体实现第一步,用VisualC++建立工作平台、加进自己的项目第二步,往项目里添加“类”,类代码完善第三步,在项目框架的基础上使用类第四步,人机交互设计第五步,调试为什么要选择VisualC++
底子好,微软产品;VC有历史优势,一直延续下来;VC适合组织大工程(VB就不行);源代码特别多。大多数大型软件(包括Windows自己)都是用C、C++编的,所以可以利用;VC的开发工具特别多,从控件公司到硬件开发商,其产品很少不提供VC接口的;VC提供了极为丰富的文档和范例,参考资料也很多。并且VC与其他的VisualStudio成员可以协调工作,对软件工程有利。
DeveloperStudio(集成开发环境IDE)
编辑器Wizard(向导):AppWizard,ClassWizard操作界面(菜单,工具)VisualC++的外壳MFC
MFC是对WindowsAPI的封装,学VC主要就是要学MFC,大约有100多个类,但常用的也就二三十个。MFC是编译器厂商所提供的一套现成的类库(classlibraries),一般地,程序员站在这个基础开发应用软体(PC上另两套与MFC同等地位的产品是Borland的OWL和IBM的OpenClass,前者搭配的开发环境是BorlandC++,後者搭配的是VisualAgeC++,其他的C++编译器大厂如Watcom
和Symantec和Metaware,并没有开发自己的类别库,他们向微软取得MFC的使用授权,提供MFC的原始码、含入档、相容的编译器和联结器)。MFCPlatformSDK
VisualC++和整个VisualStudio的精华和灵魂,VisualStudio的基石,我们很少直接接触到它。PlatformSDK是以MicrosoftC/C++编译器为核心,配合MASM,辅以其他一些工具和文档资料,如CL,NMAKE,和其他许许多多命令行程序。MSDNLibrary
MSDN,全名为MicrosoftDeveloperNetwork,是Microsoft公司为开发人员提供所需的工具、技术、培训、信息、事件、以及其他一些技术资料的主要项目。
MSDNLibrary是VisualStudio6.0系列开发产品之一。包含了容量为1GB的编程技术信息,包括示例代码、文档、技术文章、Microsoft开发人员知识库、以及您在使用Microsoft公司的技术来开发解决方案时所需要的其他资料。基于VisualC++的程序设计
集成环境定制
创建工程文件(AppWizard)编辑、添加文件编译、连接、执行调试联机帮助其它(查找、恢复等)AppWizard
即应用程序向导,它是VisualStudio开发环境中强大的编程工具之一,用它可以创建各种不同类型的程序,比如Win32应用、ATL、MFC应用等。它的一个主要特点就是提供一系列对话框引导用户进行必要的选择来完成给定的任务。AppWizard会自动创建构造工程所需的框架文件,它们包括:工程文件、工作间文件、源代码文件、头文件、资源文件等等。
3个很有用的调试函数
MessageBox
AfxMessageBoxASSERT(VERIFY)基本应用程序框架下面为创建Hello工程的文件框架:
CHelloApp
应用程序框架(CWinApp)
CHelloDoc
文档类(CDocu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 5-Phenyl-1-1-3-1-terphenyl-4-4-dicarboxylic-acid-生命科学试剂-MCE
- 大庆中学数学试题及答案
- 2026年智慧城市建设创新报告:未来展望与应用策略
- 2026年麻醉药智能化发展报告
- 2026年食品行业烘焙设备技术发展报告
- 2026年顶石机技术创新与应用分析报告
- 2026年食品加工机械创新报告
- 2026年振动传感器创新行业报告
- 银行金库防护试题及答案
- 驾考科目一扣分题库(含答案)
- 2026年新教材人教版九年级上册英语期中复习:Unit 1-4+期中5套测试卷汇编(含答案)
- 河北省邯郸市2025-2026学年高一上学期期中联考语文试题及答案
- ESC 2026新版心力衰竭管理指南精读
- 2024+ESO指南:卵圆孔未闭患者卒中后诊断与治疗
- 2026智联招聘笔试题库及答案
- 2026版《药物临床试验质量管理规范》GCP考试题库(含标准答案+解析)
- EDA技术及应用项目教程 教学大纲
- 中医护理评估
- 2025年度中国展览数据统计报告
- 2026年中考作文押题指导
- 全新版大学英语视听说教程1答案
评论
0/150
提交评论