


下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课 程 设 计( 论 文 )任 务 书专 业 班 级一、课程设计(论文)题目 电子日历二、课程设计(论文)工作:自 2011 年 12 月 26 日起至 2011 年 12 月 30 日止。三、课程设计(论文)的内容要求:1、主界面2、基本要求a) 编写一个实用日历程序,并且可以多次进行。b) 编写一个 2012年 1月份日历与农历对照程序3、补充自己的设计内容(1)、根据日期查星期几 !(2)、某月日历!(3、)某年日历!(4、)2012 年 1 月的农历!学生签名:戴斌2011 年 12 月 30 日课程设计(论文)评阅意见等级项目课程设计 态度评价出勤情况 评价设计中创 新性评价论文书写
2、 规范化评 价综合评定 等级优秀好好3 补充好良好好好2 补充好中等好好1 补充好及格好好无补充好不及格不好不好无补充不好评阅人 王更生 职称 教 授2011年 12 月 30 日一、设计思路二、功能实现详细设计三、测试结果分析四、用户手册五、设计体会、设计思路:If 语句:判断该年是否为闰年, 判断一年是否为闰年需要符合下面二者之一: 1, 能被 4 整除,但不能被 100 整除。 2,能被 400整除。满足上述条件时,返 回值为 1,否则返回值为 0。day 函数:判断某年某月最多多少天, 定义一个十二个元素的数组 a12 ,给十二 个月的天数分别赋初值 31、 28、31、30、31、3
3、0、 31、31、30、31、30、 31。调用 runnian 函数,当 if 语句中条件为真实即返回值为 1 时,将二月 份改为 29 天,即 a1=29 。week函数:判断某年某月某日的编号,根据公式(年份 -1 ) +(年分 -1)除以 4- (年份-1 )除以 100+(年份 -1)除以 400+该天是该年的第几天 ( 调用 day2 函数) ,把算出的值赋给 number,再用 number除以 7 取余数,即得到某年 某月某日的编号。定义一个字符型指针变量,利用 switch 语句,当 number=0 时,使指 针指向星期日;当 number=1 时,指针指向星期一;当 nu
4、mber=2时,指针 指向星期二;当 number=3 时,指针指向星期三;当 number=4时,指针指 向星期四;当 number=5时,指针指向星期五;当 number=6 时,指针指向 星期六;当 number不是上述数值时,指针指向错误。x 函数:输出该天星期几,调用 week1函数,将编号的值赋给 number,调用 *week2 函数,根据 number的值,确定指针指向,从而输出星期几,输出年,月, 日,星期几。显示月历, 先输出星期日 星期一 星期二 星期三 星期四 星期五 星期六, 星期日。检验有效性,即当输入的年小于零、月小于一或大于十二、天大于该 月最大值(调用 day
5、1函数)时将 0 返回给主函数,否则将 1返回给主函数 nianli 函数:输出年历,先调用 runnian 函数,定义变量 i ,赋初值为 1,利用 for 循环,循环十二次,调用 x2 函数,输出各个月的月历,从而显现出该年的 每一天达到年历的效果。yueli 函数:输出月历,先调用 runnian 函数,调用 showmonth 函数,输出该月月历 rili 函数:输出日历,先调用函数,调用 printmonth 函数,输出该日日期。二、功能实现详细设计:输入选择- 选择+回车键- 输入相应信息 +回车键- 输出结果。 流程图如下:开始程序包含多个函数,分别为main 函数、 nianl
6、i函数、 yueli 函数、 rili函数、nongli 函数、 printmonth 函数、 printyear函数、 SelectMenu 函数、 HandleMenu 函选择年历月历日历日期 退出输入年 输入年月 输入年月日 输入 2012 年1月输出该年的所有日期输出该月的日期输出这一天是 星期几输 出 该 月农历数、 showmonth 函数、 week1 函数、 *week2 函数、 day1 函数、 day2 函数。通过函数间 的调用,实现程序的运行。详细程序#include<>#include<> void nongli() int j;星期六 nn&q
7、uot;);printf("nntttt 2012 年 1 月 n");printf("nt 星期日 星期一 星期二 星期三星期四 星期五tn");for(j=1;j<=31;j+)printf(" t%d ",j);if(j=7|j=14|j=21|j=28) printf("n");if(j=7)printf("t元旦 t 初九 t 初十 t 十一 t十二 t 十三t 十四tn");十九 t 廿十t 廿if(j=14)printf("t 十五 t 十六 t 十七 t 十八 t
8、if(j=21)廿六 t 大寒t 廿八printf("t 廿二t 廿三t 廿四 t 廿五 ttn"); if(j=28)printf("t 廿九t 春节t 初二 t 初三 t 初四t 初五t 初六tn");if(j=31)printf("n");printf("t 初七 t 初八t 初九n");void printtab(int n)while (n>0)printf("t");n-;#include <>char MonthDay=31,28,31,30,31,30,31,3
9、1,30,31,30,31;char MonthDayLeap=31,29,31,30,31,30,31,31,30,31,30,31;char *WeekDayName=" 星期日 "," 星期一 "," 星期二 "," 星期三 "," 星期四 "," 星期五"," 星期六 "char getkey()char c,s10;scanf("%s",s);c=s0;return c;char isLeapYear(int y)return
10、(y%4 = 0 && y%100 != 0 | y%400 = 0)?1:0);int WeekDay(int y,int m, int d)int week;if(m=1) m=13;if(m=2) m=14;week=(d+2*m+3*(m+2)/5+y+y/4-y/100+y/400)%7;return week;char queryweekday()int y,m,d,week,c=0;doprintf(" 请输入年月日 (XXXX XX XX)n");scanf("%d %d %d",&y,&m,&d)
11、;week=WeekDay(y,m,d);printf("%d 年 %d 月 %d 日 是 星 期 %s , 是 否 继 续 查 询 (Y/N) ? ",y,m,d,WeekDayNameweek);c=getkey();while (c='Y' | c='y');return c;void showmonth(int y,int m)int d,dt,week;week=WeekDay(y,m,1);if (isLeapYear(y)dt=MonthDayLeap(m-1)%12;elsedt=MonthDay(m-1)%12;for (d
12、=0;d<7;d+)printf("t%s",WeekDayNamed);printf("n");printtab(week);for (d=1;d<=dt;d+)printf("t%6d",d);if (WeekDay(y,m,d)=6)printf("n");printf("n");char printmonth()int y,m,c=0;doprintf(" 请输入年月 (XXXX XX)n"); scanf("%d %d",&y
13、,&m);printtab(3);printf("%d年 t%d 月 n",y,m);showmonth(y,m);printf(" 是否继续查询 (Y/N) ? "); c=getkey();while (c='Y' | c='y');return c;char printyear()int y,m,c=0;doprintf(" 请输入年份 (XXXX)n"); scanf("%d",&y);printtab(3);printf("%d 年年历 n&quo
14、t;,y);for (m=1;m<=12;m+)printtab(4);printf("%d 月 n",m);showmonth(y,m);printf("n 是否继续查询 (Y/N) ? "); c=getkey();while (c='Y' | c='y');return c;void quit()printf("nt 谢谢使用该程序! n"); exit(0);int SelectMenu() int choice;printf("nt*);printf(" printf
15、(" printf(" printf(" printf("4:20123:2:1:0:年 1 月的农历! 某年日历! n"); 某月日历! n"); 根据日期查星期几! 退出! n");n");n");printf("t*n");printf("t 请选择菜单号( 0-4 ): ");while( (!(scanf("%d",&choice)| (choice<0)|(choice>4)");printf("
16、;nttaa 选择错误 ! 请重新选择:printf("4:2012年 1 月的农历!n")printf("3:某年日历! n");printf("2:某月日历 n");printf("1:根据日期查星期几!n");printf("0:退出! n");printf("t*n");printf("t 请选择菜单号( 0-4 ):"); return choice;void HandleMenu()printf("tt欢迎使用该程序*n")
17、;while(1)switch(SelectMenu()case 0:quit();break;case 1:queryweekday();break;case 2:printmonth();break;case 3:printyear();break;case 4:nongli(); break;void main()HandleMenu();三、测试结果分析:程序主界面:四、用户手册:可以根据界面的提示根据您的需要输入 或 3. 然后输入您要查的 日期即可。五、设计体会:忙了好久总算将此程序设计出来。尽管不是自己独立完成,但仍然很 高兴,因为在设计的过程中,让我了解到要设计一个大型程序,查找资料 是至关重要的,在他人的基础上,再根据自己所学进行修改与调试,最后 设计出自己想要的程序。另外平时扎实的基础也很关键,因为如果你平时学得就不怎么样,那 么你面对这么一个比较有难度的程序,你可能会望而却步,看他人的程序 都是个难点,更别说让你自己去设计。为了解决此类问题,最好就是多向 同学,老师请教,不要怕难为情。尤其是老
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年海上风能资源评估技术及深远海风电项目布局策略报告
- 2025年电商绿色物流与物流人才培养报告
- 解析卷-人教版(五四制)6年级数学下册期末试题附参考答案详解(精练)
- 2025至2030年中国办公系统自动化行业发展趋势预测及投资战略咨询报告
- 2025至2030年中国房地产厨卫行业运行态势及未来发展趋势预测报告
- 押题宝典高校教师资格证之《高等教育法规》考试题库带答案详解(a卷)
- 2025年度肉类产品线上线下销售渠道合作协议范本
- 2025版高效节能清包工施工合同文本
- 2025年度环保设备集中采购框架协议范本
- 2025年能源设备采购合同书范本
- 2025年医卫类病理学技术(中级)专业知识-专业实践能力参考题库含答案解析(5套试卷)
- 2025上海科技馆事业单位工作人员招聘10人笔试备考题库及答案解析
- 2025年财政管理知识竞赛题库及答案
- 满意度调查测评方案
- 区域产业协同发展面试题
- 【初二】【八年级】【道法】2025【秋】上学期开学第一课【统编版】(课件)
- 当归种植培训课件
- 军事类面试题目及答案
- 三年(2023-2025)中考语文真题分类汇编(全国)专题22 议论文阅读(解析版)
- 学习2025年初中初三开学第一课专题
- 2025年浙江省教师招聘考试(语文)历年参考题库含答案详解(5卷)
评论
0/150
提交评论