收藏 分销(赏)

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

上传人:胜**** 文档编号:2051577 上传时间:2024-05-14 格式:DOC 页数:55 大小:2.07MB
下载 相关 举报
C--课程设计-学生信息管理系统.doc_第1页
第1页 / 共55页
C--课程设计-学生信息管理系统.doc_第2页
第2页 / 共55页
C--课程设计-学生信息管理系统.doc_第3页
第3页 / 共55页
C--课程设计-学生信息管理系统.doc_第4页
第4页 / 共55页
C--课程设计-学生信息管理系统.doc_第5页
第5页 / 共55页
点击查看更多>>
资源描述

1、课程设计报告课程名称:面向对象程序设计C+设计题目: 学生信息管理系统 专业: 计算机科学与技术 姓名: 学号: 指导教师: 李晓虹 2016年1月1日目录 一、系统背景31.1 摘要31.2 背景和目的31.3 关键字3二、操作分析32.1 关于使用者4三、需求分析63.1 产品透视图63.2 产品功能63.3 流程7四、系统总体设计84.1 主界面94.2管理员界面94.3学生界面104.4教师界面10五、系统详细设计115.1 数据库设计125.2 导入ADO库文件155.3 连接数据库165.4 主界面功能实现185.5 登录功能实现245.6 管理员界面功能实现275.7 学生界面功

2、能实现375.8 教师界面功能实现44六、结束语546.1 心得体会54一、系统背景【摘要】信息管理系统是一个不断发展的新型学科,任何一个单位要生存要发展,要高效率地把内部活动有机地组织起来,就必须建立与自身特点相适应的管理信息系统。在现今众多的学生管理系统中,最为常见的是学生信息管理系统和学生课程成绩管理系统。这是对我国现今大多学校对学生管理的需要而开发设计的,但随着学校的发展,这种各自独立的系统远远不能满足学校管理的需要。学生信息管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,所以学生信息管理系统应该能够为用户提供充足的信息和快捷的查询手段。【背景及目

3、的】随着计算机技术的飞速发展,当今社会正快速向信息化社会前进。而如今学校的规模不断扩大,学生数量急剧加,有关学生的各种信息量也成倍增长,面对庞大的信息量,就需要有学生信息管理系统来提高学生管理工作的效率。通过这样的系统,可以做到信息的规范管理、科学统计和快速的查询,从而减少管理方面的工用量。此次设计我们使用JAVA编程,实现了学生信息管理系统的过程。本系统采用VisualC+和SQL SERVER 2008数据库管理系统作为开发工具,通过对学生信息管理系统进行可行性分析、需求分析和设计逐步将一个学生信息管理系统的开发过程呈现出来。系统可以对学校的所有专业信息和课程信息进行管理,可以对学生的基本

4、信息和成绩进行管理,最后本系统能对专业信息、课程信息、学生基本信息和成绩信息进行查询。 【关键字】使用者;需求分析;设计界面;C+;MFC;SQL server2008;二、操作分析 2.1、关于使用者 本组将图书管理系统分为了三类,分别为:管理员、学生、教师。管理员经过注册和登录后,不但可以修改基本学生信息和添加记录,还可以修改学生已经选课情况以及修改教师的基本信息、教师的开课情况、查询与学生和教师有关的信息。学生通过登录和注册以后,可以查询自己的基本信息以及查询本学期的各门课程的成绩、选课情况以及选课等等。教师登录该系统以后。可以修改个人信息、修改学生成绩以及录入学生成绩、以及对自己的开课

5、情况进行查询。学生信息管理系统的打开界面(如图2-1),用户可以看到关于登录人员的分类,随即进行接下来的操作。点击“管理员”。进入管理员界面图2-1管理员界面(如图2-2) 图2-2点击学生进入学生主界面(如图2-3) 图2-3点击”教师”进入到教师登录主界面(如图2-4) 图2-4经过调试,该界面是用户友好界面,方便使用者的操作和注册。三、关于需求的分析3.1系统功能用户登录功能、学生个人信息查询以及修改功能、学生个人成绩查询功能、学生选课功能、管理员修改学生选课以及教师开课功能、查询和修改学生教师相关信息功能、教师基本信息查询功能、教师个人开课信息查询功能、教师录入和修改学生成绩功能等。3

6、.2系统E-R图(如图3-2) 图3-23.3功能流程前面确定了对学生信息管理系统的使用对象的定位,需求分析是根据适用对象而定的,要求操作界面友好,操作方便,便于使用者进行登录,信息查询、信息修改的操作一体化,流程清楚明了,便于理解与使用。下图1是关于管理员、学生和教师的操作流程。3.4功能流程图(如图3-4) 图3-4下面是该系统的使用者对系统的使用需求:1) 实现管理员对学生、教师的基本信息的录入、修改、查询等基本操作。2) 实现学生选课功能。3) 实现教师打分功能。4) 查看学生课程选择。5) 教师开课情况查询。6) 学生成绩查询。从上述陈述中可以发现以下元素:使用对象:1. 管理员2.

