版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGE1电子信息科学与技术专业课程设计题单班级_0982081__学生_董冰辉_课程名称专业课程设计_课题密码锁的设计设计要求利用visualc#作为前台开发工具,SQLServer后台数据库管理,实现一学生成绩管理系统。实现具体功能:1系统管理(身份的分类、录入、修改、删除)2学生信息管理(学生信息的录入、修改、删除、查询)3成绩管理(成绩的录入、修改、删除、查询)4课程管理(课程信息的录入、修改、删除、查询)课题发给日期2012年6月14日课程设计完成日期2012年6月28日指导教师评语:评分:摘要随着计算机的普及,计算机在生活中得到越来越多的应用,其中在计算机上的运行的各种软件在解决生活中的实际问题中起着重大的作用,而目前在编写应用程序时,C++以其高效及灵活性成为大多程序设计者的首选。其次对于普通的用户者,利用C++语言设计出适用的小型软件对解决生活中的繁琐问题有很大的作用.在学校或班级,经常会对某次考试中所有学生的成绩进行统计和管理,由于学生数目经常繁多,所以在处理统计学生总成绩和平均成绩时工作会相对繁琐,所以针对这种情况,同时对分析成绩管理所需要的功能,在利用C++语言及VC++6。0程序运行平台之下,设计了一种小型的学生成绩管理系统,该系统具有学生成绩相关性息的录入、显示、查询、修改、删除和统计功能。关键词:学生成绩管理系统;计算机;C++目录一、概述。.。。.。。。.。。。。.。。。。。.。。。。。.。.。。。。4二、需求于功能分析.。..。.。。。.。。。.。..。.。..。..。..。。。。。.5三、模块设计与分析。。。...。..。.。。.。。。。。.。。。。。.。..。。。。.。6四、类的设计与分析。..。。...。。。..。。。。。。..。..。.。。。。。.。..8五、概念模型设计...。。..。.。..。。。。.。。。。...。...。。。。9六、逻辑设计。..。。。。。。。。...。。..。.。。。。。..。.。.。.。..。。。。10七、程序源代码..。...。。。。..。...。。。..。。。..。。。。.。.。。。。。.12八、使用手册。..。。。.。.。.。。。。.。.。。。。。.。。。。.。..。。。。.。.。..。.。24 九、总结。。。.。。。。。.。.。。。。.。。.。.。。.。.。。.。。。。.。。。。25十、参考文献.。..。..。.。.。。。。..。.。。..。。.。.。。.。..。.。26一、概述设计背景学生成绩管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,所以学生成绩管理系统应该能够为用户提供充足的信息和快捷的查询手段,但是几年前,各个学校的学生成绩管理基本上都是靠手工进行,随着各个学校的规模增大,有关学生成绩管理工作所涉及的数据量越来越大,有的学校不得不靠增加人力、物力来进行学生成绩管理。这种管理方式存在着许多缺点,如:效率低、保密性差,另外所用其时间长,产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。如今学校的学生越来越多,成绩管理的工作量越来越大,手工管理成绩的弊端也越来越明显。随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。作为计算机应用的一部分,使用计算机对学生档案信息进行管理,具有手工管理所无法比拟的优点。例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高学生档案管理的效率。所以我想借本次课程设计之际,设计一个简易的学生成绩管理系统.设计目的1、掌握运用数据库原理进行系统分析和设计的方法;2、掌握关系数据库的设计方法;3、掌握利用SQLServer2000技术;4、加强C++的编程能力设计内容1.设计一个简易学生成绩管理的数据库系统,包括数据库的建立的需求分析,数据的输入输出。2。设计用户的操作界面,主要实现数据的查询,录入,显示,修改,删除,统计基本功能.二、需求与功能分析(1)需求分析学生成绩管理系统主要提供成绩查询,方便管理的网上的信息查阅平台,学生可以通过该系统查阅与自己相关信息,查看留言、提交留言。教师可以通过成绩管理系统查阅学生成绩信息,教师信息,查看教师留言、学生留言、提交留言、留言的管理等相关操作。系统管理员可以实现以上的所有功能,还有对学生的添加、删除、修改、教师的添加、删除、修改,数据库的备份、数据库的还原等相关操作。根据开发要求,学生成绩管理系统主要应用于教育系统,完成对日常的教学、教务、教师以及学生的计算机化的管理。开发学生成绩管理系统可使学院教职员工减轻工作压力,比较系统地对教务、教学上的各项服务和信息进行管理,同时,可以减少劳动力的使用,加快查询速度、加强管理,以及国家各部门关于信息化的步伐,使各项管理更加规范化。目前,学校工作繁杂、资料重多。目前,管理信息系统已进入高校,但还未普及,而对于学生成绩管理来说,目前还没有一套完整的、统一的系统。因此,开发一套适和大众的、兼容性好的系统是很有必要的。(2)功能分析
“学生成绩管理系统”包括九个模块:输入学生资料,输出学生资料,学生姓名按顺序排列,添加学生资料,按姓名查找,删除该学生资料,查找并显示学生资料,按姓名查找,修改该学生资料,从文件中读入数据,储存学生资料并退出系统。这九个模块既相互联系又相互独立。本系统根据学生成绩管理的需要,而建立一个“学生成绩管理系统”,以方便对成绩的各项管理操作。本系统能对成绩进行输入和输出;能按姓名对学生进行排序,并显示学生资料、成绩等,不过得以系统输入学生资料、成绩为前提;能添加学生成绩资料;能根据学生的姓名来查询该学生的成绩资料,并修改或是删除该学生信息;能够从文件中读取学生信息,并且添加到系统中;能把对系统所进行的操作进行保存,以及时更新系统中的数据。(3)工作流图学生成绩管理系统学生成绩管理系统学生,教师,科目基本信息班级学生,教师,科目基本信息班级成绩信息查询记录修改记录删除记录增加记录显示系统原先记录科目基本信息教师基本信息学生基本信息查询记录修改记录删除记录增加记录显示系统原先记录科目基本信息教师基本信息学生基本信息三、模块设计与分析 (1)输入学生资料模块:主要功能用来对学生的成绩进行收集和输入.在学生信息保存在系统中的前提下,成绩录入需要输入学生资料,比如班级,学号,姓名。在准确输入学生资料后,就可以对该学生的各科成绩进行录入。该学生各科成绩输入成功后,系统会提示是否继续进行操作,如果想继续输入学生成绩就输入y,不想再输入学生成绩的话就输入n,再输入n之后,系统返回到主菜单.(2)输出学生资料模块:主要功能用来对学生的成绩进行输出.在系统已经录入了学生资料成绩的前提下,使用该功能可以显示所有学生的信息,资料等等。具体包括学生的班级,学号,姓名和各科成绩。在查看学生的资料,成绩各方面的信息后,按任意键就可以返回到主菜单。(3)按学生姓名进行排列模块主要功能是用来对学生的资料按姓名进行排序。在系统保存学生资料,成绩的前提下,使用此功能可以对学生的资料按姓名进行排序,这样就方便查找姓氏相同或是相近的同学的资料.(4)添加学生资料模块主要功能是用来添加学生资料,成绩。如果系统有保存学生资料的情况下,想录入学生成绩的话,就不用添加学生资料这模块。如果系统没有保存该学生信息的话,就要使用此模块,在成功添加学生资料后,就可以对该学生进行其他的操作。(5)按姓名查找,删除该学生资料模块主要功能是用来删除学生资料。在系统保存学生资料的前提下,想删除某学生的资料,可以输入学生姓名,系统查找该学生资料后,就可以删除了。由于学生辍学,毕业等原因,及时对系统进行更新,删除一些没用的信息,可以使系统更加优化(6)查找并显示学生资料模块主要功能是用来查找学生资料.在系统保存了某学生资料的前提下,想要查找该学生资料,可以输入该学生姓名,这样系统就会显示该学生资料和各科成绩等信息(7)按姓名查找,修改学生资料模块主要功能是用来修改学生资料。在系统保存了某学生资料的前提下,想要查找该学生资料,可以输入该学生姓名,系统就会显示该学生资料和各科成绩等信息,这样就可以修改该学生的资料,成绩等信息。(8)从文件中读入数据模块主要功能是用来从文件中读入学生数据。由于一些资料可以用Word文档或Excel表格输入,故在此模块中增加了导入数据的功能。这样就方便很多,不用把学生资料一个一个添加,节省了很多时间精力。(9)储存学生资料并退出系统模块主要功能是用来储存学生资料。在对系统进行一系列操作,比如添加、删除、修改学生资料后,对系统的最新操作进行保存,及时更新系统,方便下一次的操作。类的设计于分析Student类类图studentstudentnumclanamebyyljsjzcsjkjsjyytypedefclass{ public:charnum[10];charcla[10];charname[20];charbyyl[10];charjsjzc[20];charsjk[10];charjsjyy[20];}Student;表1Student类说明表名称属性说明num数据成员说明学生学号cla数据成员说明学生班级name数据成员说明学生名字byyl数据成员说明学生编译原理成绩jsjzc数据成员说明学生计算机组成成绩sjk数据成员说明学生数据库成绩jsjyy数据成员说明学生计算机英语成绩五、概念模型设计(E—R图)实体及属性图学生学生专业性别学号姓名专业性别学号姓名教师教师所教科目职称性别姓名编号所教科目职称性别姓名编号课程课程课程名学分课程号课程名学分课程号2.实体及其联系图教师教师mm讲授讲授成绩成绩11nm主修课程nm主修课程学生学生六、逻辑设计1.E-R模型转换为关系模式学生(学号,姓名,性别,专业)教师(编号,姓名,性别,职称,所教科目)课程(课程号,课程名,学分)成绩(学号,姓名,数学,物理,化学,英语,政治,总成绩,平均成绩)2.范式分析(1)分析关系模式学生(学号,姓名,性别,专业)在关系模式学生(学号,姓名,性别,专业)中,每一个属性都不能再分,故,属于1NF.在关系模式学生(学号,姓名,性别,专业)中,主键为学号,所以,姓名,性别,专业,都是非主属性。根据候选键定义可知,学号完全决定姓名,性别,专业,即每一个非主属性完全依赖于候选键,故,该关系模式属于2NF。在关系模式学生(学号,姓名,性别,专业)中,姓名,性别,专业,都是非主属性,且每一个非主属性不传递函数依赖于候选键学号,即,学号决定姓名,但姓名不决定性别,不决定专业。故,该关系模式属于3NF。在关系模式学生(学号,姓名,性别,专业)中,候选键为学号,函数依赖为学号->姓名,学号—>性别,学号-〉专业,故,该关系模式属BCNF。由于在关系模式学生(学号,姓名,性别,专业)中不存在多值依赖,故该关系模式不属于4NF。综上所述,关系模式学生(学号,姓名,性别,专业)为BCNF。(2)分析关系模式教师(编号,姓名,性别,职称,所教科目)和课程(课程号,课程名,学分)在关系模式教师(编号,姓名,性别,职称,所教科目)和课程(课程号,课程名,学分)中,每一个属性都不能再分,故,属于首先满足1NF。主键分别为编号和课程号,每一个非主属性完全依赖于候选键,故,这两个关系模式首先属于2NF。且每一个非主属性不传递函数依赖于候选键学号,故属于3NF。而且,候选键编号和课程号决定一切非主属性,故,该关系模式属于BCNF。由于关系模式中不存在多值依赖,故,不属于4NF.即,关系模式教师(编号,姓名,性别,职称,所教科目)和课程(课程号,课程名,学分)属于BCNF。(3)分析关系模式成绩(学号,姓名,数学,物理,化学,英语,政治,总成绩,平均成绩)在关系模式成绩(学号,姓名,数学,物理,化学,英语,政治,总成绩,平均成绩)中每一个属性都不能再分,故,先属于1NF.在关系模式成绩(学号,姓名,数学,物理,化学,英语,政治,总成绩,平均成绩)中,主键为学号,其他都是非主属性,每一个非主属性完全依赖于候选键,故,该关系模式属于2NF。在关系模式成绩(学号,姓名,数学,物理,化学,英语,政治,总成绩,平均成绩)中,姓名,数学,物理,化学,英语,政治,总成绩,平均成绩都是非主属性,由于存在函数依赖,即,学号-〉平均成绩,平均成绩—>总成绩,故,该关系模式不属于3NF。综上所述,关系模式成绩(学号,姓名,数学,物理,化学,英语,政治,总成绩,平均成绩)为2NF。七、源代码及查询截图程序源代码:(1)建表代码:createtable学生成绩信息(学号CHAR(10)NOTNULL,姓名CHAR(10)NOTNULL,高数CHAR(5)NOTNULL,物理CHAR(5)NOTNULL,英语CHAR(5)NOTNULL,化学CHAR(5)NOTNULL,政治CHAR(5)NOTNULL,总成绩CHAR(5)NOTNULL,平均成绩CHAR(5)NOTNULL);createtable课程基本信息(课程号CHAR(5)NOTNULL,课程名CHAR(10)NOTNULL,学分CHAR(5)NOTNULL);createtable学生基本信息(学号CHAR(10)NOTNULL,姓名CHAR(10)NOTNULL,专业CHAR(10)NOTNULL,性别CHAR(4)NOTNULL);createtable教师基本信息(编号CHAR(10)NOTNULL,姓名CHAR(10)NOTNULL,职称CHAR(4)NOTNULL,性别CHAR(4)NOTNULL,所教科目CHAR(10)NOTNULL,(2)数据库连接代码:建立一个CAdodc类classCAdodc:publicCWnd{protected: DECLARE_DYNCREATE(CAdodc)public: CLSIDconst&GetClsid() { staticCLSIDconstclsid ={0x67397aa3,0x7fb1,0x11d0,{0xb1,0x48,0x0,0xa0,0xc9,0x22,0xe8,0x20}}; returnclsid; } virtualBOOLCreate(LPCTSTRlpszClassName, LPCTSTRlpszWindowName,DWORDdwStyle, constRECT&rect, CWnd*pParentWnd,UINTnID, CCreateContext*pContext=NULL) {returnCreateControl(GetClsid(),lpszWindowName,dwStyle,rect,pParentWnd,nID);}BOOLCreate(LPCTSTRlpszWindowName,DWORDdwStyle, constRECT&rect,CWnd*pParentWnd,UINTnID, CFile*pPersist=NULL,BOOLbStorage=FALSE, BSTRbstrLicKey=NULL) {returnCreateControl(GetClsid(),lpszWindowName,dwStyle,rect,pParentWnd,nID, pPersist,bStorage,bstrLicKey);}实现:#include”stdafx.h"#include"adodc.h”#include”_recordset.h”#include”Font。h”CStringCAdodc::GetConnectionString(){ CStringresult; InvokeHelper(0x1,DISPATCH_PROPERTYGET,VT_BSTR,(void*)&result,NULL); returnresult;}voidCAdodc::SetConnectionString(LPCTSTRlpszNewValue){ staticBYTEparms[]= VTS_BSTR; InvokeHelper(0x1,DISPATCH_PROPERTYPUT,VT_EMPTY,NULL,parms, lpszNewValue);}(3)功能模块代码:①显示数据库中原纪录:voidCBaDialog::OnStatr(){m_ListCtrlx.DeleteAllItems();m_ListCtrlb.DeleteAllItems();m_ListCtrll。DeleteAllItems();if(m_Set.IsOpen())m_Set.Close();if(m_bSet。IsOpen())m_bSet.Close();m_cob.GetLBText(m_cob.GetCurSel(),m_Getstring);this—>Select();m_tSet。Open();m_nRecordCount=this—>Show();this—>display();this->exhibit();m_bS=GetDlgItem(IDC_STATR)—〉EnableWindow(FALSE);this—>Enable(TRUE); ②增加记录功能实现:voidCBaDialog::OnAdd(){ //TODO:Addyourcontrolnotificationhandlercodehere Selec=TRUE; CAddialogdlg; if(dlg。DoModal()==IDOK) { if(dlg。m_nxue〉=200)//m_nxue为学生的学号 {AfxMessageBox("学号在1—200之间");//增加记录时学号输入异常,系统提示 return;} } m_Set。AddNew();//实现对数据的插入 m_nRecordCount+=1;//记录数量加一 m_Set。m_column1=dlg.m_nxue; m_Set.m_column2=dlg。m_strName;m_Set。m_column3=dlg.m_fmaths;m_Set.m_column4=dlg。m_fphysical;m_Set.m_column5=dlg。m_fchemistry; m_Set。m_column6=dlg.m_fenglish; m_Set。m_column7=dlg.m_fpolitic; m_Set。m_column8=dlg.m_fmaths+dlg。m_fphysical+dlg.m_fchemistry+dlg。m_fenglish+dlg。m_fpolitic;//对输入的数进行求和 m_Set.m_column9=(float)(m_Set.m_column8/5);//计算平均值this-〉Equal(); m_Set.Update();//Update()一定放在Equal()后,更新数据m_Set.Requery(); this—>Xuan(); } }③删除记录功能实现:voidCBaDialog::OnDelect(){ //TODO:AddyourcontrolnotificationhandlercodehereCDelectDialogdlg; Selec=FALSE; if(dlg。DoModal()==IDOK) { if(dlg.m_nPass!=1234)//程序中的密码均为1234 AfxMessageBox(”密码不正确!你没有权限删除记录”);//密码不正确删除不能执行else { this->Select();//实现对数据的删除m_Set.MoveFirst(); BOOLsel=FALSE; do { if(m_Set.m_column1!=dlg。m_nxue) m_Set.MoveNext(); else {m_nRecordCount—=1; sel=TRUE;m_bSet。MoveFirst();this-〉Equal();m_Set.Delete(); m_Set.Requery(); break; } }while(!m_Set.IsEOF()); if(sel==FALSE)//数据库中没有要符合要求的记录 { AfxMessageBox(”没有此记录"); return; } else this—〉Xuan(); } }}④修改记录功能实现:oidCBaDialog::OnEdit(){ //TODO:Addyourcontrolnotificationhandlercodehere CEditDialogdlg; if(dlg。DoModal()==IDOK) {if(strcmp(dlg.m_pass,"1234”)!=0) AfxMessageBox(”你没有权限更改记录!请重输入密码:");else { this—>Select(); m_Set。m_strFilter。Format(”[学号]=%d”,dlg。m_xue); m_Set。Requery(); if(m_Set.IsEOF()) AfxMessageBox("没有此记录”); Else//实现修改功能 { for(inti=0;i<5;i++) { floatp=0,q=0; if(i==0) { p=dlg.m_fmaths;/修改数学成绩 q=m_Set。m_column3; }if(i==1) { p=dlg.m_fphysical;//修改物理成绩 q=m_Set.m_column4; }if(i==2){p=dlg。m_fchemistry;//修改化学成绩q=m_Set.m_column5;} if(i==3) { p=dlg。m_fenglish;//修改英语成绩 q=m_Set.m_column6; }if(i==4) { p=dlg.m_fpolitic;//修改政治成绩 q=m_Set。m_column7; } m_bSet.Edit();m_bSet。m_column2=m_bSet.m_column2+p-q; m_bSet。m_column3=m_bSet。m_column2/m_nRecordCount; if(p〉=60&&q<60) m_bSet.m_column4+=1; if(p<60&&q>=60) m_bSet.m_column4-=1; if(p〉=80&&q<80) m_bSet。m_column5+=1; if(p〈80&&q>=80) m_bSet。m_column5-=1;m_bSet.Update();if(!m_bSet.IsEOF())m_bSet.MoveNext();elsebreak; }m_Set.Edit();//更新数据m_Set.m_column2=dlg.m_strName;//更新姓名m_Set。m_column3=dlg。m_fmaths;//更新数学成绩m_Set。m_column4=dlg.m_fphysical;//更新物理成绩m_Set.m_column5=dlg.m_fchemistry;//更新化学成绩 m_Set。m_column6=dlg.m_fenglish;//更新英语成绩 m_Set.m_column7=dlg。m_fpolitic;//更新政治成绩 m_Set.m_column8=dlg。m_fmaths+dlg.m_fphysical+dlg。m_fchemistry+dlg.m_fenglish+dlg。m_fpolitic;//更新总成绩 m_Set。m_column9=(float)(m_Set。m_column8/5);//更新平均成绩m_Set。Update(); }m_Set。m_strFilter。Empty(); m_bSet。Close(); m_Set。Close(); m_ListCtrlx.DeleteAllItems(); m_ListCtrlb。DeleteAllItems(); this—>Select(); this->Show(); this-〉display(); } }}⑤查询记录功能实现:voidCBaDialog::OnFind(){ //TODO:AddyourcontrolnotificationhandlercodehereCFinDialogdlg;if(dlg。DoModal()==IDOK){this->Select();m_bSet。Close();if(dlg。m_Getstring2=="〉=")//实现“〉=”的查询m_Set.m_strFilter.Format(”[%s]〉=%。2f”,dlg.m_Getstring1,dlg。m_find);if(dlg。m_Getstring2=="=")//实现“=”的查询m_Set。m_strFilter。Format(”[%s]=%。2f”,dlg。m_Getstring1,dlg。m_find);if(dlg.m_Getstring2==”〈=")//实现“<=”的查询m_Set.m_strFilter。Format("[%s]〈=%.2f”,dlg.m_Getstring1,dlg.m_find);m_ListCtrlx。DeleteAllItems();m_Set。Requery();if(m_Set。IsEOF())//数据库中没有要符合要求的记录{AfxMessageBox(”没有符合条件的记录”);m_Set.Close();return;}elsethis->Show();}
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 森林康养师节假日后复工安全考核试卷含答案
- 物业管理规范与实务操作指南
- 物业管理与服务满意度提升手册
- 无人机驾驶员春节假期安全告知书
- 建筑施工安全与防护操作手册
- 金融数据中心安全管理手册
- 3企业财务管理与财务报表编制实施指南(标准版)
- 2025-2026学年湖北省名校协作高二上学期10月月考物理试题-1
- 2025年慢性非传染性疾病控制副高真题解析含答案
- 2022年张家口市赤城县图书馆招聘试题及答案解析
- 四川省南充市2024-2025学年高一上学期期末质量检测英语试题(含答案无听力原文及音频)
- 专题08解题技巧专题:圆中辅助线的作法压轴题三种模型全攻略(原卷版+解析)
- 2024年全国职业院校技能大赛(节水系统安装与维护赛项)考试题库(含答案)
- 24秋人教版英语七上单词表(Vocabulary in Each Unit)总表
- ISO 15609-1 2019 金属材料焊接工艺规程和评定-焊接工艺规程-电弧焊(中文版)
- 肥胖患者麻醉管理
- 小鲤鱼跳龙门电子版
- 2019年急性脑梗死出血转化专家共识解读
- 《混凝土结构工程施工规范》
- 土地证延期申请书
- 硫乙醇酸盐流体培养基适用性检查记录
评论
0/150
提交评论