数据库设计完整流程图

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录
实验一软件分析 (3)
一、功能说明 (3)
二、E-R图 (3)
三、逻辑表格 (5)
四、任务 (6)
实验二创建项目及数据库 (6)
一、创建项目 (6)
二、创建数据库 (6)
三、创建表并设定索引 (6)
四、建立表之间的关系 (8)
五、任务 (9)
实验三数据可视化操作 (9)
一、添加记录 (9)
二、修改记录 (12)
三、删除记录 (12)
四、任务 (12)
实验四使用命令操作数据库 (12)
一、数据库及表操作 (12)
二、任务 (15)
实验五表单设计 (15)
一、表单分析 (15)
二、使用向导创建表单 (16)
三、使用表单设计器修改表单 (19)
四、完成其他表单 (23)
实验六编写代码 (28)
一、创建系统主程序 (28)
二、编写登录表单的代码 (29)
三、编写主表单程序代码 (30)
四、编写管理员管理代码 (34)
五、提示信息添加代码 (36)
六、编写管理信息代码 (37)
七、今日提醒代码编写 (39)
八、编写部门管理代码 (41)
九、员工管理代码编写 (45)
十、使菜单和工具栏与表单关联 (45)
十一、任务 (46)
实验七设计报表 (46)
一、为报表准备数据 (46)
二、设计报表 (47)
三、操作注意 (51)
四、运行表单 (51)
五、任务 (51)
实验八编译发布 (52)
一、软件的编译 (52)
二、制作安装盘 (52)
三、任务 (56)
实验九分析及优化 (56)
实验一软件分析
请从网站下载示例程序,分析软件的功能并列出,并从中抽象出实体,画出软件的E-R 图并进行数据库逻辑设计,画出数据库逻辑设计表格。

参考如下:
一、功能说明
1)系统登录控制:要求填写用户名及密码,并进行了3次连续错误后系统退出功
能。

2)部门编码设置:主要是用来设置部门的层级关系。

3)部门信息设置:部分的基本信息,如地址、电话等。

4)员工信息管理:管理企业内部员工的信息,还可以设置生日提醒。

5)提醒设置功能:可以通过设置信息及接收用户及时间,当被设置的用户登录时
显示给用户。

6)今日提醒功能:根据提醒设置,显示相应信息。

7)系统设置:修改使用软件的单位信息。

8)密码修改功能:修改用户的密码。

二、E-R图
首先是进行实体的抽象,通过系统登录功能及用户密码修改功能,我们可以抽象出“用户”实体,通过部门编码及部门信息管理功能,可以抽象出“部门”实体,通过员工信息管理可得到“员工”实体,通过提醒功能及今日提醒功能可以抽象出“提醒”实体,最后就是系统基本信息,可以得到“系统”实体。

实体之间关系有E-R图
提醒实体
用户信息实体的E-R图
部门信息实体的E-R图
员工信息实体的E-R图
系统信息实体的E-R图
三、逻辑表格
通过上面的E-R图,我们已经确立了实体,现在我们要进一步把实体及属性更完善,进行数据库的逻辑设计
提醒信息
用户信息
部门信息
员工信息
birthday 日期8 生日
DPID 整型 4 所属部门
ISMsg 逻辑 1 是否生日提醒上面的字符可以进行相应的增加或删减,关键在于想实现的功能。

四、任务
仔细分析软件本身,并可以进行相应改进,完成软件分析任务。

把个人设计的软件也进行上述的过程,完成数据库概念设计及逻辑设计。

实验二创建项目及数据库
一、创建项目
1)在硬盘的相应目录下建立自己的项目文件夹,并在文件夹下建立data和doc两个
文件夹分别用来存放数据文件及开发文档。

2)打开VFP8.0,建立项目文件,命名为EPUser(可任意,为了后面方便表达)。

二、创建数据库
在项目管理器中新建一个数据库EPData,并保存在Data文件夹中。

三、创建表并设定索引
1)在EPData数据库下创建新表warning。

表设计器如下:
2)在warnid上建立主索引,在emplyid上建立普通索引。

3)依照上边的方法建立其他数据表。

最终如下:
四、建立表之间的关系
1)选中Epdata数据库,单击修改打开数据库设计器
2)把主表的主索引拖至从表的普通索引上建立关系
五、任务
a)完成企业员工管理软件的项目创建及数据库、数据库表的创建,并建立相应关系。

