最新版软件毕业课程设计总结报告1Word文件下载.docx
《最新版软件毕业课程设计总结报告1Word文件下载.docx》由会员分享,可在线阅读,更多相关《最新版软件毕业课程设计总结报告1Word文件下载.docx(35页珍藏版)》请在冰点文库上搜索。
⑤工作态度及工作量;
⑥总体评价及建议成绩;
⑦存在问题等):
成绩:
指导教师签字:
年月日
==============================
第一部分基础题
第一题1面向过程
5.编程序,使用户任意输入一个年份以及该年的1月1日是星期几,而后任意指定某一天(再输入该年的任意一个月份日期),由程序计算出这一天是星期几。
注意,2月份闰年为29天,非闰年为28天;
可被4整除而不可被100整除的年份、或者可被400整除的年份均为闰年。
//思考:
利用元年元月元日(即1年1月1日)是星期一的已知事实,可对程序进行改造,让用户仅输入一个表示日期的年月日,则程序就应计算出那一天是星期几。
……………..………………....................................7
1.1需求分析…………………………………………………………………………1
1.2概要设计………………………………………………………………………...1
1.3详细设计与编码………………………………………………………………...1
1.4调试分析………………………………………………………………………...2
1.5用户使用说明………………………………………………………………….3
1.6设计心得………………………………………………………………………...3
第二题
7.将输入的罗马数据化为10进制数。
假设罗马数据中只使用如下7个“基值”字母:
M、D、C、L、X、V、I,分别用来表示1000、500、100、50、10、5、1。
如,罗马数据LXXXVII表示10进制的87。
将输入的10进制正整数转换为罗马数据。
假设罗马数据中只使用“基值”字母:
…………………………………………………………………………3
2.1需求分析………………………………………………………………………….3
2.2概要设计………………………………………………………………………..3
2.3详细设计与编码………………………………………………………………...4
2.4调试分析………………………………………………………………………...4
2.5用户使用说明………………………………………………………………….5
2.6设计心得………………………………………………………………………...5
2面向对象
第三题
1.第一题自定义一个示意性的复数类型complex,其中含有若干个成员函数,使用该类可以完成复数的加法以及对复数的输出。
请完成类定义,并编制主函数,说明complex类对象,对定义的各成员函数进行调用。
classcomplex{
doublereal;
//复数实部
doubleimag;
//复数虚部
public:
complex();
//无参构造函数
complex(doubler,doublei);
//2参构造函数
complexaddCom(complexc2);
//调用者对象与对象c2相加,返回complex类对象
voidoutCom();
//输出调用者对象的有关数据(各分量)
};
进一步,在类中添加对复数进行其他基本运算(如,复数减、乘、除、取模等)的相应成员函数,并通过主函数处的调用来验证各函数的使用正确性。
………………………………..………………….5
3.1需求分析…………………………………………………………………………..5
3.2概要设计………………………………………………………………………...5
3.3详细设计与编码………………………………………………………………...6
3.4调试分析………………………………………………………………………..6
3.5用户使用说明………………………………………………………………….7
3.6设计心得………………………………………………………………………..7
第四题
6编写一个具有如下样式的类模板tmplt,用于实现所谓的反序输出问题,其中使用了类型参数T(使所处理的元素类型可变化)以及普通参数n(元素个数也可变化):
template<
classT,intn>
classtmplt{
Tarr[n];
//n个T类型的数据存放于数组arr之中
voiddataIn();
//从键盘输入n个T类型数据放入arr数组中
voidreverseOut();
//将arr数组中的数据按输入的相反顺序输出
………………………………………………………………….……………………..7
4.1需求分析…………………………………………………………………………..7
4.2概要设计………………………………………………………………………...7
4.3详细设计与编码………………………………………………………………...8
4.4调试分析………………………………………………………………………...8
4.5用户使用说明………………………………………………………………….9
4.6设计心得………………………………………………………………………...10
第五题可视化编程
用你熟悉的一种可视化编程语言实现以下汉诺塔演示程序(可以参考附件中的程序代码)。
5.1需求分析…………………………………………………………………………..11
5.2概要设计………………………………………………………………………...12
5.3详细设计与编码………………………………………………………………...13
5.4调试分析………………………………………………………………………...14
5.5用户使用说明………………………………………………………………….15
5.6设计心得………………………………………………………………………...15
数据结构
第六题
2假设有一个循环链表的长度大于1,且表中既无头结点也无头指针。
已知p为指向链表中某结点的指针,试编写算法在链表中删除结点p的前趋结点。
6.1需求分析…………………………………………………………………………..17
6.2概要设计………………………………………………………………………...17
6.3详细设计与编码………………………………………………………………...17
6.4调试分析………………………………………………………………………...18
6.5用户使用说明…………………………………………………………………18
6.6设计心得………………………………………………………………………...18
第七题编程序,按如下方法求A矩阵的转置矩阵B:
输入两个正整数m和n,而后通过使用指针配合new运算符生成一个m行n列的二维动态数组A以及另一个n行m列的二维动态数组B,之后为A输入数据(A矩阵数据),进而求出其转置矩阵B(数据放动态数组B中)并输出结果。
7.1需求分析…………………………………………………………………………..19
7.2概要设计………………………………………………………………………...19
7.3详细设计与编码………………………………………………………………...19
7.4调试分析………………………………………………………………………...19
7.5用户使用说明………………………………………………………………….19
7.6设计心得………………………………………………………………………...20
1面向过程第5题5.编程序,使用户任意输入一个年份以及该年的1月1日是星期几,而后任意指定某一天(再输入该年的任意一个月份日期),由程序计算出这一天是星期几。
需求分析:
当我们处理查找具体年份月日是周几的问题,往往会遇到闰年平年的问题,还有七天一循环的问题。
因此实现此类算法是很有必要的。
1.2概要设计:
对于指定具体年月日所在本年的第多少天,有如下算法。
intsum_day(intmonth,intday)
{
inti;
intday_tab[12]={};
for(i=0;
i<
month-1;
i++)
day+=day_tab[i];
return(day);
}
求解平年还是闰年的算法如下:
intleap(intyear)
intleap;
leap=((year%4==0&
&
year%100!
=0)||(year%400==0));
return(leap);
求解指定日期是周几的算法如下:
days=sum_day(month,day);
if(leap(year)&
month>
=3)
days=days+1;
s=s+(days-1)%7;
if(s>
7)
s=s%7;
cout<
<
s<
endl;
1.3详细设计与编码:
#include<
iostream>
usingnamespacestd;
intmain()
intsum_day(int,int);
intleap(int);
intyear,month,day,days,s;
"
年,1月1日星期:
;
cin>
>
year>
s;
指定月日:
day;
return0;
no
yes
1.4调试分析
一定要确定old1,old2,1.year,month,day,days,s的类型是int型的。
1.
2.对于平年闰年的分析,要分别对待,加以区分。
3.注意体会尝试程序的健壮性。
4.尝试用其他方法完成该程序
1.5用户说明
用户可直接通过键盘向界面输入你指定年份1月1日是星期几,然后输入本年的月日,即可在屏幕上得到本年指定年月日是周几了。
1.6设计心得:
在这个程序设计中,所用的都是最基本的知识,对于最基本的知识一定要达到熟练的程度,才能熟中生巧,设计出高质量的程序。
2.面向过程第7题将输入的罗马数据化为10进制数。
2.1需求分析:
我们在生活中常会遇见用罗马数字表示的代码或者数学、物理等学习过程中,往往会遇到将罗马数字转化为十进制数的计算,设计一个简单的转换程序是很有意义的
2.2概要设计
显然是一个翻译程序,肯定是将一种表达形式换算成另一种表达形式。
该题是把罗马数字转换成十进制数,初步设想:
对于每个输入的字母,用一个算法返回一个指定的数值,算法如下:
case'
M'
:
return1000;
break;
D'
return500;
C'
return100;
L'
return50;
X'
return10;
V'
return5;
break;
I'
return1;
对于罗马数据中每个字母对应数据累加过程,我们有如下算法:
while((y=getchar())!
='
\n'
)
{
if(f(x)<
f(y))m=m-f(x);
elsem=m+f(x);
x=y;
}
m=m+f(x);
cout<
m<
return0;
2.3详细设计与编码:
intf(char);
intm=0;
charx,y;
输入罗马数字:
cin>
x;
intf(charc)
switch(c)
运行结果如下:
2.4调试分析
1程序开始不可少语句intf(char);
//设“基值”并作零初始化,若不做初始化,字母输出任意值。
2.将对应的字母返回对应的值,然后把数值累加起来,除了对应之外没有其他难点
3.尝试着用其他方法编写
2.5用户使用说明:
用户直接从键盘输入罗马数字,按回车键可以方便得到输出的阿拉伯数字。
2.6设计心得:
此程序在设计之前,一定要分析好设计思路,分析每个罗马字母中返回的数值,做好相应的处理。
//第三题1.自定义一个示意性的复数类型complex,其中含有若干个成员函数,//使用该类可以完成复数的加法以及对复数的输出。
//
//请完成类定义,并编制主函数,说明complex类对象,对定义的各成员函数进行调用。
3.1需求分析
运用对象实现该算法,说明complex类对象,对定义的各成员函数进行调用,是很有必要的。
3.2概要设计
classComplex
Complex(){real=0;
imag=0;
}//无参构造函数
Complex(doubler,doublei){real=r;
imag=i;
}//2参构造函数
ComplexaddCom(Complex&
c2);
//实现加法运算;
ComplexaddCom2(Complex&
d2);
//实现减法运算;
ComplexaddCom3(Complex&
e2);
//实现乘法运算;
ComplexaddCom4(Complex&
f2);
//实现除法运算;
voidoutCom();
//输出结果运算
private:
//复数实部
//复数虚部
3.3详细设计与编码
#include<
ComplexComplex:
addCom(Complex&
c2)
{Complexc;
c.real=real+c2.real;
c.imag=imag+c2.imag;
returnc;
addCom2(Complex&
d2)
{Complexd;
d.real=real-d2.real;
d.imag=imag-d2.imag;
returnd;
addCom3(Complex&
e2)
{Complexe;
e.real=real*e2.real-imag*e2.imag;
e.imag=real*e2.imag+e2.real*imag;
returne;
addCom4(Complex&
f2)
{Complexf;
f.real=(real*f2.real+imag*f2.imag)/(f2.real*f2.real+f2.imag*f2.imag);
f.imag=(f2.real*imag-real*f2.imag)/(f2.real*f2.real+f2.imag*f2.imag);
returnf;
voidComplex:
outCom()
{cout<
("
real<
"
imag<
i)"
Complexc1(5,4),c2(3,4),c3,d1,e1,f1;
c3=c1.addCom(c2);
d1=c1.addCom2(c2);
e1=c1.addCom3(c2);
f1=c1.addCom4(c2);
c3.outCom();
d1.outCom();
e1.outCom();
f1.outCom();
3.4调试分析
1.定义Complex类很重要。
2.在Complex类中实现对两复数的加减乘除运算。
3.写程序时的位置对应,以便查错。
3.5用户使用说明:
屏幕直接显示。
3.6设计心得:
通过此题,我对上学期所学类的定义以及复数运算达到了复习的效果,熟悉了在类中调用个复数进行加减乘除运算的基本操作。
对于期原理有一定的掌握,所以这个程序设计倒是不难。
第四题/*6.编写一个具有如下样式的类模板tmplt,用于实现所谓的反序输出问题,
其中使用了类型参数T(使所处理的元素类型可变化)以及普通参数n(元素个数也可变化):
而后编制主函数,将类模板实例化为某个具体的类并说明类对象,之后通
过对象调用其负责输入数据的成员函数,再通过对象调用另一成员函数按反序输出那些输入数据。
*/
4.1需求分析
应用类模板tmplt,用于实现所谓的反序输出问题,使用了类型参数T以及普通参数n。
4.2概要设计
4.3详细设计与编码
string>
classT,intn>
classtmplt
{Tarr[n];
voiddateIn(){
inti;
n;
arr[i];
voidreverseOut(){
for(i=n-1;
i>
=0;
i--)
arr[i]<
"
{tmplt<
int,8>
t1;
t1.dateIn();
t1.reverseOut();
tmplt<
float,8>
t2;
t2.dateIn();
t2.reverseOut();
char,8>
t3;
t3.dateIn();
t3.reverseOut();
string,4>
t4;
t4.dateIn();
t4.reverseOut();
4.4调试分析
1编程前一定要在整体考虑其结构和实现功能方面做足功夫
3对于数据的输入和输出,要首先在定义中先把它定义好,以便调用是直接调用。
4.函数对应的调用顺序要正确,不但容易阅读而且容易查错。
4.5用户使用说明:
用户可以输入若干组不同大小的数据,然后按回车键,程序系统会自动在屏幕上生成用户想要得到的结果。