c语言程序设计课程计算器设计报告

合集下载

C语言课程设计报告书____简易计算器[1]

C语言课程设计报告书____简易计算器[1]

C语言课程设计报告书课程名称:C语言课程设计课题名称:简易计算器班级:学号:姓名:指导老师:成绩:2008年6月欢迎老师指导一、课程设计目的1.通过一个学期的学习,我认为要学好C语言程序这门课程,不仅要认真阅读课本知识,更重要的是要通过上机实践才能增强和巩固我的知识。

特别是作为本科生,更要注重实践这一环节,只有这样我们才能成为合格的计算机人材。

通过这次课程设计,进一步巩固所学的语句,如语句嵌套等;加深对循环,分支等结构的运用;最后还可以熟悉四则运算﹑三角函数等经典算法。

2.通过此次课程设计扩展自己的知识面,课本上的东西是远远不够的,可以通过去图书馆查资料,上网找资料等手段学到一些新知识,比如画图函数,颜色填充函数等。

3.通过课程设计,加深对结构化程序设计思想的理解,能进行一个系统功能需求分析,并设计合理的模块化结构。

提高程序开发能力。

二、设计内容我设计的是一款简易计算器,界面清楚,操作方便,它能实现以下功能:1.以界面形式给出计算器功能2.简单的四则混合运算(支持小括号、优先级)3.弦、余弦函数计算4.指数、对数的运算三、总体设计简单计算器由五大模块组成,模块设计如下:图1 模块调用图1.主函数 void main()功能:调用各个主要模块,实现简单计算器的整体功能。

2.主界面函数void JieMian()功能:使用有关图形函数模拟出可视化的计算器外观界面,并提供用户输入窗口。

3.四则混合运算函数void SiZeHunHeYunSuan()功能:实现简单的加减乘除混合运算,并支持优先级和带括号的运算。

4.三角运算函数void SanJiaoYunSuan()功能:实现基本的三角函数运算:sin(x)和cos(x)。

5.指对数函数void ZhiDuiShuYunSuan()功能:实现基本的指数和对数运算。

四、详细设计(一)数据结构设计1.用initgraph函数初始化图形界面,用outtextxy函数在图形模式下显示需输出内容,用setcolor和setbkcolor函数设置边框颜色和填充颜色,用circle 和rectangle函数来画计算器界面的按键,用gotoxy将数字送入显示区。

C课程设计简易计算器实验报告

C课程设计简易计算器实验报告

《程序设计基础》(C++)课程设计报告计算器姓名:班级:学号:指导教师:成绩:完成时间:完成地点:计算器1 基本功能描述计算器包含基本的四则运算、开方、倒数、相反数(正负)等运算。

可对输入任意操作数,包括小数和整数及正数和负数进行以上的所有运算。

同时包含清除功能。

2 设计思路如图1是计算器总流程图,输完第一个操作数后,若点击双目运算符,则把m_edit 传递给op1,并传递给变量calculator相对运算符对应的值,输入的第二个操作数传递给op2,点击等号根据calculator的值进行相应运算并输出结果。

若点击的是单目运算符,则直接对其处理得出结果。

若点击清零,则m_edit等于0。

设计思路流程图如下(见下页)。

图1 计算器设计思路总流程图3 软件设计创建步骤打开Microsoft Visual C++ ,选择新建,在弹出框内选择MFC AppWizard[exe]工程,输入工程名Calculator及其所在位置。

将弹出MFC AppWizard-step 1对话框,选择基本对话框,点击完成。

MFC AppWizard建立基于对话窗口的程序框架。

界面设计1、创建控件在对话框上的合适的位置画出编辑框和下压式按钮。

如图2所示。

图2 绘制编辑框在按钮和编辑框属性对话框中输入控件的ID值和标题属性。

如图3所示。

图3 Push Button属性按照上面的操作过程编辑其他按钮和编辑框等对象的属性。

表1 各对象属性对象ID 标题或说明编辑框IDC_EDIT1 结果显示按钮IDC_BUTTON0 0按钮IDC_BUTTON1 1按钮IDC_BUTTON2 2按钮IDC_BUTTON3 3按钮IDC_BUTTON4 4按钮IDC_BUTTON5 5按钮IDC_BUTTON6 6按钮IDC_BUTTON7 7按钮IDC_BUTTON8 8按钮IDC_BUTTON9 9按钮IDC_ BUTTONneg +/-按钮IDC_ BUTTONpot .按钮IDC_ BUTTONadd +按钮IDC_BUTTONsub -按钮IDC_BUTTONmul *按钮IDC_BUTTONdiv /按钮IDC_BUTTONsqrt sqrt按钮IDC_BUTTONCE CE完成后界面如图4所示。

c课程设计计算器报告

c课程设计计算器报告

c 课程设计计算器报告一、教学目标本课程的教学目标是使学生掌握C语言的基本语法,熟练使用C语言进行程序设计。

具体分为三个部分:1.知识目标:学生需要掌握C语言的基本语法,包括数据类型、运算符、控制结构、函数等。

2.技能目标:学生能够使用C语言编写简单的程序,解决实际问题。

3.情感态度价值观目标:培养学生对计算机科学的兴趣,提高学生解决问题的能力。

二、教学内容教学内容主要包括C语言的基本语法和程序设计的基本方法。

具体安排如下:1.第一章:C语言概述,介绍C语言的历史和发展,理解C语言的特点。

2.第二章:数据类型和运算符,学习C语言的基本数据类型和运算符。

3.第三章:控制结构,学习C语言的条件语句和循环语句。

4.第四章:函数,学习C语言的函数定义和调用。

5.第五章:数组和字符串,学习C语言的数组和字符串操作。

6.第六章:指针,学习C语言的指针概念和应用。

7.第七章:结构体和文件,学习C语言的结构体和文件操作。

三、教学方法为了提高学生的学习兴趣和主动性,本课程将采用多种教学方法:1.讲授法:讲解C语言的基本语法和概念。

2.案例分析法:通过分析实际案例,让学生理解C语言的应用。

3.实验法:安排实验课程,让学生动手编写C语言程序。

四、教学资源为了支持教学内容和教学方法的实施,我们将准备以下教学资源:1.教材:《C程序设计语言》2.参考书:《C Primer Plus》、《C和指针》3.多媒体资料:教学PPT、视频教程4.实验设备:计算机、编程环境五、教学评估本课程的评估方式包括平时表现、作业、考试等。

具体安排如下:1.平时表现:占课程总评的30%,包括课堂参与度、提问回答、小组讨论等。

2.作业:占课程总评的30%,包括课后练习、编程任务等。

3.考试:占课程总评的40%,包括期中考试和期末考试。

评估方式要求客观、公正,能够全面反映学生的学习成果。

我们将根据学生的实际情况,及时给予反馈,帮助学生提高。

六、教学安排本课程的教学进度安排如下:1.每周一次课,每次课2小时。

软件基础课程设计报告-C语言(MFC)计算器设计

软件基础课程设计报告-C语言(MFC)计算器设计

软件基础课程设计报告一、需求分析系统目标:设计的计算器至少能够进行简单的四则运算和求倒数求反以及开方运算。

主体功能:程序能实现:加,减,乘,除,开方,倒数等运算功能;还要实现数据的输入,输出,计算,显示及程序退出等功能。

另外还可以实现多种科学计算的功能,如:三角函数的计算,弧度与角度间的转换,对数指数的计算等。

开发环境:操作系统:Windows XP编程环境:Microsoft Visual C++ 6.0二、功能说明(1)包含的功能有:加、减、乘、除运算,开方、求倒数、三角函数、弧度与角度间的转换、对数指数的计算等功能。

(2)计算器上数字0—9为一个控件数组,加、减、乘、除为一个控件数组,其余为单一的控件。

(3)给对话框添加菜单。

(4)计算功能基本上是用系统内部函数。

(5)程序可以能自动判断输入数据的正确性,保证不出现多于一个小数点、以0开头等不正常现象。

