ImageVerifierCode 换一换
格式:DOC , 页数:24 ,大小:101KB ,
资源ID:2939291      下载积分:5 金币
验证码下载
登录下载
邮箱/手机:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/2939291.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  
声明  |  会员权益     获赠5币     写作写作

1、填表:    下载求助     索取发票    退款申请
2、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
3、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
4、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
5、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【w****g】。
6、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
7、本文档遇到问题,请及时私信或留言给本站上传会员【w****g】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。

注意事项

本文(C万年历课程设计报告.doc)为本站上传会员【w****g】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4008-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

C万年历课程设计报告.doc

1、 武汉纺织大学课 程 设 计 报 告 书名 称 C+程序设计课程设计题 目 万年历 专业班级 指导教师 李 敏 2014 年 6月11 日 目录课 程 设 计 报 告 书1第一章 需求分析.3 第二章 概要设计.2第三章 详细设计与编码5第四章 调试分析13第五章 用户使用说明24设计心得15参 考 文 献26致谢.16 第一章 需求分析 如今的社会是一个信息的时代,随着电脑等科技产品在人们生活中占据着越来越重要的地位,人们就会越加的善加利用,这为我们的生活带来了极大的效率,同时计算机的普及更可以看出它所占的地位。 万年历作为日常中的一种小工具,它具有多方面的小工能,主要在日期的显示上给人以直

2、观的表达效果,在日期的查询上方便简洁,还有就是在某些节日的提醒上都给我们带来极大的方便 ,是一种比较实用的小工具。我们每个人都可以在自己的个人电脑上进行制作,一方面不仅可以加强巩固我们对C+语言的学习,还可以通过自主的编程找到自身的缺点。这对培养我们自身的创新能力和动手能力具有很大的作用。 第二章 概要设计 1. 设计要求 模仿现实生活中的挂历. 当前页以系统当前日期的月份为准显示当前月的每一天(显示出日及对应的星期几).当系统日期变到下一月时,系统自动翻页到下一月.2. 总体设计 实现操作流程图运行万年历程序 进入程序界面 显示当月月历 选择执行操作 查询月历 退出 实时时钟显示 第三章 详

3、细设计与编码设计思路 要输出一个月的月历。第一要输出一行星期,这个很简单就可以实现,第二要知道一个月的一号是星期几,为了知道它,必须有一个日历的开始时间,我在这里设定的是1970年1月1号,此时它对应的事星期四,然后要计算你输入的日期与开始日期的总天数totaldays,(totaldays+4)%7即可得到月头是星期几,然后为了判断用户输入的日期是否正确,还得有一个检测判断函数,然后关于第三个功能实时时钟显示的实现思想为:每隔一秒输出系统当前时钟,每次输出时要在第一排的最前面输出,以覆盖掉上次输出的时钟,给人像是时钟自己在变化,我们可以调用系统API函数SetConsoleCursorPos

