C++课程设计范例.docx_第1页
C++课程设计范例.docx_第2页
C++课程设计范例.docx_第3页
C++课程设计范例.docx_第4页
C++课程设计范例.docx_第5页
免费预览已结束,剩余14页可下载查看

下载本文档

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

文档简介

C+面向对象程序设计课程设计题 目 小型万年历 学 部 计算机科学与技术 班 级 计 软 1001 班 指 导 教 师 李 军 姓 名 杨秋浩 学 号 104307021512890 2010年12 月24日目 录第1章前 言31.1简介说明31.1.1研究背景31.1.2技术可行性分析31.2设计目的3第2章系统功能分析42.1系统总体功能分析42.2系统具体功能分析52.2.1主函数功能分析52.2.2万年历功能模块分析52.2.3记事本功能模块分析62.2.4娱乐功能模块分析62.3程序核心代码62.3.1万年历功能模块核心代码62.3.2记事本功能模块核心代码9第3章系统测试123.1程序流程图123.1.1万年历功能流程图123.1.2娱乐功能流程图133.1.3娱乐功能流程图143.2程序运行测试153.2.1程序主界面图解153.2.2万年历功能图解153.2.3记事本功能图解16第4章总结17课程设计任务分配表姓名主要工作组长杨秋浩总安排和汇总及记事本、万年历功能模块组员刘璇Word排版以及打印胡凯协助组长修复程序漏洞和程序流程图绘制谌叶峰节日和星座功能模块所用到的C+面向对象知识自定义类:程序中所用到的主要自定义类:class Date/万年历功能所需类public:int year,month,day;/定义三个变量 年、月、日bool PRPD(int year);/判断是否为闰年的成员函数int MonthDay(int year,int month);/判断每月第一天星期的成员函数int Weekday(int year,int month,int day);/判断每一天的星期的成员函数void PrintMonth(int year, int month);/按格式输出每月信息的成员数数void select_year(int year);/按年查询分支函数void select_month(int year,int month);/按月查询分支函数void select_days(int year,int month,int day);/按日查询分支函数Date(int year)/重载的构造函数一Date(int year,int month)/重载的构造函数二Date(int year,int month,int day);/重载的构造函数三class Thing : public Date/记事本功能所需类 派生于 万年历功能所需类public:int years50;int months50; int days50;/定义长度为50的年、月、日数组char thing50200;/数组存储200字符以下的字符信息Thing()/重载的构造函数三void Jishiben();/重载的构造函数三;程序中所用到的专业知识:自定义类操作、指针操作第1章 前 言1.1 简介说明1.1.1 研究背景学习了将近一个学期的C+面向对象程序设计,对于C+面向对象程序设计的基本知识已经大致了解,现在我们所要做的就是将所有知识汇总性地应用,此时课程设计成了最有效的方法。因此我们小组满怀信心地开始了对于C+面向对象程序设计课程设计的制作。1.1.2 技术可行性分析我们所制作的C+面向对象课程设计是一个简单的穿插着记事本以及其他小功能的万年历,经过分析所预期的功能,用一些简单的C+面向对象程序设计知识就完全能够实现。考虑到C+面向对象课程设计课程已经基本学完,但知识点太多,不能所有的都应用到。所以我们小组决定对对象成员调用一块进行广泛使用,以加强对成员调用的理解。而且简单易行。1.2 设计目的这次C+面向对象程序设计课程设计是以熟练掌握C+面向对象基础知识为主要目的而开展的,可以提高我们对基础知识的理解,而所应用的模块没有多少实用价值。另一方面,通过课程设计我们可以加强班上同学的感情,加强团队互助精神。一个学期的学习,我们不知道我们到底对C+面向对象课程设计了解多少,通过课程设计的制作也是对我们平时学习的一种检验,可以让我们清楚地了解到我们所达到的层次。通过这次课程设计,我们会实现万年历的功能,这就需要比较强的算法能力,以及对于整体的掌控能力,而记事本功能则需要更多的是对结构的条理清晰,这就需要对代码结构的掌控十分熟练,这些都是一个程序员所必备的能力。第2章 系统功能分析2.1 系统总体功能分析我们小组设计的简单万年历并不是很强大,仅仅实现了公历的按年查找、按月查找、按日查找,以及周次和节日的显示。在此基础上,我们小组添加了记事和娱乐功能,对于记事功能,可分为输入记事、输出记事和修改记事三个功能。由于没有较好的思路,同时考虑到时间有些紧迫,在娱乐功能中,我们仅仅设置了星座介绍的功能。进入万年历程序后,首先会有选择选项用来判定进入各个模块,进入万年历模块则建立Date类的对象,在对象内部通过成员函数实现万年历的查询功能。当进入记事本功能后会建立Thing类的对象,Thing类公有继承于Date类,可以读取Date类的公有信息。输入日期并输入记事后会将信息存储在Thing数据成员中,此时即可实现查询和修改功能。在记事本功能中,我们调用了Date类的部分成员函数,用于判断记事日期的周次,同时在Thing类本身使用了节日库,通过判断语句判断,若为节日则在提示信息中输出。最后的娱乐功能相对来说十分简单,仅仅是通过控制输入字符选择星座,从而调用函数输出所存储在代码中的信息。总体来说,我们的代码有三个类,真正有意义的功能为两个,万年历功能可以查询第一年以上的所有年份的日期、周次以及节日。可以通过年份查找查找出某一年十二个月的所有日期,可以通过按月查询查找输入年月查找指定月的所有日期,也可以通过按日查找指定年月日查找出这一天的周次。还有一个记事本功能是通过输入具体日期实现记事的输入、输出、和修改。在此功能上能判断该记事日期的周次和节日并给出显示。注:因为学习进度的问题,没有用到文件和数据库,对于一些信息的存储只是临时的。2.2 系统具体功能分析2.2.1 主函数功能分析主函数:main()程序运行时,会直接从主函数开始进入一个do while(1); 的真循环中循环主程序界面,程序界面由简单的字符构成,要求用户通过字符操作控制switch语句执行功能。当输入1时构造Date类对象(即通过构造函数打开万年历功能),当输入2时构造Thing类对象(打开记事本功能).当输入3时构造Yule类的对象(打开娱乐功能)。当输入0时通过break跳出真循环结束应用程序。2.2.2 万年历功能模块分析万年历类:Date成员函数:构造函数:Date(int year)Date(int year,int month)Date(int year,int month,int day)计算万年历信息的其他成员函数:程序运行进入万年历模块后会有一个do while(1); 的真循环,通过该循环控制日历的操作。当键入1时程序会通过Date(int year)进入按年查询功能。当键入2时程序会通过Date(int year,int month)进入按月查询功能。当键入3时程序会通过Date(int year,int month,int day)进入按日查询功能。在这三个功能中分别使用计算万年历信息的其他函数实现计算以及输出万年历信息。若输入0则跳出返回主目录区。2.2.3 记事本功能模块分析记事类:Thing成员函数:void Jishiben();执行到此模块的时候会有三个小模块,通过do while(1);真循环控制。当键入1时程序会通过进入记事输入功能,在此通过输入日期在该日期下记录事件。当键入2时程序会进入记事查询功能,在此通过循环日期输出已经存储的日期下的记事。当键入3时程序会进入记事修改功能,此功能下会通过输入日期来修改,若没有记录会给出提示,若有记录则会给出是否确定修改的提示,若选择是则可更改,选择否或则更新完会返回上一级菜单。若键入0则会返回进入此模块前的操作。2.2.4 娱乐功能模块分析娱乐类:Yule由于没有思路的原因此模块的设置比较简单,仅仅实现了函数调用以及输入输出星座信息的功能。通过switch语句判定变量是否为A、B、C、D、E、F、G、H、I、J、K、L、0,若在此之内就输出各星座信息或者返回上一级菜单,若不在此之内,就提示输入错误从新输入。2.3 程序核心代码2.3.1 万年历功能模块核心代码bool Date:PRPD(int year)if (year % 400 = 0) | (year % 4 = 0) & (year % 100 != 0) return 1; else return 0; int Date:MonthDay(int year,int month)switch (month)case 2: if (PRPD(year)=1) return 29; else return 28; case 4: return 30;case 6:return 30;case 9:return 30;case 11:return 30;default:return 31;int Date:Weekday(int year,int month,int day)int number=0;for(int i=1;iyear;i+)if(PRPD(i)=1)number=number+366;elsenumber=number+365;for(int j=1;jmonth;j+)number=number+MonthDay(year,j);return (number+day)%7;void Date:PrintMonth(int year, int month)char *MonthName(int month);std:coutMonthName(month)std:endl;std:cout周日 周一 周二 周三 周四 周五 周六std:endl;int weekday=Weekday(year,month,0);if (weekday!=6) for (int k = 0; k = weekday; k+)std:cout t;for (int i = 1; i = MonthDay(year,month); i+)if (weekday != 6 | i != 1) if (weekday + i) % 7 = 0) std:coutstd:endl;std:coutit;std:coutstd:endl; 2.3.2 记事本功能模块核心代码system(cls);std:cout请输入日期记录!std:endl;std:coutyear;yearsdate=year;std:coutmonth;monthsdate=month;std:coutday;daysdate=day;system(cls);std:cout这一天是;PD(month,day);select_days(year,month,day);std:cout请输入要记录的内容:thingdate;date+;system(cls);std:cout已记录成功,按任意键返回!std:endl;getch();system(cls);continue; system(cls);if(date=0)std:cout没有记录!std:endl;std:cout按任意键返回!std:endl;getch();system(cls);continue;std:cout记事如下:std:endl;for(int i=0;idate;i+)std:coutyearsi年;std:coutmonthsi月;std:coutdaysi日 ;PD(monthsi,daysi);std:cout这一天是;select_days(yearsi,monthsi,daysi);std:cout记事为:std:endl;std:coutthingistd:endl;std:coutnn按任意键返回!std:endl;getch();system(cls);continue;system(cls);if(date=0)std:cout从未记录过!std:endl;std:cout按任意键返回!std:endl;getch();system(cls);continue;std:cout记事修改std:endl;std:coutyear;std:coutmonth;std:coutday;int Chishu;Chishu=0;for(int i=0;i=1)std:cout这是;std:coutyearsi年;std:coutmonthsi月;std:coutdaysi日 ;PD(monthsi,daysi);std:cout的第Chishu+1;std:cout条记录std:endl;elsestd:coutyearsi年;std:coutmonthsi月;std:coutdaysi日 ;PD(monthsi,daysi);std:cout这一天是;select_days(yearsi,monthsi,daysi);std:cout记录如下:std:endl;std:coutthingistd:endl;Chishu+;std:cout确认修改?(Y/N)std:endl;char chs;chs=getch();if(chs=Y | chs=y)std:cout请重新输入事件!thingi;elsecontinue;else if(yearsi!=year | monthsi!=month | daysi!=day)std:cout没找到日期下的记录!std:endl;system(cls);continue;第3章 系统测试3.1 程序流程图3.1.1 万年历功能流程图图 3- 1万年历功能记事本功能结束程序结束功能按年查找按月查找按日查找结 束输入信息输出查询结果娱乐功能程序运行3.1.2 娱乐功能流程图图 3- 2程序运行万年历功能娱乐功能记事本功能结束程序结束功能星座介绍输入信息输出信息结束3.1.3 娱乐功能流程图图 3- 3万年历功能记事本功能结束程序输入记事输出记事修改记事输入信息时日日期是否存在输 出是否有记录结 束NY是否存在输 出NYY是否修改输 入N程序运行3.2 程序运行测试3.2.1 程序主界面图解当用户运行程序运行时将会运行如下界面:图 3- 43.2.2 万年历功能图解万年历主目录:图 3- 5按键选择查询(以按月查询为例):图 3- 63.2.3 记事本功能图解记事本主窗口:图 3- 4输入记事功能:图 3- 5输出记事功能:图 3- 6修改记事功能:图 3- 7第4章 总结这次课程设计的制作是通过学习到C+面向对象程序设计后通过组员们一起齐心努力共同完成的,课程设计工程中遇到了许许多多的困难,对于有些实在解决不了的干脆换了一种思路从新写,因此对于代码的

温馨提示

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

评论

0/150

提交评论