(6)“CE”按钮可以清除所有已输入的数据从头计算,“Back”按钮可以实现退位功能。

(7)能够显示时间、日期。

三、详细设计(2)编辑资源(3)效果图四、程序附录计算器Dlg.cpp :#include "stdafx.h"#include "计算器.h"#include "计算器Dlg.h"#include "math.h"#include"FirstDlg.h"#include <windows.h>#define PI 3.14;#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif/////////////////////////////////////////////////////////////////////////////// CAboutDlg dialog used for App Aboutclass CAboutDlg : public CDialog{public:CAboutDlg();// Dialog Data//{{AFX_DATA(CAboutDlg)enum { IDD = IDD_ABOUTBOX };//}}AFX_DATAprotected:virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support //}}AFX_VIRTUAL// Implementationprotected://{{AFX_MSG(CAboutDlg)//}}AFX_MSGDECLARE_MESSAGE_MAP()};CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD){//{{AFX_DATA_INIT(CAboutDlg)//}}AFX_DATA_INIT}void CAboutDlg::DoDataExchange(CDataExchange* pDX){CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CAboutDlg)//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)//{{AFX_MSG_MAP(CAboutDlg)// No message handlers//}}AFX_MSG_MAPEND_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////// CMyDlg dialogCMyDlg::CMyDlg(CWnd* pParent /*=NULL*/): CDialog(CMyDlg::IDD, pParent){//{{AFX_DATA_INIT(CMyDlg)m_result = 0.0;//}}AFX_DATA_INIT// Note that LoadIcon does not require a subsequent DestroyIcon in Win32m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);}void CMyDlg::DoDataExchange(CDataExchange* pDX){CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CMyDlg)DDX_Control(pDX, IDC_EDIT1, m_EDIT);DDX_Text(pDX, IDC_EDIT1, m_result);//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CMyDlg, CDialog)//{{AFX_MSG_MAP(CMyDlg)ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_NUM0, OnNum0)ON_BN_CLICKED(IDC_NUM1, OnNum1)ON_BN_CLICKED(IDC_NUM2, OnNum2)ON_BN_CLICKED(IDC_NUM3, OnNum3)ON_BN_CLICKED(IDC_NUM4, OnNum4)ON_BN_CLICKED(IDC_NUM5, OnNum5)ON_BN_CLICKED(IDC_NUM6, OnNum6)ON_BN_CLICKED(IDC_NUM7, OnNum7)ON_BN_CLICKED(IDC_NUM8, OnNum8)ON_BN_CLICKED(IDC_NUM9, OnNum9)ON_BN_CLICKED(IDC_DOT, OnDot)ON_BN_CLICKED(IDC_CE, OnCe)ON_BN_CLICKED(IDC_jia, Onjia)ON_BN_CLICKED(IDC_jian, Onjian)ON_BN_CLICKED(IDC_cheng, Oncheng)ON_BN_CLICKED(IDC_chu, Onchu)ON_BN_CLICKED(IDC_dengyu, Ondengyu)ON_BN_CLICKED(IDC_daoshu, Ondaoshu)ON_BN_CLICKED(IDC_zhengfu, Onzhengfu)ON_BN_CLICKED(IDC_BACKSPACE, OnBackspace) ON_BN_CLICKED(IDC_Ln, OnLn)ON_BN_CLICKED(IDC_log, Onlog)ON_BN_CLICKED(IDC_RADIO2, OnRadio2)ON_BN_CLICKED(IDC_RADIO1, OnRadio1)ON_BN_CLICKED(IDC_sqrt, Onsqrt)ON_BN_CLICKED(IDC_sin, Onsin)ON_BN_CLICKED(IDC_cos, Oncos)ON_BN_CLICKED(IDC_tan, Ontan)ON_BN_CLICKED(IDC_pingfang, Onpingfang)ON_BN_CLICKED(IDC_lifang, Onlifang)ON_BN_CLICKED(IDC_mi, Onmi)ON_BN_CLICKED(IDC_Exp, OnExp)ON_BN_CLICKED(IDC_10demi, On10demi)ON_BN_CLICKED(IDC_jiecheng, Onjiecheng)ON_COMMAND(ID_TIME, OnTime)ON_COMMAND(ID_DATE, OnDate)ON_COMMAND(ID_EXIT, OnExit)ON_COMMAND(ID_HELP, OnHelp)//}}AFX_MSG_MAPEND_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////// CMyDlg message handlersBOOL CMyDlg::OnInitDialog(){CDialog::OnInitDialog();ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000);CMenu* pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != NULL){CString strAboutMenu;strAboutMenu.LoadString(IDS_ABOUTBOX);if (!strAboutMenu.IsEmpty()){pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);}}// Set the icon for this dialog. The framework does this automatically// when the application's main window is not a dialogSetIcon(m_hIcon, TRUE); // Set big iconSetIcon(m_hIcon, FALSE); // Set small icon// TODO: Add extra initialization hereCheckRadioButton(IDC_RADIO1,IDC_RADIO2,IDC_RADIO1);UpdateData(FALSE);quan2=1;dotflag=0;numflag=0;return TRUE; // return TRUE unless you set the focus to a control}void CMyDlg::OnSysCommand(UINT nID, LPARAM lParam){if ((nID & 0xFFF0) == IDM_ABOUTBOX){CAboutDlg dlgAbout;dlgAbout.DoModal();}else{CDialog::OnSysCommand(nID, lParam);}}// If you add a minimize button to your dialog, you will need the code below// to draw the icon. For MFC applications using the document/view model,// this is automatically done for you by the framework.void CMyDlg::OnPaint(){if (IsIconic()){CPaintDC dc(this); // device context for paintingSendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;// Draw the icondc.DrawIcon(x, y, m_hIcon);}else{CDialog::OnPaint();}}// The system calls this to obtain the cursor to display while the user drags // the minimized window.HCURSOR CMyDlg::OnQueryDragIcon(){return (HCURSOR) m_hIcon;}void CMyDlg::OnNum0(){UpdateData();if(dotflag){quan2*=10;m_result+=0/(double)quan2;}else{if(numflag){m_result=m_result*10+0;}else m_result=0;}numflag=1;UpdateData(FALSE);}void CMyDlg::OnNum1(){UpdateData();if(dotflag){quan2*=10;m_result+=1/(double)quan2;}if(numflag){m_result=m_result*10+1;}else m_result=1;}numflag=1;UpdateData(FALSE);}void CMyDlg::OnNum2(){UpdateData();if(dotflag){quan2*=10;m_result+=2/(double)quan2;}else{if(numflag){m_result=m_result*10+2;}else m_result=2;}numflag=1;UpdateData(FALSE);}void CMyDlg::OnNum3(){UpdateData();if(dotflag){quan2*=10;m_result+=3/(double)quan2;}else{if(numflag){m_result=m_result*10+3;}else m_result=3;}numflag=1;UpdateData(FALSE);{UpdateData();if(dotflag){quan2*=10;m_result+=4/(double)quan2;}else{if(numflag){m_result=m_result*10+4;}else m_result=4;}numflag=1;UpdateData(FALSE);}void CMyDlg::OnNum5(){UpdateData();if(dotflag){quan2*=10;m_result+=5/(double)quan2;}else{if(numflag){m_result=m_result*10+5;}else m_result=5;}numflag=1;UpdateData(FALSE);}void CMyDlg::OnNum6(){UpdateData();if(dotflag){quan2*=10;m_result+=6/(double)quan2;}else{m_result=m_result*10+6;}else m_result=6;}numflag=1;UpdateData(FALSE);}void CMyDlg::OnNum7(){UpdateData();if(dotflag){quan2*=10;m_result+=7/(double)quan2;}else{if(numflag){m_result=m_result*10+7;}else m_result=7;}numflag=1;UpdateData(FALSE);}void CMyDlg::OnNum8(){UpdateData();if(dotflag){quan2*=10;m_result+=8/(double)quan2;}else{if(numflag){m_result=m_result*10+8;}else m_result=8;}numflag=1;UpdateData(FALSE);}UpdateData();if(dotflag){quan2*=10;m_result+=9/(double)quan2;}else{if(numflag){m_result=m_result*10+9;}else m_result=9;}numflag=1;UpdateData(FALSE);}void CMyDlg::OnDot(){UpdateData();dotflag=1;m_result+=0.0;UpdateData(FALSE);}void CMyDlg::OnCe(){UpdateData();m_EDIT.SetSel(0,-1);m_EDIT.ReplaceSel("");m_result=0;num1=0;num2=0;numflag=0;dotflag=0;quan2=1;UpdateData(FALSE);}void CMyDlg::Onjia(){UpdateData();num1=m_result;cal='+';numflag=0;dotflag=0;quan2=1;}UpdateData();num1=m_result;cal='-';numflag=0;dotflag=0;quan2=1;}void CMyDlg::Oncheng(){UpdateData();num1=m_result;cal='*';numflag=0;dotflag=0;quan2=1;}void CMyDlg::Onchu(){UpdateData();num1=m_result;cal='/';numflag=0;dotflag=0;quan2=1;}void CMyDlg::Ondengyu(){UpdateData();num2=m_result;switch(cal){case'+':m_result=num1+num2;break; case'-':m_result=num1-num2;break; case'*':m_result=num1*num2;break; case'/':m_result=num1/num2;break;case'x':m_result=pow(num1,num2);break; }numflag=0;dotflag=0;quan2=1;UpdateData(FALSE);}void CMyDlg::Ondaoshu(){UpdateData();m_result=1/m_result;numflag=0;UpdateData(FALSE);}void CMyDlg::Onzhengfu(){UpdateData();m_result=0-m_result;UpdateData(FALSE);}void CMyDlg::OnBackspace(){UpdateData();static int dotquan=quan2;long temp;if(dotflag&&numflag){if(dotquan>=10){temp=(long)(m_result*dotquan);m_result=(double)(temp/10);dotquan/=10;m_result=m_result/dotquan;}}else{//UpdateData();if(numflag&&m_result){m_result=(long)m_result/10;}}UpdateData(FALSE);}void CMyDlg::OnLn(){UpdateData();m_result=log(m_result);numflag=0;dotflag=0;quan2=1;UpdateData(FALSE);}void CMyDlg::Onlog(){UpdateData();m_result=log(m_result)/log(10);quan2=1;UpdateData(FALSE);}void CMyDlg::OnRadio2(){m_IsDegree=1;i=1;UpdateData(TRUE);}void CMyDlg::OnRadio1(){m_IsDegree=0;i=(2*3.1415926)/360;UpdateData(FALSE);}void CMyDlg::Onsqrt(){UpdateData();if(m_result<0){MessageBox("输入无效!");return;}m_result = sqrt(m_result); UpdateData(FALSE);}void CMyDlg::Onsin(){m_result=sin(m_result*i); UpdateData(FALSE);}void CMyDlg::Oncos(){m_result=cos(m_result*i); UpdateData(FALSE);}void CMyDlg::Ontan(){m_result=tan(m_result*i); UpdateData(FALSE);}void CMyDlg::Onpingfang() {UpdateData();m_result=m_result*m_result; UpdateData(FALSE);void CMyDlg::Onlifang(){UpdateData();m_result=m_result*m_result*m_result; UpdateData(FALSE);}void CMyDlg::Onmi(){UpdateData();num1=m_result;cal='x';numflag=0;dotflag=0;quan2=1;}void CMyDlg::OnExp(){m_result=exp(m_result); UpdateData(FALSE);}void CMyDlg::On10demi(){UpdateData();m_result=pow(10,m_result); UpdateData(FALSE);}void CMyDlg::Onjiecheng(){if(m_result<0){MessageBox("输入数据无效!");return;}int q;for(q=(int)m_result-1;q>=1;q--)m_result*=q;UpdateData(FALSE);}void CMyDlg::OnDate(){CFirstDlg dlg;dlg.DoModal();}void CMyDlg::OnTime(){UpdateData();TIME=1;tNow=CTime::GetCurrentTime();if(TIME){m_EDIT.SetSel(0,-1);m_EDIT.ReplaceSel("");CString sNow=tNow.Format("%I:%M:%S");m_EDIT.SetSel(0,-1);m_EDIT.ReplaceSel(sNow);}else{CString sNow=tNow.Format("%I:%M:%S");m_EDIT.SetSel(0,-1);m_EDIT.ReplaceSel(sNow);}}void CMyDlg::OnExit(){OnOK();}void CMyDlg::OnHelp(){MessageBox("班级:09通信一班组员:陈熙竹叶文晖周方"); }。

