C课程设计学生信息管理系统.docx

上传人:b****5 文档编号:7813251 上传时间:2023-01-26 格式:DOCX 页数:60 大小:614.67KB
下载 相关 举报
C课程设计学生信息管理系统.docx_第1页
第1页 / 共60页
C课程设计学生信息管理系统.docx_第2页
第2页 / 共60页
C课程设计学生信息管理系统.docx_第3页
第3页 / 共60页
C课程设计学生信息管理系统.docx_第4页
第4页 / 共60页
C课程设计学生信息管理系统.docx_第5页
第5页 / 共60页
点击查看更多>>
下载资源
资源描述

C课程设计学生信息管理系统.docx

《C课程设计学生信息管理系统.docx》由会员分享,可在线阅读,更多相关《C课程设计学生信息管理系统.docx(60页珍藏版)》请在冰豆网上搜索。

C课程设计学生信息管理系统.docx

C课程设计学生信息管理系统

课程设计报告

 

课程名称:

面向对象程序设计C++

设计题目:

学生信息管理系统

专业:

计算机科学与技术

姓名:

学号:

指导教师:

李晓虹

 

2016年1月1日

一、系统背景

【摘要】信息管理系统是一个不断发展的新型学科,任何一个单位要生存要发展,要高效率地把内部活动有机地组织起来,就必须建立与自身特点相适应的管理信息系统。

在现今众多的学生管理系统中,最为常见的是学生信息管理系统和学生课程成绩管理系统。

这是对我国现今大多学校对学生管理的需要而开发设计的,但随着学校的发展,这种各自独立的系统远远不能满足学校管理的需要。

学生信息管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,所以学生信息管理系统应该能够为用户提供充足的信息和快捷的查询手段。

【背景及目的】随着计算机技术的飞速发展,当今社会正快速向信息化社会前进。

而如今学校的规模不断扩大,学生数量急剧加,有关学生的各种信息量也成倍增长,面对庞大的信息量,就需要有学生信息管理系统来提高学生管理工作的效率。

通过这样的系统,可以做到信息的规范管理、科学统计和快速的查询,从而减少管理方面的工用量。

此次设计我们使用JAVA编程,实现了学生信息管理系统的过程。

本系统采用VisualC++和SQLSERVER2008数据库管理系统作为开发工具,通过对学生信息管理系统进行可行性分析、需求分析和设计逐步将一个学生信息管理系统的开发过程呈现出来。

系统可以对学校的所有专业信息和课程信息进行管理,可以对学生的基本信息和成绩进行管理,最后本系统能对专业信息、课程信息、学生基本信息和成绩信息进行查询。

【关键字】使用者;需求分析;设计界面;C++;MFC;SQLserver2008;

二、操作分析

2.1、关于使用者

本组将图书管理系统分为了三类,分别为:

管理员、学生、教师。

管理员经过注册和登录后,不但可以修改基本学生信息和添加记录,还可以修改学生已经选课情况以及修改教师的基本信息、教师的开课情况、查询与学生和教师有关的信息。

学生通过登录和注册以后,可以查询自己的基本信息以及查询本学期的各门课程的成绩、选课情况以及选课等等。

教师登录该系统以后。

可以修改个人信息、修改学生成绩以及录入学生成绩、以及对自己的开课情况进行查询。

学生信息管理系统的打开界面(如图2-1),用户可以看到关于登录人员的分类,随即进行接下来的操作。

点击“管理员”。

进入管理员界面

图2-1

管理员界面(如图2-2)

图2-2

点击学生进入学生主界面(如图2-3)

图2-3

点击”教师”进入到教师登录主界面(如图2-4)

图2-4

经过调试,该界面是用户友好界面,方便使用者的操作和注册。

三、关于需求的分析

3.1系统功能

用户登录功能、学生个人信息查询以及修改功能、学生个人成绩查询功能、学生选课功能、管理员修改学生选课以及教师开课功能、查询和修改学生教师相关信息功能、教师基本信息查询功能、教师个人开课信息查询功能、教师录入和修改学生成绩功能等。

3.2系统E-R图(如图3-2)

 

图3-2

3.3功能流程

前面确定了对学生信息管理系统的使用对象的定位,需求分析是根据适用对象而定的,要求操作界面友好,操作方便,便于使用者进行登录,信息查询、信息修改的操作一体化,流程清楚明了,便于理解与使用。

