软件课程设计报告.doc_第1页
软件课程设计报告.doc_第2页
软件课程设计报告.doc_第3页
软件课程设计报告.doc_第4页
软件课程设计报告.doc_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

编号:( )字 号软件课程设计报告班 级: 网络10-01 姓 名: 学 号: 指导老师: 中国矿业大学计算机科学与技术学院2011 年 10 月17软件课程设计任务书专业年级: 网络10-01 学生姓名: 孙华 任务下达日期: 200 年 月 日课程设计日期: 200 年 月 日至 200年 月 日课程设计题目: 面向过程 (题目序号) 类别题目序号成绩面向过程1.求立方根。2.反序求和。面向对象1复数运算。2日期运算。图形界面1.通过mfcappwizard创建一个计算器(2)数据结构2. 假设有一个循环链表的长度大于1,且表中既无头结点也无头指针已知p为指向链表中某结点的指针,试编写算法在链表中删除结点p 的前趋结点4.设计一个统计选票的算法,输出每个候选的得票结果(假设采用单链表存放选票,候选人编号依次为1,2,3,n,且每张选票选且只选一人)(1、3).软件课程设计指导教师评阅书指导教师评语(基础理论及基本技能的掌握;独立解决实际问题的能力;研究内容的理论依据和技术方法;取得的主要成果及创新点;工作态度及工作量;总体评价及建议成绩;存在问题等):成 绩: 指导教师签字: 年 月 日目录一、 面向过程设计题1-求立方根1.1 需求分析 .91.2 概要设计.101.3 详细设计与编码.111.4 调试分析.131.5 用户使用说明 .131.6 设计心得.13二、面向过程设计题2-反序求和 2.1 需求分析132.2 概要设计.142.3 详细设计与编码.162.4 调试分析.172.5 用户使用说明 .172.6 设计心得.17三、面向对象设计题1-复数运算。3.1 需求分析173.2 概要设计.193.3 详细设计与编码.213.4 调试分析.223.5 用户使用说明 .223.6 设计心得.22四、面向过程设计题2-日期运算。4.1 需求分析224.2 概要设计.234.3 详细设计与编码.254.4 调试分析.254.5 用户使用说明 .254.6 设计心得.25五、图形界面1-计算器(计算器.rar)5.1 需求分析 .265.2 概要设计.265.3 详细设计与编码.285.4 调试分析.285.5 用户使用说明 .295.6 设计心得.29六、数据结构2-删除结点p 的前趋结点(数据结构2.cpp)6.1 需求分析306.2 概要设计.306.3 详细设计与编码.346.4 调试分析.356.5 用户使用说明 .356.6 设计心得.35七、数据结构4-统计选票(数据结构3.cpp)7.需求分析.367.概要设计.377.详细设计与编码.397.调试分析.417.用户使用说明 .417.设计心得.41八、课程设计总结 42窗体顶端窗体底端第一阶段 面向过程程序设计1 编程序 用迭代法求 a 的立方根,求立方根的迭代公式为 :xi+1=(2*xi) /3+a/(3*xi*xi) a,迭代到|xi+1迭代到|xi+1 次方为止. 的值, 假定 x 的初值为 a,迭代到|xi+1-xi|=1e-5是(4)调试分析: 在编写程序时可能考虑不周到,会导致在运行时出现一些问题,如陷入死 循环这是就需要根据错误提示逐步找出问题的出处,并解决它比如说循环的 条件判断错误,这时你就要从判断条件入手找出问题,分析正确的条件是什么 (5)用户使用说明: 只要根据屏幕所显示的提示操作就能得到正确的数据,开始时屏幕会显示“输入一个整数”。(6)测试分析: 当分别输入 10、5、9 时,所得到的数据都为精确到小数点后 5 位的数值, 说明精确度正确(7)设计体会:在编此程序时,学习到怎样进行需求分析如何利用循环来进行多次数值 运算,并正确的结束此循环同时还知道要想验证一个程序算得的数值是否正确 可以用两种不同的方法来验证 编程序, 与其反序数之和并输出例如此题我还加了个循环可以多次输入!2 编程序,从键盘输入正整数 n,求出 n 与其反序数之和并输出。例如,输入 2038, 2038+8302=10340。 2038,输出应为 2038+8302=10340。(1) 需求分析: 编程序,从键盘输入正整数 n,求出 n 与其反序数之和并输出。 输入和输出都为整型数据。 测试的数据如下图运行结果所示。设计一个程序可以实现求其与其反序数之和。根据题目要求,规定如下:测试数据:【输入数据】:852456【输出数据】:654258和1506714【输入数据】:963123【输出数据】:321369和1284492 【输入数据】:745962【输入数据】:269547和1015509【输入数据】:981365【输入数据】:563189和1544554(2)概要设计: 概要设计: 先定义整型变量,主程序利用循环分别求出次数的位数和其反序数。再将 该数与其反序数相加输出。(1)定义长整形变量a、c、b,其中a为用户输入值,,c用于存储输入值,b用于存储反序数,定义整形变量x用于中间变量;(2)求反序数并存储于b中;(3)输出d=c+b的值。(4)主程序流程:第一步:让用户输入一个整数a,并存于i中;第二步:进入while循环计算其反序数;第三步:求输出d的值。 (3) 详细设计与编码:(1) 流程图:用户输入a,并存储于c中进入while循环判断条件a!=0a=0d=a+b=输出结果 程序:已提交;修改后可以多次输入,显示更加人性化!运行结果:(4) 调试分析: 在编程时,遇到把%与/号搞混的现象,结果导致计算数据的严重错误。通过看和 询问才知道自己的错误的原因。在发现原因之前,想完成此编程很不容易,只要 熟练的掌握好整除号和除号的区别,解决此题应该不难。 (5) 用户使用说明: 只要根据屏幕所显示的提示操作就能得到正确的数据。 如:屏幕上有:“输入一个数”,用户输入该数的值,按回车键就可得到结 果了。(6) 测试分析: 当输入 852456 这个整数时,得到为6 位的整数,反序数为:654258,总和为:1506714 符合计算的需求,程序通过。(7) 设计体会: 在编程时,遇到把%与/号搞混的现象,结果导致计算数据的严重错误。通过 看书和询问才知道自己的错误的原因。所以说在计算机编程时,特别是那些大的 程序需要大家共同合作完成。 可能在自己看来还能通过的程序在别人眼里就存在 一些缺陷,所以共同合作才能共同进步。 编程序,使用如下所谓的简单变量“数据平移”第二阶段 面向对象程序设计1. 自定义一个示意性的复数类型complex,其中含有若干个成员函数,使用该类可以完成复数的加法以及对复数的输出。请完成类定义,并编制主函数,说明complex类对象,对定义的各成员函数进行调用。class complexdouble real; /复数实部double imag; /复数虚部public:complex(); /无参构造函数complex(double r, double i); /2参构造函数complex addcom(complex c2); /调用者对象与对象c2相加,返回complex类对象void outcom (); /输出调用者对象的有关数据(各分量) ;进一步,在类中添加对复数进行其他基本运算(如,复数减、乘、除、取模等)的相应成员函数,并通过主函数处的调用来验证各函数的使用正确性。(1) 需求分析: 编写一个程序让它实现复数的运算法则,要求定义一个complex类,两个私有数据real和imag,同时定义一个构造函数,声明一些运算函数,我这里以加法和减法为例。(2) 概要设计:主要是设计一个类同时含有构造函数,把real和imag定义为private,其余的为public,同时在类外定义成员函数,最后设计主函数。(3) 详细设计与编码:已提交; 运行结果:(4) 调试分析:在做出这个程序之前我遇到了一些问题,后来经过老师的指点,终于明白了原来是工作区重复了,这个程序是之前的改进,我加了减法,而且改变了输出的方式使之更美观。(5) 用户使用说明:这个程序不用用户输入任何数据,只是个验证程序,当然也能改为让用户输入的类型。(6) 测试分析:可以说这个程序相当的成功,只是由于时间的原因没有把乘法、除法、求模写出来。(7) 设计体会:通过本次程序设计,我学到了许多新的知识,比如一些新的错误。同时也发现我的基础还是不牢固,还有待加强!2. 自定义一个简单的日期类datetype,它具有数据成员y、m、d,用来表示当前日期的年、月、日。而后设计该类欲实现(完成)的功能,进而设计出相应的类成员函数。例如,下面给出的“雏形”可用来实现对天的增加,比较两个日期是否相等,以及对日期的输出等操作。请完成各类成员函数,并编制主函数,说明datetype类对象,对定义的各成员函数进行调用,以验证它们的正确性。class datetype /自定义的日期类datetypeint y,m,d; /数据成员,表示当前日期的年、月、日public:datetype(int y0=1, int m0=1, int d0=1); /构造函数,设定年、月、日;并设置参数默认值void incrementday(); /增加1天 bool equal(datetype dt2); /判断二日期是否相等 void printdate(); /屏幕输出日期对象的有关数据(年、月、日);注意,当对日期增加1天后,也会涉及所谓的“进位”问题:首先算出本“日”所在的月份具有的天数n,若加1之后的“日”数值超过所在的月份具有的天数n时,“进位”到月,而月份若超过12时还要“进位”到年。思考:可对该类增加你所考虑到的其他功能,如,对日期进行输入,计算二日期的间隔天数,计算某日期为星期几,打印对象当前数据的y年m月的月历,一次增加若干天,对两个日期进行其他比较运算等。(1) 需求分析: 由于这个程序涉及到日期运算,就不得不考虑到闰年的判断、大月份和小月份的判断,还要判断真假引入bool函数,同时还要构造类。(2) 概要设计:首先设计一个类,将y、m、d定义为private,其余是public。在void incrementday()中运用以前面向过程中闰年判断的方法,然后再判断是否要进位,在类外定义一个bool形函数如果两个日期相等输出真,反之则为假。最后,设计一个输出函数要注意可读性和美观性。(3) 详细设计与编码:已提交;修改后可以多次输入。运行结果:(4) 调试分析:刚开始的时候把ttt.printdate()放前面而tt.printdate()放后面,结果首先输出的是后面的数,而实际加的是放后面的那个数。(5) 用户使用说明:个人觉得这个程序用户使用起来很容易操作,开始屏幕上面就输出“输入两个日期”,用户只需输入两个数按回车键就行了,为了能重复验证结果,我利用了一个for循环函数。(6) 测试分析:这个程序相当的成功!(7) 设计体会:很高兴!用学到了一些新的错误!3. 编程序,按如下方法求a矩阵的转置矩阵b:输入两个正整数m和n,而后通过使用指

温馨提示

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

评论

0/150

提交评论