计算机课程设计说明书(C++,包括代码)

合集下载

c语言设计计算器课程设计

c语言设计计算器课程设计

c语言设计计算器课程设计一、课程目标知识目标:1. 学生能够掌握C语言基本语法和数据类型,特别是整型、浮点型的运用。

2. 学生能够理解并运用顺序结构、选择结构和循环结构进行程序设计。

3. 学生能够运用C语言的算术运算符,实现基本的数学运算功能。

技能目标:1. 学生能够编写简单的C程序,实现加、减、乘、除等基本计算功能。

2. 学生能够通过键盘输入数据,并处理输入异常。

3. 学生能够运用调试工具检查并修正程序中的错误。

情感态度价值观目标:1. 学生培养编程的兴趣,认识到编程在解决问题中的重要性。

2. 学生在学习过程中形成合作意识,培养团队精神。

3. 学生通过编程解决实际问题,体验成就感,增强自信心。

分析课程性质、学生特点和教学要求:本课程针对的是高一年级学生,他们对C语言已有一定的基础知识,具备基本的编程能力。

课程性质为实践性较强的编程课程,旨在让学生通过动手实践,掌握C语言编程技巧。

教学要求注重培养学生的实际编程能力,将理论知识与实际应用相结合。

课程目标分解:1. 学生能够独立完成一个简单的计算器程序,实现加、减、乘、除功能。

2. 学生能够运用所学知识对程序进行优化,提高计算器的运算效率和用户体验。

3. 学生通过课程学习,培养良好的编程习惯和解决问题的能力。

二、教学内容本课程教学内容紧密结合课程目标,确保学生能够系统地学习和掌握C语言编程计算器的制作。

1. C语言基本语法和数据类型复习:回顾整型、浮点型等基本数据类型,强调其在计算器程序中的应用。

2. 运算符和表达式:详细介绍C语言的算术运算符,如加、减、乘、除等,并讲解表达式的构成和计算规则。

3. 控制结构:- 顺序结构:巩固顺序执行的概念,并应用于计算器程序。

- 选择结构:讲解if语句,实现计算器的不同运算功能。

- 循环结构:介绍for和while循环,实现重复计算功能。

4. 输入输出函数:教授scanf和printf函数的使用,实现用户与计算器程序的交互。

C语言游戏代码课程设计

C语言游戏代码课程设计

C语言游戏代码课程设计一、教学目标本课程旨在通过C语言游戏代码的学习,让学生掌握C语言编程的基本知识和技能,培养学生独立思考、创新能力和团队协作精神。

具体目标如下:1.知识目标:(1)掌握C语言的基本语法和数据结构;(2)理解程序设计的基本原理和方法;(3)了解游戏编程的基本概念和技巧。

2.技能目标:(1)能够运用C语言编写简单的游戏程序;(2)具备调试和优化程序的能力;(3)学会阅读和分析游戏代码。

3.情感态度价值观目标:(1)培养学生对计算机科学的兴趣和热情;(2)培养学生勇于探索、积极进取的精神;(3)培养学生团队协作、共同进步的意识。

二、教学内容本课程的教学内容主要包括C语言基础知识、游戏编程原理和实战演练。

具体安排如下:1.C语言基础知识:(1)C语言概述;(2)数据类型、运算符和表达式;(3)控制结构;(4)函数、数组和指针;(5)结构体和文件操作。

2.游戏编程原理:(1)游戏设计基本概念;(2)游戏开发流程;(3)游戏编程技巧;(4)游戏引擎的使用。

3.实战演练:(1)编写简单的游戏程序;(2)分析经典游戏代码;(3)团队协作完成游戏项目。

三、教学方法本课程采用讲授法、讨论法、案例分析法和实验法等多种教学方法,以激发学生的学习兴趣和主动性。

1.讲授法:用于讲解C语言基本语法和游戏编程原理;2.讨论法:用于探讨游戏设计思路和解决编程问题;3.案例分析法:分析经典游戏代码,让学生深入了解游戏编程技巧;4.实验法:动手编写游戏程序,培养学生的实际编程能力。

四、教学资源本课程所需教学资源包括:1.教材:《C语言程序设计》;2.参考书:《游戏编程模式》、《游戏设计艺术》;3.多媒体资料:教学PPT、游戏编程教程视频;4.实验设备:计算机、编程环境。