下图1是关于管理员、学生和教师的操作流程。

3.4功能流程图(如图3-4)

图3-4

下面是该系统的使用者对系统的使用需求:

1)实现管理员对学生、教师的基本信息的录入、修改、查询等基本操作。

2)实现学生选课功能。

3)实现教师打分功能。

4)查看学生课程选择。

5)教师开课情况查询。

6)学生成绩查询。

从上述陈述中可以发现以下元素:

使用对象:

1.管理员

2.学生

3.教师

基本用例:

1.登录:

老用户的系统登录。

2.个人信息查询:

对登录者的个人信息进行查询。

4.学生选课:

学生根据已有的课程进行选课。

5.学生成绩查询:

学生对自己已选的课程的所有成绩进行了解。

6.学生成绩录入:

教师根据自己的开课情况对选择该门课的学生进行打分。

四、系统总体设计

软件的界面是用户与计算机进行信息数据交流的媒介,一个软件设计界面的人性化,友好与否将决定该软件的受欢迎度。

所以在软件的界面设计方面做了很多次实验。

软件登录主界面设计(如图4-1)

图4-1

管理员界面(如图4-2)

图4-2

学生界面(如图4-3)

图4-3

教师界面(如图4-4)

图4-4

软件产品的美观与否,与本组设计的学生信息管理系统受欢迎程度息息相关!

五、数据库实现

5.1数据库设计

5.1.1成绩表(如表5.1)

表5.1

5.1.2教师课程表(如表5.2)

表5.2

5.1.3教师信息表(如表5.3)

表5.3

5.1.4课程信息表(如表5.4)

表5.4

5.1.5学生信息表(如表5.5)

表5.5

5.2C++和数据库的操作

本系统采用VC++MFC创建应用程序框架,使用ADO实现应用程序对数据库的连接和操作,SQLserver2005作为数据库驱动器。

其中ADO对数据库的连接和操作步骤如下:

5.3在本机上配置ODBC数据源

由于ADO是微软推出的数据库接口新标准,到现在为止已经成为最通用最流行和操作性很好的一个数据库接口标准。

首先仍然需要在服务器上配置数据源,本系统以本机作为服务器配置数据源。

操作如下:

在开始\控制面板\管理工具\ODBC数据源,之后操作(如图5-1)

图5-1

点击添加,运行(如图5-2)

图5-2

选择需要添加的数据源驱动程序,本系统为SQLserver。

选择好驱动器后点击完成(如图5-3)

图5-3

自己任意填写一个数据源名称,选择好服务器,该服务器名与登录SQLserver时使用的服务器名一致即可。

然后点击下一步(如图5-4)

图5-4

根据提示选好登录方式和信息以后点击下一步(如图5-5)

图5-5

选择需要连接的数据库点击下一步(如图5-6)

图5-6

点击完成后如下图,点击测试连接,若成功(如图5-7)

图5-7

以上边配置好了数据源。

下面进行数据源与程序的连接

5.3.1利用windows系统自带的ADO库文件实现应用程序与数据源的连接

通常首先可在C:

\ProgramFiles\CommonFiles\System\ado目录下找到msado15.dll(不同安装目录可能路径不一样,操作系统版本的不同可能相应的msado15.dll文件版本不同),找到后复制粘贴到自建的应用程序目录下,和debug路径相同。

本系统是基于对话框的程序,因此可在FileView的头文件里找到stdfax.h文件,将ADO用如下代码导入到程序(键入到stdfax.h里):

#ifdefined(ADO2_OLD)

#pragmamessage("UsingADO2TLB")

#importno_namespacerename("EOF","adoEOF")

#else#pragmamessage("UsingLatestADO")

#import"msado15.dll"no_namespacerename("EOF","adoEOF")

#endif

(如图5-7)

图5-7

5.3.2ADO库导入后便可利用ADO库里提供的接口开始进行链接和操作数据库,具体代码如下:

_ConnectionPtrPConnection;//定义指向数据库的指针(对象)

_RecordsetPtrPRecordset;//定义指向结果集的指针(对象)

:

:

CoInitialize(NULL);//COM接口初始化

try

