河北联合大学
2011-2012第2学期
《软件设计基础-C++》
课程设计
设计名称: 设计一个程序:输入年份和月份,显示前后三个月的日历
姓 名: 程凯 学 号: 201214680211
专业班级: 12热动2班
学 院: 冶金与能源学院
设计时间: 2013/5/10至2013/5/19
设计地点: 河北联合大学
指导教师评语:
指导教师签字:
年 月 日
目 录
1.课程设计目的
3
2.课程设计任务与要求
3
3.课程设计
4
4.课程设计成果
10
5.程序调试过程
14
6.设计问题的不足和改进
15
7.课程设计心得
16
8.参考文献
16
1.课程设计目的
《软件设计基础-C++》课程设计是这门课程的实践性教学环节之一,本次设计结合实际应用的要求,使课程设计既覆盖C++的知识点,又接近工程实际需要。目的是通过课程设计的综合训练,培养学生实际分析问题、解决问题的能力,以及编程和动手能力,最终目标是通过课程设计这种形式,帮助学生系统掌握C++这门课程的主要内容,养成良好的编程习惯,更好的完成教学任务。
2.课程设计任务与要求:
要求:
本次课程设计利用《软件设计基础-C++》课程中所学到的编程知识和编程技巧,完成具有一定难度和工作量的程序设计题目,帮助学生掌握编程、调试的基本技能,独立完成所布置的任务。
要求:
1、对系统进行功能需求分析
2、设计合理的数据结构和系统框架
3、编程简练,程序功能齐全,能正确运行
4、说明书、
图要清楚
5、课题完成后必须按要求提交课程设计报告
任务:
基本要求:
设计一个程序:输入年份和月份,显示前后三个月的日历 (★★)
(1)要求用C++语言编程,在Visual C++环境下调试完成;
(2)要求划分功能模块,各个功能分别使用函数来完成。
(3)源代码程序要有必要的注释。
3.课程设计说明书
⑴概要设计
模块说明:
在我设计的程序中包括三个模块,分别是查询年份模块、查询平年闰年模块、判断星期几模块。这三个模块通过各自的函数实现各自的功能。例如, 查询平年闰年模块通过if函数判断是否是闰年,在判断星期几模块中多次运用for函数实现星期的判断和输出。还涉及到while循环,数组等的应用。
模块结构图:
功能模块图
(1)查询年份模块
根据所输入年份查询。
(2)查询平年闰年模块
根据输入年份看其是平年还是闰年。
(3)判断星期几模块
根据输入年月看首日是星期几。
⑵详细设计
总体流程图:
总体流程图
各功能模块流程图:
4.课程设计成果
#include
int month_day1[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int month_day2[12]={31,29,31,30,31,30,31,31,30,31,30,31};
int IsLeapYear( int year )
{
if(year%400==0||(year%4==0&&year%100!=0))//判断是否是闰年
return 1;
else return 0;
}
#include
using namespace std;
void CaculDay(int year,int month)
{
int m,n,i,p;int x =year-1;
m=(x/4-x/100+x/400)*366+(x-(x/4-x/100+x/400))*365;//计算当前年份到公元元年总天数
p=IsLeapYear( year );
if(p==1)
{
if(month!=1)
{for(i=0;i>year>>month;
if (month<12&&month>1)
{CaculDay ( year, month-1);
CaculDay ( year, month);
CaculDay ( year, month+1);}
if(month==1)
{CaculDay ( year-1,12);
CaculDay ( year, month);
CaculDay ( year, 2);}
if(month==12)
{CaculDay ( year, month-1);
CaculDay ( year, month);
CaculDay ( year+1, 1);}
}
例如 输入 2013 5
屏幕抓图
5.程序调试过程
:
(1),保存为c++文件
(2),根据断点调试找到错误处。
(3),采用F10或F11单步调试找到精确的错误处。其中f10是跳过函数盗用,f11是进入函数体调试。一般是先用f10,确定函数输入输出是否正确(与自己想的一样),如不一样,则用f11进入函数体一步一步调试。
(4),在调试过程中,肯定得监视程序中的变量。在vc6.0的右下角有一个watch窗口,专门用来设置监视变量。在调试过程中,鼠标轻轻放在变量上也会显示该变量的值
(5),vc6.0专门为调试设置了工具箱以方便调试的进行,打开的方法如下。右键——〉在debug(或调试)选择项的勾勾上。
问题
(1).不了解一些快捷键的功能:例如
F9在当前光标所在的行下断点,如果当前行已经有断点,则取消断点.
F5调试状态运行程序,程序执行到有断点的地方会停下来.
F10单步执行程序.
CTRL+F10运行到光标所在行.
F11和F10的区别是,如果当前执行语句是函数调用,则会进入函数里面.
shift+F11跳出当前所在函数.
(2).英语差,有一些错误提示看不懂给调试带来很大的不便
6.设计问题的不足和改进方案
设计过程中虽然涉及到多种函数的调用,例如, 查询平年闰年模块通过if函数判断是否是闰年,在判断星期几模块中多次运用for函数实现星期的判断和输出。还涉及到while循环,数组等的应用。但没有涉及到类的应用。类是C++中最重要的组成部分,对象以及派生类都有很大用途。首先通过数组的应用,我发现自己对数组的认识还不是那么清楚。在存放每年中各月的天数时,要考虑到平年和闰年两种情况,所以要用二维数组而不可以使用一维数组。还有一个问题是没有考虑到输入年月时可能输入的年月是错误的,例如 2003 15。应该在输入后面加一个if控制输入即if(month>12){cout<<“请重新输入”<