数据库系统—课程设计

上传人:痛*** 文档编号:42564097 上传时间:2021-11-26 格式:DOC 页数:30 大小:8.91MB
收藏 版权申诉 举报 下载
数据库系统—课程设计_第1页
第1页 / 共30页
数据库系统—课程设计_第2页
第2页 / 共30页
数据库系统—课程设计_第3页
第3页 / 共30页
资源描述:

《数据库系统—课程设计》由会员分享,可在线阅读,更多相关《数据库系统—课程设计(30页珍藏版)》请在装配图网上搜索。

1、数据库系统课程设计院(系): 计算机工程学院 专业: 计算机科学与技术 学生姓名: 班级: 计算 学号: 题目: 起迄日期: 设计地点: 指 导 教 师: 1. 概论1.1本系统实现的内容:(1) 系统权限的划分:本系统实现了两种权限,系统管理员可以对教师信息添加、删除、修改,对学员信息进行添加、删除、修改,可以考勤,可以查看工资信息;而普通用户只能查看,不能修改。(2) 实现的功能如下:教师管理模块,可以进行教师信息录入、教师信息显示、查询教师、修改和删除教师记录;学院管理模块,可以进行学院添加、学院删除、学院信息修改和学院信息显示;考勤管理模块,可以进行考勤输入、考勤查看、考勤信息删除;工

2、资计算管理模块,进行工资查看。1.2 开发环境简介本系统前端应用程序是用vc6.0平台下的MFC框架下开发的,后端数据库是用SQL2000开发的,操作系统是Windows Xp。2. 需求分析2.1开发背景随着计算机技术的快速发展,计算机在人事管理中应用的普及以及电子化办公的要求,使教师人事管理系统有了其市场的需要。在加之人事管理阶段很多都是重复性的工作,利用数据库系统可以很方便的进行管理,特别是当要处理的数据规模比较庞大时,如果利用传统的管理手段,不但费时费力还要浪费很多人力资源,所以设计本系统有了其内在的需要。本系统主要分为教师管理模块,学院管理模块,考勤管理模块,工资计算管理模块。涉及管

3、理员、普通用户两种用户角色。2.2开发目的:本系统的最终目的就是要将平时教师的信息处理整合在一起,将教师信息的添加、删除、修改,工资管理,考勤管理集中在一起处理,更重要的是屏蔽数据库操作的细节,使普通人员可以方便的进行处理数据库信息。2.3功能需求:本系统要实现的功能如下所示:(1) 教师信息管理可以将教师的编号、姓名、年龄、职称等属性添加进数据库,并且可以查看添加进去的内容,可以删除教师的信息,修改教师的信息;(2) 学院管理可以添加一个学院,删除一个学院,更改学院名称,更改学院院长;(3) 考勤管理可以对教师进行考勤管理,查看教师是否早退,是否缺勤,是否加班,是否有病假,是否有事假等;(4

4、) 工资管理显示应该给教师发的工资,以及教师的津贴,以及教师由于缺勤早退等原因扣除的工资,和教师加班的加班费等。2.4 数据流图2.5数据字典教师信息: 属性名 存储代码类型长度备注Idm_tidVarchar50教师编号Namem_tnameVarchar50教师姓名Sexm_tsexVarchar2性别Birthdaym_tbirthVarchar50出生日期Agem_tageInt4年龄Folkm_tfolk Char10民族Addrm_taddrVarchar50家庭住址Phonem_tphoneVarchar50电话号码DepartIdm_tdepartidVarchar50院系代号

5、Positionm_tposVarchar50 教师职称学院信息属性名存储代码类型长度备注Idm_strIdvarchar50学院代码CollegeNamem_strNameVarchar50学院名Managerm_strManagervarcher50院长考勤信息表属性名存储代码类型长度备注Checktimem_strDateVarchar50考勤时间Tidm_strIdvarchar50教师的编号Tnamem_strNamevarchar50教师的姓名Absentm_strAbsentvarchar50是否缺勤Sickm_strSickvarchar50是否病假Shijiam_strShi

