软件毕业课程设计总结报告1
更新时间:2024-05-23 10:02:01 阅读量: 综合文库 文档下载
(此文档为word格式,下载后您可任意编辑修改!)
编号:( )字 号
《软件课程设计》报告
班级:信科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类对象,对定义的各成员函数进行调用。 class complex{ double real; 复数实部 double imag; 复数虚部 public: complex(); 无参构造函数 complex(double r, double i); 2参构造函数 complex addCom(complex c2); 调用者对象与对象c2相加,返回complex类对象
void outCom (); 输出调用者对象的有关数据(各分量) };
进一步,在类中添加对复数进行其他基本运算(如,复数减、乘、除、取模等)的相应成员函数,并通过主函数处的调用来验证各函数的使用正确性。 ………………………………..………………….5
3.1需求分析…………………………………………………………………………..5 3.2 概要设计………………………………………………………………………...5 3.3 详细设计与编码………………………………………………………………...6 3.4 调试分析………………………………………………………………………..6 3.5 用户使用说明 ………………………………………………………………….7 3.6 设计心得………………………………………………………………………..7
第四题
6 编写一个具有如下样式的类模板tmplt,用于实现所谓的反序输出问题,其中使用了类型参数T(使所处理的元素类型可变化)以及普通参数n(元素个数也可变化): template
………………………………………………………………….……………………..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 概要设计:
对于指定具体年月日所在本年的第多少天,有如下算法。
int sum_day(int month,int day) { int i; int day_tab[12]={ }; for(i=0;i 求解平年还是闰年的算法如下: int leap(int year) { int leap; leap=((year%4==0&&year0!=0)||(year@0==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 int sum_day(int,int); int leap(int); int year,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< int sum_day(int month,int day) { int i; int day_tab[12]={ }; for(i=0;i day+=day_tab[i]; return (day); } int leap(int year) { int leap; leap=((year%4==0&&year0!=0)||(year@0==0)); return (leap); } no yes 1.4调试分析 1. year,month,day,days,s的类型是int型的。 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':return 1000;break; case 'D':return 500;break; case 'C':return 100;break; case 'L':return 50;break; case 'X':return 10;break; case 'V':return 5;break; case 'I':return 1;break; 对于罗马数据中每个字母对应数据累加过程,我们有如下算法: while((y=getchar())!='\\n') { if(f(x) m=m+f(x); cout< 2.3详细设计与编码: #include int f(char c) { switch(c) { case 'M':return 1000;break; case 'D':return 500;break; case 'C':return 100;break; case 'L':return 50;break; case 'X':return 10;break; case 'V':return 5;break; case 'I':return 1;break; } } 运行结果如下: 2.4调试分析 1程序开始不可少语句 int f(char); int m=0; char x,y;设“基值”并作零初始化,若不做初始化,字母输出任意值。 2.将对应的字母返回对应的值,然后把数值累加起来,除了对应之外没有其他难点 3.尝试着用其他方法编写 2.5用户使用说明: 用户直接从键盘输入罗马数字,按回车键可以方便得到输出的阿拉伯数字。 2.6设计心得: 此程序在设计之前,一定要分析好设计思路,分析每个罗马字母中返回的数值,做好相应的处理。 第三题 1. 自定义一个示意性的复数类型complex,其中含有若干个成员函数,使用该类可以完成复数的加法以及对复数的输出。 请完成类定义,并编制主函数,说明complex类对象,对定义的各成员函数进行调用。 3.1需求分析 运用对象实现该算法,说明complex类对象,对定义的各成员函数进行调用,是很有必要的。 3.2概要设计 class Complex { public: Complex(){real=0;imag=0;} 无参构造函数 Complex(double r,double i){real=r;imag=i;} 2参构造函数 Complex addCom(Complex &c2);实现加法运算; Complex addCom2(Complex &d2); 实现减法运算; Complex addCom3(Complex &e2); 实现乘法运算; Complex addCom4(Complex &f2); 实现除法运算; void outCom();输出结果运算 private: double real; 复数实部 double imag; 复数虚部 }; 3.3详细设计与编码 #include public: Complex(){real=0;imag=0;} Complex(double r,double i){real=r;imag=i;} Complex addCom(Complex &c2); Complex addCom2(Complex &d2); Complex addCom3(Complex &e2); Complex addCom4(Complex &f2); void outCom(); private: double real; double imag; }; Complex Complex::addCom(Complex &c2) {Complex c; c.real=real+c2.real; c.imag=imag+c2.imag; return c; } Complex Complex::addCom2(Complex &d2) {Complex d; d.real=real-d2.real; d.imag=imag-d2.imag; return d; } Complex Complex::addCom3(Complex &e2) {Complex e; e.real=real*e2.real-imag*e2.imag; e.imag=real*e2.imag+e2.real*imag; return e; } Complex Complex::addCom4(Complex &f2) {Complex f; 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); return f; } void Complex::outCom() {cout<<\int main() { Complex c1(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(); return 0; } 运行结果如下: 3.4调试分析 1. 定义Complex类很重要。 2.在Complex类中实现对两复数的加减乘除运算。 3. 写程序时的位置对应,以便查错。 3.5用户使用说明: 屏幕直接显示。 3.6设计心得: 通过此题,我对上学期所学类的定义以及复数运算达到了复习的效果,熟悉了在类中调用个复数进行加减乘除运算的基本操作。对于期原理有一定的掌握,所以这个程序设计倒是不难。 第四题*6. 编写一个具有如下样式的类模板tmplt,用于实现所谓的反序 输出问题, 其中使用了类型参数T(使所处理的元素类型可变化)以及普通参数n(元素个 数也可变化): template 4.1需求分析 应用类模板tmplt,用于实现所谓的反序输出问题,使用了类型参数T以及普通参数n。 4.2概要设计 template 4.3详细设计与编码 #include int main() {tmplt 运行结果如下: 4.4调试分析 1编程前一定要在整体考虑其结构和实现功能方面做足功夫 3对于数据的输入和输出,要首先在定义中先把它定义好,以便调用是直 接调用。 4.函数对应的调用顺序要正确,不但容易阅读而且容易查错。 4.5用户使用说明: 用户可以输入若干组不同大小的数据,然后按回车键,程序系统会自动在屏幕上生成用户想要得到的结果。 4.6设计心得: 通过该程序的设计,更体会到在大规模的信息调用类以及生成类会更好,更进一步培养自己的编程风格,先整体规划,然后一步一步实现;出错处理的能力。 第五题.可视化编程 用你熟悉的一种可视化编程语言实现以下汉诺塔演示程序(可以参考附件中的程序代码)。 5.1需求分析 实现汉诺塔从第一个位置移到第三个位置 实5.2概要设计 实现 实程序是用MFC制作,在进入MFC时选择基本对话框来建立工程, 然后根据题目图形的需求,在工作区的Resourceview中的Dialog进行框架的设计,跟着视频思路往下走。 5.3详细设计与编码 实现过程 可 视 化
正在阅读:
软件毕业课程设计总结报告105-23
泵站国内技术现状及与国外的差距分析04-20
2016年尔雅选修课 《移动互联网时代的信息安全与防护》课后作业04-30
爱立信 WCDMA 基站常见告警处理方法01-16
《口袋妖怪:心灵之金中文版》详文攻略09-03
Excel单元格格式自定义规则-2014.6.2609-12
祭父文02-14
电磁场与电磁波 第三版之607-18
2016年供电公司工作情况汇报材料04-28
- 计算机试题
- 【2012天津卷高考满分作文】鱼心人不知
- 教育心理学历年真题及答案--浙江教师资格考试
- 20180327-第六届“中金所杯”全国大学生金融知识大赛参考题库
- 洪林兴达煤矿2018年度水情水害预测预报
- 基本要道讲义
- 机电设备安装试运行异常现象分析与对策
- 《有机化学》复习资料-李月明
- 非常可乐非常MC2--非常可乐广告策划提案 - 图文
- 2011中考数学真题解析4 - 科学记数法(含答案)
- 企业人力资源管理师三级07- 09年真题及答案
- 基于单片机的光控自动窗帘控制系统设计说明书1 - 图文
- 20160802神华九江输煤皮带机安装方案001
- (共53套)新人教版一生物必修2(全册)教案汇总 word打印版
- 2014行政管理学总复习
- 中国银监会关于加强地方政府融资平台贷款风险监管的指导意见
- 民宿酒店核心竞争与研究
- 游园活动谜语大全2012
- 河南省天一大联考2016届高三英语5月阶段性测试试题(六)(A卷)
- 小型超市管理系统毕业论文详细设计4
- 课程
- 总结
- 毕业
- 报告
- 设计
- 软件
- 就业信息网JSPand Access - 图文
- 万泰丽景模板施工方案
- 塑料机芯项目可行性研究报告(发改立项备案+2013年最新案例范文
- 研究生英语演讲稿
- 2018年秋九年级数学上册第三章概率的进一步认识3.2用频率估计概
- 心情短语之加强小型农田水利工程运行维护管理的对策措施
- 毕业设计(学院供电系统改造设计)
- 四年级语文期中试卷
- (重要)人教版小学语文三年级上册各单元复习资料-全套
- 我的大学
- VP 07001-R1 清洁过程验证计划
- 中国相框市场深度调查及未来五年发展趋势前瞻报告
- 学校高中三年发展规划
- 四川省西昌市裕隆中学九年级语文 写作总结 句子的仿写与扩展教案
- 东南大学信息学院大四上综合课程设计报告(微波组)
- 实验1 拉伸法测量杨氏模量
- XX必备管理手册
- 立足资源优势调估产业结构
- 小学语文教学中小组合作学习的运用
- 令人陶醉 微软Windows 7系统17个小技巧 - 图文