日历记事本 软件设计.docx

上传人:b****7 文档编号:10900442 上传时间:2023-02-23 格式:DOCX 页数:42 大小:1.08MB
下载 相关 举报
日历记事本 软件设计.docx_第1页
第1页 / 共42页
日历记事本 软件设计.docx_第2页
第2页 / 共42页
日历记事本 软件设计.docx_第3页
第3页 / 共42页
日历记事本 软件设计.docx_第4页
第4页 / 共42页
日历记事本 软件设计.docx_第5页
第5页 / 共42页
点击查看更多>>
下载资源
资源描述

日历记事本 软件设计.docx

《日历记事本 软件设计.docx》由会员分享,可在线阅读,更多相关《日历记事本 软件设计.docx(42页珍藏版)》请在冰豆网上搜索。

日历记事本 软件设计.docx

日历记事本软件设计

 

课程设计报告

(2013--2014年度第二学期)

 

名称:

软件设计与实践

题目:

日历记事本设计

院系:

计算机系

班级:

计科1103

学号:

************

*******

指导教师:

软件设计与实践教学组

设计周数:

2

成绩:

日期:

2014年7月11日

一、课程设计的目的与要求

1.目的:

通过综合性实验的设计,使学生综合训练自己的需求分析、系统设计、编程、测试等各种能力,积累软件开发的经验,提高学生进行软件开发所需具备的专业素质以及团队协作能力。

2.要求:

完成一个GUI界面的日历记事本的分析、设计、编程、测试工作。

二、设计正文

1.需求规格说明书

编写的日历记事本,拥有了现实日历很难很快查询实现的功能。

现在电脑使用用户越来越多,就不需要购买现实的日历,而通过这个小小的程序就可以帮助人们知道现在和未来的日期,还可以查询你想要的日期。

能够给用户带来更加简单和实用的感觉。

在查询日期时,可以对日期进行日志添加、删除和修改。

附带的记事本可以记下自己私有的事情。

方便性:

是一种虚拟的日历而不是现实的,查询日期的速度快,查询准确。

使用户能更快的知道自己想要的日期。

并对日期进行日志操作。

安全性:

尤于本软件属于公开的建议小工具软件,所以主界面并不需要设计密码验证功能,直截了当的界面希望能够满足用户的需求。

但当你记录你的私有事情时,可以有用简单的访问控制。

需要匹配秘密。

实用性:

不需要用户去购买其他现实日历,只需拥有这个小小的程序。

可以记录所需要记录的事情。

2.设计说明书

2.1日历记事本,就是用MFC做一个小小的程序,通过这个程序可以看到当前的日期,单击界面上相应的按钮时间和日期都会相应的变动,当然这种变动是准确的,这就是一个简单的日历查询,可以针对查询的日期进行日志的简单操作。

我们做的这个程序设计,我觉得主要是主框架界面的设计,很多代码都是用来设计界面的,设计界面时要考虑各种小按钮的设计,一个大范围窗体的总体设计,面板的设计等等。

逐渐把信息以及事件相应添加到我们要设计的界面里就可以了。

在功能设计方面设计阶段就比较简单了,只要在相应的按钮下,设计事件监听,以及设计相应的消息响应方法。

总之,做这个程序设计主要包括界面设计和功能设计两个方面。

2.2日历记事本的功能设计

1、包含的功能有:

年、月、日的显示和快速的查询。

2、点击界面按钮,查询日期和对应的年、月、日都会显示在界面框内。

3、点击相应的菜单可以对查询的日期进日志的添加,修改和保存。

4、程序设计了一个独立的记事本窗口,供用户记录自己想要记录的秘密事。

5、程序可以能自动根据你单击的按钮判断出相对应的时间和日期。

6、帮助部分:

用户手册和制作人信息。

三、课程设计

3.1总体设计

1>功能图

2>流程图

3.2E-R图

3.3数据库部分设计

UserMessage表

字段名

字段含义

数据类型

是否为空

是否主键

User_ID

ID

int

User_Name

账号

varchar(20)

User_PassWord

密码

varchar(20)

DailyMessage表

字段名

字段含义

数据类型

是否为空

是否主键

Daily_ID

日志ID

int

Date_ID

日期ID

int

User_ID

用户ID

int

Daily_Daily

日志

Text

Daily_Time

时间

varchar(10)

DateMessage表

字段名

字段含义

数据类型

