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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

日历管理器.docx

1、日历管理器C+程序设计课程设计报告( 2011 - 2012 年度第 2 学期)日历管理器的开发的设计目 录1 概 述 11.1 课程设计目的 11.2 课程设计内容 12 系统需求分析 12.1 系统目标 12.2 主体功能 12.3 开发环境 13 系统概要设计 13.1 系统的功能模块划分 13.2 系统流程图 24系统详细设计 24.1年份跳转模块设计 25 测试 55.1 测试方案 56 小结 7参考文献 8附 录 9附录1 日历管理器源程序清单 9日历管理软件的设计1 概 述 1.1 课程设计目的1、 巩固并加深对C+语言程序设计知识的理解;2、 培养学生面向对象的程序设计思想,使

2、学生认识面向过程和面向对象两种设计方法的区别;3、 进一步掌握和应用VC+6.0集成开发环境;4、 提高运用C+语言解决实际问题的能力;5、 初步掌握开发小型实用软件的基本方法,能独立设计,实现基本的MIS系统6、 了解高级程序设计语言的结构,掌握基本的分析问题和利用计算机求解问题的能力;7、掌握调试程序的一般方法1.2 课程设计内容课程名称:日历管理器的开发说明:显示日历要求:1) 根据用户输入的年份,自动产生每个月的日期列表;2)自定义显示日历的形式。2.系统需求分析2.1 系统目标建立电子日历,可以自主生成新的日历,方便用户。2.2 主体功能1.根据用户输入的年份,自动产生每个月的日期列

3、表;2.自定义显示日历的形式 2.3开发环境开发工具 VisualC+6.0设计工具 Office 20033 系统概要设计3.1 系统的功能模块划分日历管理器系统设计的主要模块分为:年份跳转模块设计年份跳转模块:根据用户自己输入的年份,该模块为用户显示该年的日历!3.2 系统流程图 4系统详细设计4.1年份跳转模块设计设计思路:使用MFC编辑主界面、基本对话框、组框(可调整1-10000这间的年份)、静态文本框,默认年份为系统时间,默认一个已知的日期,并已知该日的星期,通过计算,得出所求目的年份所有日期的星期。主要成员变量及其意义: Char str73 ;/从一到日的字符 int a,b,

4、c,d,e,f,/a设置年份差周期为4的天数,b设置周期为100的年份差的天数,c为周期为400的年份差的天数,d为已知年份一月一号的星期,e为所求年份一月一日到所求月份一月一日的天数差,f为所求年份到已知年份之间的天数差在C1111Dlg类的构造函数中添加以下代码: strcpy(str0,一); strcpy(str1,二); strcpy(str2,三); strcpy(str3,四); strcpy(str4,五); strcpy(str5,六); strcpy(str6,日); a=4*365+1;a=a%7; b=a*25-1;b=b%7; c=b*4+1;c=c%7; d=0;在

5、CMY1111Dlg类的初始化函数OnInitDialog中添加以下代码: CComboBox *pCboxyear=(CComboBox *)GetDlgItem(IDC_COMBO1);CString str;pCboxyear-InsertString(0,请输入年份); for(int i=1;iInsertString(i,str);添加消息处理函数为组合框添加WM_CLOSEUP消息处理函数: UpdateData(); if(m_nYear!=0) RedrawWindow(); f=(m_nYear-1)/400*c+(m_nYear-1)%400)/100*b+(m_nYea

6、r-1)%400)%100)/4*a+(m_nYear-1)%400)%100)%4*365;CStatic*pDraw=(CStatic*)GetDlgItem(IDC_STATIC); CDC*pDC=pDraw-GetDC(); pDC-SetBkMode(TRANSPARENT); for(int i=0;iMoveTo(0,i*118+10);pDC-LineTo(708,i*118+10);for(int j=0;jMoveTo(j*118,10);pDC-LineTo(j*118,246); for( i=0;i7;i=i+) for( j=0;jTextOut(j%6*118+

7、16*i+5,j/6*118+12,stri); for(j=0;j12;j+) for(i=0;i1) e=e+1; CString str; str.Format(%d,i+1); if(j=1&!(m_nYear%100!=0&m_nYear%400=0|m_nYear%400=0)&i27|j=1&(m_nYear%100!=0&m_nYear%4000=0|m_nYear%400=0)&i28|(j=3|j=5|j=8|j=10)&i29) continue; pDC-TextOut(f+d+e+i)%7*16+j%6*118+5,j/6*118+(i+(f+d+e)%7)/7+1)

8、*16+15,str); 日历上方有菜单栏,提供一些按钮,实际效果如下所示:5 测试5.1 测试方案根据用户输入年份,是否能正确显示出跳转年份的日历表; 5.2 测试结果 输入年份1:输入年份2000:输入年份:2012经检验输出无误差6 小结课程设计小结:通过近俩周的课程设计,我更加深入了解了vc+软件和c+这门课程,修改了范围之外的数值产生日历的BUG,新了解很多函数fomat textout insterstring等函数和很多消息处理函数,了解了组框,静态文本框的使用方法并初步掌握了如何对其编写、调试与运行,把书本上学习到的和老师、同学v的指导运用到实际中去,很好的锻炼自己的学习能力!

9、由于是第一次在做课程设计,自己对C+了解的不够透彻,再加上时间紧,开始时的思路不是很清晰,我遇到了很多问题!首先是源程序代码的错误导致程序无法运行,后来仔细检查才发现都是输入时的错误,而且有些是代码混乱,还有些标点的错误使用和字母大小写的问题,这让我得到了一个教训,检查代码浪费了我太多的时间!但让我对此有了更加系统的了解。 课程设计过程有些坎坷,让我意识到必须要抓紧自己的专业课了!并让我意识到以后的学习要加强动手能力,多实践,这样才能从各个方面来提高自己的水平。最后,感谢帮助我完成课程设计的的老师和同学! 参考文献1谭浩强. C程序设计(第三版) . 北京:清华大学出版社, 2005 2谭浩强

10、. C程序设计题解与上机指导(第三版) . 北京:清华大学出版社, 2005附 录附录1 源程序清单附录1.1日历管理器模块源程序控件类型控件ID控件名称成员变量非默认属性组合框IDC_COMBO1int m_nYear下拉列表组框IDC_STATIC日历#include stdafx.h#include 1111.h#include 1111Dlg.h#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif class CAboutDlg : public CDialogpu

11、blic: CAboutDlg();enum IDD = IDD_ABOUTBOX ;protected: virtual void DoDataExchange(CDataExchange* pDX);protected:DECLARE_MESSAGE_MAP();CAboutDlg:CAboutDlg() : CDialog(CAboutDlg:IDD)void CAboutDlg:DoDataExchange(CDataExchange* pDX) CDialog:DoDataExchange(pDX);BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) /AFX