计算器c语言报告

计算器c语言报告

题目一:计算器1.实验目的和意义:利用c语言编写简易计算器,使我们更加熟练的掌握c语言及软件开发的基本步骤。

该课题设计对学生来说 是对这一学期有关c语言学习的一个评估 是将c语言应用于生活中 提高学生的动手能力。

该课题有利于让学生将课本上学习的零散的知识融会贯通、综合运用、强化知识体2.实验内容:了解用户需求,小组讨论算法,编写程序,调试程序,漏洞修复及报告设计3.小组成员分工:小组讨论算法:全体成员编写程序:樊义,高杰林调试程序:曹仲生漏洞修复及报告设计:陈伟杰4.设计要点:字符串内提取数字,加减乘除优先级,能够识别简单的错误算式5.源程序://不包含括号,纠错能力不够,#include "stdio.h"double z(char c[100],int *i){int w=0,d=0;double s=0;while(c[*i]>='0'&&c[*i]<='9') {w++;*i=*i+1;}if(c[*i]=='.'){*i=*i+1;while(c[*i]>='0'&&c[*i]<='9'){w++;d++;*i=*i+1;}}while(w>0){int t=1;for(int tem=w;tem>1;tem--)t=t*10;if(w>d&&d>0)s=s+t*(c[*i-w-1]-'0');elses=s+t*(c[*i-w]-'0');w--;}//printf("整数型num=%3.5f\t",s);if(d>0)for(int temp=0;temp<d;temp++){s=s/10.0;printf("小数型num=%3.5f\t",s);} //printf("函数内%d\t",*i);//printf("小数型num=%3.5f\t",s);return s;}void main(){start:char c[100],a[100];double s[100],num;int i=0,j=0,k=0;printf("输入需要运算的式子(仅加减乘除,且不包含括号,负数,不需输入等号):");reput: scanf("%s",c);i=0,j=0,k=0;int *p=&i;done: switch(c[i]){case '0':case '1':case '2':case '3':case '4':case '5':case '6':case '7':case '8':case '9':{num=z(c,p);goto done;}case '*':{i++;num=num*z(c,p);goto done;}case '/':{i++;num=num/z(c,p);goto done;}case'+':{s[j]=num;a[k]=c[i];j++;i++,k++;if(c[i]>='0'&&c[i]<='9')goto done;else {printf("输入错误!请重输:");num=0;goto reput;}} case'-':{s[j]=num;a[k]=c[i];j++;i++,k++;if(c[i]>='0'&&c[i]<='9')goto done;else {printf("输入错误!请重输:");num=0;goto reput;}} case '\0':if(i!=0){s[j]=num;a[k]=c[i];break;}else printf("输入错误!请重输:");num=0;goto reput;default:printf("输入错误!请重输:");num=0;goto reput;}//for(int n=0;n<j;n++)// printf("%f%c",s[n],a[n]);//printf("%f\n",s[j]);if(a[k]=='\0'){j=0;k=0;num=s[0];//printf("已执行!");add: switch(a[k]){case '+':{num=num+s[++j];k++;goto add;}case '-':{num=num-s[++j];k++;goto add;}default:break;}}printf("式子的结果为:%f\n",num);printf("是否继续计算<y/n>.......");char tmp;scanf("%s",&tmp);if(tmp=='y')goto start;}6.小结:。

C语言课程设计报告(多项式简单的计算器)

C语言课程设计报告(多项式简单的计算器)

