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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

万年历C语言课程设计报告Word文档格式.docx

1、如果是12月31号,则增加日期后进入到下一年的1月1号,如果是某一个月的最后一天,则增加日期后进入到下一个月的第一天;如果是Q/q键表示查询日期,此时将输出提示信息,提示用户输入查询日期。在用户输入查询日期后,系统就爱那个调用日期检查函数对输入日期的合法性进行检测,如果输入日期不合格,则提示错误信息并显示当前系统日期所在月的月历;如果是空格键表示重置,显示当前系统日期所在月的月历;如果是Esc键表示退出系统,按此键后,系统将询问用户是否确定退出,在得到确定回答(用户输入Y/y)后将退出系统。2、函数功能描述1) checkDate()函数原型:void checkDate()checkDate

2、()函数用于检查输入日期的合法性,包括检查输入日期中的年、月、日部分。对于年,检查其是否是负数或者是0;对于月,检查其是否是范围在112中的值;对于日,检查其是否是范围在131中的值。如果有一个部分不合法,则程序提示用户。2)isLeapyear()int isLeapyear(int year)isLeapyear()函数用于判断制定月份是否是闰年。参数year为待判断的年份。3)getWeek()int getWeek(int year,int month,int day)getWeek()函数用于计算并返回给定日期对应的星期。其中参数year、month和day都为整型,分别表示输入的年

3、、月和日。4)printSpace()void printSpace(int n)printSpace()函数用于输出制定个数的空格。其中整型参数n表示需要输出的空格的个数。5)printSepatator()void printSeparator()printSeparator()函数用于在制定位置输出用户使用手册。输出位置在函数中已经设定。7)printWeek()void printWeek()printWeek()函数用于输出当前日期对应的星期,即由 currentYear,currentMonth和currentDay确定的日期对应的星期。该函数首先调用getWeek()函数返回当前

4、日期对应的星期。8)printWeek2()void printWeek2(int week)printWeek2()函数用于根据制定值输出星期。参数week是一个整型变量,其值可取0到6,分别表示星期一到星期日。8)showCalendar()void showCalendar(int year,int month,int day)showCalendar()函数用于显示日历。参数year,month和day分别表示年、月和日。该函数显示year所在年是否是闰年,显示month所在月的月历,突出显示day所在日的日期。10)getKeyValue()void getKeyValue()get

5、KeyValue()函数用于获取键盘的输入。根据键盘的输入(上下移键、左右移键、上下翻页键、Q/q键)调整当前日期,并显示当前日期所在月的月历等。4、遇到的问题和相应的解决措施1.dos.h头文件不能在常用的Visual C+里使用。若使用Turbo C,则键入的汉字无法显示,且无法复制粘贴。解决措施:经过上网查询和询问同学,知道了导致问题的原因,但若把dos.h在visual c+中换成time.h,过程太复杂,很难实现。最后,我们跟同学借了一个win-TC,是C语言程序,且可以使用中文和进行复制粘贴;2.键入程序代码的时候显示“非法字符?(0xa3)在showCalender函数中” 解决

6、措施:把showCalender函数全部检查一遍也没有找出问题所在,然后咨询老师,经验丰富的老师一眼看出函数中的一个左括号是用拼音输出的,不是英文;3.程序可以运行,但应该只显示一个向下箭头的地方显示了三行,且覆盖了其他的字符。认真的又检查了一遍,发现“指定输出字符为向下的箭头”的函数中,_CX=01,写成了_CH=01;4.万年历需要获取系统时间,不知从何下手。经查阅资料,得知应用:currentYear=sysTime.da_year; currentMnth=sysTime.da_mon; currentDay=sysTime.da_day;5、心得体会经历了这次课程设计的设计和制作的整

7、个过程,我们才发现我们知识的贫乏和知识面的狭窄,原本以为不就是一个小小的课程设计,小case,很容易就可以搞定,可是到了后来实际的操作的时候可是花费了我们九牛二虎之力,不说其他的,只说时间上面,我们就花费了大把的时间,当然我们也从中体会了很多平时不能收获的东西。经过一个多月的自主上机和三个多星期的大作业编写,我们一队三人的齐心努力,查阅书籍,上网查询等各种途径,完成了这次的大作业编写。其中遇到了很多问题,一一解决的过程让我们学会了很多,当然有很多最初的构想没有实现,这也是我们的遗憾之处。这次作课程设计我们也是收获很大,我们更深入的体会到团队的重要性,通过自学学到了更多C语言的编译,如插入颜色,

8、读取系统时间等,这会是我们终身的财富。首先,我们对C语言有了更深的了解,使用起来也更加的熟练,原来有一些不知道和不熟悉的函数,我们学会用了。其次,我们这一次找了不少的资料,找专业的书籍、上网找各方面的资料,也使我们学到了一些书本中学不到的知识,让我们长了见识。同时我们同学之间也互相的探讨,也增进了我们同学之间的感情。这次的万年历设计,虽然我们自己觉的很有的成就感,但是这必竟是我们第一次C语言的课程设计,必然会有很多的不足之处有待改进,相信以后我们一定会做的更好。 同时也感谢老师们的耐心讲解与指导,我们期待下一次可以做的更好! 【程序代码】/*加载头文件*/#includebios.hdos.h

9、conio.hgraphics.hstring.hstdlib.h/*定义常量*/*左移键*/#define LEFT 0x4b00/*右移键*/#define RIGHT 0x4d00/*下移键*/#define DOWN 0x5000/*上移键*/#define UP 0x4800/*向上翻页键*/#define PAGEUP 0x4900/*向下翻页键*/#define PAGEDOWN 0x5100/*小写字母q*/#define QLOWER 0x1071/*大写字母Q*/#define QUPPER 0x1051/*空格键*/#define SPACE 0x3920/*Esc键*/

