c++1学生信息管理系统.docx
《c++1学生信息管理系统.docx》由会员分享,可在线阅读,更多相关《c++1学生信息管理系统.docx(20页珍藏版)》请在冰豆网上搜索。
c++1学生信息管理系统
学生信息管理系统
1.课程设计的目的
随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。
管理信息系统是一个不断发展的新型学科,任何一个单位要生存要发展,要高效率地把内部活动有机地组织起来,就必须建立与自身特点相适应的管理信息系统。
VC++程序设计课程设计是计算机科学与技术专业的《VC++程序设计》课程的综合性实践环节。
VC++程序设计是一门实用性很强的学科,是进行软件开发的主要工具,只有进行实际操作,才能将理论知识和实际应用有机的结合起来,锻炼学生分析解决实际问题的能力,提高学生实际运用的能力,为学生毕业设计,日后工作中的软件开发打下良好的基础。
2.需求分析
用计算机技术实现的科学化管理,是在信息技术迅速发展的今天学校提高管理效率的必需选择。
学生信息管理系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。
对于前者要求建立起数据一致性和完整性强、数据安全性好的库。
而对于后者则要求应用程序功能完备、易使用等特点。
学生信息管理系统用来将某一个院系按专业、班级来管理学生的基本信息、课程信息和学生成绩。
下面就其系统功能作简单的说明。
该系统主要是方便查询学生的信息,用该系统可以查到学生的姓名,年龄,学号,性别,学院,班级等。
可以统计学生在某一学期的总学分或者单科成绩、总成绩。
系统主要功能包括:
信息操作功能、查询功能、统计功能、分析功能。
信息操作功能
(1)学生基本信息的添加、修改和删除。
学生基本信息包括:
学号(学号的前6位为班级号)、姓名、性别、出生日期和所在专业。
(2)学生成绩信息的添加、修改和删除。
学生成绩信息包括:
学号、课程号、成绩和和学分。
2.2查询功能
可以通过学号来查询学生基本信息,通过学号可以查询学生的选课信息,通过学号和学期查询学生的成绩,通过课程号查询该课程的信息。
2.3统计功能
统计学生某个学期或所有学期课程的总学分,统计学生某个学期的或所有学期的单科成绩或者总成绩。
运行环境
(1)硬件环境
处理器:
InterCentrinoDuo。
内存:
521MB。
硬盘空间:
80G。
(2)软件环境
操作系统:
WindowsXP
Microsoftvisualc++Microsoftaccess数据库
3.总体设计
系统的结构图
学生信息管理系统是对学生的基本信息和成绩信息进行管理,主要包括添加、修改和删除学生的基本信息及课程的基本信息;录入、修改和删除学生的成绩信息,对基本信息、成绩信息进行查询、排序及统计等操作,从而实现学生信息管理的自动化与计算机化。
本课题将实现一个简化的学生信息管理系统。
(1)添加信息:
使用这个模块,可以添加学生的基本信息,包括学生的学号,姓名,民族,性别,籍贯,出生年月日,政治面貌,学院,专业,所在年级,寝室地址,毕业院校,身份证号,电子邮箱,联系电话,家庭住址,备注等。
(2)成绩导入:
包括学号,课程编号,课程名称,学分,成绩。
(3)信息查询:
包括学号,姓名,班级,学院。
(4)成绩查询:
包括课程名称,课程编号。
(5)个人信息:
当点击这个按钮时,可以显示当前某个人的信息。
(6)查看成绩:
点击这个按钮时,可以显示当前这个人的所有成绩。
设计数据库
用MicrosoftAccess创建一个数据库,含有3个主要数据表:
学生基本信息表student、课程信息表couese和学生成绩表score。
这3个数据表的结构如表1~3所示。
这几个表中,学号studentno和课程号courseno内容都是唯一的,分别是student和course表中的主关键字。
Score表中的studentno和student表中的同名字段相对应,字段course和course表中的courseno字段相对应。
说明:
由于student和course表中都有专业字段,因此为便于用户操作,需要一个专业数据字典。
该数据字典也作为数据库的一个数据表speical,其结构如表4所示。
表1学生基本信息表(student)结构
序号
字段名称
数据类型
字段大小
小数位
字段含义
1
2
3
4
5
studentname
studentno
xb
birthday
speical
文本
文本
是/否
日期/时间
文本
20
10
50
姓名
学号
性别
出生年月
专业
表2课程信息表(course)结构
序号
字段名称
数据类型
字段大小
小数位
字段含义
1
2
3
4
5
6
7
courseno
special
coursename
coursetype
openterm
hours
credit
文本
文本
文本
文本
数字
数字
数字
7
50
50
10
字节
字节
单精度
——
——
——
——
——
——
1
课程号
所属专业
课程名
课程类型
开学学期
课时数
学分
表3学生课程成绩表(score)结构
序号
字段名称
数据类型
字段大小
小数位
字段含义
1
2
3
4
studentno
course
score
credit
文本
文本
数字
数字
8
7
单精度
单精度
1
1
学号
课程号
成绩
学分
4.详细设计
该系统包含多个模块,期中重要的有6大模块,添加信息,成绩导入,信息查询,成绩查询,个人信息,查看成绩。
该系统的主界面如图2所示。
图2系统的主界面
信息查询的设计
下面我们对信息查询做详细的设计。
信息查询这个模块的功能主要通过某个学生的某一项信息,比如学号,班级,姓名,专业,年级,然后查询到这个学生的多个信息。
比如通过学生的学号,可以查询到这个学生所在学院,所在班级等。
当我们点击信息查询这个按钮时,显示一个对话框,如图3所示。
图3信息查询的界面
当我们点击信息查询按钮时,会立刻弹出一个对话框,期中对话框中包括一个列表框,列表框中包括学号,姓名,学院,专业,年级,列表框中还包括2个按钮,一个查找按钮,一个取消按钮。
使用CRecordSet类的成员变量m_strFilter、m_strSort和成员函数Open可以对表进行记录查询。
(1)打开Ex_ODBC应用程序的表的单资源,按如图4所示的布局添加控件,七宗添加的编辑框ID号设为IDC_EDIT_QUERY,查询按钮的ID号设为IDC_BUTTON_QUERY..
图4添加控件
(2)用MFCclasswizard为控件IDC_EDIT_QUERY添加关联变量m_strQuery.
(3)在CEx_ODBCView类中添加按钮控件IDC_BUTTON_QUERY的BN_CLICKED消息映射,并在映射函数中添加下列代码:
voidCMemberView:
:
RemoveAll()
{
c++实用教程[M].北京高等教育出版社,83-126
[2]孙越编着.VisualC++数据库开发自学教程[M].人民邮电出版社50-75
[3]王彬华,李建华编着.VisualC++实例教程[M]电子科技大学出版社
[4]李春葆,曾平编着.数据库原理与应用[M].北京清华大学出版社,41-74
附录:
#include""
#include""
#include""
#include""
#include""
#include""
#include""
#include""
#include""
#include""
#include""
#ifdef_DEBUG
#definenewDEBUG_NEW
#undefTHIS_FILE
staticcharTHIS_FILE[]=__FILE__;
#endif
}
//CMemberViewprinting
BOOLCMemberView:
:
OnPreparePrinting(CPrintInfo*pInfo)
{
//defaultpreparation
returnDoPreparePrinting(pInfo);
}
voidCMemberView:
:
OnBeginPrinting(CDC*/*pDC*/,CPrintInfo*/*pInfo*/)
{
//TODO:
addextrainitializationbeforeprinting
}
voidCMemberView:
:
OnEndPrinting(CDC*/*pDC*/,CPrintInfo*/*pInfo*/)
{
//TODO:
addcleanupafterprinting
}
//CMemberViewdiagnostics
#ifdef_DEBUG
voidCMemberView:
:
AssertValid()const
{
CListView:
:
AssertValid();
}
voidCMemberView:
:
Dump(CDumpContext&dc)const
{
CListView:
:
Dump(dc);
}
CMemberDoc*CMemberView:
:
GetDocument()//non-debugversionisinline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMemberDoc)));
return(CMemberDoc*)m_pDocument;
}
#endif//_DEBUG
//CMemberViewmessagehandlers
voidCMemberView:
:
RemoveAll()
{
//增加指针变量指向ListView的CListCtrl
CListCtrl*ctl;
ctl=&GetListCtrl();
//删除CListCtrl中的所有记录
ctl->DeleteAllItems();
}
//strSearch查询条件strMember关键字
voidCMemberView:
:
ListMember(CStringstrSearch,CStringstrMember)
{
//前此输出的用户记录
RemoveAll();
//建立一个指针,用以操作ListCtrl输出用户记录
CListCtrl*ctl;
ctl=&GetListCtrl();
//创建CMemberReSet的实例
CMemberReSetm_MemberReSet;
//记录用户序号
inti=0;
//定义一个变量来保存"%"以便设置SQL语句
charchrTemp='%';
CStringstrTemp;
try
{
if())
();
//设置查询条件"MemName=strMemberName"
if(strMember=="")
{
AfxMessageBox("请输入关键字");
return;
}
if(strSearch=="学号")
{
CStringstr;
("select*frommemberwhereMemID='%s'orderbyMemIDASC",strMember);