沈阳航空航天大学课程设计报告课程设计名称:C 语言课程设计课程设计题目:多项式简单的计算器院(系):计算机学院专业:计算机科学与技术班级:14010106学号:2011040101258 姓名:崔雨濛指导教师:孙恩岩完成日期:2012年3月16日第1章概要设计 (2)1.1题目的内容与要求 (2)1.2总体结构 (2)第2章详细设计 (3)2.1主模块 (3)2.2多项式建立模块 (4)2.3计算模块 (5)2.4显示模块 (6)第3章调试分析 (7)3.1无法完整输出多项式 (7)3.2多项式中出现多余的项目 (7)3.3用户无法自行选择结束运行程序 (7)第4章使用说明与执行结果 (8)参考文献 (10)附录(程序清单) (11)第1章概要设计1.1题目的内容与要求课程设计的内容是设计一个简单的单词替换程序,可以替换文本文件中指定的单词。

要求:(1)输入多项式各项并建立多项式。

(2)输出多项式。

(3)两个多项式相加减,并输出结果多项式。

(4)采用VC环境进行调试运行。

1・2总体结构本程序主要分为四个模块(功能模块图见图1.1):主模块,多项式建立模块, 计算模块,显示模块。

主模块:输入多项式各项,建立多项式,输出多项式。

多项式建立模块:将输入的多项式各项以链表形式建立起来。

计算模块:比较两个多项式的系数和指数,合并同类项。

显示模块:显示输入的多项式及结果多项式。

图1.1功能模块图第2章详细设计2.1主模块控制整个程序的运行,控制菜单操作,通过主函数模块分别调用各个模块, 实现各项功能,流程如图2.1所示。

图2.1主模块流程图2.2多项式建立模块注释:根据多项式的项数循环存入结构体中2.3计算模块比较两个多项式的系数和指数,合并同类项。

流程图如图 2.3所示图2.3计算模块流程图注释:具体比较方法如下:(1)qa->expn < qb->expnqa所指节点应为结果多项式中的结点,qa后移:qa=qa->next; qb不动。

C语言程序设计--交互式函数计算器设计报告

C语言程序设计--交互式函数计算器设计报告

程序设计小学期实验报告题目三交互式函数计算器课题名称:交互式函数计算器一.课程需求及现实意义1.课程现实意义在学习生活中,常常会遇到一些复杂的数值运算,这时候,为了保证计算的准确,我们就必须使用计算器。

所以,开发计算器程序,可以用于自己的学习和工作,更重要的是增强自己独立编程能力和工作能力。

2.课程需求1)程序可以将运算式以完整的字符串形式输入:如:1+5×6-7/82)程序能对输入的运算表达式做有效分析,转换成便于计算的二叉树或堆栈的存储形式;如1+5×6-7/8的二叉树存储形式:也可以使用逆波兰式完成。

3)程序完成运算式计算后,将计算结果输出;4)通过键盘或鼠标输入数字;5)可以进行+、-、*、/、开方、清零、backspace的功能,可以对小数进行运算,还可以添加扩弧运算功能。

6)界面编程:Turbo C或VC任选3.设计目标:除了以上的基本目标,还包括:1)友好的操作界面2)正弦、余弦、正切、阶乘、倒数、平方等常用函数计算功能3)简单方便易懂的操作和输出4)强大的报错功能二. 设计思路和总体设计框架1.设计思路本程序通过MFC对话框实现交互功能,由两个EDIT编辑框以及29个BUTTON按键组成基本界面,通过用鼠标单击按钮调用函数来完成计算。

为实现算符优先算法,采用中缀表达式。

可以使用两个工作栈。

一个称作OPTR,用以寄存运算符;另一个称作OPND,用以寄存操作数或运算结果。

算法的基本思想是:1)首先置操作符栈为空栈,表达式起始符“#”为运算符栈的栈底元素;2)依次读入表达式中的每个字符,若是操作数则进OPND栈,若是操作数则进OPND栈,若是运算符则和OPTR栈的栈顶运算符比较优先权后作相应操作,直至整个表达式求值完毕(即OPTR栈的栈顶元素和当前读入的字符均为“#”)。

2.总体设计框架1)外部框架计算结束后可以选择清零,退出或者继续其他计算。

2)内部计算函数结构●头文件#include“stack”包括了堆栈所需的包括压入,弹出等函数,可以直接应用,故没有进行堆栈函数的编写。

c语言简易计算器报告

c语言简易计算器报告

C语言简易计算器报告介绍本文将介绍如何使用C语言编写一个简易的计算器。

计算器可以进行基本的四则运算,包括加法、减法、乘法和除法。

设计思路1.首先,我们需要定义计算器的操作符和操作数。

操作符可以是+, -, *,/,操作数是两个整数或浮点数。

2.接下来,我们需要编写一个函数来接收用户输入的操作符和操作数,并进行相应的计算。

我们可以将这个函数命名为calculate。

3.在calculate函数中,我们根据用户输入的操作符,执行相应的计算操作,并返回计算结果。

如果用户输入的操作符不合法,我们将返回一个错误提示。

4.最后,我们在主函数中调用calculate函数,并显示计算结果。

代码实现下面是实现一个简易计算器的C语言代码:#include <stdio.h>float calculate(char operator, float operand1, float operand2) { float result;switch (operator) {case'+':result = operand1 + operand2;break;case'-':result = operand1 - operand2;break;case'*':result = operand1 * operand2;break;case'/':if (operand2 != 0) {result = operand1 / operand2;}else {printf("错误:除数不能为0\n");return-1; // 返回错误代码}break;default:printf("错误:无效的操作符\n");return-1; // 返回错误代码}return result;}int main() {char operator;float operand1, operand2;float result;printf("请输入操作符和操作数(格式为:操作数1 操作符操作数2):");scanf("%f %c %f", &operand1, &operator, &operand2);result = calculate(operator, operand1, operand2);if (result != -1) {printf("计算结果为:%f\n", result);}return0;}使用说明1.用户需要按照指定格式输入操作数和操作符,例如:2 + 3。

计算机程序设计(C语言)课程设计报告

计算机程序设计(C语言)课程设计报告

计算机程序设计(C语言)课程设计报告计算机程序设计(C语言)课程设计报告一、引言计算机程序设计是现代信息技术领域中的核心课程之一,它涉及到计算机软件开发的方方面面。

本报告旨在总结我的计算机程序设计(C语言)课程设计经验,并对学习过程中实践的项目进行详细的分析和展示。

二、背景介绍在本课程中,我们的任务是设计和实现一个简单的学生管理系统。

该学生管理系统能够记录学生的基本信息,并提供相应的操作功能,如添加学生、删除学生、查询学生信息等。

通过课程设计,我学习到了软件开发的基本流程和方法,提高了我的代码编写和问题解决能力。

三、需求分析为了更好地完成学生管理系统的设计与实现,我们首先进行了需求分析。

根据老师和同学们的要求,系统需要具备以下主要功能:1. 添加学生信息:包括学生姓名、学号、性别、年龄等基本信息。

2. 删除学生信息:通过学号或姓名进行学生信息的删除。

3. 查询学生信息:可以通过学号或姓名进行学生信息的查询,并显示相关结果。

4. 修改学生信息:可以对学生的基本信息进行修改,如姓名、性别、年龄等。

5. 显示所有学生信息:可以显示系统中所有学生的基本信息。

6. 退出系统:提供用户退出系统的选项。

四、系统设计与实现1. 界面设计为了使用户能够直观地操作学生管理系统,我们采用了简洁明了的图形用户界面。

在命令行窗口中,通过显示菜单供用户选择相应功能,用户可以通过键入数字选择所需操作。

2. 数据结构设计为了存储学生的信息,我们设计了学生结构体,并使用链表来管理学生信息。

学生结构体包括姓名、学号、性别、年龄等成员变量,通过链表的方式将学生结构体连接起来,方便对学生信息的增删改查操作。

3. 功能实现根据需求分析,我们逐一实现了系统的各项功能。

