最新数据库课程设计报告.docx
《最新数据库课程设计报告.docx》由会员分享,可在线阅读,更多相关《最新数据库课程设计报告.docx(21页珍藏版)》请在冰点文库上搜索。
最新数据库课程设计报告
目录
1.引言……………………………………………………………2
2.概要设计……………………………………………………….4
3.详细设计……………………………………………………….6
4.调试与运行结果及存在的主要问题………………………..16
5.课程设计小结…………………………………………………
6.参考文献……………………………………………………….
引言
1.设计目的:
配合《数据库系统概论》课程的教学,使学生能巩固和加深对数据库基础理论和基本知识的理解;掌握使用数据库进行软件设计的基本思想和方法;提高学生运用数据库理论解决实际问题的能力;培养学生调查研究、查阅技术文献、资料、手册以及编写技术文献的能力。
2.设计要求:
1、选好题目:
先分组,每组两个人(或单独完成),每个题目最多允许6人选做(即有三组),各班学习委员将本班同学的选题情况汇总后于第18周星期一晚上数据库原理概论课程设计时交给莫老师。
2、独立思考,独立完成:
两人一组时要求每个同学必须独立完成系统中的一个模块的设计任务,课程设计中各任务的设计和调试要求独立完成,遇到问题可以讨论,但不可以拷贝,若发现雷同,不管是抄袭还是被抄袭,直接评定为不及格。
3、做好上机准备:
每次上机前,要事先编制好准备调试的程序,认真想好调试步骤和有关环境的设置方法,准备好有关的文件。
4、根据编程实现的结果,按课程设计报告的撰写规范完成数据库系统课程设计报告(课程设计报告中必须有相关原理分析、程序设计、程序实现和程序调试等内容);课程设计报告(论文)的具体要求如下:
①课设报告(论文)按照规定用16K纸张进行排版打印,要求装订平整,否则要求返工;
②课设报告的装订顺序如下:
封面—任务书—中文摘要—目录—正文—附录;
③正文不少于3000字,正文部分至少包含以下内容,引言,概要设计,详细设计,调试及运行结果及存在的主要问题,课程设计小结以及参考文献。
5、每组实现的结果必须进行检查和演示;程序源代码和可执行程序必须上交,作为考核内容的一部分;(上交时每组交一份即可,文件夹的取名规则为:
“课设题目(***_***)”,***为完成人,如“企业人事管理系统的设计与实现(张三_李四)”。
该文件夹下包括四个目录:
“源代码”、“可执行文件”、“张三_课程设计报告”、“李四_课程设计报告”。
由学习委员按规定时间统一上交)。
6、报告提交:
时间——第18周周五下午5点之前;形式——课程设计报告(论文)打印稿,和电子文档,以及和系统相关的系统源代码和可执行程序。
3.设计环境:
设计环境具体有visualbasic6.0,MicrosoftSQLServer2000.
4.同组人员:
完成该设计的人员为04软件工程3班的方靖和邝锐强。
5.具体分工:
经过两人的讨论分析后共同完成该题目的需求分析,概念结构设计以及逻辑结构的设计。
在具体实施阶段方靖主要负责登陆界面,各职工基本资料的界面设计及相应的连接数据库部分,实现数据库备份和还原部分以及数据库数据的初始化。
邝锐强主要负责对各人员相关资料的删除,修改,增加部分的界面设计及相应的连接数据库部分,操作员管理和权限设置。
概要设计
1.系统需求分析:
通过调查本地的企业,根据企业的具体情况设计企业人事管理系统。
主要功能有:
①人事档案管理:
户口状况、政治面貌、生理状况、合同管理等;
②考勤加班出差管理;
③人事变动:
新进员工登记、员工离职登记、人事变更记录;
④考核奖惩;
⑤员工培训;
⑥系统维护:
如数据安全管理(含备份与恢复)、操作员管理、权限设置等;
由以上可知可以具体设计五类人员:
员工,维护部员工,经理,人事部经理以及总裁,其中员工只能查询本人的基本资料:
工号,姓名,性别,户籍情况,政治面貌,生理状况,合同,所属部门以及自身的考勤考核奖励情况。
而维护部员工除了可以完成普通员工的功能外还可以进行系统维护。
经理可以管理员工,包括增加删除本部门员工以及修改员工资料。
人事部经理在经理的功能上增加了可以删除增加修改其他部门员工资料的功能,而总裁可以任意增加删除修改所有部门经理及员工的资料。
而对于所有人员均记录其基本资料和日常状况资料。
2.系统结构设计:
由需求分析可以划出系统结构图,如下:
3.功能模块设计:
由以上分析可以划出功能模块设计图,如下:
详细设计
1.系统数据库设计:
经过需求分析设计后得出数据库设计的概念模型,其中包含两个实体,一个是人员表,一个是日常情况表。
如下:
人员(工号,姓名,性别,年龄,户口,政治面貌,生理状况,合同管理,照片,密码,所管(属)部门(地区),职位)
日常情况(工号,日期,考勤,加班,惩罚,培训)
具体创建表的具体代码如下:
createtableBaseTable(
BIDvarchar(10)notnullunique,
BNamevarchar(20)notnull,
BAgeint,
BSexvarchar
(2),
BResidencevarchar(50),
BPolityvarchar(50),
BHealthyvarchar(50),
BAgreementvarchar(50),
BDepartmentvarchar(20)notnull,
BPhotoimage,
BPasswordvarchar(50)notnull,
BPositionvarchar(10)notnull,
primarykey(BID),
check(BAge>0),
check(BSexin('男','女')),
check(BPositionin('员工','维护部员工','经理','人事经理','总裁'))
);
createtableExtendTable(
EIDvarchar(10)notnull,
EDatedatetimenotnull,
EStatevarchar(4),--考勤,内容为“请假,旷到,迟到,正常,出差”
EOverworkvarchar
(2),--加班,内容“有,无”
ERAPvarchar(500),--奖惩(rewardsandpunishment)
ETrainingvarchar(500),
primarykey(EID,EDate),
check(EStatein('请假','旷到','迟到','正常','出差')),
check(EOverworkin('有','无')),
foreignkey(EID)referencesBaseTable(BID)ondeletecascade
);
所创建表的设计图如下所示:
BaseTable表:
用E-R图表示该实体如下:
ExtendTable表:
用E-R图表示该实体如下:
完整的E-R图如下所示:
系统主要功能模块设计
各模块的主要算法对应的原代码
1、数据库的连接:
利用控件Adodc连接:
在Adodc控件中,设置ConnectStringProvider=”SQLOLEDB.1;IntegratedSecurity=SSPI;PersistSecurityInfo=False;InitialCatalog=ManageSystem”,然后再设置CommandType为8–adCmdUnknown,数据源定为SQL查询语句,语句内容根据不同需要而更改。
设定ConnectString属性
P.S:
当然,可以手工输入,也可以利用“生成”让VB自动给出语句。
设定RecordSource属性
连接数据库核心语句:
Adodc1.ConnectStringProvider=”SQLOLEDB.1;IntegratedSecurity=SSPI;PersistSecurityInfo=False;InitialCatalog=ManageSystem”
Adodc1.RecordSource=SQL查询语句
Adodc1.Recordset.Open
Adodc1.Refresh
断开数据库核心语句:
Adodc1.Recordset.Close
利用ADODB对象作为SQL连接接口:
由于在程序中使用瞬间连接数据库比长期连接数据库高效,而且在本程序中大量使用,因而新增了模块Module1,自定义了SqlConnect函数作为连接,SqlDisConnect函数来断开连接,方便编写程序,提高代码使用率,提高开发效率和运行效率。
连接数据库核心语句:
SetAdo_Conn=NewADODB.Connection
SetAdo_RS=NewADODB.Recordset
str_CS="Provider=SQLOLEDB.1;IntegratedSecurity=SSPI;PersistSecurityInfo=False;InitialCatalog=ManageSystem"
str_RS=SQL查询语句
SqlConnectAdo_Conn,Ado_RS,str_CS,str_RS
其中模块中定义了SqlConnect函数:
PublicSubSqlConnect(ByValAdo_ConnectionAsADODB.Connection,_
ByValAdo_RecordsetAsADODB.Recordset,_
Ado_ConnectionStringAsString,_
Ado_RecordSourceAsString)
Ado_Connection.ConnectionString=Ado_ConnectionString
Ado_Connection.ConnectionTimeout=30
Ado_Connection.Open
Ado_Recordset.OpenAdo_RecordSource,Ado_Connection
EndSub
断开数据库核心语句:
SqlDisConnectAdo_RS
其中模块中定义了SqlDisConnect函数:
PublicSubSqlDisConnect(ByValAdoRecordsetAsADODB.Recordset)
IfAdoRecordset.StateThenAdoRecordset.Close
EndSub
2、数据的查询:
利用表格方式对SQL数据进行查询:
利用连接数据库的方法,返回一个RecordSet集合。
通过MSHFlexGrid控件、DataGrid控件等控件对集合作表格方式的输出。
使用Adodc控件时,可以通过属性的设定,把MSHFlexGrid控件、DataGrid1控件捆绑在Adodc控件上。
对用Adodc控件捆绑
当使用ADODB对象时,可以通过Set语句对MSHFlexGrid.DataSourse进行赋ADODB对象的Recordset值。
但是DataGrid1则不能。
利用字符窜方式对SQL数据进行查询
利用连接数据库的方法,返回一个RecordSet集合。
通过对RecordSet集合的提取,把元组中的属性值赋给TextBox等控件控件,让其输出。
核心代码:
Adodc1.Recordset.MoveFirst
Adodc1.Recordset.Find"工号='1234"
Text1.Text=Adodc1.Recordset.Fields("工号").Value
Text2.Text=Adodc1.Recordset.Fields("姓名").Value
.
.
.
对查询所得到的集合作出判空:
方法有多种:
(设Ado_RS为Recordset)
A、利用EOF和BOF两个属性进行判断:
IfAdo_RS.BOF=FalseAndAdo_RS.EOF=FalseThen
集合不为空
Else
集合为空
EndIf
B、利用Recordset的RecordCount属性判断:
IfAdo_RS.RecordCount>0Then
集合不为空
Else
集合为空
EndIf
C、利用DataGrid的ApproxCount属性来判断:
判断条件会因表格的自定义显示而有所不同
IfDataGrid1.ApproxCount>0Then
集合不为空
Else
集合为空
EndIf
D、利用MSHFlexGrid的Rows属性判断:
判断条件会因表格的自定义显示而有所不同
IfMSHFlexGrid1.Rows>1Then
集合不为空
Else
集合为空
EndIf
查询特定元组
对于特定元组,由于主码的唯一性,所以当对主码作准确查询时,所得的表只有两种情况:
只有一条元组或者什么都没有。
通过
的方法,可以对集合判空。
如果为空,则认为特定元组不存在,,查询失败;如果返回一条元组,则指针肯定是指向该元组,可以马上对数据进行读取。
核心代码:
SetAdo_Conn=NewADODB.Connection
SetAdo_RS=NewADODB.Recordset
str_CS="Provider=SQLOLEDB.1;IntegratedSecurity=SSPI;PersistSecurityInfo=False;InitialCatalog=ManageSystem"
str_RS="select*fromBaseTablewhereBID='"&Trim(Text1.Text)&"'"
SqlConnectAdo_Conn,Ado_RS,str_CS,str_RS
Ado_RS.RecordCount
'检测帐号是否存在
IfAdo_RS.EOF=FalseThen'如果帐号存在
IfTrim(Ado_RS.Fields("BID"))=Trim(Text1.Text)AndTrim(Ado_RS.Fields("BPassword"))=Trim(Text2.Text)Then
还有一种方法,利用Find方法进行查找,如果找到则指针指向该元组。
如找不到则返回错误。
因此利用捕获错误的方法也可以得到效果。
第三种,利用MSHFlexGrid控件、DataGrid控件等,均可以利用控件内部的属性和方法进行查询。
3、数据的修改:
利用嵌入SQL语句。
首先使用ADODB对象连接的方法,利用ADODB.Connection.
Execute直接嵌套运行SQL语句对数据进行修改。
核心语句:
Ado_Conn.Execute“updata表名set某属性=XX”
此外还可以利用ADO接口提供的Fields属性对数据进行修改。
核心语句:
Adodc1.Recordset.Find"工号='"&Text3.Text&"'"
Adodc1.Recordset.Fields("姓名")=Text4.Text
Adodc1.Recordset.Fields("所属部门")=Combo2.Text
Adodc1.Recordset.Fields("职位")=Combo3.Text
Adodc1.Recordset.Update
Adodc1.Refresh
利用DataGrid控件对数据库进行强行修改。
只需要连接好数据库,然后对DataGrid进行捆绑,而且DataGrid的AllowUpdate等属性设为True就可以通过界面直接修改。
4、数据的删除
基本方法跟3一样。
使用SQL嵌套语句删除数据。
Ado_Conn.Execute“deletefrom表名where某属性=XX”
此外还可以利用ADO接口提供的Fields属性对数据进行修改。
核心语句:
Adodc1.Recordset.MoveFirst
Adodc1.Recordset.Find"工号='"&Text3.Text&"'"
Adodc1.Recordset.Delete
Adodc1.Recordset.Update
5、数据的添加:
基本方法跟3一样。
使用SQL嵌套语句增加数据。
Ado_Conn.Execute“insertinto表名values(某属性=XX)”
此外还可以利用ADO接口提供的Fields属性对数据进行修改。
核心语句:
Adodc1.Recordset.MoveFirst
Adodc1.Recordset.AddItem
Adodc1.Recordset.Fields("姓名")=Text4.Text
Adodc1.Recordset.Fields("所属部门")=Combo2.Text
Adodc1.Recordset.Fields("职位")=Combo3.Text
Adodc1.Recordset.Update
Adodc1.Refresh
7、权限的分配
读取BaseTable(员工基本表)里面的BPosition(职位)。
通过对其的判断,来选择其他更多的步骤。
核心语句:
SelectCaseTrim(Ado_RS.Fields("BPosition"))'检测权限
Case"总裁"
…………
Case"人事经理"
…………
Case"经理"
…………
Case"维护部员工"
…………
Case"员工"
…………
EndSelect
调试与运行结果及主要问题
在程序设计过程中遇到的主要问题是如何将数据库数据和vb连接起来,设置外码与被参照关系中主码的及联关系以及如何高效地实现查询功能。
同时由于在数据库基本资料表中添加了照片属性,但由于能力有限,至今仍不懂往数据库表中插入图片的方法。
另外一个方面的问题就是界面不够漂亮,显得有点死板。
主要截图如下:
登陆框
总裁管理截图
员工管理截图
数据备份和恢复
经理管理截图
考勤-奖惩-培训一览表
添加经理截图
添加员工截图
维护员工查询截图
一般员工查询截图
*课程设计小结*
首先要感谢老师,如果没有她的耐心指导,我就连数据库是什么都不可能懂。
通过这次的课程设计,让我首次编写连接数据库的程序,大约地了解程序设计是怎样一回事,并总结到一些经验,也使老师的教导化成了成果。
虽然这一个星期需要不断查资料,然后对着电脑,把一个一个郁闷得问题解决,那过程真的是苦不堪言。
但当自己把所学的东西化成成品以后,也便忘了那黑暗的一个星期了。
记得有人说过:
“学习过程的彷徨犹豫、挫折困顿、在日积月累的渐悟或剎那之间的顿悟之后,彷佛都成了遥远模糊的回忆。
”似乎又一次的感受到这种喜悦。
在进行需求分析、建立E-R图和建立数据模型,我跟方靖进行了探讨,一次一次的修正,然后再询问老师意见,终于确定好了数据模型。
一个良好的数据模型,给以后的编写程序带来了很大方便。
在编写代码的过程中,学会了怎么连接数据库,而且对其进行操作,真的是获益匪浅。
相信这次的经验,对我日后工作会有相当大的帮助。
参考文献
1.萨师煊,王珊。
数据库系统概论(第三版)
2.刘晓华。
SQLServer2000数据库应用开发
3.张勇。
VisualBasic课程设计案例精编
4.EVangelosPetroutsos,KevinHough(邱仲潘译)VisualBasic6高级开发指南