C++电子万历论文_第1页
C++电子万历论文_第2页
C++电子万历论文_第3页
C++电子万历论文_第4页
C++电子万历论文_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

1、X X X X 大 学C+语言程序设计课程设计(论文)题目: 电子万年历 院(系): 专业班级: 学 号: 学生姓名: 指导教师: 教师职称: 起止时间: 课程设计(论文)任务及评语院(系): 教研室: 学 号 学生姓名 专业班级 课程设计(论文)题目电子万年历课程设计(论文)任务程序设计的任务与要求:(1). 掌握面向对象程序设计语言C+的基本语法(2). 掌握C+面向对象设计的思想(3). 掌握VC+6.0与DEV C+ 开发工具的使用 (4). 运用标准C+规范设计应用程序设计过程中,要严格遵守设计的时间安排,听从指导教师的指导。正确地完成上述内容,规范完整地撰写出设计报告。指导教师评语

2、及成绩 成绩: 指导教师签字: 年 月 日xxxx 大 学 课 程 设 计 说 明 书(论 文) 目 录第1章 课程设计目的与要求11.1 设计目的11.2实验环境11.3预备知识11.4设计要求1第2章 课程设计内容22.1 课题描述22.2 系统设计22.2.1功能分析22.2.2面向对象设计32.2.3 类成员描述42.3程序实现42.3.1源码分析42.3.2运行结果11第3章 课程设计总结12参考文献13第1章 课程设计目的与要求1.1 设计目的将理论教学中涉及到的知识点贯穿起来,对不同的数据类型、程序控制结构、数据结构作一比较和总结,结合设计题目进行综合性应用,对所学知识达到融会贯

3、通的程度。通过课程设计,学生在下述各方面的能力应该得到锻炼:(1)进一步巩固、加深学生所学专业课程C+语言教程的基本理论知识,理论联系实际,进一步培养学生综合分析问题,解决问题的能力。(2)全面考核学生所掌握的基本理论知识及其实际业务能力,从而达到提高学生素质的最终目的。(3)利用所学知识,开发小型应用系统,掌握运用C+语言编写调试应用系统程序,训练独立开发应用系统,进行数据处理的综合能力。(4)对于给定的设计题目,如何进行分析,理清思路,并给出相应的数学模型。(5)掌握面向对象程序设计的方法。(6)熟练掌握C+语言的基本语法,灵活运用各种数据类型。(7)进一步掌握在集成环境下如何调试程序和修

4、改程序。1.2实验环境硬件要求能运行Windows 操作系统的微机系统。C+语言应用程序开发软件使用:VC+ 系统,或其他C+语言应用程序开发软件。1.3预备知识熟悉C+语言程序设计的基本知识及VC+编辑器的使用方法。1.4设计要求1.仔细分析设计题目,画出程序流程图,编写程序源代码。2.积极上机调试源程序,增强编程技巧与调程能力。3.认真书写课程设计预习报告,课程设计说明书。4.遵守课程设计要求和机房管理制度,服从指导教师的安排,确保课程设计的顺利完成课程设计内容。第2章 课程设计内容2.1 课题描述目前的计算机日历程序,比较典型的是Windows各版本中的日历程序以及基于该程序所开发的各种

5、应用程序中的日历程序。然而,这些程序都千篇一律的局限在一个很短的时间范围内。但是,很多情况下,特别是在众多的科学研究领域中,一个时间跨度教大的日历程序是很有参考价值的。C+程序设计语言充分发挥了其自身无与伦比的优越性,用极短的程序文本就填补了这一领域的空白。2.2 系统设计2.2.1功能分析首先判断某一年是否为闰年,若是,则2月输出为29天,若不是,2月输出为28天。再判断系统当前月份是大月还是小月,若为大月,则输出31天;若为小月,则输出30天。通过定义一个struct结构体,用对对象指针的访问来实现从系统自动获取时间为程序所用。再利用一个函数计算出每月的第一天是星期几。根据所判断的大月、小

