编写一万年历系统

上传人:小** 文档编号:69381499 上传时间:2022-04-05 格式:DOC 页数:13 大小:456KB
返回 下载 相关 举报
编写一万年历系统_第1页
第1页 / 共13页
编写一万年历系统_第2页
第2页 / 共13页
编写一万年历系统_第3页
第3页 / 共13页
点击查看更多>>
资源描述
一、课程设计的内容要求 : 模仿现实生活中的挂历 . 当前页以系统当前日期的月份为准显示当前月的每一天 ( 显示出日及对 应的星期几 ).当系统日期变到下一月时 , 系统自动翻页到下一月二、课程设计的要求与数据1、进一步掌握和利用 C 语言进行程设计的能力;2、进一步理解和运用结构化程序设计的思想和方法;3、初步掌握开发一个小型实用系统的基本方法;4、学会调试一个较长程序的基本方法;5、学会利用流程图或 N-S 图表示算法;6、掌握书写程序设计开发文档的能力。三、课程设计应完成的工作1、编写完成相应题目的程序;2、编写课程设计报告 ,课程设计报告的内容应包括以下 6 个部分:1) 需求分析:包括设计题目、设计要求以及系统功能需求分析;2) 总体设计:包括系统总体设计框架和系统功能模块图;3) 详细设计:包括主要功能模块的算法设计思路以及对应的工作流程图;4) 调试分析过程描述:包括测试数据、测试输出结果,以及对程序调试过程中存 在问题的思考(列出主要问题的出错现象、出错原因、解决方法及效果等,适当 的包含结果截图) ;5) 总结:课程设计完成了哪些功能,有没有什么扩展功能?还有哪些地方需要改 进?课程设计过程中的学习体会与收获、对本次课程设计的认识以及自己的建议 等内容;6) 附录:主要源程序代码,含必要的注释。3、答辩:在实验室建立程序运行的环境,并在指导教师的监督下,独立解 决问题、运行程序和回答教师提出的问题。四、课程设计进程安排序号设计各阶段内容地点起止日期1下达任务书,说明设计要求;收集资料实验3#5176.182总体方案设计、详细设计实验3#5176.193编写程序,调试分析实验3#5176.204撰写报告并上交,答辩实验3#5176.21五、应收集的资料及主要参考文献1谭浩强.C程序设计(第三版)M,北京:清华大学出版社,2005.92谭浩强.C程序设计题解与上机指导(第三版)M,北京:清华大学出版社,2005.73文麻安 孙忱文嚥君.C程序设计课程设计.北京:机械工业出版社,2004.9发出任务书日期:2007年6月18日指导教师签名:计划完成日期:2007年6月22日基层教学单位责任人签章:主管院长签章:1设计目的与要求 42总体设计 43详细设计 5-74调试分析 8-105总结 106 附录 11-126答辩记录(正文处请留出适当空白) 12-137指导教师意见(正文处请留出十行空白) 131目的与要求1.课程设计的目的课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实 际应用问题进行有机结合,锻炼学生分析、解决实际问题的能力,提高学生项目开发及程 序调试能力。2.课程设计的内容及要求利用学到的编程知识和编程技巧,通过设计编写一个万年历系统,帮助熟悉程序编写, 及时查究错误,独立完成。要求:模仿现实生活中的挂历当前页以系统当前日期的月份为准显示当前月的每一天(显示出日及对应的星期几).当系统日期变到下一月时,系统自动翻页到下一月2总体设计二程序 丿3 详细设计1. 由于要以系统当前日期的月份为准显示当前月的每一天, 所以用如下”获取系统当前日期 ”并分别赋值给变量 year,month,day:time_t today;struct tm *p;time(&today);p=localtime(&today);year=p-tm_year+1900;month=p-tm_mon+1;day=p-tm_mday;注意 1,由于返回的是 1900 到现在的秒数 ,所以 year 后面要加上 1900,又起始是 1月,所 以 mon 要加 1;注意 2,头文件 #include 不能忘了 .2. 对得到的系统日期进行处理 ,算出当天是星期几if(year=0)/由于已知公元元年 1月 1日为星期一 ,所以以改日为基准计算for(i=0;iyear;i+) if(i%4=0 & i%100!=0)|i%400=0) / 判断是否为闰年days=days+366;else days=days+365;if(year%4=0 & year%100!=0)|year%400=0)/ 判断是否为闰年for(j=0;jmonth-1;j+)days=days+m2j;m=m2month;/算出当月天数else for(j=0;j=0YYNdays=days+365判断是否为闰年i=i+1YKyearNYNdays=days+m1j判断是否为闰年打印日期错误days=days+366days=days+m2jj=j+1m=m2mo nthYN |jmonth-1m=m1mo nthYj1) k=(7-(day-n+6)%7)%7;II此月第一天是星期几else if(day=1) k=n;k=7-(day-n+6)%74打印输出本月当前月历:printf( sun mon tue wen thu fri satn); for(o=0;ok;o+)printf( );for(o=k;o n到公元元年!2007=07891011121314IS161?IS192921222324252627282930SlFrels s“ykeyto cnnt inuathuFritu曰sLtrsunmon1k=(7-(day-n+6)%7)%7; 所以遇到的问题就解决了!还有一个想法就是定义了 days 是整型,理论上可能导致超出整型的范围, 所以应该可 以考虑使用 long 型,不过必要性不是很大所以忽略 .5 总结基本完成了设计的要求内容(模仿显示生活中的挂历,当前页以系统当前日期的月份 为准显示当前月的没一天 (显示出日期对应的星期几) ,当系统日期变到下一月时, 系统自 动翻页到下一月) ,不过显示页面有待改进, 可以更加人性化一些。 还有的问题就是现在的 是获取系统时间自动换页显示日历,不过没有实现人工换页的功能,如果实现的话,应该 要定义变量year, mo nth, day;为可以直接赋值的,那样的话便可以随意查询任意一个月 的日历了!在本次课程设计中,我体会到了很多 C 语言学习中的心得,我深深体会到查找资料的 重要性,因为本次设计需要比较全面的 C 语言知识,需要从书本查找大量的帮助资料,所 以很考大家自我学习提高的能力。在此设计前,我都不敢想象自己可以用学到的 C 语言做出这样的程序出来,总觉得自 信不够,但通过这次设计,经过了几夜鏖战最后把程序运行出来时,内心的喜悦是难以言 表的。这次的成功不仅给了我学号 C语言用好C语言的动力,也给了我更加深入的学习 C 语言的动力, C 语言确实是一门很实际的计算机语言!通过这次设计也使自己对 C 语言的掌握提高到了一个新的水平, 能够利用 C 语言编写 出一个实用的程序,很大程度提高了程序综合设计能力、分析能力和编程能力,以及自我 动手能力等等。这对以后学习和工作中遇到问题也是很有帮助的,毕竟我曾经战胜过它!7.附录#include#includeint main(void)int year,month,day;int days=0,i,j,n,m,k,o;int m1=31,28,31,30,31,30,31,31,30,31,30,31;int m2=31,29,31,30,31,30,31,31,30,31,30,31;time_t today;struct tm *p;time(&today);p=localtime(&today); / 转换成本地时间的日期 year=p-tm_year+1900;month=p-tm_mon+1;day=p-tm_mday;printf( %4d-%02dn,year,month); /打印出年月if(year=0)/由于已知公元元年 1月 1日为星期一 ,所以以改日为基准计算for(i=0;iyear;i+) if(i%4=0 & i%100!=0)|i%400=0)/ 判断是否为闰年days=days+366;else days=days+365;if(year%4=0 & year%100!=0)|year%400=0)/ 判断是否为闰年for(j=0;jmonth-1;j+)days=days+m2j;m=m2month;/算出当月天数else for(j=0;j1)k=(7-(day-n+6)%7)%7;II通过转换算出此月第一天是星期几else if(day=1)k=n;printf( sun mon tue wen thu fri satn);for(o=0;ok;o+)printf( );II1号前的星期所对应的天数用空格打掉for(o=k;ok+m;o+)prin tf(%4d,o-k+1);II从1号到这个月的月底按排序打出来if(o%7=6)prin tf(n);换行保持每个星期对其return 0;7答辩记录序号问题回答123458指导教师意见指导教师签名:
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!