10、#define ESC 0x011b/*定义全局变量*/struct date sysTime;int currentYear;int currentMonth;int currentDay;int n_currentMon;int n_lastMon;/*-自定义函数-*/void checkDate();int isLeapyear(int year);int getWeek(int year,int month,int day);void printSpace(int n);void printSaparator();void printUsage();void printWeek();

11、void printWeek2(int week);void showCalendar(int year,int month,int day);void getKeyValue();welcome()int i, graphdriver,graphmode,size,page;char s30;graphdriver=DETECT;initgraph(&graphdriver,&graphmode,);cleardevice();setbkcolor(BLUE);setviewport(40,40,600,440,1);setfillstyle(1,2);setcolor(YELLOW);re

12、ctangle(1,1,560,400);floodfill(50,50,14);rectangle(20,20,540,380);setfillstyle(1,13);/* 开图视口 */* 用绿色填画出的矩形框 */floodfill(2l,300,14);setcolor(BLACK);settextstyle(1,0,6);/* 用淡洋红色填画出的矩形框 */* 设要显示字符串的字形方向,尺寸 */outtextxy(100,60,Welcom yousetviewport(100,150,540,380,0); /* 又开一窗口 */setcolor(14);setfillstyle

13、(1,10);rectangle(20,20,420,120);settextstyle(2,0,9);floodfill(21,100,14);/* 用深蓝色填充 */sprintf(s,Hey girl!Do you want to know? /* 将字符串存到 s 字符数组*/setcolor(1);settextstyle(10,0,10); /* 设选用字形 4,放大 3 倍,水平设置 */outtextxy(110,80,s); /* 显示 s 字符串 */getch();closegraph();/*功能控制模块*/*检查日期有效性函数*/*如果给定的日期中年份部分为负数或者0

14、*/if(currentYear12|currentMonth31|currentDayThe day should be a number between 1 and 31 ! /*判断是否是闰年函数*/ /*闰年的判断:(1)year被4整除,并且year不被100整除 或(2)year被4整除,并且被400整除*/ if(year%4=0&year%100|year%400=0) return 1; else return 0; /*根据给定日期计算星期函数*/ int leapFlag; int week; int i; /*该数组用于保存每个月的天数*/ int a13=0,31,2

15、8,31,30,31,30,31,31,30,31,30,31; int count=0; /*判断给定年份是否是闰年*/ leapFlag=isLeapyear(year); /*如果是闰年则2月份的日期应该为29天*/ if(leapFlag=1) a2+; /*计算从给定年份的1月1日到给定月份的1号之间的天数*/ for (i=1;imonth;i+) count+=ai; /*计算从给定年份的1月1日到给定日期之间的天数*/ count+=day; /*计算星期*/ week=(year+1+(year-1)/4+(year-1)/100+(year-1)/400+count)%7;

16、 return week;/*打印输出模块*/*输出指定个数空格函数*/ for(i=0;n; printf( /*输出分割线函数*/38;=/*输出使用方法函数*/void printUsage() gotoxy(45,3); /*设定字体颜色*/ textcolor(YELLOW); /*送格式化输出至屏幕*/ cprintf(-Usage- gotoxy(45,5);YEAR gotoxy(50,5); Up key( ) to increase; gotoxy(50,7); Down key( ) to decrease.n gotoxy(45,9);MONTH: gotoxy(50,

17、9); Right key( ) to increase; gotoxy(50,11); Left key( ) to decrease.n gotoxy(45,13);DAY gotoxy(50,13); PageDown key to increase; gotoxy(50,15); PageUp key to decrease.n gotoxy(45,17);QUERY gotoxy(50,17); Q/q keyn gotoxy(45,19);RESET gotoxy(50,19); SPACE key.n gotoxy(45,21);EXIT gotoxy(50,21); Esc k

18、eyn gotoxy(59,5); /*设置寄存器,表示在指定位置输出一次指定的字符*/ _CX=01; _AH=0xa; /*指定输出字符为向上的箭头*/ _AL=24; /*产生一次中断,输出向上的箭头*/ geninterrupt(0x10); gotoxy(61,7); /*指定输出字符为向下的箭头*/ _AL=25; gotoxy(62,9); _AL=26; /*指定输出字符为向右的箭头*/ gotoxy(61,11); /*指定输出字符为向左的箭头*/ _AL=27; /*还原字体颜色*/ textcolor(7);/*根据系统日期输出星期函数*/ int day; /*根据日期

19、获得星期*/ day=getWeek(currentYear,currentMonth,currentDay); textcolor(11); /*输出星期,0表示星期天,1表示星期一6表示星期六*/ if(day=0)%d-%d-%d,Sunday!,currentYear,currentMonth,currentDay); if(day=1)%d-%d-%d,Monday! if(day=2)%d-%d-%d,Tuesday! if(day=3)%d-%d-%d,Wednesday! if(day=4)%d-%d-%d,Thursday! if(day=5)%d-%d-%d,Friday! if(day=6)%d-%d-%d,Saterday!/*输出指定星期函数*/ if(week=0),Sunday if(week=1),Monday if(week=2),Tuesday if(week=3),Wendesday if(week=4),Thursday if(week=5),Friday if(week=6),Staturday/*日历显示模块*/*显示日历函数*/ int j; /*输出的日期*/ int outDay; /*本月第一个星期中,在上月的天数*/ int dayLastMon; int a13=0,31,28,31,30,31,30,

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1