是否为空

是否主键

Date_ID

日期ID

int

Date_Date

日期

Date

四、程序实现

界面:

选择日期显示普通日志:

打开私人日志:

增加日志:

删除界面:

修改界面:

退出部分:

代码实现:

主体部分乃CCalendarDlg:

//CalendarDlg.cpp:

实现文件

//

#include"stdafx.h"

#include"Calendar.h"

#include"CalendarDlg.h"

#include"afxdialogex.h"

#include"UserLogin.h"

#include"DailyMessage.h"

#include"AddMessage.h"

#include"ZhuCe.h"

#include"OutChioose.h"

#ifdef_DEBUG

#definenewDEBUG_NEW

#endif

structRemindStruct

{

CStringRemindTime;

inthour;

intminute;

}*RemindData;

//用于应用程序“关于”菜单项的CAboutDlg对话框

classCAboutDlg:

publicCDialogEx

{

public:

CAboutDlg();

//对话框数据

enum{IDD=IDD_ABOUTBOX};

protected:

virtualvoidDoDataExchange(CDataExchange*pDX);//DDX/DDV支持

//实现

protected:

DECLARE_MESSAGE_MAP()

public:

afx_msgvoidOnBnClickedOk();

};

CAboutDlg:

:

CAboutDlg():

CDialogEx(CAboutDlg:

:

IDD)

{

}

voidCAboutDlg:

:

DoDataExchange(CDataExchange*pDX)

{

CDialogEx:

:

DoDataExchange(pDX);

}

BEGIN_MESSAGE_MAP(CAboutDlg,CDialogEx)

ON_BN_CLICKED(IDOK,&CAboutDlg:

:

OnBnClickedOk)

END_MESSAGE_MAP()

//CCalendarDlg对话框

CCalendarDlg:

:

CCalendarDlg(CWnd*pParent/*=NULL*/)

:

CDialogEx(CCalendarDlg:

:

IDD,pParent)

m_UserID(0)

{

m_hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME);

m_Message=_T("");

}

voidCCalendarDlg:

:

DoDataExchange(CDataExchange*pDX)

{

CDialogEx:

:

DoDataExchange(pDX);

DDX_Control(pDX,IDC_MONTHCALENDAR,m_CalendarCtrl);

DDX_Text(pDX,IDC_MESSAGE,m_Message);

DDX_Control(pDX,IDC_MESSAGE,m_EditCtrl);

}

BEGIN_MESSAGE_MAP(CCalendarDlg,CDialogEx)

ON_WM_SYSCOMMAND()

ON_WM_PAINT()

ON_WM_QUERYDRAGICON()

ON_WM_TIMER()

ON_NOTIFY(MCN_SELECT,IDC_MONTHCALENDAR,&CCalendarDlg:

:

OnSelectMonthcalendar)

ON_BN_CLICKED(IDC_RECEIVE,&CCalendarDlg:

:

OnBnClickedReceive)

ON_BN_CLICKED(IDC_PRIVATEMES,&CCalendarDlg:

:

OnBnClickedPrivatemes)

ON_BN_CLICKED(IDC_DELETEMES,&CCalendarDlg:

:

OnBnClickedDeletemes)

ON_BN_CLICKED(IDC_CHANGEMES,&CCalendarDlg:

:

OnBnClickedChangemes)

ON_BN_CLICKED(IDC_ADDMES,&CCalendarDlg:

:

OnBnClickedAddmes)

ON_BN_CLICKED(IDC_OUTPRIVATEDAILY,&CCalendarDlg:

:

OnBnClickedOutprivatedaily)

ON_COMMAND(ID_32773,&CCalendarDlg:

:

OnShowDaily)

ON_COMMAND(ID_32774,&CCalendarDlg:

:

OnAddDaily)

ON_COMMAND(ID_32775,&CCalendarDlg:

:

OnChangeDaily)

ON_COMMAND(ID_32776,&CCalendarDlg:

:

OnDeleteDaily)

ON_COMMAND(ID_32778,&CCalendarDlg:

:

On32778)

ON_COMMAND(ID_32779,&CCalendarDlg:

:

On32779)

ON_COMMAND(ID_32781,&CCalendarDlg:

:

OnZhuCe)

ON_NOTIFY(MCN_SELCHANGE,IDC_MONTHCALENDAR,&CCalendarDlg:

:

OnMcnSelchangeMonthcalendar)