b)完成自主设计的软件的数据库、数据库表的创建工作。

实验三数据可视化操作
一、添加记录
a)打开实验二创建的项目,并打开epdata数据库的设计器。

b)双击Depart和employ表之间的关系线,打开关系设定窗口。

c)选择“referential integrity”选项,并选择插入规则,选择级连项,实现两表
之间的“相对完整性”,确定退出窗体。

d)在项目管理器中选择depart表,并选择“浏览”,打开浏览窗口,在“显示”菜单
中选择“追加模式”,在表中添加两条数据,如下图,在这里我们可以看到“聊城大学”这个部门的topid为0而“教育传播技术学院”的topid为“聊城大学”的id,通过这种方式实现部门间的级别管理,这种方式在开发中经常使用。

e)关闭depart表,再打开employ表,使用上述方式添加数据,当我们在Dpid中添
加了一个depart表中未出现的ID值时,会出现如下错误,而输入的值为正确的,则会被确认,从这里我们可以看到完整性检查的作用。

f)建立一个与employ结构相同的表employ1,在表中添加一些数据。

g)在打开employ表,选择“表”菜单中的追加记录,如下图,点击来源后面的浏览
按钮,找到employ1表,并设置选项,选中除自动编号以外的所有字段,确定后,查看employ表中是否添加了employ1中的数据。

二、修改记录
打开一个添加了数据的表格,然后使用“显示”菜单中的“编辑”实现对数据的修改,不再演示,大家也可以设置表之间的关系,看一下更新规则的作用。

三、删除记录
a)打开一个有数据的表格,点击记录左侧的小矩形,这样记录便被逻辑删除
b)进行物理删除,打开“表”菜单,选择彻底删除,便可以实现“物理删除”
四、任务
在我们建立的表中添加适量数据,以方便后续操作。

实验四使用命令操作数据库
一、数据库及表操作
1)创建数据库:Create DataBase stumanage
2)创建表:Create table classes(cid I AutoInc primarykey,classname c(20))
Create Table student(stuid c(10) primary key,stuname c(10),sex c(2) check sex=’男’or sex=’女’error “此数据只能为男或女”default ‘男’,classid I,foreign key classid tag classid references classes)
3)修改表结构:
ALTER TABLE classes add teacher c(6)
ALTER TABLE classes alter teacher c(8)
ALTER TABLE classes rename teacher to manager
ALTER TABLE classes drop manager
4)在当前工作期中打开要使用的表:USE classes或select classes
5)插入数据:
insert into classes(classname)values(‘2004级1班’)
insert into classes(classname)values(‘2004级2班’)
insert into classes(classname)values(‘2004级3班’)
6)浏览数据:browse或display或list,会发现使用display时只显示第一条记录,
这时需要使用范围语句 display all,大家可以使用条件语句看一下结果。

7)查看当前记录各信息:
recno() &&显示当前记录号
Bof() &&查看记录指针是否在最前
Eof() &&查看记录指针是否在最后
skip -1 &&使记录指针向前滚动一条
recno()
Bof()
Eof()
goto top &&使记录指针移到顶端
recno()
Bof()
Eof()
8)条件定位:
locate for cid=2
recno()
9)在学生表中插入数据:
INSERT into
student(stuid,stuname,sex,classid)values('20040101','zhang','男',1) INSERT into student(stuid,stuname,sex,classid)values('20040102','wang','女',2)
10)修改学生数据:update student set classid=3 where stuid=’20040101’
11)删除学生记录:
DELETE FROM student where stuid='20040101'
LIST
12)恢复被逻辑删除的记录:RECALL all
13)再执行上面的删除命令后使用Pack命令,把记录从磁盘彻底删除。

14)执行查询:
a)select * from student
b)select stuid,stuname from student
c)向学生表中多插入几条记录
d)select distinct sex from student
e)select sex as 性别 from student
f)select * from student where stuid=’20040101’
g)select * from student where stuid in(‘20040101’,’20040102’)
h)SELECT * from student where stuname like 'w%'
i)SELECT * from student where stuname like 'w_'
j)SELECT * from student where stuname like '__a%'
k)select count(*) as 学生总数 from student
l)SELECT A.*,B.classname from student A,classes B where A.classid=B.cid m)SELECT A.*,B.classname from student A inner join classes B on
A.classid=
B.cid
n)SELECT A.*,B.classname from student A right outer join classes B on
A.classid=
B.cid
o)SELECT * from student order by stuid desc
p)SELECT top 1 * from student order by stuid desc
q)Select count(*) as stucount,classid from student group by classid
r)Select * from student into cursor test
15)删除表:
drop table student
drop table classes
16)删除数据库:
CLOSE ALL
DELETE DATABASE stumanage
二、任务
使用上面的命令在员工管理数据库表的添加一些记录
实验五表单设计
一、表单分析
根据实验一中的项目功能分析,我们需要创建以下几个表单。

