C语言万年历设计报告_第1页
C语言万年历设计报告_第2页
C语言万年历设计报告_第3页
C语言万年历设计报告_第4页
C语言万年历设计报告_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

1、1 / 14 文档可自由编辑打印C 语言课程设计报告题目:编写万年历系统编写万年历系统 年级:专业: 班级:姓名:学号:2 / 14 文档可自由编辑打印目目录录第 1 章 设计目的第 2 章 需求分析第 3 章 概要设计第 4 章 源程序清单第 5 章 执行结果1)登陆界面2 2)显示当前日月历 3)显示具体日期信息第 6 章程序问题调试与课程设计心得3 / 14 文档可自由编辑打印 第第 1 章设计目的章设计目的设计目的(实验要求): 1.模仿现实生活中的挂历. 2.当前页以系统当前日期的月份为准显示当前月的每一天(显示出日及对应的星期几).3.当系统日期变到下一月时,系统自动翻页到下一月.

2、第 2 章需求分析(1)程序运行时,首先给出菜单选项和输入提示:(2)用户可以通过主菜单选择不同选项。输入 1,通过输入当前日期可显示当前月的日历;输入 2,通过输入具体日期(中间以空格分开)可显示该日具体信息;输入 3,则退出查询系统。4 / 14 文档可自由编辑打印第 3 章 概要设计 输入具体日期1菜单选择界面可通过下面所示函数时现; 主要思路:通过 while 语句与 swichcase 以及 if 条件语句实现菜单的循环功能和不同选项的功能实现。闰年与平年的判断:代码如下: void main() int year,month,day,a,b; while(1) printf(nnn

3、n);printf( *nn);printf( * * n);开始输入指令3.退出出、判断是否为闰年1.当前日期月2.具体日期信息输入要查询的当前日期5 / 14 文档可自由编辑打印printf( Welcome to enter calendar system n); printf( * * nn); printf( *nnn);printf( 1 The month of current date 2 Date 3 Exitn);printf( please import your choose,press Enter to define: );scanf(%d,&b); swit

4、ch(b) case 1: printf(n Please import the year,month and day which you want to check,the year,month and day separation by blank space: ); scanf(%d%d%d,&year,&month,&day); a=x3(year,month,1); if(a=0) printf(Error!Please import again.n); break; yueli(year,month,day); break; case 2: printf(n

5、 Please import the year,month and day which you want to check,the year,month and day separation by blank space: ); scanf(%d%d%d,&year,&month,&day); a=x3(year,month,day); if(a=0) printf(Error!Please import again.n); break; rili(year,month,day); break; case 3: exit(0); default: printf(Erro

6、r!Please import again.nn); 6 / 14 文档可自由编辑打印2.闰年的判断:计算所输入的年份是否可被 4 整除,若不能被整除,为平年。若可被 4整除,计算此年份能否被 100 整除,不能被 100 整除则为闰年。既能被 4 整除,也能被 100 整除的年份,若也能被 400 整除,则为闰年,否则为平年。闰年 366 天,平年 365 天代码:int runnian(int year) if(year%4=0&year%100!=0|year%400=0) return 1; else return 0; 3.判断某月的天数;通过函数:7 / 14 文档可自由编

7、辑打印int day1(int year,int month) int a12=31,28,31,30,31,30,31,31,30,31,30,31;若为闰,则二月为 29 天。 第 4 章 源程序清单#include#include/*定义头文件*/int runnian(int year) if(year%4=0&year%100!=0|year%400=0) /*利用函数判断输入年份是闰年还是平年*/ return 1; else return 0;int day1(int year,int month)8 / 14 文档可自由编辑打印 int a12=31,28,31,30,

8、31,30,31,31,30,31,30,31;/*定义数组确定 12 个月每个月的天数*/ if(runnian(year) /*如果输入年份是闰年*/ a1=29; /*二月 29 天*/ return amonth-1;int day2(int year,int month,int day) int i,sum=0; for(i=1;imonth;i+) sum+=day1(year,i); sum+=day; return sum;int week1(int year,int month,int day) int number=(year-1)+(year-1)/4-(year-1)/

9、100+(year-1)/400+day2(year,month,day); number%=7; return number;char *Week2(int number) switch(number) /*分类一周七天*/ case 0:return Sunday; case 1:return Monday; case 2:return Tueaday; case 3:return Wednesday; case 4:return Thurday; case 5:return Friday; case 6:return Saturday; default:return Error!plea

10、se import again.n;/*不符和上面七种情况的报错提示*/ void x1(int year,int month,int day) int number=week1(year,month,day); if(runnian(year)printf(common year);/*年份为闰年则输出闰年*/ else printf(common year); printf( %d year %d month %d 9 / 14 文档可自由编辑打印day%10snn,year,month,day,Week2(number);/*按年 月 日输出结果*/void x2(int year,in

11、t month) int max,number,i,j=1; max=day1(year,month); number=week1(year,month,1); printf(%2s%2s%2s%2s%2s%2s%2sn, Sunday , Monday , Tueaday, Wednesday , Thurday , Friday ,Saturday );/*按照间隔打印日历*/ for(i=0;inumber;i+) printf( ); while(j=max) printf(%8d,j); if(i%7=6) printf(n); i+; j+; printf(nn);int x3(i

12、nt year,int month,int day) if(year0|month12|dayday1(year,month) /*当输入值出现这些情况时*/ return 0; /*返回 0*/ else return 1; /*返回 1*/void yueli(int year,int month,int day) if(runnian(year) printf(leap year); else printf(common year); printf( %d year %d month %d daynn,year,month,day); x2(year,month);void rili(i

13、nt year,int month,int day)10 / 14 文档可自由编辑打印 printf(n); x1(year,month,day);void main() int year,month,day,a,b; while(1) printf(nnnn); printf( *nn); printf( * * n); printf( Welcome to enter calendar system n); printf( * * nn); printf( *nnn); printf( 1 The month of current date 2 Date 3 Exitn); printf(

14、 please import your choose,press Enter to define: ); scanf(%d,&b); switch(b) case 1: /*选择 1 时*/ printf(nPlease import the year,month and day which you want to check,the year,month and day separation by blank space: ); /*给出输入提示*/ scanf(%d%d%d,&year,&month,&day); /*输入需要查询的年 月 日*/ a=x3(

15、year,month,1); if(a=0) printf(Error!Please import again.n);/*输入值异常时报错*/ break; yueli(year,month,day); break; case 2: /*选择 2 时*/11 / 14 文档可自由编辑打印 printf(nPlease import the year,month and day which you want to check,the year,month and day separation by blank space: ); /*给出输入提示*/ scanf(%d%d%d,&year

16、,&month,&day);/*输入年 月 日*/ a=x3(year,month,day); if(a=0) printf(Error!Please import again.n);/*输入值异常时报错*/ break; rili(year,month,day); break; case 3: exit(0); default: printf(Error!Please import again.nn); 第 5 章 执行结果1)登陆界面12 / 14 文档可自由编辑打印2 2)显示当前日历月 3)显示具体日期信息13 / 14 文档可自由编辑打印第 6 章程序问题调试与课程设计心得1)程序问题调试(1) 调用的 week2 函数中,忘记在万年历中一周的第一天是 sunday。(2)定义的 runnian 语句中没有返回值,无法判断是否为闰年。 (3)定义的x1 与 x2 函数实现的功能时混淆。(4)被调用函数 X3 中的返回值要用于主调函数中的判断,但是未在主调函数中赋值给整型变量。(5)对于数组,数组的初始化要进行正确的赋值,以及对于数组的使用与

温馨提示

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

评论

0/150

提交评论