4、ition()来控制光标位置,整体思路如上所述。每个模块实现详解 Calendar类的实现,具体代码如下class Calendarpublic:Calendar()string p;t=time(0);p=getYear();year=atoi(p.c_str(); /将从系统时间中提取的字符串转换为整数p=getDay();day=atoi(p.c_str();p=getMonth();month=convert(p);/coutctime(&t);Calendar(int y,int m,int d)long a;year=y;month=m;day=d;a=getTotalDay();

5、a=a*24*3600;t=a;int convert(string p);string getYear() const return extract(20,4);string getMonth() const return extract(4,3); string getDay() const return extract(8,2); string getTime() const return extract(11,8); int getYear2() const return year;int getMonth2() const return month; int getDay2() co

6、nst return day; friend int create();friend bool isTrueDate(Calendar& temp);bool isLeapYear(int year);int getTotalDay();int getStartDay();int getDaysInMonth(int a);void display();friend ostream& operator(ostream& out,Calendar& a);private:string extract(int offset,int count) conststring timeString=cti

7、me(&t);return timeString.substr(offset,count);time_t t;int year;int month;int day;主要函数详解1、总天数函数int Calendar:getTotalDay()int i=1970,totalDay=0; /从1970年开始循环到当前年分for(;iyear;i+)if(isLeapYear(i) /判断点前年份是否为闰年totalDay+=366; /如果是加366天,否则加365天elsetotalDay+=365;for(i=1;imonth;i+)totalDay+=getDaysInMonth(i);r

8、eturn totalDay;2、求每个月天数函数int Calendar:getDaysInMonth(int m)int a;if(m=1|m=3|m=5|m=7|m=8|m=10|m=12) /1,3,5,7,8,10,12a=31;if(m=4|m=6|m=9|m=11) / 4,6,9,11月份a=30;if(isLeapYear(year)=true&m=2) /闰年2月a=29;if(isLeapYear(year)=false&m=2) /平年2月a=28;return a;3、重载输出操作符函数ostream& operator(ostream& out,Calendar&

9、a)int i=1,startDay;startDay=a.getStartDay();out Sun Mon Tue Wed Thu Fri Satendl; /输出星期行for(;i=startDay;i+) out ; /前面没有日期以空格填充for(i=0;ia.getDaysInMonth(a.convert(a.getMonth();i+)if(i+startDay)%7=0) /每输出7个后换行outendl;if(i+1)=a.day)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTEN

10、SITY|FOREGROUND_RED); /设置字的颜色为红色outsetw(4)i+1; /当月历中日期为当前日期时显示为红色 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);/设置字的颜色为白色,仅仅使当前日期显示为红色,其他日期为白色elseoutsetw(4)i+1;coutendl;return out;4、判断输入日期是否正确函数bool isTrueDate(Calendar&

11、 temp)if(temp.day=temp.getDaysInMonth(temp.month)return true; /输入的天数是不是小于当月最大日期else return false;if(temp.isLeapYear(temp.year)&temp.month=2)if(temp.day=29) /闰年2月是不是小于29天return true;elsereturn false;if(!temp.isLeapYear(temp.year)&temp.month=2)if(temp.day=28) /平年2月是不是小于28天return true;elsereturn false;

12、5、实时显示时钟函数int localTime() int i=0;time_t now; struct tm *timenow;HANDLE hStdout; /定义句柄CONSOLE_SCREEN_BUFFER_INFO pBuffer; /CONSOLE_CURSOR_INFO 结构体中包含了关于命令行光标的一些信息,是否显示和光标大小两个信息。通过更改这个结构体,再赋给命令行,就可以实现想要的一些效果了hStdout = GetStdHandle(STD_OUTPUT_HANDLE); GetConsoleScreenBufferInfo(hStdout, &pBuffer); /让句

13、柄指向当前进程,获取当前光标位置COORD pos; /COORD结构体,与位置有关while(i10)time(&now); /time()用来获取当前的系统时间,返回的结果是一个time_t类型,原型time_t time(time_t *t);/如果t是空指针,直接返回当前时间。如果t不是空指针,返回当前时间的同时,将返回值赋予t指向的内存空间timenow = localtime(&now); /原型struct tm *localtime(const time_t *clock)/把从1970-1-1零点零分到当前时间系统所偏移的秒数时间转换为本地时间SetConsoleTextAt

14、tribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN); /设置字的颜色为绿色,时钟绿色输出coutasctime(timenow); /函数原型char* asctime (const struct tm * timeptr),把timeptr指向的tm结构体中储存的时间转换为字符串字符串格式返回pos.X=0;pos.Y=pBuffer.dwCursorPosition.Y; /设置光标位置为排头SetConsoleCursorPosition(hStdout,pos); /移动光标到排头

15、i+;Sleep(1000);SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);/设置字的颜色为白色return 1;6、菜单函数int select()int n=0;cout*endl;cout* 1.显示当月日历 *endl;cout* 2.查询日历 *endl;cout* 3.实时显示时钟 *endl;cout* 4.退出软件 *endl;cout*endl;coutendl;coutp

