1、数据库课程设计教务辅助管理系统院(系)别 班 级 学 号 姓 名 指导老师 时 间 课 程 设 计 任 务 书题 目 教务辅助管理系统 系 (部) 专 业 班 级 学生姓名 学 号 月 日至 月 日 共 周指导老师(签字) 系 主 任(签字) 年 月 日一、 设计内容及要求1. 设计内容:(1)关键数据表老师基础信息表,课程表,教室资源表等等。(2)关键功效模块1) 对上课老师基础信息进行管理。2) 对全院开设课程进行管理。3) 录入老师基础上课信息。4) 实现自动排课功效。5) 简单计算工作量。6) 能够进行多种数据统计。7) 能够输出对应报表。8) 含有数据备份和数据恢复功效。2. 要求:
2、 软件功效关键考虑实用,具体功效模块一定要优异行调研。二、 设计原始资料 (第三版) 萨师煊、王珊 高等教育出版社数据库原理及应用SQL Server 夏冰冰 主编 国防工业出版社数据库设计教程(原书第2版) 作者:Thomas M. Connolly, Carolyn E. Begg 机械工业出版社 数据库原理及应用 作者:张凤琴 出版社:清华大学出版社 北京交通大学出版社 三、设计完成后提交文件和图表1计算说明书部分数据库设计分析依据要求可知,新建一数据库 teacher ,在此数据库中建立三张表:Classroom,Course,TeacherInfo。Course包含 课程编号,课程名
3、,任课老师,课时,上课时间;TeacherInfo包含 老师编号,名称,年纪,性别,电话,职称,所在院系Classroom包含教室编号,名称,及设备信息。鉴于有可能一个老师能够教授多门课一门课能够由多个老师教授,所以要建立表间关系。具体实现在下面会有表现!2图纸部分:程序步骤图退出返回还原备份上课地点上课节数老师课程名课程编号所在学院职称电话性别年纪编号姓名教室信息班级查询返回备份还原课程信息老师信息教室信息程序开始四、进程安排内容课时地点备注分配任务和分组1天试验室系统功效需求分析1天试验室数据库需求分析1天试验室逻辑数据库结构2天试验室查询视图、存放过程、触发器1天试验室编程2天试验室程序
4、测试和结果验收2天试验室五、关键参考资料数据库设计教程(原书第2版) 作者:Thomas M. Connolly, Carolyn E. Begg 机械工业出版社 数据库原理及应用 作者:张凤琴 出版社:清华大学出版社 北京交通大学出版社 数据库设计处理方案入门精典 主编 王海涛 清华大学出版社 Visual C+ 文档窗体设计 主编 丁有和 青岛出版社C+程序设计教程 主编(美) Grey Perry 清华大学社出版社成 绩 评 定 表作品成绩汇报成绩口试(答辩)成绩总评成绩目 录1课程设计概述-11.1教务辅助管理系统功效概述-11.2开发环境概述-12 教务辅助管理系统总体设计-22.1
5、 教务辅助管理系统总体设计思想-22.2总体设计步骤图-23 教务辅助管理系统具体设计-33.1 需要表现地方.-34 代码分析-44.8.1 E-R图设计-114.8.2 存放过程-124.9备份删除-.13设计体会及以后改善意见-14参考文件-15.1 课程设计概述1.1 教务辅助管理系统功效概述1.1.1 Visual C+是微软企业关键产品之一, 是一个功效强大行之有效可视化编程工具。它提供了MFC类库,使用户能够方便开发自己想实现功效。Visual C+6.0关键特点:(1)自动化和宏功效。(2)能够灵活地定制工具栏和菜单。(3)能够直接运行和调试程序,还能够使用宏语言来自动操作调试
6、器。(4)支持Internet连接。(5)一个新便捷项目系统能够许可一个工作区内包含多个不一样项目类型。(6)在工作区内能够包含多个并列工程文件。(7)能够在对话框中使用WizardBar将程序同可视化元素联络起来。(8)Find in File命令支持两个独立输出窗格,能够保留上一次搜索结果。这些新特征能够愈加好地利用Visual C+开发工具进行Windows应用程序开发。1.1.2 SQL(Structured Query Language),结构化查询语言。SQL语言关键功效就是同多种数据库建立联络,进行沟通。根据ANSI(美国国家标准协会)要求,SQL被作为关系型数据库管理系统标准语
7、言。它关键功效介绍:SQL语句能够用来实施多种多样操作,比如更新数据库中数据,从数据库中提取数据等。绝大多数流行关系型数据库管理系统全部采取了SQL语言标准。即使很多数据库全部对SQL语句进行了再开发和扩展,不过包含Select, Insert, Update, Delete, Create,和Drop在内标准SQL命令仍然能够被用来完成几乎全部数据库操作。1.2 开发环境概述1.2.1 利用SQL Server 和Visual C+这两款软件连接起来共同设计教务辅助管理系统。SQL Server 用来设计数据库,其中包含数据库表和表间关系;Visual C+关键用来编程,其中关键用到其MFC
8、功效。2 教务辅助管理系统总体设计2.1 教务辅助管理系统总体设计思想教务辅助管理系统关键是针对管理者对学校教务方面进行统一管理教务辅助管理系统功效模块有:(1)提供菜单界面,方便用户对程序个功效进行选择,选择要实现功效按enter键进入该功效。(2) 对上课老师基础信息进行管理。(3) 对全院开设课程进行管理。(4) 对教室进行管理。2.2 总体设计步骤图程序开始菜单界面面老师信息教室信息课程信息备份还原退出返回添加功效删除功效修改功效查询功效图2-1 总体设计步骤3 教务辅助管理系统具体设计3.1三个表组成: 图3.1 Classroom 图3.2 Course 图3.3 TeacherI
9、nfo4 程序测试4.1 菜单界面4.1.1 使用ODBC连接数据源图4-1 菜单界面图所表示能够看出此界面能够实现增加、修改、删除、清屏、查询等功效。4.2 增加功效添加功效关键代码:void CTeacher:OnAdd() / TODO: Add your control notification handler code hereCString a; CString b=teacher;a.Format(DSN=%s,b);m_db.OpenEx(a,CDatabase:noOdbcDialog);/打开数据库UpdateData(true);if(!UpdateData()retur
10、n;TRY m_db.BeginTrans();CRecordset rs(&m_db);CString sql;/获取新ID值. rs.Open(CRecordset:dynaset, Select max(ID) from TeacherInfo);int newID = 1; if(!rs.IsEOF() CDBVariant var; rs.GetFieldValue(short)0, var, SQL_C_SLONG); if (var.m_dwType != DBVT_NULL)newID = var.m_iVal+1;var.Clear(); /插入新信息统计. sql.Form
11、at(exec dbo.add_teacherinfo %d,%s,%s,%s,%s,%s,%s,newID,m_Name,m_Age,m_Sex,m_Tel,m_Title,m_College);/使用存放过程 m_db.ExecuteSQL(sql); rs.Close();/向界面中插入新信息.InsertCRInfoItem(newID,m_Name,m_Age,m_Sex,m_Tel,m_Title,m_College); m_db.CommitTrans();CATCH(CDBException,ex)AfxMessageBox (ex-m_strError);AfxMessage
12、Box (ex-m_strStateNativeOrigin);m_db.Rollback();AND_CATCH(CException,e)TCHAR szError100;e-GetErrorMessage(szError,100);AfxMessageBox (szError);m_db.Rollback();END_CATCHm_db.Close();4.3 删除功效 其代码以下:void CTeacher:OnDelete() / TODO: Add your control notification handler code hereCString a; CString b=tea
13、cher;a.Format(DSN=%s,b);m_db.OpenEx(a,CDatabase:noOdbcDialog);UpdateData(true);/ TODO: Add your control notification handler code here int nItem = m_ListTeacher.GetNextItem(-1, LVNI_SELECTED);/假如没有选择要删除纪录,返回.if(nItem = -1)AfxMessageBox(请选择要删除信息);return;/从列表框控件中获取选择用户信息.int lid = atoi(m_ListTeacher.G
14、etItemText(nItem,0);TRYm_db.BeginTrans();CString deletedSql;/删除用户信息deletedSql.Format(exec dbo.detete_teacher_information %d,lid);m_db.ExecuteSQL(deletedSql);/删除界面上数据m_ListTeacher.DeleteItem(nItem);m_db.CommitTrans();CATCH(CDBException,ex)AfxMessageBox (ex-m_strError);AfxMessageBox (ex-m_strStateNati
15、veOrigin);m_db.Rollback();AND_CATCH(CException,e)TCHAR szError100;e-GetErrorMessage(szError,100);AfxMessageBox (szError);m_db.Rollback();END_CATCHm_db.Close();4.4 修改功效其代码以下:void CTeacher:OnUpdate() / TODO: Add your control notification handler code hereCString a; CString b=teacher;a.Format(DSN=%s,b)
16、;m_db.OpenEx(a,CDatabase:noOdbcDialog);UpdateData(true);if(!UpdateData()return;int nItem = m_ListTeacher.GetNextItem(-1, LVNI_SELECTED);if(nItem = -1)AfxMessageBox(没有修改信息!);return;int ID = atoi(m_ListTeacher.GetItemText(nItem,0); TRYm_db.BeginTrans();CString sql; sql.Format(update TeacherInfo set Na
17、me=%s,Age=%s,Sex=%s,Tel=%s,Title=%s,College=%swhere ID=%d,m_Name,m_Age,m_Sex,m_Tel,m_Title,m_College,ID); m_db.ExecuteSQL(sql);m_ListTeacher.SetItemText(nItem,1,m_Name);m_ListTeacher.SetItemText(nItem,2,m_Age);m_ListTeacher.SetItemText(nItem,3,m_Sex);m_ListTeacher.SetItemText(nItem,4,m_Tel);m_ListTe
18、acher.SetItemText(nItem,5,m_Title);m_ListTeacher.SetItemText(nItem,6,m_College); m_db.CommitTrans();CATCH(CDBException,ex)AfxMessageBox (ex-m_strError);AfxMessageBox (ex-m_strStateNativeOrigin);m_db.Rollback();AND_CATCH(CException,e)TCHAR szError100;e-GetErrorMessage(szError,100);AfxMessageBox (szEr
19、ror);m_db.Rollback();END_CATCHm_db.Close(); 4.5 清除编辑框中信息程序运行界面清屏。代码以下:void CTeacher:OnButtonClear() / TODO: Add your control notification handler code herem_No.Empty();m_Name.Empty();m_Age.Empty();m_Sex.Empty(); m_Tel.Empty();m_Title.Empty();m_College.Empty();UpdateData(FALSE);4.6 查询功效代码以下:void CTea
20、cher:OnNoquire() / TODO: Add your control notification handler code hereCString a; CString b=teacher;a.Format(DSN=%s,b);m_db.OpenEx(a,CDatabase:noOdbcDialog);if(!UpdateData()return;if(m_No.IsEmpty()AfxMessageBox(ID不能够为空);return;if(!m_db.IsOpen()MessageBox(数据库未打开);return;m_ListTeacher.DeleteAllItems(
21、);CRecordset rs(&m_db);CString temp = %;CString sql;sql.Format(select * from TeacherInfo where ID like %s%s%s,temp,m_No,temp);rs.Open(CRecordset:dynaset, sql);while (!rs.IsEOF() int ID;CString Name,Age,Sex,Tel,Title,College;CDBVariant var;rs.GetFieldValue(short)0, var, SQL_C_SLONG);if (var.m_dwType
22、!= DBVT_NULL)ID = var.m_iVal;var.Clear();rs.GetFieldValue(1,Name);rs.GetFieldValue(2,Age);rs.GetFieldValue(3,Sex);rs.GetFieldValue(4,Tel);rs.GetFieldValue(5,Title);rs.GetFieldValue(6,College);InsertCRInfoItem(ID,Name,Age,Sex,Tel,Title,College);rs.MoveNext();rs.Close();m_db.Close();说明对于其它模块(比如课程和教室等管
23、理)和老师信息管理模块实现基础相同,在此就不一一举例了。4.7 数据库设计4.7.1 ER图设计 4.7.2 存放过程 在进行提取数据库信息时我采取了存放过程应用。在大型数据库系统中,存放过程和触发器含有很关键作用。不管是存放过程还是触发器,全部是SQL 语句和步骤控制语句集合。就本质而言,触发器也是一个存放过程。存放过程在运算时生成实施方法,所以,以后对其再运行时其实施速度很快。SQL Server 不仅提供了用户自定义存放过程功效,而且也提供了很多可作为工具使用系统存放过程。存放过程能力大大增强了SQL语言功效和灵活性。存放过程能够用流控制语句编写,有很强灵活性,能够完成复杂判定和较复杂运
24、算。 可确保数据安全性和完整性。经过存放过程能够使没有权限用户在控制之下间接地存取数据库,从而确保数据安全。经过存放过程能够使相关动作在一起发生,从而能够维护数据库完整性。在运行存放过程前,数据库已对其进行了语法和句法分析,并给出了优化实施方案。这种已经编译好过程可极大地改善SQL语句性能。因为实施SQL语句大部分工作已经完成,所以存放过程能以极快速度实施。在此列出添加、删除、修改、查询存放过程模式:添加CREATE procedure studentinsert no char(10),name char(10),sex char(10),age int,dept char(10) as i
25、nsert into student(sno,sname,ssex,sage,sdept) values(no,name,sex,age,dept) 修改create procedure studentupdateno int,name char(10),sex char(10),age char(10),dept char(10)asupdate studentset sname=name,ssex=sex,sage=age,sdept=deptwhere sno=no删除create procedure studentdeleteno intasdeletefrom studentwher
26、e sno=no查询alter procedure studentselectname char(10)asselect *from studentwhere sname like %name%模糊查询,关键字“like”Select *from ()where()like “%”()括号中所填写为条件;4.8 备份和还原 本程序还实现了备份和还原功效。在电脑上先建立一个backup文件夹,单击备份按钮后,将自动将数据库备份到backup文件夹中。单机还原按钮可还原至上次备份时数据库状态。具体代码:void CBeifen:OnButton1() / TODO: Add your contro
27、l notification handler code hereCString a; CString b=teacher;a.Format(DSN=%s,b);m_db.OpenEx(a,CDatabase:noOdbcDialog); UpdateData(true);if(!m_db.IsOpen() if(!m_db.Open(_T( teacher) MessageBox( 不能打开到该数据源连接! ); CString strSQL; strSQL=backup database teacher to disk=;strSQL=backup database teacher to d
28、isk=d:backupteacher; m_db.ExecuteSQL(strSQL); m_db.Close(); AfxMessageBox(数据库备份成功!);void CBeifen:OnButton2() / TODO: Add your control notification handler code hereCString a; CString b=teacher;a.Format(DSN=%s,b);m_db.OpenEx(a,CDatabase:noOdbcDialog); UpdateData(true);if(!m_db.IsOpen() if(!m_db.Open(
29、_T( teacher) MessageBox( 不能打开到该数据源连接! ); CString strSQL; strSQL=use master; /这里转换到master数据库 m_db.ExecuteSQL(strSQL); strSQL=restore database teacher from disk=; strSQL=restore database teacher from disk =d:backupteacher; m_db.ExecuteSQL(strSQL); strSQL=use teacher; /再转回来 m_db.ExecuteSQL(strSQL); m_d
30、b.Close(); AfxMessageBox(数据库还原成功!);相关int nItem = m_ListTeacher.GetNextItem(-1, LVNI_SELECTED);中-1了解GetNextItem方法是MFC中树形控件,和列表控件用来取得下一个项,可用来遍历。它返回值nItem 搜索开始项索引。假如它等于-1,则从第一项开始匹配指定标志。不过,指定项本身不包含在搜索范围之内。LVNI_SELECTED 设置了LVIS_SELECTED状态标志项。假如项没有设置任何状态标志,那么搜索将从下一项开始。设计体会及以后改善意见相关int nItem = m_ListTeache
31、r.GetNextItem(-1, LVNI_SELECTED);中-1了解GetNextItem方法是MFC中树形控件,和列表控件用来取得下一个项,可用来遍历。它返回值nItem 搜索开始项索引。假如它等于-1,则从第一项开始匹配指定标志。不过,指定项本身不包含在搜索范围之内。LVNI_SELECTED 设置了LVIS_SELECTED状态标志项。假如项没有设置任何状态标志,那么搜索将从下一项开始。参考文件 (第三版) 萨师煊、王珊 高等教育出版社数据库原理及应用SQL Server 夏冰冰 主编 国防工业出版社数据库设计教程(原书第2版) 作者:Thomas M. Connolly, Carolyn E. Begg 机械工业出版社 数据库原理及应用 作者:张凤琴 出版社:清华大学出版社 北京交通大学出版社 数据库设计处理方案入门精典 主编 王海涛 清华大学出版社 Visual C+ 文档窗体设计 主编 丁有和 青岛出版社C+程序设计教程 主编(美) Grey Perry 清华大学社出版社
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100