您好,欢迎访问三七文档
..西安文理学院软件学院课程设计报告设计名称:程序语言课程设计设计题目:万年历学生学号:1402110147专业班级:软件工程一班学生姓名:罗强强学生成绩:指导教师(职称):张庆刚课题工作时间:2012.11.15至2012.11.29软件学院课程设计任务书学生姓名罗强强学号1402110147专业班级软件工程一班设计题目万年历内容概要:设计用的计算机环境:WindowsXP,Turboc2.0和MicrosoftVisualC++6.0设计所运用的语言:C语言算法中涉及的知识点:定义整型,字符型,指针变量,字符型数组和指针数组。数组的初始化和引用和指针的使用。设计所包含的基本功能:模仿现实生活中的挂历.当前页以系统当前日期的月份为准显示当前月的每一天(显示出日及对应的星期几).当系统日期变到下一月时,系统自动翻页到下一月,每页的颜色都不相同。文献资料:谭浩强.C程序设计(第三版)[M].北京:清华大学出版社.2005谭浩强.C程序设计题解与上机指导(第三版)[M].北京:清华大学出版社.2005戴建鹏译C语言大全(第三版)[M].北京:电子工业大学出版社.1994设计要求:一.设计内容及功能要求:模仿现实生活中的挂历.当前页以系统当前日期的月份为准显示当前月的每一天(显示出日及对应的星期几).当系统日期变到下一月时,系统自动翻页到下一月.二.设计完成后提交的文件和图表文件:万年历系统文件,及源代码图表:1,进入万年历系统2,任意键进入菜单3,当输入非法字符时,提示错误,重新输入4,进入选项1,日历显示5,进入选项2,日历查询6,当查询输入非法字符时,提示错误,返回主菜单当查询输入非法字符时,提示错误7,进入选项3,退出工作期限:设计工作自2012年11月15日至2012年11月29日止。指导教师:院长:日期:2012年11月15日摘要本程序是一个万年历程序,模仿现实生活中的挂历.当前页以系统当前日期的月为准显示当前月的每一天(显示出日及对应的星期几).当系统日期变到下一月时,系统自动翻页到下一月,还可以在程序中任意的输入公元年份,月,日进行日期查询,当输入完成后,用户图形界面出现相应年月简易的日历表,并且是以星期的格式出现。而且每个运行界面的颜色都不相同。在本程序中主要运用了定义整型,字符型,指针变量,字符型数组和指针数组,数组的初始化和引用和指针的使用,达到c语言程序编写所体现的方便快捷的功效。..目录摘要………………………………………………………………………………………II第一章绪论……………………………………………………..………………………..21.1课题的背景…………………………………………………………………………...21.2课题的目的………………………………………………..………………………….21.3课题的意义………………………………………………………………………………………2第二章设计简介及设计方案论述……………………………………………………….32.1实现的功能……………………………………………..………………………….…32.2结构模块分析…………………………………………..………………………….…3第三章详细设计…………………………………………………………..……………….43.1设计思路..……………………………………………..………………………….…43.2功能模块……………………………………………..………………………….……43.3各模块函数详细说明………………………………………………………………...5第四章运行结果…………………………………………………..………………..……..94.1系统使用说明……………………………….………………………………..….…...94.2系统运行结果接截图……………………………………..………………………….9总结…….……………………………………………………..………………………….12参考文献…….………………..………………………………..………………………….13附录主要程序代码………...………………………………..………………………….14第一章绪论1.1课题的背景在现代信息社会里,人们越来越重视时间的有效利用,而万年历也成了工作生活中必不可少的一部分,方便实用的万年历对于提高现代人的时间观念,优化时间使用效率具有重要意义。同时,随着个人电脑的普及,简单的桌面万年历成为人们日常作息及重要事件提醒记录的重要工具。简易万年历可以运行在电脑桌面上,使用者可以通过各种不同的标记对重要时间及节假日和备忘事件等方面进行有效的查询和管理。1.2课题的目的通过显示年日历程序的设计,培养我们综合利用C语言进行程序设计的能力,加强函数的运用及学生对软件工程方法的初步认识,提高软件系统分析能力和程序文档建立、归纳总结的能力,培养学生利用系统提供的标准函数及典型算法进行设计。通过本项课程设计,可以培养独立思考、综合运用所学有关相应知识的能力,能更好的巩固《C语言程序设计》课程学习的内容,掌握工程软件设计的基本方法,强化上机动手编程能力,闯过理论与实践相结合的难关!更加了解了C语言的好处和其可用性!同时增加了同学之间的团队合作精神!更加也体会到以后在工作中团队合作的重要性和必要性!通过C语言课程设计,使我们了解高级程序设计语言的结构,掌握基本的程序设计过程和技巧,掌握基本的分析问题和利用计算机求解问题的能力,具备初步的高级语言程序设计能力。为后续各门计算机课程的学习和毕业设计打下坚实基础。1.3课题的意义掌握一种编程工具和面向对象程序设计的基本思想和方法,培养我们学生综合利用某种语言进行程序设计的能力,培养我们学生利用系统提供的功能进行创新设计的能力,培养我们学生充分利用计算机的功能和特点分析实际问题及解决实际问题的能力。为我们提供一个综合运用所学知识解决实际问题的机会,增强我们学生的实践动手能力和工程实践能力,并培养和锻炼我们学生的自学创新能力。为了能更好地了解C语言,因此开设了此次课程设计,程序设计教学课程的目的不是为了单独的课堂学习,而是要让我们学生掌握程序设计的基本思想及方法。一方面,在课程设计过程中,可以明确的指导为什么而学,还能对所学知识得到应用,更重要的是可以让我们学生掌握一些基本函数的用法,从而不在对编程序感到茫然,经过设计,可以让我们熟悉简单程序的设计方法和编写,对程序设计及该门课程设计语言的应用得到理解。第二章设计简介及设计方案论述2.1实现功能简易万年历主要实现以下几个功能:①日历显示;②日历查询;③退出程序2.2内部结构模块分析万年历万年历内部程序分六部分:获取系统日期、判断是否是闰年、取得星期、打印月历、查询日历、退出程序。万年历主程序获取系统日期判断是否是闰年取得星期打印月历查询日历退出程序第三章详细设计3.1设计思路3.1.1设计语言语言选择:本系统选择C语言来编写3.1.2设计程序流程图是否二月29天二月28天正确错误3.2功能模块开始获取系统日期输入年月日判断输入的年月日格式结束输出日历万年历系统日历显示日历查询天星期退出程序进入显示当前日历3.退出程序1.日历显示2.日历查询3.退出程序1.日历显示2.日历查询判断闰年3.3各模块函数详细说明3.3.1从系统取当前日期structtm*getDay(){time_ttimer;structtm*gmt;time(&timer);gmt=localtime(&timer);returngmt;}3.3.2判断是否是闰年intrunYear(intyear)//判断是否是闰年{intrun=0;if(year%400==0||(year%4==0&&year%100!=0))run=1;returnrun;}intchaxunday(intyear,intmonth,intday)//检查正确{if(year=0&&year=10000||month1&&month12||day1||day31)return0;switch(month){case1:case3:case5:case7:case8:case10:case12:if(day31)return0;break;case4:case6:case9:case11:if(day30)return0;break;default:if(runYear(year)&&day29)return0;elseif(runYear(year)==0&&day28)return0;}return1;}3.3.3取得星期intqudeDay(intyear,intmonth,intday)//取得星期{intnday=0,nDay,i,x;for(i=0;imonth-1;i++)nday+=daysOfMonth[runYear(year)][i];nday+=day;nDay=year-1+(year-1)/4-(year-1)/100+(year-1)/400+nday;x=nDay%7;returnx;}voidprintrili(intyear,intmonth,intday)//打印月历{inti;charwday[7][4]={日,一,二,三,四,五,六};printf(%d年%d月%d日\n,year,month,day);for(i=0;i7;i++)printf(%5s,wday[i]);printf(\n);intw;intnowDay=1;w=qudeDay(year,month,nowDay);//找到第一天的星期intn;n=daysOfMonth[runYear(year)][month-1];switch(w)//放置第一天{case0:printf(%5d,nowDay);break;case1:printf(%10d,nowDay);break;case2:printf(%15d,nowDay);break;case3:printf(%20d,nowDay);break;case4:printf(%25d,nowDay);break;case5:printf(%30d,nowDay);break;default:printf(%35d\n,nowDay);}}nowDay++;for(i=1;in;i++){w=qudeDay(year,month,nowDay);printf(%5d,nowDay);if(w==6)//如果是星期六则换行打印puts(\n);nowDay++;}}3.3.4查询日历voidcheckrili(){system(cls);printf(请输入你要查询的日期(如20121120):);scanf(%d%d%d,&year,&month,&day);while(!chaxunday(year,month,day))//如果日期输入不正确,则重新输入{printf(请重新输入);scanf(%d%d%d,&year,&month,&day);}system(cls);if(runYear(year))printf(\n闰年\n\n);elseprintf(\n平年\n\n);printrili(year,month,day);}3.3.5返回主菜单voidbackMenu(){intx;printf(请按任意字符键返回主菜单:);scanf(%d,&x);system(cls);}charmenu[100];//定义数组intflag=0;do{intf=0;do{f=0;printf(\n请输入相应数字:);scanf(%s,menu);if(strlen(menu)2)f=1;//测量字符串长度。数字字符串长}while(f==1);switch(*menu){case'1':system(cls);//清屏printrili(year,month,day);backMenu();//实现任意键返回主菜单mainMenu(year,mont
本文标题:万年历课程设计报告
链接地址:https://www.777doc.com/doc-8539966 .html