数据库应用课程设计论文.docx

上传人:b****8 文档编号:13111744 上传时间:2023-06-11 格式:DOCX 页数:15 大小:304.61KB
下载 相关 举报
数据库应用课程设计论文.docx_第1页
第1页 / 共15页
数据库应用课程设计论文.docx_第2页
第2页 / 共15页
数据库应用课程设计论文.docx_第3页
第3页 / 共15页
数据库应用课程设计论文.docx_第4页
第4页 / 共15页
数据库应用课程设计论文.docx_第5页
第5页 / 共15页
数据库应用课程设计论文.docx_第6页
第6页 / 共15页
数据库应用课程设计论文.docx_第7页
第7页 / 共15页
数据库应用课程设计论文.docx_第8页
第8页 / 共15页
数据库应用课程设计论文.docx_第9页
第9页 / 共15页
数据库应用课程设计论文.docx_第10页
第10页 / 共15页
数据库应用课程设计论文.docx_第11页
第11页 / 共15页
数据库应用课程设计论文.docx_第12页
第12页 / 共15页
数据库应用课程设计论文.docx_第13页
第13页 / 共15页
数据库应用课程设计论文.docx_第14页
第14页 / 共15页
数据库应用课程设计论文.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

数据库应用课程设计论文.docx

《数据库应用课程设计论文.docx》由会员分享,可在线阅读,更多相关《数据库应用课程设计论文.docx(15页珍藏版)》请在冰点文库上搜索。

数据库应用课程设计论文.docx

数据库应用课程设计论文

华北科技学院

 

课程设计说明书

 

班级:

计算B092姓名:

赵礼阳(200909014201)

设计题目:

小样个人理财

设计时间:

2011.1.2至2011.1.13

********

评语:

________________________________

_________________________________________

_________________________________________

_________________________________________

_________________________________________

评阅成绩:

评阅教师:

_____

 

设计任务和技术要求:

设计个人理财管理系统,并实现前台C++和后台SQL数据库的链接,可以从前台的MFC界面访问数据库中的每个表,在前台的界面中实现个人理财信息的增加,删除和修改。

个人理财信息的查询。

并把增删改后的数据放在后台的数据库中。

实现以个人或者时间为单位,按时间或者姓名查找后的财务信息,在前台访问后台数据库的信息,输出访问数据库后符合要求的财务信息在前台MFC界面输出。

 

内容摘要:

为了完成整个系统的设计,首先是对整个系统的总体设计,整个系统要完成的工作如上所述,完成整个系统的设计需要完成三个部分的工作,首先是数据库的设计,数据库的设计需要分析数据库的功能需求分析,画出E-R图,编写数据字典,完成数据库的表的设计,为数据库添加对象。

其次是MFC的界面设计,界面设计需要分析所要完成的用户功能,设计相应的界面,实现各个界面之间额链接和视图。

最后需要链接数据库和MFC,使所要查询的数据来自数据库,并且对数据所做的增删改工作保存在数据库中。

并演示所有的功能。

 

1.总体设计

1.1总体设计的框架图

1.2框架图的阐述:

第一个界面是系统登录界面,在这个界面,用户需要输入账号和密码,并且账号和密码都正确才能成功进入该系统,进入系统后,就是用户输入输出界面。

用户输入输出界面一共分为两个输入输出窗口,上面是数据库内部数据的输出窗口,下方是查询记录后数据输出窗口,右上方一共包含四个单击事件按钮,分别是:

添加,删除,修改,保存。

单击添加按钮,软件自动跳转到另一个界面,也就是财务信息的输入界面(或者录入界面),界面中一个包含七个录入信息时间标题,分别是,日期,姓名,地址,工资,证券,保险,开支(分别代表消费日期,消费人姓名,消费地址,工资收入,证券收益,保险开支,生活开支,下面就以上面简称代替,后文就不一一做出解释了)。

工资、证券、保险、开支等都是float类型的,姓名,日期,地址等都是string类型的。

添加完成后点击确定按钮,软件自动回到输入输出界面,并且录入信息显示在上方输出列表中,并且输入的数据自动保存到后台数据库中,以便以后查询修改使用。