1)部分信息管理表单:实现对部分信息的添加、修改、删除等管理
2)员工信息管理表单:实现对员工信息的添加、修改、删除等管理
3)管理员管理表单:实现对管理员的添加、删除等管理
4)当前用户密码修改表单:修改当前用户的密码和真实姓名
5)信息提示表单:当启动软件时显示提示信息
6)提示信息设置表单:设置提示信息
7)登录表单
8)系统设置表单
9)关于表单
二、使用向导创建表单
1)打开员工管理项目,这里需要注意的是,VFP软件有可能对中文目录支持不太好,
如果出现类似问题,请把项目放在一个英文目录中。

2)在项目管理器中选择文档(documents),选择表单,并新建。

3)选择使用向导,这里有两项,一项是表单向导,另一个是一对多表单向导,可以看
出我们也可以使用向导产生基于两个表的表单。

4)选择使用到的表字段,这里实现管理员管理的表单,所以选择Manager表中的所有
字段。

5)选择表单样式,使用默认即可。

6)选择排序字段,这里也可以不选择。

7)最后一步,设置表单标题并设置保存,在项目文件夹下建立forms文件夹,并把表
单保存在内。

8)最终效果如下:
9)在我们的创建的数据库中,部门表与员工表之间存在一对多关系,使用向导自己建
立一个一对多的表单。

三、使用表单设计器修改表单
使用向导生成的表单有时不能满足我们的需要,这时,我们需要使用表单设计器来完善表单的设计。

下面我们来修改一下上面的表单。

1)选择我们刚才创建的表单,进行修改
2)下面是表单设计器,同时会打开表单控件面板和属性面板
3)选择表格控件,并在表单中单击,把控件添加到表单中。

4)使用表格生成器来使表格与数据表之间绑定。

5)选择显示的字段。

6)设置显示样式
7)修改表格字段显示的标题。

8)点击OK完成修改,关闭设计器并保存修改,使用项目管理器运行表单查看最终效
果。

9)对于由向导生成的控件,可以通过属性面板进行修改,如改变标题显示(caption)。

10)通过上述方式,多加测试,掌握表单设计的基本方法。

四、完成其他表单
1)部门信息管理:这里要用到一个Activex控件,方法是,打开“工具”菜单,选项
中选择控件面板,找到如下图的控件:
后从控件面板中选择如下:
就可以看到我们选择的组件,拖放到表单中就可以了。

2)员工信息管理
3)登录表单
4)管理员管理表单
5)用户密码修改表单
6)提示信息管理表单
7)提示信息添加表单,这里用了一个时间控件,如TreeView控件一样,自行添加进
来即可。

8)提示信息显示表单
实验六编写代码
本实验分三次完成,主要实现程序的所有代码,了解程序开发过程及代码开发技巧。

一、创建系统主程序
主程序是所编写程序的入口,主要设置运行环境、定义变量、常量,然后调用其他表单,本程序文件保存为main.prg。

CLEAR
CLEAR ALL
*把系统菜单隐藏掉
SET SYSMENU off
*程序运行时不允许使用ESC键退出
SET ESCAPE OFF
*关闭命令显示
SET TALK OFF
*覆盖时不要确认
SET SAFETY OFF
*设置时间格式,使用四位显示年代
SET CENTURY on
SET DATE YMD
*定义一个公共变量,保存当前用户信息
PUBLIC curuser
*调用登录表单
DO FORM forms\login
*进入事务处理,当执行clean events时结束
READ events
*当结束循环时执行退出
quit
二、编写登录表单的代码
打开实验五中已经制作的Login表单,修改控件相应属性。

