您的当前位置:首页正文

数据库课程设计

2020-02-25 来源:钮旅网


《数据库概论课程设计》

专业班级 学 号 姓 名 指导教师

计算机科学与技术074班

079074116 李秀山 周兵

安徽工业大学计算机学院

数据库系统课程设计之科研管理系统

一.题目:科研管理系统

二.目的和要求:

1. 掌握数据库设计的基本方法,熟悉数据库设计的步骤;

2. 通过设计数据库系统应用课题,进一步熟悉数据库管理系统的操作技术,提高动手能力,提高分析问题和解决问题的能力;

3. 学习基本数据库编程方法。

三.需求分析 1. 功能需求:

要较为真实的反应科研管理系统的运行状况,必须要能反应几个方面的信息,包括科研项目,项目获得的成果,参加人员信息,以及参加人员所在的部门的信息。

一个项目需要由一个或多个人员参加,并且必须要有一个主要负责人;

一个项目可以获得一个成果,但是可能也获取不了成果,获得成果的要有一个成果编号; 一个部门必须要有一个负责人,一个部门可以有多个成员参加,但是一个人只能属于一个部门;

获得成果编号的项目需要费每个参与者一个证书,这个证书要有一个证书排名;

人员的工资分成三部分,分别是基本工资、岗位工资和津贴工资,基本工资每个人都可以不同,岗位工资和津贴工资由职称决定;

科研管理系统的功能需求包括五个部分,就是对科研项目、获得成果、参加人员和人员所在部门的增、删、查、改,以及对人员参加项目的增加和删除。

增加功能需要用户输入项目的详细信息,但是违反数据库数据规则的数据输入将无法增加,比如对于项目的增加功能,增加的项目号不能重复,并且各输入的数据不能是空项;

删除功能是删除相应的实体(项目、成果、人员、部门)和删除人员参加项目的关系;

查找功能是根据相应的实体的若干个关键字来查找相应的实体,关键字的数目可以有多个也可以只有一个,但是如果某一个关键字可以决定就采用一个关键字,不论输入的关键字的数目是多少。比如,在查找项目时,当输入项目号码时,其他的关键字就不起作用。

查看功能是在另一个单独的窗口中查看相应实体的相关信息,这样可以更加直观; 修改功能,用来对相应的实体进行修改,但是必须遵循数据库对字段的约束条件。 2. 数据字典: 数据项名 含义说明 数据类型 长度 PROF CHAR 20 职称 JOBWAGE INT 岗位工资 ALLOWANCEWAGE 津贴工资 INT ANO CHAR 10 部门编号 ANAME CHAR 100 部门名称 AADDR CHAR 100 部门地址 APOSTCODE CHAR 10 部门邮编号码 APHONE CHAR 20 部门电话号码 AHNO CHAR 20 部门负责人编号 HNO CHAR 10 人员编号 HNAME CHAR 20 人员姓名 HSEX CHAR 2 人员性别 HNATION CHAR 10 人员名族 HEDU CHAR 10 人员学历 HBIRTH SMALLDATETIME 人员生日 HANO CHAR 10 人员所在部门号 HWORKTIME SMALLDATETIME 人员工作时间 2

数据库系统课程设计之科研管理系统

数据项名 含义说明 数据类型 HBASICWAGE INT 人员基本工资 HPROF CHAR 人员职称 PNO CHAR 项目编号 PNAME CHAR 项目名称 PSOURCE CHAR 项目来源 PSTATIME SMALLDATETIME 项目开始时间 PENDTIME SMALLDATETIME 项目结束时间 PINVE INT 项目投资经费 PHNO CHAR 项目负责人编号 PRNO CHAR 成果编号 PRNAME CHAR 成果名称 PNO CHAR 成果所在项目号 PRANK CHAR 成果级别 PRGRADE INT 成果等级 PRCLASS CHAR 成果类别 PRADMTIME SMALLDATETIME 成果颁发日期 ROLE CHAR 参加项目角色 CNO INT 证书排名 ID CHAR 用户名 PASSWORD CHAR 密码 四.概念结构设计 数据库的E--R图: 参加角色 m n 科研项目 人员 参加 1 1 n 1 获 得 获属 1 得 证书 于 n 属 于 1 1 1 科研成果 部门

