万年历程序《面向对象程序设计》课程设计.doc

上传人:精*** 文档编号:856557 上传时间:2023-09-17 格式:DOC 页数:17 大小:227.77KB
下载 相关 举报
万年历程序《面向对象程序设计》课程设计.doc_第1页
第1页 / 共17页
万年历程序《面向对象程序设计》课程设计.doc_第2页
第2页 / 共17页
万年历程序《面向对象程序设计》课程设计.doc_第3页
第3页 / 共17页
万年历程序《面向对象程序设计》课程设计.doc_第4页
第4页 / 共17页
万年历程序《面向对象程序设计》课程设计.doc_第5页
第5页 / 共17页
点击查看更多>>
资源描述

1、 面向对象程序设计C+ 课程设计实验报告 - 17 -目 录第1章 选 题21.1 题目背景21.2系统实现的具体分工21.2.1选题21.2.2团队分工21.3开发环境2第2章 设计内容32.1实现功能32.2 概要设计(涉及类的框图)32.3 界面设计3第3章 系统实现43.1 涉及知识点43.2 系统运行(主要运行界面抓图)43.3 源程序清单(关键代码)5第4章 测试与实验结果13第5章 结束语17参考文献17第1章 选 题1.1 题目背景C+教学起步的背景1996年,国外计算机产业界正在全面兴起面向对象编程的设计与热潮,其主要工具就是C+。C+在数据类型的安全上,弥补了C的不足,克服

2、了C的种种安隐患,用C+开发的产品正在稳步上市,并开始超过了C。C+的开发工具正在稳步推出,在windows环境下的主要C+开发工具Microsoft Visual C+6.0标志着C+开发工具已经成熟。随着科技的迅猛发展,在快节奏的工作于生活中,时间与我们每个人都有非常密切的关系,每个人都受时间影响着,我们必须对时间有一个准确而又方便的度量,因此我们设计了万年历。该万年历能够实现时间日期的运行,显示阳历的年、月、日、星期等信息。1.2系统实现的具体分工1.2.1 选题系统分为日历类(calendar)和三大功能模块,功能一(print_y()输出整年的日历;功能二(print_m())输出某

3、年具体的月份;功能三(print_d())输出具体的某年某月某日是星期几1.2.2 团队分工表1.1 项目分工一览表角色姓名承担的具体任务组长(1)类的定义与分析(2)功能1: 输入一个年份能够把这一年的日期打印出来。组员 (1)功能2:输入一个月份能够把该月的情况输出出来。(2)功能3:输入具体的一天能够输出该天是星期几。1.3开发环境编程工具:Visual C+ 6.0机型:方正电脑处理器名称:Intel(R)Core(TM)2 Duo CPU E7200 2.53GHz硬盘驱动器:WDC WD1600AAJS-22WAAO系统内存:金士顿内存2GB显示卡:NVIDIA GeFORCE 9

4、400 GT显示器:方正科技FG981-W9操作系统:Microsoft Windows XP Professional第2章 设计内容2.1实现功能1、输入一个年份能够把这一年的日期打印出来。2、输入一个月份能够把该月的情况输出出来。3、输入具体的一天能够输出该天是星期几。2.2 概要设计(涉及类的框图) 2.3 界面设计界面设计在工作流程上分为结构设计、交互设计、视觉设计三个部分。结构设计也称概念设计 (Conceptual Design),是界面设计的骨架。该万年历系统运行时界面上的目录体系和词语定义易于用户理解和操作,例如主界面的目录体系包括1.年份查询;2.月历查询;3.退出。月份查

5、询里下设:1.查询月历;2.查询日期。第3章 系统实现3.1 涉及知识点类封装、面向对象程序设计、数组的应用、循环语句的使用、过程化设计的思想等。3.2 系统运行(主要运行界面抓图) 系统主界面 查询月历界面查询日期界面3.3 源程序清单(关键代码)#include#include#include#includeclass CDateTimeprivate: int year; int month; int days; int wday; /星期private: int YearToDays(int y); int DatesToDays(); int MonthToWeek(); int Y

6、earMonthToDay( int y,int m); public: CDateTime(int y=0,int m=0,int d=0) year=y; month=m; days=d; wday=DatesToWeek(); CDateTime() void Now(); int DatesToWeek(); void LastTime(); void InputYearMonth(); void PrintMonth(); void InputDates(); int Week() return wday; friend ostream & operator1900) if(y-1)