控件属性值
组合框Name uname Rowsource manager.uname Rowsourcetype 6-fields
Style 2-dropdown list
文本框
Name Upwd
Passwordchar *
表单Autocenter True Borderstyle 2-固定对话框Closble F
Caption 用户登录controlbox F MaxButton F MinButton F
Name Frmlogin Showwindow 作为顶层表单Windowtyp 模式
选中表单,从属性面板中找到init事件,添加如下代码:
双击登录按钮,打开按钮的click事件:
为退出添加click事件:
三、编写主表单程序代码
主表单主要是起到调用其他表单的作用,在这里我们添加一个菜单和一个工具栏,从而了解如何创建表单与工具栏,以及如何在程序中使用它们。

创建主表单,保存为main,设置属性如下:
控件属性值
表单Autocenter True
Caption 企业员工管理系统Height 600
Width 600
MDIform T
Name Frmmain Showwindow 作为顶层表单Windowtyp 模式
创建菜单,在项目管理器中选择“其他”选项卡,选中菜单,新建:选择Menu,先制作如图的菜单
然后选择菜单“显示->常规选项”
选中“顶层表单”,设计表单时要注意的问题是,需要生成,而且每一次改动后都需要生成,否则使用的菜单是未生成前的菜单。

“菜单->生成菜单”:
好了,下面我们把菜单加入到主表单中去。

打开主表单,添加“init”事件:
DO menu\main.mpr WITH this
*这里的菜单地址,请根据自己的保存位置确定。

这里保存到menu文件件下了。

可以运行主表单看一下效果了。

下面制作工具栏,选择“类”选项卡,新建类:
从ToolBar类继承制作自己的工具栏,添加按钮,图片资源可以从FTP得到。

设置Showwindow属性值为“在顶层表单中”。

因为工具栏是与表单一级的对象,所以表单中不能容纳工具栏,所以需要建立一个表单集来放置表单与工具栏,打开主表单,使用“表单”菜单中的“新建表单集”建立表单集对象,这时我们使用代码的方式把工具栏加入到主表单中去,设置表单集的init事件。

PUBLIC isCreateToolbar
isCreateToolbar=0
再在Activate事件中添加如下代码:
IF isCreateToolbar=0
isCreateToolbar=1
*加载类
SET CLASSLIB TO lib\myclass
*使用类创建对象
this.AddObject("tool1","mytoolbar")
this.tool1.show
*把工具栏停放在表单的上部
this.tool1.dock(0)
endif
这时运行主表单,效果如下:
四、编写管理员管理代码
控件属性值
表格Name gmanager Enabled False Recordsource Manager
表单BufferMode 1
Caption 操作员管理
Name frmmanager
Showwindow 在顶层表单中打开表单的数据环境,选择manager表。

设置其属性。

buffermodeOveride:2,Exlusive:True
添加按钮的click事件:
thisform.gManager.Enabled= .T.
APPEND BLANK
GO bottom
thisform.gManager.coLUMN1.text1.SetFocus
thisform.Refresh
修改按钮的click事件:
thisform.gManager.Enabled=.t.
保存按钮的click事件:
YN=MESSAGEBOX("确定保存",4+32,"企业员工管理系统")
IF YN=6 then
IF TABLEUPDATE(.f.)=.f. then
MESSAGEBOX("保存出错")
ELSE
thisform.Refresh
ENDIF
ENDIF
thisform.gmanager.Enabled=.f.
取消按钮的click事件:
IF MESSAGEBOX("确认取消",4+32," 企业员工管理系统")==6 then TABLEREVERT(.f.)
ENDIF
thisform.gmanager.Enabled=.f.
thisform.Refresh
删除按钮的click事件:
IF MESSAGEBOX("确定删除",32+4," 企业员工管理系统")==6 then SELECT manager
DELETE
thisform.gmanager.RecordSource=null
PACK
thisform.gmanager.RecordSource="manager"
IF EOF()
SKIP -1
ELSE
IF BOF()
SKIP
ENDIF
ENDIF
thisform.Refresh
endif
五、提示信息添加代码
控件属性值Date and timer picker Name msgdate 文本域name msgcontent
保存按钮click事件:
SET DATE YMD
SET CENTURY on
mdate=TTOD(thisform.msgdate._value)
mcontent=ALLTRIM(thisform.msgcontent.Value)
IF EMPTY(mdate) .and. EMPTY(mcontent) then
MESSAGEBOX("时间和内容都不能为空")
return
ENDIF
IF MESSAGEBOX("确定保存",4+32,"企业员工管理系统")=6
INSERT INTO
warning(emplyid,wtype,showdate,msg)values(0,0,mdate,mcontent) MESSAGEBOX("提示信息已经添加到数据库中",64,"企业员工管理系统") thisform.Release
endif
取消按钮click事件:
thisform.Release
六、编写管理信息代码
此窗体的代码与管理员管理代码类似,所以可以很容易实现。