长度 20 10 100 10 10 10 100 10 10 20 20 10 10 拥有 1 职称 3

数据库系统课程设计之科研管理系统

用户名

密码 用户信息 权限 项目编号 项目名称

项目来源 科研项目 项目经费 截止时间 开始时间

成果编号 项目编号

成果类别 科研成果 成果级别 批准时间 成果等级

成果名称

4

数据库系统课程设计之科研管理系统

部门编号 部门名称 负责人编号哦部门 部门地址 啊 邮编 联系电话 人员编号 人员姓名

人员性别 文化程度

出生日期 人员 所在部门

职称

名族 工作时间 基本工资 岗位工资 职称 津贴工资 职称名 5

数据库系统课程设计之科研管理系统

五.逻辑结构设计

用户(用户名,密码,权限);

职称(职称名,岗位工资,津贴工资);

部门(部门号,部门名称,地址,邮编,联系方式,负责人号码);

人员(编号,名字,性别,出生日期,名族,部门号,基本工资,学历,职称,工作时间); 项目(项目号,项目名称,负责人编号,来源,起始时间,结束时间,经费); 成果(成果编号,名称,项目编号,级别,类别,等级,批准时间); 证书(成果号,人员编号,证书排名); 参加(项目号,人员编号,角色);

六.数据库应用开发:(界面图,详细功能说明,部分代码)

数据库连接相关:

本次课程设计,我用的是VC++和SQL SERVER,采用的方法是ADO连接数据库的方法。 连接数据库前,首先需要引入ADO动态链接库,代码如下:

#import \"C:\\Program Files\\Common Files\\System\\ADO\\msado15.dll\" \\ no_namespace rename(\"EOF\

然后为相应的类的头文件中加入三个变量,如下: public: _ConnectionPtr m_pConn; _RecordsetPtr m_pRec; _CommandPtr m_pCom;