通过在代码中定义相应的函数,并在主函数中调用这些函数,我们成功完成了学生管理系统的设计与实现。

五、项目总结通过本次计算机程序设计(C语言)课程设计,我不仅学习到了C 语言的基本语法和编程技巧,还深入理解了软件开发的过程。

C语言课程设计报告【简易计算器设计】

C语言课程设计报告【简易计算器设计】
1通过本项课程设计,可以培养独立思考、 综合运用所学有关相应知识的能力,能更好的巩固《C语言程序设计》课程学习的内容,掌握 工程软件设计的基本方法,强化上机动手编程能力,闯过理论与实践相结合的难关!更加了解了c语言的好处和其可用性!同时增加了同学之间的团队合作精神!更加也体会到以后在工作中团队合作的重要性和必要性!
9对于显示函数,先判断当前进制数,然后再将需要显示的数字转换为当前进制数再显示。如果位数超过40,则取前几位,采用科学计数法显示。
10未能实现部分:小数部分。由于时间关系,未能实现复制粘贴数字功能。
五、 流程图
六、运行过程
打开Calc.exe,模拟Windows下的计算器功能。
1基本功能为输入数字,再输入运算符,然后输入运算符对应数字,按等号。
#define key_sym 1
struct high{
int num[MAXN];
};
HIGH ans, actNum, nowShow;
char nowSym = 'N', lastSym = 'N';
bool _isincMed = true, _lastKey = key_num;
4在按键操作中,先判断用户按的是数字键还是功能键。功能键分运算符键、进制转换键以及清空键。然后记录下来用户当前的按键,然后对上次按的功能键键进行运算。如按了1、+、5,再按任何功能键即对1+5进行运算。如果按的是进制转换键,就记录当前进制,则在以后每次操作中,都将显示结果转换为当前进制再显示。
如:以下是按5以及*号时的函数代码
3对于高精度乘法,用第二个数的各位乘以第一个数的各位。然后错位相加,相当于小学生摆竖式。最后将各位相乘的结果相加,逐位进位,判断符号、返回答案即可。

c语言版计算器实验报告