7、% 4 =0 & (y-1) % 100 != 0 | (y-1) % 400 = 0) +d; -y; return(d+i); int CDateTime:YearMonthToDay(int y,int m ) int mday=0; switch(m) case 1: case 3: case 5: case 7: case 8: case 10: case 12: mday=31; break; case 2: if(y % 4 =0 & y % 100 != 0 | y % 400 = 0) mday=29; else mday=28; break; case 4: case 6:

8、 case 9: case 11: mday=30; break; default: mday=0; return mday;int CDateTime:DatesToDays( ) int total = 0; while( month 1) total += YearMonthToDay(year ,month-1); -month; int num = YearToDays( year); return (total +num +days);int CDateTime:DatesToWeek()/判断该日为星期几 int w = DatesToDays(); return (w%7);

9、void CDateTime:LastTime()void CDateTime:InputDates() cout输入年:year; cout输入月:month; while( month 12) cout重新输入月:month; cout输入天days;void CDateTime:InputYearMonth() cout输入年:year; cout输入月:month; while( month 12) cout重新输入月:month; int CDateTime:MonthToWeek( ) int t = DatesToDays( ); return (t-days)%7;void C

10、DateTime:PrintMonth( ) int y=year; int m=month; cout-endl; cout*endl; cout 日 一 二 三 四 五 六endl; int w = MonthToWeek( ); if( w !=6) for( int i =0;i=w;i+)/判断每个月的第一天为星期几 cout ; int k = YearMonthToDay(y,m); for( int j = 1 ;j= k; +j)/输出每个月的天数 coutsetw(2)setw(2)j; if( (j+w+1)%7 =0) coutendl; coutendl; cout-

11、endl; cout*endl; ostream & operator ( ostream & out, const CDateTime &c) outc.year年c.month月c.days日; return out; int fn1(void) int i,j,k; CDateTime d1,d2,d3,d4,d5; cout * 请选择: * endl; cout * 1.查询月历* endl; cout * 2.查询日期* endl; cout * 0.退出 * i; while(i!=0) switch(i) case 0: break; case 1: d1.InputYearM

12、onth(); d1.PrintMonth(); cout0.返回:j; while(j!=0) switch(j) case 0: break; default: cout请重新选择j; cout0返回j; break; case 2: d4.InputDates(); k=d4.DatesToWeek(); cout星期kendl; break; case 3: d5.InputDates(); / d5.LastTime(); break; default: while(i3) cout请重新输入i; cout1.查询月历endl; cout2.查询日期endl; cout0退出i; r

13、eturn 0;class Data private: int year; / int monthdaysN; public: void getyear(); /提示用户输入想要查询的年份 int ioleapyear(); /判断该年是不是闰年 int weekday(); /判断该年的元旦是星期几/ void setweek(); int monthday(int i); /该年每个月的天数 void disp(); /显示结果。; char* weekd7=一,二,三,四,五,六,日; /记录星期一到星期天void Data:getyear() coutyear; int Data:io

