学生考试成绩管理系统.docx
- 文档编号:11520602
- 上传时间:2023-03-02
- 格式:DOCX
- 页数:64
- 大小:765.57KB
学生考试成绩管理系统.docx
《学生考试成绩管理系统.docx》由会员分享,可在线阅读,更多相关《学生考试成绩管理系统.docx(64页珍藏版)》请在冰豆网上搜索。
学生考试成绩管理系统
第一章学生考试成绩管理系统的概述
1.1学生考试成绩管理系统总的概述
使用计算机管理成绩,不但可以大量节省时间、人力、财力、物力,而且能更全面有效地掌握学生的基本情况,及时获取最新而又准确的资料和信息。
此课程设计就是这样一个管理学生成绩的系统,其功能与实现方面有相当的针对性和实用性。
软件是在Visualc++平台上开发的,采用Access2003做为数据库,按照关系数据库原理思想的有关规定,严格地进行数据库的设计。
数据操作语言,是采用SQL中的有关命令,能很方便地实现对数据库的操作与管理。
查询功能也是系统的核心之一,在系统中即有单条件查询和多条件查询,也有精确查询和模糊查询,其目的都是为了方便用户使用。
系统有完整的用户添加、删除和密码修改功能。
VisualC++6.0的MFC提供了对数据库的强大支持。
对于数据库的访问,MFC提供了两组类,ODBC(opendatabaseconnectivity)和DAO(databaseaccessobject)。
利用这两个功能强大的类,用户可以方便地开发基于ODBC或DAO的数据库应用程序。
开发一个成绩管理系统,可以实现成绩的管理,只要对数据库进行配置,就可以使用。
并提供新学生成绩登记,现有学生成绩查询功能,对记录的删除修改等工作。
学生成绩管理系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。
对于前者要求建立起数据一致性和完整性强、数据安全性好的库。
而对于后者则要求应用程序功能完备,易使用等特点。
如图1.1所示,为系统整体功能模块图,该系统分为4大子系统,分别为系统管理子系统、基础设施子系统,学生管理子系统以及成绩管理子系统。
1.2系统管理子系统的描述
在系统管理子系统中,其子系统的一些主要功能如下:
1)用户管理,用户可以在这里添加和删除用户和管理员;
2)重新登录,用户可以切换成为其他的用户;
3)退出系统,用户或者管理员退出系统;
其功能细化图如图1.2所示
图1.1系统整体子系统模块图
图1.2系统管理子系统功能细化图
1.3基础设施管理子系统
在基础设施管理子系统中,其子系统的一些主要功能如下:
1)系别设置,管理员成功登录后,可以对系别进行增删改查;
2)专业设置,管理员成功登录后,可以对专业进行增删改查;
3)班级设置,管理员成功登录后,可以对班级进行增删改查;
其功能细化图如图1.3所示
1.4学生管理子系统
在学生管理子系统中,其子系统的一些主要功能如下:
1)学生档案管理,管理员登录后,可以对学生的档案进行管理,如增加学生,删除学生等;
2)奖学金管理,对那些考试成绩优异的学生发放的奖学金进行记录和管理;
3)奖惩激励管理,管理员可以对表现优异和表现较差的学生进行记录,如增加记录,修改记录等;
其功能细化图如图1.3所示
图1.4学生管理子系统功能细化图
图1.3基础设置管理子系统功能细化图
1.5成绩管理子系统
在成绩管理子系统中,其子系统的一些主要功能如下:
1)考试类别设置,管理员设置考试类别,如期中考试、期末考试等
2)考试科目设置,管理员可以考试的科目进行设置,如c语言,计算机操作系统等;
3)考试时间段的设置,管理员可以设置学生考试的时间段;
4)学生成绩录入,考试完后,管理员可以对学生的考试成绩进行录入存储;
5)学生成绩查询,管理员和普通用户都可以查询学生的成绩;
6)班级成绩汇总,可以对所有同学的成绩进行汇总;
7)单科名次查询,学生可以查看自己的单科名次
其功能细化如图1.5所示
图1.5成绩管理子系统功能细化图
第二章数据库的设计与实现
2.1E-R图
这一设计阶段是在系统功能结构图的基础上进行的,设计出能够满足用户需求的各种实体以及它们之间的关系,为后面的逻辑结构设计打下基础。
根据以上的分析设计结果,得到用户实体,系别实体,专业实体,班级实体,学生实体,考试科目实体,考试时间实体,考试类别实体以及奖惩实体。
下面来介绍几个主要的实体的E-R图。
1.用户实体
用户实体包括:
用户名,密码以及是否为管理员。
用户实体的E-R图如图2.1.1所示。
2.系别实体
系别实体包括:
系别代码,系别名和该系的简要说明。
系别实体的E-R图如图2.1.2所示。
图2.1.2系别实体E-R图
图2.1.1用户实体E-R图
3.专业实体
专业实体包括:
专业代码,专业名称,所属系别以及简要说明。
专业实体的E-R图如图2.1.3所示。
4.班级实体
班级实体包括:
班级代码,班级名称,所属系别,所属专业,辅导员以及简要说明。
班级专业实体E-R图如图2.1.4所示。
图2.1.4班级实体E-R图
图2.1.3专业实体E-R图
5.学生实体
学生实体包括:
学号,姓名,班级,性别,名族,政治面貌等。
学生实体E-R图如图2.1.5所示。
6.考试科目实体
考试科目实体包括:
科目代码和科目名称。
考试科目实体E-R图如图2.1.6所示。
图2.1.5学生实体E-R图
图2.1.6考试科目实体E-R图
7.考试时间实体
考试时间实体包括:
编号和时间段。
考试时间实体E-R图如图2.1.7所示。
图2.1.7考试时间实体E-R图
图2.1.8考试类别实体E-R图
8.考试类别实体
考试类别实体包括:
考试类别代码以及类别名称。
考试类别实体E-R图如图2.1.8所示。
9.奖惩实体
奖惩实体包括:
ID,学号,姓名,班级,奖惩日期,奖惩内容以及简要说明。
奖惩实体E-R图如图2.1.9所示。
图2.1.9奖惩实体E-R图
对以上单个的实体分析设计结果,一共有9个实体,这些实体之间的联系如下:
1)一个院系可以有多个专业,一种专业只能在一个院系中,因此院系和专业具有一对多的联系。
2)一个专业可以有多个班级,而一个班级只能在一个专业中,不能跑到别的专业中去,因此专业和班级具有一对多的联系。
3)一个班级可以有多名学生,一名学生只能在一个班中,因此班级和学生具有一对多的联系。
4)一名学生可能有多条或者没有奖惩记录,而每一种奖惩可能被多名学生记录或者没有学生,因此学生和奖惩具有多对多的联系。
5)一名学生有多种考试科目,每一种考试科目可以被多名学生考,因此考试科目和学生具有多对多的联系。
6)每个考试科目都只有一个考试时间和考试类型,而在同一考试时间有多门考试科目,在同一考试类型也有多门考试科目,因此考试科目和考试时间具有多对一的联系,考试类型和考试科目具有一对多的联系。
下面给出此学生考试成绩管理系统的E-R图,如图2.1.10所示。
图2.1.10学生考试成绩管理系统E-R图
2.2数据库表的结构说明
根据上面所介绍的本系统的各个模块及其需要实现的功能,可以在数据库中建立相应的表,其名称和功能分别为:
1)用户表:
用于保存用户登录的基本信息和权限。
如图2.2.1所示
2)系别表:
用于存储各个系别的基本信息。
如图2.2.2所示
图2.2.2系别表
图2.2.1用户表
3)专业表:
各个系别有不同的专业,该表用于存储专业名称和其隶属于的院系。
如图2.2.3所示
4)班级表:
每个专业都有不同的班级,班级表用于管理所有的班级。
如图2.2.4所示
图2.2.4班级表
图2.2.3专业表
5)学生表:
用于存储学生的所有信息。
如图2.2.5所示
6)考试科目表:
对考试科目的存储。
如图2.2.6所示
图2.2.5学生表
图2.2.6考试科目表
7)考试时间表:
按考试时间可以是分开存储。
如图2.2.7所示
8)考试类别表:
考试类别可以分为期中,期末等。
如图2.2.8所示
图2.2.8考试类别表
图2.2.7考试时间表
9)奖惩表:
记录学生的奖惩时间,事件等。
如图2.2.9所示
图2.2.9奖惩表
第三章学生考试成绩管理系统的实现
学生考试成绩系统的实现首先要实现的是用户能够正确的通过权限进行登录验证成功后,对管理系统的一系列操作。
即系统先将用户登录信息写入日志数据表,然后显示库存管理信息系统的主窗口;如果用户登录失败,系统显示登录失败信息。
实现用户登录到学生考试成绩管理系统的流程图如图3。
登录成功后,管理员进入到学生考试成绩系统界面,在主界面中,一共有五个菜单项,分别为:
系统管理,基础设置,学生设置,成绩管理和帮助,而在每个菜单项中又有下拉菜单项,学生考试成绩管理系统的界面如图3.0所示。
图3学生考试成绩系统登录流程图
图3.0学生考试成绩系统界面
3.1系统管理模块的实现
3.1.1用户管理功能的实现
1.界面的设计:
在用户设置界面,一共分为两大块:
用户列表和用户资料。
用户列表时显示所有的用户,而用户资料那块是用于填写用户基本资料。
当保存用户资料时,可以再用户列表显示刚刚添加进去的用户名。
同样,当点击用户列表中得一个用户名,在点击删除时,可以将该用户从用户列表移除。
用户设置的界面如图3.1所示。
图3.1用户设置界面
2.编程的实现
在用户管理功能的实现中,用户首先登陆系统,系统查看数据库中是否有该用户,如果是,他是否为管理员,如果为管理员,则可以新增或者删除用户,当填写完用户资料后,点击“保存”,如果填写资料正确,则显示提示信息,整个用户设置的流程图如图3.2所示。
【程序代码】
voidCUserDlg:
:
OnButtonDelete()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
UpdateData(TRUE);
if(m_strUser=="")
{
MessageBox("请选择一个用户!
");
return;
}
voidCUserDlg:
:
OnOK()
{
UpdateData();
if(m_ctrUser.IsWindowEnabled())
{//增加新用户
if(m_strUser=="")
{
MessageBox("请填写用户名!
");
m_ctrUser.SetFocus();
return;
}
}
else
{//修改用户信息
if(m_strUser=="")
{
MessageBox("请选择一个用户!
");
return;
}
图3.2用户设置流程图
}
if(m_strPass=="")
{
MessageBox("密码不能为空,请输入密码!
");
m_ctrPass.SetFocus();
return;
}
if(m_strPass!
=m_strRePass)
{
MessageBox("两次输入地密码不一致,请重新输入密码!
");
m_ctrPass.SetFocus();
m_strPass="";
m_strRePass="";
UpdateData(FALSE);
return;
}
3.1.2重新登录功能的实现
1.界面的设计:
当用户点击重新登录时,系统会弹出用户登录最开始登录系统的登录界面,在该界面中,用户需要选则用户名,此用户名是用组合框做的,可以选择,然后就是密码的填入,运用密码框填入密码。
用户登录见面如图3.3所示。
图3.3用户登录界面
2.编程的实现
用户选择重新登录时,系统弹出登录的界面,用户选择用户名并填写密码,如果用户名或密码为空,则显示提示信息,如果密码错误,显示登录失败的信息,整个用户重新登录的流程图如图3.4所示。
【程序代码】
voidCLoginDlg:
:
OnOK()
{
//TODO:
Addextravalidationhere
CUserSetrecordset;
CStringstrSQL;
UpdateData(TRUE);
CSchoolApp*ptheApp=(CSchoolApp*)AfxGetApp();
strSQL.Format("select*fromuserwhereuser='%s'ANDpasswd='%s'",m_strUser,m_strPass);
if(!
recordset.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL))
{
MessageBox("打开数据库失败!
","数据库错误",MB_OK);
图3.4用户重新登录流程图
return;
}
if(recordset.GetRecordCount()==0)
{
recordset.Close();
MessageBox("密码错误,请重新输入!
");
m_strPass="";
m_ctrPass.SetFocus();
UpdateData(FALSE);
}
else
{
ptheApp->m_bIsAdmin=recordset.m_isadmin;
recordset.Close();
CDialog:
:
OnOK();
}
}
3.2基础设施模块的实现
3.2.1系别设置功能的实现
1.界面的设计:
在系别设置界面中,由按钮区域,填写信息区域以及报表组成,当用户想添加时,必须填写学院代码,这部分在界面中检验,当为空时,提示用户要填写学院代码。
用户想删除或者修改学院信息时,需在报表中点击选中院系,然后点击删除或修改。
系别设置界面如图3.5所示。
图3.5系别设置界面
2.编程的实现
在系别设置的功能实现中,只能是有管理员权限的用户可以操作,如果是普通用户是没有操作权限的。
管理员登录后,如果要增加,先点击“增加”按钮,然后填写系别的基本信息,其中,系别的基本信息中,系别代码是不能为空的,如果为空,系统会提示用户代码必须填写。
而当用户想删除或修改系别的基本信息时,在报表中选择好系别,如果想删除,点击“删除”按钮就行,而要修改,则只需要在填写信息的区域再重新填写系别的基本信息。
整个系别设置的流程图如图3.6所示。
【程序代码】
voidCDepartmentDlg:
:
OnButtonSave()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
UpdateData();
if(m_strName=="")
{
AfxMessageBox("请输入系名!
");
return;
}
if(m_strCode=="")
{
AfxMessageBox("请输入系别代码!
");
return;
}
CStringstrSQL;
图3.6系别设置流程图
strSQL.Format("select*fromdepartmentwherecode='%s'",m_strCode);
if(!
m_recordset.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL))
{
MessageBox("打开数据库失败!
","数据库错误",MB_OK);
return;
}
voidCDepartmentDlg:
:
OnButtonModify()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
UpdateData();
inti=m_ctrList.GetSelectionMark();
if(0>i)
{
MessageBox("请选择一条记录进行修改!
");
return;
}
if(m_strName=="")
{
AfxMessageBox("请输入系名!
");
return;
}
if(m_strCode=="")
{
AfxMessageBox("请输入系别代码!
");
return;
}
CStringstrSQL;
strSQL.Format("select*fromdepartmentwherecode='%s'",m_ctrList.GetItemText(i,0));
if(!
m_recordset.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL))
{
MessageBox("打开数据库失败!
","数据库错误",MB_OK);
return;
}
m_recordset.Close();
RefreshData();
}
voidCDepartmentDlg:
:
OnButtonDelete()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
inti=m_ctrList.GetSelectionMark();
if(0>i)
{
MessageBox("请选择一条记录进行删除!
");
return;
}
CStringstrSQL;
strSQL.Format("select*fromdepartmentwherecode='%s'",m_ctrList.GetItemText(i,0));
if(!
m_recordset.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL))
{
MessageBox("打开数据库失败!
","数据库错误",MB_OK);
return;
}
UpdateData(FALSE);
}
3.2.2专业设置功能的实现
1.界面的设计:
在专业设置界面中,由按钮区域,填写信息区域以及报表组成,当用户想添加时,必须填写专业代码,这部分在界面中检验,当为空时,提示用户要填写专业代码。
用户想删除或者修改专业信息时,需在报表中点击选中专业,然后点击删除或修改。
专业设置界面如图3.7所示。
2.编程的实现
图3.7专业设置的界面
在专业设置的功能实现中,只能是有管理员权限的用户可以操作,如果是普通用户是没有操作权限的。
管理员登录后,如果要增加,先点击“增加”按钮,然后填写专业的基本信息,其中,专业的基本信息中,专业代码是不能为空的,如果为空,系统会提示用户代码必须填写。
而当用户想删除或修改专业的基本信息时,在报表中选择好专业,如果想删除,点击“删除”按钮就行,而要修改,则只需要在填写信息的区域再重新填写专业的基本信。
整个专业设置的流程图如图3.8所示。
【程序代码】
voidCMajorDlg:
:
OnButtonNew()
{
voidCMajorDlg:
:
OnButtonSave()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
UpdateData();
if(m_strName=="")
{
AfxMessageBox("请输入专业名称!
");
return;
}
if(m_strCode=="")
{
AfxMessageBox("请输入专业代码!
");
return;
}
图3.8专业设置流程图
if(m_strDepartment=="")
{
AfxMessageBox("请输入所属系别!
");
return;
}
CStringstrSQL;
strSQL.Format("select*frommajorwherecode='%s'",m_strCode);
if(!
m_recordset.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL))
{
MessageBox("打开数据库失败!
","数据库错误",MB_OK);
return;
}
if(m_recordset.GetRecordCount()!
=0)
{
AfxMessageBox("当前编码已经存在!
请重新输入!
");
m_strCode="";
UpdateData(FALSE);
m_recordset.Close();
return;
}
voidCMajorDlg:
:
OnButtonDelete()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
inti=m_ctrList.GetSelectionMark();
if(0>i)
{
MessageBox("请选择一条记录进行删除!
");
return;
}
CStringstrSQL;
strSQL.Format("select*frommajorwherecode='%s'",m_ctrList.GetItemText(i,0));
if(!
m_recordset.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL))
{
MessageBox("打开数据库失败!
","数据库错误",MB_OK);
return;
}
UpdateData(FALSE);
}
3.2.3班级设置功能的实现
1.界面的设计:
在班级设置界面中,由按钮区域,填写信息区域以及报表组成,当用户想添加时,必须填写班级代码,这部分在界面中检验,当为空时,提示用户要填写班级代码。
用户想删除或者修改班级信息时,需在报表中点击选中班级,然后点击删除或修改。
班级设置界面如图3.9所示。
2.编程的实现
图3.9班级设置的界面
在班级设置的功能实现中,只能是有管理员权限的用户可以操作,如果是普通用户是没有操作权限的。
管理员登录后,如果要增加,先点击“增加”按钮,然后填写班级的基本信息,其中,班级的基本信息中,班级代码是不能为空的,如果为空,系统会提示用户代码必须填写。
而当用户想删除或修改班级的基本信息时,在报表中选择好班级,如果想删除,点击“删除”按钮就行,而要修改,则只需要在填写信息的区域再重新填写班级的基本信息。
整个班级设置的流程图如图3.10所示。
【程序代码】
voidCClassDlg:
:
OnButtonNew()
{
voidCClassDlg:
:
OnButtonSave()
{
if(m_strName=="")
{
AfxMessageBox("请输入班级名称!
");
return;
}
if(m_strCode=="")
图3.10班级设置流程图
{
AfxMessageBox("请输入班级代码!
");
return
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 考试 成绩管理系统