教学资源应结合课程内容和教学方法,为学生提供丰富的学习体验,提高教学效果。

五、教学评估本课程的教学评估采用多元化评价方式,全面客观地评价学生的学习成果。

2410英贝特开发箱_课程设计说明书及代码

2410英贝特开发箱_课程设计说明书及代码

目录一.课程设计的目的 .............................................................................................................. - 1 -二.课程设计的任务和要求 ................................................................................................... - 1 -三.设计思想和硬件环境....................................................................................................... - 2 -3.1设计思想 (2)3.2硬件环境 (2)四.WINDOWS CE系统 ....................................................................................................... - 4 -4.1W INDOWS CE4.2的概述 (4)4.2W INDOWS CE系统定制环境 (4)4.3定制系统的步骤 (5)4.4W INDOWS CE系统的移植 (6)五.程序开发 ......................................................................................................................... - 7 -5.1驱动程序 (7)5.2应用程序 (9)5.3应用程序截图 (10)六.总结............................................................................................................................. - 12 -参考文献 .............................................................................................................................. - 13 -附录源代码......................................................................................................................... - 14 -一.课程设计的目的通过本课程的学习,使学生掌握Windows CE 4.2操作系统下,基于EduKit2410 III试验箱实现操作系统的定制、引导程序和操作系统的移植,以及设备驱动程序和应用程序的开发方法。

计算机课程设计任务书

计算机课程设计任务书

计算机课程设计任务书全文共四篇示例,供读者参考第一篇示例:计算机课程设计任务书一、课程名称:计算机课程设计二、课程代码:CS101三、课程性质:必修四、学时学分:48学时3学分五、课程简介:本课程旨在培养学生计算机科学的设计和实现能力,通过实际项目的设计和开发,加深对计算机科学理论知识的理解和应用。

通过本课程的学习,学生将掌握软件工程的基本原理、方法和技术,提高计算机程序设计和开发能力,培养团队协作和创新能力。

六、教学目标:本课程旨在通过实际项目的设计和开发,培养学生的计算机科学综合素养和实际应用能力,具体目标包括:1. 熟练掌握软件工程的基本原理、方法和技术;2. 提高计算机程序设计和开发能力;3. 培养团队协作和创新能力;4. 提高学生的问题解决能力和逻辑思维能力;5. 提升学生的沟通能力和表达能力;6. 培养学生具有独立学习和自主探究的能力。

七、教学内容:1. 软件工程基础知识2. 软件需求分析和规格说明3. 软件设计和架构4. 程序设计和编码技术5. 质量保证和测试技术6. 软件项目管理和团队协作1. 理论讲授:介绍软件工程的基本理论知识和方法2. 分组项目设计:学生组成小组,完成软件项目设计和开发3. 案例分析:通过案例分析,加深对软件工程知识的理解4. 实践操作:学生通过实际操作,掌握软件设计和开发技术5. 课堂讨论:鼓励学生在课堂上积极提问和参与讨论九、考核方式:1. 项目报告:学生需提交项目设计和开发的报告,包括需求分析、设计方案、实现过程和测试结果等2. 课堂演示:学生需在课堂上进行项目演示,展示项目成果和技术实现3. 期末考试:学生需参加期末考试,考核软件工程知识和理论基础掌握情况十、教学资源:1. 课程教材:《软件工程导论》、《软件需求工程》、《软件设计与构造》等2. 计算机实验室:提供实际项目设计和开发的硬件设备和软件环境3. 专业导师:专业教师指导学生解决问题和开展项目工作十一、课程审核和评估:1. 课程审核:本课程需由学校计算机系审核并定期评估2. 教学效果评估:通过学生评价、教师评价和项目成果评价等方式,对教学效果进行评估和改进3. 课程质量保障:通过持续优化教学资源、提高师资力量、加强项目管理等方式,保障教学质量和效果以上为《计算机课程设计任务书》的内容,希望学生们在本课程的学习中,能够提高计算机科学的综合素养和实际应用能力,为将来的职业发展打下坚实基础。

计算机算法设计与分析课程设计常规题目的(C及C++)代码集

计算机算法设计与分析课程设计常规题目的(C及C++)代码集