6、Jiavarchar50是否事假JiaBanm_strJiaBanvarchar50是否加班考勤综合表属性名存储代码类型长度备注Tidm_strIdVarchar50教师编号TNamem_strNameVarchar50教师姓名AbsentSumabsentSumInt4缺席的总次数SickSumsickSumInt4病假的总次数ShijiaSumshijiaSumInt4事假的总次数JiaBanSumjiabanSumInt4加班的总次数工资计算表属性名存储代码类型长度备注TNameWagestrPosVarchar50教师职称BasicWageBasicWgeFloat8基本工资Allow

7、nceAllownceWgeFloat8津贴AbsentAbsentWageFloat8缺席扣款SickSickWageFoat8病假扣款ShijiaShijiaWageFloat8事假扣款JiabanJiaBanWageFloat8加班费系统用户表属性名存储代码类型长度备注UsrNamestrUsrvarchar50用户名PasswordstrPasswordvarchar50密码UsrTypestrUsrTypevarchar50用户类型3. 系统设计3.1系统功能模块图(用Viso2003设计)4. 数据库设计4.1概念设计(E-R图)4.2逻辑设计学院(学院代号,学院名称,院长);教师

8、(教师编号,姓名,性别,出生日期,年龄,民族,籍贯,电话号码,学院代号,职称);考勤信息(时间,教师编号,教师姓名,是否缺勤,是否病假,是否事假,是否加班);考勤汇总(教师编号,教师姓名,缺勤总计,病假总计,事假总计,加班总计);工资计算(职称,基本工资,津贴,缺勤扣款,病假扣款,事假扣款,加班费);系统用户表(姓名,密码,用户类型);4.3SQL语句4.3.1创建“学院”数据表Create table Department(Id varchar(50) primary key,CollegeName varchar(50) not null,Manager varchar(50);4.3.2

9、创建教师信息表Create table Teacher(Id varchar(50) Primary key,Name varchar(50),Sex char(2),Birthday varchar(50),Age int,Folk char(10),Addr varchar(100),Phone varchar(50),DepartId varchar(50),Position varchar(50),Foreign key (DepartId) references Department(Id);4.3.3创建考勤信息表create table CheckTeacher(Checktim

10、e varchar(50),Tid varchar(50),Tname varchar(50) not null,Absent varchar(50),Sick varchar(50),Shijia varchar(50),JiaBan varchar(50),Primary key(Checktime,Tid),Foreign key (Tid) references Teacher(Id),);4.3.4创建考勤汇总表create table CheckSum(Tid varchar(50) primary key,TName varchar(50),AbsentSum int,SickS

11、um int,ShijiaSum int,JiaBanSum int);4.3.5创建工资计算表create table WageCompute(TNameWage varchar(50) primary key,BasicWage float,Allownce float,Absent float,Sick float,Shijia float,Jiaban float);5.详细设计(1) 教师管理模块教师信息输入算法及其实现语句第一步 更新教师对话框中的数据到相应的变量;第二步 判断主属性变量和非空属性变量是否为空,若为空,则拒绝插入;否则执行第三步;第三步 构造插入语句,执行插入语句到

12、数据库。实现代码如下所示void InputTeacherInf:OnAddTchInfo() / TODO: Add your control notification handler code heretryUpdateData(true);if(m_tid = "" && m_tname = "")AfxMessageBox("没有输入姓名或者编号");return;CString InSQL;InSQL.Format( "Insert into Teacher(Id,Name,Sex,Birthday

13、,Age,Folk,Addr,Phone,DepartId,Position)Values('%s','%s','%s','%s',%d,'%s','%s','%s','%s','%s');",m_tid,m_tname,m_tsex,m_tbirth,m_tage,m_tfolk,m_taddr,m_tphone,m_tdepartid,m_tpos);_bstr_t vSQL ;vSQL = (_bstr_t)InSQL;BOOL fla

14、g;flag = m_inputset.ExecuteSQL(vSQL);if(flag)AfxMessageBox("添加成功!");m_inputset.ExitConnect();catch(.)AfxMessageBox("添加失败!");显示教师信息算法及其实现代码第一步 初始化CListCtrl插件,构造select语句;第二步 判断是否是最后一条记录,如果是,执行退出;如果不是,执行第三步;第三步 从数据库中选择相应的属性变量,并且把变量添加到CListCtrl控件中,执行第二步。实现代码如下:BOOL DisplayTch:OnInitD

15、ialog() CDialog:OnInitDialog();/ TODO: Add extra initialization herem_list.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);m_list.InsertColumn(0,_T("姓名"),LVCFMT_LEFT,110);m_list.InsertColumn(1,_T("所在学院"),LVCFMT_LEFT,110);m_list.InsertColumn(2,_T("职称"),LVCFMT_LEF

16、T,110);CString tst;tst = (LPCTSTR) tSQL;/AfxMessageBox(tst);Display(tSQL);return TRUE; / return TRUE unless you set the focus to a control / EXCEPTION: OCX Property Pages should return FALSE修改教师信息算法及其实现代码第一步 查询要修改的教师信息记录,并且把记录显示在对话框中;第二步 修改对话框中的记录信息,并且构造Update语句;第三步 执行Update语句,显示修改成功提示。void ModifyTc

17、hDlg:OnModifyTcher() / TODO: Add your control notification handler code heretryUpdateData();CString strName = (CString) m_mdName;CString strSex = (CString) m_mdSex;CString strBirth = (CString)m_mdBirth;CString strAge = (CString) m_mdAge;CString strFolk = (CString) m_mdfolk;CString strAddr = (CString

18、) m_srchAddr;CString strPhone = (CString) m_mdPhone;CString strDId = (CString) m_mdDepid;CString strPos = (CString) m_mdPos;CString tmpSQL9;/CString tmpItem9;/tmpItem0 = strNametmpSQL0.Format("UPDATE Teacher SET Name = '%s' where Id = '%s'",strName,Id);tmpSQL1.Format("

19、Update Teacher set Sex = '%s' where Id = '%s'",strSex,Id);tmpSQL2.Format("Update Teacher set Birthday = '%s' where Id = '%s'",strBirth,Id);tmpSQL3.Format("Update Teacher set Age = %s where Id = '%s'",strAge,Id);tmpSQL4.Format("Upd

20、ate Teacher set Folk = '%s' where Id = '%s'",strFolk,Id);tmpSQL5.Format("Update Teacher set Addr = '%s' where Id = '%s'",strAddr,Id);tmpSQL6.Format("Update Teacher set Phone = '%s' where Id = '%s'",strPhone,Id);tmpSQL7.Format(&

21、quot;Update Teacher set DepartId = '%s' where Id = '%s'",strDId,Id);tmpSQL8.Format("Update Teacher set Position = '%s' where Id = '%s'",strPos,Id);_bstr_t eSQL9;for(int i = 0; i < 9; +i)eSQLi = (_bstr_t) tmpSQLi;ADOConn myado;for(int j = 0; j < 9;

22、+j)myado.ExecuteSQL(eSQLj);AfxMessageBox("修改成功!");catch(.)AfxMessageBox("修改失败!");查询教师记录信息及第一步 选择要查询的记录条件,是按照姓名查找,还是按照学院或者职称查找;第二步 构造Select语句,并且执行select语句;第三步 显示查找的记录集,并且统计记录集的数量,把他们插入到列表控件中。(2) 学院管理模块学院增加算法第一步 输入要增加的学院的代号、名称以及院长等信息第二步 构造一条Insert语句,执行Insert语句;第三步 如果插入成功,则提示成功,否则显示

23、失败等信息。学院显示算法第一步 构造select如下语句:select * from Department order by Id DESC;第二步 执行select语句,并且把记录集中的信息添加到列表控件中;学院修改算法及其实现代码第一步 查询要修改的学院的信息记录,并且把记录显示在对话框中;第二步 修改对话框中的记录信息,并且构造Update语句;第三步 执行Update语句,显示修改成功提示。(3) 考勤管理模块考勤输入算法第一步 输入考勤的日期、教师编号及姓名等属性,并且确定是否缺勤、加班等事项;第二步 构造Insert语句到数据库考勤表中去,执行Insert语句;第三步 执行成功后给

24、出提示对话框,显示输入成功,否则给出提示错误信息;考勤修改算法第一步 查询要修改的考勤信息记录,并且把记录显示在对话框中;第二步 修改对话框中的记录信息,并且构造Update语句;第三步 执行Update语句,显示修改成功提示。显示考勤信息算法第一步 初始化列表插件,构造select语句;第二步 判断是否是最后一条记录,如果是,执行退出;如果不是,执行第三步;第三步 从数据库中选择相应的属性变量,并且把变量添加到列表控件中,执行第二步。6.用户使用手册(1) 登陆对话框选择要使用的用户,如果是管理员用户,则可以使用全部功能,否则只能查看。(2) 教师管理模块使用2.1教师信息录入输入教师信息,

25、其中教师的编号以及姓名都不能为空,并且不能重复,否则会出错,部门号要输入所在学院的代号; 2.2教师信息显示2.3查询教师信息输入查询条件:查询结果: 2.4修改教师信息 (3) 学院管理3.1学院添加在学院代号中输入添加学院的代号;在学院名称中输入学院的名称;院长中输入新建学院的院长;3.2删除学院输入要删除学院的名称,如果该学院没有教师等信息,即和别的表没有级联则可以删除成功,否则拒绝删除;3.3显示学院信息单击菜单“学院信息显示”弹出学院信息对话框,其中列有各个学院的学院代号,学院名称和学院院长。3.3修改学院信息在相应的域中修改要改变的属性,如果成功,则显示如下对话框否则报错。(4)

26、考勤管理模块4.1考勤信息输入单击菜单“考勤输入”,弹出考勤输入对话框,如下所示:确定考勤信息的教师编号,教师姓名正确,否则显示报错提示;4.2考勤信息显示单击考勤信息显示菜单,显示信息如下所示4.3考勤信息修改单击考勤信息修改对话框,输入要修改的考勤信息,则弹出修改考勤信息对话框,修改要修改的信息,单击修改,提示修改成功5. 查看工资模块单击查看工资对话框,弹出如下对话框,其中信息如下所示6.系统总结6.1 系统的开发环境及实现的功能本系统的前端采用VC6.0开发的,后端是SQL2000开发的;实现的功能如下:(1) 系统登录本系统提供两种权限用户:管理员权限和普通用户权限;管理员权限:可以

27、使用全部功能;普通用户权限:只能查看;(2) 教师信息管理1. 教师信息录入:实现添加一条新的教师记录信息功能;2. 教师信息修改:实现修改教师信息记录的功能;3. 教师信息查看:显示全部教师的记录信息的功能;4. 查询教师信息记录:实现按照某一条件查询教师信息的功能;5. 删除教师信息:实现删除某一条件的教师信息记录的功能;(3) 学院管理1. 学院信息添加:实现添加一条新的学院信息记录的功能;2. 学院信息修改:实现修改某一条件信息记录的功能;3. 学院信息删除:实现删除一个学院的功能;(4) 考勤管理1. 考勤信息录入:实现考勤信息的录入;2. 考勤信息修改:实现对输入错误的考勤信息的修

28、改;3. 考勤信息的删除:实现对考勤信息的删除功能;(5) 工资管理 1.对教师的工资进行汇总,显示出来。6.2系统的不足之处本系统虽然基本功能已实现,但是还有很多地方存在问题,具体如下:第一,可以在添加教师信息功能上的属性感觉界面比较死板,可以把鼠标放上去的时候显示提示信息,可以添加更加复杂的控件来使操作时更加灵活;在设计数据库阶段可以隐性的添加一个主键,这样主键错误也可以修改,这也是本系统设计没有所考虑到的;第二,在考勤时,同时也把工资计算信息写入工资表中,这样做存在的一个隐患是必须要求每一个教师每个月都应该被考勤到,否则,在工资表中就无法显示已存在但没有经过考勤的教师的工资;6.3系统还

29、可以添加的功能:本系统可以在此基础上实现更多的功能:第一,可以实现系统管理用户员添加用户和注销用户功能,具体实现思想如下:在菜单中添加用户管理子菜单,其中有用户添加和注销菜单项,在单击菜单时,消息响应函数如下:弹出用户添加对话框,保存对话框的变量,在后台时,构造一条插入语句,把要添加的用户添加的用户数据表中;注销时相反,构造一条删除语句,删除用户表中的数据;第二,可以添加一个查看工资表的对话框,和修改工资表的对话框,具体实现思想如下:在菜单中添加工资表查看和修改的子菜单,其中单击菜单时,消息响应函数如下:弹出工资修改对话框,保存其中变量,在后台,构造一条Update语句,把要修改的变量在数据库

30、中更新;在单击查看时,只需把数据表中工资的详细信息插入到列表控件上即可。7. 设计总结回顾起此次数据库设计,至今我仍感慨颇多,的确,从选题到定稿,从理论到实践,在整整两星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从实践的过程中得出结论,才能真正地有一个深入的理解。在设计的过程中遇到问题,可以说是困难重重,毕竟还是对ADO数据库设计不是很了解,难免会遇到过各种各样的问题,同时在设计的

31、过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,把ADO类库引入到系统中以及连接数据库,这些问题看似简单,但对一个初学者来说却是相当的痛苦。不过通过这次课程设计之后,一定把以前所学过的知识重新温故了一遍。这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在老师的指导下,终于游逆而解。同时,在吴万春老师的身上我学得到很多实用的知识,在次我表示感谢!同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢! 现在就把设计时遇到的诸多问题一一列出,也算一次经历,避免下次踏入相同的误区吧!第一,小心保留词,在数据库创建阶段,一定不能够使用保留词的,否则,会出

32、现一些莫名奇妙的错误,例如在这次课程设计时,我把一个变量的名称命名为Date,运行时总是提示运行时错误,当时把程序看了好几遍就是没有看出任何错误,在万念俱灰下请假了同学,经提示才想到是不是用了系统的保留变量了呢?果然不出所料,就是由于用了系统的变量才出现的错误;第二,需求分析的重要性,需求分析在整个开发过程中虽然时间相对来说较短,但我认为应该是最重要的,因为你只有知道你要干什么,才能知道怎样干,由于需求阶段设计的粗糙造成了这样一种边做程序,边修改数据库的痛苦经历,实在是让人难忘的;第三,保含检查机制,要考虑的所有的情况,不能只是“正确”的情况,还应该包含非法的数据处理代码,这样才能保证程序的健

33、壮性;第四,对范式的理解,有时为了方便,适当的冗余是可以的,但应该尽可能的达到第三范式的要求,因为没有冗余的数据库未必是最好的数据库,有时为了提高运行效率,就必须降低范式标准,适当保留冗余数据。具体做法是:在概念数据模型设计时遵守第三范式,降低范式标准的工作放到物理数据模型设计时考虑。降低范式就是增加字段,允许冗余。第五,中间表的设计。为了便于数据处理,在设计应用程序时,设计了一个中间表,例如工资表就是一个中间表,不需要为他设计主键、外键;第六,对数据库更加深刻的认识,数据库中最重要的属性是键,包括主键和外键,主键反映的是对客观实体的抽象,外键反映的是实体之间存在的联系。总而言之,这次课程设计对我而言,收获良多,再次感谢同学老师的帮助,以及网上不知道姓名的网友提供的帮助。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!