C++日历管理系统课程设计.docx

上传人:b****8 文档编号:23812076 上传时间:2023-05-21 格式:DOCX 页数:16 大小:84.29KB
下载 相关 举报
C++日历管理系统课程设计.docx_第1页
第1页 / 共16页
C++日历管理系统课程设计.docx_第2页
第2页 / 共16页
C++日历管理系统课程设计.docx_第3页
第3页 / 共16页
C++日历管理系统课程设计.docx_第4页
第4页 / 共16页
C++日历管理系统课程设计.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

C++日历管理系统课程设计.docx

《C++日历管理系统课程设计.docx》由会员分享,可在线阅读,更多相关《C++日历管理系统课程设计.docx(16页珍藏版)》请在冰豆网上搜索。

C++日历管理系统课程设计.docx

C++日历管理系统课程设计

C++课程设计报告

(2013--2014年度第二学期)

日历管理器的开发系统的设计

专业

学生姓名

指导教师

完成日期2014年7月3日

错误!

未定义书签

1概述.

错误!

未定义书签

课程设计目的

错误!

未定义书签

课程设计内容

错误!

未定义书签

2系统需求分析.

错误!

未定义书签

系统目标

错误!

未定义书签

主体功能

错误!

未定义书签

开发环境

错误!

未定义书签

3系统概要设计.

错误!

未定义书签

系统的功能模块划分

.错误!

未定义书签

系统流程图

错误!

未定义书签

4系统详细设计

错误!

未定义书签

系统主页面设置

错误!

未定义书签

更改模块设计

错误!

未定义书签

判断模块设计

错误!

未定义书签

试结5测试

错误!

未定义书签

测试方案

错误!

未定义书签

测果

错误!

未定义书签

6小结

错误!

未定义书签

参考文献

错误!

未定义书签

附录

错误!

未定义书签

附录1源程序清单

.错误!

未定义书签

日历管理器系统的设计

1概述

课程设计目的

1、巩固并加深学生对C++语言程序设计知识的理解;

2、培养我面向对象的程序设计思想,使我们认识面向过程和面向对象两种设计方法的区别;

3、进一步掌握和应用VC++集成开发环境;

4、提高运用C++语言解决实际问题的能力;

5、初步掌握开发小型实用软件的基本方法,能独立设计、实现具有实际功能的小系统;

6、掌握书写程序设计开发文档的能力。

课程设计内容

仿现实生活中的挂历,显示日历。

当前页以系统当前日期的月份为准,显示当前月的每一天(显示出日及对应的星期几);当系统日期变到下一月时,系统自动翻页到下一月。

根据用户输入的年份,自动产生每个月的日期列表。

自定义显示日历的形式。

2系统需求分析

系统目标

建立电子日历,显示当前月的每一天,当日期变更时,可以自主生

成新的日历表!

主体功能

1)当前页以系统当前日期的月份为准,显示当前月的每一天(显示出日及对应的星期几),当系统日期变到下一月时,系统自动翻页到下一月。

2)可以实现日期的加法运算,即在日期相加的菜单选项中增加日期加天数,结果为新日期。

3)根据用户输入的年份,自动产生每个月的日期列表。

包括输入非法数据(如负数、日期超过31天等情况)的识别显示功能。

开发环境

VC++

3系统概要设计

系统的功能模块划分

日历系统设计的主要模块分为:

查询年份月份模块、查询平年闰年模块、判断星期几模块、计算总天数模块、计算月份第一天为星期几模块等模块。

1

r

输出该年

斗!

图3-1系统模块划分

图3-2判断是否为平年闰年模块

图3-2系统流程

 

系统流程图

系统当前日期』

盹4

设買二月汽29天Q

计韓该月的第一b星期和

 

4系统详细设计

系统主页面设置

设计思路:

首先判断某一年是否为闰年,若是,则二月输出为二十九天,如果不是,二月输出为二十八天。

再判断系统当前月份是一个大月还是小月,如果是大月,则输出三十一天;如果是小月,则输出三十天。

通过定义一个结构体,用对对象指针的访问来实现从系统自动获取时间为程序所用。

再利用一个函数计算出每月的第一天是星期几。

根据

判断的大月和小月,通过控制符控制输出流格式(设置字段)宽度,把

该日期以前的位置用空格补上,并从改日起依次输出天数直到月底,该月中的天数加上该月一日为星期几的数字再除以七得零换行,即可完整的输出该月的日历。