14、leapyear() if(year%4=0&year%100!=0|year%400=0) return 1; else return 0; int Data:weekday() int n=year-1900; /已知1900年的元旦刚好是星期一 / if(year%400=0) / n=n+(n-1)/4+2; / else n=n+(n-1)/4+1; / 判断,以每年个整星期计算year年比n年多出来的天数 n=n%7; if(n=0) return 7; /返回输入的年份的元旦是星期几 else return n; int Data:monthday(int i) if(i=1|i

15、=3|i=5|i=7|i=8|i=10|i=12) return 31; else if (i=2) if(ioleapyear() return 29; else return 28; else return 30; void Data:disp() int i; int n=weekday(); for(i=1;i=12;i+) /总共的月份 int lemp=1; coutendlsetw(5)i月份endl; cout-endl; for(int j=0;j7;j+) coutsetw(5)weekdj; coutendl-endl; for(int k=1;kn;k+,lemp+)

16、/输入每月第一天的起始位置,用空格补充 coutsetw(5) ; for(int d=1;d=monthday(i);d+,lemp+) coutsetw(5)d; if(lemp=7) /控制一行输出到星期天,如果到星期天则重新计数 coutendl; lemp=0; n=lemp%7; /当输出完一个月后,记录这个月的最后一天在哪,寻找下个月的 if(n=0) /第一天的起始位置 n=7; coutendl-endlendlendl; int fn2(void) Data a; coutsetw(45)万年历查询endl; cout- endl; a.getyear(); a.disp(

17、); return 0; void main()int x;cout *欢迎使用万年历*endl;cout * 1 年份查询 *endl;cout * 2.月历查询 *endl;cout * 3. 退出 *endl;coutx;switch(x)case 1:fn2();main();break;case 2:fn1();main();break;case 3:exit;break;第4章 测试与实验结果1 年份查询2.月份查询3.日期查询第5章 结束语课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对我们的实际工作能力的具体训练和考察过程。随着科

18、学技术发展的日新月异,当今计算机应用在生活中可以说是无处不在。因为作为二十一实际的大学生来说掌握程序开发技术是十分重要的,而语言又是最常见的,功能最强大的一种高级语言,因此做好C+课程设计是十分必要的。经过一个学期对C+程序设计的学习,我学习到了基本的理论知识,了解到了C+语言程序设计的思想,这些知识都为我的课程实践和进一步的学习打下了坚实的基础。通过C+课程设计,一方面是为了检查这一个学期来计算机语言的学习成果,另一方面也是为了让我们进一步掌握和熟练地运用它,与此同时,也能够让我们认清自己在C+学习方面的不足之处和薄弱环节,并加以弥补和巩固。通过对教学管理系统的程序设计,进一步的巩固了用C+

19、语言编写程序的能力,并且利于更好的掌握C+语言!在为期近一周的C+课程设计中,我体会颇多,学到了很多东西。我懂得了用Microsoft Visual C+ 6.0对程序进行调试,我加强了对C+程序设计这门课程的认识,并且复习了自己以前学习到的知识,自己的逻辑思考能力也提高不少。这些都使得我对计算机语言的学习有了更深入的认识!收获颇丰,相信会为自己以后的学习和工作带来很大的好处。最重要的还是激发了我编程的兴趣和热情,让我从一个只懂理论变成了能做一些小型程序。整体地评价这次课程设计,我认为收获很大,这并不是我们平时只靠课本,就可以轻易解决的。所以,锻炼了我们面对难题,学会用已掌握的知识去解决具体问题的能力,进一步培养了独立思考问题和解决问题的能力。特别是学会了在Visual C+中如何调试程序的方法。当然,老师的指导和同学的帮助也是不可忽视的,他们给了我许多提示和帮助,教会了我编译复杂程序的方法。总而言之,这次C+程序设计实践让我收获很大。参考文献1钱能. C+程序设计教程(第一版).清华大学出版社2 钱能. C+程序设计教程(第二版).清华大学出版社3 C+入门经典(清华大学出版)4邓华.Visual C+案例教程。北京中科多媒体电子出版社,20015龚志翔.Visual C+编程实例与技巧集粹。北京期望电子出版社,2004忽略此处.

展开阅读全文
相关资源
相关搜索
资源标签

当前位置:首页 > 技术资料 > 课程设计

版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1 

陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922