电子科技大学成都学院课程设计报告电子科技大学成都学院电子工程系课程设计报告课程名称:C语言程序设计能力教程设计题目:万年历指导教师组:杨剑学生学号:1140810429学生姓名:王玲琳电子工程系制2012年12月电子科技大学成都学院课程设计报告一、题目要求:用C语言编写一个万年历系统,具有公历和农历的日期显示,能显示年月日,星期几,具有记事本功能,在某个日期上可以输入纪念日,代办事项等。1.功能要求(1)基本要求试设计一个万年历系统,使之能提供以下基本功能:1)能够模拟现实中日历的形式现实公历;2)第一行显示月份(中英文都可以)3)下一行显示星期,从周日到周六,中英文都可以4)下一行开始显示日期从1号开始,并按其是星期几实际情况与上面的星期数垂直对齐6)输入公历年月日能够显示农历日期;7)信息输入功能:对某一天输入代办事项,纪念日等文字;8)信息删除功能:能够删除某日期对应的纪念日等文字;(2)创新要求达到上述基本要求后,可进行创新设计,如对功能扩展等。2、需求分析根据题目设计要求及创新,我们设计了7个菜单选项。电子科技大学成都学院课程设计报告用户可以通过键盘输入1~7分别进入1:年历查询,2:月历查询3:日历查询,4:农历查询,5:记事本,6:定时关机工具,7:退出系统。3、设计概要1.进入系统时显示菜单界面及当前系统时间2.年历查询:输入年代时,系统输出改年所有月份的日历并以日历的格式输出。3.月历查询:输入年代,月份时,系统输出该月所有天数的日历并以日历的格式输出。4.日历查询:当输入年,月,日时,系统输出该天的日历信息,包括星期,农历,节日。5.农历查询:用户输入年、月、日。系统输出该天对应的农历信息,包括天干地支,农历。6.记事本:当输入年、月、日时,系统首先查询该时间是否有记事,如果没有提示是否记事,若记事则用户输入记事内容,系统将该记事内容以文本文档的形式保存。若有记事则显示该记事,并提示是否删除,若用户选择删除,则系统将该时间对应的文本删除。若不删除,则退出系统。7.定时关机工具:进入该功能,系统提示用户选择:1、关机、2:重启、3取消计划、4:退出。其中关机和重启具有定时功能。8.退出系统是否有记事电子科技大学成都学院课程设计报告4、详细设计1.基本函数设计1.闰年的判断2.每一个月天数的确定3.该天是今年的哪一天4今天是本周的第几天5.星期的确定6.输出一天的日历信息开始年历月历日历农历记事本定时关机退出输入年输入年月输入年月日输入年月日输入年月日输入指令年历查询月历查询日历查询农历查询定时关机系统是否有记事是否添加是否删除输出日历信息输入记事查看并退出删除结束存储输入指令否是是是电子科技大学成都学院课程设计报告7.格式化生成一个月的日历信息8.输入参数的检查9.年历查询10.节日查询11.农历查询12.日历显示13.系统时间获取14.定时关机工具2.登录界面3.菜单功能的设计1.年历查询:年历查询,需要显示这年每个月的日历信息并以日历的格式显示出来。首先则需要判断是否为闰年来确定本年的每个月的天数,然后算出每个月每一天为星期几并以日历的格式显示。2.月历查询:月历查询需要显示改年这个月的日历信息,并以日历的格式输出电子科技大学成都学院课程设计报告3.日历查询:用户输入年、月、日,系统根据输入信息调用基本函数,输出该天的基本日历信息。包括星期,天干地支,农历,节日。4.农历查询:用户输入年、月、日,系统通过输入信息调用农历查询函数,输出该天的农历信息电子科技大学成都学院课程设计报告5.记事本:用户输入年、月、日,系统根据输入信息自动查询该时间是否有记事。若没有,则提示用户是否进行记事。若记事则用户输入记事信息,系统对输入信息已文本文档的格式进行保存。若不记事则退出系统。若有记事,系统则直接输出该记事,并提示用户是否删除记事,若删除,则系统将该文本文档删除,否则退6.定时关机工具:用户输入相应的指令,根据指令执行相应的操作。输入1,则系统提示用户输入定时关机时间。输入2,系统提示用户输入定时重启时间。输入3,系统取消定时关机或重启计划,输入4则退出系统电子科技大学成都学院课程设计报告7.系统垃圾清理工具用户通过菜单输入系统垃圾清理的指令,系统开始自动清理系统垃圾5.源代码intLeap_year(intyear);intMonth_Day(intyear,intmonth);intYear_Day(intyear,intmonth,intday);intWeek_Day1(intyear,intmonth,intday);char*Week_Day2(intnumber);voidMenu1(intyear,intmonth,intday);voidMenu2(intyear,intmonth);intMenu3(intyear,intmonth,intday);voidMonth_Display(intyear,intmonth);voidLunar_Calendar(intyear,intmonth,intday);电子科技大学成都学院课程设计报告char*Festival(intmonth,intday);//char*Solar_terms(charMonth,charDay);voidDay_Display(intyear,intmonth,intday);voidShutdown(void);voidRTC(void);voidRubbish(void);/*******************************************************************************函数名:闰年判断*入口参数:year*返回参数:闰年返回1否则返回0intLeap_year(intyear)/*定义变量*/{if(year%4==0&&year%100!=0||year%400==0)/*利用函数判断输入年份是闰年还是平年*/return1;elsereturn0;}/*******************************************************************************函数名:月份天数确定*入口参数:year,month*返回参数:今年该月的天数*调用函数:intLeap_year(intyear)intMonth_Day(intyear,intmonth){inta[12]={31,28,31,30,31,30,31,31,30,31,30,31};/*定义数组确定12个月每个月的天数*/if(Leap_year(year))/*如果输入年份是闰年*/a[1]=29;/*二月29天*/returna[month-1];}/*******************************************************************************函数名:天数查询-查询该天是今年的第几天*入口参数:year,month,day*返回参数:该天是今年的第几天*调用函数:day1(intyear,intmonth)intYear_Day(intyear,intmonth,intday){inti,sum=0;for(i=1;imonth;i++){sum+=Month_Day(year,i);}sum+=day;returnsum;}电子科技大学成都学院课程设计报告/*******************************************************************************函数名:天数查询-查询该天是本周的第几天*入口参数:year,month,day*返回参数:返回该天是本周的第几天*调用函数:day2(intyear,intmonth,intday)intWeek_Day1(intyear,intmonth,intday){intnumber=(year-1)+(year-1)/4-(year-1)/100+(year-1)/400+Year_Day(year,month,day);number%=7;returnnumber;}/*******************************************************************************函数名:星期查询*入口参数:number*返回参数:星期char*Week_Day2(intnumber){switch(number)/*分类一周七天*/{case0:return星期日;case1:return星期一;case2:return星期二;case3:return星期三;case4:return星期四;case5:return星期五;case6:return星期六;default:return错误!请您重新输入。;/*不符和上面七种情况的报错提示*/}6、实验中所遇到的问题及解决方法在本次实验操作过程中,遇到一些语法的错误,结构上的错误,还有算法错误,但是根据读程序时的提醒,做了相应的修改,使得程序能够正常运行。7.感谢非常感谢老师在这学期C语言上机中给予我们的指导和帮助,让我们从实践中更好地,更深刻的理解了这门学科,也掌握到了更多的知识和解决一些实际问题电子科技大学成都学院课程设计报告的方法。在一些很困难的问题上通过老师的帮助,避免了不少弯路。再次向老师的帮助表示衷心的感谢!电子科技大学成都学院20届课程设计成绩评定表学生姓名王玲琳学号1140810429专业通信工程课程名称C语言程序设计能力教程设计题目万年历实验要求用C语言编写一个万年历系统,具有公历和农历的日期显示,能显示年月日,星期几,具有记事本功能,在某个日期上可以输入纪念日,代办事项等。对C语言在编写程序时的用处有了更明确的认识,懂得了编写C程序的一般方法步骤。分析问题做出算法,想好思路,在心里有个大致的框架,然后按部就班的写下自己想到的内容,把写下来的东西认真整理,查漏补缺,把一些细节处补上,这样就完成了一个程序。再者就是读程序,一句句的读,若输出的不是自己想要的结果应该要立即修改,直到这个程序接近完美。成绩考核(由指导教师组填写)对小组做整体评阅。(前四项为优、良、中及格不及格,总成绩为通过不同过)。如个别学生不通过,请在备注栏标明。考勤程序及运行结果设计报告PPT及答辩总成绩备注指导教师组签字:完成时间年月日