资源描述
山东交通学院
目 录
1. 系统分析 2
1.1系统需求分析 2
1.2项目规划 2
1.3系统功能结构分析 3
1.4设计目的分析 3
2.数据库系统设计 4
2.1 数据表概要设计 4
2.2 数据库逻辑结构设计 4
3. 应用程序设计 5
3.1 界面设置 5
3.2 关键技术 15
4. 系统安装 20
建立数据源 20
5. 设计体会 21
参考文献 22
摘要
随着经济社会的发展,计算机已被应用到社会生活的各个领域。与此同时,互联网作为信息技术的通信桥梁连接着全球的计算机,而网站作为网络信息主要的表现形式而且还是互联网信息的主要承载者,在网络上表现出其及其重要的地位,并发挥着极其重要的作用。无论是在国内还是国外都得以迅速的发展和壮大,并被人们重视和关注。互联网已经彻底的改变了世界,互联网的世界里蕴藏着无限的可能,在这种情况下,各行各业及其个人、单位、工厂、企事业等等在网上构筑属于自己的网络信息平台,保护自己的网络资源并在互联网上开辟自己的市场和消费群体,以及构造自己的数字化世界和加强全球范围内不同地域的人们联系交流等等活动也就显的日益重要。于是各种各样的网站便如雨后春笋般地出现鱼龙混杂且良莠不齐。因此,个人信息的管理就显得尤为重要了。不仅可以更好的保护个人信息,对日常的使用也会提供很大的方便。
关键词:个人信息管理系统;数据集;数据库;Visual C++6.0。
1. 系统分析
1.1系统需求分析
在做本系统前,我对系统的需求做了如下分析:
1)登录权限:在登录权限的分析上我们规定必须凭借用户名和密码才可登陆,进行管理。
2)使用者功能:首先说明一下,我们的系统用户对象是个人。关于其本系统的功能,大致可分为日记管理,通讯录管理,备忘录管理,以及个人财务管理;日记管理,其中包括用户对日记编号,时间,地点,事件、人物的查询、修改、添加和删除功能;通讯录管理,其中包括对通讯人编号、姓名、联系方式、工作地点、城市、备注等的查询、修改、删除和添加功能。备忘录管理,包括对时间、地点、事件的查询、修改、删除和添加功能。个人财务管理包括对总收入、消费项目、消费金额、消费时间、剩余资金等的查询、修改、删除和添加功能。
3)系统美观性:站在实用的角度,我们考虑到作为个人信息管理系统,除了具备应有的功能外,给使用者以赏心悦目之感也是一种需求。所以本系统在视觉效果上有独具一格的美感。
1.2项目规划
根据需求分析,设计系统框架。本花店销售管理系统有5个模块组成。设计各部分具体功能如下:
1)用户登录模块: 用户账号,密码。
2)日记管理模块: 日记编号,时间,地点,事件,人物。
3)通讯录管理模块:通讯人编号,姓名,联系方式,工作地点,城市,备注等。
4)备忘录管理模块:编号,时间,地点,事件。
5)个人财务模块:编号,总收入,消费项目,消费金额,消费时间,剩余资金等。
1.3系统功能结构分析
个人信息管理系统的功能结构如图所示。
用户登录
财务管理
通讯录
备忘录
日记
显示信息
查询信息
添加信息
删除信息
修改信息
1.4设计目的分析
本系统是根据中小企业的实际需求而开发的,能够实现个人信息管理工作,通过本系统可以达到以下目标:
1)系统运行稳定,安全可靠。
2)界面设计美观,人机交互界面友好。
3)信息查询灵活、方便、快捷、准确,数据存储安全可靠。
4)信息安全保密。
2.数据库系统设计
2.1 数据表概要设计
图2.1数据库概要说明所示的即为本系统中数据库的数据表结构图,该数据表结构图包含系统所有数据表。可以清晰地反应数据库信息。
2.2 数据库逻辑结构设计
表一 通讯录信息表:
表二 日记信息表:
表三 备忘录信息表:
表四 财务管理信息表:
表五 用户登录信息表:
3. 应用程序设计
3.1 界面设置
用户登陆界面:
主界面:
通讯录显示界面:
通讯录查询界面:
通讯录删除界面:
通讯录添加界面:
通讯录修改界面:
日记显示界面:
日记查询界面:
日记删除界面;
日记添加界面;
日记修改界面;
备忘录显示界面;
备忘录查询界面;
备忘录删除界面;
备忘录添加界面;
备忘录修改界面;
财务管理显示界面;
财务管理查询界面;
财务管理删除界面;
财务管理添加界面;
财务管理修改界面;
3.2 关键技术
1 触发器技术
ALTER trigger [dbo].[add_diary] on [dbo].[addresslist] for update
as
begin
declare @old char(6)
declare @new char(6)
select @new=name from inserted
select @old=name from deleted
Update diary set name=@new where name=@old
End
2 存储过程
create proc hyproc
@minprice varchar(10),
@maxprice varchar(10)
as
select *from charge where price between @minprice and @maxprice
execute hyproc 900,2000
3 约束
alter table addresslist
add constraint length_11
check(
len(telephone)=11 and telephone like'[1][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
)
4 登录界面
void CMyView::OnButton1()
{
// TODO: Add your control notification handler code here
UpdateData();
if((m_a=="")||(m_b==""))
MessageBox("用户名和密码不能为空,请重新输入!","温馨提示:");
else if((m_a==m_pSet->m_name)||(m_b==m_pSet->m_key))
{
int a=(int)::ShellExecute(NULL, _T("open"),_T("E:\\VC++6.0\\程序\\dl\\Debug\\dl.exe"),NULL,NULL,SW_SHOW);
AfxGetMainWnd()->CloseWindow();
}
else
MessageBox("用户名和密码错误,请重新输入!","温馨提示:");
UpdateData(FALSE);
}
5初始化
void CMyView::OnInitialUpdate()
{
m_pSet = &GetDocument()->m_mySet;
CRecordView::OnInitialUpdate();
GetParentFrame()->RecalcLayout();
ResizeParentToFit();
m_Record_List.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
LV_COLUMN h;
h.mask=LVCF_FMT|LVCF_TEXT|LVCF_WIDTH;
h.fmt=LVCFMT_CENTER;
h.cx=90;
h.pszText="diaryID";
m_Record_List.InsertColumn(0,&h);
h.pszText="date";
m_Record_List.InsertColumn(1,&h);
h.pszText="address";
m_Record_List.InsertColumn(2,&h);
h.pszText="event";
m_Record_List.InsertColumn(3,&h);
h.pszText="name";
m_Record_List.InsertColumn(4,&h);
6 显示数据操作技术
void CMyView::OnButtonxianshi()
{
// TODO: Add your control notification handler code here
m_Record_List.DeleteAllItems();//清屏函数
CString s;
int i=0;
m_pSet->MoveFirst();
while(!m_pSet->IsEOF())
{
m_Record_List.InsertItem(i,m_pSet->m_diaryID);
m_Record_List.SetItemText(i,1,m_pSet->m_time);
m_Record_List.SetItemText(i,2,m_pSet->m_address);
m_Record_List.SetItemText(i,3,m_pSet->m_event);
m_Record_List.SetItemText(i,4,m_pSet->m_name);
m_pSet->MoveNext();
i++;
}
}
7 查询数据操作技术
void CMyView::OnButtonchaxun()
{
// TODO: Add your control notification handler code here
m_Record_List.DeleteAllItems();//清屏函数
CString s;
m_pSet->MoveFirst();
chaxun dlg;
if(dlg.DoModal()==IDOK)
{
int i=0;
while(!m_pSet->IsEOF())
{
if(m_pSet->m_diaryID==dlg.m_e1||m_pSet->m_time==dlg.m_e2)
{
m_Record_List.InsertItem(i,m_pSet->m_diaryID);
m_Record_List.SetItemText(i,1,m_pSet->m_time);
m_Record_List.SetItemText(i,2,m_pSet->m_address);
m_Record_List.SetItemText(i,3,m_pSet->m_event);
m_Record_List.SetItemText(i,4,m_pSet->m_name);
i++;
}
m_pSet->MoveNext();
}
}
}
8 添加数据操作技术
void CMyView::OnButtontianjia()
{
// TODO: Add your control notification handler code here
m_Record_List.DeleteAllItems();//清屏
tianjia dlg;
CString s;
if(dlg.DoModal()==IDOK)
{
m_pSet->AddNew();
m_pSet->m_diaryID=dlg.m_e1;
m_pSet->m_time=dlg.m_e2;
m_pSet->m_address=dlg.m_e3;
m_pSet->m_event=dlg.m_e4;
m_pSet->m_name=dlg.m_e5;
m_pSet->Update();
m_pSet->MoveLast();
CString s;
m_Record_List.InsertItem(0,m_pSet->m_diaryID);
m_Record_List.SetItemText(0,1,m_pSet->m_time);
m_Record_List.SetItemText(0,2,m_pSet->m_address);
m_Record_List.SetItemText(0,3,m_pSet->m_event);
m_Record_List.SetItemText(0,4,m_pSet->m_name);
}
}
9 删除操作技术
void CMyView::OnButtonshanchu()
{
// TODO: Add your control notification handler code here
m_Record_List.DeleteAllItems();//清屏函数
CString s;
shanchu dlg;
bool b=0;
m_pSet->MoveFirst();
if(dlg.DoModal()==IDOK)
{
while(!m_pSet->IsEOF())
{
if(m_pSet->m_diaryID==dlg.m_e1||m_pSet->m_time==dlg.m_e2)
{
m_pSet->Delete();
b=1;
MessageBox("记录已删除!");
}
m_pSet->MoveNext();
}
if(!b) MessageBox("记录没找到!");
}
}
10 修改操作技术
void CMyView::OnButtonxiugai()
{
// TODO: Add your control notification handler code here
m_Record_List.DeleteAllItems();//清屏函数
CString s;
xiugai dlg;
bool b=0;
m_pSet->MoveFirst();
if (dlg.DoModal()==IDOK)
{
while(!m_pSet->IsEOF())
{
if(m_pSet->m_time==dlg.m_e)
{
m_pSet->Delete();
b=1;
//MessageBox();
}
m_pSet->MoveNext();
}
m_pSet->AddNew();
m_pSet->m_diaryID=dlg.m_e1;
m_pSet->m_time=dlg.m_e2;
m_pSet->m_address=dlg.m_e3;
m_pSet->m_event=dlg.m_e4;
m_pSet->m_name=dlg.m_e5;
m_pSet->Update();
m_pSet->MoveLast();
CString s;
m_Record_List.InsertItem(0,m_pSet->m_diaryID);
m_Record_List.SetItemText(0,1,m_pSet->m_time);
m_Record_List.SetItemText(0,2,m_pSet->m_address);
m_Record_List.SetItemText(0,3,m_pSet->m_event);
m_Record_List.SetItemText(0,4,m_pSet->m_name);
}
}
11 对话框美化技术
void CMyView::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: Add your message handler code here
// Do not call CRecordView::OnPaint() for painting messages
CRect rect;
GetClientRect(&rect);
CDC dcMem;
dcMem.CreateCompatibleDC(&dc);
CBitmap bmpBackground;
bmpBackground.LoadBitmap(IDB_BITMAP2);
BITMAP bitmap;
bmpBackground.GetBitmap(&bitmap);
CBitmap *bpmpOld=dcMem.SelectObject(&bmpBackground);
dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,bitmap.bmWidth,bitmap.bmHeight,SRCCOPY);
}
4. 系统安装
建立数据源
我的电脑à控制面板à管理工具à双击数据源 (ODBC) 弹出对话框后一次进行如下操作,图4.5所示:
选择系统DSNà点击添加à选择Serverà完成à填写à下一步à更改默认数据库à下一步à测试数据源à点击完成à确定。
图4.5 数据源建立图
5. 设计体会
(1)经过两周的课程设计,我首先感觉到的一点是,没有学不会,只有不会学!今天看着我们做出来的东西,虽然不是很好但是这个确实有了!
(2)上面提到不会到会,现在我就说说这几周我都学到了什么吧,自豪一下:首先我认识了并应用了MFC,基本框架的建立修饰美化对我来说都是新收获!其次我知道了什么是数据源,怎么建立数据源,我自我感觉收获最大的是我知道了数据库和高级语言的连接,这可是实实在在的应用我也终于走出了运行的那个黑框框,进入了可操作的框架了!
(3)这次课程设计不只是学到了应用性的知识,我觉得更重要的是这个过程中给我心智带来的提升!闷闷的机房难看的英文字母多次让我想逃避,但最后还是坚持下来了,这是对我的意志力的考验更是一种提升。在这个过程中我学会了查找知识,我学会了与人讨论!等等。
参考文献
1.王珊. 数据库系统简明教程[M]. 北京:高等教育出版社
2.李闽溟等.Visual C++ 6.0 数据库系统开发实例导航[M]. 北京:人民邮电出版社
3. 耿文兰等.SQL Server 2000 数据库管理与开发[M]. 北京:电子工业出版社
4.闪四清.数据库系统原理与应用教程[M]. 北京:清华大学出版社
5.贺怀清等. VISUAL C++ 程序设计及应用[M]. 北京:电子出版社
22
展开阅读全文