16、lease selset the operator!n;coutn4|n1) /纠错coutthe numble you input is wrong ,try again!n;return n; 第四章 调试分析 程序运行测试 进入程序界面: (进入程序的第一步) 选择操作1:(可以看到显示出当月月历,并且当天用红色标出)再次选择,选择操作2(提示是以年月方式,或者以年月日方式查询月历)(选择方式一,并输入1992年13月,提示输入错误,清再次输入)(再次输入1992年12月后得到正确结果)再次选择操作,选择操作3(可以看到时间在不断变化,达到了实际效果) 第五章 用户使用说明 这是一个简单

17、的万年历程序,用户可以通过键入年月或者年月日,便可以轻松快速的查询到当月月历,还可以输入1快速的得到现在用户所处月的月历,每天的信息一目了然,方便快捷,可能够通过键入3来获取当前时间(精确到秒)。 设计心得通过几天的不懈努力,这一份C+的课程设计终于在自己的努力与同学的帮助下顺利的完成了。前期可能是自己的一些方面薄弱,并没有完全的理解一些代码,从而设计出来的程序编译出错,还好在一些知识能力强的同学下进行了合理的改正才有了现在的这个完整的程序。设计一个万年历的程序之前,可能都是有自己大概的一点想法,也许看上去简单,但通过实际的操作我便发现,各种细小的错误都可能会出现,这便让我意识到个人平时的动手

18、操作还是有欠缺的。所以还是如老师讲的那般,以电脑软件的检验来通过不断的练习完善自己的薄弱点。通过这次为数不多的几天计算机实践学习,加上这学期的学习,我了解了一些关于c+语言的知识,理解巩固了我c+语言的理论知识,开始可能学的枯燥,但不断的深入便能发现他的有趣点,就如这一次万年历的设计,所以这便更容易让我感觉到,只要认真的学了,加上自己的汗水,还是一样能够有收获的。 参 考 文 献作者:Y.Daniel Liang Java语言程序设计作者: Richard Johnsonbaugh & Martin Kalin 面向对象程序设计C+语言描述百度文库: 致 谢附录一:#include #incl

19、ude #include #include #include using namespace std;class Calendar;ostream& operator(ostream& out,Calendar& a);bool isTrueDate(Calendar& temp);int create();class Calendarpublic:Calendar()string p;t=time(0);p=getYear();year=atoi(p.c_str(); p=getDay();day=atoi(p.c_str();p=getMonth();month=convert(p);co

20、utctime(&t);Calendar(int y,int m,int d)long a;year=y;month=m;day=d;a=getTotalDay();a=a*24*3600;t=a;int convert(string p);string getYear() const return extract(20,4);string getMonth() const return extract(4,3); string getDay() const return extract(8,2); string getTime() const return extract(11,8); in