c语言版计算器实验报告
2、当输入为错误的格式是,显示的是错误的结果,如(5)中的运算结果就是错误的。
3、若某个数字是负数,如果直接输入,结果是错误的,但如果变为零减去该数字的绝对值的话或者把两数的顺序更改一下,显示的是正确的结果,如(6)、(7)、(9)、(10)、(11)做的结果。
4、有时候会出现一些不精确的显示结果,如(4)中显示多的是0.000002,这是由于在C语言的定义时,系统所产生的结果,与算法无关。
else if(b=='#') return('=');
else return('<');
}
}
}
float Operate(float a,char theta,float b)//计算两个数的结果的函数
{
float z;
switch(theta){
case '+':z=a+b;break;
case '-':z=a-b;break;
fe=float(e);
for(i=1;i<=j;i++)
fe=fe/10;
sum=sum+fe;
j--;
}
while(k!=0)
{
Pop1(OP,e);
for(i=0;i<n-k;i++)
e=e*10;
sum=sum+e;
k--;
}
return(sum);
}
void CMyDlg::OnButton12()
{
UpdateData(TRUE);
m_ss=m_ss+'#';
SqStack OPTR;//字符型栈的定义

C语言课程设计--计算器(图形界面)

C语言课程设计--计算器(图形界面)

C语言课程设计--计算器(图形界面)扬州大学C语言课程设计报告题目一个简易计算器的设计与实现班级学号姓名指导教师成绩老师评语:第 2 页共 14 页第 3 页共 14 页一、系统调试…………………………………………8,9,10,11二、课程设计体会总结………………………………8,9,10,111 课程设计目的(1).课程设计是一项综合性实践环节,是对平时实验的一个补充,课程设计内容包括课程的主要理论知识,但由于C语言对初学者较难掌握,因而对一个完整的C语言程序不适合平时实验。

通过课程设计可以达到综合设计C语言程序的目的。

(2)通过本课程设计,可以培养独立思考,综合运用所学有关相应知识的能力,能更好地使用C语言的知识,更好地了解C语言的好处和其可用性!掌握基本的程序设计过程和技巧,掌握基本的分析问题和利用计算机求解问题的能力,具备初步的高级程序设计能力。

为后续各门计算机课程的学习和毕业设计打下坚实基础!(3)通过本程序训练程序设计的基本技能,掌握字符串的表示方法和字符串函数的功能、自学掌握四则运算的算法及WIN-TC的图形操作的基本知识、键盘上特殊键的获取及图形方式下光标的显示。

2 课程设计内容目的:本课程的课程设计要求学生模拟实现一个简单计算器,要求(1)能够实现四则运算,并能支持优先级运算。

(2)三角与反三角运算:如sinx,cosx等。

(3)指数对数运算:如log(x),lnx,e的x次方等。

(4)其他运算:如X!,x 的累加等。

(4)不允许调用库函数,使用自行开发的程序实现常用函数运算。

(5)进一步考虑计算器外观设计,用可视化界面给出计算器外观、功能按键及输入界面。

使用说明:执行加法运算,'—'表示执行减法运算,表示执行乘法运算,'/'表第 4 页共 14 页示除法运算.‘Q’表示退出计算器‘C’表示清零,’=’表示得出结果'^'表示执行x的y次方,'e'表示执行e的x次方操作,'&'表示执行累加操作.,你可以可以用键盘上的上下左右键对光标进行移动,当光标移动到计算器按键上时,按ENTER即可执行该键的操作!最后按“=”则可得出结果。

C语言计算器程序设计报告

C语言计算器程序设计报告

C语言集中上机实验报告一、需求分析(1)制作一个计算器,能够计算四则混合运算以及乘方和开方,并显示出正确的结果。

(2)程序能根据运算符的高低进行运算(开放符号置左置右不影响正常运算)(3)可以输入括号二、设计思路(1)运用栈以及结构体来实现,将数字与运算符分别放在结构体与栈里面,将栈以及结构体里的字符数值一一匹配计算,将得出的结果保存到另一个栈里(zhan3)。

(2)开始,对所输入的字符串进行转化,把运算符存放在zhan2里面,把数值存放到data结构体里面,然后进行运算和操作。

(3)运用循环来实现无限输入,用数组nibo来跟踪整个过程,每次运算后将值置空,若检测到空,计算得出结果,退出输入q。

三、流程图四、主程序段#include<stdio.h>#include<math.h>#include<malloc.h>double jisuan(char a[]){int i=1,j,k,m,cnt=0,t1=0,t2=0,t3=0;char nibo[50],zhan2[50];//zhan2存放的是运算符double x,n,l,z=0,zhan3[50];//暂存结果typedef struct{double d1;int d2;}dd;typedef struct{dd data[50];int top;}zhan1;zhan1 *shu;shu=(zhan1 *)malloc(sizeof(zhan1));shu->top=0;while(a[i]!='\0'){if(a[i]>='0'&&a[i]<='9'){z=0;j=i+1;while(a[j]>='0'&&a[j]<='9'){j++;}j--;for(k=i;k<=j;k++){z=z*10+a[k]-'0';}j=j+1;//j跳到数字后一位x=z;if(a[j]=='.')//如果是小数的话就把小数和整数一起加上{l=1;i=j+1;j=i+1;while(a[j]>='0'&&a[j]<='9'){j++;}j--;for(k=i;k<=j;k++){n=pow(0.1,l);l=l+1;x=x+n*(a[k]-'0');}i=j+1;}else i=j;shu->data[++shu->top].d1=x;shu->data[shu->top].d2=++cnt;nibo[++t1]='0'+shu->data[shu->top].d2;nibo[t1+1]='\0';}//如果是数字那么就保存到结构体里的dd数组里的第二个成员里else if(a[i]=='('){zhan2[++t2]=a[i];i++;}else if(a[i]==')'){j=t2;while(zhan2[j]!='('){nibo[++t1]=zhan2[j];nibo[t1+1]='\0';j--;}t2=j-1;i++;}else if(a[i]=='+'){while(t2>0&&zhan2[t2]!='('){nibo[++t1]=zhan2[t2];nibo[t1+1]='\0';t2--;}zhan2[++t2]=a[i];i++;}else if(a[i]=='-'){if(a[i-1]=='$'){a[0]='0';i=0;}else if(a[i-1]=='('){a[i-1]='0';a[i-2]='(';i=i-2;t2--;}else{while(t2>0&&zhan2[t2]!='('){nibo[++t1]=zhan2[t2];nibo[t1+1]='\0';t2--;}zhan2[++t2]=a[i];i++;}}else if(a[i]=='*'||a[i]=='/'){while(zhan2[t2]=='*'||zhan2[t2]=='/'||zhan2[t2]=='^'||zhan2[t2]=='#'){nibo[++t1]=zhan2[t2];nibo[t1+1]='\0';t2--;}zhan2[++t2]=a[i];i++;}else if(a[i]=='^'||a[i]=='#'){while(zhan2[t2]=='^'||zhan2[t2]=='#'){nibo[++t1]=zhan2[t2];nibo[t1+1]='\0';t2--;}zhan2[++t2]=a[i];i++;}}//把输出的多项式中的数字字符先转换成数值型存入结构体里,然后把加减乘除等的字符存入到zhan2里--这是转化过程并存储入站//下面就是开始计算结果相当于出站的过程把dd结构体里的数值取出和zhan2的字符来进行运算,当前结果存储到zhan3里,就用nibo数组来判断是否计算完毕while(t2>0){nibo[++t1]=zhan2[t2];nibo[t1+1]='\0';t2--;}j=1;t3=0;while(j<=t1){if(nibo[j]>='0'&&nibo[j]!='^'&&nibo[j]!='#')//{for(i=1;i<=shu->top;i++){if((int)(nibo[j]-'0')==shu->data[i].d2){m=i;break;}}zhan3[++t3]=shu->data[m].d1;}else if(nibo[j]=='+'){zhan3[t3-1]=zhan3[t3-1]+zhan3[t3];t3--;}else if(nibo[j]=='-'){zhan3[t3-1]=zhan3[t3-1]-zhan3[t3];t3--;}else if(nibo[j]=='*'){zhan3[t3-1]=zhan3[t3-1]*zhan3[t3];t3--;}else if(nibo[j]=='/'){zhan3[t3-1]=zhan3[t3-1]/zhan3[t3];t3--;}else if(nibo[j]=='^'){zhan3[t3-1]=pow(zhan3[t3-1],zhan3[t3]);t3--;}else if(nibo[j]=='#'){zhan3[t3]=sqrt(zhan3[t3]);}j++;}return zhan3[t3];}void main()//{for(;;){char x,a[50];double jieguo;int i=0;a[0]='$';printf("#表示开方,^表示乘方(支持负数)\n");printf("请输入表达式无需输入= 号直接回车可输出答案退出请输入q \n\n");scanf("%c",&x);if(x=='q') break;while(x!='\n'){a[++i]=x;scanf("%c",&x);}a[i+1]='\0';jieguo=jisuan(a);printf("\n");printf("结果为:%lf",jieguo);printf("\n\n\n");printf("退出请输入q 继续请直接输入\n\n"); }}}五、调试分析六、调试说明以及分析:1、当输入为正确的格式时,能算出正确的结果,其中包括:小数、整数以及个位以上的数字,且运算符包括:加、减、乘、除运算,还有就是可以加括号等。

简单计算器C语言课程设计报告书

简单计算器C语言课程设计报告书

C 语言课程设计报告
系:
级:
号:
名:
院 班 学 姓
、课程设计目的
、课程设计的基本过程
课程设计的基本过程包括 5 个步骤,即功能需求,总体
设计,详细设计,程序测试,结论。

每个步骤都有其特定的 任务。

2.1 【功能需求】
功能概述:该软件为用户提供一个在 windows 系统上
运 行的简单计算器,能进行简单的加、减、乘、除四则运算和
些常用特殊运算,包括余弦运算、正弦运算、正切运算、 绝对值、平方根运算、以 e 为底的指数运算、以 10 为底的 对数运算。

2.2 【总体设计】
1. 巩固和加深 C 语言课程的基本知识的理解和掌握
2. 掌握 C 语言编程和程序调试的基本技能
3. 利用 C 语言进行基本的软件设计
4. 掌握书写程序设计说明文档的能力
5. 提高运用 C 语言解决实际问题的能力。

c 计算器实验报告

c 计算器实验报告

c 计算器实验报告c 计算器实验报告一、引言计算器是一种广泛应用于各个领域的工具,它能够进行各种数学运算,简化了人们的计算工作。

在本次实验中,我们将使用C语言编写一个简单的计算器程序,通过实践来加深对C语言的理解,并且掌握计算器的基本原理和实现方法。

二、实验目的1. 掌握C语言的基本语法和编程技巧;2. 理解计算器的基本原理和实现方法;3. 实现基本的四则运算功能;4. 实现一些常用的数学函数。

三、实验步骤1. 设计计算器界面在这一步骤中,我们需要设计一个简洁明了的计算器界面,包括数字键、运算符键和等号键等。

我们可以使用C语言的图形库或者控制台窗口来实现界面的设计。

2. 实现基本的四则运算功能在这一步骤中,我们需要编写C语言代码,实现计算器的基本四则运算功能。

我们可以使用C语言提供的算术运算符来进行加减乘除的计算,并且通过用户输入来获取操作数和运算符。

3. 实现常用的数学函数在这一步骤中,我们可以使用C语言提供的数学库函数来实现一些常用的数学函数,比如求平方根、求幂等。

通过调用这些函数,我们可以使计算器具备更多的功能。

4. 进行测试和调试在这一步骤中,我们需要对编写的计算器程序进行测试和调试,确保其能够正常运行,并且能够正确地进行各种运算和计算。

四、实验结果经过测试和调试,我们的计算器程序能够正常运行,并且能够正确地进行各种运算和计算。

它具备基本的四则运算功能,并且支持一些常用的数学函数。

我们可以通过输入数字和运算符来进行计算,并且可以得到正确的结果。

五、实验总结通过这次实验,我们深入理解了C语言的基本语法和编程技巧,并且掌握了计算器的基本原理和实现方法。

我们通过编写代码实现了一个简单的计算器程序,并且通过测试和调试确保其能够正常运行。

这次实验不仅加深了我们对C语言的理解,还提高了我们的编程能力和问题解决能力。

六、实验感想通过这次实验,我对C语言的学习有了更深入的了解。

在编写计算器程序的过程中,我不仅学会了如何使用C语言的基本语法和编程技巧,还提高了自己的逻辑思维能力和问题解决能力。

C语言课程设计报告书____简易计算器[1]

C语言课程设计报告书____简易计算器[1]

C语言课程设计报告书课程名称:C语言课程设计课题名称:简易计算器班级:学号:姓名:指导老师:成绩:2008年6月欢迎老师指导一、课程设计目的1.通过一个学期的学习,我认为要学好C语言程序这门课程,不仅要认真阅读课本知识,更重要的是要通过上机实践才能增强和巩固我的知识。

特别是作为本科生,更要注重实践这一环节,只有这样我们才能成为合格的计算机人材。

通过这次课程设计,进一步巩固所学的语句,如语句嵌套等;加深对循环,分支等结构的运用;最后还可以熟悉四则运算﹑三角函数等经典算法。

2.通过此次课程设计扩展自己的知识面,课本上的东西是远远不够的,可以通过去图书馆查资料,上网找资料等手段学到一些新知识,比如画图函数,颜色填充函数等。

3.通过课程设计,加深对结构化程序设计思想的理解,能进行一个系统功能需求分析,并设计合理的模块化结构。

提高程序开发能力。

二、设计内容我设计的是一款简易计算器,界面清楚,操作方便,它能实现以下功能:1.以界面形式给出计算器功能2.简单的四则混合运算(支持小括号、优先级)3.弦、余弦函数计算4.指数、对数的运算三、总体设计简单计算器由五大模块组成,模块设计如下:图1 模块调用图1.主函数 void main()功能:调用各个主要模块,实现简单计算器的整体功能。

2.主界面函数void JieMian()功能:使用有关图形函数模拟出可视化的计算器外观界面,并提供用户输入窗口。

3.四则混合运算函数void SiZeHunHeYunSuan()功能:实现简单的加减乘除混合运算,并支持优先级和带括号的运算。

4.三角运算函数void SanJiaoYunSuan()功能:实现基本的三角函数运算:sin(x)和cos(x)。

5.指对数函数void ZhiDuiShuYunSuan()功能:实现基本的指数和对数运算。

四、详细设计(一)数据结构设计1.用initgraph函数初始化图形界面,用outtextxy函数在图形模式下显示需输出内容,用setcolor和setbkcolor函数设置边框颜色和填充颜色,用circle 和rectangle函数来画计算器界面的按键,用gotoxy将数字送入显示区。

C语言课程设计(计算器)

C语言课程设计(计算器)

目录1 前言 (2)2 需求分析 (2)2.1要求 (2)2.2任务 (2)2.3运行环境 (2)2.4开发工具 (2)3 概要设计 (2)3.1系统流程图 (3)3.2查询函数流程图 (4)4 详细设计 (8)4.1分析和设计 (8)4.2具体代码实现 (9)5 课程设计总结 (25)参考文献 (25)致谢 (26)1 前言编写一个程序来实现算术计算器。

通过结构体数组和共用体数组来存放输入的每一数字或运算符号的记录(包括1.2.3等数字, +、--、*、等运算符号), 然后将其信息存入文件中。

输入一个算术计算式, 就在屏幕上显示结果。

2 需求分析2.1要求(1)用C语言实现程序设计;(2)利用结构体、共用体进行相关信息处理;(3)画出查询模块的流程图;(4)系统的各个功能模块要求用函数的形式实现;(5)界面友好(良好的人机互交), 程序要有注释。

2.2任务(1)定义一个结构体类型数组, 输入0~9及+、--、*等符号的信息, 将其信息存入文件中;(2)输入简单的加减乘除算术计算式, 并在屏幕上显示计算结果;(3)画出部分模块的流程图;(4)编写代码;(5)程序分析与调试。

2.3运行环境(1)WINDOWS2000/XP系统(2)TurboC2.0编译环境2.4开发工具C语言3 概要设计3.1系统流程图如图3.1所示。

图3.1系统流程图3.2查询函数流程图4 详细设计4.1分析和设计在程序的开头部分定义了结构替类型, 用来存放按钮信息struct s_button /*按键的结构体*/{int sx,sy,ex,ey;char *head;int press;}button[17]; /*图表按键数*/char far *vid_mem;static int tx=32,ty=3; /*静态变量*/float v1=0.0,v2=0.0;用输入函数input()来输入按键放在s_button数组中。

c语言程序设计课程计算器设计报告

c语言程序设计课程计算器设计报告

课程设计说明书题目计算器程序设计 _________ 起讫日期2006 年7月3日至2006年8月6日所在院系 ____________ 软件学院_______________专业机械+软件班级04-2学生姓名偶偶哦学号 ____________________指导教师___________________________________2006年8 月摘要当今社会是信息社会,科技经济高速发展的社会!为了更方便人们的工作生活和加速人们处理信息的速度,计算器应运而生。

由于它体积小巧,携带方便,价格便宜,构造简单等诸多的优点成为人们生活中的必备品!随着科技的发展计算器的种类变得更多,功能变得更强大,体积变得更小!电脑的出现改变人们的生活习惯,很多事情都可以电脑来完成!电脑的更大一个优点就是可以通过软件的应用无限的延伸电脑功能的外延!下面我们将用我们学习的 c 语言编写一个简易的计算器程序!实现简单的初步的计算功能!本程序的编写基础是Tubro 汉化版, 它在tubro c 的原有基础上实现了多汉字的支持方便了我们的使用。

生成的程序可移植性强兼容性好稳定!现在只实现了加、减、乘、除、求幕、求模,求平方根,求Sin,求Cos,求LoglO,以及一个时钟原代码。

这个系统是基于软件发展的生命周期来研制的,它可以直接输入数学表达式,不需要任何转换,就可以直接输出数学四则运算的结果。

但是,每次只能运算一个表达式。

不能运算多个表达式。

在程序里面在添加一组选择函数即可。

本论文主要介绍了本课题的开发背景,开发的过程和所要完成的功能。

重点的说明了系统设计思想,设计的步骤、难点技术和解决方案。

关键词:C语言Tubro c 汉化版计算器时钟目录第一章综述 (1)1. 1课题的现实意义 (1)1. 2软件环境 (1)1. 3硬件环境 (1)第二章系统设计流程图 (2)2. 1 系统流程图 (2)2. 2 主要功能表 (2)第三章系统分析和设计 (3)3. 1 图形的绘制和输出 (3)3. 2 文本的输出显示 (3)3. 3计算函数的调用 (4)3. 4 程序的运行和退出 (5)第四章系统测试 (6)4. 1 系统测试 (6)4. 2 调试 (6)4. 3错误原因分析一 (6)4. 4错误原因分析二 (6)第五章用户使用说明书 (8)5. 1 运行Turbo C程序进入计算器界面 (8)5. 2 计算器的使用 (9)5. 3 退出程序 (9)第六章工作总结 (10)参考文献 (11)附录: 源代码第一章综述课题的现实意义现实学习生活中,常会遇到一些数目较大数据繁杂的数值运算,徒手运算起来很困难,这时候我们就必须用到计算器,所以便着手开发了这个计算器程序,以便用于自己的学习工作。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程设计说明书题目计算器程序设计起讫日期2006 年7月3日至2006 年8月6日所在院系软件学院专业机械+软件班级04-2学生姓名偶偶哦学号指导教师2006年8 月日摘要当今社会是信息社会,科技经济高速发展的社会!为了更方便人们的工作生活和加速人们处理信息的速度,计算器应运而生。

由于它体积小巧,携带方便,价格便宜,构造简单等诸多的优点成为人们生活中的必备品!随着科技的发展计算器的种类变得更多,功能变得更强大,体积变得更小!电脑的出现改变人们的生活习惯,很多事情都可以电脑来完成!电脑的更大一个优点就是可以通过软件的应用无限的延伸电脑功能的外延!下面我们将用我们学习的c语言编写一个简易的计算器程序!实现简单的初步的计算功能!本程序的编写基础是Tubro C2.0汉化版,它在tubro c的原有基础上实现了多汉字的支持方便了我们的使用。

生成的程序可移植性强兼容性好稳定!现在只实现了加、减、乘、除、求幂、求模,求平方根,求Sin,求Cos,求Log10,以及一个时钟原代码。

这个系统是基于软件发展的生命周期来研制的,它可以直接输入数学表达式,不需要任何转换,就可以直接输出数学四则运算的结果。

但是,每次只能运算一个表达式。

不能运算多个表达式。

在程序里面在添加一组选择函数即可。

本论文主要介绍了本课题的开发背景,开发的过程和所要完成的功能。

重点的说明了系统设计思想,设计的步骤、难点技术和解决方案。

关键词:C语言Tubro c 2.0汉化版计算器时钟目录第一章综述 (1)1.1 课题的现实意义 (1)1.2 软件环境 (1)1.3 硬件环境 (1)第二章系统设计流程图 (2)2.1 系统流程图 (2)2.2 主要功能表 (2)第三章系统分析和设计 (3)3.1 图形的绘制和输出 (3)3.2 文本的输出显示 (3)3.3 计算函数的调用 (4)3.4 程序的运行和退出 (5)第四章系统测试 (6)4.1 系统测试 (6)4.2 调试 (6)4.3 错误原因分析一 (6)4.4 错误原因分析二 (6)第五章用户使用说明书 (8)5.1 运行Turbo C程序进入计算器界面 (8)5.2 计算器的使用 (9)5.3 退出程序 (9)第六章工作总结 (10)参考文献 (11)附录: 源代码第一章综述1.1 课题的现实意义现实学习生活中,常会遇到一些数目较大数据繁杂的数值运算,徒手运算起来很困难,这时候我们就必须用到计算器,所以便着手开发了这个计算器程序,以便用于自己的学习工作。

人们对计算的要求不断提高,普通的功能简单的仅能进行四则运算的计算工具已经不能满足需要,需要一种能进行多种计算。

现在已经有一些功能较为强大、涵盖面较广的计算软件,而且各种平台的小工具仍不断出现。

这些大大方便了我们的生活给我们更多的选择和实现方式。

这个程序可以直接输入数学表达式,不需要任何转换,就可以直接输出数学四则运算的结果。

并且操作简单、界面清晰、灵活、实用、方便等要求出发,它所能完成的主要计算功能有以下几个方面:加法,减法,乘法,除法,求幂,求模,求平方根,求Sin,求Cos,求Log10。

计算器的设计使我们所学到的c语言知识在现实中得到检验!信息时代是科技和经济发展的产物,软件产业是信息时代的产物,它在我们的生活工作中发挥着越来越大的作用,计算器的设计对我们知识的掌握有很大的作用,更能方便他人,可行性很强!1.2 硬件环境一台完整的电脑,包括键盘、鼠标,最小硬盘空间1GHz<1> 386,486,586及兼容机.640K基本内存;<2> 1M以上扩充内存,10M以上的显示内存.1.3 软件环境开发环境:本系统的设计采用的是TC语言开发Windows XP sp2操作系统,Turbo C 2.0汉化版 , WPS word第二章程序设计流程图2.1 系统流程图(图 1)2.2 主要功能表(表 1)第三章系统分析和设计3.1 图形的绘制和输出在Turbo C环境下,绘制程序中的计算器的图形,计算器的输入输出和显示结果的显示屏,绘制计算器的按键,绘制边框。

Turbo C为用户提供了一个功能很强的画图软件库,它又称为BorLand图形接口,它包括图形库文件(graphics.lib),图形头文件(graphics.h)和许多图形显示器(图形终端)的驱动程序(如CGA.BGI、EGAVGA.BGI等)。

还有一些字符集的字体驱坳程序(如goth.chr黑体字符集等)。

编写图形程序时用到的一些图形库函数均在graphics.lib 中,执行这些函数时,所需的有关信息(如宏定义等)则包含在graphics.h头文件中。

因此用户在自已的画图源程序中必须包括graphics.h头文件,在进行目标程序连接时,要将graphics.lib连接到自己的目标程序中去。

在编制图形程序时,进入图形方式前,首先要在程序中对使用的图形系统初始化,即要用什么类型的图形显示适配器的驱动程序,采用什么模式的图形方式(也就是相应程序的入口地址),以及该适配器驱动程序的寻找路径名。

所用系统的显示适配器一定要支持所选用的显示模式,否则将出错。

Turbo.C提供了一个图形系统初始化函数initgraph 可完成这些功能。

当我们使用的存储模式为tiny(微型)、 small(小型)或medium(中型)时,不需要远指针,因而可以将初始化函数调用格式写成如下形式(该说明适用于后面所述的任一函数): intitgrapg(&graphdriver, &graphmode,,””); 其中驱动程序目录路径为空字符“”时,表示就在当前目录下,参数graphmode用所示的模式号或标示符来定义,参数graphdriver是一个枚举变量{DETECT,CGA,VGA,…},一般: graphdriver=DETECT 一旦执行了初始化,显示器即被设置成相应模式的图形方式。

上面初始化过程中,将由DETECT检测所用适配器类型,并将当前目录下相应的驱动程序装入,并采用最高分辩率显示模式作为graphmode的值。

如检测到为CGA适配器时,则graphmode等于4或为CGAHI,若检测到VGA适配器,则graphmode等于2或为VGAHI。

由于图形程序运行并显示图象直接与显示器有关,而如何控制驱动显示器进行显示,Turbo C并没有向用户提供这种技术,而这也是不必要的,因它与显示器硬件结构息息相关,编程者并不需要知道这些东西,否则太复杂了!但用户的图形程序要能运行并显示,则必须要包含有驱动显示器的这种程序。

不同种类的显示器因硬件结构不同,因而驱动程序也不同,这些驱动程序已经在Tubro C系统盘上提供。

在用户的图形程序中,进行图形系统初始化时,即执行函数。

initgraph(&graphdriver,&graphmode,char path-for-driver)时,程序就按照path-for-driver所指的路径将图形驱动程序装入内存。

这样,以后的图形功能才能被支持。

若在所指路径下找不到相应显示器的驱动程序,或没有对驱动程序进行装入操作,则运行图形程序时,就会在屏幕上显示出错信息:BGI Error: Graphics not initialized(use”initgraph”)必须在工作盘上复制上这些文件,否则图形程序就无法运行,而出现上述的错误信息。

3.2 文本的输出显示Turbo C2.0的字符屏幕函数主要包括文本窗口大小的设定、窗口颜色的设置、窗口文本的清除和输入输出等函数。

在Turbo C2.0环境下,用ottextxy定位输出文本,如计算器上的函数意义的解释,一些使用说明,程序设计人。

Turbo C2.0默认定义的文本窗口为整个屏幕, 共有80列(或40列)25行的文本单元, 每个单元包括一个字符和一个属性, 字符即ASCII 码字符, 属性规定该字符的颜色和强度。

Turbo C2.0可以定义屏幕上的一个矩形域作为窗口, 使用window()函数定义。

窗口定义之后, 用有关窗口的输入输出函数就可以只在此窗口内进行操作而不超出窗口的边界。

window()函数的调用格式为:void window(int left, int top, int right, int bottom);函数中形式参数(int left, int top)是窗口左上角的坐标, (int right, int bottom)是窗口的右下角坐标, 其中(left, top)和(right, bottom) 是相对于整个屏幕而言的。

Turbo C 2.0规定整个屏幕的左上角坐标为(1, 1), 右下角坐标为(80, 25)。

并规定沿水平方向为 X轴, 方向朝右; 沿垂直方向为 Y轴, 方向朝下。

若window()函数中的坐标超过了屏幕坐标的界限, 则窗口的定义就失去了意义, 也就是说定义将不起作用, 但程序编译链接时并不出错。

另外, 一个屏幕可以定义多个窗口, 但现行窗口只能有一个(因为DOS为单任务操作系统), 当需要用另一窗口时, 可将定义该窗口的window()函数再调用一次, 此时该窗口便成为现行窗口了。

如要定义一个窗口左上角在屏幕(20, 5)处, 大小为30列15行的窗口可写成:window(20, 5, 50, 25); 窗口内文本的输出函数int cprintf("<格式化字符串>", <变量表>);int cputs(char *string);int putch(int ch);cprintf()函数输出一个格式化的字符串或数值到窗口中。

它与printf() 函数的用法完全一样, 区别在于cprintf()函数的输出受窗口限制, 而printf() 函数的输出为整个屏幕。

cputs()函数输出一个字符串到屏幕上, 它与puts()函数用法完全一样, 只是受窗口大小的限制。

putch()函数输出一个字符到窗口内。

int getche(void);该函数在前面已经讲过, 需要说明的是, getche()函数从键盘上获得一个字符, 在屏幕上显示的时候, 如果字符超过了窗口右边界, 则会被自动转移到下一行的开始位置。

void clrscr(void); 清除当前窗口中的文本内容, 并把光标定位在窗口的左上角(1, 1)处。

void clreol(void); 清除当前窗口中从光标位置到行尾的所有字符, 光标位置不变。

void gotoxy(x, y); 该函数很有用, 它用来定位光标在当前窗口中的位置。

这里x, y是指光标要定位处的坐标(相对于窗口而言), 当x, y超出了窗口的大小时, 该函数就不起作用了。

相关文档
最新文档