课程设计——教学管理系统.doc
《课程设计——教学管理系统.doc》由会员分享,可在线阅读,更多相关《课程设计——教学管理系统.doc(16页珍藏版)》请在咨信网上搜索。
1. 课程设计的目的与要求 1.1设计目的 设计一个简单的教学管理系统,要求存储学生基本情况、课程基本情况,教师授课情况与学生成绩记录等,提供成绩录入、信息查询等功能以满足日常教学管理需要。对学生的成绩的管理、查询学生的各科成绩的学生成绩管理系统。该系统可以帮助我们更方便的管理学生的成绩,替代了以前的手工操作管理学生的成绩,节约我们珍贵的时间。而且老师和学生可以以不同个的身份登录,获得不同的操作权限,有效的提高教学管理系统的工作效率。 1.2设计要求 (1)软件开发环境: 操作系统:Windows 7; 数据库使用软件:Microsoft Office Access 2003 开发工具: Microsoft Visual C++6.0 (2) 功能需求 按照提供的各表的数据结构和数据创建数据库与表 实现学生基本情况、课程基本情况、教师授课表情况及学生成绩的数据录入与编辑、删除等。 能够按姓名查询教师授课情况。 1.3 系统总体设计的体系结构图 设计系统的体系结构图 见下页 教学管理系统 教师管理系统 学生管理系统 学生基本 课程管 信息管理 理系统 课程基本 学生课程 信息管理 成绩管理 图1. 设计系统的体系结构图 2. 数据库设计 数据库技术是信息资源管理最有效的手段,它是指对于一个给定的应用环境,利用现有的数据库管理系统构造最优的数据库模式,建立数据库及其应用系统,有效存储数据,满足用户信息要求和处理要求。本系统的数据库是采用Microsoft Office Access 2003设计的。 数据库设计分为6个阶段:需求分析阶段、概念结构设计阶段、逻辑结构设计阶段、数据库物理设计阶段、数据库实施阶段、数据库运行和维护阶段。数据库应用系统经过调试运行后即可投入正式运行。在数据库系统运行过程中,必须不断地对其进行评价、调整与修改。设计一个完善的数据库应用系统不可能一蹴而就,它往往是上述6个阶段的不断反复。 2.1 系统数据库概念结构设计 2.1.1 局部E-R图 将需求分析得到的用户需求抽象为信息结构即概念模型的过程就是概念结构设计。它是整个数据库设计的关键所在。它是现实世界的一个真实模型,表达自然、直观,又易于理解。根据学生成绩管理的需求分析建立局部和全局ER图,如下所示。 (1)局部E—R设计 由在系统中描述课程实体的相关信息有专业号,班级号,设计该实体ER图如图2所示。 课程 课程号 课程名 学 时 图2 实体课程局部ER图 由在系统中描述教师实体的相关信息教师姓名,课程号,授课日期,设计该实体ER图如图3所示:系别 教师 教师姓名 性别 图3 实体教师局部ER图 年龄 学生 学生姓名 学号 系别 班级 性别 由在系统中描述学生实体的相关信息有学号,学生姓名,系别,班级,性别,年龄,设计该实体ER图如图4所示: 图4 实体课程局部ER图 2.1.2 系统全局ER图 学生系别 图8 全局ER图 图8 全局ER图 年龄 图8 全局ER图 图8 全局ER图 成绩 学号 姓名 教师姓名 性别 学生 班级 讲授 教师 选修 教师系别 性别 课程 课程号 学时 课程名 图6 全局ER图 2.2 数据库逻辑设计 根据系统的需要还要全局ER图向关系模型的转换,要遵循以下规则: (1)一个实体转换为一个关系模型式。实体的属性就是关系的属性,实体的键就是关系的键。如学生实体可以转换为如下关系模式,其中学号为学生关系键。 学生(学号,学生姓名,性别,系别,班级,年龄) 同样课程、教师分别转换为一个关系模式,如下: 课程(课程号,课程名,学时) 教师(教师姓名,教师系别,性别) (2)一个m:n联系转换为一个关系模式。与该联系相连的各实体的键以及联系本身的属性均转换为关系的属性,而关系的键为各实体键的组合。如在成绩联系是一个m:n联系,可以将它转换为如下关系模式,其中学号与课程号为关系的组合键。 成绩(学号,课程号,成绩) 2.3 创建系统数据库与表 创建数据库的过程实际上就是为数据库设计名称,设计所占用的存储空间和存放文件的位置过程等。使用Microsoft Office Access 2003创建数据库,其中数据库中包含了5个表。 (1) 打开Microsoft Office Access 2003,单击文件—>新建。 (2) 在右边新建文件夹菜单下,选择“空数据库”菜单选项,单击它,系统会显示新建数据库的位置及名称对话框。 (3) 在文件名一栏输入一个数据库名为“JWXT(教学管理系统)”,点击“创建”。 (4) 在出现的对话框下选择“对象”—>“表”—>“使用设计器创建表”,然后输入所需创建的表的列名、数据类型、长度、是否允许为空、默认值、主键。 (5) 然后点击各表名进行数据的添加、修改、删除。 在此系统数据库中设计了6个表,分别是学生信息表(Student)、课程信息表(Course)、 教师信息表(Teacher)、教师授课表(Teachercourse)、学生选课表(Selectcourse)、学生成绩表(Score)。 具体数据定义和内容设计如下面表1——表14所示。 学生信息表(Student)结构: 表1 列名 数据类型 长度 是否允许为空 说明 sno(学号) 文本 5 N 主键 sname(姓名) 文本 10 N ssex(性别) 文本 2 Y sdept(系别) 文本 10 N sclass(班级) 文本 2 N sage(年龄) 数字 4 Y 学生信息表(Student)内容: 表2 sno sname sdept sclass ssex sage 0001 小花 电子系 01 女 19 0002 小华 电子系 01 男 20 0003 小小 电子系 01 男 20 0004 小兰 电子系 02 女 21 0005 小许 电子系 02 男 20 课程信息表(Course)结构: 表3 列名 数据类型 长度 是否允许为空 说明 cno(课程号) 文本 3 N 主键 cname(课程名) 文本 16 N ctime(学时) 数字 Y 课程信息表(Course)内容: 表4 cno cname ctime 001 电路理论 40 002 信号与系统 48 003 工程磁场 56 F01 电机学 72 F02 管理学 32 G01 电子设计自动化 40 G02 日语入门 32 教师信息表(Teacher)结构: 表5 列名 数据类型 长度 是否允许为空 说明 tname(教师姓名) 文本 10 N 主键 tdept(教师系别) 文本 10 Y tsex(性别) 文本 2 Y 教师信息表(teacher)内容: 表6 tname tdept tsex 安大 电力系 男 柴琴 外语系 女 丁小小 电子系 女 董会 电力系 女 董美美 电子系 女 罗华 自动化系 男 杨梅 经管系 女 教师授课表(Teachercourse)结构: 表7 列名 数据类型 长度 是否允许为空 说明 tname(教师姓名) 文本 10 N 主键 cno(课程号) 文本 5 N 主键 time(授课日期) 文本 Y 教师授课表(Teachercourse)内容: 表8 tname cno time 安大 003 2014-04-05 柴琴 G02 2014-04-06 丁小小 001 2014-03-01 董会 F01 2014-04-22 董美美 002 2014-04-12 罗华 G01 2014-04-13 杨梅 F02 2014-04-18 学生选课表(Selectcourse)结构: 表9 列名 数据类型 长度 是否允许为空 说明 sno(学号) char 5 N 主键 cno(课程号) char 5 N 主键 学生选课表(Selectcourse)内容: 表10 sno cno 0001 001 0001 G01 0002 002 0002 G02 0003 003 0003 F02 0004 F01 0005 F02 学生成绩表(Score)结构: 表13 列名 数据类型 长度 是否允许为空 说明 sno(学号) 文本 5 N 主键 cno(课程号) 文本 5 N 主键 score(分数) 数字 5,2 Y 学生成绩表(score)内容: 表14 sno cno 分数 0001 001 98 0001 G01 89 0002 002 87 0002 G02 86 0003 003 90 0003 F02 76 0004 F01 85 0005 F02 93 2.4 创建数据库关系图 图7 3.应用软件的实现 在Microsoft Visual C++6.0 中开发系统的第一步就是创建一个该系统的工程,来编写管理系统中的各种资源和代码。 3.1 创建工程的步骤 (1)打开Microsoft Visual C++6.0 开发环境,在菜单中依次选择“文件”—>“新建”菜单。 (2)在新建对话框窗口选择“工程”菜单下的“MFC AppWizard【exe】”,同时在右边选择存储路径及为工程命名,然后单击“确定”按钮。 (3)在接下来出现的MFC应用程序向导步骤1中创建的应用程序类型选择单文档,语言为中文简体,接下来步骤2~6选择默认设置。 这样,教学管理系统工程就创建完成。 3.2 向单文档窗口添加菜单项 (1) 在菜单栏中依次添加菜单名“学生”和“老师”以区分学生和老师的功能 (2) 在“学生”下添加菜单选项“教师授课情况”,在“教师”下分别添加菜单选项“学生情况”、“课程名基本情况”、“教师授课情况”、“学生成绩”。如图8——图9所示 图8 图9 3) 对菜单项“学生情况”设置ID为ID_person,并点击建立类向导,添加单击消息函数响应,添加代码如下: void CMainFrame::Onperson() { // TODO: Add your command handler code here CGS m; m.DoModal(); } 并在该类预定义那添加头函数 #include"GS.h"。“课程名基本情况”、“教师授课情况”、“学生成绩”、“教师授课查询”菜单消息响应添加同上。 3.3 对话框的设计 (1) 对话框界面的设计及实现功能展示 ADO数据连接。在RescoureView下打开Dialog插入几个对话框,然后对各个对话框进行控件设置及界面的设计。界面设计及功能实现,如图10——图14所示。 图10 图11 (2) 对话框与数据库连接的实现 1) 在文件Header File下的stdAfx.h中引入ADO库代码 #import "c:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF") 2) 初始化COM环境,创建连接对象 在对话框类加入成员变量:ConnectionPtr m_pConnection1; 并实现初始化,代码如下: CGS::OnInitDialog() { AfxOleInit(); m_pConnection1.CreateInstance(_uuidof(Connection)); m_pConnection1->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=jwxt.mdb","","",adModeUnknown); 3) 打开记录集,初始化对话框 在对话框类加入成员变量:_RecordsetPtr m_pRecordset3; 用ClassWizard给窗口中每个编辑框添加成员变量,本对话框添加了:m_sno, m_sname, m_sdept, m_sclass, m_ssex ,sage 在对话框初始化函数CGS::OnInitDialog()中添加 { m_pRecordset3.CreateInstance(_uuidof(Recordset)); m_pRecordset3->Open("SELECT*FROM Student",m_pConnection1.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText); } 4) 对对话框中各个按钮添加消息响应函数即功能实现的代码,学生基本情况对话框各种功能的实现代码如下: 显示函数: CGS::DispRecord()//在对话框显示数据 { _variant_t theValue1; if(!m_pRecordset3->adoEOF) { theValue1=m_pRecordset3->GetCollect("sno"); if(theValue1.vt!=VT_NULL) m_sno=(char*)_bstr_t(theValue1); theValue1=m_pRecordset3->GetCollect("sname"); if(theValue1.vt!=VT_NULL) m_sname=(char*)_bstr_t(theValue1); theValue1=m_pRecordset3->GetCollect("sdept"); if(theValue1.vt!=VT_NULL) m_sdept=(char*)_bstr_t(theValue1); theValue1=m_pRecordset3->GetCollect("sclass"); if(theValue1.vt!=VT_NULL) m_sclass=(char*)_bstr_t(theValue1); theValue1=m_pRecordset3->GetCollect("ssex"); if(theValue1.vt!=VT_NULL) m_ssex=(char*)_bstr_t(theValue1); theValue1=m_pRecordset3->GetCollect("sage"); if(theValue1.vt!=VT_NULL) m_sage=theValue1.iVal; } UpdateData(false); } void CGS::OnButton5() //前一条函数:可以浏览数据 { // TODO: Add your control notification handler code here m_pRecordset3->MovePrevious(); if(m_pRecordset3->BOF) m_pRecordset3->MoveFirst(); DispRecord(); } void CGS::OnButton6() //后一条:可以浏览数据 { // TODO: Add your control notification handler code here m_pRecordset3->MoveNext(); if(m_pRecordset3->adoEOF) m_pRecordset3->MoveLast(); DispRecord(); } void CGS::OnButton1() //录入函数:在录入数据前先点击录入 { // TODO: Add your control notification handler code here RefreshData(); try { // 写入各字段值 m_pRecordset3->AddNew(); } catch(_com_error *e) { AfxMessageBox(e->ErrorMessage()); } } CGS::RefreshData()//清空函数 { m_sno=""; m_sname=""; m_sdept=""; m_sclass=""; m_ssex="男"; m_sage=0; UpdateData(FALSE); } void CGS::OnButton4() //保存函数:录入数据后,实现保存数据功能 { // TODO: Add your control notification handler code here UpdateData(TRUE); m_pRecordset3->PutCollect("sno",_bstr_t(m_sno)); m_pRecordset3->PutCollect("sname",_bstr_t(m_sname)); m_pRecordset3->PutCollect("sdept",_bstr_t(m_sdept)); m_pRecordset3->PutCollect("sclass",_bstr_t(m_sclass)); m_pRecordset3->PutCollect("ssex",_bstr_t(m_ssex)); m_pRecordset3->PutCollect("sage",long(m_sage)); m_pRecordset3->Update(); m_pRecordset3->MoveLast(); } void CGS::OnButton3() //删除函数:删除不要的数据 { // TODO: Add your control notification handler code here try { AfxMessageBox("删除当前记录"); m_pRecordset3->Delete(adAffectCurrent); m_pRecordset3->MoveNext(); if(m_pRecordset3->adoEOF) m_pRecordset3->MoveLast(); DispRecord(); } catch(_com_error *e) { AfxMessageBox(e->ErrorMessage()); } } void CGS::OnButton2() //编辑函数:对数据进行更改 { // TODO: Add your control notification handler code here UpdateData(TRUE); m_pRecordset3->PutCollect("sno",_bstr_t(m_sno)); m_pRecordset3->PutCollect("sname",_bstr_t(m_sname)); m_pRecordset3->PutCollect("sdept",_bstr_t(m_sdept)); m_pRecordset3->PutCollect("sclass",_bstr_t(m_sclass)); m_pRecordset3->PutCollect("ssex",_bstr_t(m_ssex)); m_pRecordset3->PutCollect("sage",long(m_sage)); m_pRecordset3->Update(); m_pRecordset3->MoveLast(); } 5) 上述为学生基本情况的对话框实现代码,课程基本情况、教师授课表情况及学生成绩三个个对话框的各功能实现代码与上述代码相似。 6) 对于学生查询教师授课情况主要查询功能实现代码如下: void tc::OnButton1() { // TODO: Add your control notification handler code here m_pRecordset.CreateInstance(_uuidof(Recordset)); UpdateData(true); CString strSql; strSql.Format("SELECT*FROM Teachercourse WHERE tname='%s'",m_tname); m_pRecordset->Open(strSql.AllocSysString(),m_pConnection.GetInterfacePtr(),adOpenDynamic, adLockOptimistic, adCmdText); _variant_t theValue; if(!m_pRecordset->adoEOF) { theValue=m_pRecordset->GetCollect("tname"); if(theValue.vt!=VT_NULL) m_tname=(char*)_bstr_t(theValue); theValue=m_pRecordset->GetCollect("cno"); if(theValue.vt!=VT_NULL) m_cno=(char*)_bstr_t(theValue); theValue=m_pRecordset->GetCollect("time"); if(theValue.vt!=VT_NULL) m_time=(char*)_bstr_t(theValue); } UpdateData(FALSE); } 4. 课程设计的心得体会 在本次的课程设计中我负责实现的部分是: 1.按照提供的各表的数据结构和数据创建数据库与表 2.实现学生基本情况、课程基本情况、教师授课表情况及学生成绩的数据录入与编辑、删除等。 3.能够按姓名查询教师授课情况。 以上功能基本实现,由于本人是初次开发软件,在知识、经验方面都存在着不足,因此,设计中必然会存在一些缺陷。但是通过这次的课程设计使我对计算机软件设计与基础这门课程有了更深刻的认识,也让我感受到了计算机软件开发工具功能的强大。这次学习过程由于技术知识与时间的限制,我只是通过基础知识设计了简单的功能,如有机会更深入的学习数据库,我会继续完善它。 课程设计完成了,首先非常感谢学校给我们这次机会,让我们扩大了知识量,弥补了知识的欠缺,进一步完善了自我。衷心的感谢老师在设计过程中对我的问题进行耐心的解答,使我的设计顺利完成。我还要感谢我的同学们,在这一阶段给了我极大的帮助。 5. 参考文献 [1]吕兵 曲宝军等编Visual C++从初学到精通,北京:电子工业出版社,2010-6- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 教学管理 系统
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【胜****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【胜****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【胜****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【胜****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文