学生成绩管理系统设计报告精选文档.docx
《学生成绩管理系统设计报告精选文档.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统设计报告精选文档.docx(18页珍藏版)》请在冰豆网上搜索。
学生成绩管理系统设计报告精选文档
TTMSsystemofficeroom【TTMS16H-TTMS2A-TTMS8Q8-TTMSHHJ8】
学生成绩管理系统设计报告精选文档
电子信息科学与技术专业
课程设计题单
班级_0982081__学生_董冰辉_
课程名称专业课程设计_
课题密码锁的设计
设计要求利用visual c#作为前台开发工具,SQLSer
ver后台数据库管理,实现一学生成绩管理系统。
实现
具体功能:
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.设计目的
1、掌握运用数据库原理进行系统分析和设计的方法;
2、掌握关系数据库的设计方法;
3、掌握利用SQLServer2000技术;
4、加强C++的编程能力
3.设计内容
1.设计一个简易学生成绩管理的数据库系统,包括数据库的建立的需求分析,数据的输入输出。
2.设计用户的操作界面,主要实现数据的查询,录入,显示,修改,删除,统计基本功能。
二、需求与功能分析
(1)需求分析
学生成绩管理系统主要提供成绩查询,方便管理的网上的信息查阅平台,学生可以通过该系统查阅与自己相关信息,查看留言、提交留言。
教师可以通过成绩管理系统查阅学生成绩信息,教师信息,查看教师留言、学生留言、提交留言、留言的管理等相关操作。
系统管理员可以实现以上的所有功能,还有对学生的添加、删除、修改、教师的添加、删除、修改,数据库的备份、数据库的还原等相关操作。
根据开发要求,学生成绩管理系统主要应用于教育系统,完成对日常的教学、教务、教师以及学生的计算机化的管理。
开发学生成绩管理系统可使学院教职员工减轻工作压力,比较系统地对教务、教学上的各项服务和信息进行管理,同时,可以减少劳动力的使用,加快查询速度、加强管理,以及国家各部门关于信息化的步伐,使各项管理更加规范化。
目前,学校工作繁杂、资料重多。
目前,管理信息系统已进入高校,但还未普及,而对于学生成绩管理来说,目前还没有一套完整的、统一的系统。
因此,开发一套适和大众的、兼容性好的系统是很有必要的。
(2)功能分析
“学生成绩管理系统”包括九个模块:
输入学生资料,输出学生资料,学生姓名按顺序排列,添加学生资料,按姓名查找,删除该学生资料,查找并显示学生资料,按姓名查找,修改该学生资料,从文件中读入数据,储存学生资料并退出系统。
这九个模块既相互联系又相互独立。
本系统根据学生成绩管理的需要,而建立一个“学生成绩管理系统”,以方便对成绩的各项管理操作。
本系统能对成绩进行输入和输出;能按姓名对学生进行排序,并显示学生资料、成绩等,不过得以系统输入学生资料、成绩为前提;能添加学生成绩资料;能根据学生的姓名来查询该学生的成绩资料,并修改或是删除该学生信息;能够从文件中读取学生信息,并且添加到系统中;能把对系统所进行的操作进行保存,以及时更新系统中的数据。
(3)工作流图
三、模块设计与分析
(1)输入学生资料模块:
主要功能用来对学生的成绩进行收集和输入。
在学生信息保存在系统中的前提下,成绩录入需要输入学生资料,比如班级,学号,姓名。
在准确输入学生资料后,就可以对该学生的各科成绩进行录入。
该学生各科成绩输入成功后,系统会提示是否继续进行操作,如果想继续输入学生成绩就输入y,不想再输入学生成绩的话就输入n,再输入n之后,系统返回到主菜单。
(2)输出学生资料模块:
主要功能用来对学生的成绩进行输出。
在系统已经录入了学生资料成绩的前提下,使用该功能可以显示所有学生的信息,资料等等。
具体包括学生的班级,学号,姓名和各科成绩。
在查看学生的资料,成绩各方面的信息后,按任意键就可以返回到主菜单。
(3)按学生姓名进行排列模块
主要功能是用来对学生的资料按姓名进行排序。
在系统保存学生资料,成绩的前提下,使用此功能可以对学生的资料按姓名进行排序,这样就方便查找姓氏相同或是相近的同学的资料。
(4)添加学生资料模块
主要功能是用来添加学生资料,成绩。
如果系统有保存学生资料的情况下,想录入学生成绩的话,就不用添加学生资料这模块。
如果系统没有保存该学生信息的话,就要使用此模块,在成功添加学生资料后,就可以对该学生进行其他的操作。
(5)按姓名查找,删除该学生资料模块
主要功能是用来删除学生资料。
在系统保存学生资料的前提下,想删除某学生的资料,可以输入学生姓名,系统查找该学生资料后,就可以删除了。
由于学生辍学,毕业等原因,及时对系统进行更新,删除一些没用的信息,可以使系统更加优化
(6)查找并显示学生资料模块
主要功能是用来查找学生资料。
在系统保存了某学生资料的前提下,想要查找该学生资料,可以输入该学生姓名,这样系统就会显示该学生资料和各科成绩等信息
(7)按姓名查找,修改学生资料模块
主要功能是用来修改学生资料。
在系统保存了某学生资料的前提下,想要查找该学生资料,可以输入该学生姓名,系统就会显示该学生资料和各科成绩等信息,这样就可以修改该学生的资料,成绩等信息。
(8)从文件中读入数据模块
主要功能是用来从文件中读入学生数据。
由于一些资料可以用Word文档或Excel表格输入,故在此模块中增加了导入数据的功能。
这样就方便很多,不用把学生资料一个一个添加,节省了很多时间精力。
(9)储存学生资料并退出系统模块
主要功能是用来储存学生资料。
在对系统进行一系列操作,比如添加、删除、修改学生资料后,对系统的最新操作进行保存,及时更新系统,方便下一次的操作。
4、类的设计于分析
Student类类图
typedefclass
{
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图)
1.实体及属性图
2.实体及其联系图
六、逻辑设计
1.E-R模型转换为关系模式
学生(学号,姓名,性别,专业)
教师(编号,姓名,性别,职称,所教科目)
课程(课程号,课程名,学分)
成绩(学号,姓名,数学,物理,化学,英语,政治,总成绩,平均成绩)
2.范式分析
(1)分析关系模式学生(学号,姓名,性别,专业)
在关系模式学生(学号,姓名,性别,专业)中,每一个属性都不能再分,故,属于1NF.
在关系模式学生(学号,姓名,性别,专业)中,主键为学号,所以,姓名,性别,专业,都是非主属性。
根据候选键定义可知,学号完全决定姓名,性别,专业,即每一个非主属性完全依赖于候选键,故,该关系模式属于2NF。
在关系模式学生(学号,姓名,性别,专业)中,姓名,性别,专业,都是非主属性,且每一个非主属性不传递函数依赖于候选键学号,即,学号决定姓名,但姓名不决定性别,不决定专业。
故,该关系模式属于3NF。
在关系模式学生(学号,姓名,性别,专业)中,候选键为学号,函数依赖为学号—>姓名,学号—>性别,学号—>专业,故,该关系模式属BCNF。
由于在关系模式学生(学号,姓名,性别,专业)中不存在多值依赖,故该关系模式不属于4NF。
综上所述,关系模式学生(学号,姓名,性别,专业)为BCNF。
(2)分析关系模式教师(编号,姓名,性别,职称,所教科目)和课程(课程号,课程名,学分)
在关系模式教师(编号,姓名,性别,职称,所教科目)和课程(课程号,课程名,学分)中,每一个属性都不能再分,故,属于首先满足1NF.主键分别为编号和课程号,每一个非主属性完全依赖于候选键,故,这两个关系模式首先属于2NF。
且每一个非主属性不传递函数依赖于候选键学号,故属于3NF。
而且,候选键编号和课程号决定一切非主属性,故,该关系模式属于BCNF。
由于关系模式中不存在多值依赖,故,不属于4NF。
即,关系模式教师(编号,姓名,性别,职称,所教科目)和课程(课程号,课程名,学分)属于BCNF。
(3)分析关系模式成绩(学号,姓名,数学,物理,化学,英语,政治,总成绩,平均成绩)
在关系模式成绩(学号,姓名,数学,物理,化学,英语,政治,总成绩,平均成绩)中每一个属性都不能再分,故,先属于1NF。
在关系模式成绩(学号,姓名,数学,物理,化学,英语,政治,总成绩,平均成绩)中,主键为学号,其他都是非主属性,每一个非主属性完全依赖于候选键,故,该关系模式属于2NF。
在关系模式成绩(学号,姓名,数学,物理,化学,英语,政治,总成绩,平均成绩)中,姓名,数学,物理,化学,英语,政治,总成绩,平均成绩都是非主属性,由于存在函数依赖,即,学号—>平均成绩,平均成绩—>总成绩,故,该关系模式不属于3NF。
综上所述,关系模式成绩(学号,姓名,数学,物理,化学,英语,政治,总成绩,平均成绩)为2NF。
七、源代码及查询截图
2.程序源代码:
(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:
Addyourcontrolnotificationhandlercodehere
CDelectDialogdlg;
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_fenglis