谭静101301096.doc_第1页
谭静101301096.doc_第2页
谭静101301096.doc_第3页
谭静101301096.doc_第4页
谭静101301096.doc_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

辽 宁 工 业 学 院C+语言程序设计课程设计(论文)题目: 计算器 院(系): 软 件 学 院 专业班级: 软件工程103班 学生学号: 101301096 学生姓名: 安凯辰 指导教师: 武志刚 教师职称: 讲 师 起止时间:2010.12.20-2010.12.31课程设计(论文)任务及评语院(系):软件学院 教研室:软件教研室学 号101301096学生姓名安凯辰专业班级软件工程103课程设计(论文)题目计算器课程设计(论文)任务(1). 掌握面向对象程序设计语言C+的基本语法(2). 掌握C+面向对象设计的思想(3). 掌握VC+6.0与DEV C+ 开发工具的使用(4). 运用标准C+规范设计应用程序设计过程中,要严格遵守设计的时间安排,听从指导教师的指导。正确地完成上述内容,规范完整地撰写出设计报告。指导教师评语及成绩成绩: 指导教师签字: 年 月 日辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)目 录第1章课程设计目的与要求11.1 课程设计目的11.2 课程设计的实验环境11.3 课程设计的预备知识11.4 课程设计要求1第2章课程设计内容32.1 C+语言程序设计-计算器问题分析32.1.1 功能分析32.1.2 算法设计及程序设计中技术重点32.2 程序中涉及的类的UML类图和框图。42.3 程序源代码6第3章课程设计总结15参考文献16第1章 课程设计目的与要求1.1 课程设计目的将理论教学中涉及到的知识点贯穿起来,对不同的数据类型、程序控制结构、数据结构作一比较和总结,结合设计题目进行综合性应用,对所学知识达到融会贯通的程度。通过课程设计,学生在下述各方面的能力应该得到锻炼:(1)进一步巩固、加深学生所学专业课程C+语言教程的基本理论知识,理论联系实际,进一步培养学生综合分析问题,解决问题的能力。 (2)全面考核学生所掌握的基本理论知识及其实际业务能力,从而达到提高学生素质的最终目的。 (3)利用所学知识,开发小型应用系统,掌握运用C+语言编写调试应用系统程序,训练独立开发应用系统,进行数据处理的综合能力。(4)对于给定的设计题目,如何进行分析,理清思路,并给出相应的数学模型。 (5)掌握面向对象程序设计的方法。(6)熟练掌握C+语言的基本语法,灵活运用各种数据类型。(7)进一步掌握在集成环境下如何调试程序(单步调试,设置断点、观察表达式,分块调试)和修改程序。1.2 课程设计的实验环境硬件要求能运行Windows 操作系统的微机系统。C+语言应用程序开发软件使用:VC+ 系统,或其他C+语言应用程序开发软件。1.3 课程设计的预备知识熟悉C+语言程序设计的基本知识及VC+编辑器的使用方法。1.4 课程设计要求1. 仔细分析设计题目,画出程序流程图,编写程序源代码。2. 积极上机调试源程序,增强编程技巧与调程能力。3. 认真书写课程设计预习报告,课程设计说明书。4. 遵守课程设计要求和机房管理制度,服从指导教师的安排,确保课程设计顺利完成。第2章 课程设计内容2.1 C+语言程序设计-计算器问题分析在运算的过程种,如果通过计算器来完成,就会减少预算量,可以用“计算器”的标准视图执行简单的计算,也可以用其科学型视图执行高级的科学计算。2.1.1 功能分析计算器只是简单的计算工具,有些机型具备函数计算功能,有些机型具备一定的贮存功能,但一般只能存储几组数据。程序中利用全局变量完成数据的输出及中间数据处理过程为了提高输入数据的正确性,其基本的功能要求是:输入操作简单、轻松;输入效率高,即具有重复内容自动复制和简易代码输入替代功能;输入格式美观大方;然而,仅有这些功能要求是不够的,它们不能从根本上提高输入数据的正确性。因为,大量的原始数据的输入是件繁琐而又单调的工作,难免出错。所以,必须要有更严格、更有效的科学方法和手段来提高输入数据的正确性。 创建应用程序框架。 创建对话资源。 添加消息处理函数。 ON_COMMAND_RANGE宏。 添加成员处理函数与成员变量。 添加完成各个功能的代码。2.1.2 算法设计及程序设计中技术重点数据输入输出 运算转换数据类型转换运算精度计算机分类算术型计算器可进行加、减、乘、除等简单的四则运算,又称简单计算器。 科学型计算器可进行乘方、开方、指数、对数、三角函数、统计等方面的运算,又称函数计算器。 程序计算器可以编程序,把较复杂的运算步骤贮存起来,进行多次重复的运算。2.2 程序中涉及的类的UML类图和框图。2.2.1 UML类图doublenumber-shu double- shu (: double *):void+ shu (: double *,:int,:char)+ shu (: double &)+ shu ()+ shu ()+add (: double *):void+div(double ):void+pwr( double ):void+mod(: double ):char*+sub():int+pp():char+Show():void图2-1 UML类图intnumber-shu int- shu (: int *):void+ shu (: int *,:int,:char)+ shu (: int &)+ shu ()+ shu ()+add (: int *):void+div( int ):void+pwr( int ):void+mod( int ):char*+sub():int+pp():char+Show():void图2-2 UML类图2.2.2 Error(int ErrCode)函数的框图:进入ERROW(int ERRCODE)子函数换行POS!=0?调用ERRCODESTRERRCODE输入错误信息并发出警报调用LONGJUMP(ERRJB.1)跳转到MAIN主函数POS-;图2-3error函数框图2.3 程序源代码/*定义CAboutDlg类,并公有继承CDialog类,定义公有成员函数*/class CAboutDlg : public CDialogpublic:CAboutDlg();DECLARE_MESSAGE_MAP();CAboutDlg:CAboutDlg() : CDialog(CAboutDlg:IDD) /*各成员函数的实现*/void CAboutDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);IMPLEMENT_OLECREATE_SINGLE(CCalcDlg, mfccalc.calculator,0x62c4dd10, 0xf45e, 0x11cd, 0x8c, 0x3d, 0x0, 0xaa, 0x0, 0x4b, 0xb3, 0xb7);CCalcDlg:CCalcDlg(CWnd* pParent /*=NULL*/): CDialog(CCalcDlg:IDD, pParent)m_bAutoDelete=TRUE; m_dwRegister = 0; EnableAutomation();CCalcDlg:CCalcDlg()if (m_dwRegister != 0)RevokeActiveObject(m_dwRegister, NULL);void CCalcDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);void CCalcDlg:PerformOperation()if (m_errorState != ErrNone)return;if (m_bOperandAvail)if (m_operator = OpNone) /*判断m_operator与OpNnoe是否相等*/m_accum = m_operand;else if (m_operator = OpMultiply)m_accum *= m_operand;else if (m_operator = OpDivide)if (m_operand = 0)m_errorState = ErrDivideByZero;elsem_accum /= m_operand;else if (m_operator = OpAdd)m_accum += m_operand;else if (m_operator = OpSubtract)m_accum -= m_operand;m_bOperandAvail = FALSE;UpdateDisplay();void CCalcDlg:ClickedNumber(long l) /*对ClickNumber函数进行实现*/if (m_errorState != ErrNone)return;if (!m_bOperandAvail)m_operand = 0L;SetOperand(m_operand*10+l);UpdateDisplay();void CCalcDlg:UpdateDisplay()if (GetSafeHwnd() = NULL)return;CString str;if (m_errorState != ErrNone)str.LoadString(IDS_ERROR);elselong lVal = (m_bOperandAvail) ? m_operand : m_accum;/*用三算目运算进行判断*/str.Format(_T(%ld), lVal);GetDlgItem(IDE_ACCUM)-SetWindowText(str);GetDlgItem(IDC_INVISIBLE_FOCUS)-SetFocus();BEGIN_MESSAGE_MAP(CCalcDlg, CDialog)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_COMMAND_RANGE(IDB_0, IDB_9, OnClickedNumber)ON_BN_CLICKED(IDB_CLEAR, OnClickedClear)ON_BN_CLICKED(IDB_DIVIDE, OnClickedDivide)ON_BN_CLICKED(IDB_EQUAL, OnClickedEqual)ON_BN_CLICKED(IDB_MINUS, OnClickedMinus)ON_BN_CLICKED(IDB_PLUS, OnClickedPlus)ON_BN_CLICKED(IDB_TIMES, OnClickedTimes)ON_EN_SETFOCUS(IDE_ACCUM, OnSetFocusAccum)/AFX_MSG_MAPEND_MESSAGE_MAP()/ CCalcDlg message handlersBOOL CCalcDlg:OnInitDialog() /*对OnInitDialog函数进行实现*/CDialog:OnInitDialog();ASSERT(IDM_ABOUTBOX & 0xFFF0) = IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX AppendMenu(MF_SEPARATOR);pSysMenu-AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);pSysMenu-RemoveMenu(SC_MAXIMIZE, MF_BYCOMMAND);pSysMenu-RemoveMenu(SC_SIZE, MF_BYCOMMAND);SetFocus();return FALSE;void CCalcDlg:OnSysCommand(UINT nID, LPARAM lParam) /*接受两个参数,对此操*/if (nID & 0xFFF0) = IDM_ABOUTBOX)CAboutDlg dlgAbout;dlgAbout.DoModal();elseCDialog:OnSysCommand(nID, lParam);void CCalcDlg:OnPaint()if (!IsIconic()CDialog:OnPaint();return;CPaintDC dc(this);SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);int cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;dc.DrawIcon(x, y, m_hIcon);HCURSOR CCalcDlg:OnQueryDragIcon()return (HCURSOR)m_hIcon;void CCalcDlg:OnClickedNumber(UINT nID)ASSERT(nID = IDB_0 & nID SetFocus();BOOL CCalcDlg:RegisterActive()return RegisterActiveObject(GetInterface(&IID_IUnknown),CCalcDlg:guid, NULL, &m_dwRegister) = NOERROR;long CCalcDlg:GetAccum()return m_accum;void CCalcDlg:SetAccum(long nNewValue)m_accum = nNewValue;long CCalcDlg:GetOperand()return m_operand;void CCalcDlg:SetOperand(long nNewValue)m_operand = nNewValue;m_bOperandAvail = TRUE;short CCalcDlg:GetOperation()return m_operator;void CCalcDlg:SetOperation(short nNewValue)m_operator = (Operator)nNewValue;BOOL CCalcDlg:GetVisible()return m_hWnd != NULL & (GetStyle() & WS_VISIBLE) != 0;void CCalcDlg:SetVisible(BOOL bNewValue)if (bNewValue = GetVisible()return;if (bNewValue)if (m_hWnd = NULL & !Create(CCalcDlg:IDD)return;if (AfxGetThread()-m_pMainWnd = NULL)AfxGetThread()-m_pMainWnd = this; ShowWindow(SW_SHOWNORMAL);elseif (m_hWnd != NULL)ShowWindow(SW_HIDE);BOOL CCalcDlg:Evaluate()OnClickedEqual();return m_errorState = ErrNone;void CCalcDlg:Clear()OnClickedClear();void CCalcDlg:Display()UpdateDisplay();void CCalcDlg:Close()if (m_hWnd = NULL) AfxPostQuitMessage(0); /*如果m_Hwnd的值为空时,进行此操作*/return;BOOL bAutoDelete = m_bAutoDelete;m_bAutoDelete = FALSE;DestroyWindow();m_bAutoDelete = bAutoDelete;BOOL CCalcDlg:Button(LPCTSTR szButton)switch (szButton0)case c:case C:OnClickedClear();break;case /:OnClickedDivide();break;case +:OnClickedPlus();break;case -:OnClickedMinus();break;case *:OnClickedTimes();break;case =:OnClickedEqual();break;default:if (szButton0 = 0 & szButton0 = 9)/*根据szButton0的值进行判断*/ClickedNumber(szButton0 - 0);Elsereturn FALSE;break;return TRUE;第3章 课程设计总结通过这次课程设计,使我学到了很多东西。这不仅提高了我对C语言知识

温馨提示

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

评论

0/150

提交评论