ON_WM_CLOSE()

ON_MESSAGE(WM_SHOWTASK,onShowTask)

ON_COMMAND(ID_32782,&CCalendarDlg:

:

OnAbout)

ON_STN_CLICKED(IDC_PICTURE,&CCalendarDlg:

:

OnStnClickedPicture)

END_MESSAGE_MAP()

//CCalendarDlg消息处理程序

BOOLCCalendarDlg:

:

OnInitDialog()

{

CDialogEx:

:

OnInitDialog();

//将“关于...”菜单项添加到系统菜单中。

//IDM_ABOUTBOX必须在系统命令范围内。

ASSERT((IDM_ABOUTBOX&0xFFF0)==IDM_ABOUTBOX);

ASSERT(IDM_ABOUTBOX<0xF000);

CMenu*pSysMenu=GetSystemMenu(FALSE);

if(pSysMenu!

=NULL)

{

BOOLbNameValid;

CStringstrAboutMenu;

bNameValid=strAboutMenu.LoadString(IDS_ABOUTBOX);

ASSERT(bNameValid);

if(!

strAboutMenu.IsEmpty())

{

pSysMenu->AppendMenu(MF_SEPARATOR);

pSysMenu->AppendMenu(MF_STRING,IDM_ABOUTBOX,strAboutMenu);

}

}

//设置此对话框的图标。

当应用程序主窗口不是对话框时,框架将自动

//执行此操作

SetIcon(m_hIcon,TRUE);//设置大图标

SetIcon(m_hIcon,FALSE);//设置小图标

//TODO:

在此添加额外的初始化代码

//初始化提醒功能

m_RemindNum=0;

m_RemindFlg=false;

m_EditCtrl.EnableWindow(false);

GetDlgItem(IDC_OUTPRIVATEDAILY)->EnableWindow(false);

//初始化用户若无则m_UserID为0

m_UserID=1;

GetDlgItem(IDC_USER)->SetWindowText("普通日志");

//初试化窗口,使其收缩

if(RectLarge.IsRectNull())//判断RectLarge是否为0

{

CRectRectSeparator;

GetWindowRect(&RectLarge);//获取窗口矩形大小

GetDlgItem(IDC_DIVIDE)->GetWindowRect(&RectSeparator);

RectSmall.top=RectLarge.top;

RectSmall.left=RectLarge.left;

RectSmall.right=RectSeparator.right;

RectSmall.bottom=RectSeparator.bottom;

}

SetWindowPos(NULL,0,0,RectSmall.Width(),RectSmall.Height(),SWP_NOMOVE|SWP_NOZORDER);//设置窗口收缩

//显示当前时间

CStringstrMsg;

CTimetime;

time=CTime:

:

GetCurrentTime();//获取当前选中的日期

strMsg.Format("%d:

%d:

%d",time.GetHour(),time.GetMinute(),time.GetSecond());

HWNDCurrentHwnd=GetDlgItem(IDC_CURRENTTIME)->GetSafeHwnd();

GetDlgItem(IDC_CURRENTTIME)->SetWindowText(strMsg);

//添加时钟

SetTimer(1,1000,NULL);

m_CalendarCtrl.SetColor(MCSC_TITLETEXT,RGB(255,0,0));

//数据库

m_pConnection.CreateInstance(_uuidof(Connection));

m_pRecordset.CreateInstance(_uuidof(Recordset));

try

{

m_pConnection->Open("Provider=SQLOLEDB;server=127.0.0.1;Uid=sa;Pwd=123;Database=CalendarDate",

"","",adModeUnknown);

}

catch(_com_error*e)

{

MessageBox(e->ErrorMessage());

}

returnTRUE;//除非将焦点设置到控件,否则返回TRUE

}

voidCCalendarDlg:

:

OnSysCommand(UINTnID,LPARAMlParam)

{

if((nID&0xFFF0)==IDM_ABOUTBOX)

{

CAboutDlgdlgAbout;

dlgAbout.DoModal();

}

else

{

CDialogEx:

:

OnSysCommand(nID,lParam);

}

}

//如果向对话框添加最小化按钮,则需要下面的代码

//来绘制该图标。

对于使用文档/视图模型的MFC应用程序,

//这将由框架自动完成。

voidCCalendarDlg:

:

OnPaint()

{

if(IsIconic())

{

CPaintDCdc(this);//用于绘制的设备上下文

SendMessage(WM_ICONERASEBKGND,reinterpret_cast(dc.GetSafeHdc()),0);

//使图标在工作区矩形中居中

intcxIcon=GetSystemMetrics(SM_CXICON);

intcyIcon=GetSystemMetrics(SM_CYICON);

CRectrect;

GetClientRect(&rect);

intx=(rect.Width()-cxIcon+1)/2;

inty=(rect.Height()-cyIcon+1)/2;

//绘制图标

dc.DrawIcon(x,y,m_hIcon);

}

else

{

CDialogEx:

:

OnPaint();

}

}

//当用户拖动最小化窗口时系统调用此函数取得光标

//显示。

HCURSORCCalendarDlg:

:

OnQueryDragIcon()

{

returnstatic_cast(m_hIcon);

}

voidCCalendarDlg:

:

OnTimer(UINT_PTRnIDEvent)

{

//TODO:

在此添加消息处理程序代码和/或调用默认值

//显示当前时间

CStringstrMsg;

CTimetime;

time=CTime:

:

GetCurrentTime();

strMsg.Format("%d:

%d:

%d",time.GetHour(),time.GetMinute(),time.GetSecond());

GetDlgItem(IDC_CURRENTTIME)->SetWindowText(strMsg);

if(m_RemindFlg&&(time.GetHour()==RemindData[m_RemindNum].hour)

&&(time.GetMinute()==RemindData[m_RemindNum].minute))

{

this->ShowWindow(SW_SHOW);//简单的显示主窗口完事儿

Shell_NotifyIcon(NIM_DELETE,&nid);//在托盘区添加图标

Shake();

ShowRemindMessage();

m_RemindFlg=false;

}

CDialogEx:

:

OnTimer(nIDEvent);

}

voidCCalendarDlg:

:

OnSelectMonthcalendar(NMHDR*pNMHDR,LRESULT*pResult)

{

LPNMSELCHANGEpSelChange=reinterpret_cast(pNMHDR);

//TODO:

在此添加控件通知处理程序代码

UpdateData();

m_Message="";

//设置窗口伸张

SetWindowPos(NULL,0,0,RectLarge.Width(),RectLarge.Height()-12,SWP_NOMOVE|SWP_NOMOVE);

CStringstrMsg,strUserID;

SYSTEMTIMEtime;

m_CalendarCtrl.GetCurSel(&time);//获取当前选中的日期

strMsg.Format("%d-%d-%d",time.wYear,time.wMonth,time.wDay);

//读取数据库

CStringselectstr=_T("");

selectstr.Format("select*fromDailyMessage,DateMessagewhereDailyMessage.Date_ID=DateMessage.Date_IDandDateMessage.Date_Date='%s'andDailyMessage.User_ID='%d'",strMsg,1);

try

{

m_pRecordset->Open((_variant_t)selectstr,m_pConnection.GetInterfacePtr(),

adOpenStatic,adLockOptimistic,adCmdText);

}

catch(_com_error*e)

{

MessageBox(e->ErrorMessage());

}

if(m_pRecordset->adoEOF)

{

//无日志

if(m_UserID!

=1)

{

m_pRecordset->Close();

selectstr.Format("select*fromDailyMessage,DateMessagewhereDailyMessage.Date_ID=DateMessage.Date_IDandDateMessage.Date_Date='%s'andDailyMessage.User_ID='%d'",strMsg,m_UserID);

try

{

m_pRecordset->Open((_variant_t)selectstr,m_pConnection.GetInterfacePtr(),

adOpenStatic,adLockOptimistic,adCmdText);

}

catch(_com_error*e)

{

MessageBox(e->ErrorMessage());

}

if(!

m_pRecordset->adoEOF)

{

//有日志

GetDlgItem(IDC_DELETEMES)->EnableWindow(TRUE);

GetDlgItem(IDC_CHANGEMES)->EnableWindow(TRUE);

CStringstrMessage;

m_pRecordset->MoveFirst();

while(!

m_pRecordset->adoEOF)

{

strMessage.Format("%s:

%s\r\n",(LPCSTR)(_bstr_t)m_pRecordset->GetCollect("Daily_Time"),

(LPCSTR)(_bstr_t)m_pRecordset->GetCollect("Daily_Daily"));

m_Message+=strMessage;

m_pRecordset->MoveNext();

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 历史学

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

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