欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    C语言课程设计万年历打印doc.docx

    • 资源ID:17839872       资源大小:319.44KB        全文页数:24页
    • 资源格式: DOCX        下载积分:1金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要1金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    C语言课程设计万年历打印doc.docx

    1、C语言课程设计万年历打印doc温馨提示程序语言:C、C+、C#、Python(红色字体 表示本课设使用的程序设计语言)图形功能选项:Win32控制台程序(黑框、文本界面)、Win32程序、MFC、WinForm、DirectX10(黑体标明 表示本课设的程序图形类别,默认为非图形界面Win32控制台程序)数据结构:基础类型、数组、链表、双向链表、搜索树(非平衡二叉树)、平衡二叉树、链表与平衡二叉树相结合、堆栈、队列、串、图(黑体标明 表示本课设使用的数据结构)C+语言项:STL库(黑体标明 表示使用C+的STL库)编译环境:Windows 7 64位旗舰版(Linux及其他环境请谨慎下载)集成

    2、开发环境:Visual C+ 6.0、DEVC+、CodeBlocks、Visual Studio 2015均可通过编译。(若无法通过编译运行,则会用 浅蓝色字体 表示)分多头文件编译:否(所有代码基本都包含在一个文件内,如需试验头文件功能,请自行参考相关文献)内容说明:1、课设题目及预览内容 将在第二页开始展示。2、代码行数:333行3、目录 所示内容,本文基本涵盖,如无内容,会在本页进行说明。4、附录 绝对包含用户使用手册及程序完整源代码和详细注释。5、如需下载 其他 头文件(例如DirectX需另行配置),本文会在此进行说明。6、本文撰写内容仅供学习参考,另外,由于本人水平有限,编写之处

    3、难免存在错误和纰漏,恳请各位老师或同学批评指正。题目:万年历显示功能要求:(1)输入一个年份,输出是在屏幕上显示该年的日历。假定输入的年份在1940-2040年之间。(2)输入年月,输出该月的日历。(3)输入年月日,输出距今天还有多少天,星期几,是否是公历节日。功能(二):功能(三):课程设计报告 课 题: 学 院: 专 业: 学生姓名: 学 号: 指导老师 : 20XX年XX月XX日摘要万年历的主要功能是通过C语言编程实现查询某年的日历情况,并且可以查询某年月的日历情况,还可以对某年月日进行计算距今的天数和判断是否为公历节日,其功能和代码满足人性化设计和良好的编程规范要求。关键词:万年历,C

    4、语言编程,人性化设计1总体设计1.1需求分析系统将以用户输入的信息进行功能的选择,提供某年日历的输出、某年某月日历的输出和距今天数的输出及节假日的判断这大三功能。1.2功能流程图本程序主要通过获取屏幕输入,然后进行字符串处理,选择相应的功能执行,最后打印输出信息。功能流程图如下:图1.1 功能流程图1.3功能模块图图1.2 功能模块图2详细设计2.1数据结构建立日历信息结构体,结构体成员变量包括月末、月初星期几、屏幕信息左半边日历是否打印完毕。typedef struct calendar int month_end; /月末最后一天的数字 int first_day; /月初星期几 0周日

    5、1周一 . int printFinished; /打印完毕则为1,没打印完成则为0Calendar;建立年月日信息结构体,结构体成员变量包括年份、月份、天数。typedef struct date int year; int month; int day;Date;2.2函数功能设计本万年历系统主要分为三大功能,分别是打印某年日历、打印某年某月日历、打印距今天数和判断是否节假日,故分别设计三个函数实现三大功能,如下所示。void firstFun(int year, Calendar cal); /第一功能void secondFun(int year, int month, Calenda

    6、r cal); /第二功能void thirdFun(int year, int month, int day); /第三功能各程序流程图如下:3调试分析3.1程序测试运行程序之后,会进入主界面,如图3.1所示。图3.1 主界面图随后,可分别通过输入年、年月、年月日实现三个功能的输出,具体如图3.23.4所示。图3.2 打印某年日历图图3.3 打印某年月日历图图3.4 计算距今天数图3.2 程序缺陷1、该程序每次运行,只能执行一次,不能重复选择功能,属于设计缺陷。2、对年份的不规范输入,可能出现与预期结果不一致的情况,如图3.5所示,理论应该输出12345年的日历,然而只是输出了12345年5

    7、月的日历,属于程序漏洞。图3.5 BUG展示图 4总结与体会这个课程设计的难度在于打印输出日历,在设计过程中遇到问题,可以说是困难重重,因为毕竟是第一次做的,难免会遇到各种各样的问题,同时在设计过程中我也发现了自己的不足之处,对以前所学过的知识理解的不够深刻,掌握的不够牢固。通过这次课程设计之后,我觉得以前学过的知识要重新温习才能够达到查漏补缺的效果。我会在今后的日子里,努力学好程序设计,成为一名出色的工程师。最后,这次的课程设计终于得以圆满完成。其中,我在设计中也遇到了许许多多的问题,但在老师的指导和同学们的帮助下得到了解决,总的来说还不是这个程序还不是很完善,但我不会放弃继续完善这份程序,

    8、我会在课余时间里继续修改完善这份程序。在此,感谢所有帮助过我的同学和指导老师。参考文献1 谭浩强著.C程序设计(第四版).北京:清华大学出版社,20102 林锐著.高质量C编程指南.北京:电子工业出版社,20013Stephen A.Maguire.编程精粹:编写高质量C语言代码.人民邮电出版社,2009附录用户使用手册1、根据屏幕提示,输入即可。2、输入年份,例如2018年,则会打印2018年的日历。3、输入年月,例如2018 10(也可以尝试其他的分隔符,例如2018,10),则会打印2018年10的日历。4、输入年月日,例如2018 10 1(同上),则会输出距今的天数和输出具体的节假日

    9、。程序源代码#include#include#include#include#define isPrime(year) (year%4=0&year%100!=0)|(year%400=0) /宏函数,判断是否为闰年#define TWELVEMONTH 12 /数组大小#pragma warning(disable:4996) /消除 Visual Stdio编译环境的安全警告,其他编译环境可删除/-/-结构体定义区-/-typedef struct calendar int month_end; /月末最后一天的数字 int first_day; /月初星期几 0周日 1周一 . int

    10、printFinished; /打印完毕则为1,没打印完成则为0Calendar;typedef struct date int year; int month; int day;Date;/-/-函数声明区-/-void judgmentLeapYear(int year, Calendar *cal); /判断闰年int calculateWeeks(int y, int m, int d); /计算该年月日是周几void firstFun(int year, Calendar cal); /第一功能void secondFun(int year, int month, Calendar

    11、cal); /第二功能void thirdFun(int year, int month, int day); /第三功能int dateDiff(struct date mindate, struct date maxdate); /计算日期之间的间隔天数int main(void) Calendar calTWELVEMONTH = 31 , /1月 28 , /2月 31 , /3月 30 , /4月 31 , /5月 30 , /6月 31 , /7月 31 , /8月 30 , /9月 31 , /10月 30 , /11月 31 /12月 ; /初始化月份 int year = 2

    12、000, month = 0, day = 0; int fun = 0; char calendar30 = 0 ; /用来处理输入 printf(Please input the your whose calendar you want to know:); fgets(calendar, 30, stdin); year = atoi(calendar); /得到年份 if (calendar4 != 0) month = atoi(calendar + 4); /得到月份 if (strlen(calendar) = 8) day = atoi(calendar + strlen(ca

    13、lendar) - 2); if (0 != year & 0 = month & 0 = day) fun = 1; else fun = 0 = day ? 2 : 3; judgmentLeapYear(year, &cal1); /调整闰年平年2月的天数 int i = 0; for (i = 0; i month_end = 29; else cal-month_end = 28;int calculateWeeks(int year, int month, int day) int c, w, y; y = year % 100;/年如2015 即年是15年 c = year /

    14、100;/年份前两位如2015即20 if (month = 1 | month = 2) /判断月份是否为1或2 y-; month += 12;/某年的1、2月要看作上一年的13、14月来计算 w = y + y / 4 + c / 4 - 2 * c + 13 * (month + 1) / 5 + day - 1;/蔡勒公式 while (w 0) w += 7;/确保余数为正 w %= 7; return w;void firstFun(int year, Calendar cal) printf(|=The Calendar of Year %d =|n, year); int m

    15、onth = 1; for (month = 1; month = TWELVEMONTH / 2; month+) printf(| %d SUN MON TUE WED THU FRI SAT %2d SUN MON TUE WED THU FRI SAT |n, month, month + 6); int right = 1, left = 1; int i = 0; for (right = 1, left = 1; 1; left+) if (1 = left) /左边首日打印 printf(| ); for (i = 0; i calculateWeeks(year, month

    16、, left); i+) printf( ); printf(%4d, left); if (6 = calculateWeeks(year, month, left) /既是首日也是周六 printf( ); else if (left = calmonth - 1.month_end) /左边月末打印 printf(%4d, left); for (i = 0; i 6 - calculateWeeks(year, month, left); i+) printf( ); printf( ); calmonth - 1.printFinished = 1; /月末,则表示左边日历打印完毕

    17、else if (6 = calculateWeeks(year, month, left) & left = calmonth - 1.month_end) /左边日历的周六,则开始打印右边的日历 printf(%4d, left); for (i = 0; i 6 - calculateWeeks(year, month, left); i+) printf( ); printf( ); else if (1 = calmonth - 1.printFinished) /左边打印完毕则补齐空格 for (i = 0; i 8; i+) printf( ); printf( ); else

    18、printf(%4d, left); if (6 = calculateWeeks(year, month, left) & left = calmonth - 1.month_end | calmonth - 1.printFinished) for (; right+) if (1 = right) /右边首日打印 for (i = 0; i calculateWeeks(year, month + 6, right); i+) printf( ); printf(%4d, right); if (6 = calculateWeeks(year, month + 6, right) /既是

    19、首日也是周六 printf( |n| ); right+; break; else if (right = calmonth - 1 + 6.month_end) /右边月末打印 printf(%4d, right); for (i = 0; i 6 - calculateWeeks(year, month + 6, right); i+) printf( ); printf( |n| ); calmonth - 1 + 6.printFinished = 1; /月末,则表示右边日历打印完毕 right+; break; else if (6 = calculateWeeks(year, m

    20、onth + 6, right) & right = calmonth - 1 + 6.month_end) /右边日历的周六,则开始打印左边的日历 printf(%4d |n| , right); right+; break; else if (calmonth - 1 + 6.printFinished) /右边打印完毕则补齐空格 for (i = 0; i 7; i+) printf( ); printf( |n| ); right+; break; else printf(%4d, right); if (calmonth - 1.printFinished&calmonth - 1

    21、+ 6.printFinished) putchar(r); / 将光标跳到本行的开头,消除多余的打印字符 break; putchar(|); int i = 0; for (i = 0; i 65; i+) putchar(=); putchar(|); putchar(n);void secondFun(int year, int month, Calendar cal) printf(|=The Year %d Month %d=|n, year, month); printf(| %d SUN MON TUE WED THU FRI SAT |n, month); int i = 1

    22、, j = 1; for (i = 1; i = calmonth - 1.month_end; i+) if (1 = i) /首日打印 printf(| ); for (j = 0; j calculateWeeks(year, month, i); j+) printf( ); printf(%4d, i); if (6 = calculateWeeks(year, month, i) /既是首日也是周六 printf( |n| ); else if (6 = calculateWeeks(year, month, i) /周六换行 printf(%4d |n| , i); else i

    23、f (i = calmonth - 1.month_end) /月末 printf(%4d, i); for (j = 0; j 6 - calculateWeeks(year, month, i); j+) printf( ); printf( |n); else printf(%4d, i); putchar(r); putchar(|); for (i = 0; i tm_year + 1900; d2.month = timeinfo-tm_mon + 1; d2.day = timeinfo-tm_mday; iDayNum = (dateDiff(d1, d2); switch (

    24、calculateWeeks(d1.year, d1.month, d1.day) case 0:strcpy(ch, Sunday); break; case 1:strcpy(ch, Monday); break; case 2:strcpy(ch, Tuesday); break; case 3:strcpy(ch, Wednesday); break; case 4:strcpy(ch, Thursday); break; case 5:strcpy(ch, Friday); break; case 6:strcpy(ch, Saturday); break; if (1 = d1.month & 1 = d1.day) strcpy(festival, New years Day); /元旦 else if (3 = d1.month & 8 = d1.day) strcpy(festival, International Womens Day); /国际妇女节 else if (3 = d1.month & 12 = d1.day) strcpy(festival, Arbor Day); /植物节 else if (4 = d1.month & 5 = d1.day) strcpy(festival, Qingming Festival); /清明节 else


    注意事项

    本文(C语言课程设计万年历打印doc.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开