文档库 最新最全的文档下载
当前位置:文档库 › 基于VC++的班级信息管理系统毕业论文

基于VC++的班级信息管理系统毕业论文

基于VC++的班级信息管理系统

计算机科学系计算机科学与技术专业

学号:姓名:指导老师

摘要随着社会的发展与科技的全面进步,使得人们越来越向信息化、数字化发展,管理信息系统(MIS)是一个由人、计算机等组成的能进行信息收集、传递、加工、维护和实用的系统,必然会代替过去大量的、繁琐的手工操作。对于学校来说,对学生的个各种信息进行统计并显示是非常重要的,本文通过Visual C++6.0的编程环境编写班级信息管理系统,利用Microsoft SQL server 2005数据库系统编写数据表,采用ODBC数据库访问技术,用模块化设计方式将系统各个功能模块层层分解,设计出系统的模块化结构,并根据系统的具体要求和需要实现功能,详细的定义了各个模块的具体功能。开发主要包括后期数据库的建立和维护以及前期应用程序的开发两方面,实现了学生信息的创建及学生成绩、违纪情况的输入、浏览、维护和统计,使得系统具有功能强大,界面友好的特点。关键词:信息管理;Visual C++6.0;SQL server 2005;ODBC

目录

第一章引言 (1)

第二章系统设计 (2)

2.1 需求分析 (2)

2.2系统目标 (2)

2.3 可行性分析 (3)

第三章运行环境及系统技术简介 (3)

3.1 Visual C++ 6.0简介 (3)

3.2 Microsoft SQL Server 2005技术简介 (3)

3.3 SQL数据库的优点 (4)

3.4 ODBC技术简介 (5)

3.5 C++语言简介 (5)

第四章系统结构功能分析 (5)

4.1班级信息管理系统的功能结构 (5)

4.2学生管理系统的业务流程图 (6)

4.3数据库设置 (7)

4.3.1.数据库分析 (7)

4.3.2.数据库概念设置 (7)

4.3.3.数据库设计逻辑结构 (8)

4.4.公共类的设置 (10)

第五章主体窗设计及模块功能实现 (11)

5.1主窗体设计 (11)

5.2科目信息管理模块设计 (12)

5.2.1科目信息管理模块概述 (12)

5.2.2科目信息管理技术分析 (12)

5.2.3科目信息管理实现过程 (13)

5.3学生信息管理模块设计 (20)

5.3.1学生信息管理模块概述 (20)

5.3.2学生信息管理实现过程 (21)

5.4学生成绩录入模块设置 (27)

5.4.1学生成绩录入模块概述 (27)

5.4.2学生成绩录入技术分析 (28)

5.4.3学生成绩录入实现过程 (29)

5.5学生违纪查询模块设置 (32)

5.5.1学生违纪查询模块概述 (32)

5.5.2学生违规查询技术分析 (33)

5.5.3学生违规查询实现过程 (34)

5.6学生成绩报表打印模块设计 (38)

第六章.项目文件清单 (44)

第七章软件测 (44)

结束语 (45)

致谢 (45)

参考文献 (46)

第一章引言

人类已经进入了一个科学技术突飞猛进的时代,经济知识和信息产业日渐重要。信息技术和网络的迅猛发展和广泛应用,对社会的各个领域产生了深刻的影响,极大地改变了人们的工作、学习和交流方式。信息的获取、交流和应用能力,已经成为人们最重要的能力之一。在知识经济占主导地位的将来,国家综合国力和国际竞争能力越来越取决于教育发展、科学技术和知识创新的水平,教育在经济和社会发展过程中呈现出越来越突出的重要作用。学生信息管理系统是一个教育代为不可或缺的部分,他的内容对于学校的决策者和管理者来说都是至关重要的。这就要求学生信息管理系统拥有强大的功能,能够提供用户足够的信息和快捷的查询你手段。一直以来,人们实用传统人工的方法管理学生信息,这种管理方式存在着许多缺点,入效率低、保密性差、数据容易出错等。此外,时间一长将产生大量冗余的文件和数据,这对于查找、更新和维护都带来了不少的困难。科学技术的不断发展和提高计算机科学日渐成熟,其强大的功能人们已经有了深刻的认识。作为计算机应用的一部分,使用计算机对学生信息管理系统进行信息管理。有着手工管理无法比拟的优点,如检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大提高学生信息管理系统管理的效率,也是教育单位的科学化、正规化管理,与世界接轨的重要条件。因此,开发一套这样的管理系统是很有必要的。

