计算机科学与技术课程设计报告年历显示_第1页
计算机科学与技术课程设计报告年历显示_第2页
计算机科学与技术课程设计报告年历显示_第3页
计算机科学与技术课程设计报告年历显示_第4页
计算机科学与技术课程设计报告年历显示_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

1、 课程设计报告课程设计题目:年历显示 学生姓名:万策明专 业:计算机科学与技术班 级:10204101指导教师: 2011年 5月 4 日1、 课程设计目的1、设计年历显示程序,方便查询日历。2、培养学生用程序解决实际问题的能力和兴趣。3、加深对c程序设计的理解,掌握程序设计的一般方法。2、 课程设计的要求 利用学到的编程知识和编程技巧,要求学生:1、对系统进行功能模块分析、控制模块分析正确2、系统设计要能完成题目所要求的功能。3、编程简练,可用,尽可能的使系统的功能更加完善和全面4、说明书、流程图要清楚。5、特别要求自己独立完成。三、课程设计内容1、课程设计的题目及简介年历显示的程序要求:设

2、计年历显示的程序可以为我们提供下列各项服务:1、输入一个年份,输出是在屏幕上显示该年的日历。假定输入的年份在1940-2040年之间。2、输入年月,输出该月的日历。3、输入年月日,输出距今天还有多少天,星期几,是否是公历节日。2、设计说明根据c课程的要求,在尽量满足题目的功能的前提下,采取结构化程序设计思路,把问题要求1、2和3分开用函数实现,用for语句和switch,print_其函数具体方法,把问题一一解决,功能逐步实现。在输入输出方面控制的比较严格,尽量做到界面友好。具体说明如下:编写年历显示的程序,首先定义如下变量,描述如下:数据:int monthdays; / 定义平年的每个月最

3、后一天是几号int leapyearmonthdays; / 定义闰年的每个月最后一天是几号 int year; / 编程序是哪年int month; / 编程序是哪月int day; / 编程序是哪天int isweekday; / 定义日期运算:void print_month(int y,int m); / 查询月份的函数void print_year(int y); / 查询年份的函数int counterdays(int y,int m,int d); / 查询距离今天的函数void setday(int y,int m,int d); / 设置日期的函数在主函数中,首先输出提示用户

4、输入本站所有航班信息,系统开始记录输.在switch体中提示用户进行4种操作:1:查询年历,2查询月历,3计算日期,4设置当前日期(%d/%d/%d).特别说明1,2,3,4每次运行后,利用break语句返回到. switch体中继续提示用户进行4种操作,直到用户输入任意键退出以结束.进过多次检验与测试,并逐步完善,程序运行正确。3、程序流程图1程序总体流程程序总体流程说明如下:1.程序开始,用户输入命令进行操作::请输入要查询的方式(1.查询年历2.查询月历3.计算日期4.设置当前日期(%d/%d/%d) 特别说明1,2,3,4每次运行后,利用break语句返回到. switch体中继续提示

5、用户进行4种操作,直到用户输入y键继续,任意键退出以结束. 见图一: 开始用户输入命令进行操作按y继续 按y继续判断用户输入temp命令进行操作 查询月历 查询年历 temp=1 temp=2 temp= 3 temp=4设置当前日期(%d/%d/%d) 计算日期结束 任意键退出 任意键退出 图一 (程序总体流程图) 2显示查询年历信息流程当用户输入命令为1时,显示本年所有月份的信息。当查询结束时,返回用户输入命令进行继续操作。本流程图与查询年历流程图算法基本一致,所以就略去查询月历具体流程图。用户输入命令为1 按y继续 temp=1用户输入查询的年份2011 输出2011 的年历信息 结束

6、任意键退出 图二(显示本年所有的信息)3计算日期信息查询流程当用户输入命令为3时,输入要计算的日期信息。计算结束时返回用户输入命令进行继续操作。本流程图与设置当前日期流程图算法基本一致,所以就略去设置当前日期具体流程图。见图三用户输入命令为3 按y继续 temp=3输入要计算的日期2011/5/4 结束输出今天距2011/5/4还有8天 任意键退出 图三(计算日期信息查询)4、程序清单#include int monthdays12=31,28,31,30,31,30,31,31,30,31,30,31;int leapyearmonthdays12=31,29,31,30,31,30,31,

7、31,30,31,30,31;int year=2011;int month=4;int day=26;int isweekday(int y,int m,int d) int weekday; if(m3) m+=12; y-; return weekday=(2+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7;int isleapyear(int y) if (y%400=0 | y%100!=0 & y%4=0) return 1; return 0;void print_month(int y,int m) int a; int i=0; int startday

8、=isweekday(y,m,1); printf(n=%4d.%02d=n,y,m); printf(sun mon tue wed thu fri sat n); for(i=0;istartday;i+) printf( ); if(isleapyear(y) for(i=1;i=leapyearmonthdaysm-1;i+) printf(%3d ,i); if(startday+i)%7=0) printf(n); for(i=1;i=leapyearmonthdaysm-1;i+) a=27-(startday+i)%7*4); for(i=0;i=a;i+) printf( )

9、; printf(); else for(i=1;i=monthdaysm-1;i+) printf(%3d ,i); if(startday+i)%7=0) printf(n); for(i=1;i=monthdaysm-1;i+) a=27-(startday+i)%7*4); for(i=0;i=a;i+) printf( ); printf(); printf(n-n); void print_year(int y) int i; for(i=1;i=12;i+) print_month(y,i); int counterdays(int y,int m,int d) int temp

10、=0; int days=0; int i; for(i=year+1;i=1) if(isleapyear(year) & month2 |(m=2 & d=29) temp+; for(i=month+1;i=12;i+) days+=monthdaysi-1; for(i=1;im;i+) days+=monthdaysi-1; days+=(y-year-1)*365; if(!(year=y & month=m) days+=monthdaysmonth-1-day+d; else days+=d-day; days+=temp; printf(n今天距%d/%d/%d还有%d天n,

11、y,m,d,days); return days;void setday(int y,int m,int d) year=y; month=m; day=d;void main() int temp; int y,m,d; char ch; do printf(请输入要查询的方式(1.查询年历2.查询月历3.计算日期4.设置当前日期(%d/%d/%d):,year,month,day); scanf(%d,&temp); switch(temp) case 1: printf(请输入年份(ep:2011):); scanf(%d,&y); print_year(y); break; case

12、2: printf(请输入年月(ep:2011/4):); scanf(%d/%d,&y,&m); print_month(y,m); break; case 3: printf(请输入日期(ep:2011/4/26):); scanf(%d/%d/%d,&y,&m,&d); counterdays(y,m,d); break; case 4: printf(请输入当天日期(ep:2011/4/26):); scanf(%d/%d/%d,&y,&m,&d); setday(y,m,d); break; default: break; printf(nn是否继续?(y键继续,任意键退出); getchar(); scanf(%c,&ch); while(ch=y | ch=y);5、 程序运行结果1、查询年历:2、查询月历:3、计算日期:4、设置当前:6、 出现的问题及解决方法不能输出界面中的框的倒数二行的最后一个“”,经过仔细的讨论采用算术算出空出多少空格,再用for语句输出多少空格,再在后面加上“”就可以了。四、课程设计总结经过这几天的c课程设计,让我知道了做课程设计的一般方法,通过各种努力终于完成了设计要求.这次课程设计基本上含盖了大学一年级学习到的c语言知识点,课设题目要求不仅要求对课本知识有较深刻的了解,同时要求程序设计者有较强的思维和动

温馨提示

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

评论

0/150

提交评论