最新版软件毕业课程设计总结报告1.docx
- 文档编号:12641253
- 上传时间:2023-04-21
- 格式:DOCX
- 页数:35
- 大小:151.30KB
最新版软件毕业课程设计总结报告1.docx
《最新版软件毕业课程设计总结报告1.docx》由会员分享,可在线阅读,更多相关《最新版软件毕业课程设计总结报告1.docx(35页珍藏版)》请在冰豆网上搜索。
最新版软件毕业课程设计总结报告1
编号:
()字号
《软件课程设计》报告
班级:
信科09-3班
姓名:
张晴刚
学号:
讲师:
谢红侠
中国矿业大学计算机科学与技术学院
2011年1月
软件课程设计任务书
专业年级:
电子信息科学与技术2009级
学生姓名:
张晴刚
任务下达日期:
2010年10月16日
课程设计日期:
2010年10月16日至2011年1月2日
课程设计题目:
类别
题目序号
面向过程
1,2,3,4,5,6,7
面向对象
1,2,3,4,5,6,7,8
图形界面
3
数据结构
1,2,3,4,6,9
软件课程设计指导教师评阅书
指导教师评语(①基础理论及基本技能的掌握;②独立解决实际问题的能力;③研究内容的理论依据和技术方法;④取得的主要成果及创新点;⑤工作态度及工作量;⑥总体评价及建议成绩;⑦存在问题等):
成绩:
指导教师签字:
年月日
==============================
第一部分基础题
第一题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进制正整数转换为罗马数据。
假设罗马数据中只使用“基值”字母:
M、D、C、L、X、V、I,分别用来表示1000、500、100、50、10、5、1。
…………………………………………………………………………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
Tarr[n];//n个T类型的数据存放于数组arr之中
public:
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日是星期几,而后任意指定某一天(再输入该年的任意一个月份日期),由程序计算出这一天是星期几。
注意,2月份闰年为29天,非闰年为28天;可被4整除而不可被100整除的年份、或者可被400整除的年份均为闰年。
//思考:
利用元年元月元日(即1年1月1日)是星期一的已知事实,可对程序进行改造,让用户仅输入一个表示日期的年月日,则程序就应计算出那一天是星期几。
需求分析:
当我们处理查找具体年份月日是周几的问题,往往会遇到闰年平年的问题,还有七天一循环的问题。
因此实现此类算法是很有必要的。
1.2概要设计:
对于指定具体年月日所在本年的第多少天,有如下算法。
intsum_day(intmonth,intday)
{
inti;
intday_tab[12]={};
for(i=0;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< 1.3详细设计与编码: #include usingnamespacestd; intmain() { intsum_day(int,int); intleap(int); intyear,month,day,days,s; cout<<"年,1月1日星期: "; cin>>year>>s; cout<<"指定月日: "; cin>>month>>day; 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< return0; } intsum_day(intmonth,intday) { inti; intday_tab[12]={}; for(i=0;i day+=day_tab[i]; return(day); } intleap(intyear) { intleap; leap=((year%4==0&&year%100! =0)||(year%400==0)); return(leap); } 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进制数。 假设罗马数据中只使用如下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。 显然是一个翻译程序,肯定是将一种表达形式换算成另一种表达形式。 该题是把罗马数字转换成十进制数,初步设想: 对于每个输入的字母,用一个算法返回一个指定的数值,算法如下: case'M': return1000;break; case'D': return500;break; case'C': return100;break; case'L': return50;break; case'X': return10;break; case'V': return5;break; case'I': return1;break; 对于罗马数据中每个字母对应数据累加过程,我们有如下算法: while((y=getchar())! ='\n') { if(f(x) elsem=m+f(x); x=y; } m=m+f(x); cout< return0; } 2.3详细设计与编码: #include usingnamespacestd; intmain() { intf(char); intm=0; charx,y; cout<<"输入罗马数字: "< cin>>x; while((y=getchar())! ='\n') { if(f(x) elsem=m+f(x); x=y; } m=m+f(x); cout< return0; } intf(charc) { switch(c) { case'M': return1000;break; case'D': return500;break; case'C': return100;break; case'L': return50;break; case'X': return10;break; case'V': return5;break; case'I': return1;break; } } 运行结果如下: 2.4调试分析 1程序开始不可少语句intf(char); intm=0; charx,y;//设“基值”并作零初始化,若不做初始化,字母输出任意值。 2.将对应的字母返回对应的值,然后把数值累加起来,除了对应之外没有其他难点 3.尝试着用其他方法编写 2.5用户使用说明: 用户直接从键盘输入罗马数字,按回车键可以方便得到输出的阿拉伯数字。 2.6设计心得: 此程序在设计之前,一定要分析好设计思路,分析每个罗马字母中返回的数值,做好相应的处理。 //第三题1.自定义一个示意性的复数类型complex,其中含有若干个成员函数,//使用该类可以完成复数的加法以及对复数的输出。 // //请完成类定义,并编制主函数,说明complex类对象,对定义的各成员函数进行调用。 3.1需求分析 运用对象实现该算法,说明complex类对象,对定义的各成员函数进行调用,是很有必要的。 3.2概要设计 classComplex { public: 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: doublereal;//复数实部 doubleimag;//复数虚部 }; 3.3详细设计与编码 #include usingnamespacestd; classComplex { public: Complex(){real=0;imag=0;} Complex(doubler,doublei){real=r;imag=i;} ComplexaddCom(Complex&c2); ComplexaddCom2(Complex&d2); ComplexaddCom3(Complex&e2); ComplexaddCom4(Complex&f2); voidoutCom(); private: doublereal; doubleimag; }; ComplexComplex: : addCom(Complex&c2) {Complexc; c.real=real+c2.real; c.imag=imag+c2.imag; returnc; } ComplexComplex: : addCom2(Complex&d2) {Complexd; d.real=real-d2.real; d.imag=imag-d2.imag; returnd; } ComplexComplex: : addCom3(Complex&e2) {Complexe; e.real=real*e2.real-imag*e2.imag; e.imag=real*e2.imag+e2.real*imag; returne; } ComplexComplex: : 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<<"("< intmain() { 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(); return0; } 运行结果如下: 3.4调试分析 1.定义Complex类很重要。 2.在Complex类中实现对两复数的加减乘除运算。 3.写程序时的位置对应,以便查错。 3.5用户使用说明: 屏幕直接显示。 3.6设计心得: 通过此题,我对上学期所学类的定义以及复数运算达到了复习的效果,熟悉了在类中调用个复数进行加减乘除运算的基本操作。 对于期原理有一定的掌握,所以这个程序设计倒是不难。 第四题/*6.编写一个具有如下样式的类模板tmplt,用于实现所谓的反序输出问题, 其中使用了类型参数T(使所处理的元素类型可变化)以及普通参数n(元素个数也可变化): template Tarr[n];//n个T类型的数据存放于数组arr之中 public: voiddataIn();//从键盘输入n个T类型数据放入arr数组中 voidreverseOut();//将arr数组中的数据按输入的相反顺序输出 }; 而后编制主函数,将类模板实例化为某个具体的类并说明类对象,之后通 过对象调用其负责输入数据的成员函数,再通过对象调用另一成员函数按反序输出那些输入数据。 */ 4.1需求分析 应用类模板tmplt,用于实现所谓的反序输出问题,使用了类型参数T以及普通参数n。 4.2概要设计 template Tarr[n];//n个T类型的数据存放于数组arr之中 public: voiddataIn();//从键盘输入n个T类型数据放入arr数组中 voidreverseOut();//将arr数组中的数据按输入的相反顺序输出 }; 4.3详细设计与编码 #include #include usingnamespacestd; template classtmplt {Tarr[n]; public: voiddateIn(){ inti; for(i=0;i cin>>arr[i];}; voidreverseOut(){ inti; for(i=n-1;i>=0;i--) cout< cout< }; intmain() {tmplt t1.dateIn(); t1.reverseOut(); tmplt t2.dateIn(); t2.reverseOut(); tmplt t3.dateIn(); t3.reverseOut(); tmplt t4.dateIn(); t4.reverseOut(); return0; } 运行结果如下: 4.4调试分析 1编程前一定要在整体考虑其结构和实现功能方面做足功夫 3对于数据的输入和输出,要首先在定义中先把它定义好,以便调用是直接调用。 4.函数对应的调用顺序要正确,不但容易阅读而且容易查错。 4.5用户使用说明: 用户可以输入若干组不同大小的数据,然后按回车键,程序系统会自动在屏幕上生成用户想要得到的结果。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新版 软件 毕业 课程设计 总结报告