第二章系统设计

本班级信息管理系统可以说是一个综合性的学校学生管理系统,它集成了学生学籍管理系统、学生班级管理系统、学生成绩管理系统和学生选课管理系统多种功能,因而具有较强的实用行和先进性。

2.1 需求分析

通过对学生管理过程的研究和分析,要求本系统应该具有以下功能。

(1)学生信息录入。

(2)学生成绩录入。

(3)成绩等级设置。

(4)学生违规处理。

(5)学生成绩排行。

(6)学生信息查询。

(7)学生成绩查询、打印。

2.2系统目标

学生信息管理系统以实现学生日常的信息管理为设计目标,加以强大的数据库管理功能,可以方便对学生信息进行管理,大大提高了学校日常工作的效率。本系统在设计时应该满足以下几点:

1.采用人机对话的操作方式,信息查询灵活、方便、快捷、准确,数据存储安全可靠。

2.对学生信息的操作简单,可以方便地进行添加、修改和删除操作。

3.可以根据需要灵活地调整科目信息。

4.可以录入教师信息,方便任命班级的班主任。

5.编辑考试类别,更灵活地对学生测验。

6.打印学生成绩报表,更直观地了解学生成绩。

7.学生违规处理,对违反校规的学生进行处罚。

8.对用户输入的数据,系统进行严格地数据检验,尽可能排除人为错误。

2.3 可行性分析

由于本系统的管理对象单一,都是在校学生,且每个数据内容具有较强的关联性涉及的计算过程不是很复杂。因此,比较适合采用数据库管理。而且学校用于学生管理计算机在存储量、速度方面都能满足数据库运行要求。另一方面 此小型管理系统从投入的人力、财力与物力来讲是非常之小的。由于有指导老师的指导和相关参考文献,特别是网上资料以及参考其他程序的功能,因此完全可以实现。

第三章运行环境及系统技术简介

本系统是基于Visual C++ 6.0 编程环境而开发的,利用Microsoft SQL Server 2005 建立数据库,通过ODBC访问数据库。

3.1 Visual C++ 6.0简介

本班级信息管理系统是基于Visual C++ 6.0环境而进行开发的。Visual C++ 6.0 是Microsoft Visual Studio 6.0 系列组件之一,是微软公司推出的一款C++集成开发工具。Visual C++是现在最为通用的开发工具之一,它提供了相当齐备类库和友好的界面,为数据库开发提供了比较好的开发环境。提供了多种数据库访问技术,可视化的编程环境,使操作更加直观简便。因此借助Visual C++可以开发出功能强大、速度快、应用广泛并且占用资源少的中小型数据库信息管理系统。

3.2 Microsoft SQL Server 2005技术简介

本系统以Microsoft SQL Server 2005为后台数据库,Microsoft SQL Server 2005就是关系数据库开发工具,它是一款比较方便易用的数据库系统。数据库能汇集各种信息以供查询、存储和检索。所谓的数据库就是由一些有意义和有关系的数据(Data)组成的,一个数据库中包含了许多条记录(Record),而每条记录是由多个字段(Field)所做成的,不同的字段存放不同的数据。所以数据库的严格定义是一组相关记录的集合。而字段则是最基本的数据项,也是数据库中最小的单位。在计算机中用来帮助我们管理

