软件课程设计总结报告Word文件下载.docx
- 文档编号:21667907
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:23
- 大小:353.50KB
软件课程设计总结报告Word文件下载.docx
《软件课程设计总结报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《软件课程设计总结报告Word文件下载.docx(23页珍藏版)》请在冰豆网上搜索。
②独立解决实际问题的能力;
③研究内容的理论依据和技术方法;
④取得的主要成果及创新点;
⑤工作态度及工作量;
⑥总体评价及建议成绩;
⑦存在问题等):
成绩:
指导教师签字:
年月日
==============================
第一部分基础题
1面向过程第3题:
使用如下所谓的简单变量“数据平移”方法来求出Fibonacci数列的第n项显示在屏幕上……………..………………....................................7
1.1需求分析…………………………………………………………………………1
1.2概要设计………………………………………………………………………...1
1.3详细设计与编码………………………………………………………………...1
1.4调试分析………………………………………………………………………...2
1.5用户使用说明………………………………………………………………….3
1.6设计心得………………………………………………………………………...3
第7题…………………………………………………………………………3
2.1需求分析………………………………………………………………………….3
2.2概要设计………………………………………………………………………..3
2.3详细设计与编码………………………………………………………………...4
2.4调试分析………………………………………………………………………...4
2.5用户使用说明………………………………………………………………….5
2.6设计心得………………………………………………………………………...5
2面向对象第3题利用虚函数手段,按照3种不同的计算方法来求出Fibonacci数列的第n项(的具体项值)并输出。
………………………………..………………….5
3.1需求分析…………………………………………………………………………..5
3.2概要设计………………………………………………………………………...5
3.3详细设计与编码………………………………………………………………...6
3.4调试分析………………………………………………………………………..6
3.5用户使用说明………………………………………………………………….7
3.6设计心得………………………………………………………………………..7
第8题编写程序实现一个简单的电话记录簿,要求记录的个人信息包括:
姓名,单位,家庭电话,移动电话,并包含保存、输出、查询、修改等功能………………………………………………………………….……………………..7
4.1需求分析…………………………………………………………………………..7
4.2概要设计………………………………………………………………………...7
4.3详细设计与编码………………………………………………………………...8
4.4调试分析………………………………………………………………………...8
4.5用户使用说明………………………………………………………………….9
4.6设计心得………………………………………………………………………...10
3可视化编程第1题
实现计算器编程。
该计算器需要实现基础的数学运算,如加,减,乘
除。
5.1需求分析…………………………………………………………………………..11
5.2概要设计………………………………………………………………………...12
5.3详细设计与编码………………………………………………………………...13
5.4调试分析………………………………………………………………………...14
5.5用户使用说明………………………………………………………………….15
5.6设计心得………………………………………………………………………...15
第2题使用VisualC++6.0实现以下绘图程序(可以参考附件中的程序代码)。
6.1需求分析…………………………………………………………………………..15
6.2概要设计………………………………………………………………………...15
6.3详细设计与编码………………………………………………………………...15
6.4调试分析………………………………………………………………………...16
6.5用户使用说明………………………………………………………………….16
6.6设计心得………………………………………………………………………...16
4数据结构第2题
假设有一个循环链表的长度大于1,且表中既无头结点也无头指针。
已知p为指向链表中某结点的指针,试编写算法在链表中删除结点p的前趋结点。
7.1需求分析…………………………………………………………………………..17
7.2概要设计………………………………………………………………………...17
7.3详细设计与编码………………………………………………………………...17
7.4调试分析………………………………………………………………………...18
7.5用户使用说明…………………………………………………………………18
7.6设计心得………………………………………………………………………...18
第3题
求A矩阵的转置矩阵B
8.1需求分析…………………………………………………………………………..19
8.2概要设计………………………………………………………………………...19
8.3详细设计与编码………………………………………………………………...19
8.4调试分析………………………………………………………………………...19
8.5用户使用说明………………………………………………………………….19
8.6设计心得………………………………………………………………………...20
1面向过程第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的任意n
1.3详细设计与编码:
(流程图)
真假
返回错误
(最终代码及必要说明)
#include<
iostream>
usingnamespacestd;
intmain()
{
intold1=1,old2=1,newItem,n,k;
//定义变量,newItem是总是靠近他的前两项
cout<
<
"
---------------------------"
endl<
请输入数列的项"
endl;
cin>
>
n;
for(inti=0;
i<
i++)//设循环,使i按循环向上加,直到N
newItem=old1+old2;
//newItem等于它的前两项之和
k=old1;
//累加和算法,在每一次循环过程中将其值前移
old1=old2;
old2=newItem;
}
k<
//输出计算后的K
return0;
截图如下
1.4调试分析
一定要确定old1,old2,1.newItem,n,k的类型是int型
1.
2.赋值过程中一定是newItem=old1+old2;
而不是old1+old2=newItem
3.注意体会尝试程序的健壮性。
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进制正整数转换为罗马数据。
假设罗马数据中只使用“基值”字母:
显然是一个翻译程序,肯定是将一种表达形式换算成另一种表达形式。
该题是把罗马数字转换成十进制数,初步设想:
输入一个字符数组,即一个罗马数字,然后按照其位数上的权值展开后输出,即输出一个十进制数。
2.3详细设计与编码:
(流程图)
输入
输出
任意一个步骤出错输出错误
运行结果:
2.4调试分析
1程序开始不可少语句inta,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中说明如下的同一个虚函数“virtualdoublefib(intn);
”,来实现求Fibonacci数列第n项值并返回的3种不同求解方法。
3.1需求分析
运用对象实现该算,法虽是递归算法,对于实现大规模,繁多数据的处理是很有必要的。
3.2概要设计
主要函数列表,每条记录应包括函数名及功能简要说明
1.classbaseCla//自定义基类baseCla
2.virtualdoublefib(intn)=0//在基类中说明一个虚函数fib,且为纯虚函数
3.classfib1Cla:
publicbaseCla//基类classbaseCla中派生出的fib1Cla
4.virtualdoublefib(intn)//派生类中说明同一个虚函数fib
5.voidfun(baseCla*p,intn)//定义函数,用n指明项
6.voidmain()//主函数调用输出
3.3详细设计与编码
代码略截屏如下:
3.4调试分析
1.定义基类baseCla的位置很重要。
2.基类classbaseCla中派生出的fib1Cla的表达式的写法不可些错为classfib1Cla:
publicbaseCla
3.写程序时的位置对应,以便查错。
4.函数对应的调用顺序要正确,不但容易阅读而且容易查错。
5.考虑程序的健壮性,并不断尝试不同的更简洁的算法使我们当前的工作。
3.5用户使用说明:
屏幕直接显示。
3.6设计心得:
通过此题,我对上学期所学类的定义以及应用达到了复习的效果,熟悉了函数的调用等编程,Fiboccas数列由于上学期就学过,对于期原理有一定的掌握,所以这个程序设计倒是不难。
4面向对象第8题编写程序实现一个简单的电话记录簿,要求记录的个人信息包括:
姓名,单位,家庭电话,移动电话。
具体功能如下:
1.创建信息链表并以磁盘文件保存。
2.读取磁盘文件并显示输出所有人的移动电话。
3.按姓名或单位查询家庭电话。
4.通过姓名和单位确定个人,修改其电话信息并存盘.
4.1需求分析
把家庭电话本用软件的形式实现,可以实现记录,查找,修改以及反应有关信息更加自动化,而且以管理等优点,特别是在电话和信息很多很复杂是更会显示出其优点,因此实现电话本系统是很有必要的。
4.2概要设计
按要求实现一个简单的电话簿,不难想到定义功能类,实现输入,保存,读取,查询,修改等功能。
初步设计:
1.structphonelist//信息输入类
2.phonelist*creat()//创建电话簿
3.find(phonelist*head,charname[])//信息查询类
4.change(phonelist*head,charname[])//信息改变类
5.intmain()//主函数调用,
4.3详细设计与编码
代码略截屏如下:
4.4调试分析
1编程前一定要在整体考虑其结构和实现功能方面做足功夫
3程序时的位置对应,以便查错。
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可视化编程使用VisualC++6.0实现以下绘图程序(可以参考附件中的程序代码)。
要求:
(1)程序中包含图中所示菜单项和工具栏;
(2)先选择菜单项或单击工具栏上的命令按钮,然后在窗体空白区域单击鼠标后,绘制相应菜单项或命令按钮指定的图形、文字。
6.1需求分析
学习使用编程实现绘图
6.2概要设计
程序是用MFC制作,在进入MFC时选择基本对话框来建立工程,然后根据题目图形的需求,在工作区的Resourceview中的Dialog进行框架的设计,跟着视频思路往下走。
6.3详细设计与编码
第一步:
初步界面
第二步:
第三步:
实现文字输出
第四部:
实现绘图
第五步:
图形与文字:
6.4调试分析
本程序的设计过程是根据学校所给的范例程序仿制而成,操作较简单,写入程序后较容易调试。
6.5用户使用说明
根据窗口上面的提示用鼠标左键单击即可得到用户所用的图形和文字。
6..6设计心得
通过花一定的时间看完MFC视频跟着提示的步骤制作,熟练了可视化编程的步骤,为以后的学习积累基础。
7数据结构第二题假设有一个循环链表的长度大于1,且表中既无头结点也无头指针。
7.1需求分析
在数据结构的学习中,链表是最常见的存储方式,链表的插入,删除,改正也就是很常用的操作,对它的学习就显得很有必要而且很有意义。
7.2概要设计
1.对节点的删除,无疑先要定义一个结构体和指针,运来存放和查找要删除的节点structNode*next
2.设计一个类求前驱节点:
Node*getPriorNode(Node*node)
3.删除指向结点的前驱结点:
deletePriorNode(Node*node)
4.输出原始链表:
printList(Node*node)
5.主函数将操作后的链表输出。
7.3详细设计与编码
代码略
截图如下;
7.4调试分析
1.我在首次调试时错将指向前驱节点的指针分开写了,这显然是一个错,,指针是一个具有整体性的符号,不能分裂。
2.编写过程要细心,缺分号,括号的现象也有时发生
7.5用户使用说明
程序中的数字是从编程时输入的,平心而论该程序还有很大的改编空间,是一个静态的检验程序
7.6设计心得
进一步掌握了链表的基本操作,前驱指针在查找节点时的作用,类的整体设计和个类之间的关系,弄懂这些编程的要点,无论是在今后的学习还是调试过程中都是很有意义的。
8数据结构第三题求A矩阵的转置矩阵B
8..1需求分析
矩阵是物理数学中极其常见的数学工具,研究它的运算也是十分重要的,特别的在计算机程序中的应用是更重要的
8.2概要设计
输入两个正整数m和n,而后通过使用指针配合new运算符生成一个m行n列的二维动态数组A以及另一个n行m列的二维动态数组B,之后为A输入数据(A矩阵数据),进而求出其转置矩阵B(数据放动态数组B中)。
既是要求又是提示,故有一下提纲:
1.p=newint*[m];
q=newint*[n];
建立动态数组分别存放行和列
2.for(i=0;
m;
i++)for(j=0;
j<
j++)设循环,i遍历行,j遍历列
3.q[j][i]=p[i][j];
转置
8.3详细设计与编码
代码略
截图
8.4调试分析
本程序的编写,调试费了好大的力气,具体的:
1.int**p,**q指针的定义符号问题,即指向指针的指针
2.p=newint*[m],q=newint*[n]动态数组的定义问题
3.for(i=0;
j++)i遍历行j遍历列并各自循环
8.5用户使用说明
用户通过键盘输入矩阵,按回车键即可得结果
8.6设计心得
此程序看似虽看简单,编写实属不易,通过改题目,掌握了矩阵的有关操作,输入,动态数组的应用以前没见过,是我通过看《C++技术内幕》上面的一个例题而得;
掌握了转置的输出
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 课程设计 总结报告