合并排序1:#include<iostream>using namespace std;const int N=100;class list{public:int array[N];void input(int a);void merge(int arrayc[],int arrayd[],int l,int m,int r);void mergepass(int arrayx[],int arrayy[],int s);void mergesort(int array1[]);void diaplay(int a);};void list::input(int a){cout<<"Please input shorted array:"<<endl;for(int i=0;i<a;i++)cin>>array[i];}void list::merge(int arrayc[],int arrayd[],int l,int m,int r) {int i=l;int j=m+1;int k=l;while((i<=m)&&(j<=r))if(arrayc[i]<=arrayc[j])arrayd[k++]=arrayc[i++];else arrayd[k++]=arrayc[j++];if(i>m)for(int q=j;q<=r;q++)arrayd[k++]=arrayc[q];elsefor(int q=i;q<=m;q++)arrayd[k++]=arrayc[q];}void list::mergepass(int arrayx[],int arrayy[],int s){int i=0;while(i<=N-2*s){merge(arrayx,arrayy,i,i+s-1,i+2*s-1);i=i+2*s;}if((i+s)<N)merge(arrayx,arrayy,i,i+s-1,N-1);elsefor(int j=i;j<N;j++)arrayy[j]=arrayx[j];}void list::mergesort(int array1[]){int array2[N];int s=1;while(s<N){mergepass(array1,array2,s);s+=s;mergepass(array2,array1,s);s+=s;}}void list::diaplay(int a){for(int i=N-a;i<N;i++)cout<<array[i];}void main(){list f;int a;cout<<"请输入要合并排序的数组大小:(数组最大上限100)"<<endl;cin>>a;f.input(a);f.mergesort (f.array);f.diaplay (a);}合并排序:2#include <iostream>usingnamespace std;void MERGES(int *A,int p,int q,int r) //下标P<=q<r{int n1=q-p+1; //n1:p,q之间的数的个数int n2=r-q; //n2:q以后到r的数的个数int *L=newint [n1+1], //动态申请两个子数组*R=newint [n2+1];int i,j,k;for (i=0;i<n1;i++){L[i]=A[p+i-1];}for (j=0;j<n2;j++){R[j]=A[q+j];}L[n1]=10000; //设置哨兵R[n2]=10000;i=0;j=0;for (k=p-1;k<r;k++){if (L[i]<=R[j]){A[k]=L[i];i=i+1;}else{A[k]=R[j];j=j+1;}}}void MERGESORT(int *A,int p,int r) {if (p<r){int q=(p+r)/2;MERGESORT(A,p,q);MERGESORT(A,q+1,r);MERGES(A,p,q,r);}}void main(){int x,z,p,r;cout<<"请输入数组长度"<<endl;cin>>x;int *A= newint[x];cout<<"请输入数组的元素"<<endl;for(int y=0;y<x;y++){cin>>z;A[y]=z;}cout<<"请输入上下限p,r"<<endl;cin>>p>>r;MERGESORT(A,p,r);cout<<"合并排序后为:"<<endl;for (int m=p;m<=r;m++){cout<<A[m];}delete []A;}合并排序3:#include <iomanip.h>#include <iostream.h> //这个函数将b[0]至b[right-left+1]拷贝到a[left]至a[right] template <class T>void Copy(T a[],T b[],int left,int right){int size=right-left+1;for(int i=0;i<size;i++){a[left++]=b[i];}} //这个函数合并有序数组a[left:i],a[i+1:right]到b,得到新的有序数组b template <class T>void Merge(T a[],T b[],int left,int i,int right){int a1cout=left,//指向第一个数组开头a1end=i,//指向第一个数组结尾a2cout=i+1,//指向第二个数组开头a2end=right,//指向第二个数组结尾bcout=0;//指向b中的元素for(int j=0;j<right-left+1;j++)//执行right-left+1次循环{if(a1cout>a1end){b[bcout++]=a[a2cout++];continue;}//如果第一个数组结束,拷贝第二个数组的元素到bif(a2cout>a2end){b[bcout++]=a[a1cout++];continue;}//如果第二个数组结束,拷贝第一个数组的元素到bif(a[a1cout]<a[a2cout]){b[bcout++]=a[a1cout++];continue;}//如果两个数组都没结束,比较元素大小,把较小的放入belse{b[bcout++]=a[a2cout++];continue;}}} //对数组a[left:right]进行合并排序template <class T>void MergeSort(T a[],int left,int right){T *b=new int[right-left+1];if(left<right){int i=(left+right)/2;//取中点MergeSort(a,left,i);//左半边进行合并排序MergeSort(a,i+1,right);//右半边进行合并排序Merge(a,b,left,i,right);//左右合并到b中Copy(a,b,left,right);//从b拷贝回来}} //from /zhangamxqunint main(){int n;cout<<"how many numbers to sort:";cin>>n;int *a=new int[n];cout<<"input "<<n<<" numbers:";for(int i=0;i<n;i++){cin>>a[i];}MergeSort( a, 0, n-1);for(int j=0;j<n;j++){cout<<setw(5)<<a[j];}return 1;}合并排序4:#include <iostream>using namespace std;void Merge(int a[],int b[],int l,int m,int r) {int i=l,j=m+1,k=l;while ((i<=m)&&(j<=r))if (a[i]<=a[j])b[k++]=a[i++];else b[k++]=a[j++];if (i>m)for(int q=j;q<=r;q++)b[k++]=a[q];elsefor(int q=i;q<=m;q++)b[k++]=a[q];}void Copy(int a[],int b[],int s,int n){for(int i=s;i<=n;i++)a[i]=b[i];}void MergeSort(int a[],int left,int right) {int i;if(left<right){i=(left+right)/2;int b[100];MergeSort(a,left,i);MergeSort(a,i+1,right);Merge(a,b,left,i,right);Copy(a,b,left,right);}}int main(){int a[100];int n,i;cout<<"输入元素个数n:";cin>>n;cout<<"输入一维数组a["<<n<<"]:";for( i=0;i<n;i++)cin>>a[i];MergeSort(a,0,n-1);cout<<"输出排序为:";for ( i=0;i<n;i++)cout<<a[i]<<' ';cout<<endl;return 0;}矩阵相乘1:#include <iostream>#include <stdio.h>using namespace std;int main(){int i, j, k;cout<<"输入二维数组a的行数和二维数组c的行数x:";int x;cin>>x;cout<<"输入二维数组a的列数和二维数组b的行数y:";int y;cin>>y;cout<<"输入二维数组b的列数和二维数组c的行数z:";int z;cin>>z;int **a, **b, **c;a=new int*[x];for(i=0;i<x;i++){a[i]=new int[y];}cout<<"输入二维数组a:"<<endl;for(i=0;i<x;i++){for(j=0;j<y;j++){cin>>a[i][j];}}b=new int*[y];for(i=0;i<y;i++){b[i]=new int [z];}cout<<"输入二维数组b:"<<endl;for(i=0;i<y;i++){for(j=0;j<z;j++){cin>>b[i][j];}}c=new int*[x];for(i=0;i<x;i++){c[i]=new int [z];}cout<<"输入二维数组c:"<<endl;for(i=0;i<x;i++){for(j=0;j<z;j++){c[i][j]=0;}}for(i=0;i<x;i++){for(j=0;j<z;j++){for(k=0;k<y;k++){c[i][j]+=a[i][k]*b[k][j];}}}for(i=0;i<x;i++){for(j=0;j<z;j++){cout<<c[i][j]<<' ';}cout<<endl;}for(i=0;i<x;i++){delete [] a[i];}delete [] a;for(i=0;i<x;i++){delete [] c[i];}delete [] c;for(i=0;i<y;i++){delete [] b[i];}delete [] b;return 0;}矩阵相乘2:#include<iostream>using namespace std;#define M 2#define N 3#define P 4int main(){int a[M][N]={{1,2,3},{4,5,6}};int b[N][P]={{7,8,9,1},{2,3,4,5},{6,7,8,9}};int c[M][P];int i,j,k;for(i=0;i<M;i++)for(j=0;j<P;j++)c[i][j]=0;for(i=0;i<M;i++)for(j=0;j<P;j++)for(k=0;k<N;k++)c[i][j]+=a[i][k]*b[k][j];cout<<"矩阵相乘结果是:"<<endl;for(i=0;i<M;i++){for(j=0;j<P;j++)cout<<c[i][j]<<" ";cout<<endl;}//system("pause");return 0;}矩阵相乘3:#include <iostream>#include <iomanip>using namespace std;int main(){const int m=3;const int n=3;int a[m][n],i,j; //初始化数组a,bfor(i=0;i<m;i++) //对数组 a 赋值并显示{for( j=0;j<n;j++){cout<<"a["<<i<<"]"<<"["<<j<<"]=";cin>>a[i][j];}}for( i=0;i<m;i++){for( j=0;j<n;j++)cout<<setw(4)<<a[i][j];cout<<endl;}const int k=3;const int h=2;int b[k][h],x,y;for( x=0;x<k;x++){for( y=0;y<h;y++){cout<<"b["<<x<<"]"<<"["<<y<<"]=";cin>>b[x][y];}}for( x=0;x<k;x++){for( y=0;y<h;y++)cout<<setw(4)<<b[x][y];cout<<endl;}int c[m][h]; //乘赋值给数组cfor(int r=0;r<m;r++){for(int t=0;t<h;t++) //数组a 与b 相//对数组b 赋值并显示{c[r][t]=0;for(int s=0;s<k;s++){c[r][t]+=a[r][s]*b[s][t];}}}cout<<"c["<<m<<"]"<<"["<<h<<"]"<<endl;for(int z=0;z<m;z++){for(int w=0;w<h;w++)cout<<setw(4)<<c[z][w];cout<<endl;}return 0; //显示数组c}矩阵相乘4:#include<iostream>using namespace std;void chain(int*p,int n,int m[][7],int s[][7])//p维数数组,m最优乘次数组,s记录划分方案{int j;for(int i=1;i<=n;i++)m[i][i]=0;for(int r=2;r<=n;r++){for(i=1;i<=n-r+1;i++){j=i+r-1;m[i][j]=m[i+1][j]+p[i-1]*p[i]*p[j];s[i][j]=i;for(int k=i+1;k<j;k++){int t=m[i][k]+m[k+1][j]+p[i-1]*p[k]*p[j];if(t<m[i][j]){m[i][j]=t;s[i][j]=k;}}}}for(i=1;i<=n;i++)//我把它翻过来输出。

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语言课程设计+报告+源代码