控件属性值
表格Name gmsg
Enabled False
Recordsource Manager
MousePointer 1-Arrow 表单BufferMode 1
Caption 操作员管理
Name Frmmsg
Showwindow 在顶层表单中打开表单的数据环境,选择waring表。

设置其属性。

buffermodeOveride:2,Exlusive:True
添加按钮onclick事件:
DO FORM forms/setmsg
Thisform.refresh
修改按钮的onclick事件:
IF MESSAGEBOX("确定保存修改信息",4+32,"企业员工管理系统")=6 then IF TABLEUPDATE(.f.)=.f. then
MESSAGEBOX("保存出错,请检查")
ELSE
thisform.Refresh
ENDif
ENDIF
thisform.gmsg.Enabled=.f.
取消按钮的onclick事件:
IF MESSAGEBOX("确认取消",4+32," 企业员工管理系统")==6 then TABLEREVERT(.f.)
ENDIF
thisform.gmanager.Enabled=.f.
thisform.Refresh
删除按钮的click事件:
IF MESSAGEBOX("确定删除",32+4," 企业员工管理系统")==6 then SELECT waring
DELETE
thisform.gmanager.RecordSource=null
PACK
thisform.gmanager.RecordSource="waring"
IF EOF()
SKIP -1
ELSE
IF BOF()
SKIP
ENDIF
ENDIF
thisform.Refresh
endif
七、今日提醒代码编写
控件属性值
Name msg 文本框
readonly true
表单init事件:
下一条按钮单击事件:
thisform.Refresh
确定按钮onclick事件:
IF thisform.isstart.Value=1
UPDATE sys SET isstart=.f.
ENDIF
thisform.release
八、编写部门管理代码
部门管理表单使用了一个ActiveX控件,如果想非常细致的了解此控件的使用方法,请参考FTP上给出的资料。

控件属性值
Name departTree
树型
Style 7
Name Ename
名称文本框
controlSource dpname
Name Eaddr
地址文本框
controlSource dpaddr
Name Ephone
电话文本框
controlSource dpphone
同样要设置表单对应的depart表格的属性:buffermodeOveride:2,Exlusive:True 首先我们给表单添加init事件:
给树形控件添加init事件
树形控件的onclick事件:
添加按钮onclick事件:
删除按钮onclick事件:
修改按钮onclick事件:
取消按钮onclick事件:
保存按钮onclick事件:
九、员工管理代码编写
员工管理代码请参考部门管理代码和管理员管理代码来完成。

十、使菜单和工具栏与表单关联
到这里,把目前编写的表单和主表单统一起来,使菜单项及工具栏按钮可以响应事件,打开菜单,修改相应项,如
提示信息管理下有子项,所以设置为Submenu,单击Edit进行修改如下
使用do form 表单名称(注意表单路径),来调用表单,其他相应修改。

打开工具栏,为工具栏上的按钮添加代码,如do form forms/depart来完成工具栏的代码添加。

十一、任务
把实验指导书中未给出的代码补齐,完成整个程序的代码编写。

实验七设计报表
一、为报表准备数据
新建一个本地视图,如下图所示,把Depart表和Employ表加入到视图中来,并设置显示的字段。

二、设计报表
1)新建报表
2)打开报表设计器
3)在报表菜单中打开标题总结对话框
4)选择相应选项,这里Newpage选项是为了让标题区和总结区在单独页中显示
5)在标题带区中添加以下标签控件,并输入文字
6)在page header带区中添加以下控件,标签控件中显示“聊城大学教育传播技术
学院----企业员工管理系统”,在后面添加一个域控件,显示Date(),下边添加几个矩形框,并改变其背景色,并使用标签控件在其上添加相应文字。

7)为报表添加数据环境,与表单添加数据环境相同。

需要注意的是需要选择视图选
项来显示视图对象。

8)在detail区添加域控件及矩形控件,注意上边框要移出带区的上边,而带区下边
框与要矩形下边框刚好一致,这样才会出来最终效果,如果与效果不一致,也可
以重新调整此处。

9)在page footer区添加如下文字及直线
最终效果如下:。

相关文档
最新文档