ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:225.58KB ,
资源ID:16012496      下载积分:1 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-16012496.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C语言课程设计万年历系统.docx)为本站会员(b****7)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

C语言课程设计万年历系统.docx

1、C语言课程设计万年历系统山东交通学院面向对象课程设计万年历系统1课程设计概述字符统计软件功能概述模仿Windwos的日历. 1)日历显示功能。能根据系统日期进行初始化,如果没有任何输入,则显示系统日期所在月份的月历。2)日历查询、闰年判断功能。输入日期进行查询,显示查询日期所在月份的月历,还将显示所在年份是否为闰年。3)参数检查功能。如果输入日期不合法,查询将被拒绝,并显示提示信息。开发环境概述在实验室一人一台微机。2课程设计概述问题分析难点在于判断星期,但根据蔡勒公式,可以很容易地有年月日推断出星期:nDay=year-1+(year-1)/4-(year-1)/100+(year-1)/4

2、00+nday; w=nDay%7;其中year:要查询的年份 nday:从该年的一月一日起到该天的天数 w:得出的星期数,w=0表示星期天。在打印月历时,只要知道第一天的星期,就可以依次输入后面的日期,通过定长度输出日期,在遇到某天时星期六时,就换行输出,因此可以按照月历的格式输出。对于初始输入当前月历,可以通过中的time 和localtime函数取出系统时间进行初始化。 time_t timer; struct tm* gmt; time(&timer); gmt=localtime(&timer); gmt就是一个时间结构体,可以从中取出年月日。闰年的判断,能被4整除但不能被100整除

3、,或者能被400整除的年份为闰年,否则为平年。日期的查询,就是直接打印该天所在月份的月历。判断日期是否合法,可以先判断年月日是否有小于0的值,月和日是否有超出最大值12和31 ,如果通过此判断合法,再判断是否时闰年,如果时闰年,则判断二月份是否满足要求,闰年二月份不能超过29天,平年二月份不能超过28天。在查询过程中,如果发现输入不合法或者不满足输入要求,则要求重新输入。总体设计流图3万年历系统详细设计int runnian(int year);该函数判断某年是否是闰年,参数year表示要判断的年份,返回值1表示该年为闰年,0表示该年为平年。 struct tm* getDay();该函数用以

4、取得系统的时间。该函数没有参数,返回值类型为struct tm*,是一个包含时间的结构体。int jiancha(int year,int month,int day);该函数用以判断输入的年份是否合法,参数为要判断的年月日,返回值为1表示该日期合法,为0表示不合法。int getwDay(int year,int month,int day);该函数用以根据一个日期推断星期,参数为要判断的年月日。返回值为整型,123456分别表示星期一到星期六,0表示星期天。void chaxun();该函数用以显示要查询的日期的月历,无参数和返回值,。void inline backMenu();该函数为

5、内联函数,用以实现完成某项功能后按任意字符键返回主菜单,无参数和返回值。void caidan(int &year,int &month,int &day);该函数参数为系统日期,无返回值,用户在该函数执行时可以选择功能。4程序测试进入程序后显示按任意键返回主菜单进入主菜单后,按1,显示当前时间在主菜单界面按2,进行日立的查询,并经时期的合法性判断和平润年的判断。例如输入:2020 12 20.由于输入合法会显示:进入程序后显示输入:2012 11 40,由于输入不合法,会进行报错,要求重新输在主界面中输入3,程序退出在主界面中输入:eufhg,会显示5.程序原代码:#include#incl

6、ude#include#include#include#includeint year,month,day; /全局变量记录时间int daysOfMonth212=31,28,31,30,31,30,31,31,30,31,30,31,31,29,31,30,31,30,31,31,30,31, 30,31;int runnian(int year) /判断是否是闰年 return(year%4=0&year%100!=0|year%400=0)?1:0;struct tm* getDay()/从系统取得当前时间 time_t timer; struct tm* gmt; time(&tim

7、er); gmt=localtime(&timer); return gmt;int jianca(int year,int month,int day)/检查日期是否正确 if(year0|month12|day31) return 0; switch(month) case 1: case 3: case 5: case 7: case 8: case 10: case 12: if(day31)return 0;break; case 4: case 6: case 9: case 11: if(day30)return 0;break; default: if(runnian(year

8、)&day29) return 0; else if(runnian(year)=0&day28) return 0; return 1;int getwDay(int year,int month,int day)/取得星期 int nday=0,nDay,i,w; for(i=0;imonth-1;i+) nday+=daysOfMonthrunnian(year)i; nday+=day; nDay=year-1+(year-1)/4-(year-1)/100+(year-1)/400+nday; w=nDay%7; return w;int week(int year,int mont

9、h,int day)/取得星期 int nday=0,nDay,i,w; for(i=0;imonth-1;i+) nday+=daysOfMonthrunnian(year)i; nday+=day; nDay=year-1+(year-1)/4-(year-1)/100+(year-1)/400+nday; w=nDay%7; return w;void ty(int year,int month,int day)/打印月历 int i; char wday74=日,一,二,三,四,五,六; printf(#n); printf(#n); printf(# %d年%d月%d日 #n,yea

10、r,month,day); printf(*n); printf(*n); for(i=0;i7;i+) printf(%5s,wdayi); printf(n); int w; int nowDay=1; w=week(year,month,nowDay);/找到第一天的星期 int n; n=daysOfMonthrunnian(year)month-1; /放置第一天 if(w=0) printf(%5d,nowDay); else if(w=1) printf(%10d,nowDay); else if(w=2) printf(%15d,nowDay); else if(w=3) pr

11、intf(%20d,nowDay); else if(w=4) printf(%25d,nowDay); else if(w=5) printf(%30d,nowDay); else printf(%35dn,nowDay); nowDay+; for(i=1;i2)f=1; while(f=1); switch(*m) case 1: system(cls); ty(year,month,day); backMenu(); /实现任意键返回主菜单 caidan(year,month,day); break; case 2: system(cls); caxun(); backMenu();

12、caidan(year,month,day); break; case 3:system(cls); printf(程序已退出!n);break; default:printf(%c输入错误!n);g=1; while(g);void main() struct tm *gmt=getDay(); year=gmt-tm_year+1900; month=gmt-tm_mon+1; day=gmt-tm_mday; ty(year,month,day);/用系统时间进行初始化,打印当前月历 backMenu(); caidan(year,month,day);设计体会及改进意见:此程序是自己所写的第一个功能比较完整的能实现一定的实际功能的程序,代码比较短,不到300行,实现的功能有显示当前日历,进行某天的查询,闰年的判断,日期的合法性判断,。然后在程序编写过程中,遇到了一些细节性的问题,比如在乱输入的情况下,有时会出现程序崩溃,后来通过修改,修正了漏洞。到写报告为止,漏洞基本被找出,并得到修正。通过写这个程序,我对程序的健壮性有了更深的认识,也更加注意程序的细节问题。参考文献:日历推算天才邓国俊 浸会大学教育学系助理教授;C程序设计谭浩强 全国高等院校计算机全国基础教育研究会荣誉会长。.忽略此处.

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2