数据库系统,我们称之为数据库管理系统DataBase Management System(DBMS)。数据库管理系统是架构在一个或多个数据库之上的,并针对数据库中的数据进行管理运用。

3.3 SQL数据库的优点

1、存储方式简单,易于维护管理。SQL管理的对象有表、查询、窗体、报表、页、宏和模块,以上对象都存放在后缀为.mdf或.ldf的数据库文件中,便于用户的操作和管理。

2、面向对象 SQL是一个面向对象的开发工具,利用面向对象的方式将数据库系统中的各种功能对象化,将数据库管理的各种功能封装在各类对象中。它将一个应用系统当作是由一系列对象组成的,对每个对象它都定义一组方法和属性,以定义该对象的行为和外围用户还可以按需要给对象扩展方法和属性。通过对象的方法、属性完成数据库的操作和管理,极大地简化了用户的开发工作。同时,这种基于面向对象的开发方式 使得开发应用程序更为简便。

3、界面友好、易操作。SQL是一个可视化工具,是风格与Windows完全一样,用户想要生成对象并应用,只要使用鼠标进行拖放即可,非常直观方便。系统还提供了表生成器、查询生成器、报表设计器以及数据库向导、表向导、查询向导、窗体向导、报表向导等工具,使得操作简便,容易使用和掌握。

4、集成环境、处理多种数据信息。SQL基于Windows操作系统下的集成开发环境。该环境集成了各种向导和生成器工具,极大地提高了开发人员的作效率,使得建立数据库、创建表、设计用户界面、设计数据查询、报表打印等可以方便有序地进行。

5、SQL支持ODBC 开发数据库互连Open Data Base Connectivity。利用SQL强大的DDE(动态数据交换)和OLE(对象的联接和嵌入)特性,可以在一个数据表中嵌入位图、声音、Excel表格、Word文档,还可以建立动态的数据库报表和窗体等。SQL 还可以将程序应用于网络,并与网络上的动态数据相联接。利用数据库访问对象生成HTML文件,轻松构建Internet/Intranet的应用。

6、支持广泛、易于扩展、弹性较大,能够将通过链接表的方式来打开EXCEL文件、格式化文本文件等。这样就可以利用数据库的高效率对其中的数据进行查询、处理。还可以通过以Access作为前台客户端,以SQL Server作为后台数据库的方式,如ADP 开发大型数据库应用系统。总之,SQL是一个既可以只用来存放数据的数据库,也可以

作为一个客户端开发工具来进行数据库应用系统开发,即可以开发方便易用的小型软件,也可以用来开发大型的应用系统。

3.4ODBC技术简介

开放式数据库互连(Open-DataBase-Connectivity,简称ODBC)。ODBC的基本思想是为用户提供简单、标准、透明的数据库连接的公共编程接口,开发厂商根据ODBC的

标准去实现底层的驱动程序,这个驱动对用户是透明的,并允许根据不同的DBMS采用

不同的技术加以优化实现,概括起来,ODBC具有以下灵活的特点:

1. 使用户程序有很高的互操作性,相同的目标代码适用于不同的DBMS;

2. 由于ODBC的开放性,它为程序集成提供了便利,为客户机/服务器结构提供了技术

支持;

3. 由于应用与底层网络环境和DBMS分开,简化了开发维护上的困难。

3.5 C++语言简介

C++语言是一种优秀的面向对象程序设计语言。它在C语言的基础上发展而来,但

它比C语言更容易为人们学习和掌握。C++以其独特的语言机制在计算机科学的各个领

域中得到了广泛的应用。面向对象的设计思想是在原来结构化程序设计方法基础上的一个质的飞跃,C++完美地体现了面向对象的各种特性。 C++所提供的抽象机制能够被应

用于那些对效率和可适应性具有极高要求的程序设计任务之中。 C++的一个目标就是提供更易用并具有一定承受能力的设计思想和程序设计技术,进一步提高程序的质量。然而,C++的设计目标总还是在于要支持一定范围内的各种程序设计风格和设计思想。这