C++中一般会使用cout和cin时的默认格式。

但有时人们在输入输出时有一些特殊的要求,如在输出实数时,要规定字段宽度,只需要保留两位小数,数据向左或向右对齐等。

C++提供了在输入输出流中使用的控制符。

需要注意的是:

如果使用了控制符,在程序单位的开头,除了要加

iostream头文件外,还要另外加iomanip头文件。

显示模块设计

显示日历输出格式和界面。

Year

显示年份

Month

显示月份;

Day

显示日期

更改模块设计

判断年份,当年份小于你输入值时,则报错。

判断年份,当年份小于或大于你输入值时,则报错。

首先判断输入的年份是否为闰年,在根据输入的月份判断输入的日期是

否正确加上该月一日为星期几的数字再除以7得0换行,即可完整的输出该月的日历。

判断模块设计

用if语句判断定义年到输入年之间每一年是否为闰年,是闰年,该年的总天数为366,否则,为355。

然后判断输入的年是否为定义年,若是,令总天数S=1,否则,用累加法计算出定义年到输入年之间的总天数,再把输入年的一月到要输出的月份之间的天数累加起来,若该月是闰年中的月份并且该月还大于二月,再使总天数加1,否则,不加,既算出从定义年一月一日到输出年的该月一日的总天数。

判断年份,当年份小于你输入值时,则报错。

判断年份,当年份小于或大于你输入值时,则报错。

首先判断输入的年份是否为闰年,在根据输入的月份判断输入的日期是否正确加上该月一日为星期几的数字再除以7得0换行,即可完整的输出该月的日历。

用if语句判断定义年到输入年之间每一年是否为闰年,是闰年,该年的总天数为366,否则,为355。

然后判断输入的年是否为定义年,若是,令总天数S=1,否则,用累加法计算出定义年到输入年之间的总天数,再把输入年的一月到要输出的月份之间的天数累加起来,若该月是闰年中的月份并且该月还大于二月,再使总天数加1,否则,不加,既算出从定义年一月一日到输出年的该月一日的总天数。

自定义模块设计

当按下q时,退出程序

while((key=_getch())!

='q')

用W键时日期向前推移天

if(day>7)day-=7;

用s键时日期向后推移天

if(day<=((Wether_RN())month_days_R[month-1]:

month_days_NR[month-1])-7)day+=7;

用a键时日期向前推移天

if(day>1)day-=1;

用d键时日期向后推移天

if(day<=((Wether_RN())month_days_R[month-1]:

month_days_NR[month-1])-1)day+=1;

调用Seatch_date函数,对年月日进行重置

Search_date(y,m,d)

试结5测试

测试方案

1.执行代码;

2.按功能要求,调试程序;

测果

1.输入界面

 

 

5-1

2.执行程序:

输入年份,显示每一个月的日期表

-口箕

CA“C:

