




已阅读5页,还剩21页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
郑志安 编号:( )字 号软件课程设计报告班级:信科09-3班姓名:张晴刚学号:08093588讲师:谢红侠中国矿业大学计算机科学与技术学院2010年 1 月26软件课程设计任务书专业年级:电子信息科学与技术2009级学生姓名: 张晴刚 任务下达日期:2010年10月16日课程设计日期:2010年10月16日至2009年1月2日课程设计题目: 类别题目序号面向过程1,2,3,4,5,6,7面向对象1,2,3,4,5,6,7,8图形界面1数据结构1,2,3, 软件课程设计指导教师评阅书指导教师评语(基础理论及基本技能的掌握;独立解决实际问题的能力;研究内容的理论依据和技术方法;取得的主要成果及创新点;工作态度及工作量;总体评价及建议成绩;存在问题等):成 绩: 指导教师签字: 年 月 日目 录=第一部分 基础题1面向过程 第3题:使用如下所谓的简单变量“数据平移”方法来求出Fibonacci数列的第n项显示在屏幕上.71.1 需求分析11.2 概要设计.11.3 详细设计与编码.11.4 调试分析.21.5 用户使用说明 .31.6 设计心得.3 第7题3 2.1需求分析.32.2 概要设计.32.3 详细设计与编码.42.4 调试分析.42.5 用户使用说明 .52.6 设计心得.52面向对象 第3题利用虚函数手段,按照3种不同的计算方法来求出Fibonacci数列的第n项(的具体项值)并输出。.5 3.1需求分析.53.2 概要设计.53.3 详细设计与编码.63.4 调试分析.63.5 用户使用说明 .73.6 设计心得.7 第8题编写程序实现一个简单的电话记录簿,要求记录的个人信息包括:姓名,单位,家庭电话,移动电话,并包含保存、输出、查询、修改等功能.7 4.1需求分析.74.2 概要设计.74.3 详细设计与编码.84.4 调试分析.84.5 用户使用说明 .94.6 设计心得.103可视化编程 第1题实现计算器编程。该计算器需要实现基础的数学运算,如加,减,乘,除。5.1需求分析.115.2 概要设计.125.3 详细设计与编码.135.4 调试分析.145.5 用户使用说明 .155.6 设计心得.15 第2题使用Visual C+ 6.0实现以下绘图程序(可以参考附件中的程序代码)。6.1需求分析.156.2 概要设计.156.3 详细设计与编码.156.4 调试分析.166.5 用户使用说明 .166.6 设计心得.16 4数据结构 第2题假设有一个循环链表的长度大于1,且表中既无头结点也无头指针。已知p为指向链表中某结点的指针,试编写算法在链表中删除结点p 的前趋结点。7.1需求分析.177.2 概要设计.177.3 详细设计与编码.177.4 调试分析.187.5 用户使用说明 187.6 设计心得.18 第3题求A矩阵的转置矩阵B8.1需求分析.198.2 概要设计.198.3 详细设计与编码.198.4 调试分析.198.5 用户使用说明 .198.6 设计心得.201面向过程 第3题 编程序,使用如下所谓的简单变量“数据平移”方法来求出Fibonacci数列的第n项(的具体项值)并显示在屏幕上(正整数n通过键盘输入)1.1 需求分析:当我们在生活中或者数学、物理等学习过程中,往往会遇到累加问题,即新的项是由于它距离最近的两项的加和,不断的生成新项,实现了累加,进行所谓的“数据平移”,因此实现此类算法是很有必要的。1.2 概要设计: 说明变量old1=1,old2=1,newItem;新的Fibonacci项newItem总是“距它最近”的前两项(old1与old2)的累加和。而后通过“old1=old2; old2=newItem;”进行所谓的“数据平移”。接着计算另一个新的Fibonacci项newItem,依次循环,直到求出数列的第n项时为止。Fibonacci数列的计算公式如下: fib(1) = 1;fib(2) = 1;fib(n) = fib(n-1) + fib(n-2); /对大于等于3的任意n1.3详细设计与编码:(流程图)old1=1,old2=1 真 假NewItem=Old1+old2Old1的值赋给K把old2的值赋给old1, newItem的值赋给old2(实现移位)返回错误 (最终代码及必要说明 ) #include using namespace std;int main()int old1=1,old2=1,newItem,n,k; /定义变量,newItem是总是靠近他的前两项cout-endl请输入数列的项n;for(int i=0;in;i+) /设循环,使i按循环向上加,直到NnewItem=old1+old2; /newItem等于它的前两项之和k=old1; /累加和算法,在每一次循环过程中将其值前移old1=old2;old2=newItem;coutkendl; /输出计算后的Kreturn 0;截图如下1.4调试分析一定要确定old1,old2, 1.newItem,n,k的类型是int型12赋值过程中一定是newItem=old1+old2; 而不是old1+old2 =newItem3. 注意体会尝试程序的健壮性。4尝试用其他方法完成该程序1.5用户说明用户可直接通过键盘向界面输入你要求的Fibonacci数列的第n项,按回车键即可得到答案。1.6 设计心得:在这个程序设计中,所用的都是最基本的知识,对于最基本的知识一定要达到熟练的程度,才能熟中生巧,设计出高质量的程序。2.面向过程 第7题将输入的罗马数据化为10进制数。假设罗马数据中只使用如下7个“基值”字母:M、D、C、L、X、V、I,分别用来表示1000、500、100、50、10、5、1。2.1需求分析:我们在生活中常会遇见用罗马数字表示的代码或者数学、物理等学习过程中,往往会遇到将罗马数字转化为十进制数的计算,设计一个简单的转换程序是很有意义的2.2概要设计将输入的10进制正整数转换为罗马数据。假设罗马数据中只使用“基值”字母:M、D、C、L、X、V、I,分别用来表示1000、500、100、50、10、5、1。显然是一个翻译程序,肯定是将一种表达形式换算成另一种表达形式。该题是把罗马数字转换成十进制数,初步设想:输入一个字符数组,即一个罗马数字,然后按照其位数上的权值展开后输出,即输出一个十进制数。2.3详细设计与编码: (流程图)a=1000*m+500*d+100*c+50*l+10*x+5*v+1*i; /将翻译的数付给a执行判断句,即else if语句输入字符串,即罗马数字判断字符的表达和字符的初始化,m,d,c,等设0 输入输出 任意一个步骤出错输出错误 运行结果:2.4调试分析1程序开始不可少语句 int a,m=0,d=0,c=0,l=0,x=0,v=0,i=0; /设“基值”并作零初始化,若不做初始化,字母输出任意值。2将对应的权值相乘,将各位加和赋给a输出,除了对应之外没有其他难点3尝试着用其他方法编写2.5用户使用说明: 用户可意直接根据提示从键盘输入罗马数字,按回车键可以方便得到结果2.6设计心得:此程序在设计之前,一定要分析好设计思路,巧妙运用循环语句。同时也要注意时间复杂度的分析,尽量使程序高效运行。3面向对象 第3题利用虚函数手段,按照3种不同的计算方法来求出Fibonacci数列的第n项(的具体项值)并输出。具体地说,可通过在基类baseCla及其派生类fib1Cla、fib2Cla和fib3Cla中说明如下的同一个虚函数“virtual double fib(int n);”,来实现求Fibonacci数列第n项值并返回的3种不同求解方法。3.1需求分析运用对象实现该算,法虽是递归算法,对于实现大规模,繁多数据的处理是很有必要的。3.2概要设计 主要函数列表,每条记录应包括函数名及功能简要说明1.class baseCla /自定义基类baseCla2.virtual double fib(int n)=0 /在基类中说明一个虚函数fib,且为纯虚函数3.class fib1Cla:public baseCla /基类class baseCla中派生出的fib1Cla4.virtual double fib(int n) /派生类中说明同一个虚函数fib 5.void fun(baseCla *p, int n) /定义函数,用n指明项6.void main() /主函数调用输出3.3详细设计与编码代码略 截屏如下:3.4调试分析1 定义基类baseCla的位置很重要。2基类class baseCla中派生出的fib1Cla的表达式的写法不可些错 为class fib1Cla:public baseCla3 写程序时的位置对应,以便查错。4 函数对应的调用顺序要正确,不但容易阅读而且容易查错。5 考虑程序的健壮性,并不断尝试不同的更简洁的算法使我们当前的工作。3.5用户使用说明:屏幕直接显示。3.6设计心得:通过此题,我对上学期所学类的定义以及应用达到了复习的效果,熟悉了函数的调用等编程,Fiboccas数列由于上学期就学过,对于期原理有一定的掌握,所以这个程序设计倒是不难。4面向对象 第8题编写程序实现一个简单的电话记录簿,要求记录的个人信息包括:姓名,单位,家庭电话,移动电话。具体功能如下: 1.创建信息链表并以磁盘文件保存。2.读取磁盘文件并显示输出所有人的移动电话。 3.按姓名或单位查询家庭电话。 4.通过姓名和单位确定个人,修改其电话信息并存盘. 4.1需求分析把家庭电话本用软件的形式实现,可以实现记录,查找,修改以及反应有关信息更加自动化,而且以管理等优点,特别是在电话和信息很多很复杂是更会显示出其优点,因此实现电话本系统是很有必要的。4.2概要设计按要求实现一个简单的电话簿,不难想到定义功能类,实现输入,保存,读取,查询,修改等功能。初步设计:1.struct phonelist/信息输入类2.phonelist *creat()/创建电话簿3.find(phonelist *head,char name) /信息查询类 4.change(phonelist *head,char name ) /信息改变类5.int main()/ 主函数调用,4.3详细设计与编码代码略 截屏如下:4.4调试分析1编程前一定要在整体考虑其结构和实现功能方面做足功夫3程序时的位置对应,以便查错。4函数对应的调用顺序要正确,不但容易阅读而且容易查错。5考虑程序的健壮性,并不断尝试不同的更简洁的算法使我们当前的4.5用户使用说明:用户可以根据提示从键盘先选择功能键,然后一步一步根据提示输入信息,程序系统会自动在屏幕上生成用户想要的信息4.6设计心得:通过该程序的设计,更体会到在大规模的信息调用类以及生成类会更好,更进一步培养自己的编程风格,先整体规划,然后一步一步实现;出错处理的能力;算法复杂度分析,期待着更大的进步 5 可视化编程 计算器5.1用你熟悉的一种可视化编程语言实现如下图所示的计算器。该计算器需要实现基础的数学运算,如加,减,乘,除。5.1需求分析小型计算器的可视化编程5.2概要设计程序是用mfc制作,在进入mfc时选择基本对话框来建立工程,然后根据题目图形的需求,在工作区的Resourceview中的Dialog进行框架的设计,如上图所示的图形进行按钮的拖放,当按钮都拖放完毕后就进行按钮函数的设计5.3详细设计与编码实现过程:1 加法的实现,如7+8=15的操作如下:2.乘法的实现,如8*9=72的操作如下:减法和除法的实现就不再表示了。5.4调试分析本程序的设计过程是根据学校所给的范例程序仿制而成,当将程序写进去后,在调试时出现的主要问题就是不能显示点击的数字和结果,经过5.5用户使用说明本程序是简单的计算器程序使用很简单,直接点击按钮和相应的算术符号就能得到结果。5.6设计心得 可视化编程编程由于以前没接触过所以较难,许多函数都要查资料,或上网搜寻。1. 6可视化编程使用Visual C+ 6.0实现以下绘图程序(可以参考附件中的程序代码)。要求:(1)程序中包含图中所示菜单项和工具栏;(2)先选择菜单项或单击工具栏上的命令按钮,然后在窗体空白区域单击鼠标后,绘制相应菜单项或命令按钮指定的图形、文字。6.1需求分析学习使用编程实现绘图6.2概要设计程序是用MFC制作,在进入MFC时选择基本对话框来建立工程,然后根据题目图形的需求,在工作区的Resourceview中的Dialog进行框架的设计,跟着视频思路往下走。6.3详细设计与编码第一步:初步界面第二步:图形界面第三步:实现文字输出第四部:实现绘图第五步:图形与文字:6.4调试分析本程序的设计过程是根据学校所给的范例程序仿制而成,操作较简单,写入程序后较容易调试。6.5用户使用说明根据窗口上面的提示用鼠标左键单击即可得到用户所用的图形和文字。6.6设计心得通过花一定的时间看完MFC视频跟着提示的步骤制作,熟练了可视化编程的步骤,为以后的学习积累基础。7数据结构第二题假设有一个循环链表的长度大于1,且表中既无头结点也无头指针。已知p为指向链表中某结点的指针,试编写算法在链表中删除结点p 的前趋结点。7.1需求分析在数据结构的学习中,链表是最常见的存储方式,链表的插入,删除,改正也就是很常用的操作,对它的学习就显得很有必要而且很有意义。7.2概要设计1. 对节点的删除,无疑先要定义一个结构体和指针,运来存放和查找要删除的节点struct Node *next2.设计一个类求前驱节点:Node* getPriorNode(Node *node)3. 删除指向结点的前驱结点:deletePriorNode(Node *node) 4. 输出原始链表:printList(Node *node) 5.主函数将操作后的链表输出。7.3详细设计与编码代码略截图如下;7.4调试分析1.我在首次调试时错将指向前驱节点的指针分开写了,这显然是一个错,指针是一个具有整体性的符号,不能分裂。2.编写过程要细心,缺分号,括号的现象也有时发生7.5用户使用说明程序中的数字是从编程时输入的,平心而论该程序还有很大的改编空间,是一个静态的检验程序7.6
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 云南省沧源佤族自治县2025年上半年事业单位公开遴选试题含答案分析
- 河北省临西县2025年上半年公开招聘城市协管员试题含答案分析
- 2025版土地征用拆迁补偿买卖合同范本
- 2025年度房地产纠纷调解居间合同范本:房地产纠纷调解居间服务协议
- 2025年度货物装卸车辆承运合同
- 2025年退休返聘技术人员企业研发合作协议
- 2025年水利工程打井合同范本与水资源管理协议
- 2025年彩钢房安装及售后服务合同范本
- 2025年度古建筑修复砌墙工程合同样本
- 2025年度保健品代理销售合同规范汇编
- 2025-2026学年北师大版数学小学三年级上册(全册)教案设计及教学计划
- 2025年部编版新教材道德与法治二年级上册教学计划(含进度表)
- 2025年秋八年级开学主题班会第一课课件(初二正青春拼搏向暖阳)
- 四级育婴员模拟考试题及答案
- 大管棚施工记录表
- 福建省新规范监理旁站用表附件1重要分部分项工程监理旁站用表
- 自来水厂安全标准化管理手册参考模板范本
- TRIZ试题库详细版
- ppt随机抽题课件
- 医学人文与修养(课堂PPT)
- NBT47018承压设备用焊接材料订货技术条件
评论
0/150
提交评论