与一般在语言设计方面的观点形成一定对比。一般在语言设计上总是试图将所有系统内建于单独一个被重点支持的、带有强制性的程序设计风格之中或称典范(paradigm)。C++提供了class、namespace和访问控制,使设计决策的各异化(locality)成为可能。

第四章系统结构功能分析

4.1班级信息管理系统的功能结构

班级信息管理系统的功能结构如图4.1所示

图4.1 学生管理系统功能结构图4.2学生管理系统的业务流程图

图4.2 学生管理业务流程图

4.3数据库设置

4.3.1.数据库分析

在学生管理系统中由于涉及大量的学生信息,因此在设计该系统时选择使用了Microsoft SQL Server 2005来满足系统的要求,数据库的名称是db_student,在数据库中创建11张表用于存储不同信息。

4.3.2.数据库概念设置

根据前面的需求分析和系统设计规划,本系统中使用的数据库实体对象分别为管理员实体、教师信息实体、学生信息实体、违纪信息实体、成绩段实体和成绩信息实体等,下面将给出几个关键实体的E—R图。

管理员实体:包括管理员名称和管理员密码。管理员实体E_R如图4.3所示

教师信息实体:教师信息实体包括教师编号实体、教师姓名实体、教师性别实体、所在办公室实体、教师文凭实体和教师职称实体,教师信息实体E_R图如4.4所示

图4.3管理员实体E_R图图4.4教师信息实体E_R图

学生信息实体:学生信息实体包括学生编号实体、学生姓名实体、学生年龄实体、学生性别实体、联系电话实体、家庭地址实体和所在班级实体。学生信息实体E_R图如图4.5所示

违规信息实体:违规信息实体包括:违规编号实体、违规内容实体、处理结果实体、备注信息实体和违规时间实体。违规信息实体E_R图如图4.6所示

图4.5学生信息实体E_R图图4.6违规信息实体E_R图

成绩等级实体:成绩等级实体包括等级名称实体、成绩上限实体、成绩下限实体、成绩等级实体E_R图如图4.7所示

成绩信息实体:成绩信息实体包括学生编号实体、考试科目实体、考试成绩实体、考试

图4.7成绩实体等级E_R图图4.8成绩信息实体E_R图

4.3.3.数据库设计逻辑结构

下面给出学生管理系统数据库中主要表的表结构。

tb_user(管理员信息表):管理员信息表用于保存管理员的信息,如表4.1所示表4.1表tb_user的结构

tb_teacher(教师信息表):用于保存教师的信息,如表4.2所示

表4.2表tb_teacher的结构

tb_studentinfo(学生信息表):用于保存学生的信息,如表4.3所示

表4.3表tb_studentinfo的结构

tb_regbreakinfo(违规信息表):用于保存违规事件的信息,如表4.4所示

表4.4表tb_regbeakinfo的结构

tb_gradelevel(成绩等级表):成绩等级表用于保存学生成绩等级信息,如表4.5所示表4.5表tb_gradelevel的结构

tb_examinfo_sub(成绩信息表):成绩信息表用于保存学生的等级信息,如表4.6所示

表4.6表tb_examinfo_sub的结构

4.4.公共类的设置

本系统是由ODBC连接的数据源,可以通过CDatabase类的Open函数连接数据源Open函数用于创建数据源的连接,语法如下:

virtual BOOL Open(LPCTSTR lpszDSN,BOOL bExclusive=FALSE,BOOL bReadonly FALSE,LPCTSTR lpszConnect=”ODBC;”,BOOL bUseCursorLib=TURE);

Open函数中的参数说明如表4.7所示。

在CMystudentsysApp类中构造一个CDatabase类对象,在InitInstance方法中连接数据源,代码如下:

if(CoInitialize(NULL)!=0) //初始化COM环境