然后在窗口的初始化文件中初始化COM库,并给三个变量创建实例 if(FAILED(::CoInitialize(NULL))) { AfxMessageBox(\"ADO INTI FAILED\"); return false; } try {//注意一步一步检查 m_pConn.CreateInstance(__uuidof(Connection)); m_pRec.CreateInstance(__uuidof(Recordset)); m_pCom.CreateInstance(__uuidof(Command)); 接着是打开相应的数据库,并获得关于用户信息的记录集:

m_pConn->Open( \"Provider=SQLOLEDB.1;Server=127.0.0.1;DATABASE=RESEARCH\\"sa\

CString strsql=\"select * from userinfo\"; BSTR bstrsql=strsql.AllocSysString();

m_pRec->Open(bstrsql,(IDispatch*)m_pConn,adOpenDynamic,adLockOptimistic,adCmdText); }

Catch(_com_error &e) {

MessageBox(e.Discription());

}

登陆功能: 界面:

6

数据库系统课程设计之科研管理系统

功能说明:

点击程序后,用户输入用户名和密码进行登录。然后,程序会遍历数据库中的用户信息,包括用户名、密码和相应的权限。如果输入的用户名和密码正确,则登陆系统;如果错误,则直接退出程序,并提示“用户不存在或密码错误”;

系统主界面:

功能说明:

系统主界面主要由一个菜单和一个TAB控件组成,菜单用来实现账户密码的修改人物;而TAB控件的四个标签项分别对应项目、科研成果、人员和部门四个标签,每个标签项分别对应一个子窗口,子窗口内有五个按钮和四个列表控制控件,列表控制控件用来显示当前状态下系统数据库中关于该实体的数据信息,以及在查找相关实体时用做显示查找结果的窗口。

登陆进入主界面,默认显示的是项目的标签,并且,系统会根据登陆账户的权限对某些按钮实施控制,使其不可用。当以管理员身份登录时(数据库中相应权限为0),全部按钮都可用;以普通用户身份登录时,只能查找和查看相关信息,不能做修改,因此增加、删除和修改按钮变得不可用。

7

数据库系统课程设计之科研管理系统

修改密码界面:

功能说明:

修改密码界面是从菜单项中的账户管理菜单项中弹出的,用以修改用户登录的用户名的密码。用户需要输入旧密码,并两次输入新的密码。如果旧密码输入不正确的话,系统会提示旧密码不正确;或者用户两次输入的新密码不一致时,系统会提示“两次输入的密码不一致”,也会阻止用户修改相关密码。 增加功能: 界面:

功能说明:

增加界面是用来添加相关记录的,用户输入相关信息,点击确定。程序会将输入的信息加入到数据库中,使用m_pRec 的AddNew()和PutCollect函数,增加相关信息,然后再Update()即可。当用户输入的数据不符合数据库的完整性约束时,程序会捕获DBMS给出的错误信息,然后会弹出数据库管理系统给出的错误信息;如果输入的数据正确的话,就会将该数据导入数据库,并在相应标签项的子窗口中的列表控制项中加入刚刚输入的信息;

删除功能:

删除功能不需要给出多余的界面,只需要在对应的列表控制控件中选中某一行,并单击删除按钮即可。但是,当删除的数据违反了完整性约束条件时,系统会捕获DBMS给出的错误,并给出相应的显示,阻止用户删除。

8

数据库系统课程设计之科研管理系统

修改功能: 界面:

功能说明:

当在一个标签中的列表控制控件中选中一个数据,单击修改按钮,会弹出一个修改相应实体的对话框。该对话框在初始化时,会在各控件中将选中的数据的信息写入,这样可以方便用户了解修改前的数据并清楚需要修改的内容。当对相应的控件中的值修改,并单击确定按钮之后,如果修改的数据满足数据库的完整性约束条件的要求,就会将数据库中相应的数据进行修改,然后,在列表控制控件中也做相应的修改。 查找功能: 界面:

功能说明:

查找功能是根据部分关键字查找数据,当用户单击了查找按钮之后,会弹出一个查找的对话框。用户在此对话框的控件中输入用户知道的信息,单击确定按钮之后,系统便将用户输入的信息组织成一条带有各种条件的SQL语句,执行完SQL语句后,将会在列表控制控件中显示查找的结果。如果查找得到的记录集是空的话,就提示用户“没有您要找的数据”。

9

数据库系统课程设计之科研管理系统

查看功能: 界面:

功能说明:

查看功能主要是为了能够更加清楚的看到相关的数据信息。当用户选中了列表控制控件中的某项,然后单击查看按钮或者直接在某条数据上双击之后,会弹出一个查看信息的对话框,在此对话框中将显示相应实体的信息,并更加直观。

七.实验总结和体会

本次课程设计是我们进入大学以来首次尝试用可视化编程来创建一个较为完整和实用的数据库系统,也是我们首次依靠自学的知识来完成的。难度之大,是我们以前做数据结构和CPP所不能够比拟的。花费了我们很多时间去找资料学习可视化编程,以及可视化编程中的数据库编程。

八.参考文献

《数据库系统概论》(第四版) 王珊 萨师煊著 高等教育出版社 《C++语言课程设计》(第3版) 郑莉 董渊 张瑞丰编著 清华大学出版社 《Visual C++ 实效编程280例》 曲扬 编著 人民邮电出版署 《SQL Server 2005 数据库原理与应用基础》

李小英 主编 清华大学出版社 北京交通大学出版社

10

因篇幅问题不能全部显示,请点此查看更多更全内容