c++高级语言程序设计课程设计-日历记事本(12页).doc
-c+高级语言程序设计课程设计-日历记事本-第 12 页高级语言程序设计(C+)结课设计论文( 2015 - 2016年度第一学期)题 目:日历记事本 院 系:电子与通信工程系班 级:通信1503班制作人: 目 录1.引言························3 1.1选题的目的与意义························31.2工作流程························3 2.需求分析························32.1 功能需求························3 2.2 性能需求························3 3.总体设计························33.1基本设计概念和处理流程························33.2系统层次模块图························43.3对话框的制作························44.详细操作························54.1创建项目························54.2详细步骤························55.总结·······················16日历记事本我的点点滴滴1.引言1.1选题的目的与意义随着科技发展,很少有人继续使用纸和笔来记事、记账了。网络上出现了各种记事、记账软件,但是很少有集各种功能于一体的多功能记事本。因此,根据自己的需求,我设计了一个多功能日历记事本。1.2工作流程一、确定选题 二、初步构思功能与界面 三、进一步精确设计各种功能,绘制功能框架图与 界面设计 四、查阅资料 五、功能实现、代码编程 六、程序完善、界面美化 七、撰写课程报告,完成答辩PPT2.需求分析2.1功能需求基于系统需求分析,该系统需要实现以下功能:1) 可记录账单,并利用简易计算器进行计算2)对记录一天的摄入与锻炼,督促合理饮食与运动3)对记录一天的心情,写下日记2.2性能需求软件环境:Microsoft Visual C+ 6.03.总体设计3.1基本设计概念和处理流程本系统设计为一个相对开放的单机运行系统。系统界面美观、简单实用、易操作。本系统采用Microsoft Visual C+ 6.0开发,在满足需求的前提下,将系统对运行环境的性能要求降到最低。系统基本的流程是:登陆 主界面 选择要打开的一项(记账、锻炼、日记)。3.2系统层次模块图3.3对话框的制作本系统由多个对话框通过按钮的连接而制成,那么如何制作成一个对话框呢?(1)给对话框添加按钮(2)给对话框插入菜单(3)设置菜单类向导,选择一个已有的类(4)给菜单设置各项属性(5)设置对话框属性,将菜单与对话框连接(6)给菜单各项和按钮连接代码(7)给按钮连接下一个对话框(8)设计界面布局4.详细操作本系统的详细设计是基于系统需求分析与系统总体设计的结论来进行的,并采用VC6.0实现各模块的功能。4.1创建项目创建一个基于对话框的MFC AppWizard(exe)项目,项目名为“我的点点滴滴”。4.2详细步骤1.登陆界面代码实现:(1) 登陆void CMyDlg:OnDlButton() / TODO: Add your control notification handler code hereCString s1,s2;m_edit1.GetWindowText(s1);m_edit2.GetWindowText(s2);if(s1="李耀阳" && s2="864544927")CSubDlg dlg; dlg.DoModal();elseMessageBox("密码或口令错,请重新输入!","提示");(2) 退出void CMyDlg:OnTcButton() / TODO: Add your control notification handler code hereOnOK();2.主界面代码实现:(1) 今日:日历插件,显示今天日期void CSubDlg:OnTodayButton() / TODO: Add your control notification handler code herem_date = CTime:GetCurrentTime(); UpdateData(FALSE);(2)进入今日:连接下一个子对话框void CSubDlg:OnEnterButton() / TODO: Add your control notification handler code hereCSubDlg2 dlg; dlg.DoModal();3.进入今日代码实现(此部分主要是连接子对话框):void CSubDlg2:OnButton1() / TODO: Add your control notification handler code hereCSubDlg4 dlg; dlg.DoModal();void CSubDlg2:OnButton2() / TODO: Add your control notification handler code hereCSubDlg6 dlg; dlg.DoModal();void CSubDlg2:OnButton3() / TODO: Add your control notification handler code hereCSubDlg7 dlg; dlg.DoModal();void CSubDlg2:OnButton4() / TODO: Add your control notification handler code hereCSubDlg3 dlg; dlg.DoModal();补充:最前面#include "stdafx.h"#include "日历记事本.h"#include "SubDlg2.h"#include "SubDlg3.h"#include "SubDlg4.h"#include "SubDlg6.h"#include "SubDlg7.h"4.我的账单代码实现:(1) 今日总花销: void CSubDlg4:OnButton3() / TODO: Add your control notification handler code hereUpdateData(TRUE);m_edit8=m_edit1+m_edit2+m_edit3+m_edit4+m_edit5+m_edit6+m_edit7;UpdateData(FALSE);(2) 剩余: void CSubDlg4:OnButton2() / TODO: Add your control notification handler code hereUpdateData(TRUE);m_edit11=m_edit9-m_edit10;UpdateData(FALSE);(3) 计算器(连接子对话框): void CSubDlg4:OnButton1() / TODO: Add your control notification handler code hereCSubDlg5 dlg; dlg.DoModal();5.计算器代码实现:(1) 各个按钮的属性ON_BN_CLICKED(IDC_0, On0)ON_BN_CLICKED(IDC_EXIT, OnExit)ON_BN_CLICKED(IDC_1, On1)ON_BN_CLICKED(IDC_2, On2)ON_BN_CLICKED(IDC_3, On3)ON_BN_CLICKED(IDC_4, On4)ON_BN_CLICKED(IDC_5, On5)ON_BN_CLICKED(IDC_6, On6)ON_BN_CLICKED(IDC_7, On7)ON_BN_CLICKED(IDC_8, On8)ON_BN_CLICKED(IDC_9, On9)ON_BN_CLICKED(IDC_BACK, OnBack)ON_BN_CLICKED(IDC_CHENG, OnCheng)ON_BN_CLICKED(IDC_CHU, OnChu)ON_BN_CLICKED(IDC_CLEAR, OnClear)ON_BN_CLICKED(IDC_DAOSHU, OnDaoshu)ON_BN_CLICKED(IDC_DOT, OnDot)ON_BN_CLICKED(IDC_EQUAL, OnEqual)ON_BN_CLICKED(IDC_JIA, OnJia)ON_BN_CLICKED(IDC_JIAN, OnJian)ON_BN_CLICKED(IDC_JJ, OnJj)ON_BN_CLICKED(IDC_QIUYU, OnQiuyu)ON_BN_CLICKED(IDC_SQRT, OnSqrt)(2) 数字键(以0为例)void CSubDlg5:On0() / TODO: Add your control notification handler code hereUpdateData(TRUE);if(cal=1)else if(m_edit="0.")m_edit=""m_edit+='0'UpdateData(FALSE);(3) 功能键1) 删除前一个数字void CSubDlg5:OnBack() / TODO: Add your control notification handler code hereUpdateData(TRUE);m_edit=m_edit.Left(m_edit.GetLength()-1);UpdateData(FALSE);2) 运算符号:加减乘除 void CSubDlg5:OnJia() / TODO: Add your control notification handler code hereUpdateData(TRUE);m_str1=m_edit;m_edit=""sos=1; UpdateData(FALSE);void CSubDlg5:OnJian() / TODO: Add your control notification handler code hereUpdateData(TRUE);m_str1=m_edit;m_edit=""sos=2;UpdateData(FALSE);void CSubDlg5:OnCheng() / TODO: Add your control notification handler code hereUpdateData(TRUE);m_str1=m_edit;m_edit=""sos=3;UpdateData(FALSE);void CSubDlg5:OnChu() / TODO: Add your control notification handler code hereUpdateData();m_str1=m_edit;m_edit=""sos=4;UpdateData(FALSE); 4)清除void CSubDlg5:OnClear() / TODO: Add your control notification handler code hereUpdateData(TRUE);m_edit=""sos=0;UpdateData(FALSE); 5)1/x求倒数void CSubDlg5:OnDaoshu() / TODO: Add your control notification handler code hereUpdateData(TRUE);double f1,f3;m_str1=m_edit;f1=atof(m_str1);if (f1=0)MessageBox("被除数不能为0!");elsef3=1/f1;m_edit.Format("%f",f3);UpdateData(FALSE); 6)小数点void CSubDlg5:OnDot() / TODO: Add your control notification handler code hereUpdateData();m_edit+="."cal=1;UpdateData(FALSE); 7)等于号=void CSubDlg5:OnEqual() / TODO: Add your control notification handler code heredouble f1,f2,f3;int f4,f5,f6;/%运算符操作数只能是整型switch(sos)case 1:UpdateData(TRUE);m_str2=m_edit;f1=atof(m_str1);f2=atof(m_str2);f3=f1+f2;m_edit.Format("%f",f3);UpdateData(FALSE);break;case 2:UpdateData(TRUE);m_str2=m_edit;f1=atof(m_str1);f2=atof(m_str2);f3=f1-f2;m_edit.Format("%f",f3);UpdateData(FALSE);break;case 3:UpdateData(TRUE);m_str2=m_edit;f1=atof(m_str1);f2=atof(m_str2);f3=f1*f2;m_edit.Format("%f",f3);UpdateData(FALSE);break;case 4:UpdateData(TRUE);m_str2=m_edit;f1=atof(m_str1);f2=atof(m_str2);if(f2=0)MessageBox("被除数不能为零!");elsef3=f1/f2; m_edit.Format("%f",f3);UpdateData(FALSE);break;case 6:UpdateData(TRUE);m_str2=m_edit;f4=atoi(m_str1);/将字符型转化为整型,下面做相应修改f5=atoi(m_str2);f6=int(f4)%int(f5);m_edit.Format("%d",f6);UpdateData(FALSE);break; 8)+/-号void CSubDlg5:OnJj() / TODO: Add your control notification handler code hereUpdateData(TRUE);if(m_edit.Left(1)='-') /截取m_str1左边的第一个字符'-'m_edit=m_edit.Right(m_edit.GetLength()-1);elsem_edit='-'+m_edit;/sos=5;UpdateData(FALSE);9)求余%void CSubDlg5:OnQiuyu() / TODO: Add your control notification handler code hereUpdateData();m_str1=m_edit;m_edit=""sos=6; UpdateData(FALSE); 10)平方根void CSubDlg5:OnSqrt() / TODO: Add your control notification handler code hereUpdateData(TRUE);double f1,f3;m_str1=m_edit;f1=atof(m_str1);if(f1<0)MessageBox("负数没有平方根!");elsef3=sqrt(f1);m_edit.Format("%f",f3); UpdateData(false);6.天天爱锻炼代码实现:(1) 添加按钮(仅以左侧两个列表框为例,右侧基本相同)void CSubDlg6:OnButton1() / TODO: Add your control notification handler code herechar sFromMenuList50; m_list1.GetText(m_list1.GetCurSel(),sFromMenuList); m_list2.AddString(sFromMenuList);(2) 双击添加void CSubDlg6:OnDblclkList1() / TODO: Add your control notification handler code herechar sFromList50;m_list1.GetText(m_list1.GetCurSel(),sFromList);m_list2.AddString(sFromList);(3) 删除按钮void CSubDlg6:OnSc1() / TODO: Add your control notification handler code hereCString item; int index = m_list2.GetCurSel(); /获取选定顶索引号 m_list2.GetText(index, item); /获取选定顶的文本 m_list2.DeleteString(index); /删除一项(4) 清空按钮void CSubDlg6:OnQk1() / TODO: Add your control notification handler code herewhile(m_list2.GetCount()>0) m_list2.DeleteString(0);7.记录心情代码实现:编辑框文字的保存与读取void CSubDlg7:OnBcrj() / TODO: Add your control notification handler code hereUpdateData(TRUE); CFile f; f.Open("mytest.txt", CFile:modeCreate|CFile:modeWrite); CArchive ar(&f, CArchive:store); ar << m_edit1 ; ar.Close(); f.Close(); m_edit1 = "" UpdateData(!TRUE); MessageBox("文件mytest.txt已经存好");void CSubDlg7:OnDk() / TODO: Add your control notification handler code here CFile f; if(f.Open("mytest.txt", CFile:modeRead) = FALSE) return; CArchive ar(&f, CArchive:load); ar >> m_edit1 ; ar.Close(); f.Close(); UpdateData(!TRUE);8.菜单栏5.总结(1) 完成本课题花了将近一个星期的时间,真正体会了编程的辛苦,必须有足够的细心、耐心,想要完成一项出色的项目,必须精益求精,反复操作与实践。 (2) 在做了本课程设计以后,我对C+的了解更深了,很多知识得到了巩固,一些不懂的知识也渐渐明了!同时,通过查找资料,也学会了自主学习,自己钻研。 (3) 虽然本课题已完成,可是还是存在一些问题,还需要改进,比如说:界面还不够好看,没有插入背景图片。无法保存文件。登陆只能有限个账号登陆。还不会插入工具栏、状态栏。