




免费预览已结束,剩余12页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C+面向对象程序设计课程设计C+面向对象程序设计课程设计 日 期 计 算 学院: 班级: 学号: 姓名: 指导教师:C+面向对象程序设计课程设计11.系统概述11.1课程设计目的11.2 系统背景.1 1.3题目要求.21.4系统目标.22需求分析22.1 现有系统的概述32.2系统的主要功能逻辑过程和实现算法32.3错误处理33.概要设计44.程序代码55.程序运行结果125.1页面设计125.2日期相加125.3日期相减135.4退出程序136.课程设计心得体会14参考文献.15C+面向对象程序设计课程设计1.系统概述1.1课程设计目的: 1.了解掌握C+的方法,具备初步的独立分析和设计能力。 2.初步掌握软件开发过程的问题分析,系统设计,程序编码,测试等基本方法和技能。 3.正确理解掌握C+面向对象程序设计的基本特征:类、对象、继承与诞生、多态、虚函数、模板、流类库等。 4.提高综合运用所学的理论知识和方法独立分析和解决问题的能力。 5.训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。 1.2 系统背景 我设计的是日期时间计算,要定义一个功能齐全的日期类,设计重载关系运算符,要在主函数中列出菜单选项,完成日期的加减比较等测试功能,日期计算是指固定日期加上一定的天数,首先选择让电脑输出计算机上现在的时间,然后指定日期的起点,再输入要加或减的天数,结果为新日期,新日期加上天数,为最后需要的日期,通过函数的运行输出得到的日期还需考虑是否是闰年的情况,再将日期时增加显示星期几英文形式月份的功能,则一次计算完成,继续选择是再计算日期还是退出。主要应用的是逻辑表达式,日期类,处理时间相加与天数问题1.3题目要求1测试日期类成员函数,在主函数中列出菜单选项,可以完成日期的加减比较等测试。 2完善程序功能,在日期相加的菜单选项中增加日期加天数,结果为新日期;日期加月份,结果为新日期,要考虑闰年情况。 3完善程序功能,在日期相减的菜单选项中增加日期减天数,结果为新日期;日期减月份,结果为新日期,要考虑闰年情况。4显示日期时增加显示星期及英文形式的月份的功能。 5增加输入的甄别功能,即输入非法数据(如负数、日期超过31天、时间超过24小时等情况)的识别显示功能。 1.4 系统目标序号目标内容1在主函数中完成日期的加减等功能2在已有的日期上增加日期天数,结果为新日期3在已有的日期上减去日期天数,结果为新日期 4显示日期以英文形式表示5增加输入甄别功能2需求分析2.1 现有系统的概述1.调用一个工程,在其中头文件中输入一个年月日和其需要添加或减去的一个日期或天数2.在源文件正利用友元函数调用头文件,完成加减3.先进行简单程序的设计4.进行输入数据的甄别5.设计一个新的日期的甄别对错,在原有的日期上进行加减6.进行计算的到一个新的日期 2.2系统的主要功能逻辑过程和实现算法1.日期的比较,先比较两日期的年倘若比较不出来再比较月最后比较日。2.日期和日期的增减,首先将两个日期纯粹的做数字的加减,出现负数或者大于不该有的日期3再用日期循环将其数字计算加到月份上,倘若月份不符常理再用月份循环,将其增减到年上面。4.将月份变成英文,通过switch语句进行简单的变换。5.设计星期功能。6.输入的甄别功能,通过简单的if语句进行限定,输出error。2.3错误处理1.错误:输入的甄别功能,考虑到年的上下限,非法数据的报错。解决方法:参照惯例和常识设定年月日的限制,对于输入的数据一一核对,是否符合常例。2.错误:日期减月份,当前月份较小需要将年份减至上一年甚至上两年。解决方法:通过老师的指导,自己的多次演算,结合以前的学习内容进行演算和验算。3.错误:闰年的计算和调用。 解决方法:自己通过参考网上的资料和书本已经学过没学扎实的知识进行了较为实际的解决。4.错误:日期减(加)日期,比日期加减月份还要难设定。既要考虑到月份的变更还要考虑到年的变化。 解决方法:由浅入深,天下大事必做于细,通过日期对于月份的加减一步一步推出日期对于日期的加减的结果。5.错误:没有完成将其转化为英文的格式,没有解决。3.概要设计日期类主界面选择使用种类选择使用种类日期对比日期甄别日期相加减某天是星期几退出退退出系统出系统月份相加减英文表示4.程序代码#includeTime.hvoid menu();void jia();void jian();int main()int xuanze;menu();cin xuanze;while (xuanze!=0)switch (xuanze)case 1:jia();break;case 2:jian();break;default:cout 输入了无效的指令 xuanze;int i;cin i;return 0;void menu()cout =日期计算= endl;cout 1-日期相加 endl;cout 2-日期相减 endl;cout 0-退出程序 endl;cout endl请按标号选择需要实现的功能;void jia()Time time1, time2,time3;int nian, yue, ri;cout nian;cout yue;cout ri;time1.SetTime(nian, yue, ri);nian = 0;yue = 0;ri = 0;cout nian;cout yue;cout ri;time2.SetTime(nian, yue, ri);time3 = time1 + time2;cout 日期相加后得:;time3.GetTime();void jian()Time time1, time2, time3;int nian, yue, ri;cout nian;cout yue;cout ri;time1.SetTime(nian, yue, ri);nian = 0;yue = 0;ri = 0;cout nian;cout yue;cout ri;time2.SetTime(nian, yue, ri);time3 = time1 - time2;cout 日期相减后得:;time3.GetTime();#includeusing namespace std;class Timepublic:Time();void GetTime();/获取时间void SetTime(int nian,int yue,int ri);/设置时间int year;int month;int day;void Time:GetTime()char temp10;switch(month)case 1:strcpy(temp,Jan);break;case 2:strcpy(temp,Feb);break;case 3:strcpy(temp,Mar);break;case 4:strcpy(temp,Apr);break;case 5:strcpy(temp,May);break;case 6:strcpy(temp,Jun);break;case 7:strcpy(temp,Jul);break;case 8:strcpy(temp,Aug);break;case 9:strcpy(temp,Sep);break;case 10:strcpy(temp,Oct);break;case 11:strcpy(temp,Nov);break;case 12:strcpy(temp,Dec);break;cout year;cout .;cout temp .;/cout month;/cout 月;cout day;/cout 日;cout endl;cout year 年month月day日endl;void Time:SetTime(int nian, int yue, int ri)int runnian;if (nian % 4 = 0 & nian % 100 != 0)runnian = 1;elserunnian = 0;if (nian 0)cout 输入的年份可能不合法 endl;if (yue12)cout 输入的月份可能不合法 endl;if (ri 31)cout 输入的日子可能不合法 29 & runnian = 1)cout 输入的日子可能不合法 28 & runnian = 0)cout 输入的日子可能不合法 12)jishu = time3.month / 12;time3.month = time3.month % 12;time3.year = time3.year + jishu;*/return time3;Time operator-(Time time1, Time time2)Time time3;time3.year = time1.year - time2.year;time3.month = time1.month - time2.month;time3.day = time1.day - time2.day;return time3;5.程序运行结果5.1页面设计5.2日期相加5.3日期相减 5.4退出程序6.课程设计心得体会通过本次实验,我基本完成了“时间类”设计的所有要求,基于面向对象的要求,整个项目中我通过类的设计、封装等实现C+中的面向对象设计理念。整个过程中注重类的结构性,继承性与多态性,例如在头文件中诠释所有的类的声明,在源文件中书写类的定义,做到面向对象的规范性与实用性。基于设计要求,做到了全部功能。测试过程中,我输入了多组数据并记录。记录了所有的出错数据,分析错误的原因并纠正。反复测试,使程序更加完善。经过几番测试后终于得到现在的比较理想的程序,完成了项目设计的基本要求。但是在设计中也出现了很多问题:首先,在程序结构和类的继承和多态上,我并没有做到标准的继承与派生,充分看出我们在平时的学习中还存在诸多的不足。在程序设计时,对面向对象程序设计的只是掌握不够,深深感受到“书到用时方恨少”,我掌握的知识很难完全解决在设计中遇到的问题。其次,通过设计,我也发现我的自学主动性太差,对类的封装与独立性的相关的知识了解很少,以至在工作中解决问题的方法单一,知识面狭窄。虽然如此,但是我们通过本次设计,从中学到了很多东西:学会了许多时间相关问题的解决办法,也看到了自己与真正编程技术者之间的差距。更有理由和动力去走今后的学习道路。在遇到问题时,大家相互讨论,一同寻找解决的办法,这也让我
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 南京公路笔试题目及答案
- 邯郸初中地理试卷及答案
- 2025年语文素养进阶试卷及答案
- 沟通与写作考试题及答案
- 2025年高考物理动态分析问题专项试题
- 2025年教师入编数学试题及答案
- 公交服务知识考试题及答案
- 工地焊钢筋考试题及答案
- 2025贵州财经职业学院第十三届贵州人才博览会引才3人考前自测高频考点模拟试题及答案详解(名师系列)
- 员工培训计划制定与执行模板能力提升与职业发展版
- 2024年河南郑州高新区招聘社区工作人员笔试真题
- 财务部门增值税发票管理操作手册
- 完整版消防应急预案范本三篇
- 算力经济发展研究报告(2025年)
- 互联网医院医疗健康服务模式创新与推广方案
- 出口贸易安全培训制度课件
- 加强送餐安全培训课件
- GB/T 18268.21-2025测量、控制和实验室用的电设备电磁兼容性要求第21部分:特殊要求无电磁兼容防护场合用敏感性试验和测量设备的试验配置、工作条件和性能判据
- 学堂在线 军事理论 章节测试答案
- 六年级科学上册各单元知识点梳理归纳
- OTN技术与应用(阿法迪)
评论
0/150
提交评论