万年历综合课程设计报告.doc_第1页
万年历综合课程设计报告.doc_第2页
万年历综合课程设计报告.doc_第3页
万年历综合课程设计报告.doc_第4页
万年历综合课程设计报告.doc_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C程序设计综合课程设计万年历课程设计报告目录第一章 设计目的与要求11.1 设计目的11.2 设计要求1第二章 课程设计的相关内容22.1 设计背景22.2 程序开发环境22.3 课程设计主要内容2第三章 课程设计整体规划和设计33.1 整体流程图33.2 功能模块图33.3 各模块功能详细说明33.3.1 查询星期模块33.3.2 判断模块33.3.3 查询月历模块33.3.4 显示模块33.3.5 退出模块33.4 各模块函数说明33.4.1查询星期模块程序:33.4.2 判断模块程序33.4.3 查询月历模块33.4.4 显示模块程序3第四章 系统实现34.1系统使用说明及出现的问题34.1.1 系统使用说明34.1.2 可能出现的问题34.2 系统运行结果及运行截图34.2.1 系统总体选择图34.2.2 查询输入的这天是星期几34.2.3 判断输入的这年是否为闰年34.2.4 查询一年第几年的日历34.2.5 打印出一年的日历34.2.6 输入年份不在范围内34.2.7 输入错误符号34.2.8 输入的数字不在选择范围内34.2.9 退出34.3 系统核心代码3第五章 课程设计心得与体会3附录一:参考文献3附录二:程序清单3II第一章 设计目的与要求1.1 设计目的 通过显示年日历程序的设计,培养学生综合利用C+语言进行程序设计的能力,加强函数的运用及学生对软件工程方法的初步认识,提高软件系统分析能力和程序文档建立、归纳总结的能力,培养学生利用系统提供的标准函数及典型算法进行设计。 通过本项课程设计,可以培养独立思考、 综合运用所学有关相应知识的能力,能更好的巩固C+语言程序设计课程学习的内容,掌握 工程软件设计的基本方法,强化上机动手编程能力,闯过理论与实践相结合的难关!更加了解了C+语言的好处和其可用性!同时增加了同学之间的团队合作精神!更加也体会到以后在工作中团队合作的重要性和必要性!通过C+语言课程设计,使学生了解高级程序设计语言的结构,掌握基本的程序设计过程和技巧,掌握基本的分析问题和利用计算机求解问题的能力,具备初步的高级语言程序设计能力。为后续各门计算机课程的学习和毕业设计打下坚实基础。1.2 设计要求1、能够显示时间、时分、星期;2、能够显示年月日;3、能够自动清除屏幕以前的废弃信息;4、能够修改;5、能够自动打印;6、能够提示用户是否继续;4、当系统时间变动时,能自动跳到相应的时间;5、要求用C+语言编程,在VisualC+环境下调试完成;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 upc.设计工具 Office 20032.3 课程设计主要内容1、打开系统自动显示系统当前时间,包括年月日时分等信息;2、提示用户输入需要查询的年月;3、提示用户是否继续4、自动清屏清除屏幕以前废弃信息;5、自动打印出用户输入的年月的日历信息;6、系统自动显示当前年月的日历;7、根据用户输入进行操作.第三章 课程设计整体规划和设计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.4 各模块函数说明3.4.1查询星期模块程序:int DaySearch(int year,int month,int day) /判断哪一天int m,c=0;float s;for(m=1;mn,year);for(i=1;i=12;i+) if(i=month) printf(nnt=%s(%d)=nn,month_stri-1,i); printf(日 一 二 三 四 五 六 n); printf(S M T W T F S nn); temp=DaySearch(year,i,1); for(j=1;j=month_day(year,i)+temp;j+) if(j-temp=0) printf( ); else if(j-tempn,year);for(i=1;i=12;i+) printf(nnt=%s(%d)=nn,month_stri-1,i); printf(日 一 二 三 四 五 六 n); printf(S M T W T F S nn); temp=DaySearch(year,i,1); for(j=1;j=month_day(year,i)+temp;j+) if(j-temp=0) printf( ); else if(j-temp10) printf(%d ,j-temp); else printf(%d ,j-temp); if(j%7=0) printf(n); return 0;第四章 系统实现4.1系统使用说明及出现的问题4.1.1 系统使用说明 这个程序是用C语言编写的,在软件Microsoft Visual C+上运行,首先打开Visual C+,创建文件夹保存,新建文件,然后编入代码,编译,如果没有错误的话运行。运行界面上有五个选项,根据需求选择选项,首页最上面是显示的运行当时的本地时间。4.1.2 可能出现的问题在编写代码的时候可能会出现错误,这时在代码下面会提示错误与警告的地方,双击显示的代码就可找出代码的错误所在行,如果编译后下面都是显示0个错误和警告时,就可以运行,有是即使是0个错误,有几个警告也可以运行。在运行的过程中输入的年份不在1900到2050之间,系统就显示不出所要求的内容,系统也会提醒。如果输入的不是数字,输入其他符号,系统会做出提示说输入错误,让重新输入。4.2 系统运行结果及运行截图4.2.1 系统总体选择图图4.2.1 系统总体选择图4.2.2 查询输入的这天是星期几图4.2.2 星期查询图4.2.3 判断输入的这年是否为闰年图4.2.3(a) 判断是否为闰年图图4.2.3(b) 判断是否为闰年图4.2.4 查询一年第几年的日历图4.2.4 日历查询图4.2.5 打印出一年的日历图4.2.5 月历打印图4.2.6 输入年份不在范围内图4.2.6 输入错误数字图4.2.7 输入错误符号图4.2.7 输入错误符号图4.2.8 输入的数字不在选择范围内4.2.8 输入错误选择图4.2.9 退出图4.2.9 退出图4.3 系统核心代码# include # include # include # include char * month_str=January,February,March,April,May,June,July,August,September,October,November,December; char * week=Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday; void Time() /获取系统时间time_t t;struct tm *tp;static char *week=一,二,三,四,五,六,日;t=time(NULL);tp=localtime(&t);printf(t n);printf(tt 现在是:%d年%d月%d日,tp-tm_year+1900,tp-tm_mon+1,tp-tm_mday);printf( %d:%d:%d ,tp-tm_hour,tp-tm_min,tp-tm_sec);printf(星期%sn,week(tp-tm_wday)-1);printf(t n);int IsLeapYear(int year) /判断闰年 if(year%4=0&year%100!=0)|(year%400=0) return 1;else return 0;第五章 课程设计心得与体会目前流行的计算机日历程序,比较典型的是Windows各版本中的日历程序以及基础于该程序所开发的各种应用程序中的日历程序。然而,这些程序都千篇一律的局限在一个很短的时间范围内。(Windows各个版本一般都局限在1980年至2099年这一范围内),但是,在很多情况下,特别是在众多的科学研究领域中,一个时间跨度较大的日历程序是很有参考价值的。C程序设计语言充分发挥了其自身无与伦比的优越性,用极短的程序文本填补了这一领域的空白,同时用铁的事实强有力的告诉世人:C程序设计语言作为计算机语言家族的新生事物,其发展前景是极为广阔的。经过上一个学期对C程序设计的学习,我们学习了理论知识,了解了C语言程序设计的思想,这些知识都为我们的下一步学习打下了坚实的基础。通过课程设计,一方面是为了检查我们一个学期来我们学习的成果,另一方面也是为了让我们进一步的掌握和运用它,同时也让我们认清自己的不足之处和薄弱环节,加以弥补和加强。通过对c语言万年历的设计进一步的巩固了用c语言编写程序,并且有利于更好的掌握c语言! 在万年历的编写过程中也体会到了做事情一顶要细心、认真。更加知道了要掌握好基础知识。还有体会到了成功的感觉!在万年历的设计过程中更加体会到了团队合作的重要性,“一个诸葛亮比不上三个臭皮匠。”知道了只有团队合作才会更好的完成设计!也体会到以后在工作中团队合作的必要性和重要性!通过本项课程设计也培养了我独立思考、 综合运用所学有关相应知识的能力,掌握 工程软件设计的基本方法,强化上机动手编程能力,闯过理论与实践相结合的难关!由于C语言是近年在国内外得到迅速推广应用的一种语言。C语言功能丰富,表达能力强,使用灵活方便,应用面广,目标程序效率高,可移植性好,既具有高级语言的优点,又具有低级语言的许多特点。通过这次的c语言程序设计更加了解了c语言的好处和其可用性!在这次课程设计中也知道了自己的动手能力不强有待进一部的提高!在设计过程中不能够把书本上的知识与实践相结合,这也就增加了设计不好该程序的想法!在设计过程中的一次次设计错误增加了我放弃的想法!不过经过大家的努力终于完成了课程设计!完成该程序后想起自己以前的每一次对自己失去信心,就觉得并不是在知识掌握上打败了,而是自己对自己缺乏信心!只要自己对自己不失去信心相信就可以完成那些以前认为完成不了的事情!也让我懂得了要想成功首先就必须有很强的自信心!懂得了自己以后要在做任何事情时都要自信!当自己都不相信自己能够成功时还可能会获得成功吗?在C语言程序设计的过程中也知道了自己在以前的学习中有很大的不足导致在设计过程中出现了很多的问题,有些地方看不懂也不知道怎么去设计,但是在设计过程中也学习了很多,掌握了自己以前没有学好的知识,虽然一时可以掌握完以前没有学好的知识,不过也给自己敲响了警钟,在学习中不可以伏于表面,要想学好每一门课程都要踏踏实实,做什么都不是给别人看的!都是要更好的掌握该门知识,提高自己的自身的修养,提高自己的能力!为以后的工作打下良好的知识基础和技能基础!附录一: 参考文献谭浩强编著.C程序设计第二版M.北京:清华大学出版社,1999陈朔鹰,陈英编著.C语言趣味程序百例精解M.北京:北京理工大学出版社,1994电脑知识与技术学术交流版J2005.2 (备注:来自网络资源)Herbert Schildit著. 戴健鹏译. C语言大全 (第二版)M.北京:电子工业出版社,1994谭浩强,张基温,唐永炎编著. C语言程序设计教程.M北京: 高等教育出版社,1992秦友淑,曹化工编著.C语言程序设计教程. M武汉:华中理工大学出版社,1996曹衍龙,林瑞仲,徐慧 编著.C语言实例解析精粹 M北京:人民邮电出版社,2005.3黄明等编著.21世纪进阶辅导C语言程序设计. M大连理工大学出。附录二:程序清单# include # include # include # include char * month_str=January,February,March,April,May,June,July,August,September,October,November,December; char * week=Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday; void Time() /获取系统时间time_t t;struct tm *tp;static char *week=一,二,三,四,五,六,日;t=time(NULL);tp=localtime(&t);printf(t n);printf(tt 现在是:%d年%d月%d日,tp-tm_year+1900,tp-tm_mon+1,tp-tm_mday);printf( %d:%d:%d ,tp-tm_hour,tp-tm_min,tp-tm_sec);printf(星期%sn,week(tp-tm_wday)-1);printf(t n);int IsLeapYear(int year) /判断闰年 if(year%4=0&year%100!=0)|(year%400=0) return 1;else return 0;int month_day(int year,int month)int mon_day=31,28,31,30,31,30,31,31,30,31,30,31;if(IsLeapYear(year)&month=2) return 29;else return(mon_daymonth-1); int DaySearch(int year,int month,int day) /判断哪一天int m,c=0;float s;for(m=1;mn,year);for(i=1;i=12;i+) printf(nnt=%s(%d)=nn,month_stri-1,i); printf(日 一 二 三 四 五 六 n); printf(S M T W T F S nn); temp=DaySearch(year,i,1); for(j=1;j=month_day(year,i)+temp;j+) if(j-temp=0) printf( ); else if(j-tempn,year);for(i=1;i=12;i+) if(i=month) printf(nnt=%s(%d)=nn,month_stri-1,i); printf(日 一 二 三 四 五 六 n); printf(S M T W T F S nn); temp=DaySearch(year,i,1); for(j=1;j=month_day(year,i)+temp;j+) if(j-temp=0) printf( ); else if(j-temp10) printf(%d ,j-temp); else printf(%d ,j-temp); if(j%7=0) printf(n); break; return 0;menu()int option,da,year,month,day; char ch,c; printf(nnttt nnn);while(1) printf(nttt 请选择以下功能-nn); printf(ttt 1. 查询输入的这天是星期几n); printf(ttt 2. 判断输入的这年是否为闰年n); printf(ttt 3. 查询一年第几月的日历n); printf(ttt 4. 打印出一年的日历n); printf(ttt 5. 退 出n); printf(tt -n); printf(ttt请选择); while(scanf(%d, &option)!=1) while (c=getchar()!=n); printf(nnnnnttt【】Error:输入有误,请重新输入!); getch(); system(cls); Time(); menu(); switch(option) case 1: while(1) system(cls); nod:printf(请输入某年某月某天如:n2007n09n25n请输入.n); printf(请输入某年:); while(scanf(%d,&year)!=1) while (c=getchar()!=n); printf(nnttt【】Error:输入有误,请重新输入!); getch(); system(cls); goto nod; if(year2500) printf(nnntt出错了!您输入的年份必须在19002500之间,请重新输入.); getch(); system(cls); goto nod; frist:printf(请输入这年的第几月:); while(scanf(%d,&month)!=1) while (c=getchar()!=n); printf(【】Error:输入有误,请重新输入!n); goto frist; if(month12) printf(出错了!您输入的月份必须在112之间,请重新输入.n); goto frist; second:printf(请输入这年的第几天:); while(scanf(%d,&day)!=1) while (c=getchar()!=n); printf(【】Error:输入有误,请重新输入!n); goto second; if(day=29&!IsLeapYear(year)&month=2) printf(出错了,您输入的%d年必须在129之间,请重新输入.n,year); goto second; da=DaySearch(year,month,day); printf(n%d-%d-%d is %snn是否继续?(Y/N),year,month,day,weekda); fflush(stdin); scanf(%c,&ch); if(ch=N|ch=n) system(cls); break; break; case 2: while(1) system(cls); loop:printf(请输入要查询润年的年份?():); while(scanf(%d, &year)!=1) while (c=getchar()!=n); printf(nnnnnttt【】Error:输入有误,请重新输入!); getch(); system(cls); goto loop; if(year2500) printf(nnnnntt出错了!您输入的年份必须在19002500之间,请重新输入!); getch(); system(cls); goto loop; if(IsLeapYear(year) printf(nn%d 是闰年,你是否想继续?(Y/N),year); else printf(nn%d不是闰年,你是否想继续(Y/N)?,year); fflush(stdin); scanf(%c,&ch); if(ch=N|ch=n) system(cls); break; break; case 3: while(1) system(cls); year:printf(请输入您要打印的某年():); while(scanf(%d, &year)!=1) while (c=getchar()!=n); printf(nnnnnttt【】Error:输入有误,请重新输入!); getch(); system(cls); goto year; if(year2500) printf(nnnnntt出错了!您输入的年份必须在19002500之间,请重新输入!); getch(); system(cls); goto year; mon:printf(请输入这年的第几月:); while(scanf(%d,&month)!=1) while (c=getchar()!=n); printf(【】Error:输入有误,请重新输入!n); goto mon; if(month12) printf(出错了!您输入的月份必须在112之间,请重新输入.n); goto mon; SearchMonth(year,month); printf(nn是否想继续(Y/N)?); fflush(stdin); scanf(%c,&ch); if(ch=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论