西安郵電大學C语言课程设计报告题目: 职工工资管理系统院系名称: 计算机学院专业名称: 软件工程班级:学生姓名:学号(8位):指导教师:设计起止时间: 2013年06月03日~2013年06月12日一.设计目的1.通过本课程设计, 强化上机动手能力, 使学生在理论和实践的基础上进一步巩固《c语言程序设计》课程学习的内容, 掌握工程软件设计的基本方法.2.学会将知识应用于实际的方法, 提高分析和解决问题的能力, 增加综合能力.3.为后续各门计算机课程的学习打下坚实基础; 为毕业设计和以后工作打下必要基础。

二.设计内容本设计主要包括了用户登录和主菜单,其中用户登录包括了一下几个功能1.新用户的注.2.用户登.3。

用户密码的修改。

而主菜单包括: 1.职工信息的录.2.职工信息的修.3.选择性排.4.统计人数和工.5. 输出现有的信.6.自定义查询信息。

三. 概要设计1. 功能模块图;1.2. 各个模块详细的功能描述。

2.修改密码的时候, 需要输入原密码, 并且输入两次新的密码必须相同才能完成密码的修改。

3.用户登录: 需要输入用户名和密码, 如果用户名不存在或密码错误会给出相应的提醒, 当输入正确的时候会进入主菜单。