单击删除按钮,软件自动跳出下一界面(删除添加记录界面),在这个界面,用户只需要输入你想要删除人的姓名,然后再单击确定,系统数据库中符合要求的记录自动删除结束,并且回到上一界面,在上方输入窗口中也不再显示刚才删除的记录。

单击修改按钮,软件跳转到和添加记录是同样的界面,但是这个和添加记录是的操作不经相同,用户如果想要修改数据库中某个数据,用户必须准确输入某个数据在数据库中的时间、日期和姓名,这是为了验证修改信息,防止数据库中数据和前台保持一致,避免照成不一致性。

保存按钮,是把数据保存到软件指定的一个test文件中,这个和数据库关系不大,也可以不需要。

第二个选项是查询信息选项,在查询信息选项中有四个操作按键,一个是用户自定义选择查询项目(这里包括按姓名查找和按时间查找),另一个是与上面用户选择的查询条件是保持一致的输入窗体,如果按照时间查找,用户就在下面输入要查询的相应时间,若用户选择按姓名查找,用户就需要输入相应的查询者姓名,然后单击下面的查询按键,若数据库中存在用户要查询到的记录,则记录就自动从到右边的输出窗口显示出来,要是数据库中没有相应记录,则体统会提示没有要查询的记录。

最后一个就是删除查询记录按钮,这里就不仔细说明,操作方式和上面删除按钮是一样的。

以上操作数据的链接的实现是通过ODBC实现,从前台访问数据库。

 

2.数据库设计

2.1功能需求分析

根据以上的整体分析,对数据库建立了一张表,名字是ZLY,这里表的名字都是自己建立的,名字随便取,什么名字都不是最重要的。

在ZLY表中存放所有的财务信息。

数据库中表格如下:

ZLY(财务信息表)(日期riqi,姓名name,地址dizhi,工资gongzi,证券zhengquan,保险baoxian,开支kaizhi)

2.2E—R图设计

 

2.3数据字典

2.3.1ZLY表

解释

类型

宽度

能否为空

riqi

日期

char

10

可以

name

姓名

char

30

可以

dizhi

地址

char

10

可以

gongzi

工资收入

char

10

可以

zhengquan

证券收入

char

10

可以

baoxian

保险支出

char

10

可以

kaizhi

生活开支

char

10

可以

zongji

总计

char

10

可以

2.4建立数据库

2.4.1建立数据库的代码为:

CREATEDATABASEZLY

ONPRIMARY

(NAME='ZLY_data',

FILENAME='E:

\XMY\小蚂蚁成绩管理系统\ZLY.mdf',

SIZE=5,MAXSIZE=100,FILEGROWTH=10%)

LOGON

(NAME='ZLY_log1',

FILENAME='E:

\XMY\小蚂蚁成绩管理系统\ZLYlog.ldf',

SIZE=5,MAXSIZE=20,FILEGROWTH=20%),

(NAME='ZLY_log2',

FILENAME='E:

\XMY\小蚂蚁成绩管理系统\ZLYlog2.ldf',

SIZE=5,MAXSIZE=20,FILEGROWTH=20%)

ALTERDATABASEZLY

MODIFYFILE

(NAME='ZLY_data',

SIZE=10)

ALTERDATABASEZLY

MODIFYFILE

(NAME='ZLY_data',

MAXSIZE=UNLIMITED)

USEZLY

GO