6、月,通过控制符setw控制输出流格式(设置字段宽度),把该日期以前的位置用空格补上,并从该日起依次输出天数直到月底,该月中的天数加上该月一日为星期几的数字再除以7得0换行,即可完整的输出该月的日历。程序中定义了一个结构体。结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合,也叫结构4。在C语言中,可以定义结构体类型,将多个相关的变量包装成为一个整体使用。在结构体中的变量,可以是相同、部分相同,或完全不同的数据类型。在C语言中,结构体不能包含函数。在面向对象的程序设计中,对象具有状态(属性)和行为,状态保存在成员变量中,行为通过成员方法(函数)来实现。C语言中的结构体只能

7、描述一个对象的状态,不能描述一个对象的行为。在C+中,考虑到C语言到C+语言过渡的连续性,对结构体进行了扩展,C+的结构体可以包含函数。C+中一般使用cout和cin时的默认格式.但有时人们在输入输出时有一些特殊的要求,如在输出实数时规定字段宽度,只保留两位小数,数据向左或向右对齐等。C+提供了在输入输出流中使用的控制符。需要注意的是:如果使用了控制符,在程序单位的开头除了要加iostream头文件外,还要加iomanip头文件5。本课程设计主要是编写一个电子万年历系统。模仿现实生活中的挂历,以系统当前日期的月份为准显示当前月份的每一天(显示出日期及对应的星期几),当系统日期变到下一个月时,系

8、统自动翻页到下一月。在课程设计中,程序设计设计语言采用Visual C+6.0,程序运行平台为Windows XP。为了显示当月的每一天,采取算出当月第一天是星期几的方法,通过判断大月、小月,依次排出当月的每一天。程序通过调试运行,实现了设计目标。2.2.2面向对象设计从系统获取时间判断该年是否为闰年输出31天判断该月是大月还是小月输出30天输出29天输出28天图2.1 输出天数判断从系统获取年月日之后,判断该年是否为闰年,若是闰年,且当月为2月,则输出29天;若不是闰年,则2月输出28天。判断该月为大月还是小月,大月输出31天,小月输出30天。如图2.1。2.2.3类成员描述输入、输出流类库

9、函数的数量非常多,程序中用到的如表2-2所示表2-2程序中用到的输入、输出流类库函数函数声明功能声明int leap (int year) ;判断是否为闰年。int days_month (int year,int month);判断当月有多少天,值以数值型数据返回。Int firstday(int year,int month);判断每月的第一天是星期几,值以数值型数据返回。time( &nowtime );获取时间函数。int main();主函数,输出万年历的日期几对应的星期。2.3程序实现2.3.1源码分析(1)判断年份是否是闰年的语句:if(year%4=0&&

10、;year%100!=0|year%400=0)用一个逻辑表达式包含所有的闰年条件的if语句。能被4整除,但不能被100整除,为闰年,或能被400整除,为闰年。编写完整闰年判断的程序,进行调试,输出结果如图2.3所示。#include<iostream>using namespace std;int main()int year;bool leap;cin>>year;if(year%4=0&&year%100!=0|year%400=0)leap=true;else leap=false;if (leap)cout<<"是闰年&q

11、uot;<<endl;elsecout<<"不是闰年"<<endl;return 0;图2.3判断年份是否是闰年(2)输出系统时间的程序(如图2.4):#include<iostream>using namespace std;int main() cout<<_DATE_<<endl;图2.4输出系统时间的程序(3)定义指针*timeinfo,通过函数time( &nowtime )获得当前时间,将指针指向获取的系统时间,定义起始年为1900年,通过对对象指针的访问,实现自动调用系统时间。ti

12、me_t nowtime;struct tm *timeinfo;time( &nowtime );timeinfo = localtime( &nowtime );year = timeinfo->tm_year + 1900;month = timeinfo->tm_mon + 1;(4)函数w=(1+2*month+3*(month+1)/5+year+year/4+year/400-year/100)%7+1计算出每月第一天是星期几。(5)输出格式的实现如果该月第一天是星期日,输出日期,每两个日期间用setw控制符设置字段宽度为4,当排满7天换行,到输出本月

13、全部日期为止。如果该月第一天不是星期日,空出前面几天,输出日期,每两个日期间用setw控制符设置字段宽度为4,排满第一行后换行,再排满7天换行,到输出本月全部日期为止。if(a=7) for(i=1;i<=b;i+) cout<<setw(4)<<i; if(i%7=0) cout<<endl; if(a!=7) while (j<=4*a) cout<<" " j+; for(i=1;i<=b;i+) cout<<setw(4)<<i; if(i=7*k-a) cout<<