7、 学生3. 教师 基本用例:1.登录:老用户的系统登录。2.个人信息查询:对登录者的个人信息进行查询。4.学生选课:学生根据已有的课程进行选课。5.学生成绩查询:学生对自己已选的课程的所有成绩进行了解。6.学生成绩录入:教师根据自己的开课情况对选择该门课的学生进行打分。四、系统总体设计软件的界面是用户与计算机进行信息数据交流的媒介,一个软件设计界面的人性化,友好与否将决定该软件的受欢迎度。所以在软件的界面设计方面做了很多次实验。软件登录主界面设计(如图4-1) 图4-1管理员界面(如图4-2) 图4-2学生界面(如图4-3) 图4-3教师界面(如图4-4) 图4-4软件产品的美观与否,与本组设

8、计的学生信息管理系统受欢迎程度息息相关!五、数据库实现5.1数据库设计5.1.1成绩表(如表5.1) 表5.15.1.2教师课程表(如表5.2) 表5.25.1.3教师信息表(如表5.3) 表5.35.1.4课程信息表(如表5.4) 表5.45.1.5学生信息表(如表5.5) 表5.55.2 C+和数据库的操作本系统采用VC+MFC创建应用程序框架,使用ADO实现应用程序对数据库的连接和操作,SQL server 2005作为数据库驱动器。其中ADO对数据库的连接和操作步骤如下:5.3在本机上配置ODBC数据源由于ADO是微软推出的数据库接口新标准,到现在为止已经成为最通用最流行和操作性很好的

9、一个数据库接口标准。首先仍然需要在服务器上配置数据源,本系统以本机作为服务器配置数据源。操作如下:在 开始控制面板管理工具ODBC数据源,之后操作(如图5-1) 图5-1 点击添加,运行(如图5-2) 图5-2选择需要添加的数据源驱动程序,本系统为SQL server。选择好驱动器后点击完成(如图5-3) 图5-3自己任意填写一个数据源名称,选择好服务器,该服务器名与登录SQL server时使用的服务器名一致即可。然后点击下一步(如图5-4) 图5-4根据提示选好登录方式和信息以后点击下一步(如图5-5) 图5-5选择需要连接的数据库点击下一步(如图5-6) 图5-6点击完成后如下图,点击测

10、试连接,若成功(如图5-7) 图5-7以上边配置好了数据源。下面进行数据源与程序的连接5.3.1利用windows系统自带的ADO库文件实现应用程序与数据源的连接通常首先可在C:Program FilesCommon FilesSystemado目录下找到msado15.dll(不同安装目录可能路径不一样,操作系统版本的不同可能相应的msado15.dll文件版本不同),找到后复制粘贴到自建的应用程序目录下,和debug路径相同。本系统是基于对话框的程序,因此可在FileView的头文件里找到stdfax.h文件,将ADO用如下代码导入到程序(键入到stdfax.h里):#if defined

11、(ADO2_OLD)#pragma message( Using ADO2 TLB ) #import no_namespace rename(EOF, adoEOF) #else #pragma message( Using Latest ADO ) #import msado15.dll no_namespace rename(EOF, adoEOF) #endif(如图5-7) 图5-75.3.2 ADO库导入后便可利用ADO库里提供的接口开始进行链接和操作数据库,具体代码如下:_ConnectionPtr PConnection;/定义指向数据库的指针(对象)_RecordsetPtr

12、 PRecordset;/定义指向结果集的指针(对象):CoInitialize(NULL);/COM接口初始化tryUpdateData();/初始化和刷新程序窗口数据 PConnection.CreateInstance(ADODB.Connection);PConnection-Mode=adModeReadWrite;/数据库打开模式设置PConnection-ConnectionString = _T(Data Source=KAY-PC;Provider=SQLOLEDB.1;Initial Catalog=指定数据库名);/设置连接字符串 HRESULT hr1=PConnect

13、ion-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); CString result;result.Format(SQ

14、L语句);/将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

15、;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#define new DEBUG_NEW#undef THIS_FILEstatic char THIS

16、_FILE = _FILE_;#endif/ CSMSAppBEGIN_MESSAGE_MAP(CSMSApp, CWinApp)/AFX_MSG_MAP(CSMSApp)/ NOTE - the ClassWizard will add and remove mapping macros here./ DO NOT EDIT what you see in these blocks of generated code!/AFX_MSGON_COMMAND(ID_HELP, CWinApp:OnHelp)END_MESSAGE_MAP()/ CSMSApp constructionCSMSAp

17、p:CSMSApp()/ TODO: add construction code here,/ Place all significant initialization in InitInstance/ The one and only CSMSApp objectCSMSApp theApp;/ CSMSApp initializationBOOL CSMSApp:InitInstance()AfxEnableControlContainer();/ Standard initialization/ If you are not using these features and wish t