4.新用户注册:需要输入注册的用户和密码, 如果用户明已被注册过会给出相应的提醒。

5.职工信息的输入:是从无开始输入职工的信息, 同样也会给出输入内容的提醒, 当输入最后一次职工的信息为零时结束输入, 同是会将输入的信息写入到文件里。

6.修改职工信息其中包括a.添加职工信息和输入职工信息相同在添加完会提醒是否继续添加。

b.修改员工信息: 此时会出现选择性修改职工的哪项信息,先进行选择再进行修改。

C.删除员工信息: 需要输入所要删除员工的姓名或id进行删除!如果删除不成功或者删除者不存在会给出相应的提醒。

7.统计信息: 会自动的统计现有员工的总人数和现有员工的总工资。

8.输出现有职工的信息: 会显示现在记录的职工的各项信息。

c语言课程设计及源代码

c语言课程设计及源代码

c语言课程设计及源代码一、教学目标本课程旨在让学生掌握C语言的基本语法、数据结构、算法和编程思想,培养学生具备基本的程序设计能力。

通过本课程的学习,学生将能够:1.理解C语言的基本语法和编程规则;2.熟练使用C语言进行简单的程序设计;3.掌握常用的数据结构和算法;4.培养良好的编程习惯和问题解决能力。

二、教学内容教学内容将按照教材的章节进行,主要包括:1.C语言的基本语法和编程规则;2.数据类型的定义和运算;3.控制语句和函数的使用;4.常用的数据结构和算法;5.指针和内存管理;6.文件操作和编程实践。

