已阅读5页,还剩24页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目 录目 录1第一章 设计目的与要求31.1 设计目的31.2 设计要求3第二章 课程设计分析42.1 设计背景42.2 程序开发环境42.3 课程设计主要内容4第三章总体设计53.1 整体流程图53.2 功能模块图63.3 各模块功能详细说明63.3.1 查询星期模块63.3.2 判断模块63.3.3 查询月历模块63.3.4 显示模块73.3.5 显示模块73.3.6 退出模块73.4 各模块函数说明73.4.1查询星期模块程序:73.4.2 判断模块程序73.4.3 查询月历模块73.4.4 显示模块程序93.4.4 重载模块程序103.4.4类成员与成员函数11第四章 程序调试与功能实现134.1系统使用说明134.2 系统运行结果及运行截图134.2.1 系统总体选择图134.2.2 当前月份日历并可以翻页134.2.3 某一年的日历144.2.4输出所要查询的日期并可以翻页154.2.5 输出所查询的日期星座174.3主函数代码17第五章 课程设计心得与体会20参考文献21附录:源代码22第一章 设计目的与要求1.1 设计目的通过显示年日历程序的设计,培养学生综合利用C+语言进行程序设计的能力,加强函数的运用及学生对软件工程方法的初步认识,提高软件系统分析能力和程序文档建立、归纳总结的能力,培养学生利用系统提供的标准函数及典型算法进行设计。通过本项课程设计,可以培养独立思考、 综合运用所学有关相应知识的能力,能更好的巩固C+面向对象程序设计课程学习的内容,掌握 工程软件设计的基本方法,强化上机动手编程能力,闯过理论与实践相结合的难关!更加了解了C+语言的好处和其可用性!同时增加了同学之间的团队合作精神!更加也体会到以后在工作中团队合作的重要性和必要性!通过C+语言课程设计,使学生了解高级程序设计语言的结构,掌握基本的程序设计过程和技巧,掌握基本的分析问题和利用计算机求解问题的能力,具备初步的高级语言程序设计能力。为后续各门计算机课程的学习和毕业设计打下坚实基础。1.2 设计要求1、能够显示年份、月份、星期;2、能够像挂历一样上下翻页;3、能够提示用户是否继续;4、当系统时间变动时,能改变到相应的时间;5、要求用C+语言编程,在VisualC+6环境下调试完成;6、要求划分功能模块,各个功能分别使用函数来完成;7、源代码程序要有必要的注释。第二章 课程设计分析2.1 设计背景C+教学起步的背景 1996年,国外计算机产业界正在全面兴起面向对象编程与设计的热潮,其主要工具就是C+。C+在数据类型的安全上,弥补了C的不足,克服了C的种种安全隐患,用C+开发的产品正在稳步上市,并开始超过了C。C+的开发工具正在稳步推出,在Windows环境下的两个主要C+开发工具Borland C+ Builder40和Microsoft Visual C+60标志着C+开发工具已经成熟。2.2 程序开发环境a.开发工具 Microsoft Visual C+ 6.0b.系统环境 Windows 7c.设计工具 Office 20032.3 课程设计主要内容1、提示用户输入需要查询的年月;2、提示用户是否继续;3、上下翻页显示前一月份(后一月份)的日历;4、提示用户是否继续5、自动显示某一年的所有月份日历;6、根据用户输入进行操作。第三章总体设计3.1 整体流程图开 始菜单输出提示输入年月输出查询日历结 束选择操作选项输出提示显示信息判断图3.1 流程图3.2 功能模块图万年历系统显示当前日期的日历显示某一年份的日历显示某一月份的日历星座查询图3.2 功能模块图3.3 各模块功能详细说明3.3.1 查询星期模块本模块是用来查询输入日期是星期几。3.3.2 判断模块本模块是用来判断输入年份是否为闰年。3.3.3 查询月历模块本模块是用来查询、显示输入年份中的月历。3.3.4 显示模块本模块是用来显示输入年份的年历。3.3.5 显示模块本模块是用来显示用户的星座及相关信息。3.3.6 退出模块本模块是用来合法退出本系统。3.4 各模块函数说明3.4.1查询星期模块程序:int Calendar:week(Calendar Cd)int S=0,W=0;S=Cd.sumday(Cd);W=S%7;return W;从1年1月算起3.4.2 判断模块程序int Calendar:isleapyear(int y)if(y%4=0&y%100!=0|y%400=0)return 1;else return 0;3.4.3 查询月历模块void Calendar:showoutCalendar(Calendar Cd)cout -endl;cout.fill( );cout.width(40);coutCd.getyear()年Cd.getmonth()月endl;cout 星期日 星期一 星期二 星期三 星期四 星期五 星期六endl;for(int j=0;j6;j+)if(j=0)for(int i=0;iCd.week(Cd);i+)Aji= ;cout.fill( ); cout.width(10);coutchar(Aji);for(i;i7;i+)Aji=NU;NU+;cout.fill( );cout.width(10);coutAji;elsefor(int i=0;i7;i+)if(NU=Cd.getmonthdays(Cd)Aji=NU;cout.fill( );cout.width(10);coutAji;NU+;coutendlendl;NU=1;cout -endl;3.4.4 显示模块程序void show() int Y; Calendar YEAR12;cout请输入查询年份:Y;Calendar C(Y,0,1);if(Y%4=0&Y%100!=0|Y%400=0)cout C.getyear()年(闰年)endl;for(int i=0;i12;i+)C=C.change1(C);YEARi=C;YEARi.showoutCalendar(YEARi);3.4.4 重载模块程序void operator+()if(monthshowoutCalendar(D);elsecout *year年日历*1)month=month-1;Calendar D(year,month,day);Calendar *p;p=new Calendar;p=&D;p-showoutCalendar(D);elsecout *year年日历*endl;year=year-1;month=12;Calendar E(year,month,day);E.showoutCalendar(E);重载+、-函数以实现上下翻页3.4.4类成员与成员函数 class Calendarint year;int month;int day;intA56;public:Calendar(int y=1,int m=1,int d=1):year(y),month(m),day(d)int getyear()return year;int getmonth()return month;int getday()return day;int isleapyear(int y); /判断是否是闰年int getyeardays(int y); /某一年的天数int getmonthdays(Calendar Cd);int week(Calendar Cd); /星期几void getdate();int sumday(Calendar Cd); /从1年1月到当前日期的天数void showoutCalendar(Calendar Cd);Calendar change1(Calendar Cd)Cd.month+;return Cd;Calendar (Calendar &Cd)year=Cd.year;month=Cd.month;day=Cd.day;第四章 程序调试与功能实现 4.1系统使用说明这个程序是用C+编写的,在软件Microsoft Visual C+6.0上运行,首先打开Visual C+,创建文件夹保存,新建文件,然后编入代码,编译,如果没有错误的话运行。运行界面上有五个选项,根据需求选择选项。 4.2 系统运行结果及运行截图4.2.1 系统总体选择图图4.2.1 菜单选项4.2.2 当前月份日历并可以翻页图4.2.2当前月份 4.2.3 某一年的日历图4.2.3(a) 显示2000年12月份日历且为闰年4.2.4输出所要查询的日期并可以翻页图4.2.4(a) 日历查询图图4.2.4(a)翻页后得到的日历 4.2.5 输出所查询的日期星座图4.2.5 月历打印图4.3主函数代码#include #include #includeint NU=1;const int size=80;int main() Calendar A,B12;int select;docout*万年历*endl;cout* 1:显示当前月份 *endl;cout* 2:显示某一年的12个月份 *endl;cout* 3:查看某个日期的月份 *endl;cout* 4:查看你的星座 *endl;cout* 5:查看当前日期 *endl;cout* 6:退出 *endl;cout*endl;cout请选择:select;int i=1; /第几月switch(select)case 1:A.getdate();A.showoutCalendar(A);choice(A);break;case 2:show();break;case 3:seek();break;case 4:Constellation();break;case 5:Present();break;while(select!=6);return 0 ; 第五章 课程设计心得与体会学习了本课程了解了面向对象的程序设计的方法,面向对象的实现主要通过类及其成员和成员函数来实现。学习C+就是学习一门语言,不仅仅是学语言,语言仅是一种表达方式而已。只有全面撑握了这些东西,然后学了语法.就要经常锻炼。写不好没关系,哪怕再小的程序,写写改改慢慢地,就会提高的。还有,不要死攻一门语言,多看看其他的,触类旁通。需要自身积累一些常用的函数,方便今后做大程序时调用。像程序工程师一般都有自己的函数库,一方面也是给自己的身价升值。因为自己的函数库在调用时,自己的名字只有自己清楚。这也是保护自己的方法。一句话:熟能生巧。我深刻地体会到,做事情要有安排,要有自己的想法。对事情有一定的管理分类,就像本次设计的万年历系统一样。在管理的同时要有清晰的思路。本次课程设计唯一的遗憾就是没有完成将日历从阳历转化到农历的设计,农历应该是一般日历都应该出现的日期,但是在转化过程中没有将其一一对应,另一个原因是自己对农历的算法没有清晰地认识,比如有时候农历会连续出现两个相同的月份等等。在完成此次设计以后,我会在研究农历的转化。当一切都完成以后,我除了学会编写程序以外,我也学会了许多别的东西。首先,我学会了合作。合作,必然产生分歧,学会解决分歧,我们便会让友谊更加牢固。其次,我们学会了分工。分工是为了更好的合作,分工才能提高合作的效率。我们要和同学有更的交流,和同学交流学习方法等等。参考文献1郑振杰.C+程序设计 北京:人民邮电出版社,20052柴欣,C/C+程序设计 河北大学出版社,20023余苏宁、王明福,C+程序设计 北京:高等教育出版社,20034 吕凤翥.C+语言程序设计(第2版).电子工业出版社,2007.25 李云清、杨庆红、揭安全.数据结构M.人民邮电大学出版社,2004.6附录:源代码 28#include #include #includeint NU=1;const int size=80;class Calendarint year;int month;int day;intA56;public:Calendar(int y=1,int m=1,int d=1):year(y),month(m),day(d)int getyear()return year;int getmonth()return month;int getday()return day;int isleapyear(int y); /判断是否是闰年int getyeardays(int y); /某一年的天数int getmonthdays(Calendar Cd);int week(Calendar Cd); /星期几void getdate();int sumday(Calendar Cd); /从1年1月到当前日期的天数void showoutCalendar(Calendar Cd);Calendar change1(Calendar Cd)Cd.month+;return Cd;Calendar (Calendar &Cd)year=Cd.year;month=Cd.month;day=Cd.day;void operator+()if(monthshowoutCalendar(D);elsecout *year年日历*1)month=month-1;Calendar D(year,month,day);Calendar *p;p=new Calendar;p=&D;p-showoutCalendar(D);elsecout *year年日历*endl;year=year-1;month=12;Calendar E(year,month,day);E.showoutCalendar(E);void Calendar:showoutCalendar(Calendar Cd)cout -endl;cout.fill( );cout.width(40);coutCd.getyear()年Cd.getmonth()月endl;cout 星期日 星期一 星期二 星期三 星期四 星期五 星期六endl;for(int j=0;j6;j+)if(j=0)for(int i=0;iCd.week(Cd);i+)Aji= ;cout.fill( ); cout.width(10);coutchar(Aji);for(i;i7;i+)Aji=NU;NU+;cout.fill( );cout.width(10);coutAji;elsefor(int i=0;i7;i+)if(NU=Cd.getmonthdays(Cd)Aji=NU;cout.fill( );cout.width(10);coutAji;NU+;coutendlendl;NU=1;cout -endl;int Calendar:isleapyear(int y)if(y%4=0&y%100!=0|y%400=0)return 1;else return 0;int Calendar:getyeardays(int y)if(isleapyear(y) return 366;else return 365;int Calendar:getmonthdays(Calendar Cd)int n;switch(Cd.getmonth()case 1:case 3:case 5:case 7:case 8:case 10:case 12:n=31;break;case 4:case 6:case 9:case 11:n=30;break;case 2:if(isleapyear(Cd.getyear() n=29;else n=28;return n;int Calendar:sumday(Calendar Cd)int sum=0;for(int y=1;yCd.getyear();y+)sum+=getyeardays(y);for(int m=1;mCd.getmonth();m+ )sum+=getmonthdays(Calendar(y,m,1);return sum+1;void Calendar:getdate()time_t curtime=time(0); tm tim =*localtime(&curtime); day=tim.tm_mday;month=tim.tm_mon+1;year=tim.tm_year+1900;coutyear年month月day日endl;int Calendar:week(Calendar Cd)int S=0,W=0;S=Cd.sumday(Cd);W=S%7;return W;void Present()time_t curtime=time(0); tm tim =*localtime(&curtime); int day,mon,year; day=tim.tm_mday;mon=tim.tm_mon+1;year=tim.tm_year+1900;coutyear年mon月day日endl;void choice(Calendar Cd)int c=0;docout1前一月份 2下一月份 0返回到主菜单c;switch(c)case 1:-Cd;break;case 2:+Cd;break;while(c!=0);void seek ()NU=1;int Y,M;cout输入你要查询的年份Y;cout输入你要查询的月份M;Calendar C(Y,M,1);C.showoutCalendar(C);choice(C);void show() int Y; Calendar YEAR12;cout请输入查询年份:Y;Calendar C(Y,0,1);if(Y%4=0&Y%100!=0|Y%400=0)cout C.getyear()年(闰年)endl;for(int i=0;i12;i+)C=C.change1(C);YEARi=C;YEARi.showoutCalendar(YEARi); void Constellation() double year; int month,day; cout请输入你的生日endl; coutyear; coutmonth; coutday; ifstream fin; char line size;if(month=3&day20)|(month=4&day20)fin.open(白羊座.txt);while(fin)fin.getline(line,size);coutline19)|(month=5&day21)fin.open(金牛座.txt);while(fin)fin.getline(line,size);coutline20)|(month=6&day22)fin.open(双子座.txt);while(fin)fin.getline(line,size);coutline21)|(month=7&day23)fin.open(巨蟹座.txt);while(fin)fin.getline(line,size);coutline22)|(month=8&day23)fin.open(狮子座.txt);while(fin)fin.getline(line,size);coutline22)|(month=9&day23)fin.open(处女座.txt);while(fin)fin.getline(line,size);coutline22)|(month=10&day24)fin.open(天秤座.txt);while(fi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 三找工作制度
- 减塑工作制度
- 云在线工作制度
- 体液室工作制度
- 出版社工作制度
- 2026 年中职给排水(管道安装)试题及答案
- 产品网络促销活动策划方案
- 公司集体生日会策划方案
- 维修安全培训内容
- 厂区人车分流方案汇报
- 新能源电池检测服务协议
- DB51∕T 553-2025 小白菜生产技术规程
- 在家输液协议书
- 账号孵化合同范本
- 2025年及未来5年市场数据中国水族器材市场竞争态势及投资战略规划研究报告
- 2026年云南省政府采购评审专家考前冲刺备考300题(含答案)
- 腕管综合征护理查房
- 担保法课件教学
- 超级单品成就超级品牌报告鸭鸭羽绒服解数咨询
- 柔性支架单排桩施工方案
- 2025计算机二级wps office真题及答案
评论
0/150
提交评论