1、 用 C+语言来做个人事务助理 第 - 1 -页 共 18 页 - 1 - 用 C+语言来 做 个人事务助理 学生姓名 指导老师: 摘 要 本课程设计主要 实现了一个简单的个人事务助理的工具 。 它白日做梦了个人日常账务的录入、查看和统计的功能,可用于简单的个人账务管理;并且提供了地址簿的功能,可用于记录和查询通信方式。 在课程设计中,系统开发平台为 Windows XP,程序设计设计语言采用 Visual C+6.0,程序运行平台为 Windows 98/2000/XP。程序通过调试运行,初步实现了设计目标,并且经过适当完善后,以后 将可以 在实际应用中解决 问题。 关键词 程 序设计; A
2、ccess 数据库 ; VC+6.0 1 引 言 1.1 课程设计目的 在程序设计中,可以用两种方法解决问题:一是传统的结构化程序设计方法,二是更先进的面向对象程序设计方法。 而在面向对象程序设计中关键是如何将问题域中的实体(即日常所见的概念)抽取出来,作为 C+程序中的类,而属性与行为作为类的两类要素通常是必不可少的,甚至还应考虑类必须满足的约束。 1.2 关于 C+ Visual C+6.0 是 Microsoft公司在 1998年推出的基于 Windows 9X和 Windows NT 的优秀 集成开发环境。该环境为用户提供了良好的可视化编程环境,程序员可以里利用该开发环境轻松地访问 C
3、+源代码编辑器,资源编辑器和使用内部调试器,并且可以创建项目文件。 Visual C+6.0 不仅包括编译器,而且它还包括许多有用组件,通过这些组件的协同工作,可以在 Visual C+6.0 集成环境中轻松地用 C+语言来做个人事务助理 第 - 2 -页 共 18 页 - 2 - 完成创建源文件,编辑资源,以及对程序的编译,连接和调试等各项工作。 VC+6.0 是 Windows 95/98、 XP 或 Windows NT 下的一个应用程序,本身对软硬件没有特殊要求。就是说它对环境的要求与 Windows 95/98、 Windows NT 要求是一致的。 硬件要求:一般在 586 以上的
4、处理器、 16MB 以上内存、 100MB 以上的硬盘。 软件要求: Windows 95/98 或 Windows NT3.51 以上版本。 VC+ 6.0系统可以在一张 CD盘上,也可以在“ Visual Studio( Visual C+、 Visual Foxpro)”等产品的第一张 CD 盘上。一般都有一个 VC 的自动安装程序,也可以执行 VC6 目录下的 setup.exe,在安装包的提示下进行,对初学者可采用“典型安装”方式。 在安装好 VC 6.0 系统后,有时根据需要添加或删除某些部件,可插入 CD 盘重新执行 setup.exe 安装程序,安装程序会检测当前系统安装 VC
5、6 的足件,用户单击“添加删除”按钮后,在“安装维护”对话框中选定要添加的部件或撤消选定要删除的部件。 与一般的应用软件一样,有以下两种启动方式 : 1通过“开始”按钮,选择“程序”菜单,然后打开“ Microsoft Visual studio 6.0 中文版”子菜单中的“ Microsoft Visual C+ 6.0 中文版”程序。 2用户也可以使用命令行启动 VC。单击“开始”按 钮后选择“运行”命令,在“运行”对话框中输入 c:Program FilesMicrosoft Visual StudioVC98VC6.exe(按默认盘符和路径安装)即可。 1.3 Access 数据库 美
6、国 Microsoft 公司于 1994 年推出的微机数据库管理系统,它具有界面友好、易学易用、开发简单、接口灵活等特点,是典型的新一代桌面数据库管理系统。其主要特点如下: ( 1)完善的管理各和数据库对象,具有强大的数据组织、用户管理、安全检查等功能。可以方便地生成各种数据对象,利用存储的数据建立窗体和报表 ,可视性好。 ( 2)作为 Office 套件的一部分,可以与 Office 集成,实现无缝连接。 ( 3)能够利用 Web 检索和发布数据,实现与 Internet 的连接。 Access 主要适用 C+语言来做个人事务助理 第 - 3 -页 共 18 页 - 3 - 用于中小型应用系
7、统,或作为客户机 /服务器系统中的客户端数据库。 (4) 可以更轻松地揭示复杂脚本的界面项,这就意味着只需通过简单的单击操作,即可实现特定语言对象中读取方向的从左到右到从右到左的切换 ; 处理窗体和报表的方式更为简便。 (5) 当用户进行记录导航、关闭窗体或选择命令时,现在可以让 Access 项目对所有数据项进行批处理,然后 将其发送给服务器。也可在窗体上创建按钮,以通过编程方式保存所有记录或撤消对记录的所有更改。 1.4 配置需求 本系统开发需求的硬件有: CPU为 400MHZ以上;硬盘数据量最小配置为 20G;计算机内存要求为 128M 以上。 2 系统分析 2.1 可行性分析 现在时
8、间行进到 21 世纪,以计算机技术为主体的高新技术群体已经将触角深入到国发经济的方方面面。在市场经济的大环境下,越来越多的人士逐渐认识到用计算机技术进行名类管理,交流的便捷。应用之一就是 平时的个人事务助理 。 在计算机网络,数据库和先进的开发平台上,利用现有 的软件,配置一定的硬件,开发一个具有开放体系结构的、易扩充的、易维护的、具有良好人机交互界面的 个人事务助理 ,实现 了简单的个人账务管理 ,并且提供了地址簿的功能 ,可用于记录和查询通信方式 。 3 系统总体设计 3.1 系统目标设计 ( 1)大大 节约了时间,提高了效率 ; ( 2)通过全面的信息采集和处理,辅助 用于个人管理账务
9、; ( 3)使用 该事务查询工具 ,可以迅速 实现个人信息查询,给用户提供了诸多用 C+语言来做个人事务助理 第 - 4 -页 共 18 页 - 4 - 的方便 。 3.2 系统常用函数 表 3-1 常用函数表 函数声明 功能声明 CDialog:UpdateData(); 用于将 控件中的数据转储之关联变量 CString:Format() 将数据转化为字符串。 MessageBox()及 AfxMessageBox() 进行消息提示。 CRecordset:IsEOF() 判断记录集是否为空 CString:Empty()和 CString:TrimLeft() 分别用来清空该字符串和除去
10、字符串右边的空格。 3.3 系统功能分析 此仓库管理系统需要完成功能主要有以下几点: 程序运行进入登录主界面 。 经过用户验证进入个人事务助理系统。 系统分为两个主要功能,主要查询客户 消费与客户地址情况。 利用各种方式查询各种客户信息。 3.4 系统功能模块设计 在系统功能分析的基础上,考虑到 VC+编制的特点,得到如图 3.2 所示的系统功能模块 : 登录模块,响应“登录”按钮的函数如下 void CLoginDlg:OnOK() / TODO: Add extra validation here 用 C+语言来做个人事务助理 第 - 5 -页 共 18 页 - 5 - UpdateDat
11、a(); if(m_user=“张誉文 “) if(m_password=“267275927“) AfxMessageBox(“欢迎使 用 !“); CDialog:OnOK(); else AfxMessageBox(“密码错误 !“); else MessageBox(“对不起 ,我不能为您服务 !“,“提示“,MB_OK|MB_ICONINFORMATION); 登录成功后进入主操作界面,响应提交按钮代码如下 BOOL CMoneyEditDlg:SaveToDb() p_Database = new CDatabase; p_Database-SetLoginTimeout(5);
12、BOOL p_Status = FALSE; try p_Status = p_Database-Open(“Assistant“); if(p_Status) 用 C+语言来做个人事务助理 第 - 6 -页 共 18 页 - 6 - TRACE(“nDB opened successfullyn“); else TRACE(“nOpen DSN failed.n“); catch(CMemoryException* pEx) pEx-ReportError(); catch(CDBException* pDBEx) pDBEx-ReportError(); TRACE(“RetCOde:%d
13、 strError:%d strState: %dn“, pDBEx-m_nRetCode, pDBEx-m_strError, pDBEx-m_strStateNativeOrigin); if(!p_Status) MessageBox(“Open DSN Failed.“); if(p_Database-IsOpen() p_Database-Close(); if(p_Database != NULL) delete p_Database; return FALSE; 用 C+语言来做个人事务助理 第 - 7 -页 共 18 页 - 7 - p_Record = new CMoneyR
14、ecord(p_Database); if(!p_Record-Open(AFX_DB_USE_DEFAULT_TYPE,(LPCTSTR)“Account“) MessageBox(“Open Table SiteData Failed.“); if(p_Record-IsOpen() p_Record-Close(); if(p_Database-IsOpen() p_Database-Close(); delete p_Record; delete p_Database; return FALSE; p_Record-AddNew(); p_Record-m_ID = GenerateI
15、D(); p_Record-m_Type = m_strType; p_Record-m_Sum = m_nSum; p_Record-m_Date = m_Date; p_Record-m_Comments = m_strComments; p_Record-Update(); if(p_Record-IsOpen() p_Record-Close(); if(p_Database-IsOpen() p_Database-Close(); 用 C+语言来做个人事务助理 第 - 8 -页 共 18 页 - 8 - delete p_Record; delete p_Database; retu
16、rn TRUE; 登录成功后,进入主界面,响应查询按钮 BOOL CMoneyViewDlg:QueryFromDb() p_Database = new CDatabase; p_Database-SetLoginTimeout(5); BOOL p_Status = FALSE; try p_Status = p_Database-Open(“Assistant“); if(p_Status) TRACE(“nDB opened successfullyn“); else TRACE(“nOpen DSN failed.n“); catch(CMemoryException* pEx) p
17、Ex-ReportError(); catch(CDBException* pDBEx) 用 C+语言来做个人事务助理 第 - 9 -页 共 18 页 - 9 - pDBEx-ReportError(); TRACE(“RetCOde:%d strError:%d strState: %dn“, pDBEx-m_nRetCode, pDBEx-m_strError, pDBEx-m_strStateNativeOrigin); if(!p_Status) MessageBox(“Open DSN Failed.“); if(p_Database-IsOpen() p_Database-Clos
18、e(); if(p_Database != NULL) delete p_Database; return FALSE; p_Record = new CMoneyRecord(p_Database); p_Record-m_strFilter = m_strFilter; if(!p_Record-Open(AFX_DB_USE_DEFAULT_TYPE,(LPCTSTR)“Account“) MessageBox(“Open Table SiteData Failed.“); if(p_Record-IsOpen() p_Record-Close(); 用 C+语言来做个人事务助理 第 -
19、 10 -页 共 18 页 - 10 - if(p_Database-IsOpen() p_Database-Close(); delete p_Record; delete p_Database; return FALSE; m_listMoney.DeleteAllItems(); CString str; if(!p_Record-IsBOF() while(!p_Record-IsEOF() int i = m_listMoney.InsertItem(0,p_Record-m_Type); str.Format(“%d“,p_Record-m_Sum); m_listMoney.SetItemText(i,1,str); m_listMoney.SetItemText(i,2,p_Record-m_Date.Format(“%Y-%b-%d“); m_listMoney.SetItemText(i,3,p_Record-m_Comments); p_Record-MoveNext(); m_listMoney.UpdateWindow();