三、教学方法为了激发学生的学习兴趣和主动性,将采用多种教学方法:1.讲授法:通过讲解和演示,让学生掌握C语言的基本语法和编程规则;2.讨论法:通过小组讨论和实践,让学生深入理解和运用数据结构和算法;3.案例分析法:通过分析实际案例,让学生学会解决实际编程问题;4.实验法:通过上机实验,让学生动手实践,巩固所学知识。

四、教学资源为了支持教学内容和教学方法的实施,将准备以下教学资源:1.教材:选用权威、实用的C语言教材;2.参考书:提供相关的参考书籍,供学生自主学习;3.多媒体资料:制作PPT和教学视频,辅助讲解和演示;4.实验设备:提供计算机实验室,让学生进行上机实验。

通过以上教学设计,相信学生能够顺利完成本课程的学习,掌握C语言编程的基本技能。

五、教学评估为了全面、客观、公正地评估学生的学习成果,将采用多种评估方式:1.平时表现:通过课堂参与、提问和讨论,评估学生的学习态度和理解程度;2.作业:布置适量的作业,评估学生的编程能力和实践能力;3.考试:进行期中和期末考试,评估学生对课程知识的掌握程度;4.项目实践:课程项目,让学生综合运用所学知识解决问题,评估学生的综合能力。

六、教学安排教学安排将根据课程内容和学生的实际情况进行设计:1.教学进度:按照教材的章节顺序,合理安排每一节课的教学内容;2.教学时间:根据学生的作息时间,选择合适的时间段进行授课;3.教学地点:选择适宜的教室或实验室,保证教学环境的舒适和设施的齐全;4.教学活动:结合学生的兴趣爱好,安排一些实践活动,提高学生的学习积极性。

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

数学与计算机学院课程设计说明书课程名称: 面向对象程序设计-课程设计课程代码:题目: 计算器年级/专业/班:学生姓名:学号:开始时间:2011 年 5 月28日完成时间:2011 年6月 27 日课程设计成绩:指导教师签名:年月日目录1 引言 (1)1.1问题的提出 (1)1.2任务与分析 (1)2.1加法功能 (2)2.2减法功能 (2)2.3乘法功能 (2)2.4除法功能 (2)2.5开平方功能 (2)2.6四则混合运算功能 (2)2.7显示功能 (2)3 程序运行平台 (3)4 总体设计 (3)5 程序类的说明 (4)6 模块分析 (6)6.1加法模块 (6)6.2减法模块 (7)6.3乘法模块 (8)6.4除法模块 (10)6.5开方模块 (11)6.6求余模块 (13)6.7四则混合运算模块 (14)7 系统测试 (22)8 结论 (27)参考文献 (28)摘要本课程设计是为了实现一个简单计算器,该计算器类似于windows附件中自带的计算器。

分析了现在人们对数据的处理需求,利用系统平台Windows 2000XP,程序设计语言采用面向对象程序设计语言C++,利用Visual C++编程实现了该系统。

该系统具有数据录入,数据修改,数据处理,数据显示等功能。

用户根据系统界面提示,输入需要处理的数据,系统根据要求实现加、减、乘、除以及开方等功能。

关键词:计算器;程序设计;C++1 引言1.1 问题的提出在现在这个现代化的经济社会中,经常会涉及到大量数据的处理。

这时计算器就显得相当重要,计算器系统允许人们录入大量数据,实现各种运算功能。

本课程设计主要在运算过程中,如果通过计算器来完成,就会减少计算量,该程序即可以在简单计算器键面下进行简单运算,也可以在科学计算器键面下进行高级的科学计算。