{

UpdateData();//初始化和刷新程序窗口数据

PConnection.CreateInstance("ADODB.Connection");

PConnection->Mode=adModeReadWrite;//数据库打开模式设置

PConnection->ConnectionString=_T("DataSource=KAY-PC;Provider=SQLOLEDB.1;InitialCatalog=指定数据库名");//设置连接字符串

HRESULThr1=PConnection->Open(_T(""),_T("sa"),_T("qwe123"),adAsyncConnect);//PConnection指向数据库对象

AfxMessageBox("请稍后!

");

if(SUCCEEDED(hr1))//测试连接是否成功

{

AfxMessageBox("连接数据库成功!

");

return;

}

}

catch(_com_error&e)//捕捉错误信息

{

AfxMessageBox(e.ErrorMessage());

return;

}

操作结果集的代码如下:

try

{

PRecordset.CreateInstance("ADODB.Recordset");

CStringresult;

result.Format("SQL语句");//将SQL语句用一个字符串表示

//打开记录集,PRecordset指针指向结果集

PRecordset->Open((_bstr_t)result,PConnection.GetInterfacePtr(),adOpenKeyset,adLockOptimistic,adCmdText);//打开结果集

if((PRecordset->BOF)&&(PRecordset->adoEOF))//表中无记录

{

AfxMessageBox("无查询结果!

");

if(PRecordset!

=NULL)

PRecordset->Close();//关闭结果集

PConnection->Close();//关闭数据库连接

return;

}

else

{

//对结果集的操作

if(PRecordset!

=NULL)

PRecordset->Close();//关闭结果集

PConnection->Close();//关闭数据库连接

return;

}

}

catch(_com_error&e)

{

AfxMessageBox(e.ErrorMessage());

return;

}

六、系统详细设计

6.1主界面(如图6-1)

图6-1

主要代码如下:

#include"stdafx.h"

#include"SMS.h"

#include"SMSDlg.h"

#ifdef_DEBUG

#definenewDEBUG_NEW

#undefTHIS_FILE

staticcharTHIS_FILE[]=__FILE__;

#endif

/////////////////////////////////////////////////////////////////////////////

//CSMSApp

BEGIN_MESSAGE_MAP(CSMSApp,CWinApp)

//{{AFX_MSG_MAP(CSMSApp)

//NOTE-theClassWizardwilladdandremovemappingmacroshere.

//DONOTEDITwhatyouseeintheseblocksofgeneratedcode!

//}}AFX_MSG

ON_COMMAND(ID_HELP,CWinApp:

:

OnHelp)

END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////

//CSMSAppconstruction

CSMSApp:

:

CSMSApp()

{

//TODO:

addconstructioncodehere,

//PlaceallsignificantinitializationinInitInstance

}

/////////////////////////////////////////////////////////////////////////////

//TheoneandonlyCSMSAppobject

CSMSApptheApp;

/////////////////////////////////////////////////////////////////////////////

//CSMSAppinitialization

BOOLCSMSApp:

:

InitInstance()

{

AfxEnableControlContainer();

//Standardinitialization

//Ifyouarenotusingthesefeaturesandwishtoreducethesize

//ofyourfinalexecutable,youshouldremovefromthefollowing

//thespecificinitializationroutinesyoudonotneed.

#ifdef_AFXDLL

Enable3dControls();//CallthiswhenusingMFCinasharedDLL

#else

Enable3dControlsStatic();//CallthiswhenlinkingtoMFCstatically

#endif

CSMSDlgdlg;

m_pMainWnd=&dlg;

intnResponse=dlg.DoModal();

if(nResponse==IDOK)

{

//TODO:

Placecodeheretohandlewhenthedialogis

//dismissedwithOK

}

elseif(nResponse==IDCANCEL)

{

//TODO:

Placecodeheretohandlewhenthedialogis

//dismissedwithCancel

}

//Sincethedialoghasbeenclosed,returnFALSEsothatweexitthe

//application,ratherthanstarttheapplication'smessagepump.

returnFALSE;

}

6.2管理员界面(如图6-2)

图6-2

实现代码:

//Managerdialog

 

Manager:

:

Manager(CWnd*pParent/*=NULL*/)

:

CDialog(Manager:

:

IDD,pParent)

{

//{{AFX_DATA_INIT(Manager)

m_student_no=_T("");

m_teacher_no=_T("");

//}}AFX_DATA_INIT

}

 

voidManager:

:

DoDataExchange(CDataExchange*pDX)

{

CDialog:

:

DoDataExchange(pDX);

//{{AFX_DATA_MAP(Manager)

DDX_Control(pDX,IDC_managerlist,m_managerlist);

DDX_Text(pDX,IDC_EDIT1,m_student_no);

DDX_Text(pDX,IDC_EDIT2,m_teacher_no);

//}}AFX_DATA_MAP

}

 

BEGIN_MESSAGE_MAP(Manager,CDialog)

//{{AFX_MSG_MAP(Manager)

ON_BN_CLICKED(IDC_search_student2,Onsearchstudent)

ON_BN_CLICKED(IDC_BUTTON2,OnButton2)

ON_BN_CLICKED(IDC_BUTTON3,OnButton3)

ON_BN_CLICKED(IDC_BUTTON4,OnButton4)

ON_BN_CLICKED(IDC_add_student,Onaddstudent)

ON_BN_CLICKED(IDC_add_student2,Onaddstudent2)

ON_BN_CLICKED(IDC_BUTTON5,OnButton5)

ON_BN_CLICKED(IDC_BUTTON6,OnButton6)

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////

//Managermessagehandlers

voidManager:

:

Onsearchstudent()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

for(inti=0;i<10;i++)

{

m_managerlist.DeleteColumn(0);

}

m_managerlist.DeleteAllItems();//清空列表内容

m_managerlist.SetExtendedStyle(LVS_EX_FLATSB|LVS_EX_FULLROWSELECT|LVS_EX_HEADERDRAGDROP|LVS_EX_ONECLICKACTIVATE|LVS_EX_GRIDLINES);

m_managerlist.InsertColumn(0,"学号",LVCFMT_LEFT,95,0);

m_managerlist.InsertColumn(1,"姓名",LVCFMT_LEFT,95,1);

m_managerlist.InsertColumn(2,"性别",LVCFMT_LEFT,95,2);

m_managerlist.InsertColumn(3,"年龄",LVCFMT_LEFT,95,3);

m_managerlist.InsertColumn(4,"学院",LVCFMT_LEFT,95,4);

m_managerlist.InsertColumn(5,"主修",LVCFMT_LEFT,95,5);

m_managerlist.InsertColumn(6,"年级",LVCFMT_LEFT,95,6);

//查找

//TODO:

Addextravalidationhere

//AfxOleInit();

_ConnectionPtrPConnection;

_RecordsetPtrPRecordset;

:

:

CoInitialize(NULL);

try

{

UpdateData();

:

:

CoInitialize(NULL);//接口初始化

PConnection.CreateInstance("ADODB.Connection");

PConnection->Mode=adModeReadWrite;

//连接数据库

PConnection->ConnectionString=_T("DataSource=KAY-PC;Provider=SQLOLEDB.1;InitialCatalog=SMS");

//PConnection指向数据库对象

HRESULThr1=PConnection->Open(_T(""),_T("sa"),_T("qwe123"),adAsyncConnect);

AfxMessageBox("请稍后!

");

if(SUCCEEDED(hr1))

{

//AfxMessageBox("连接数据库成功!

");

//return;

}

}

catch(_com_error&e)

{

AfxMessageBox(e.ErrorMessage());

return;

}

try

{

PRecordset.CreateInstance("ADODB.Recordset");

_bstr_tbstrSQL;

CStringresult;

result.Format("select*fromstudent_informationwherestu_no='%s'",m_student_no);//从编辑框获取值m_name及对应的sql语句

//打开记录集,PRecordset指针指向结果集

PRecordset->Open((_bstr_t)result,PConnection.GetInterfacePtr(),adOpenKeyset,adLockOptimistic,adCmdText);

if((PRecordset->BOF)&&(PRecordset->adoEOF))//表中无记录

{

AfxMessageBox("无查询结果!

");

if(PRecordset!

=NULL)

PRecordset->Close();

PConnection->Close();

return;

}

else

{

while(!

PRecordset->adoEOF)

{

m_managerlist.InsertItem(0,"");

m_managerlist.SetItemText(0,0,(char*)(_bstr_t)PRecordset->GetCollect("stu_no"));

m_managerlist.SetItemText(0,1,(char*)(_bstr_t)PRecordset->GetCollect("stu_name"));

m_managerlist.SetItemText(0,2,(char*)(_bstr_t)PRecordset->GetCollect("st

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 交通运输

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1