中国矿业大学软件课程设计2Word文档下载推荐.docx
《中国矿业大学软件课程设计2Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《中国矿业大学软件课程设计2Word文档下载推荐.docx(30页珍藏版)》请在冰豆网上搜索。
面向对象
3.三种按照3种不同的计算方法来求出Fibonacci数列的第n项
5.设计一个类CStudent,类中包含一个学生的基本数据如下:
编号,姓名,性别,年龄,数学成绩,计算机成绩,外语成绩。
并假设编号为整数,且从1号往后连续编码;
姓名为字符串,性别为字符
图形界面
数据结构
目录
第一阶段面向过程设计题9
一4------计算各面值人民币张数。
9
1.1需求分析:
1.2概要设计9
1.3详细设计与编码9
1.4调试分析10
1.5用户说明10
1.6设计心得10
二、面向过程设计题5-------判断日期与星期10
2.1需求分析10
2.2概要设计11
2.3详细设计与编码11
2.4调试分析13
2.5用户说明13
2.6设计心得13
第二阶段----------面向过程14
一、面向对象设计题3-----用三种方法通过虚函数求Fibonacci数列14
1.1需求分析14
1.2概要设计14
1.3.详细设计与编码14
1.4调试分析17
1.5用户说明18
1.6设计心得18
二面向对象设计题5------设计类CStudent,类中包含学生的基本数据18
2.1需求分析:
18
2.2概要设计:
2.3.详细设计与编码18
2.4调试分析21
2.5用户说明21
2.6设计心得:
21
第三阶段——可视化界面22
一.绘图22
1.1需求设计22
1.2概要设计22
1.3详细设计与代码22
1.4调试分析:
22
第四阶段——数据结构24
一.第一题24
1.1需求分析:
24
1.2概要分析:
数组实现:
建立一个结构体struct表示栈,包括栈顶指针和当前分配的存储空间;
1.3详细分析与代码:
25
26
1.5用户使用说明26
1.6设计心得26
二.第三题26
2.1需求分析26
2.2概要分析:
27
2.3详细分析与代码:
详细流程图:
2.4调试分析:
三第四题28
3.1需求分析28
3.2概要分析28
3.3详细分析与代码28
3.4调试分析29
3.5用户使用说明29
四.第五题30
4.1需求分析30
4.2概要分析30
4.3详细分析与代码30
4.4调试分析31
4.5用户使用说明31
4.6设计心得31
第五阶段——课程设计总结31
第一阶段面向过程设计题
我们在生活中或者数学、物理等学习过程中,往往会遇到数值转换的问题,
生活中也经常使用,例如,计算人民币张数,单位换算,罗马书转换等等,实现此类算法比较有必要。
1.2概要设计
现在共有7种元以上面值的人民币纸币,分别为:
100,50,20,10,5,2,1。
利用for循环,整除取整,取余进行计算。
1.3详细设计与编码
#include<
iostream>
iomanip>
string>
usingnamespacestd;
intmain()
{intnumber,i;
inta[8];
stringname[8]={"
开始"
"
100¥"
50¥"
20¥"
10¥"
5¥"
2¥"
1¥"
};
cout<
<
"
请输入钱的数:
;
number=-1;
for(;
number<
=0;
)
{cin>
>
number;
if(number<
=0){cout<
输入错误请重新输入:
endl;
}
}
if(number>
0)
{
a[1]=number/100;
a[2]=(number%100)/50;
a[3]=(number%100%50)/20;
a[4]=(number%100%50%20)/10;
a[5]=(number%100%50%20%10)/5;
a[6]=(number%100%50%20%10%5)/2;
a[7]=(number%100%50%20%10%5%2)/1;
for(i=1;
i<
=7;
i++)
if(a[i]>
{cout<
name[i]<
"
a[i]<
张"
main();
return0;
1.4调试分析
1.5用户说明
用户可直接通过键盘向界面输入你要求计算的数,按回车键即可得到答案。
1.6设计心得
在这个程序设计中,所用的都是最基本的知识,对于最基本的知识一定要达到熟练的程度,才能熟中生巧,设计出高质量的程序。
二、面向过程设计题5-------判断日期与星期
2.1需求分析
生活中经常需要查找年月日是星期几,这也是我们平时用万年历的原因。
为了我们平时方便,设计并实现此类程序还是很有必要的。
2.2概要设计
利用元年元月元日(即1年1月1日)是星期几的已知事实,可对程序进行改造,利用年月日的规律使用基本语句和开关语句进行选择。
2.3详细设计与编码
intrunnian(intn);
intjiange(intmonth,intday,boolb);
//函数声明
intweeks(intzhouji,intdays);
{
intyear,month,day,week,user,days,jieguo,all;
boolb;
cout<
请输入日期"
cin>
year>
month>
day;
请输入"
year<
1-1是周几"
周"
//是输出周几
week;
b=runnian(year);
//调用函数判断年份
all=jiange(month,day,b);
//调用函数求返回日期到1-1间隔多少天
days=all%7;
//调用函数求间隔天数除7后剩余天数
jieguo=weeks(week,days);
//调用函数判断是周几
年"
month<
月"
day<
日"
是周:
jieguo<
//最后输出所求结果
main();
//为测试时程序不断循环
return0;
intrunnian(intn)//判断是否为闰年
boola;
//定义bool变量
a=false;
if((n%4==0&
&
n%100!
=0)||(n%400==0)){a=true;
elsea=false;
returna;
//设有返回值以为后需编程使用
intjiange(intmonth,intday,boolb)//判断间隔天数
intsum,m2;
if(b==true)m2=29;
elsem2=28;
switch(month)
{
case12:
sum=day+31*6+30*4+m2;
break;
case11:
sum=day+31*6+30*3+m2;
case10:
sum=day+31*5+30*3+m2;
case9:
sum=day+31*5+30*2+m2;
case8:
sum=day+31*4+30*2+m2;
case7:
sum=day+31*3+30*2+m2;
case6:
sum=day+31*3+30*1+m2;
case5:
sum=day+31*2+30*1+m2;
case4:
sum=day+31*2+m2;
case3:
sum=day+31*1+m2;
case2:
sum=day+31*1;
case1:
sum=day;
}
returnsum;
//设有返回值以为后续编程使用
intweeks(intzhouji,intdays)//求日期周几
inti;
inta[7];
days;
a[1]=zhouji;
=7,days>
=1;
i++,days--)
{
if(days==0){cout<
a[i];
7){a[i]=1;
a[i+1]=a[i]+1;
if(days==1){break;
}
returna[i];
2.4调试分析
1.要注意闰年时2月之后的月份要多一天
2.注意算出前面月份天数的和计算。
3.开关语句要用break终止循环
2.5用户说明
只要按照界面提示输入即可。
按回车键即可得到答案。
注意月份和日期不要超过范围。
2.6设计心得
此次设计思路比较简单,除了几个特殊语句之外大部分有重复性,但是尤其要注意像闰年,2月这样的细节。
通过此次程序设计,加深了对开关语句的应用的理解,解决了贴近生活实际的小问题。
第二阶段----------面向过程
一、面向对象设计题3-----用三种方法通过虚函数求Fibonacci数列
1.1需求分析
Fibonacci数列在生活,数学和物理的学习过程中比较常用,主要是累加这方面。
可以用面向对象的方法来解决。
注意虚函数。
1.2概要设计
主要函数列表,每条记录应包括函数名及功能简要说明
1.classbaseCla//自定义基类baseCla
2.virtualdoublefib(intn)=0//在基类中说明一个虚函数fib,且为纯虚函数
3.classfib1Cla:
publicbaseCla//基类classbaseCla中派生出的fib1Cla
4.virtualdoublefib(intn)//派生类中说明同一个虚函数fib
5.voidfun(baseCla*p,intn)//定义函