18、o reduce the size/ of your final executable, you should remove from the following/ the specific initialization routines you do not need.#ifdef _AFXDLLEnable3dControls();/ Call this when using MFC in a shared DLL#elseEnable3dControlsStatic();/ Call this when linking to MFC statically#endifCSMSDlg dlg

19、;m_pMainWnd = &dlg;int nResponse = dlg.DoModal();if (nResponse = IDOK)/ TODO: Place code here to handle when the dialog is/ dismissed with OKelse if (nResponse = IDCANCEL)/ TODO: Place code here to handle when the dialog is/ dismissed with Cancel/ Since the dialog has been closed, return FALSE so th

20、at we exit the/ application, rather than start the applications message pump.return FALSE;6.2管理员界面(如图6-2) 图6-2实现代码:/ Manager dialogManager:Manager(CWnd* pParent /*=NULL*/): CDialog(Manager:IDD, pParent)/AFX_DATA_INIT(Manager)m_student_no = _T();m_teacher_no = _T();/AFX_DATA_INITvoid Manager:DoDataEx

21、change(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_MAPBEGIN_MESSAGE_MAP(Manager, CDialog)/AFX_MSG_MAP(Manager)ON_BN_CLICKED(IDC_search_stu

22、dent2, 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)/A

23、FX_MSG_MAPEND_MESSAGE_MAP()/ Manager message handlersvoid Manager:Onsearchstudent() / TODO: Add your control notification handler code herefor(int i=0;iMode=adModeReadWrite;/连接数据库PConnection-ConnectionString = _T(Data Source=KAY-PC;Provider=SQLOLEDB.1;Initial Catalog=SMS);/PConnection指向数据库对象 HRESULT

24、 hr1=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_t bstrSQL;CString result;result.Format(select * from stud

25、ent_information where stu_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(

26、); PConnection-Close();return;elsewhile(!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-G

27、etCollect(stu_sex);m_managerlist.SetItemText(0,3,(char*)(_bstr_t)PRecordset-GetCollect(stu_age);m_managerlist.SetItemText(0,4,(char*)(_bstr_t)PRecordset-GetCollect(stu_col);m_managerlist.SetItemText(0,5,(char*)(_bstr_t)PRecordset-GetCollect(stu_maj);m_managerlist.SetItemText(0,6,(char*)(_bstr_t)PRec

28、ordset-GetCollect(stu_grade);PRecordset-MoveNext();if(PRecordset!=NULL)PRecordset-Close(); PConnection-Close();return; catch(_com_error &e)AfxMessageBox(e.ErrorMessage();return;void Manager:OnButton2() /教师基本信息查询/ TODO: Add your control notification handler code herefor(int i=0;iMode=adModeReadWrite;

29、/连接数据库PConnection-ConnectionString = _T(Data Source=KAY-PC;Provider=SQLOLEDB.1;Initial Catalog=SMS);/PConnection指向数据库对象 HRESULT hr1=PConnection-Open(_T(),_T(sa),_T(qwe123),adAsyncConnect);AfxMessageBox(请稍后!);if(SUCCEEDED(hr1)/AfxMessageBox(连接数据库成功!);/return;catch(_com_error &e)AfxMessageBox(e.ErrorM

30、essage();return;try PRecordset.CreateInstance(ADODB.Recordset); _bstr_t bstrSQL;CString result;result.Format(select * from teacher_information where teacher_no=%s,m_teacher_no);/从编辑框获取值m_name及对应的sql语句 /打开记录集,PRecordset指针指向结果集 PRecordset-Open(_bstr_t)result,PConnection.GetInterfacePtr(),adOpenKeyset,

31、adLockOptimistic,adCmdText);if(PRecordset-BOF)&(PRecordset-adoEOF)/表中无记录AfxMessageBox(无查询结果!);if(PRecordset!=NULL)PRecordset-Close(); PConnection-Close();return;elsewhile(!PRecordset-adoEOF)m_managerlist.InsertItem(0,);m_managerlist.SetItemText(0,0,(char*)(_bstr_t)PRecordset-GetCollect(teacher_no);m

32、_managerlist.SetItemText(0,1,(char*)(_bstr_t)PRecordset-GetCollect(teacher_name);m_managerlist.SetItemText(0,2,(char*)(_bstr_t)PRecordset-GetCollect(teacher_sex);m_managerlist.SetItemText(0,3,(char*)(_bstr_t)PRecordset-GetCollect(teacher_age);m_managerlist.SetItemText(0,4,(char*)(_bstr_t)PRecordset-

33、GetCollect(teacher_col);PRecordset-MoveNext();if(PRecordset!=NULL)PRecordset-Close(); PConnection-Close();return; catch(_com_error &e)AfxMessageBox(e.ErrorMessage();return;void Manager:OnButton3() /查询学生选课信息/ TODO: Add your control notification handler code herefor(int i=0;i10;i+)m_managerlist.Delete

34、Column(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

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服