




免费预览已结束,剩余18页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
湖南工业大学课程设计任务书2012 2013 学年第 1 学期 计算机与通信学院 学院(系、部) 通信工程 专业 101 班级姓名 王进 学号 10408200117 课程名称: 面向对象程序设计 设计题目: 万年历 完成期限:自 2012 年 1 月 7 日至 2012 年 1 月 13 日共 1 周内容及任务一、设计的主要技术参数(1)日历以及世界末日的倒计时;(2) 生肖的设计;(3) 判定年份是否为闰年;(4)某年某月某日以及星期;二、设计任务(内容)(1) 日历界面的设置;(2)日历某年某月星期的计算;(3) 日历确定以1900年一月一日为基准;三、设计工作量从2013年1月7日开始,共用时1周。进度安排起止日期工作内容2013年01月07日制定计划,了解课本之外的关于日历的相关知识2013年01月8日分任务合作写出程序,例如界面与幕后的分工01月9日01月12日进行系统详细设计以及测试、寻找漏洞等2013年01月13日整理、完善课程设计,准备答辩主要参考资料1谭浩强.C+面向对象程序设计M.北京:清华大学出版社,2006.2. 张海林,杜忠友,姜玉波. Visual C+简明教程M.北京:电子工业出版社,2007.3丁展,四维科技.Visual C+游戏开发技术与实例M北京:人民邮电出版社,20054姚领田精通MFC程序设计M北京:人民邮电出版社.2000.5清宏计算机工作室Visual C+6.0编程技巧(多媒体与系统篇)M.北京:机械工业出版社,2001.6. 王华,叶爱亮,祁立学等.Visual C+6.0编程实例与技巧M.北京:机械工业出版社,1999.7. 钱新贤,杨猛,程兆炜等.Visual C+编程疑难详解M.北京:人民邮电出版社,2000.指导教师(签字): 年 月 日系(教研室)主任(签字): 年 月 日面向对象程序设计设计说明书万年历起止日期: 2012 年 1 月 7 日 至 2012 年 1 月 13 日学 生 姓 名 王 进班 级 通信101班学 号 10408200117成 绩指 导 教 师 (签 字)计算机与通信学院学院(部)2012年 1 月 13 日目录一、需求分析11.1开发背景11.2运行环境1二、概要设计22.1程序设计思想22.2 程序的结构3三、详细设计3四、用户使用说明6五、测试结果10六、课程设计的总结10七、附录和参考资料12一、需求分析1.1 开发背景目前的计算机日历程序,比较典型的是Windows各版本中的日历程序以及基于该程序所开发的各种应用程序中的日历程序。然而,这些程序都是千遍一律的局限于一个很短的时间内。但是,很多情况下,特别是在众多的科学领域中,一个时间跨度较大的程序是有参考价值的。C+程序设计语言充分发挥了其自身无与伦比的优越性,用极短的程序文本就弥补了这一领域的空白。 万年历作为日常中的一种小工具,它具有多方面的小工能,主要在日期的显示上给人以直观的表达效果,在日期的查询上方便简洁,还有就是在某些节日的提醒上都给我们带来极大的方便 ,是一种比较实用的小工具。在现代信息社会里,人们越来越重视时间的有效利用,而万年历也成了工作生活中必不可少的一部分,方便实用的万年历对于提高现代人的时间观念,优化时间使用效率具有重要意义。随着时代的发展,尽管日历的品种增多、花样也不断翻新,但仍旧保持着古老日历的格局。日历在当今社会的影响也是毋庸置疑的!同时,随着个人电脑的普及,简单的桌面万年历成为人们日常作息及重要事件提醒记录的重要工具。简易万年历可以运行在电脑桌面上,使用者可以通过各种不同的标记对重要时间及节假日和备忘事件等方面进行有效的查询和管理。这套系统旨在为用户方便有效地进行重要事件的查询和管理。 本系统采用C+语言编写,接针对简单的有效查询信息化系统。该系统具有完整的信息查询功能,充分满足了广大用户的基本需求。1.2运行环境一台安装windows xp、wndows vista、windows 7并且能够运行.exe可执行文件的计算机。二、概要设计 1.1设计的思想程序运行时,在首先给出的菜单中共有7个选项,分别是:1.距离世界末日还有多少天?2.某年的日历3.某年、某月的日历4.某年某月某日是周几5.判断闰年6.计算指定年份的生肖7.退出用户根据需求选择7个阿拉伯数字,程序根据选择做出不同的响应,用户选择1,4时,系统会提示用户输入年份,月份和日子(年份1900,0月份12,天数会根据某个月的情况判断是否符合实际),然后分别输出距离末日的天数和星期几;用户选择2、5、6时,系统会提示用户输入年份,然后通过算法分别输出该年的日历、是否为闰年的信息和该年的生肖;程序还可以直接按月份索取日历,即用户在主菜单中选择3,系统会提示用户依次输入某年和某月,然后输出对应的日历。每次用户做出选择并且获取对应的信息之后,系统不会直接关闭,系统会自动调用主函数,以满足用户继续使用的目的。当用户需要退出程序时,用户通过选择7,程序会自动关闭。程序的特点在于使用了C+里的类,运用类的借口等知识、枚举法、递归主函数、从1900年(21世纪万年历的起始年)开始算起,大大简化了程序的设计和实现,相对节约了系统的开支,使程序简单明了运行流畅。 1.2程序的结构程序由一个cal类,一个main(),data_order、hourd、t 组成。三、详细设计相关模块详细设计及部分程序:3.1距离世界末日还有多少天部分程序:switch(x)case 1 :/距离世界末日还有多少天.d.get_year();if(d.get_y()1900)/判断年份有否输错 d.print_blanks(t);cout年份输入错误!12)/判断月份有否输错 d.print_blanks(t);cout月份输入错误!d.day_kind(d.get_m()d.print_blanks(t);cout日期输入有误!endl;return main(); d.print_blanks(t);cout距离世界末日还有 41262-d.days_total() 天.endlendl;return main();3.2某年的日历部分程序:case 2: /某年的日历d.get_year();if(d.get_y()1900)/判断年份有否输错 d.print_blanks(t);cout年份输入错误!endl;return main() ;for(int i=1;i=12;i+)d.initM(i);/d.print_blanks(t);d.print_days();coutendlendl; return main();3.3某年、某月的日历部分程序:case 3: /某年、某月的日历.d.get_year();if(d.get_y()1900) /判断年份有否输错 d.print_blanks(t);cout年份输入有误!12) /判断月份有否输错 d.print_blanks(t);cout月份输入有误!endl;return main() ;d.print_days();return main();3.4某年、某月、某日是周几部分程序:case 4:/某年、某月、某日是周几.d.get_year();if(d.get_y()1900)/判断年份有否输错 d.print_blanks(t);cout年份输入错误!12)/判断月份有否输错 d.print_blanks(t);cout月份输入错误!d.day_kind(d.get_m()d.print_blanks(t);cout日期输入有误!endl;return main(); d.print_blanks(t);cout那 天 是 : 星期data_orderd.dayinaweek()endlendl;return main();3.5判断闰年部分程序:case 5: /判断闰年 .d.get_year();if(d.get_y()1900)/判断年份有否输错 d.print_blanks(t);cout年份输入错误!endl;return main() ;if(d.isleap() d.print_blanks(t);cout这是个闰年哎.endlendl;return main();elsed.print_blanks(t);cout这不是闰年呢.endlendl; return main();3.6计算制定年份生肖部分程序:case 6:d.get_year();if(d.get_y()1900)/判断年份有否输错 d.print_blanks(t);cout年份输入有误!endl;return main() ;d.print_blanks(t);cout这一年是 :hoursd.animals()年endl;return main();case 7:return 0;default:d.error_();return main();3.2相关模块涉及函数3.1输入日子void cal:get_day();3.2输入月份void cal:get_month();3.3输入年份void cal:get_year();3.4给出错误提示 void cal:error_();3.5判断闰年 inline int cal:isleap();3.6判断每个月有多少天 inline int cal:day_kind(int mm);3.7选择1900年 1月 1日星期一为起点 .inline int cal:days_total();3.8判断某天周几int cal:dayinaweek();3.9打印眉头:一二三四五六日 void cal:print_();3.10记录每月一号是周几void cal:print_days();3.11判断生肖 int cal:animals();四、用户使用说明书运行程序得到界面:根据界面目录输入你的选择:输入1 输入当前的年份:2012输入当前的月份:12输入当前的日子:20显示结果如下:继续进行目录的选择;输入3输入当前的年份:2012输入当前的月份:12显示结果如下:输入界面选择:输入 2输入年份:2012/12/24显示结果如下:显示结果是抽取的部分月份!界面选择输入:输入6输入年份:2012继续输入:输入5输入年份:2012显示结果如下:五、测试结果程序一切正常,测试的截图使用说明中已经给出。六、课程设计总结经过一个学期对C+程序设计的学习,我学习到了基本的理论知识,了解到了C+语言程序设计的思想,这些知识都为我的课程实践和进一步的学习打下了坚实的基础。我们学会了如何用C+编写一个简单的应用程序。首先要对程序的设计要求有一个比较明确的认识,然后系统分析与系统设计,最后是代码设计与调试。程序实现上,设计了简单的查询界面,将各个功能集中出来按照程序编写原则,便于查询。根据C+课程所学的概念、理论和方法,按照C+程序设计的基本步骤,设计出一个适当规模的程序;进一步加深对C+语言的理解和掌握。理论联系实际,加深和巩固所学的理论知识,提高实践能力和计算机的综合运用能力。我们编写程序的过程是辛苦与快乐的,程序的编写原则很重要,只要我们在编程,就必须不断改进,才能更好提高编程能力。在C+课程设计中,我体会颇多,学到了很多东西。我加强了对C+程序设计这门课程的认识,并且复习了自己以前学习到的知识。这些都使得我对计算机语言的学习有了更深入的认识!总之,通过这次课程设计,我收获颇丰,相信会为自己以后的学习和工作带来很大的好处。像万年历这样的程序设计,经历了平时在课堂和考试中不会出现的问题和考验。而这些问题,这并不是我们平时只靠课本,就可以轻易解决的。所以,锻炼了我们挑战难题,学会用已掌握的知识去解决具体问题的能力,进一步培养了独立思考问题和解决问题的能力。特别是学会了在Visual C+中如何调试程序的方法。当然,老师的指导和同学的帮助也是不可忽视的,他们给了我许多提示和帮助,教会了我编译复杂程序的方法。在老师和同学的帮助下,通过自己的努力,终于完成了这个万年历的简单课程设计。我经过这段时间的编程,对其中的艰辛,我是深有体会。从刚开始的选择程序、理解程序到后来的调试程序以及改进程序这个过程中,我遇到了各种各样的困难和挫折。但是我坚定信念,对自己充满了信心,想尽一切办法克服重重困难。通过课程设计的训练,我进一步学习和掌握了对程序的设计和编写,从中体会到了面向对象程序设计的方便和巧妙。懂得了在进行编写一个程序之前,要有明确的目标和整体的设计思想。另外某些具体的细节内容也是相当的重要。这些宝贵的编程思想和从中摸索到的经验都是在编程的过程中获得的宝贵 财富。这些经验对我以后的编程会有很大的帮助的,我要好好利用。虽然这次课程设计是在参考程序的基础之上进行的,但是我觉得对自己是一个挑战和锻炼。我很欣慰自己能在程序中加入自己的想法和有关程序内容,也就是对它的程序改进了一番改进,并有创新。但是我感觉自己的创新还不够典型,总之还不是很满意。另外由于时间的紧迫和对知识的了解不够广泛,造成了系统中还存在许多不足,功能上还不够完善。以后我会继续努力,大胆创新,争取能编写出透射着自己思想的程序。这次课程设计让我充分认识到了自己的不足,认识到了动手能力的重要性。我会在以后的学习中更加努力锻炼自己,提高自己,让自己写出更好更完善的程序,为以后的编程打好基础!总而言之,这次C+程序设计实践让我收获很大。七、附录和参考资料1.1附录#includeusing namespace std;void main()int d=0,s=0;for(int i=1900;i=2012;i+)if(i%4=0&i%100!=0)|i%400=0)d=d+1;s=113*365+d-11;coutsendl;源代码中关于世界末日中的数字的代码计算。1.2参考资料1谭浩强.C+面向对象程序设计M.北京:清华大学出版社,2006.2. 张海林,杜忠友,姜玉波. Visual C+简明教程M.北京:电子工业出版社,2007.3丁展,四维科技.Visual C+游戏开发技术与实例M北京:人民邮电出版社,20054姚领田精通MFC程序设计M北京:人民邮电出版社.2000.5清宏计算机工作室Visual C+6.0编程技巧(多媒体与系统篇)M.北京:机械工业出版社,2001.6. 王华,叶爱亮,祁立学等.Visual C+6.0编程实例与技巧M.北京:机械工业出版社,1999.7. 钱新贤,杨猛,程兆炜等.Visual C+编程疑难详解M.北京:人民邮电出版社,2000.1.3源代码#include #include #include using namespace std ;class calprivate:int y,m,d;public:void get_year();void get_month();void get_day();int isleap();int day_kind(int mm);int dayinaweek();int days_total();int animals();int get_y()return y;int get_m()return m;int get_d()return d;void print_();void print_days();void error_();void initM(int mm)m=mm;void print_blanks(int n) for(int i=1;i=n;i+) cout ;/打印空格 ;/-int t=15;char* data_order8=,一,二,三,四,五,六,日 ;char* hours13=,鼠,牛,虎,兔,龙,蛇,马,羊,猴,鸡,狗,猪;/- void cal:get_day()int day;print_blanks(t);coutday;d=day;/-void cal:get_month()int month;print_blanks(t);coutmonth;m=month;/-void cal:get_year()int year;print_blanks(t);coutyear;y=year;/-void cal:error_() /给出错误提示 print_blanks(t);cout输入错误! endl;/-inline int cal:isleap() /判断闰年 if(y%4=0&y%100!=0|y%400=0) return 1;/is a leap yearelsereturn 0;/not a leap year/-inline int cal:day_kind(int mm)/判断每个月有多少天 if(mm=1 | mm=3 | mm=5 | mm=7 | mm=8 | mm=10 | mm=12) return 31;/大月 31else if(mm=2 & isleap()/闰年 return 29;else if(mm=2 & !isleap()/非闰年 return 28;else return 30; /正常年份 30/-inline int cal:days_total()/选择1900年 1月 1日星期一为起点 .int days=0;int i;for( i=1900;iy;i+) /从1900年到 X年 1月 1日的天数 if(i%4=0 & i%100!=0 | i%400=0 )days+=366;elsedays+=365;for( i=1;im;i+)/再加上从 1月 1日到 mm月跨越的天数 days+=day_kind(i);days+=(d-1) ;/再加上 1日到 d日的跨越天 return days;/-int cal:dayinaweek()/判断某天周几 long int k=days_total();/判断一共过了多少天 if(k%7=0)return 1;/因为选择的参考日期是周一,所以返回一 else return (k%7+1);/-void cal:print_() /打印眉头:一二三四五六日 print_blanks(t);int i; for( i=1;i8;i+) coutsetw(4)data_orderi; coutendl;/-void cal:print_days()d=1;int leap=dayinaweek();/记录每月一号是周几 print_blanks(t);coutsetw(4) m月的月历 endl;print_();/打印眉头:一二三四五六日 print_blanks(t);int i;for( i=2;i=leap;i+)coutsetw(4) ;for( i=1;i=day_kind(m);i+,leap+)coutsetw(4)i;/确定打印日期的位置 if(leap%7=0) /是周日则换行 coutendl; /遇到周日换行 print_blanks(t);/另起一行的位置 coutendl;/-int cal:animals() /判断生肖 int k=y-1900;if(k%12=0) return 1;/以 1900年鼠年为参考 else return (k%12+1);/-int main()/int t=10;char x;cal d;/创建对象 d.print_blanks(t);coutsetw(10)+万年历查询+endl; d.print_blanks(t);coutsetw(10)+ 请从下面选择操作数: +endl;d.print_blanks(t);coutsetw(10)+ 1.)距离世界末日还有多少天? +endl; d.print_blanks(t);coutsetw(10)+ 2.)某年的日历 +endl; d.print_blanks(t);coutsetw(10)+ 3.)某年、某月的日历 +endl;d.print_blanks(t);coutsetw(10)+ 4.)某年、某月、某日是周几? +endl;d.print_blanks(t);coutsetw(10)+ 5.)判断闰年 +endl;d.print_blanks(t);coutsetw(10)+ 6.) 计算指定年份的生肖 +endl;d.print_blanks(t);coutsetw(10)+ 7.)退出. +endl;d.print_blanks(t);coutsetw(10)+endl;d.print_blanks(t);coutsetw(10)x;switch(x)case 1 :/距离世界末日还有多少天.d.get_year();if(d.get_y()1900)/判断年份有否输错 d.print_blanks(t);cout年份输入错误!12)/判断月份有否输错 d.print_blanks(t);cout月份输入错误!d.day_kind(d.get_m()d.print_blanks(t);cout日期输入有误!endl;return main(); d.print_blanks(t);cout距离世界末日还有 41262-d.days_total() 天.endlendl;return main();case 2: /某年的日历d.get_year();if(d.get_y()1900)/判断年份有否输错 d.print_blanks(t);cout年份输入错误!endl;return ma
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 商业综合体物业公司员工劳动纪律与职业素养协议
- 网络主播签约经纪公司服务协议模板
- 离婚协议书中财产分割与子女监护权具体规定
- 节能减排物业公司员工劳务合同及环保指标达成协议
- 玫瑰精油神经酸胶囊产品研发与知识产权保护合同
- 贵州省黔东南州2021-2022学年九年级上学期期末文化水平模拟测试道德与法治试卷
- 《公共关系原理与实务》 第四版 练习与答案 朱崇娴 - 第1-5章
- 网络强国思想课件
- 朗读者比赛课件
- 抗菌技术测试题及答案大全
- JC-T 2113-2012普通装饰用铝蜂窝复合板
- JB T 6527-2006组合冷库用隔热夹芯板
- 2022上海秋季高考语文卷详解(附古诗文翻译)5
- 定制手办目标市场调研
- 新版规范(2017)沥青混凝土路面设计(详细应用)
- 机器学习基础讲义
- 铁路交通事故调查处理规定-事故调查
- 慢性鼻窦炎鼻息肉护理查房课件
- set2020标准文件编写工具软件使用说明书
- 中小学教师参与学校管理研究论文
- 动叶可调式轴流风机液压调节系统课件
评论
0/150
提交评论