用C语言来做个人事务助理.docx
- 文档编号:9817344
- 上传时间:2023-05-21
- 格式:DOCX
- 页数:48
- 大小:45.05KB
用C语言来做个人事务助理.docx
《用C语言来做个人事务助理.docx》由会员分享,可在线阅读,更多相关《用C语言来做个人事务助理.docx(48页珍藏版)》请在冰点文库上搜索。
用C语言来做个人事务助理
用C++语言来做个人事务助理
学生姓名指导老师:
摘要本课程设计主要实现了一个简单的个人事务助理的工具。
它白日做梦了个人日常账务的录入、查看和统计的功能,可用于简单的个人账务管理;并且提供了地址簿的功能,可用于记录和查询通信方式。
在课程设计中,系统开发平台为WindowsXP,程序设计设计语言采用VisualC++6.0,程序运行平台为Windows98/2000/XP。
。
程序通过调试运行,初步实现了设计目标,并且经过适当完善后,以后将可以在实际应用中解决问题。
关键词程序设计;Access数据库;VC++6.0
1引言
1.1课程设计目的
在程序设计中,可以用两种方法解决问题:
一是传统的结构化程序设计方法,二是更先进的面向对象程序设计方法。
而在面向对象程序设计中关键是如何将问题域中的实体(即日常所见的概念)抽取出来,作为C++程序中的类,而属性与行为作为类的两类要素通常是必不可少的,甚至还应考虑类必须满足的约束。
1.2关于C++
VisualC++6.0是Microsoft公司在1998年推出的基于Windows9X和WindowsNT的优秀集成开发环境。
该环境为用户提供了良好的可视化编程环境,程序员可以里利用该开发环境轻松地访问C++源代码编辑器,资源编辑器和使用内部调试器,并且可以创建项目文件。
VisualC++6.0不仅包括编译器,而且它还包括许多有用组件,通过这些组件的协同工作,可以在VisualC++6.0集成环境中轻松地完成创建源文件,编辑资源,以及对程序的编译,连接和调试等各项工作。
VC++6.0是Windows95/98、XP或WindowsNT下的一个应用程序,本身对软硬件没有特殊要求。
就是说它对环境的要求与Windows95/98、WindowsNT要求是一致的。
硬件要求:
一般在586以上的处理器、16MB以上内存、100MB以上的硬盘。
软件要求:
Windows95/98或WindowsNT3.51以上版本。
VC++6.0系统可以在一张CD盘上,也可以在“VisualStudio(VisualC++、VisualFoxpro)”等产品的第一张CD盘上。
一般都有一个VC的自动安装程序,也可以执行VC6目录下的setup.exe,在安装包的提示下进行,对初学者可采用“典型安装”方式。
在安装好VC6.0系统后,有时根据需要添加或删除某些部件,可插入CD盘重新执行setup.exe安装程序,安装程序会检测当前系统安装VC6的足件,用户单击“添加/删除”按钮后,在“安装维护”对话框中选定要添加的部件或撤消选定要删除的部件。
与一般的应用软件一样,有以下两种启动方式:
1.通过“开始”按钮,选择“程序”菜单,然后打开“MicrosoftVisualstudio6.0中文版”子菜单中的“MicrosoftVisualC++6.0中文版”程序。
2.用户也可以使用命令行启动VC。
单击“开始”按钮后选择“运行”命令,在“运行”对话框中输入c:
\ProgramFiles\MicrosoftVisualStudio\VC98\VC6.exe(按默认盘符和路径安装)即可。
1.3Access数据库
美国Microsoft公司于1994年推出的微机数据库管理系统,它具有界面友好、易学易用、开发简单、接口灵活等特点,是典型的新一代桌面数据库管理系统。
其主要特点如下:
(1)完善的管理各和数据库对象,具有强大的数据组织、用户管理、安全检查等功能。
可以方便地生成各种数据对象,利用存储的数据建立窗体和报表,可视性好。
(2)作为Office套件的一部分,可以与Office集成,实现无缝连接。
(3)能够利用Web检索和发布数据,实现与Internet的连接。
Access主要适用于中小型应用系统,或作为客户机/服务器系统中的客户端数据库。
(4)可以更轻松地揭示复杂脚本的界面项,这就意味着只需通过简单的单击操作,即可实现特定语言对象中读取方向的从左到右到从右到左的切换;处理窗体和报表的方式更为简便。
`
(5)当用户进行记录导航、关闭窗体或选择命令时,现在可以让Access项目对所有数据项进行批处理,然后将其发送给服务器。
也可在窗体上创建按钮,以通过编程方式保存所有记录或撤消对记录的所有更改。
1.4配置需求
本系统开发需求的硬件有:
CPU为400MHZ以上;硬盘数据量最小配置为20G;计算机内存要求为128M以上。
2系统分析
2.1可行性分析
现在时间行进到21世纪,以计算机技术为主体的高新技术群体已经将触角深入到国发经济的方方面面。
在市场经济的大环境下,越来越多的人士逐渐认识到用计算机技术进行名类管理,交流的便捷。
应用之一就是平时的个人事务助理。
在计算机网络,数据库和先进的开发平台上,利用现有的软件,配置一定的硬件,开发一个具有开放体系结构的、易扩充的、易维护的、具有良好人机交互界面的个人事务助理,实现了简单的个人账务管理,并且提供了地址簿的功能,可用于记录和查询通信方式。
3系统总体设计
3.1系统目标设计
(1)大大节约了时间,提高了效率;
(2)通过全面的信息采集和处理,辅助用于个人管理账务;
(3)使用该事务查询工具,可以迅速实现个人信息查询,给用户提供了诸多的方便。
3.2系统常用函数
表3-1常用函数表
函数声明
功能声明
CDialog:
:
UpdateData();
用于将控件中的数据转储之关联变量
CString:
:
Format()
将数据转化为字符串。
MessageBox()及AfxMessageBox()
进行消息提示。
CRecordset:
:
IsEOF()
判断记录集是否为空
CString:
:
Empty()和CString:
:
TrimLeft()
分别用来清空该字符串和除去字符串右边的空格。
3.3系统功能分析
此仓库管理系统需要完成功能主要有以下几点:
✧程序运行进入登录主界面。
✧经过用户验证进入个人事务助理系统。
✧系统分为两个主要功能,主要查询客户消费与客户地址情况。
✧利用各种方式查询各种客户信息。
3.4系统功能模块设计
在系统功能分析的基础上,考虑到VC++编制的特点,得到如图3.2所示的系统功能模块:
●登录模块,响应“登录”按钮的函数如下
voidCLoginDlg:
:
OnOK()
{
//TODO:
Addextravalidationhere
UpdateData();
if(m_user=="张誉文")
{
if(m_password=="7")
{
AfxMessageBox("欢迎使用!
");
CDialog:
:
OnOK();
}
else
AfxMessageBox("密码错误!
");
}
else
MessageBox("对不起,我不能为您服务!
","提示",MB_OK|MB_ICONINFORMATION);;
}
●登录成功后进入主操作界面,响应提交按钮代码如下
BOOLCMoneyEditDlg:
:
SaveToDb()
{
p_Database=newCDatabase;
p_Database->SetLoginTimeout(5);
BOOLp_Status=FALSE;
try
{
p_Status=p_Database->Open("Assistant");
if(p_Status)
TRACE("\nDBopenedsuccessfully\n");
else
TRACE("\nOpenDSNfailed.\n");
}
catch(CMemoryException*pEx)
{
pEx->ReportError();
}
catch(CDBException*pDBEx)
{
pDBEx->ReportError();
TRACE("RetCOde:
%dstrError:
[%d]strState:
[%d]\n",
pDBEx->m_nRetCode,
pDBEx->m_strError,
pDBEx->m_strStateNativeOrigin);
}
if(!
p_Status)
{
MessageBox("OpenDSNFailed.");
if(p_Database->IsOpen())p_Database->Close();
if(p_Database!
=NULL)deletep_Database;
returnFALSE;
}
p_Record=newCMoneyRecord(p_Database);
if(!
p_Record->Open(AFX_DB_USE_DEFAULT_TYPE,(LPCTSTR)"Account"))
{
MessageBox("OpenTableSiteDataFailed.");
if(p_Record->IsOpen())p_Record->Close();
if(p_Database->IsOpen())p_Database->Close();
deletep_Record;
deletep_Database;
returnFALSE;
}
p_Record->AddNew();
p_Record->m_ID=GenerateID();
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();
deletep_Record;
deletep_Database;
returnTRUE;
}
●登录成功后,进入主界面,响应查询按钮
BOOLCMoneyViewDlg:
:
QueryFromDb()
{
p_Database=newCDatabase;
p_Database->SetLoginTimeout(5);
BOOLp_Status=FALSE;
try
{
p_Status=p_Database->Open("Assistant");
if(p_Status)
TRACE("\nDBopenedsuccessfully\n");
else
TRACE("\nOpenDSNfailed.\n");
}
catch(CMemoryException*pEx)
{
pEx->ReportError();
}
catch(CDBException*pDBEx)
{
pDBEx->ReportError();
TRACE("RetCOde:
%dstrError:
[%d]strState:
[%d]\n",
pDBEx->m_nRetCode,
pDBEx->m_strError,
pDBEx->m_strStateNativeOrigin);
}
if(!
p_Status)
{
MessageBox("OpenDSNFailed.");
if(p_Database->IsOpen())p_Database->Close();
if(p_Database!
=NULL)deletep_Database;
returnFALSE;
}
p_Record=newCMoneyRecord(p_Database);
p_Record->m_strFilter=m_strFilter;
if(!
p_Record->Open(AFX_DB_USE_DEFAULT_TYPE,(LPCTSTR)"Account"))
{
MessageBox("OpenTableSiteDataFailed.");
if(p_Record->IsOpen())p_Record->Close();
if(p_Database->IsOpen())p_Database->Close();
deletep_Record;
deletep_Database;
returnFALSE;
}
m_listMoney.DeleteAllItems();
CStringstr;
if(!
p_Record->IsBOF())
{
while(!
p_Record->IsEOF())
{
inti=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();
}
//
if(p_Record->IsOpen())p_Record->Close();
if(p_Database->IsOpen())p_Database->Close();
deletep_Record;
deletep_Database;
returnTRUE;
}
4数据库设计
4.1个人事务助理概念设计
由前面系统分析阶段得出的系统的数据流程图,可得出数据库概念结构图。
本系统概念结构图如图4.1所示。
Ø系统E-R图
4.1系统E-R图
Ø系统E-R图说明
a)每个用户可以有不同的消费,每个用户都有详细的地址。
b)查询功能:
选择所要查询的时间,查询该段时间内的消费情况,还可查询该用户的地址。
4.2各种数据表信息
1.系统关系模型
Ø客户消费表(消费编号,消费时间,消费总数,消费类型,消费内容)
Ø客户地址表(姓名,性别,年龄,地址,关系,手机号码,固定电话)
2.系统数据库结构(如图所示)
表4-1数据库索引
表名
中文名
Account
客户消费表
AddrList
客户地址表
表4-1为数据库索引,本数据库包含两个表。
表4-2客户消费表
字段名
字段类型
长度
主/外键
字段值约束
对应中文名
ID
文本
50
P
NotNULL
消费编号
Date
时间
50
NotNULL
消费时间
Sum
数字
50
NotNULL
消费单数
Type
文本
50
NotNULL
消费类型
Comments
文本
50
NotNULL
消费内容
表4-3商品记录表
字段名
字段类型
长度
主/外键
字段值约束
对应中文名
Name
文本
50
P
NotNULL
姓名
Sex
文本
50
NotNULL
性别
Age
数字
50
NotNULL
年龄
Relation
文本
50
NotNULL
关系
MobilPhone
文本
50
NotNULL
手机号码
TelePhone
文本
50
NotNULL
固定电话
5系统实现
5.1系统的实现
通过前面的一系列的分析研究和设计,该个人事务查询的雏形已经完成,接下来所要做的工作就是通过编码来实现系统的各个模块的功能。
(1)用户登录
一般的应用软件都有系统登录窗体,个人事务查询工具的登录窗体对于库存管理的安全性有重要作用,任何的操作员管理的权限和业务范围的都需要通过系统登录窗体的用户名和口令给予。
根据安全操作,如果账号密码错误,登陆页面会做出提示。
个人事务助理的登录窗体如图5.1所示。
图5.1登陆框界面
(2)主窗体设计
系统主窗体有通过用户可以直接输入消费的各种信息,查询消费的具体情况,同时即可自动清空列表框,以待下个消费者的光临。
系统主窗体的运行结果如图5.2所示。
图5.2输入框界面(MyMoney)
图5.3输入框界面(AddressList)
Access数据库表,本系统共用了两个表,一个是客户消费表,通过用户管理员每次输入消费情况到数据库里;一个是客户地址表,每次用户输入消费者的地址以方便管理员查询。
如图5.4,5.5所示
图5.4消费信息数据表
图5.5消费地址数据表
6性能测试与分析
一、应用程序测试
测试软件的经典策略是从“小型测试开始”,逐步过渡到“大型测试”。
用软件测试的专用属于,就是从单元测试开始,逐步进入到集成测试,最后进行确认测试和系统测试。
对于传统的软件系统测试来说,单元测试集中测试最小的可编译的程序单元,一旦把这些单元测试完之后,就把它们集中到程序结构中去;在集中过程还进行一系列系统作为一个整体的测试,以发现软件需求错误。
测试面向对象软件的策略与上述策略基本相同,但也有许多工作新特点。
二、系统测试环境及结果
根据系统开发前的调研得知个人事务助理的工作平台大多数为Windows系列操作系统,加此本系统测试环境选用其所长WindowsXP,测试方法选用黑盒测试,本着认真负责的态度,分模块测试本系统各个核心功能的实现程度。
经严格的测试,系统各主要功能均已实现,符合系统设计目标。
三、系统性能分析
根据测试的过程及结果,可以对系统的性能进行初步的分析与研究。
经分析得知,因为服务器端的数据库选用的是功能较弱且性能较差的Access2003关系数据库,系统的运行速度与安全性和大型的信息查询系统相比还有不小的差距,但对个人来说完全是可以接受的,并且由于采用VisualC++6.0实现,使系统具有较高的技术水平和较长的生命周期,便于系统的维护。
7异常处理
程序在执行时经常会出现一些违反设计期望的异常情况(如除零),过去的解决方法是利用操作系统中断代为处理。
由于这种解决方法强行中止了应用程序的运行,一些大型的应用系统的开发人员提出,可以在允许的范围内由应用程序自身来处理一般性的程序运行错误。
C++语言异常处理由三个部分构成。
异常检测的触发、异常检测的捕获和异常检测的处理[3]。
它们分别对应了“try”、“throw”和“catch”三个关键字。
这三者的关系如图4-1所示。
图4.1C++异常处理流程图
被throw语句扔出的数据实际上被压入了相应层的catch语句所对应的堆栈内,最后才被catch语句捕获到的。
当try语句出现嵌套时,情况可能会更加复杂。
8结束语
三个星期的课程设计,经过一番的努力奋斗,我终于完成了课程设计,在这期间,遇上了不少的技术难题,但是经过努力,通过查找资料,积极探讨,难题还是一个个被我解决了,我从中学到了许多课堂上没学到的东西,这使得我很高兴,最起码的是,我明白了基本程序设计过程和一些以前不是很懂的知识。
虽然三个星期不是很长的时间,但是我还领略到团结合作,互相帮助,互相鼓励是非常重要的,这些是我能完成课程设计基本动力,想这些也是我今后走上社会所必须必备的。
真的很感谢老师能为我提供这样的课程设计,当然,我开发的这个系统,还有很多不完善的地方,但是我想,这只是暂时的,因为随着我们能力的提高,那些难题一定会被我们解决的。
经过了设计的各个环节,从中学到了很多,锻炼了自己可以掌握整个系统的设计,从系统的需求到系统的功能,到系统的测试,到系统的发布,可以掌握到一个完全的过程,这样对我们以后在工作中或学习中得到很好的锻炼,为设计数据库管理系统奠定基础。
主要参考文献
[1]高强,朱安国.VisualC++高级编程技巧,北京:
人民邮电出版社,2000年
[2]何炜,张励.VisualC++.NET程序设计,冶金工业出版社,2004年
[3]张立科.VC系统开发实例[M],2004年
[4]宛延桤,定海.面向对象分析和设计[M],2001年
[5]刘惊雷.VisualC++实用教程,电子工业出版社,2005年
[6]张宏军,赵天巨,VisualC++6.0编程安全精解,电子工业出版社,2005年
附录:
主要控件的源代码清单(全部的代码见程序):
CAddrListDlg类
#include"stdafx.h"
#include"MyAssistant.h"
#include"AddrListDlg.h"
//函数
BOOLCAddrListDlg:
:
OnInitDialog()//初始化
{
CDialog:
:
OnInitDialog();
//TODO:
Addextrainitializationhere
m_nAge=23;//初始化编辑框
//初始化性别下拉列表
m_comboSex.AddString("男");
m_comboSex.AddString("女");
//初始化性别下拉列表默认值
m_comboSex.SetCurSel(0);
//初始化关系下拉列表
m_comboRelation.AddString("朋友");
m_comboRelation.AddString("同学");
m_comboRelation.AddString("同事");
m_comboRelation.AddString("亲属");
m_comboRelation.AddString("其它");
//初始化关系下拉列表默认值
m_comboRelation.SetCurSel(0);
UpdateData(FALSE);//更新显示
returnTRUE;
}
voidCAddrListDlg:
:
OnQuery()
{
UpdateData();//得到用户输入
m_strFilter="Name=\'"+m_strName+"\'";//组织查询语句
QueryFromDb();//查询数据
}
voidCAddrListDlg:
:
OnUpdate()
{
UpdateData();//获取用户输入
//得到性别下拉列表中的信息
m_comboSex.GetWindowText(m_strSex);
//得到关系下拉列表中的信息
m_comboRelation.GetWindowText(m_strRelation);
if(!
S
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 个人 事务 助理