createtableZLY(

riqichar(10)primarykey,

namechar(30)notnull,

dizhichar(10)Notnull,

gongzichar(10)Notnull,

zhengquanchar(10)Notnull,

baoxianchar(10)Notnull,

kaizhichar(10)Notnull,

zongjichar(10)Notnull,

 

2.4.2为表格添加对象

建立完所有的表格以后,为每个表格添加对象,利用企业管理器进行添加对象,在数据库中的表格下打开ZLY表格,添加对象,结果为:

ZLY表的返回结果

riqi

riqi

dizhi

gongzi

zhengquan

baoxian

kaizhi

zongji

2001-01-01

赵礼阳

重庆

9999.00

9999.00

999.00

999.00

2002-09-23

张成林

万州

1321.00

241.00

2412.00

24124.00

2009-08-12

苗超

邯郸

123124.00

241241.00

12412.00

231.00

数据库对象添加完毕以后,就完成了数据库的建立,数据库建立完成以后需要利用MFC进行编程,用MFC编辑界面对数据库进行访问。

3.MFC界面设计

3.1.主界面的设计

上边已经分析,在主界面上有两个信息区域分别为录入信息区域,财务信息查询区域,其中录入信息区域包括日期、姓名、地址、工资、证券、保险、开支、总计等录入的选项。

查询信息区域包括时间和姓名的查询的选项。

在打开的C++工程中建立对话框并添加控件运行的结果如图1。

 

图1登陆界面设计

这样就完成了登陆界面的窗体设计,登录窗体必须要匹配密码账号才能登陆进入系统。

当用户已登录系统后,软件马上后台连接到数据库,代码如下:

UpdateData(true);

CStringsql,startdate,enddate;

if(!

m_database.IsOpen())

if(!

m_database.Open(_T("zhao")))

MessageBox("failed~");

3.1响应主界面中相应按钮的对话框的设计

在登陆界面中,单击确定控制按钮,软件界面自动转到主菜单界面,链接代码如下:

Cam;

m.DoModal();

要是在界面中,单击或者双击某个控件按钮需要跳转到另外一个界面,都需要类似的话来执行系统的操作,Ca为类名,并且还需要头文件:

#include"Ca.h"

这样就完成了按钮与对话框之间的链接。

主界面上的每个控制按钮与相应对话框之间的链接都是通过这种方式实现的。

实现链接以后主要是设计以后的每个对话框执行相应的信息显示和操作功能。

3.2响应对话框的具体设计

3.2.1在主界面班级按钮下的对话框,要实现数据库中个人理财信息的录入和输出显示,而且要有查询增加修改删除等功能的实现,那就需要对该对话框添加控件,效果图如下:

 

图2主界面设计

图3信息录入界面设计

如上图,如果用户是添加理财信息,输入玩理财信息后,则单击确认添加,若退出添加,则单击取消回到之前的主界面,取消按钮时为后面的修改设置的。

图3信息录入界面设计

 

上图为删除理财信息窗体,在窗体中只有一个信息录入,也就是只要输入姓名,如果数据库中有此姓名的数据信息,则单击确认后系统就自动删除与该姓名匹配的所有理财信息,与此同时主窗体中不在有该人的理财记录,数据库中也不再存在该人的记录。

本来想设计按时间删除,但是不能再这样一个窗体中实现,比如同一天有几个人的记录同时存在,要是按姓名删除就比较麻烦,如果按时间删除,就比较方便,也更节约时间,设置的方式和姓名的设置方式是一样的。

以下代码这是实现按姓名删除,要是想按时间删除,在姓名的地方改成时间的类名就可以了,当然别的地方略微有点不同,这儿就不做具体讲解了。

if(!

UpdateData())

return;TRY{

CStringsql;

//打开记录集,获取最大的家乡ID值.//插入新的家乡信息记录.

sql.Format("deletefromZLYwhere(name='"+m_name+"')");

try{if(m_name.IsEmpty()){

MessageBox("输入有误!

");return;}

m_database.ExecuteSQL(sql);///删除数据库里面的数据信息

MessageBox("删除成功!

");}catch(CDBExceptione){

MessageBox("错误!

");}}

CATCH(CDBException,ex){

AfxMessageBox(ex->m_strError);

AfxMessageBox(ex->m_strStateNativeOrigin);}

AND_CATCH(CException,e){

TCHARszError[100];

e->GetErrorMessage(szError,100);

AfxMessageBox(szError);}

END_CATCH

图4修改理财信息录入界面设计

前面已经讲解过了,单击修改按钮,跳转到上面的界面的代码编写和前面的Cam;m.DoModal();方法一样,只是名字不一样,头文件不一样,后面就不做一一解释了。

用户若要修改数据库中某一数据,根据数据库的类名定义,用户只需要正确输入日期就行了,别的信息可以可以随便添加,添加之后的也就是用户改动之后的结果,换句话说也就是用户除了消费时间不能更改,剩下的别的理财信息都可以随意更改。

保存按钮意义不大,可有可无!

3.2.2主界面下方输出窗体的各项功能与按钮下的相应对话框。

图5查询界面设计

如上图所示,用户可以更具自己的情况,选择适合自己的查询条件,软件包含了姓名和日期两个查询条件供使用者选择,用户选择姓名查询条件,则在下面的编辑框中输入要查询人的姓名,单击查询,若数据库中有此人的财务记录,通过数据库中算法的调用,会把查询到的记录在左边的输出菜单中输出,若没有此人的记录,系统则会弹出小窗口提示,没有此人记录等提示语言。

以下是查询功能的算法主要代码:

UpdateData(TRUE);

intnCurltem;

if(m_way=="日期"){

for(nCurltem=0;(m_list1.GetItemText(nCurltem,0)!

=m_var)&&(m_list1.GetItemText(nCurltem,1)!

="");nCurltem++){}

if(m_list1.GetItemText(nCurltem,1)=="")

{MessageBox("无该学生");return;}

else{inth=0;

h=m_list2.InsertItem(h,m_list1.GetItemText(nCurltem,0));

m_list2.SetItemText(h,1,m_list1.GetItemText(nCurltem,1));

m_list2.SetItemText(h,2,m_list1.GetItemText(nCurltem,2));m_list2.SetItemText(h,3,m_list1.GetItemText(nCurltem,3));

m_list2.SetItemText(h,4,m_list1.GetItemText(nCurltem,4));

m_list2.SetItemText(h,5,m_list1.GetItemText(nCurltem,5));

m_list2.SetItemText(h,6,m_list1.GetItemText(nCurltem,6));m_list2.SetItemText(h,7,m_list1.GetItemText(nCurltem,7));}}

if(m_way=="姓名"){

for(nCurltem=0;(m_list1.GetItemText(nCurltem,1)!

=m_var)&&(m_list1.GetItemText(nCurltem,1)!

="");nCurltem++){}

if(m_list1.GetItemText(nCurltem,1)=="")

{MessageBox("无该学生");return;}

else{inth=0;

h=m_list2.InsertItem(h,m_list1.GetItemText(nCurltem,0));m_list2.SetItemText(h,1,m_list1.GetItemText(nCurltem,1));m_list2.SetItemText(h,2,m_list1.GetItemText(nCurltem,2));m_list2.SetItemText(h,3,m_list1.GetItemText(nCurltem,3));m_list2.SetItemText(h,4,m_list1.GetItemText(nCurltem,4));

m_list2.SetItemText(h,5,m_list1.GetItemText(nCurltem,5));

m_list2.SetItemText(h,6,m_list1.GetItemText(nCurltem,6));

m_list2.SetItemText(h,7,m_list1.GetItemText(nCurltem,7));}}}

图6查询界面设计

上图为删除查询记录,当用户查找出某人的记录后,若要删除此人记录,则单击图五中删除查询记录,然后跳转到此界面,输入用户查找出的记录人姓名,单击确定,数据库中则删除了此人的财务记录,但是主界面上方的输出窗口中此人的记录暂时还会存在,因为数据库中虽然没有此人的记录了,但是后台数据库还没有更新,所以前台还会保存此人的财务信息,一旦退出系统,数据库自动更新,当再次登陆系统时,主界面就不再显示此人的财务信息。

以下是删除查询结果的算法的主要代码:

if(!

UpdateData())

return;TRY{

CStringsql;

sql.Format("deletefromZLYwhere(name='"+m_name+"')");

try{if(m_name.IsEmpty()){

MessageBox("输入有误!

");

return;}

m_database.ExecuteSQL(sql);MessageBox("删除成功!

");

}catch(CDBExceptione){

MessageBox("错误!

");}}

CATCH(CDBException,ex){

AfxMessageBox(ex->m_strError);

AfxMessageBox(ex->m_strStateNativeOrigin);}

AND_CATCH(CException,e){

TCHARszError[100];

e->GetErrorMessage(szError,100);

AfxMessageBox(szError);}

END_CATCH

CDialog:

:

OnOK();

 

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

当前位置:首页 > PPT模板 > 艺术创意

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2