并且可以分别计算弧度、角度的三角函数的计算等较为复杂的运算。

1.2任务与分析本课程设计的主要目的是通过计算器的来完成各种功能的运算过程,这样可以减少计算量。

该计算器可以实现加、减、乘、除运算以及平方根运算,也可以实现四则混合运算。

数据操作既可以实现整数操作也可以实现实数的操作。

2 程序的主要功能2.1加法功能可以实现整数和实数的相加运算。

2.2减法功能可以实现整数和实数的相减运算。

2.3 乘法功能可以实现整数和实数的乘法运算。

2.4除法功能可以实现整数和实数的除法运算。

2.5开平方功能可以实现整数和浮点数的求平方根运算2.6四则混合运算功能可以实现整数和实数的四则混合运算。

2.7显示功能显示用户输入的数据,并显示处理后的结果。

3 程序运行平台VC++6.0具体操作如下:建立工程Calculator ,添加相应的源文件Main 和Mixoperation.h ,最后编译,链接,执行。

4 总体设计由本系统的要求可以得到相应的总体设计模块:图4.1 计算机总体框架图计算器减法运算加法运算求余运算开方运算除法运算乘法运算显示功能5 程序类的说明•Operation类的声明//-----operation类(+ 、-、 *、 / 、remainder、sqrt、mixopertion)定义----- class operation{double first;double second;public:void get(){cout<<"输入第一操作数:\n";cin>>first;cout<<"输入第二操作数:\n";cin>>second;cout<<"操作结果:";} //输入操作数函数void add(){cout<<first<<"+"<<second<<"="<< first+second<<endl;} //加法定义void subtract(){cout<<first<<"-"<<second<<"="<<first-second<<endl;} //减法定义void multiplication(){cout<<first<<"*"<<second<<"="<<first*second<<endl;} //乘法定义void divide(){cout<<first<<"/"<<second<<"="<<first/second<<endl;} //除法定义void square(){cout<<"输入要开平方的数:\n";cin>>first;cout<<first<<"开放后:"<<sqrt(first)<<endl;} //开方运算定义void FindRemainder(){cout <<first<<" % " <<second <<" = " <<(int)first % (int)second <<endl; } //求余定义void FindMixOperation();}; //四则混合运算定义6 模块分析6.1 加法模块用户根据需要选择加法功能,输入需要处理数据,系统根据用户要求实现整数和实数的相加功能加法流程图如下:开始第一操作get()第二操作数get()结果显示结束图 6.1 加法流程图实现加法功能的主要代码:void Plus(){system("cls");cout<<" ***********************************************\n";cout<<" * *\n";cout<<" * 相加运算 *\n";cout<<" * *\n";cout<<" * *\n";cout<<" ***********************************************\n";operation a; //调用类a.get ();a.add();}6.2 减法模块用户根据需要选择减法功能,输入需要处理数据,实现整数和实数的相减功能减法流程图:开始第一操作get()第二操作数get()结果显示结束图 6.2减法流程图实现减法功能的主要代码:void Minus(){ system("cls");cout<<" ***********************************************\n";cout<<" * *\n";cout<<" * 减法运算 *\n";cout<<" * *\n";cout<<" * *\n";cout<<" ***********************************************\n";operation b;b.get ();b.subtract();}6.3 乘法模块用户根据需要选择乘法功能,输入需要处理数据,实现整数和实数的相减功能乘法流程图如下:开始第一操作get()第二操作数get()结果显示结束图 6.3 乘法流程图实现乘法功能的主要代码:void Multiplication(){system("cls");cout<<" ***********************************************\n";cout<<" * *\n";cout<<" * 乘法运算 *\n";cout<<" * *\n";cout<<" * *\n";cout<<" ***********************************************\n";operation c;c.get ();c.multiplication ();}6.4 除法模块用户输入系统功能,输入数据实现整数与实数的除法功能除法流程图:开始第一操作get()第二操作数get()结果显示结束图 6.4 除法流程图实现除法功能主要代码:void Divide(){system("cls");cout<<" ***********************************************\n";cout<<" * *\n";cout<<" * 除法运算 *\n";cout<<" * *\n";cout<<" * *\n";cout<<" ***********************************************\n";operation d;d.get();d.divide();}6.5开方模块用户选择功能,输入处理数据,实现整数和实数的开方功能开方流程图:开始第一操作get()第二操作数get()结果显示结束图 6.5 开方流程图实现开方功能主要代码:void OpenSqrt(){system("cls");cout<<" ***********************************************\n";cout<<" * *\n"; cout<<" * 开方运算 *\n";cout<<" * *\n";cout<<" * *\n";cout<<" ***********************************************\n";operation e;e.square();}6.6 求余模块用户选择功能,输入数据,实现整数的求余求余流程图:开始第一操作get()第二操作数get()结果显示结束图 6.6 求余流程图实现求余功能的主要代码:void Remainder(){operation f;f.get();f.FindRemainder();}6.7四则混合运算模块用户选择功能,输入需要进行处理的多项式(不能输入空格符),实现整数和实数的四则混合运算混合运算流程图:开始输入多项式处理函数mixoperation()结果显示结束图 6.7 四则混合运算流程图实现四则混合运算功能的主要代码:#include<iostream>using namespace std;int check(char *c) //检查字符串中是否有除了 0-9, +,-,*,/,(,),之外的其他字符,有返回0无则为1,正确输出{int k=0;while(*c!='\0'){if((*c>='0' && *c<='9') || *c=='+' ||*c=='-' || *c=='*' || *c=='/' ||*c=='.' || *c=='(' || *c==')' )}else{cout<<"input error, there have the char not the math expression char!\n"; return 0;}if(*c=='(')k++;else if(*c==')')k--;c++;}if(k!=0){cout <<"input error, there is not have correct bracket '()'!\n";return 0;}return 1;}void move(char *f, double *s,int p) //将当前已经完成运算的运算符消去,同时将数值数组的位置调整以进行下一次运算{int i=0,len=strlen(f);for(i=p; i<len; i++) //将已经运算过的符号,空出来的位置用后面的符号来填充, { //即把乘和除号的位置用后面的加和减号填充f[i]=f[i+1];s[i]=s[i+1];}s[i]=s[i+1];f[len-1]='\0';}double convnum(char *c)// 将输入的字符串先将其小数点以前的部分复制到temp[]数组中{double num=0.0;double a=1.0;int i=0,p=0,len=0;char temp[100];int tempi=0;int start=0;int f=1; //正负符号指示器,若为1则为正数,为-1,此数为负数len=strlen(c);if(c[0]=='-'){start=1;f=-1;}for(i=start; i<len; i++){if(c[i]=='.'){p=i;break;}temp[tempi++]=c[i]; //将整数部分复制到temp[]中}temp[tempi]='\0';if(p!=0){for(i=p+1;i<len;i++) //将小数部分计算出来{if(c[i]=='.') //如果有多余的小数点,则表示输入错误{cout <<"there is more that one dot '.' in number!error!\n"; exit(0);}a=a*0.1;num+=(a*(c[i]-48));}}a=1.0;len=strlen(temp); //计算整数部分for(i=len-1;i>=0; i--){num=num+(a*(temp[i]-48));a*=10;}num=num*f;return num;}double good(char *c) //可递归函数{ //取得数值字符串,并调用convnum转换成doublechar g[100],number[30]; //g,保存当前的表达式串,number保存一个数的所有字符 char f[80]; //保存所有的符号的堆栈int fi=0; //保存符号的位置指针double s[80]; //保存当前所有的数的一个堆栈int si=0; //保存数字位置指针int k=0; // 若k=1则表示有一对括号int num=0,i=0; //num保存新括号内的字符数,i 保存number里的字符位置 int cc=0; //乘除符号数量int jj=0; //加减符号数量while(*c!='\0') //当p==1 和k==0时,表示已经把括号里的内容全部复制到g[100]中了{k=0;num=0;switch(*c){case '+': //当前字符为+-乘除时则表示case '-':case '*':case'/':f[fi++]=*c;if(*c=='*' || *c=='/')cc++;elsejj++;if(*(c-1)!=')'){number[i]='\0';i=0; //完成一个数字的复制,其位置指针i=0s[si++]=convnum(number);}break;case'(': //有括号,则将当前括号作用范围内的全部字符保存,作为 k++; //一个新的字符表达式进行递归调用good函数计算。

相关文档
最新文档