12、_MSG_MAP(CAboutDlg) / No message handlers /AFX_MSG_MAPEND_MESSAGE_MAP()CMy1111Dlg:CMy1111Dlg(CWnd* pParent /*=NULL*/) : CDialog(CMy1111Dlg:IDD, pParent) strcpy(str0,一); strcpy(str1,二); strcpy(str2,三); strcpy(str3,四); strcpy(str4,五); strcpy(str5,六); strcpy(str6,日); a=4*365+1;a=a%7; b=a*25-1;b=b%7; c=

13、b*4+1;c=c%7; d=0; m_nYear = -1;m_hIcon = AfxGetApp()-LoadIcon(IDR_MAINFRAME);void CMy1111Dlg:DoDataExchange(CDataExchange* pDX) CDialog:DoDataExchange(pDX); DDX_CBIndex(pDX, IDC_COMBO1, m_nYear);BEGIN_MESSAGE_MAP(CMy1111Dlg, CDialog) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_CBN_CLOS

14、EUP(IDC_COMBO1, OnCloseupCombo1) END_MESSAGE_MAP()BOOL CMy1111Dlg:OnInitDialog() CDialog:OnInitDialog(); CComboBox *pCboxyear=(CComboBox *)GetDlgItem(IDC_COMBO1);CString str;pCboxyear-InsertString(0,请输入年份); for(int i=1;iInsertString(i,str);ASSERT(IDM_ABOUTBOX & 0xFFF0) = IDM_ABOUTBOX); ASSERT(IDM_AB

15、OUTBOX AppendMenu(MF_SEPARATOR); pSysMenu-AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); SetIcon(m_hIcon, TRUE); / Set big icon SetIcon(m_hIcon, FALSE); / Set small icon return TRUE;void CMy1111Dlg:OnSysCommand(UINT nID, LPARAM lParam) if (nID & 0xFFF0) = IDM_ABOUTBOX) CAboutDlg dlgAbout; dlgAbo

16、ut.DoModal(); else CDialog:OnSysCommand(nID, lParam); void CMy1111Dlg:OnPaint() if (IsIconic() CPaintDC dc(this); / device context for painting SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); / Center icon in client rectangle int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSys

17、temMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; / Draw the icon dc.DrawIcon(x, y, m_hIcon); else CDialog:OnPaint(); HCURSOR CMy1111Dlg:OnQueryDragIcon() return (HCURSOR) m_hIcon;void CMy1111Dlg:OnCloseupCombo

18、1() / TODO: Add your control notification handler code here UpdateData(); if(m_nYear!=0) RedrawWindow(); f=(m_nYear-1)/400*c+(m_nYear-1)%400)/100*b+(m_nYear-1)%400)%100)/4*a+(m_nYear-1)%400)%100)%4*365;CStatic*pDraw=(CStatic*)GetDlgItem(IDC_STATIC); CDC*pDC=pDraw-GetDC(); pDC-SetBkMode(TRANSPARENT);

19、 for(int i=0;iMoveTo(0,i*118+10);pDC-LineTo(708,i*118+10);for(int j=0;jMoveTo(j*118,10);pDC-LineTo(j*118,246); for( i=0;i7;i=i+) for( j=0;jTextOut(j%6*118+16*i+5,j/6*118+12,stri); for(j=0;j12;j+) for(i=0;i1) e=e+1; CString str; str.Format(%d,i+1); if(j=1&!(m_nYear%100!=0&m_nYear%400=0|m_nYear%400=0)&i27|j=1&(m_nYear%100!=0&m_nYear%4000=0|m_nYear%400=0)&i28|(j=3|j=5|j=8|j=10)&i29) continue; pDC-TextOut(f+d+e+i)%7*16+j%6*118+5,j/6*118+(i+(f+d+e)%7)/7+1)*16+15,str);

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

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