{

AfxMessagebox(“初始化COM支持库失败!”);

exit(1);

}

try{

CString strConnect;

strConnect.Format(“DSN=mystudentsys;”); //设置连接字符串//判断连接数据库是否成功

if(m_DB.Open(NULL,false,false,”ODBC;DSN=mystudentsys;UID=Sa;pwd=;”)==0);

{

AfxMessageBox(“Unable to the Specified Data Source”);

return FALSE;

}

}

catch(CDBRxception *pE)

{

pE—>ReportError();

pE—>Delete(); //删除

return FLASE;

}

第五章主体窗设计及模块功能实现

5.1主窗体设计

“学生信息管理系统”主窗口由菜单和客户区域组成,其中,其中客户区域显示了一幅位图,主窗体效果如图5.1所示

图5.1 主窗体效果图

主窗体设计步骤如下:

(1)启动Visual C++6.0,选择“File”/“New”命令,打开“New”对话框,。

(2)在“New”对话框左方的列表视图中选择“MFC AppWizard(exe)”选项,在“Project name”文本框中输入工程名称,在“Location”文本框中设置工程保存的路径。单机“OK”

按钮进入“MFC AppWizard-Step 1”对话框。

(3)单机“Finish”按钮完成工程的创建。

(4)在主窗口中放置1个图像控件,并导入1幅位图资源,适当调整图像控件的位置。

(5)创建一个菜单资源,并设置各个菜单项的ID和名称。

(6)通过类向导向主窗口添加菜单项的单击事件。

5.2科目信息管理模块设计

5.2.1科目信息管理模块概述

科目信息管理用于维护科目信息,主要实现科目的添加,修改和删除等操作,“科目信息管理”窗口如图5.2所示

图5.2 科目信息管理

5.2.2科目信息管理技术分析

本系统是用ODBC连接的数据源,在进行对数据表的操作时可以以CRecordset类为基类派生一个数据表映射类,这样可以方便地操作数据表。派生数据表映射类的步骤如何:

(1)创建一个与数据表映射的类CSubjectinfo,打开“New Class”对话框,单击“Add Class”按钮,在弹出菜单中选择“New”命令,打开新建类窗口。

(2)在“Name”文本框中输入类名“CSubjectinfo”,在“Base class”下拉列表框中选择基类“CREcordset”,单击“OK”按钮,打开“Database Options”对话框。

(3)在“ODBC”下拉列表框中选择一个数据源,本例为“mystudentsys”。“mystudentsys”是学生管理系统所需的数据源,用于连接tb_subject数据库。

(4)单击“OK”按钮,打开“SQL Server登陆”对话框。

(5)单击“确定”按钮,打开“Select Database Table”对话框。

(6)选择“dbo.tb_subject”选项,单击“OK”按钮创建映射类。

(7)在映射类CSubjectinfo的头文件中引入afxdb.h头文件。

5.2.3科目信息管理实现过程

(1)创建一个对话框类,打开对话框属性窗口,将对话框的“ID”改为

“IDD_DIg_subjectinfo”,将对话框标题改为“科目信息管理”。

(2)向对话框中添加一个群组控件、2个静态文本控件和2个编辑框控件,各个控件的

(3)创建一个工具栏资源“IDR_TOOLBAR_subjectinfo”。

(4)为创建的对话框添加一个类,类名为“CSubjectdlg”。在该类的头文件中引入Subjectinfo.h头文件,使其可以使用映射类CSubjectinfo。

(5)向对话框中添加OnInitDialog()方法,在对话框初始化时创建工具栏并打开本模块使用的数据表,代码如下:

BOOL CSubjectdlg::OnInitDialog()