、D0GU・er)tsandSettingf\Adsinistrator\Debu(\Cppl.ere

历日几;囱期历月星:

日辛壬T>TP»-I选音査査t^l.a.^.l

 

弓年农历甲午年

27

14

21

2S

22

3D

18

17

24

16

 

豪耳:

養>63CXWJtXJt3(

图5-2

3.输入年份和日期

C:

c"C:

\DocuBent5andSettincf\Ad>inistratorXD«buf\Cppl.ere

L.査询集卑■日历;

X查询某至慕月旳日历;

「査询莘夫羣星期几

■MMaffMwrSBIww

农历甲午年请输入月扮:

?

15

16

July

12

Pressaoykeytocontuiiue

图5-3

4.查询某一天是星期几

c:

'*C;\Docii«entsandSettingf\Ad>inistrator\Sebut\Cppl.ere

请选性建徉

1■.査i宜盖晕日历;

2.查询某至若月內日历,

A査询草天皇星期几

3

请输入年約:

2P14

弓年

农历甲午年

请狗入月份:

6

请倫入日期’30

怦丄4年6^3BB星期一

[Prosaaih<7Icctytos^ontinuc

图5-4

6小结

通过将近一星期的课程设计,使我熟悉了C++语言的编写思路,并掌握了如何对其进行编写与调试,把书本上学习到的知识应用到实际中去,很好的锻炼了我的自觉能力。

由于对C++语言的了解不是很深,所以很多语句都还不是十分熟练,尤其是在连接数据库中的一些功能调用,是我这次课设最大问题。

通过自己不断的深入学习,虽然这段时间在自觉方面知识有了很大的提高,但很多知识还是学的像一盘散沙,自己根本不能一下子保用。

一方面由于课程设计时间有限,又一方面对课程设计思路一开始不是很好,所以在设计中也碰到了很多麻烦,通过上网查找资料以及学习有关方面的书籍,确实让我从中学到了很多非常值得学习的知识,比如说:

我从网上下载相关视频进行学习,知道了什么是设计一个程序一般都需三重架构等。

但通过学习这门课也使我了解它的设计思路及其它相关的内容的开发设计,使我对开发系统的整个流程有了初步的了解,也把自己在课下复习的内容及上课学习的有关内容有了系统的理解,通过这次课程设计,已经有了深刻的理解。

希望我从今以后自己能够多学习有关知识,为以后的毕业设计以及工作做好充分的准备。

这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在王蓉老师的辛勤指导下,终于解决了很多问题。

也得到锻炼:

(1)能根据实际问题的具体情况,结合所学的知识,正确分析问题,并且能够设计出解决问题的有效算法和程序。

(2)提高对程序的设计和调试的能力。

我们通过上机的操作,验证自己设计的算法和程序的正确性。

学会有效的利用一些基本的调试方法,能够及时找出程序代码中的错误,并且加以正确的改正,进一步提高自己对程序设计的水平。

同时,在老师身上我学到了很多实用的知识,在次我表示感谢!

同时,对给过我帮助的所有的同学和老师再次表示忠心的感谢!

参考文献

[1]谭浩强.C程序设计(第三版).北京:

清华大学出版社,2005.

[2]谭浩强.C程序设计题解与上机指导(第三版).北京:

清华大学出版社,2005.

[3]刘玉英,张怡芳.C++实验指导与课程设计.人民邮电出版社,2007

[4]匡松吴卫华.C++程序设计试题汇编.中国铁道出版社.2009

[5]刘燕君,刘振安,张一叶.C++S序设计课程设计第2版.机械工业出版社.

[6]姜灵芝余健.C++面向对象程序设计案例精编.北京:

清华大学出版社,2008

[7]郭翠英.C++面向对象程序设计案例精编.北京:

中国水力水电出

版社,2004

 

附录

附录1源程序清单

#include"iostream"

#include"string"

#include"iomanip"usingnamespacestd;

intmonthdays[12]={31,28,31,30,31,30,31,31,30,31,30,31};

stringweekday[7]={"星期天","星期一","星期二","星期三","星期四","星期五","星期六"};

string

monthname[12]={"January","February","March","April","May","June","July","August","September","October","November","December"};

stringtiangan[10]={"壬","癸"};

甲","乙","丙","丁","戊","己","庚","辛","

stringdizhi[12]={"

子","丑","寅","卯","辰","

巳","

午","未","

stringshengxiao[12]={"鼠","牛","虎","兔","龙","蛇","马","羊

","猴","鸡","狗","猪"};

voidshowcalendar(intf);

voidshowpermoncal(intmon,intmonthweek,intflag);

intmain()

{

intf;

cout<<"请选择操作:

"<

cin>>f;

showcalendar(f);

return0;

}

voidshowcalendar(intf)

{

intyear,month,day;

intflag=0,mon=1;

intmonthweek,week;

inttotaldays;

intT,D,S;

入如上数据将视为."<

cout<<"请输入要选定的年份(1~3000):

";

getline(cin,y);

for(year=atoi());year<=0||year>3000;)

<

getline(cin,y);

year=atoi());

}

cout<<"请输入要选定的月份:

";

getline(cin,m);

for(month=atoi());month<1||month>12;)

<

getline(cin,m);

month=atoi());

}

cout<<"请输入要选定的日期:

";

getline(cin,d);

for(day=atoi());(Wether_RN()&&(day<1||day>month_days_R[month-1]))

||((!

Wether_RN())&&(day<1||day>month_days_NR[month-1]));){

<

getline(cin,d);

day=atoi());

}

if((!

Wether_RN())&&(day<1||day>month_days_NR[month-1]))

{

cout<<"日期输入错误!

请重新输入日期."<

day=atoi());

}

}

}

intTime:

:

Define_Week()

{

<

}

intmain()

Timedata;

();

();

();

return0;

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1