编号:( )字 号
《软件课程设计》报告
班 级: 网络工程09-1班 姓 名: 吕丹彦 学 号: 08093662 指导老师: 徐东红
中国矿业大学计算机科学与技术学院
2010 年 11月
软件课程设计任务书
专业年级: 网络工程09—1班 学生姓名: 吕丹彦
任务下达日期: 200 年 10 月 22 日
课程设计日期: 200 年 10 月22 日至 200年 1 月 10 日
课程设计题目: 面向过程
软件课程设计指导教师评阅书
指导教师评语(①基础理论及基本技能的掌握;②独立解决实际问题的能力;
③研究内容的理论依据和技术方法;④取得的主要成果及创新点;⑤工作态度及工作量;⑥总体评价及建议成绩;⑦存在问题等):
成 绩:
指导教师签字:
年 月 日
目录
一、面向过程设计题
5-------计算日期和星期(第一阶段5.cpp )
1.1 需求分析………………………………………………………………………. … 1.2 概要设计………………………………………………………………………... 1.3 详细设计与编码………………………………………………………………... 1.4 调试分析………………………………………………………………………... 1.5 用户使用说明 …………………………………………………………………. 1.6 设计心得………………………………………………………………………...
一、面向过程设计题
5-------计算日期和星期(第一阶段5.cpp )
1.1需求分析
为了使用户更方便更快捷地得知某年某月某日是星期几,不用费劲地翻阅日历查询。 1.2概要设计
首先输入要查询的年份,以及该年1月1日的星期; 接着输入要查询的月份和日期;
然后调用函数计算这个日期到该年一月一号的天数,同时计算出那天是星
期几; 最后输出。
1.3 详细设计与编码 #include using namespace std; void main() {
int distinguish(int y);
int output(int m,int n,int i,int w); int year,month,day,week; int p;
cout>year;
p=distinguish(year);
cout>week;
cout
cin>>month>>day; cout
int distinguish(int y) { int t;
if(y%400==0) t=1; else if(y%100==0) t=0; else if(y%4==0) t=1; else t=0; return t;}
int output(int m,int n,int i,int w) {
int s=0,a;
for(int j=1;j
{case 1:s=s+31;break; case 2:s=s+28+i;break; case 3:s=s+31;break; case 4:s=s+30;break; case 5:s=s+31;break; case 6:s=s+30;break; case 7:s=s+31;break; case 8:s=s+31;break; case 9:s=s+30;break; case 10:s=s+31;break; case 11:s=s+30;break; case 12:s=s+31;break;
default:cout
a=(s-w+2)%7; return a;}
1.4 调试分析
月"
1.5 用户使用说明
在看到“输入一个年份以及该年1月1日的星期”后,输入一个要查询的年份;按回车键 ;再输入输入该年1月1日的星期 回车 在看到“任意输入一个该年的月份和日期”后,输入要查询的该年的月份 回车 日子 回车
马上你将看到你要的答案。 1.6 设计心得
刚开始不要立即着手设计做题,要先把题目读懂,然后再心理略略思考,把大概的结构想出来,比如需要几个变量,几个函数之类的。接着在草稿纸上简单的记一下,免得待会儿忘记,这些都做完之后再开始做题。
二、面向过程设计题
8------8: 由计算机生成简单的四则运算题;用户给出答案;计
算机判断对错。(第一阶段8.cpp)
2.1 需求分析………………………………………………………………………… 2.2 概要设计………………………………………………………………………... 2.3 详细设计与编码………………………………………………………………... 2.4 调试分析………………………………………………………………………... 2.5 用户使用说明 ………………………………………………………………….
2.6 设计心得………………………………………………………………………...
2.1 需求分析
一些简单的四则运算,对我们来说也不难,但是对一些年纪比较小的儿童来说就可能难题。 2.2 概要设计
第一部分 用户选择一种运算; 第二部分 用随机数产生两个数; 第二部分 用户输入答案
第四部分 与计算机得出的答案比较对错; 第四部分 计分。 2.3 详细设计与编码 #include #include using namespace std; void main() {
srand(unsigned (time(0)));
int count(char a,int x,int y,int p); char n;
int m,x,y,p,o,j=0;
cout
{cout>n;
if(n=='!') break;
if(n=='/') cout
cin>>m; switch(m)
{case 1:{x=rand()%10;y=rand()%10;}break; case 2:{x=rand()%100;y=rand()%100;}break; default :cout>p;
o=count(n,x,y,p); case '/':s=x/y;break; }
return s;}
int compare(int m,int n) {
static int i=0;
if(m==n){cout
else cout
2.4 调试分析
2.5 用户使用说明
在看到“现在我们开始四则运算!如需结束请输入,请在输入运算符时输 ! ”后,输入+,-,*,/中的一种;按回车键;接着就可以看到题目,输入你的答案,计算机将会告诉你是否答对了,如此循环。如果需要停止做题,就输入
“!”,退出。
2.6 设计心得
刚开始不要立即着手设计做题,要先把题目读懂,然后再心理略略思考,把大概的结构想出来,比如需要几个变量,几个函数之类的。接着在草稿纸上简单的记一下,免得待会儿忘记,这些都做完之后再开始做题。
目录
三.面向对象设计题2-------自定义一个简单的日期类DateType (第二阶段2.cpp )
3.1 需求分析………………………………………………………………………. … 3.2 概要设计………………………………………………………………………... 3.3 详细设计与编码………………………………………………………………... 3.4 调试分析………………………………………………………………………... 3.5 用户使用说明 …………………………………………………………………. 3.6 设计心得………………………………………………………………………...
3.1 需求分析
有助于我们更简便的计算日期,查询日期,不再需要翻阅日历,数日期。 3.2 概要设计
1.设计一个DateType 类;
2.设计一个函数输入当前日期; 3.设计一个函数计算增加后的日期; 4.设计一个函数输入日期并比较 3.3 详细设计与编码
略
3.4 调试分析
3.5 用户使用说明
首先进入virsialC6.0界面,打开所要运行的程序,点击“!”运行程序,根据提示,输入增加日期,然后输入要比较的日期,最后得到您想要的结果。
3.6 设计心得
此次试验对类的建立有了更进一步的了解,刚开始不要立即着手设计做题,要先把题目读懂,然后再心理略略思考,把大概的结构想出来,比如需要几个变量,几个函数之类的。接着在草稿纸上简单的记一下,免得待会儿忘记,这些都做完之后再开始做题。
目录
四.面向对象设计题3-------利用虚函数手段,按照
3种不同的计算方法来求出
Fibonacci 数列的第n 项(的具体项值)并输出。(第二阶段3.cpp )
4.1 需求分析………………………………………………………………………. … 4.2 概要设计………………………………………………………………………... 4.3 详细设计与编码………………………………………………………………... 4.4 调试分析………………………………………………………………………... 4.5 用户使用说明 …………………………………………………………………. 4.6 设计心得………………………………………………………………………... 4.1 需求分析
Fibonacci 数列是一个非常经典的数列,并经常被人们所使用。在计算时,如果要计算的n 值小,那么当然人工算也可以,二如果n 值很大,那么人工算就太麻烦了。这是需要一个程序来实现它。
4.2 概要设计
在基类baseCla 及其派生类fib1Cla 、fib2Cla 和fib3Cla 中说明如下的同一个虚函数
“virtual double fib(int n);”,来实现求Fibonacci 数列第n 项值并返回的3种不同求解方法。例如,可设计并使用已经在第4和第5章的练习中所实现的求解方法:简单变量“数据平移”法、使用数组的实现法以及使用递归函数的实现法。然后再主函数中分别建立对象,分别调用它们的函数。
4.3 详细设计与编码
略
4.4 调试分析
4.5 用户使用说明
用户只需进入virsialC6.0界面,打开所要运行的程序,点击“!”运行程序,即可。
4.6 设计心得
此次实验在让我更加了解Fibonacci 数列的同时,更进一步的掌握了派生类的
运用,虽然不太熟练,但是我相信在以后的联系中,我能够精确地掌握它。
目录
五.数据结构3-------求A 矩阵的转置矩阵B 。(4-3.cpp )
5.1 需求分析………………………………………………………………………. … 5.2 概要设计………………………………………………………………………... 5.3 详细设计与编码………………………………………………………………... 5.4 调试分析………………………………………………………………………... 5.5 用户使用说明 …………………………………………………………………. 5.6 设计心得………………………………………………………………………...
5.1 需求分析
在线性代数,离散数学中都涉及到了转置矩阵,那如何用计算机实现矩阵转置,这个问题值得我们思考。 5.2 概要设计
用malloc 函数给两数组A 、B 。输入两个正整数m 和n ,通过分配数据空间,
生成一个m 行n 列的二维动态数组A 以及另一个n 行m 列的二维动态数组B ,之后为A 输入数据(A 矩阵数据),进而求出其转置矩阵B (数据放动态数组B 中)并输出结果。
5.3 详细设计与编码 略。 5.4 调试分析
5.5 用户使用说明
用户进入virsialC6.0界面,打开所要运行的程序,点击“!”运行程序; 根据提示输入m,n ;
在看到“Input Number”时输入数据;
输入完成后得到结果。
5.6 设计心得
此次实验在使我进一步了解转置矩阵的同时,更加熟练地运用for 循环语句。此外,刚开始不要立即着手设计做题,要先把题目读懂,然后再心理略略思考,把大概的结构想出来,比如需要几个变量,几个函数之类的。接着在草稿纸上简单的记一下,免得待会儿忘记,这些都做完之后再开始做题。
目录
六.数据结构4-------设计一个统计选票的算法(4-4.cpp )
6. 需求分析………………………………………………………………………. …
6.2 概要设计………………………………………………………………………...
6.3 详细设计与编码………………………………………………………………...
6.4 调试分析………………………………………………………………………...
6.5 用户使用说明 ………………………………………………………………….
6.6 设计心得………………………………………………………………………...
11
6.1 需求分析
选票统计是日常生活中一个常见的现象,同时这又是一件非常庞大非常繁琐的事情,总是消耗很大的人力物力。然而用计算机程序来实现就方便多了。
6.2 概要设计
建立一个假设采用单链表存放选票,候选人编号依次为1,2,3,„„,N ,且每张选票选且只选一人以单链表存放选票,每个结点的data 域存放该选票所选的候选人。用一个数组a 统计得票结果。
6.3 详细设计与编码
略。
6.4 调试分析
12
13
6.5 用户使用说明
用户进入virsialC6.0界面,打开所要运行的程序,点击“!”运行程序; 看到“输入候选人数和投票人数:”是,输入两个数据;
看到 " 输入投票人投票情况:(用1-N 号表示候选人)" 后输入数据; 按回车键结束后得到统计票选结果;
6.6 设计心得
此次实验,让我进一步掌握了单链表的使用。此外,刚开始不要立即着手设计做题,要先把题目读懂,然后再心理略略思考,把大概的结构想出来,比如需要几个变量,几个函数之类的。接着在草稿纸上简单的记一下,免得待会儿忘记,这些都做完之后再开始做题。这样以后会变得更好。
14
编号:( )字 号
《软件课程设计》报告
班 级: 网络工程09-1班 姓 名: 吕丹彦 学 号: 08093662 指导老师: 徐东红
中国矿业大学计算机科学与技术学院
2010 年 11月
软件课程设计任务书
专业年级: 网络工程09—1班 学生姓名: 吕丹彦
任务下达日期: 200 年 10 月 22 日
课程设计日期: 200 年 10 月22 日至 200年 1 月 10 日
课程设计题目: 面向过程
软件课程设计指导教师评阅书
指导教师评语(①基础理论及基本技能的掌握;②独立解决实际问题的能力;
③研究内容的理论依据和技术方法;④取得的主要成果及创新点;⑤工作态度及工作量;⑥总体评价及建议成绩;⑦存在问题等):
成 绩:
指导教师签字:
年 月 日
目录
一、面向过程设计题
5-------计算日期和星期(第一阶段5.cpp )
1.1 需求分析………………………………………………………………………. … 1.2 概要设计………………………………………………………………………... 1.3 详细设计与编码………………………………………………………………... 1.4 调试分析………………………………………………………………………... 1.5 用户使用说明 …………………………………………………………………. 1.6 设计心得………………………………………………………………………...
一、面向过程设计题
5-------计算日期和星期(第一阶段5.cpp )
1.1需求分析
为了使用户更方便更快捷地得知某年某月某日是星期几,不用费劲地翻阅日历查询。 1.2概要设计
首先输入要查询的年份,以及该年1月1日的星期; 接着输入要查询的月份和日期;
然后调用函数计算这个日期到该年一月一号的天数,同时计算出那天是星
期几; 最后输出。
1.3 详细设计与编码 #include using namespace std; void main() {
int distinguish(int y);
int output(int m,int n,int i,int w); int year,month,day,week; int p;
cout>year;
p=distinguish(year);
cout>week;
cout
cin>>month>>day; cout
int distinguish(int y) { int t;
if(y%400==0) t=1; else if(y%100==0) t=0; else if(y%4==0) t=1; else t=0; return t;}
int output(int m,int n,int i,int w) {
int s=0,a;
for(int j=1;j
{case 1:s=s+31;break; case 2:s=s+28+i;break; case 3:s=s+31;break; case 4:s=s+30;break; case 5:s=s+31;break; case 6:s=s+30;break; case 7:s=s+31;break; case 8:s=s+31;break; case 9:s=s+30;break; case 10:s=s+31;break; case 11:s=s+30;break; case 12:s=s+31;break;
default:cout
a=(s-w+2)%7; return a;}
1.4 调试分析
月"
1.5 用户使用说明
在看到“输入一个年份以及该年1月1日的星期”后,输入一个要查询的年份;按回车键 ;再输入输入该年1月1日的星期 回车 在看到“任意输入一个该年的月份和日期”后,输入要查询的该年的月份 回车 日子 回车
马上你将看到你要的答案。 1.6 设计心得
刚开始不要立即着手设计做题,要先把题目读懂,然后再心理略略思考,把大概的结构想出来,比如需要几个变量,几个函数之类的。接着在草稿纸上简单的记一下,免得待会儿忘记,这些都做完之后再开始做题。
二、面向过程设计题
8------8: 由计算机生成简单的四则运算题;用户给出答案;计
算机判断对错。(第一阶段8.cpp)
2.1 需求分析………………………………………………………………………… 2.2 概要设计………………………………………………………………………... 2.3 详细设计与编码………………………………………………………………... 2.4 调试分析………………………………………………………………………... 2.5 用户使用说明 ………………………………………………………………….
2.6 设计心得………………………………………………………………………...
2.1 需求分析
一些简单的四则运算,对我们来说也不难,但是对一些年纪比较小的儿童来说就可能难题。 2.2 概要设计
第一部分 用户选择一种运算; 第二部分 用随机数产生两个数; 第二部分 用户输入答案
第四部分 与计算机得出的答案比较对错; 第四部分 计分。 2.3 详细设计与编码 #include #include using namespace std; void main() {
srand(unsigned (time(0)));
int count(char a,int x,int y,int p); char n;
int m,x,y,p,o,j=0;
cout
{cout>n;
if(n=='!') break;
if(n=='/') cout
cin>>m; switch(m)
{case 1:{x=rand()%10;y=rand()%10;}break; case 2:{x=rand()%100;y=rand()%100;}break; default :cout>p;
o=count(n,x,y,p); case '/':s=x/y;break; }
return s;}
int compare(int m,int n) {
static int i=0;
if(m==n){cout
else cout
2.4 调试分析
2.5 用户使用说明
在看到“现在我们开始四则运算!如需结束请输入,请在输入运算符时输 ! ”后,输入+,-,*,/中的一种;按回车键;接着就可以看到题目,输入你的答案,计算机将会告诉你是否答对了,如此循环。如果需要停止做题,就输入
“!”,退出。
2.6 设计心得
刚开始不要立即着手设计做题,要先把题目读懂,然后再心理略略思考,把大概的结构想出来,比如需要几个变量,几个函数之类的。接着在草稿纸上简单的记一下,免得待会儿忘记,这些都做完之后再开始做题。
目录
三.面向对象设计题2-------自定义一个简单的日期类DateType (第二阶段2.cpp )
3.1 需求分析………………………………………………………………………. … 3.2 概要设计………………………………………………………………………... 3.3 详细设计与编码………………………………………………………………... 3.4 调试分析………………………………………………………………………... 3.5 用户使用说明 …………………………………………………………………. 3.6 设计心得………………………………………………………………………...
3.1 需求分析
有助于我们更简便的计算日期,查询日期,不再需要翻阅日历,数日期。 3.2 概要设计
1.设计一个DateType 类;
2.设计一个函数输入当前日期; 3.设计一个函数计算增加后的日期; 4.设计一个函数输入日期并比较 3.3 详细设计与编码
略
3.4 调试分析
3.5 用户使用说明
首先进入virsialC6.0界面,打开所要运行的程序,点击“!”运行程序,根据提示,输入增加日期,然后输入要比较的日期,最后得到您想要的结果。
3.6 设计心得
此次试验对类的建立有了更进一步的了解,刚开始不要立即着手设计做题,要先把题目读懂,然后再心理略略思考,把大概的结构想出来,比如需要几个变量,几个函数之类的。接着在草稿纸上简单的记一下,免得待会儿忘记,这些都做完之后再开始做题。
目录
四.面向对象设计题3-------利用虚函数手段,按照
3种不同的计算方法来求出
Fibonacci 数列的第n 项(的具体项值)并输出。(第二阶段3.cpp )
4.1 需求分析………………………………………………………………………. … 4.2 概要设计………………………………………………………………………... 4.3 详细设计与编码………………………………………………………………... 4.4 调试分析………………………………………………………………………... 4.5 用户使用说明 …………………………………………………………………. 4.6 设计心得………………………………………………………………………... 4.1 需求分析
Fibonacci 数列是一个非常经典的数列,并经常被人们所使用。在计算时,如果要计算的n 值小,那么当然人工算也可以,二如果n 值很大,那么人工算就太麻烦了。这是需要一个程序来实现它。
4.2 概要设计
在基类baseCla 及其派生类fib1Cla 、fib2Cla 和fib3Cla 中说明如下的同一个虚函数
“virtual double fib(int n);”,来实现求Fibonacci 数列第n 项值并返回的3种不同求解方法。例如,可设计并使用已经在第4和第5章的练习中所实现的求解方法:简单变量“数据平移”法、使用数组的实现法以及使用递归函数的实现法。然后再主函数中分别建立对象,分别调用它们的函数。
4.3 详细设计与编码
略
4.4 调试分析
4.5 用户使用说明
用户只需进入virsialC6.0界面,打开所要运行的程序,点击“!”运行程序,即可。
4.6 设计心得
此次实验在让我更加了解Fibonacci 数列的同时,更进一步的掌握了派生类的
运用,虽然不太熟练,但是我相信在以后的联系中,我能够精确地掌握它。
目录
五.数据结构3-------求A 矩阵的转置矩阵B 。(4-3.cpp )
5.1 需求分析………………………………………………………………………. … 5.2 概要设计………………………………………………………………………... 5.3 详细设计与编码………………………………………………………………... 5.4 调试分析………………………………………………………………………... 5.5 用户使用说明 …………………………………………………………………. 5.6 设计心得………………………………………………………………………...
5.1 需求分析
在线性代数,离散数学中都涉及到了转置矩阵,那如何用计算机实现矩阵转置,这个问题值得我们思考。 5.2 概要设计
用malloc 函数给两数组A 、B 。输入两个正整数m 和n ,通过分配数据空间,
生成一个m 行n 列的二维动态数组A 以及另一个n 行m 列的二维动态数组B ,之后为A 输入数据(A 矩阵数据),进而求出其转置矩阵B (数据放动态数组B 中)并输出结果。
5.3 详细设计与编码 略。 5.4 调试分析
5.5 用户使用说明
用户进入virsialC6.0界面,打开所要运行的程序,点击“!”运行程序; 根据提示输入m,n ;
在看到“Input Number”时输入数据;
输入完成后得到结果。
5.6 设计心得
此次实验在使我进一步了解转置矩阵的同时,更加熟练地运用for 循环语句。此外,刚开始不要立即着手设计做题,要先把题目读懂,然后再心理略略思考,把大概的结构想出来,比如需要几个变量,几个函数之类的。接着在草稿纸上简单的记一下,免得待会儿忘记,这些都做完之后再开始做题。
目录
六.数据结构4-------设计一个统计选票的算法(4-4.cpp )
6. 需求分析………………………………………………………………………. …
6.2 概要设计………………………………………………………………………...
6.3 详细设计与编码………………………………………………………………...
6.4 调试分析………………………………………………………………………...
6.5 用户使用说明 ………………………………………………………………….
6.6 设计心得………………………………………………………………………...
11
6.1 需求分析
选票统计是日常生活中一个常见的现象,同时这又是一件非常庞大非常繁琐的事情,总是消耗很大的人力物力。然而用计算机程序来实现就方便多了。
6.2 概要设计
建立一个假设采用单链表存放选票,候选人编号依次为1,2,3,„„,N ,且每张选票选且只选一人以单链表存放选票,每个结点的data 域存放该选票所选的候选人。用一个数组a 统计得票结果。
6.3 详细设计与编码
略。
6.4 调试分析
12
13
6.5 用户使用说明
用户进入virsialC6.0界面,打开所要运行的程序,点击“!”运行程序; 看到“输入候选人数和投票人数:”是,输入两个数据;
看到 " 输入投票人投票情况:(用1-N 号表示候选人)" 后输入数据; 按回车键结束后得到统计票选结果;
6.6 设计心得
此次实验,让我进一步掌握了单链表的使用。此外,刚开始不要立即着手设计做题,要先把题目读懂,然后再心理略略思考,把大概的结构想出来,比如需要几个变量,几个函数之类的。接着在草稿纸上简单的记一下,免得待会儿忘记,这些都做完之后再开始做题。这样以后会变得更好。
14