资源预览内容
第1页 / 共35页
第2页 / 共35页
第3页 / 共35页
第4页 / 共35页
第5页 / 共35页
亲,该文档总共35页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
郑志安1 编号:()字号软件课程设计报告班级:信科 09-3 班姓名:张晴刚学号:08093588 讲师:谢红侠中国矿业大学计算机科学与技术学院2011 年 1 月名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 35 页 -郑志安2 软件课程设计任务书专业年级:电子信息科学与技术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 名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 35 页 -3 软件课程设计指导教师评阅书指导教师评语(基础理论及基本技能的掌握;独立解决实际问题的能力;研究内容的理论依据和技术方法;取得的主要成果及创新点;工作态度及工作量;总体评价及建议成绩;存在问题等):成 绩:指导教师签字:年月日名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 35 页 -4 目录=第一部分基础题第一题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 面向对象名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 35 页 -5 第三题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 class tmplt T arrn;/n 个 T 类型的数据存放于数组arr 之中public:void dataIn();/从键盘输入n 个 T 类型数据放入arr 数组中void reverseOut();/将 arr 数组中的数据按输入的相反顺序输出;.7 4.1 需求分析.7 4.2 概要设计.7 4.3 详细设计与编码.8 4.4 调试分析.8 4.5 用户使用说明.9 4.6 设计心得.10 第五题 可视化编程名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 35 页 -6 用你熟悉的一种可视化编程语言实现以下汉诺塔演示程序(可以参考附件中的程序代码)。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 名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 35 页 -7 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_tab12=31,28,31,30,31,30,31,31,30,31,30,31;for(i=0;i=3)days=days+1;s=s+(days-1)%7;if(s7)s=s%7;coutsendl;1.3 详细设计与编码:#include using namespace std;int main()int sum_day(int,int);int leap(int);开始名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 35 页 -8 int year,month,day,days,s;coutyears;coutmonthday;days=sum_day(month,day);if(leap(year)&month=3)days=days+1;s=s+(days-1)%7;if(s7)s=s%7;coutsendl;return 0;int sum_day(int month,int day)int i;int day_tab12=31,28,31,30,31,30,31,31,30,31,30,31;for(i=0;iyears;Cinmonthday;按平年计算出该月日在本年第多少天days=sum_day(month,day);leap=(year%4=0&year%100!=0)|(year%400=0);判断是否为闰年days=days+1;求出该日月在本年是周几s=s+(days-1)%7;if(s7)s=s%7;得出 days 名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 35 页 -9 1.4 调试分析Couts;终止名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 35 页 -10 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;对于罗马数据中每个字母对应数据累加过程,我们有如下算法:名师资料总结-精品资料欢迎下载-名师精心整理-第 10 页,共 35 页 -11 while(y=getchar()!=n)if(f(x)f(y)m=m-f(x);else m=m+f(x);x=y;m=m+f(x);coutmendl;return 0;2.3 详细设计与编码:#include using namespace std;int main()int f(char);int m=0;char x,y;cout输入罗马数字:x;while(y=getchar()!=n)if(f(x)f(y)m=m-f(x);else m=m+f(x);x=y;m=m+f(x);coutmx;执行由罗马数字转化为阿拉伯数字的转换;while(y=getchar()!=n)if(f(x)f(y)m=m-f(x);else m=m+f(x);x=y;m=m+f(x);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;名师资料总结-精品资料欢迎下载-名师精心整理-第 11 页,共 35 页 -12 case I:return 1;break;运行结果如下:Coutm;终止名师资料总结-精品资料欢迎下载-名师精心整理-第 12 页,共 35 页 -13 2.4 调试分析1 程序开始不可少语句 int f(char);int m=0;ch
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号