14、;endl; k+; / 程序名称:d.cpp/ 程序功能:从系统自动获取日期,显示当月日历/ 最后修改日期:2010-12-26#include<iostream.h>#include<iomanip.h>int fn1(int year,int month,int day);int monthday(int year,int month);void fn2(int year,int month);void fn3(int year);void main() int year,month,day,i,x;cout<<endl<<endl;cou

15、t<<" -"<<endl;cout<<" * *"<<endl;cout<<" 欢迎进入万年历查询系统 "<<endl;cout<<" * *"<<endl;cout<<" -"<<endl;cout<<endl<<endl;cout<<" 程序员: "<<endl<<endl;cout<&

16、lt;" 辽宁工业大学"<<endl;loop:cout<<endl<<endl;cout<<" 请您选择查询内容;"<<endl<<endl;cout<<" 1.显示一年的日历:"<<endl;cout<<" 2.显示一个月的日历:"<<endl;cout<<" 3.显示某一天是周几:"<<endl;cout<<" 0.退出:&q

17、uot;<<endl;cout<<endl;cout<<"请输入(0-3)中的数字选择您要查询的内容"<<endl;cin>>i;switch(i)case 0: return;case 1:cout<<"请输入年份,输入格式为*"<<endl;cin>>year;fn3(year);break;case 2:cout<<"请输入您要查询的日期,输入格式为* *"<<endl<<"如2009 1

18、1"<<endl;cin>>year>>month;fn2(year,month); break;case 3:cout<<"请输入您要查询的日期,输入格式为* * *"<<endl<<"如2009 11 23"<<endl;cin>>year>>month>>day;cout<<year<<"年"<<month<<"月"<<d

19、ay<<"日"<<"是星期"<<fn1(year,month,day)<<endl;break;default:cout<<"输入错误"<<endl;cout<<"继续查询请输 1 "<<endl<<"退出查询请输 0"<<endl;cin>>x;if(x=1)goto loop;int fn1(int year,int month,int day)int year

20、js,monthjs,monthday=0;int permonthday12=31,28,31,30,31,30,31,31,30,31,30,31;for(int i=0;i<month-1;i+)monthday=monthday+permonthdayi;if(year%4=0&&year%100=0|year%400=0)yearjs=2;if(month>2)monthjs=(monthday+1)%7;elsemonthjs=monthday%7;elseyearjs=1;monthjs=monthday%7;return (year+year/4+y

21、ear/400-year/100-yearjs+monthjs+day)%7)=0?7:(year+year/4+year/400-year/100-yearjs+monthjs+day)%7);int monthday(int year,int month)int permonthday12=31,28,31,30,31,30,31,31,30,31,30,31;if(month!=2)return permonthdaymonth-1;elseif(year%4=0&&year%100=0|year%400=0)return 29;elsereturn 28;void fn

22、2(int year,int month)cout<<endl<<endl;cout<<setw(6)<<"一"<<setw(6)<<"二"<<setw(6)<<"三"<<setw(6)<<"四"<<setw(6)<<"五"<<setw(6)<<"六"<<setw(6)<<"日

23、"<<endl;for(int i=1;i<=monthday(year,month);i+)if(i=1) for(int j=1;j<fn1(year,month,1);j+)cout.width(6);cout<<setw(6)<<" "cout<<setw(6)<<i;else if(i+fn1(year,month,1)-2)%7=0)cout<<endl;cout<<setw(6)<<i;cout<<endl<<endl;

24、void fn3(int year)for(int i=1;i<=12;i+)cout<<i<<" 月"<<endl;fn2(year,i);cout<<endl<<endl;2.3.2运行结果本程序按照设计要求,模仿现实生活中的日历的形式,从计算机中获取当前系统的日期并输出,同时,输出当月所有日期及对应的星期几。该程序实现了设计目标。运行结果如图2.5所示。图2.5 运行结果第3章 课程设计总结经过一个学期对C+程序设计的学习,我学习到了基本的理论知识,了解到了C+语言程序设计的思想,这些知识都为我的课程实践和进一步的学习打下了坚实的基础。此次对C+语言编写电子万年历的设计进一步的巩固了用C+

温馨提示

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

评论

0/150

提交评论