{

CDialog::OnInitDialog();

//创建工具栏并设置工具栏属性

if(!m_ToolBar.CreateEx(this,TBSTYLE_FLAT,WS_CHILD|WS_VISIBLE|CBRS_TOP| CBRS_GRIPPER|CBRS_TOOLTIPS|CBRS_SIZE_DYNAMIC)||!M_ToolBar.LoadToolBar(I DR_TOOLBAR_subjectinfo))

{

TRACE90(_T(“创建工具条失败\n”));

return FALSE;

}

//显示工具栏

RepositionBars

(AFX_IDW_CONTROLBAR_FIRTS,AFX_IDW_CONTROLBAR_LAST,0);

//设置工具栏按钮风格

m_ToolBar.SetButtonStyle(0,TBBS_CHECKBOX);

m_ToolBar.SetButtonStyle(1,TBBS_CHECKBOX);

m_ToolBar.SetButtonStyle(2,TBBS_CHECKBOX);

m_ToolBar.SetButtonStyle(3,TBBS_CHECKBOX);

m_ToolBar.SetButtonStyle(4,TBBS_CHECKBOX);

m_ToolBar.SetButtonStyle(5,TBBS_CHECKBOX);

m_ToolBar.SetButtonStyle(6,TBBS_CHECKBOX);

//设置SQL语句

CString sqlStr;

sqlStr="SELECT * FROM tb_subject";

mysubjectset = new CSubjectinfo(&((CMystudentsysApp*)AfxGetApp())->m_DB);

if(!mysubjectset->Open(AFX_DB_USE_DEFAULT_TYPE,sqlStr))

{

AfxMessageBox("tb_subject 表打开失败!");

}

return TRUE;

}

(6)自定义一个DisplayRecord()方法,在记录集指针移动时为控件赋值,代码如下:

bool CSubjectdlg::DisplayRecord()

//判断是否移动到开头和结尾

{

if(mysubjectset->IsEOF()&&mysubjectset->IsBOF())

{

m_subjectname = ""; //为控件赋空值

m_subjectid = "";

}

else

{

if(mysubjectset->IsBOF()) //如果移动到了开头,就向后移动

{

mysubjectset->MoveNext(); //向下移动记录集指针

}

else //否则前移

{

if(mysubjectset->IsEOF())

{

mysubjectset->MovePrev(); //向上移动记录集指针

}

}

}

m_subjectname = mysubjectset->m_subject; //为对应的变量赋值

m_subjectid = mysubjectset->m_code;

UpdateData(FALSE);

return TRUE;

}

(7)处理工具栏中的“添加”按钮的单击事件,当单击“添加”按钮时,将清空控件中的数据,以便用户进行输入,代码如下:

void CSubjectdlg::Onsubjectinfotoolbaradd()

{

//清空控件中的数据

m_subjectname = "";

m_subjectid = "";

UpdateData(FALSE);

}

(8)处理工具栏中的“保存”按钮的单击事件,当单击“保存”按钮时,将控件中的数据保存到数据库中,代码如下:

void CSubjectdlg::Onsubjectinfotoolbarsave()

{

UpdateData(TRUE); //更新控件信息

//判断控件中的数据是否为空

if(m_subjectname.IsEmpty()||m_subjectid.IsEmpty())

{

AfxMessageBox("请输入相应的数据!");

return ;

}

//设置SQL数据

CString sqlStr_findid;

sqlStr_findid = "SELECT * FROM tb_subject WHERE

tb_subject.code='"+m_subjectid+"' ";

mysubjectset_find = new CSubjectinfo(&((CMystudentsysApp*)AfxGetApp())->m_DB);

//打开数据表

if(!mysubjectset_find->Open(AFX_DB_USE_DEFAULT_TYPE,sqlStr_findid)) {

AfxMessageBox("tb_subject 打开失败!");

}

//判断记录集中是否有要保存的数据信息

if(mysubjectset_find->GetRecordCount()!=0)

{

AfxMessageBox("科目代码不能重复,请修改后再输入!");

if(mysubjectset_find->IsOpen())//判断数据表是否打开

{

mysubjectset_find->Close(); //关闭数据表

delete mysubjectset_find; //释放指针

相关文档