MFC学生成绩管理系统设计.docx
- 文档编号:3617071
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:23
- 大小:956.85KB
MFC学生成绩管理系统设计.docx
《MFC学生成绩管理系统设计.docx》由会员分享,可在线阅读,更多相关《MFC学生成绩管理系统设计.docx(23页珍藏版)》请在冰豆网上搜索。
MFC学生成绩管理系统设计
《VisualC++》课程设计
题目名称:
学生成绩管理程序《MFC版》
所在学院:
信息工程学院
专业名称:
自动化专升本13-1
姓名:
学号:
指导教师:
前言
这次课设我做的是学生成绩管理系统,本系统依据开发要求主要针对于教育系统,完成对日常的教育工作对学生成绩档案与其他信息的数字化管理。
开发本系统可使学院教职员工减轻工作压力,比较系统地对教务、教学上的各项服务和信息进行管理,同时,可以减少劳动力的使用,加快查询速度、加强管理,使各项管理更加规范化。
现在在各大中小学校,用计算机管理学校的信息已经越来越普遍了。
用计算机不但可以提高工作效率,而且还节省了许多人力物力,增强了学校资料的安全性。
提高了学校的管理能力,为此,用计算机来管理学校的信息,是非常必要的。
目前,学校工作繁杂、资料重多,目前还没有一套完整的、统一的系统。
因此,开发一套适和大众的、兼容性好的系统是很有必要的,但由于知识积累与时间关系,这次课设我所设计的系统不是很完善,有些地方没有考虑到,所以实用性大打折扣,后面有时间将会将系统设计的全面些,更具有实用性。
在这次课设的开发过程中,我注意使其符合软件工程的设计的要求,在之前准备了许多时间来设计表结构,并将各个模块的流程画出来,使系统的各个模块功能完善,并力求系统应具有实用性、可靠性和适用性方便用户的操作,尽量减少用户的操作,并且能够对查询结果进行分类汇总,该系统还有许多不尽如人意的地方,比如用户界面不够美观,对于出错处理不够等多方面问题,这些都有待进一步改善。
一.设计目的
通过课程设计的操作与实践,使学生了解关系数据库的相关理论知识和有关工具软件的使用技巧,在一定程度上提高应用程序的综合开发能力和创新意识、创新能力。
二.问题描述
系统功能基本要求:
1.学生信息维护;
2.教师信息维护;
3.课程信息维护;
4.学生选课信息;
5.任课教师操作课程成绩;
6.学生查询课程成绩。
三.需求分析
“学生成绩管理信息系统”包括四个模块:
成绩录入、班级统计、年级统计、系统功能。
这四个模块既相互联系又相互独立,班级统计、年级统计模块必须以成绩录入为基础。
(1)成绩录入模块:
主要功能用来对学生的成绩进行收集和修改。
具体包括学生成绩录入、修改、增加、删除、查询等功能,成绩录入需要分班级、分年级以与某个时间考试的各门功课的成绩。
修改要与成绩录入相对应。
增加、删除是对基本表的操作。
查询条件设置应该齐全,可以班级查询,年级查询,也可以姓名查询,学号查询等等。
(2)班级统计模块:
主要功能用来对学生的成绩以班级为单位进行处理。
具体包括各班学生总成绩、平均成绩、班级排名与统计班级某分数段内的学生人数;各个学生该科成绩、班级排名与统计班级某分数段内的学生人数。
各项统计仅对于某学期某次考试而言。
(3)年级统计模块:
主要功能用
来对学生的成绩以年级为单位进行处理。
具体包括各年级学生总成绩、年级排名统计年级某分数段内的学生人数;各个学生该科成绩、年级排名与统计、年级某分数段内的学生人数。
各项统计仅对于某学期某次考试而言,在统计时,还应注意各年级考试科目不同。
(4)系统功能模块:
关于系统与退出系统。
四.概要设计
在概要设计里,根据系统需求设计系统EI图,程序流图,系统功能模块图等信息,并配置了数据源。
图1系统EI图
图2学生信息
图3功能模块图
图4查询模块流程图
图5班级与学生成绩流图
1.系统的功能分析
该学生成绩管理系统是基于网络在线的学生成绩管理系统,在系统中分为大的两个方面:
一是教师登录页面、二是学生登录页面。
(1)教师进入学生成绩管理系统的主要功能是:
实现添加用户、添加成绩、学籍信息修改、修改密码、查询课程、选课、查询成绩、学籍信息查询、打印等基本功能。
(2)学生进行学生成绩管量系统的主要功能是:
实现修改密码、查询课程、选课、查询成绩、学籍信息查询、打印等基本功能。
2.系统功能模块图
图6教师功能模块图
教师在学生成绩管理系统中能够对所有学生的成绩查看,对学生按学号进行精确查询、按学生姓名进行模糊查询,可以修改自己的登录密码,添加用户,添加学生的成绩,打印学生的学籍信息。
图7学生功能模块
学生在系统中的基本功能是对自己所有成绩的查询,课程的查询,个人登录密码的修改,基本信息的查看,选课,打印自己的学籍信息。
3.配置数据源
在使用数据库之前,在控制面板→管理系统里面选择数据源,配置数据库,将所创建的数据库表格与操作系统所带的ODBC关联起来。
添加完成后,在VC++里用自带的函数库来连接数据库,并添加创建或者添加,删除,修改等等基本功能。
图8配置数据源
图9添加一个数据源
在用户DSN中,添加一个数据源,并选择ACCESS的数据源驱动程序,创建好后,与已经建好的数据库连接,确定后数据库与ODBC的连接则创建完成,可以选择前台开发工具进行开发。
五.详细设计
本系统定义的数据库中包含以下5个表:
学生信息表,成绩表,课程表,代课教师表,班级表。
下面介绍这些表的结构。
学生信息表:
用于记录学生的信息,包括学号,姓名等等。
成绩表:
用于保存学生成绩信息,包括学号,课程号,成绩等字段。
课程表:
用于保存课程信息。
代课教师表:
用于保存各门课代课老师的信息。
班级表:
用于保存不同专业班级。
(1)学生信息表
(2)课程表
图10学生信息表图11课程表
(3)成绩管理系统教师表(4)班级表
图12教师表图13班级表
(5)成绩表
图14成绩表
六.程序设计说明
1.运行程序,首先出现登录界面
图15登录界面
输入用户名和密码,若用户名和密码正确则进入系统。
图16输入错误提示
若出错,则弹出对话框要求用户重新输入。
2.进入系统
图17进入系统
图10提示进入系统。
图18主界面
3.显示功能
图19功能显示
4.查询功能
图20查询功能
图21显示
根据查询条件将学生成绩信息显示到主界面上。
5.删除功能
图22删除功能
根据学生学号删除对应学生信息。
6.修改记录
图23修改成绩
拥有管理员权限的用户删除学生成绩信息。
7.添加记录
图24添加学生和成绩信息
用来添加学生记录。
8.年级成绩
图25显示年级记录
将年级所有学生课程成绩与科目全部显示出来。
部分程序如下:
②、主程序代码;
SINFOR.cpp
SINFOR.cpp:
Definestheclassbehaviorsfortheapplication.
#include"stdafx.h"
#include"SINFOR.h"
#include"MainFrm.h"
#include"SINFORDoc.h"
#include"SINFORView.h"
#ifdef_DEBUG
#definenewDEBUG_NEW
#undefTHIS_FILE
staticcharTHIS_FILE[]=__FILE__;
#endif
CSINFORApp
BEGIN_MESSAGE_MAP(CSINFORApp,CWinApp)
{{AFX_MSG_MAP(CSINFORApp)
ON_COMMAND(ID_APP_ABOUT,OnAppAbout)
NOTE-theClassWizardwilladdandremovemappingmacroshere.
DONOTEDITwhatyouseeintheseblocksofgeneratedcode!
}}AFX_MSG_MAP
Standarddocumentcommands
ON_COMMAND(ID_,CWinApp:
:
On)
ON_COMMAND(ID_,CWinApp:
:
On)
Standardprintsetupcommand
ON_COMMAND(ID_,CWinApp:
:
On)
END_MESSAGE_MAP()
CSINFORAppconstruction
CSINFORApp:
:
CSINFORApp()
{
TODO:
addconstructioncodehere,
PlaceallsignificantinitializationinInitInstance
}
TheoneandonlyCSINFORAppobject
CSINFORApptheApp;
CSINFORAppinitialization
BOOLCSINFORApp:
:
InitInstance()
{
AfxEnableControlContainer();
Standardinitialization
SetDialogBkColor(RGB(181,255,255),RGB(181,255,255));
Ifyouarenotusingthesefeaturesandwishtoreducethesize
ofyourfinalexecutable,youshouldremovefromthefollowing
thespecificinitializationroutinesyoudonotneed.
#ifdef_AFXDLL
Enable3dControls();CallthiswhenusingMFCinasharedDLL
#else
Enable3dControlsStatic();CallthiswhenlinkingtoMFCstatically
#endif
/Changetheregistrykeyunderwhichoursettingsarestored.
TODO:
Youshouldmodifythisstringtobesomethingappropriate
suchasthenameofyourcompanyororganization.
SetRegistryKey(_T("LocalAppWizard-GeneratedApplications"));
LoadStdPro();LoadstandardINI(includingMRU)
Registertheapplication'sdocumenttemplates.Documenttemplates
serveastheconnectionbetweendocuments,framewindowsandviews.
CSingleDocTemplate*pDocTemplate;
pDocTemplate=newCSingleDocTemplate(
IDR_MAINFRAME,
RUNTIME_CLASS(CSINFORDoc),
RUNTIME_CLASS(CMainFrame),mainSDIframewindow
RUNTIME_CLASS(CSINFORView));
AddDocTemplate(pDocTemplate);
Parsecommandlineforstandardshellcommands,DDE,
CCommandLineInfocmdInfo;
ParseCommandLine(cmdInfo);
Dispatchcommandsspecifiedonthecommandline
if(!
ProcessShellCommand(cmdInfo))
returnFALSE;
Theoneandonlywindowhasbeeninitialized,soshowandupdateit.
m_pMainWnd->ShowWindow(SW_SHOW);
m_pMainWnd->UpdateWindow();
returnTRUE;
}
CAboutDlgdialogusedforAppAbout
classCAboutDlg:
publicCDialog
{
public:
CAboutDlg();
DialogData
{{AFX_DATA(CAboutDlg)
enum{IDD=IDD_ABOUTBOX};
}}AFX_DATA
ClassWizardgeneratedvirtualfunctionoverrides
{{AFX_VIRTUAL(CAboutDlg)
protected:
virtualvoidDoDataExchange(CDataExchange*pDX);DDX/DDVsupport
}}AFX_VIRTUAL
Implementation
protected:
{{AFX_MSG(CAboutDlg)
Nomessagehandlers
}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
CAboutDlg:
:
CAboutDlg():
CDialog(CAboutDlg:
:
IDD)
{
{{AFX_DATA_INIT(CAboutDlg)
}}AFX_DATA_INIT
}
voidCAboutDlg:
:
DoDataExchange(CDataExchange*pDX)
{
CDialog:
:
DoDataExchange(pDX);
{{AFX_DATA_MAP(CAboutDlg)
}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAboutDlg,CDialog)
{{AFX_MSG_MAP(CAboutDlg)
Nomessagehandlers
}}AFX_MSG_MAP
END_MESSAGE_MAP()
Appcommandtorunthedialog
voidCSINFORApp:
:
OnAppAbout()
{
CAboutDlgaboutDlg;
aboutDlg.DoModal();
}
CSINFORAppmessagehandlers
voidCSINFORDoc:
:
AssertValid()const
{
CDocument:
:
AssertValid();
}
voidCSINFORDoc:
:
Dump(CDumpContext&dc)const
{
CDocument:
:
Dump(dc);
}
#endif//_DEBUG
CSINFORDoccommands
voidCSINFORDoc:
:
On()
{
AddDlgdlg;
CStringNum;
CStringb;
if(dlg.DoModal()==IDOK)
{
Num=dlg.m_sNum;
Num=".\\Lib\\"+Num+".txt";
CStdio(Num,C|C);
(dlg.m_sNum+"\n");
(dlg.m_sName+"\n");
(dlg.m_sSex+"\n");
(dlg.m_sGrad+"\n");
(dlg.m_sClass+"\n");
(dlg.m_sMath+"\n");
(dlg.m_sC+"\n");
(dlg.m_sEng+"\n");
(dlg.m_sDawu+"\n");
(dlg.m_sGailun+"\n");
();
MessageBox(NULL,"增加成功!
","添加信息",MB_OK);
}
TODO:
Addyourcommandhandlercodehere
}
voidCSINFORDoc:
:
On()
{
CCheckdlg;
CStringNum;
//CStringb;
if(dlg.DoModal()==IDOK)
{
if(dlg.m_sNum.GetLength()==0)
dlg.m_sNum=dlg.m_listNum;
Num=dlg.m_sNum;
Num=".\\Lib\\"+Num+".txt";
MessageBox(NULL,Num,"234",MB_OK);
CStdio(Num,C);
(m_sNum);
(m_sName);
(m_sSex);
(m_sGrad);
(m_sClass);
(m_sMath);
(m_sEng);
(m_sC);
(m_sDawu);
(m_sGailun);
();
}
UpdateAllViews(NULL);
TODO:
Addyourcommandhandlercodehere
}
voidCSINFORDoc:
:
On()
{
UpdataDlgdlg;
dlg.m_sName=m_sName;
dlg.m_sNum=m_sNum;
dlg.m_sSex=m_sSex;
dlg.m_sGrad=m_sGrad;
dlg.m_sClass=m_sClass;
dlg.m_sMath=m_sMath;
dlg.m_sEng=m_sEng;
dlg.m_sC=m_sC;
dlg.m_sDawu=m_sDawu;
dlg.m_sGailun=m_sGailun;
CStringNum;
if(dlg.DoModal()==IDOK)
{
Num=dlg.m_sNum;
Num=".\\Lib\\"+Num+".txt";
CStdio(Num,C);
(dlg.m_sNum+"\n");
(dlg.m_sName+"\n");
(dlg.m_sSex+"\n");
(dlg.m_sGrad+"\n");
(dlg.m_sClass+"\n");
(dlg.m_sMath+"\n");
(dlg.m_sC+"\n");
(dlg.m_sEng+"\n");
(dlg.m_sDawu+"\n");
(dlg.m_sGailun+"\n");
();
MessageBox(NULL,"修改成功!
","修改信息",MB_OK);
}
UpdateAllViews(NULL);
//TODO:
Addyourcommandhandlercodehere
}
voidCSINFORDoc:
:
On()
{
Delinfordlg;
CStringszNum="";
if(dlg.DoModal()==IDOK)
{
szNum=dlg.m_sNum;
C;
(".\\Lib\\"+szNum+".txt");
MessageBox(NULL,"删除成功!
","删除信息",MB_OK);
}
TODO:
Addyourcommandhandlercodehere
}
七.设计总结
为期一个星期的课程设计终于做完了,感觉在这段时间里收获了很多东西,由于这学期才学习的VisualC++实用教程,赵老师的代课条理清晰,所以做课程设计感觉是对VisualC++的一次很好的复习。
刚好课程设计前学习了一段时间MFC,所以在课程设计过程中对VC++的使用不是很困难,即使遇到不懂的就在网上查询资料或咨询老师和同学都能够顺利的解决遇到的问题。
由于我们使用的是ACCESS数据库,将数据库表的创建等都直接集成在向导里面,所以数据库语句我们基本上就没用到,加上时间太短,都是直接用向导创建完后直接使用,这点上我感觉很惭愧,不过我会在后面的学习中学会使用数据库,希望通过它的学习来加深自己对数据库的理解并熟练使用。
在这次设计中,我感觉到随着学生成绩管理类型的不断增加和成绩管理要求的不断提高,管理方面的工作量将会越来越大,并且其工作将是一件十分烦琐和非常容易出错的事情。
在这样的情况下有一个实用学生成绩管理系统是有其必然性的,如果能做出一个完善的学生成绩管理系统就使管理方面的工作量减少很多。
在这次的课设虽然仅仅对学生成绩管理系统进行建模,功能实现简单,但我从中学会了很多,也感到自身知识的贫乏,希望在日后的努力中能实现该系统,争取做出一个完善的系统。
在此意谢谢赵老师的指导,在后面的学习中我会更加努力的。
八.参考文献
【1】《数据库:
原理编程与性能(影印版)(第2版)》,高等教育出版社,ParickO'Neil,ElizabethO'Neil编著,2005.7
【2】《数据库系统概论(第4版)》,高等教育出版社,王珊,萨师煊编著,2006.05
【3】黄德才《数据库原理与其应用教程》,科学出版社,2003
【4】施伯乐《数据库系统教程》,高等教育出版社,2003
【5】王亚平《数据库系统工程师考试辅导》,西安电子科技大学出版社,2004
【6】张龙祥《数据库原理与设计》,人民邮电出版社,2002
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MFC 学生 成绩管理系统 设计
![提示](https://static.bdocx.com/images/bang_tan.gif)