欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    编写一万年历系统.doc

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

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

    编写一万年历系统.doc

    _一、课程设计的内容将所选的题目的内容copy过来,包括功能要求等等。不记得可以看附录。字体是楷体,注意排版,不要让下一页(老师签名那页)跨页!要求: 模仿现实生活中的挂历. 当前页以系统当前日期的月份为准显示当前月的每一天(显示出日及对应的星期几).当系统日期变到下一月时,系统自动翻页到下一月二、课程设计的要求与数据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五、应收集的资料及主要参考文献注意参考文献的格式要求,依照下面的两个的格式填写,可以是网页,书,杂志, 合计最少3本(已有的两个谭老师的算2本).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 目的与要求正文内容采用5号宋体写.1. 课程设计的目的 课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际应用问题进行有机结合,锻炼学生分析、解决实际问题的能力,提高学生项目开发及程序调试能力。2. 课程设计的内容及要求 利用学到的编程知识和编程技巧,通过设计编写一个万年历系统,帮助熟悉程序编写,及时查究错误,独立完成。要求: 模仿现实生活中的挂历. 当前页以系统当前日期的月份为准显示当前月的每一天(显示出日及对应的星期几).当系统日期变到下一月时,系统自动翻页到下一月2 总体设计主程序获取系统日期换算出本月第1天是星期几打印输出本月月历计算出当天是星期几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<time.h> 不能忘了.2.对得到的系统日期进行处理,算出当天是星期几if(year>=0) /由于已知公元元年1月1日为星期一,所以以改日为基准计算 for(i=0;i<year;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;j<month-1;j+)days=days+m2j; m=m2month; /算出当月天数else for(j=0;j<month-1;j+)days=days+m1j; m=m1month; /算出当月天数days=days+day-2; /元年1月1日为星期一,days得出与之前的那个星期天相差的天数 n=days%7; /余数n为0为星期天,1为星期一.else printf(“日期错误n”)N打印日期错误year>=0流程图: 判断是否为闰年days=days+366days=days+365i=i+1i<year判断是否为闰年days=days+m2j m=m2monthj=j+1j<month-1days=days+m1j m=m1monthj=j+1j<month-1days=days+day-2n=days%7YYNNNNNYYYY3.由当天是星期几换算成该月第一天是星期几:if(day>1)k=(7-(day-n+6)%7)%7; /此月第一天是星期几else if(day=1) k=n;Nk=nday>1流程图:Y k=7-(day-n+6)%74.打印输出本月当前月历:printf(" sun mon tue wen thu fri satn");for(o=0;o<k;o+)printf(" ");for(o=k;o<k+m;o+)printf("%4d",o-k+1); if(o%7=6)printf("n");流程图printf(" sun mon tue wen thu fri satn")o<kprintf(" ")o=o+1o<k+mprintf("%4d",o-k+1)o%7=6printf("n")o=o+1结束YYNNNY4 调试分析1,在当天的系统时间(06年7月21号)运行后;2,为了验证是否是日期跳到下个月是自动跳换的,我改了系统时间,设定为07年7月21号,运行结果如下:3,由于上面两次试运行都成功了,所以我把系统时间设定为过去的06年6月,考察看是否还能正常运行:可以看到,几次试运行都是成立的,而且根据设计,这个万年历可以显示的月历可以到公元元年!当然调试过程中也遇到了一些问题,如:发现这是k被赋予了7的结果,所以我就在k=7-(day-n+6)%7;的基础上做了修改:k=(7-(day-n+6)%7)%7; 所以遇到的问题就解决了! 还有一个想法就是定义了days是整型,理论上可能导致超出整型的范围,所以应该可以考虑使用long型,不过必要性不是很大所以忽略.5 总 结基本完成了设计的要求内容(模仿显示生活中的挂历,当前页以系统当前日期的月份为准显示当前月的没一天(显示出日期对应的星期几),当系统日期变到下一月时,系统自动翻页到下一月),不过显示页面有待改进,可以更加人性化一些。还有的问题就是现在的是获取系统时间自动换页显示日历,不过没有实现人工换页的功能,如果实现的话,应该要定义变量year,month,day;为可以直接赋值的,那样的话便可以随意查询任意一个月的日历了!在本次课程设计中,我体会到了很多C语言学习中的心得,我深深体会到查找资料的重要性,因为本次设计需要比较全面的C语言知识,需要从书本查找大量的帮助资料,所以很考大家自我学习提高的能力。在此设计前,我都不敢想象自己可以用学到的C语言做出这样的程序出来,总觉得自信不够,但通过这次设计,经过了几夜鏖战最后把程序运行出来时,内心的喜悦是难以言表的。这次的成功不仅给了我学号C语言用好C语言的动力,也给了我更加深入的学习C语言的动力,C语言确实是一门很实际的计算机语言! 通过这次设计也使自己对C语言的掌握提高到了一个新的水平,能够利用C语言编写出一个实用的程序,很大程度提高了程序综合设计能力、分析能力和编程能力,以及自我动手能力等等。这对以后学习和工作中遇到问题也是很有帮助的,毕竟我曾经战胜过它!7.附录#include<stdio.h>#include<time.h>int 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;i<year;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;j<month-1;j+)days=days+m2j; m=m2month; /算出当月天数else for(j=0;j<month-1;j+)days=days+m1j; m=m1month; /算出当月天数days=days+day-2; /元年1月1日为星期一,days得出与之前的那个星期天相差的天数 n=days%7; /余数n为0代表为星期天,1代表为星期一.else printf(“日期错误n”);if(day>1)k=(7-(day-n+6)%7)%7; /通过转换算出此月第一天是星期几else if(day=1) k=n;printf(" sun mon tue wen thu fri satn");for(o=0;o<k;o+)printf(" "); /1号前的星期所对应的天数用空格打掉for(o=k;o<k+m;o+)printf("%4d",o-k+1); /从1号到这个月的月底按排序打出来if(o%7=6)printf("n"); /换行保持每个星期对其return 0;7 答辩记录序号问 题回 答123458 指导教师意见 指导教师签名:- 12 -_

    注意事项

    本文(编写一万年历系统.doc)为本站会员(1595****071)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

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




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

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

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开