21、t getYear2() const return year;int getMonth2() const return month; int getDay2() const return day; friend int create();friend bool isTrueDate(Calendar& temp);bool isLeapYear(int year);int getTotalDay();int getStartDay();int getDaysInMonth(int a);void display();friend ostream& operator(ostream& out,C

22、alendar& a);private:string extract(int offset,int count) conststring timeString=ctime(&t);return timeString.substr(offset,count);time_t t;int year;int month;int day;int Calendar:convert(string p)int monthName;if(p=Jan)monthName=1;if(p=Feb)monthName=2;if(p=Mar)monthName=3;if(p=Apr)monthName=4;if(p=Ma

23、y)monthName=5;if(p=Jun)monthName=6;if(p=Jul)monthName=7;if(p=Aug)monthName=8;if(p=Sep) monthName=9;if(p=Oct) monthName=10;if(p=Nov) monthName=11;if(p=Dec) monthName=12;return monthName;bool Calendar:isLeapYear(int y)if(y%400=0|(y%4=0&y%100!=0)return true;elsereturn false;int Calendar:getTotalDay()in

24、t i=1970,totalDay=0; for(;iyear;i+)if(isLeapYear(i)totalDay+=366;elsetotalDay+=365;for(i=1;imonth;i+)totalDay+=getDaysInMonth(i);return totalDay;int Calendar:getDaysInMonth(int m)int a;if(m=1|m=3|m=5|m=7|m=8|m=10|m=12)a=31;if(m=4|m=6|m=9|m=11)a=30;if(isLeapYear(year)=true&m=2)a=29;if(isLeapYear(year

25、)=false&m=2)a=28;return a;int Calendar:getStartDay()int a=0;a=getTotalDay();a=(a+4)%7;return a;void Calendar:display()int i=1,startDay;startDay=getStartDay();cout Mon Tue Wed Thu Fri Sat Sunendl;for(;i=startDay;i+)cout ;for(i=0;igetDaysInMonth(month);i+)if(i+startDay)%7=0)coutendl;coutsetw(4)i+1;cou

26、tendl;ostream& operator(ostream& out,Calendar& a)int i=1,startDay;startDay=a.getStartDay();out Sun Mon Tue Wed Thu Fri Satendl;for(;i=startDay;i+)out ;for(i=0;ia.getDaysInMonth(a.convert(a.getMonth();i+)if(i+startDay)%7=0)outendl;if(i+1)=a.day)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),

27、FOREGROUND_INTENSITY|FOREGROUND_RED); /设置字的颜色为红色outsetw(4)i+1; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);elseoutsetw(4)i+1;coutendl;return out;int select()int n=0;cout*endl;cout* 1.显示当月日历 *endl;cout* 2.查询日历 *endl;cou

28、t* 3.实时显示时钟 *endl;cout* 4.退出软件 *endl;cout*endl;coutendl;coutplease selset the operator!n;coutn4|n1)coutthe numble you input is wrong ,try again!n;return n;int localTime() int i=0;time_t now; struct tm *timenow;HANDLE hStdout; /定义句柄CONSOLE_SCREEN_BUFFER_INFO pBuffer; /CONSOLE_CURSOR_INFO hStdout = Ge

29、tStdHandle(STD_OUTPUT_HANDLE); GetConsoleScreenBufferInfo(hStdout, &pBuffer); COORD pos; /COORD结构体,与位置有关while(i10)time(&now); timenow = localtime(&now);SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN); /设置字的颜色为绿色coutasctime(timenow); pos.X=0;pos.Y=pBuffe

30、r.dwCursorPosition.Y; SetConsoleCursorPosition(hStdout,pos); i+;Sleep(1000);SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);/设置字的颜色为白色return 1;int create()int x, y, z,n;coutplease chioce the input way:endl;cout1.年月方式(默认为当月

31、一号)endl;cout2.年月日方式endln;coutplease input the date:2|n1)coutthe numble you input is wrong ,please try again!n;if(n=1)cinxy;z=1;if(n=2)cinxyz;Calendar temp(x,y,z); /设置临时变量,测试输入数据是否正确while(!isTrueDate(temp)coutthe date you input is wrong,please checked,and try again!xyz;if(n=1)cinxy;z=1;temp.year=x;te

32、mp.month=y;temp.day=z;Calendar a1(x,y,z);cout a1.getYear2()年 a1.getMonth2()月 a1.getDay2()日endlendl;couta1;coutendl;return 1;bool isTrueDate(Calendar& temp)if(temp.day=temp.getDaysInMonth(temp.month)return true;else return false;if(temp.isLeapYear(temp.year)&temp.month=2)if(temp.day=29)return true;el

33、sereturn false;if(!temp.isLeapYear(temp.year)&temp.month=2)if(temp.day=28)return true;elsereturn false;int main()Calendar a;SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);for(;)switch(select()case 1:cout a.getMonth() a.getDay() a.getYear()endlendl; couta; break;case 2:create();break;case 3:localTime(); break;case 4:exit(0);break;default:break;return 1;

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服